]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Rename dropdown to menu, add combobox built on top of menu (#42202)
authorMark Otto <markd.otto@gmail.com>
Sat, 21 Mar 2026 03:06:57 +0000 (20:06 -0700)
committerGitHub <noreply@github.com>
Sat, 21 Mar 2026 03:06:57 +0000 (20:06 -0700)
* Rename Dropdown component to Menu

Replace the Dropdown component with Menu across the entire codebase.
All .dropdown-* classes are now .menu-* classes, data-bs-toggle="dropdown"
is now data-bs-toggle="menu", and the JS export is renamed from Dropdown
to Menu. Includes updated tests, docs, examples, site UI, and config.

* Add new Combobox component

Introduce a searchable select component built on top of Menu, with
single and multi-select support. Includes JS source, SCSS styles,
documentation, and migration notes.

* Add translucent variations for navbar, card, toast, and menu

New .navbar-translucent, .card-translucent, and .toast-translucent
styles with backdrop blur and saturation filters, plus corresponding
documentation sections.

* Update docs site nav, layout, icons, and misc fixes

Clean up docs site navbar SCSS (sticky shadow, remove commented code),
fix empty line rendering in code snippets, add font-size class to
masthead, and add #stack icon symbol.

* Rebuild dist files

128 files changed:
.bundlewatch.config.json
dist/css/bootstrap-grid.css
dist/css/bootstrap-grid.css.map
dist/css/bootstrap-grid.min.css
dist/css/bootstrap-grid.min.css.map
dist/css/bootstrap-reboot.css
dist/css/bootstrap-reboot.css.map
dist/css/bootstrap-reboot.min.css
dist/css/bootstrap-reboot.min.css.map
dist/css/bootstrap-utilities.css
dist/css/bootstrap-utilities.css.map
dist/css/bootstrap-utilities.metadata.json
dist/css/bootstrap-utilities.min.css
dist/css/bootstrap-utilities.min.css.map
dist/css/bootstrap.css
dist/css/bootstrap.css.map
dist/css/bootstrap.min.css
dist/css/bootstrap.min.css.map
dist/js/bootstrap.bundle.js
dist/js/bootstrap.bundle.js.map
dist/js/bootstrap.bundle.min.js
dist/js/bootstrap.bundle.min.js.map
dist/js/bootstrap.js
dist/js/bootstrap.js.map
dist/js/bootstrap.min.js
dist/js/bootstrap.min.js.map
js/dist/combobox.js [new file with mode: 0644]
js/dist/combobox.js.map [new file with mode: 0644]
js/dist/dropdown.js.map [deleted file]
js/dist/menu.js [moved from js/dist/dropdown.js with 76% similarity]
js/dist/menu.js.map [new file with mode: 0644]
js/dist/nav-overflow.js
js/dist/nav-overflow.js.map
js/dist/scrollspy.js
js/dist/scrollspy.js.map
js/dist/tab.js
js/dist/tab.js.map
js/index.js
js/src/combobox.js [new file with mode: 0644]
js/src/menu.js [moved from js/src/dropdown.js with 77% similarity]
js/src/nav-overflow.js
js/src/scrollspy.js
js/src/tab.js
js/tests/unit/dropdown.spec.js [deleted file]
js/tests/unit/menu.spec.js [new file with mode: 0644]
js/tests/unit/nav-overflow.spec.js
js/tests/unit/tab.spec.js
js/tests/visual/dropdown-submenu.html [deleted file]
js/tests/visual/dropdown.html [deleted file]
js/tests/visual/menu-submenu.html [new file with mode: 0644]
js/tests/visual/menu.html [new file with mode: 0644]
js/tests/visual/scrollspy.html
scss/_card.scss
scss/_config.scss
scss/_datepicker.scss
scss/_dropdown.scss [deleted file]
scss/_menu.scss [new file with mode: 0644]
scss/_nav-overflow.scss
scss/_nav.scss
scss/_navbar.scss
scss/_offcanvas.scss
scss/_toasts.scss
scss/_utilities.scss
scss/bootstrap.scss
scss/buttons/_button-group.scss
scss/forms/_combobox.scss [new file with mode: 0644]
scss/forms/_input-group.scss
scss/forms/index.scss
scss/tests/modules/_root-tokens-bootstrap.test.scss
site/data/examples.yml
site/data/plugins.yml
site/data/sidebar.yml
site/src/assets/examples/cheatsheet/cheatsheet.css
site/src/assets/examples/cheatsheet/index.astro
site/src/assets/examples/dashboard/index.astro
site/src/assets/examples/headers/headers.css
site/src/assets/examples/headers/index.astro
site/src/assets/examples/menus/index.astro [moved from site/src/assets/examples/dropdowns/index.astro with 72% similarity]
site/src/assets/examples/menus/menus.css [moved from site/src/assets/examples/dropdowns/dropdowns.css with 90% similarity]
site/src/assets/examples/navbar-bottom/index.astro
site/src/assets/examples/navbars-offcanvas/index.astro
site/src/assets/examples/navbars/index.astro
site/src/assets/examples/offcanvas-navbar/index.astro
site/src/assets/examples/sidebars/index.astro
site/src/assets/examples/sidebars/sidebars.css
site/src/components/header/Navigation.astro
site/src/components/header/Versions.astro
site/src/components/home/MastHead.astro
site/src/components/home/Plugins.astro
site/src/components/icons/Symbols.astro
site/src/components/shortcodes/ButtonPlayground.astro
site/src/components/shortcodes/DropdownPlacementPlayground.astro [deleted file]
site/src/components/shortcodes/MenuPlacementPlayground.astro [new file with mode: 0644]
site/src/components/shortcodes/NavbarPlacementPlayground.astro
site/src/content/docs/components/button-group.mdx
site/src/content/docs/components/card.mdx
site/src/content/docs/components/dropdown.mdx [deleted file]
site/src/content/docs/components/menu.mdx [new file with mode: 0644]
site/src/content/docs/components/nav-overflow.mdx
site/src/content/docs/components/navbar.mdx
site/src/content/docs/components/navs-tabs.mdx
site/src/content/docs/components/offcanvas.mdx
site/src/content/docs/components/scrollspy.mdx
site/src/content/docs/components/toasts.mdx
site/src/content/docs/content/tables.mdx
site/src/content/docs/customize/color-modes.mdx
site/src/content/docs/customize/optimize.mdx
site/src/content/docs/customize/options.mdx
site/src/content/docs/customize/sass.mdx
site/src/content/docs/forms/combobox.mdx [new file with mode: 0644]
site/src/content/docs/forms/input-group.mdx
site/src/content/docs/getting-started/accessibility.mdx
site/src/content/docs/getting-started/javascript.mdx
site/src/content/docs/guides/npm.mdx
site/src/content/docs/guides/parcel.mdx
site/src/content/docs/guides/quickstart.mdx
site/src/content/docs/guides/vite.mdx
site/src/content/docs/guides/webpack.mdx
site/src/content/docs/layout/z-index.mdx
site/src/content/docs/migration.mdx
site/src/content/docs/utilities/z-index.mdx
site/src/layouts/ExamplesLayout.astro
site/src/layouts/partials/ThemeToggler.astro
site/src/scss/_component-examples.scss
site/src/scss/_content.scss
site/src/scss/_navbar.scss
site/src/scss/_syntax.scss
site/src/types/auto-import.d.ts

index c9e6699b069755a386be5e74b13ce2dfda4dd015..f3919c52c74f9f41c5ea13b8ca916365d55acc13 100644 (file)
@@ -2,7 +2,7 @@
   "files": [
     {
       "path": "./dist/css/bootstrap-grid.css",
-      "maxSize": "8.75 kB"
+      "maxSize": "9.0 kB"
     },
     {
       "path": "./dist/css/bootstrap-grid.min.css",
     },
     {
       "path": "./dist/css/bootstrap-utilities.min.css",
-      "maxSize": "15.0 kB"
+      "maxSize": "14.0 kB"
     },
     {
       "path": "./dist/css/bootstrap.css",
-      "maxSize": "42.5 kB"
+      "maxSize": "43.0 kB"
     },
     {
       "path": "./dist/css/bootstrap.min.css",
-      "maxSize": "39.25 kB"
+      "maxSize": "39.5 kB"
     },
     {
       "path": "./dist/js/bootstrap.bundle.js",
-      "maxSize": "70.5 kB"
+      "maxSize": "70.0 kB"
     },
     {
       "path": "./dist/js/bootstrap.bundle.min.js",
-      "maxSize": "47.5 kB"
+      "maxSize": "49.25 kB"
     },
     {
       "path": "./dist/js/bootstrap.js",
-      "maxSize": "40.75 kB"
+      "maxSize": "41.0 kB"
     },
     {
       "path": "./dist/js/bootstrap.min.js",
-      "maxSize": "25.5 kB"
+      "maxSize": "27.0 kB"
     }
   ],
   "ci": {
index 37e63dd652c93f1121e54b6d96f808d2c84b3d36..2b4e23afbbe14050df99d2e6e8eb411731c97df4 100644 (file)
   .offset-11 {
     margin-inline-start: 91.6666666667%;
   }
-  .g--2,
-  .gx--2 {
-    --bs-gutter-x: -0.5rem;
-  }
-  .g--2,
-  .gy--2 {
-    --bs-gutter-y: -0.5rem;
-  }
-  .g--1,
-  .gx--1 {
-    --bs-gutter-x: -0.25rem;
-  }
-  .g--1,
-  .gy--1 {
-    --bs-gutter-y: -0.25rem;
-  }
   .g-0,
   .gx-0 {
     --bs-gutter-x: 0;
     .offset-sm-11 {
       margin-inline-start: 91.6666666667%;
     }
-    .g-sm--2,
-    .gx-sm--2 {
-      --bs-gutter-x: -0.5rem;
-    }
-    .g-sm--2,
-    .gy-sm--2 {
-      --bs-gutter-y: -0.5rem;
-    }
-    .g-sm--1,
-    .gx-sm--1 {
-      --bs-gutter-x: -0.25rem;
-    }
-    .g-sm--1,
-    .gy-sm--1 {
-      --bs-gutter-y: -0.25rem;
-    }
     .g-sm-0,
     .gx-sm-0 {
       --bs-gutter-x: 0;
     .offset-md-11 {
       margin-inline-start: 91.6666666667%;
     }
-    .g-md--2,
-    .gx-md--2 {
-      --bs-gutter-x: -0.5rem;
-    }
-    .g-md--2,
-    .gy-md--2 {
-      --bs-gutter-y: -0.5rem;
-    }
-    .g-md--1,
-    .gx-md--1 {
-      --bs-gutter-x: -0.25rem;
-    }
-    .g-md--1,
-    .gy-md--1 {
-      --bs-gutter-y: -0.25rem;
-    }
     .g-md-0,
     .gx-md-0 {
       --bs-gutter-x: 0;
     .offset-lg-11 {
       margin-inline-start: 91.6666666667%;
     }
-    .g-lg--2,
-    .gx-lg--2 {
-      --bs-gutter-x: -0.5rem;
-    }
-    .g-lg--2,
-    .gy-lg--2 {
-      --bs-gutter-y: -0.5rem;
-    }
-    .g-lg--1,
-    .gx-lg--1 {
-      --bs-gutter-x: -0.25rem;
-    }
-    .g-lg--1,
-    .gy-lg--1 {
-      --bs-gutter-y: -0.25rem;
-    }
     .g-lg-0,
     .gx-lg-0 {
       --bs-gutter-x: 0;
     .offset-xl-11 {
       margin-inline-start: 91.6666666667%;
     }
-    .g-xl--2,
-    .gx-xl--2 {
-      --bs-gutter-x: -0.5rem;
-    }
-    .g-xl--2,
-    .gy-xl--2 {
-      --bs-gutter-y: -0.5rem;
-    }
-    .g-xl--1,
-    .gx-xl--1 {
-      --bs-gutter-x: -0.25rem;
-    }
-    .g-xl--1,
-    .gy-xl--1 {
-      --bs-gutter-y: -0.25rem;
-    }
     .g-xl-0,
     .gx-xl-0 {
       --bs-gutter-x: 0;
     .offset-2xl-11 {
       margin-inline-start: 91.6666666667%;
     }
-    .g-2xl--2,
-    .gx-2xl--2 {
-      --bs-gutter-x: -0.5rem;
-    }
-    .g-2xl--2,
-    .gy-2xl--2 {
-      --bs-gutter-y: -0.5rem;
-    }
-    .g-2xl--1,
-    .gx-2xl--1 {
-      --bs-gutter-x: -0.25rem;
-    }
-    .g-2xl--1,
-    .gy-2xl--1 {
-      --bs-gutter-y: -0.25rem;
-    }
     .g-2xl-0,
     .gx-2xl-0 {
       --bs-gutter-x: 0;
   .place-items-stretch {
     place-items: stretch;
   }
+  .grid-cols-2 {
+    grid-template-columns: repeat(2, 1fr);
+  }
+  .grid-cols-3 {
+    grid-template-columns: repeat(3, 1fr);
+  }
+  .grid-cols-4 {
+    grid-template-columns: repeat(4, 1fr);
+  }
+  .grid-cols-6 {
+    grid-template-columns: repeat(6, 1fr);
+  }
+  .grid-cols-fill {
+    grid-column: 1 / -1;
+  }
+  .grid-auto-flow-row {
+    grid-auto-flow: row;
+  }
+  .grid-auto-flow-column {
+    grid-auto-flow: column;
+  }
+  .grid-auto-flow-dense {
+    grid-auto-flow: dense;
+  }
   .order-first {
     order: -1;
   }
   .order-last {
     order: 6;
   }
-  .m--2 {
-    margin: -0.5rem;
-  }
-  .m--1 {
-    margin: -0.25rem;
-  }
   .m-0 {
     margin: 0;
   }
   .m-auto {
     margin: auto;
   }
-  .mx--2 {
-    margin-inline: -0.5rem;
-  }
-  .mx--1 {
-    margin-inline: -0.25rem;
-  }
   .mx-0 {
     margin-inline: 0;
   }
   .mx-auto {
     margin-inline: auto;
   }
-  .my--2 {
-    margin-block: -0.5rem;
-  }
-  .my--1 {
-    margin-block: -0.25rem;
-  }
   .my-0 {
     margin-block: 0;
   }
   .my-auto {
     margin-block: auto;
   }
-  .mt--2 {
-    margin-block-start: -0.5rem;
-  }
-  .mt--1 {
-    margin-block-start: -0.25rem;
-  }
   .mt-0 {
     margin-block-start: 0;
   }
   .mt-auto {
     margin-block-start: auto;
   }
-  .me--2 {
-    margin-inline-end: -0.5rem;
-  }
-  .me--1 {
-    margin-inline-end: -0.25rem;
-  }
   .me-0 {
     margin-inline-end: 0;
   }
   .me-auto {
     margin-inline-end: auto;
   }
-  .mb--2 {
-    margin-block-end: -0.5rem;
-  }
-  .mb--1 {
-    margin-block-end: -0.25rem;
-  }
   .mb-0 {
     margin-block-end: 0;
   }
   .mb-auto {
     margin-block-end: auto;
   }
-  .ms--2 {
-    margin-inline-start: -0.5rem;
-  }
-  .ms--1 {
-    margin-inline-start: -0.25rem;
-  }
   .ms-0 {
     margin-inline-start: 0;
   }
   .ms-5 {
     margin-inline-start: 3rem;
   }
-  .ms-auto {
-    margin-inline-start: auto;
+  .ms--1 {
+    margin-inline-start: -0.25rem;
   }
-  .p--2 {
-    padding: -0.5rem;
+  .ms--2 {
+    margin-inline-start: -0.5rem;
   }
-  .p--1 {
-    padding: -0.25rem;
+  .ms-auto {
+    margin-inline-start: auto;
   }
   .p-0 {
     padding: 0;
   .p-5 {
     padding: 3rem;
   }
-  .px--2 {
-    padding-inline: -0.5rem;
-  }
-  .px--1 {
-    padding-inline: -0.25rem;
-  }
   .px-0 {
     padding-inline: 0;
   }
   .px-5 {
     padding-inline: 3rem;
   }
-  .py--2 {
-    padding-block: -0.5rem;
-  }
-  .py--1 {
-    padding-block: -0.25rem;
-  }
   .py-0 {
     padding-block: 0;
   }
   .py-5 {
     padding-block: 3rem;
   }
-  .pt--2 {
-    padding-block-start: -0.5rem;
-  }
-  .pt--1 {
-    padding-block-start: -0.25rem;
-  }
   .pt-0 {
     padding-block-start: 0;
   }
   .pt-5 {
     padding-block-start: 3rem;
   }
-  .pe--2 {
-    padding-inline-end: -0.5rem;
-  }
-  .pe--1 {
-    padding-inline-end: -0.25rem;
-  }
   .pe-0 {
     padding-inline-end: 0;
   }
   .pe-5 {
     padding-inline-end: 3rem;
   }
-  .pb--2 {
-    padding-block-end: -0.5rem;
-  }
-  .pb--1 {
-    padding-block-end: -0.25rem;
-  }
   .pb-0 {
     padding-block-end: 0;
   }
   .pb-5 {
     padding-block-end: 3rem;
   }
-  .ps--2 {
-    padding-inline-start: -0.5rem;
-  }
-  .ps--1 {
-    padding-inline-start: -0.25rem;
-  }
   .ps-0 {
     padding-inline-start: 0;
   }
   .ps-5 {
     padding-inline-start: 3rem;
   }
+  .gap-0 {
+    gap: 0;
+  }
+  .gap-1 {
+    gap: 0.25rem;
+  }
+  .gap-2 {
+    gap: 0.5rem;
+  }
+  .gap-3 {
+    gap: 1rem;
+  }
+  .gap-4 {
+    gap: 1.5rem;
+  }
+  .gap-5 {
+    gap: 3rem;
+  }
+  .row-gap-0 {
+    row-gap: 0;
+  }
+  .row-gap-1 {
+    row-gap: 0.25rem;
+  }
+  .row-gap-2 {
+    row-gap: 0.5rem;
+  }
+  .row-gap-3 {
+    row-gap: 1rem;
+  }
+  .row-gap-4 {
+    row-gap: 1.5rem;
+  }
+  .row-gap-5 {
+    row-gap: 3rem;
+  }
+  .column-gap-0 {
+    -moz-column-gap: 0;
+    column-gap: 0;
+  }
+  .column-gap-1 {
+    -moz-column-gap: 0.25rem;
+    column-gap: 0.25rem;
+  }
+  .column-gap-2 {
+    -moz-column-gap: 0.5rem;
+    column-gap: 0.5rem;
+  }
+  .column-gap-3 {
+    -moz-column-gap: 1rem;
+    column-gap: 1rem;
+  }
+  .column-gap-4 {
+    -moz-column-gap: 1.5rem;
+    column-gap: 1.5rem;
+  }
+  .column-gap-5 {
+    -moz-column-gap: 3rem;
+    column-gap: 3rem;
+  }
   @media (width >= 576px) {
     .d-sm-inline {
       display: inline;
     .place-items-sm-stretch {
       place-items: stretch;
     }
+    .grid-cols-sm-2 {
+      grid-template-columns: repeat(2, 1fr);
+    }
+    .grid-cols-sm-3 {
+      grid-template-columns: repeat(3, 1fr);
+    }
+    .grid-cols-sm-4 {
+      grid-template-columns: repeat(4, 1fr);
+    }
+    .grid-cols-sm-6 {
+      grid-template-columns: repeat(6, 1fr);
+    }
+    .grid-cols-sm-fill {
+      grid-column: 1 / -1;
+    }
+    .grid-auto-flow-sm-row {
+      grid-auto-flow: row;
+    }
+    .grid-auto-flow-sm-column {
+      grid-auto-flow: column;
+    }
+    .grid-auto-flow-sm-dense {
+      grid-auto-flow: dense;
+    }
     .order-sm-first {
       order: -1;
     }
     .order-sm-last {
       order: 6;
     }
-    .m-sm--2 {
-      margin: -0.5rem;
-    }
-    .m-sm--1 {
-      margin: -0.25rem;
-    }
     .m-sm-0 {
       margin: 0;
     }
     .m-sm-auto {
       margin: auto;
     }
-    .mx-sm--2 {
-      margin-inline: -0.5rem;
-    }
-    .mx-sm--1 {
-      margin-inline: -0.25rem;
-    }
     .mx-sm-0 {
       margin-inline: 0;
     }
     .mx-sm-auto {
       margin-inline: auto;
     }
-    .my-sm--2 {
-      margin-block: -0.5rem;
-    }
-    .my-sm--1 {
-      margin-block: -0.25rem;
-    }
     .my-sm-0 {
       margin-block: 0;
     }
     .my-sm-auto {
       margin-block: auto;
     }
-    .mt-sm--2 {
-      margin-block-start: -0.5rem;
-    }
-    .mt-sm--1 {
-      margin-block-start: -0.25rem;
-    }
     .mt-sm-0 {
       margin-block-start: 0;
     }
     .mt-sm-auto {
       margin-block-start: auto;
     }
-    .me-sm--2 {
-      margin-inline-end: -0.5rem;
-    }
-    .me-sm--1 {
-      margin-inline-end: -0.25rem;
-    }
     .me-sm-0 {
       margin-inline-end: 0;
     }
     .me-sm-auto {
       margin-inline-end: auto;
     }
-    .mb-sm--2 {
-      margin-block-end: -0.5rem;
-    }
-    .mb-sm--1 {
-      margin-block-end: -0.25rem;
-    }
     .mb-sm-0 {
       margin-block-end: 0;
     }
     .mb-sm-auto {
       margin-block-end: auto;
     }
-    .ms-sm--2 {
-      margin-inline-start: -0.5rem;
-    }
-    .ms-sm--1 {
-      margin-inline-start: -0.25rem;
-    }
     .ms-sm-0 {
       margin-inline-start: 0;
     }
     .ms-sm-5 {
       margin-inline-start: 3rem;
     }
-    .ms-sm-auto {
-      margin-inline-start: auto;
+    .ms-sm--1 {
+      margin-inline-start: -0.25rem;
     }
-    .p-sm--2 {
-      padding: -0.5rem;
+    .ms-sm--2 {
+      margin-inline-start: -0.5rem;
     }
-    .p-sm--1 {
-      padding: -0.25rem;
+    .ms-sm-auto {
+      margin-inline-start: auto;
     }
     .p-sm-0 {
       padding: 0;
     .p-sm-5 {
       padding: 3rem;
     }
-    .px-sm--2 {
-      padding-inline: -0.5rem;
-    }
-    .px-sm--1 {
-      padding-inline: -0.25rem;
-    }
     .px-sm-0 {
       padding-inline: 0;
     }
     .px-sm-5 {
       padding-inline: 3rem;
     }
-    .py-sm--2 {
-      padding-block: -0.5rem;
-    }
-    .py-sm--1 {
-      padding-block: -0.25rem;
-    }
     .py-sm-0 {
       padding-block: 0;
     }
     .py-sm-5 {
       padding-block: 3rem;
     }
-    .pt-sm--2 {
-      padding-block-start: -0.5rem;
-    }
-    .pt-sm--1 {
-      padding-block-start: -0.25rem;
-    }
     .pt-sm-0 {
       padding-block-start: 0;
     }
     .pt-sm-5 {
       padding-block-start: 3rem;
     }
-    .pe-sm--2 {
-      padding-inline-end: -0.5rem;
-    }
-    .pe-sm--1 {
-      padding-inline-end: -0.25rem;
-    }
     .pe-sm-0 {
       padding-inline-end: 0;
     }
     .pe-sm-5 {
       padding-inline-end: 3rem;
     }
-    .pb-sm--2 {
-      padding-block-end: -0.5rem;
-    }
-    .pb-sm--1 {
-      padding-block-end: -0.25rem;
-    }
     .pb-sm-0 {
       padding-block-end: 0;
     }
     .pb-sm-5 {
       padding-block-end: 3rem;
     }
-    .ps-sm--2 {
-      padding-inline-start: -0.5rem;
-    }
-    .ps-sm--1 {
-      padding-inline-start: -0.25rem;
-    }
     .ps-sm-0 {
       padding-inline-start: 0;
     }
     .ps-sm-5 {
       padding-inline-start: 3rem;
     }
+    .gap-sm-0 {
+      gap: 0;
+    }
+    .gap-sm-1 {
+      gap: 0.25rem;
+    }
+    .gap-sm-2 {
+      gap: 0.5rem;
+    }
+    .gap-sm-3 {
+      gap: 1rem;
+    }
+    .gap-sm-4 {
+      gap: 1.5rem;
+    }
+    .gap-sm-5 {
+      gap: 3rem;
+    }
+    .row-gap-sm-0 {
+      row-gap: 0;
+    }
+    .row-gap-sm-1 {
+      row-gap: 0.25rem;
+    }
+    .row-gap-sm-2 {
+      row-gap: 0.5rem;
+    }
+    .row-gap-sm-3 {
+      row-gap: 1rem;
+    }
+    .row-gap-sm-4 {
+      row-gap: 1.5rem;
+    }
+    .row-gap-sm-5 {
+      row-gap: 3rem;
+    }
+    .column-gap-sm-0 {
+      -moz-column-gap: 0;
+      column-gap: 0;
+    }
+    .column-gap-sm-1 {
+      -moz-column-gap: 0.25rem;
+      column-gap: 0.25rem;
+    }
+    .column-gap-sm-2 {
+      -moz-column-gap: 0.5rem;
+      column-gap: 0.5rem;
+    }
+    .column-gap-sm-3 {
+      -moz-column-gap: 1rem;
+      column-gap: 1rem;
+    }
+    .column-gap-sm-4 {
+      -moz-column-gap: 1.5rem;
+      column-gap: 1.5rem;
+    }
+    .column-gap-sm-5 {
+      -moz-column-gap: 3rem;
+      column-gap: 3rem;
+    }
   }
   @media (width >= 768px) {
     .d-md-inline {
     .place-items-md-stretch {
       place-items: stretch;
     }
+    .grid-cols-md-2 {
+      grid-template-columns: repeat(2, 1fr);
+    }
+    .grid-cols-md-3 {
+      grid-template-columns: repeat(3, 1fr);
+    }
+    .grid-cols-md-4 {
+      grid-template-columns: repeat(4, 1fr);
+    }
+    .grid-cols-md-6 {
+      grid-template-columns: repeat(6, 1fr);
+    }
+    .grid-cols-md-fill {
+      grid-column: 1 / -1;
+    }
+    .grid-auto-flow-md-row {
+      grid-auto-flow: row;
+    }
+    .grid-auto-flow-md-column {
+      grid-auto-flow: column;
+    }
+    .grid-auto-flow-md-dense {
+      grid-auto-flow: dense;
+    }
     .order-md-first {
       order: -1;
     }
     .order-md-last {
       order: 6;
     }
-    .m-md--2 {
-      margin: -0.5rem;
-    }
-    .m-md--1 {
-      margin: -0.25rem;
-    }
     .m-md-0 {
       margin: 0;
     }
     .m-md-auto {
       margin: auto;
     }
-    .mx-md--2 {
-      margin-inline: -0.5rem;
-    }
-    .mx-md--1 {
-      margin-inline: -0.25rem;
-    }
     .mx-md-0 {
       margin-inline: 0;
     }
     .mx-md-auto {
       margin-inline: auto;
     }
-    .my-md--2 {
-      margin-block: -0.5rem;
-    }
-    .my-md--1 {
-      margin-block: -0.25rem;
-    }
     .my-md-0 {
       margin-block: 0;
     }
     .my-md-auto {
       margin-block: auto;
     }
-    .mt-md--2 {
-      margin-block-start: -0.5rem;
-    }
-    .mt-md--1 {
-      margin-block-start: -0.25rem;
-    }
     .mt-md-0 {
       margin-block-start: 0;
     }
     .mt-md-auto {
       margin-block-start: auto;
     }
-    .me-md--2 {
-      margin-inline-end: -0.5rem;
-    }
-    .me-md--1 {
-      margin-inline-end: -0.25rem;
-    }
     .me-md-0 {
       margin-inline-end: 0;
     }
     .me-md-auto {
       margin-inline-end: auto;
     }
-    .mb-md--2 {
-      margin-block-end: -0.5rem;
-    }
-    .mb-md--1 {
-      margin-block-end: -0.25rem;
-    }
     .mb-md-0 {
       margin-block-end: 0;
     }
     .mb-md-auto {
       margin-block-end: auto;
     }
-    .ms-md--2 {
-      margin-inline-start: -0.5rem;
-    }
-    .ms-md--1 {
-      margin-inline-start: -0.25rem;
-    }
     .ms-md-0 {
       margin-inline-start: 0;
     }
     .ms-md-5 {
       margin-inline-start: 3rem;
     }
-    .ms-md-auto {
-      margin-inline-start: auto;
+    .ms-md--1 {
+      margin-inline-start: -0.25rem;
     }
-    .p-md--2 {
-      padding: -0.5rem;
+    .ms-md--2 {
+      margin-inline-start: -0.5rem;
     }
-    .p-md--1 {
-      padding: -0.25rem;
+    .ms-md-auto {
+      margin-inline-start: auto;
     }
     .p-md-0 {
       padding: 0;
     .p-md-5 {
       padding: 3rem;
     }
-    .px-md--2 {
-      padding-inline: -0.5rem;
-    }
-    .px-md--1 {
-      padding-inline: -0.25rem;
-    }
     .px-md-0 {
       padding-inline: 0;
     }
     .px-md-5 {
       padding-inline: 3rem;
     }
-    .py-md--2 {
-      padding-block: -0.5rem;
-    }
-    .py-md--1 {
-      padding-block: -0.25rem;
-    }
     .py-md-0 {
       padding-block: 0;
     }
     .py-md-5 {
       padding-block: 3rem;
     }
-    .pt-md--2 {
-      padding-block-start: -0.5rem;
-    }
-    .pt-md--1 {
-      padding-block-start: -0.25rem;
-    }
     .pt-md-0 {
       padding-block-start: 0;
     }
     .pt-md-5 {
       padding-block-start: 3rem;
     }
-    .pe-md--2 {
-      padding-inline-end: -0.5rem;
-    }
-    .pe-md--1 {
-      padding-inline-end: -0.25rem;
-    }
     .pe-md-0 {
       padding-inline-end: 0;
     }
     .pe-md-5 {
       padding-inline-end: 3rem;
     }
-    .pb-md--2 {
-      padding-block-end: -0.5rem;
-    }
-    .pb-md--1 {
-      padding-block-end: -0.25rem;
-    }
     .pb-md-0 {
       padding-block-end: 0;
     }
     .pb-md-5 {
       padding-block-end: 3rem;
     }
-    .ps-md--2 {
-      padding-inline-start: -0.5rem;
-    }
-    .ps-md--1 {
-      padding-inline-start: -0.25rem;
-    }
     .ps-md-0 {
       padding-inline-start: 0;
     }
     .ps-md-5 {
       padding-inline-start: 3rem;
     }
+    .gap-md-0 {
+      gap: 0;
+    }
+    .gap-md-1 {
+      gap: 0.25rem;
+    }
+    .gap-md-2 {
+      gap: 0.5rem;
+    }
+    .gap-md-3 {
+      gap: 1rem;
+    }
+    .gap-md-4 {
+      gap: 1.5rem;
+    }
+    .gap-md-5 {
+      gap: 3rem;
+    }
+    .row-gap-md-0 {
+      row-gap: 0;
+    }
+    .row-gap-md-1 {
+      row-gap: 0.25rem;
+    }
+    .row-gap-md-2 {
+      row-gap: 0.5rem;
+    }
+    .row-gap-md-3 {
+      row-gap: 1rem;
+    }
+    .row-gap-md-4 {
+      row-gap: 1.5rem;
+    }
+    .row-gap-md-5 {
+      row-gap: 3rem;
+    }
+    .column-gap-md-0 {
+      -moz-column-gap: 0;
+      column-gap: 0;
+    }
+    .column-gap-md-1 {
+      -moz-column-gap: 0.25rem;
+      column-gap: 0.25rem;
+    }
+    .column-gap-md-2 {
+      -moz-column-gap: 0.5rem;
+      column-gap: 0.5rem;
+    }
+    .column-gap-md-3 {
+      -moz-column-gap: 1rem;
+      column-gap: 1rem;
+    }
+    .column-gap-md-4 {
+      -moz-column-gap: 1.5rem;
+      column-gap: 1.5rem;
+    }
+    .column-gap-md-5 {
+      -moz-column-gap: 3rem;
+      column-gap: 3rem;
+    }
   }
   @media (width >= 1024px) {
     .d-lg-inline {
     .place-items-lg-stretch {
       place-items: stretch;
     }
+    .grid-cols-lg-2 {
+      grid-template-columns: repeat(2, 1fr);
+    }
+    .grid-cols-lg-3 {
+      grid-template-columns: repeat(3, 1fr);
+    }
+    .grid-cols-lg-4 {
+      grid-template-columns: repeat(4, 1fr);
+    }
+    .grid-cols-lg-6 {
+      grid-template-columns: repeat(6, 1fr);
+    }
+    .grid-cols-lg-fill {
+      grid-column: 1 / -1;
+    }
+    .grid-auto-flow-lg-row {
+      grid-auto-flow: row;
+    }
+    .grid-auto-flow-lg-column {
+      grid-auto-flow: column;
+    }
+    .grid-auto-flow-lg-dense {
+      grid-auto-flow: dense;
+    }
     .order-lg-first {
       order: -1;
     }
     .order-lg-last {
       order: 6;
     }
-    .m-lg--2 {
-      margin: -0.5rem;
-    }
-    .m-lg--1 {
-      margin: -0.25rem;
-    }
     .m-lg-0 {
       margin: 0;
     }
     .m-lg-auto {
       margin: auto;
     }
-    .mx-lg--2 {
-      margin-inline: -0.5rem;
-    }
-    .mx-lg--1 {
-      margin-inline: -0.25rem;
-    }
     .mx-lg-0 {
       margin-inline: 0;
     }
     .mx-lg-auto {
       margin-inline: auto;
     }
-    .my-lg--2 {
-      margin-block: -0.5rem;
-    }
-    .my-lg--1 {
-      margin-block: -0.25rem;
-    }
     .my-lg-0 {
       margin-block: 0;
     }
     .my-lg-auto {
       margin-block: auto;
     }
-    .mt-lg--2 {
-      margin-block-start: -0.5rem;
-    }
-    .mt-lg--1 {
-      margin-block-start: -0.25rem;
-    }
     .mt-lg-0 {
       margin-block-start: 0;
     }
     .mt-lg-auto {
       margin-block-start: auto;
     }
-    .me-lg--2 {
-      margin-inline-end: -0.5rem;
-    }
-    .me-lg--1 {
-      margin-inline-end: -0.25rem;
-    }
     .me-lg-0 {
       margin-inline-end: 0;
     }
     .me-lg-auto {
       margin-inline-end: auto;
     }
-    .mb-lg--2 {
-      margin-block-end: -0.5rem;
-    }
-    .mb-lg--1 {
-      margin-block-end: -0.25rem;
-    }
     .mb-lg-0 {
       margin-block-end: 0;
     }
     .mb-lg-auto {
       margin-block-end: auto;
     }
-    .ms-lg--2 {
-      margin-inline-start: -0.5rem;
-    }
-    .ms-lg--1 {
-      margin-inline-start: -0.25rem;
-    }
     .ms-lg-0 {
       margin-inline-start: 0;
     }
     .ms-lg-5 {
       margin-inline-start: 3rem;
     }
-    .ms-lg-auto {
-      margin-inline-start: auto;
+    .ms-lg--1 {
+      margin-inline-start: -0.25rem;
     }
-    .p-lg--2 {
-      padding: -0.5rem;
+    .ms-lg--2 {
+      margin-inline-start: -0.5rem;
     }
-    .p-lg--1 {
-      padding: -0.25rem;
+    .ms-lg-auto {
+      margin-inline-start: auto;
     }
     .p-lg-0 {
       padding: 0;
     .p-lg-5 {
       padding: 3rem;
     }
-    .px-lg--2 {
-      padding-inline: -0.5rem;
-    }
-    .px-lg--1 {
-      padding-inline: -0.25rem;
-    }
     .px-lg-0 {
       padding-inline: 0;
     }
     .px-lg-5 {
       padding-inline: 3rem;
     }
-    .py-lg--2 {
-      padding-block: -0.5rem;
-    }
-    .py-lg--1 {
-      padding-block: -0.25rem;
-    }
     .py-lg-0 {
       padding-block: 0;
     }
     .py-lg-5 {
       padding-block: 3rem;
     }
-    .pt-lg--2 {
-      padding-block-start: -0.5rem;
-    }
-    .pt-lg--1 {
-      padding-block-start: -0.25rem;
-    }
     .pt-lg-0 {
       padding-block-start: 0;
     }
     .pt-lg-5 {
       padding-block-start: 3rem;
     }
-    .pe-lg--2 {
-      padding-inline-end: -0.5rem;
-    }
-    .pe-lg--1 {
-      padding-inline-end: -0.25rem;
-    }
     .pe-lg-0 {
       padding-inline-end: 0;
     }
     .pe-lg-5 {
       padding-inline-end: 3rem;
     }
-    .pb-lg--2 {
-      padding-block-end: -0.5rem;
-    }
-    .pb-lg--1 {
-      padding-block-end: -0.25rem;
-    }
     .pb-lg-0 {
       padding-block-end: 0;
     }
     .pb-lg-5 {
       padding-block-end: 3rem;
     }
-    .ps-lg--2 {
-      padding-inline-start: -0.5rem;
-    }
-    .ps-lg--1 {
-      padding-inline-start: -0.25rem;
-    }
     .ps-lg-0 {
       padding-inline-start: 0;
     }
     .ps-lg-5 {
       padding-inline-start: 3rem;
     }
+    .gap-lg-0 {
+      gap: 0;
+    }
+    .gap-lg-1 {
+      gap: 0.25rem;
+    }
+    .gap-lg-2 {
+      gap: 0.5rem;
+    }
+    .gap-lg-3 {
+      gap: 1rem;
+    }
+    .gap-lg-4 {
+      gap: 1.5rem;
+    }
+    .gap-lg-5 {
+      gap: 3rem;
+    }
+    .row-gap-lg-0 {
+      row-gap: 0;
+    }
+    .row-gap-lg-1 {
+      row-gap: 0.25rem;
+    }
+    .row-gap-lg-2 {
+      row-gap: 0.5rem;
+    }
+    .row-gap-lg-3 {
+      row-gap: 1rem;
+    }
+    .row-gap-lg-4 {
+      row-gap: 1.5rem;
+    }
+    .row-gap-lg-5 {
+      row-gap: 3rem;
+    }
+    .column-gap-lg-0 {
+      -moz-column-gap: 0;
+      column-gap: 0;
+    }
+    .column-gap-lg-1 {
+      -moz-column-gap: 0.25rem;
+      column-gap: 0.25rem;
+    }
+    .column-gap-lg-2 {
+      -moz-column-gap: 0.5rem;
+      column-gap: 0.5rem;
+    }
+    .column-gap-lg-3 {
+      -moz-column-gap: 1rem;
+      column-gap: 1rem;
+    }
+    .column-gap-lg-4 {
+      -moz-column-gap: 1.5rem;
+      column-gap: 1.5rem;
+    }
+    .column-gap-lg-5 {
+      -moz-column-gap: 3rem;
+      column-gap: 3rem;
+    }
   }
   @media (width >= 1280px) {
     .d-xl-inline {
     .place-items-xl-stretch {
       place-items: stretch;
     }
+    .grid-cols-xl-2 {
+      grid-template-columns: repeat(2, 1fr);
+    }
+    .grid-cols-xl-3 {
+      grid-template-columns: repeat(3, 1fr);
+    }
+    .grid-cols-xl-4 {
+      grid-template-columns: repeat(4, 1fr);
+    }
+    .grid-cols-xl-6 {
+      grid-template-columns: repeat(6, 1fr);
+    }
+    .grid-cols-xl-fill {
+      grid-column: 1 / -1;
+    }
+    .grid-auto-flow-xl-row {
+      grid-auto-flow: row;
+    }
+    .grid-auto-flow-xl-column {
+      grid-auto-flow: column;
+    }
+    .grid-auto-flow-xl-dense {
+      grid-auto-flow: dense;
+    }
     .order-xl-first {
       order: -1;
     }
     .order-xl-last {
       order: 6;
     }
-    .m-xl--2 {
-      margin: -0.5rem;
-    }
-    .m-xl--1 {
-      margin: -0.25rem;
-    }
     .m-xl-0 {
       margin: 0;
     }
     .m-xl-auto {
       margin: auto;
     }
-    .mx-xl--2 {
-      margin-inline: -0.5rem;
-    }
-    .mx-xl--1 {
-      margin-inline: -0.25rem;
-    }
     .mx-xl-0 {
       margin-inline: 0;
     }
     .mx-xl-auto {
       margin-inline: auto;
     }
-    .my-xl--2 {
-      margin-block: -0.5rem;
-    }
-    .my-xl--1 {
-      margin-block: -0.25rem;
-    }
     .my-xl-0 {
       margin-block: 0;
     }
     .my-xl-auto {
       margin-block: auto;
     }
-    .mt-xl--2 {
-      margin-block-start: -0.5rem;
-    }
-    .mt-xl--1 {
-      margin-block-start: -0.25rem;
-    }
     .mt-xl-0 {
       margin-block-start: 0;
     }
     .mt-xl-auto {
       margin-block-start: auto;
     }
-    .me-xl--2 {
-      margin-inline-end: -0.5rem;
-    }
-    .me-xl--1 {
-      margin-inline-end: -0.25rem;
-    }
     .me-xl-0 {
       margin-inline-end: 0;
     }
     .me-xl-auto {
       margin-inline-end: auto;
     }
-    .mb-xl--2 {
-      margin-block-end: -0.5rem;
-    }
-    .mb-xl--1 {
-      margin-block-end: -0.25rem;
-    }
     .mb-xl-0 {
       margin-block-end: 0;
     }
     .mb-xl-auto {
       margin-block-end: auto;
     }
-    .ms-xl--2 {
-      margin-inline-start: -0.5rem;
-    }
-    .ms-xl--1 {
-      margin-inline-start: -0.25rem;
-    }
     .ms-xl-0 {
       margin-inline-start: 0;
     }
     .ms-xl-5 {
       margin-inline-start: 3rem;
     }
-    .ms-xl-auto {
-      margin-inline-start: auto;
+    .ms-xl--1 {
+      margin-inline-start: -0.25rem;
     }
-    .p-xl--2 {
-      padding: -0.5rem;
+    .ms-xl--2 {
+      margin-inline-start: -0.5rem;
     }
-    .p-xl--1 {
-      padding: -0.25rem;
+    .ms-xl-auto {
+      margin-inline-start: auto;
     }
     .p-xl-0 {
       padding: 0;
     .p-xl-5 {
       padding: 3rem;
     }
-    .px-xl--2 {
-      padding-inline: -0.5rem;
-    }
-    .px-xl--1 {
-      padding-inline: -0.25rem;
-    }
     .px-xl-0 {
       padding-inline: 0;
     }
     .px-xl-5 {
       padding-inline: 3rem;
     }
-    .py-xl--2 {
-      padding-block: -0.5rem;
-    }
-    .py-xl--1 {
-      padding-block: -0.25rem;
-    }
     .py-xl-0 {
       padding-block: 0;
     }
     .py-xl-5 {
       padding-block: 3rem;
     }
-    .pt-xl--2 {
-      padding-block-start: -0.5rem;
-    }
-    .pt-xl--1 {
-      padding-block-start: -0.25rem;
-    }
     .pt-xl-0 {
       padding-block-start: 0;
     }
     .pt-xl-5 {
       padding-block-start: 3rem;
     }
-    .pe-xl--2 {
-      padding-inline-end: -0.5rem;
-    }
-    .pe-xl--1 {
-      padding-inline-end: -0.25rem;
-    }
     .pe-xl-0 {
       padding-inline-end: 0;
     }
     .pe-xl-5 {
       padding-inline-end: 3rem;
     }
-    .pb-xl--2 {
-      padding-block-end: -0.5rem;
-    }
-    .pb-xl--1 {
-      padding-block-end: -0.25rem;
-    }
     .pb-xl-0 {
       padding-block-end: 0;
     }
     .pb-xl-5 {
       padding-block-end: 3rem;
     }
-    .ps-xl--2 {
-      padding-inline-start: -0.5rem;
-    }
-    .ps-xl--1 {
-      padding-inline-start: -0.25rem;
-    }
     .ps-xl-0 {
       padding-inline-start: 0;
     }
     .ps-xl-5 {
       padding-inline-start: 3rem;
     }
+    .gap-xl-0 {
+      gap: 0;
+    }
+    .gap-xl-1 {
+      gap: 0.25rem;
+    }
+    .gap-xl-2 {
+      gap: 0.5rem;
+    }
+    .gap-xl-3 {
+      gap: 1rem;
+    }
+    .gap-xl-4 {
+      gap: 1.5rem;
+    }
+    .gap-xl-5 {
+      gap: 3rem;
+    }
+    .row-gap-xl-0 {
+      row-gap: 0;
+    }
+    .row-gap-xl-1 {
+      row-gap: 0.25rem;
+    }
+    .row-gap-xl-2 {
+      row-gap: 0.5rem;
+    }
+    .row-gap-xl-3 {
+      row-gap: 1rem;
+    }
+    .row-gap-xl-4 {
+      row-gap: 1.5rem;
+    }
+    .row-gap-xl-5 {
+      row-gap: 3rem;
+    }
+    .column-gap-xl-0 {
+      -moz-column-gap: 0;
+      column-gap: 0;
+    }
+    .column-gap-xl-1 {
+      -moz-column-gap: 0.25rem;
+      column-gap: 0.25rem;
+    }
+    .column-gap-xl-2 {
+      -moz-column-gap: 0.5rem;
+      column-gap: 0.5rem;
+    }
+    .column-gap-xl-3 {
+      -moz-column-gap: 1rem;
+      column-gap: 1rem;
+    }
+    .column-gap-xl-4 {
+      -moz-column-gap: 1.5rem;
+      column-gap: 1.5rem;
+    }
+    .column-gap-xl-5 {
+      -moz-column-gap: 3rem;
+      column-gap: 3rem;
+    }
   }
   @media (width >= 1536px) {
     .d-2xl-inline {
     .place-items-2xl-stretch {
       place-items: stretch;
     }
+    .grid-cols-2xl-2 {
+      grid-template-columns: repeat(2, 1fr);
+    }
+    .grid-cols-2xl-3 {
+      grid-template-columns: repeat(3, 1fr);
+    }
+    .grid-cols-2xl-4 {
+      grid-template-columns: repeat(4, 1fr);
+    }
+    .grid-cols-2xl-6 {
+      grid-template-columns: repeat(6, 1fr);
+    }
+    .grid-cols-2xl-fill {
+      grid-column: 1 / -1;
+    }
+    .grid-auto-flow-2xl-row {
+      grid-auto-flow: row;
+    }
+    .grid-auto-flow-2xl-column {
+      grid-auto-flow: column;
+    }
+    .grid-auto-flow-2xl-dense {
+      grid-auto-flow: dense;
+    }
     .order-2xl-first {
       order: -1;
     }
     .order-2xl-last {
       order: 6;
     }
-    .m-2xl--2 {
-      margin: -0.5rem;
-    }
-    .m-2xl--1 {
-      margin: -0.25rem;
-    }
     .m-2xl-0 {
       margin: 0;
     }
     .m-2xl-auto {
       margin: auto;
     }
-    .mx-2xl--2 {
-      margin-inline: -0.5rem;
-    }
-    .mx-2xl--1 {
-      margin-inline: -0.25rem;
-    }
     .mx-2xl-0 {
       margin-inline: 0;
     }
     .mx-2xl-auto {
       margin-inline: auto;
     }
-    .my-2xl--2 {
-      margin-block: -0.5rem;
-    }
-    .my-2xl--1 {
-      margin-block: -0.25rem;
-    }
     .my-2xl-0 {
       margin-block: 0;
     }
     .my-2xl-auto {
       margin-block: auto;
     }
-    .mt-2xl--2 {
-      margin-block-start: -0.5rem;
-    }
-    .mt-2xl--1 {
-      margin-block-start: -0.25rem;
-    }
     .mt-2xl-0 {
       margin-block-start: 0;
     }
     .mt-2xl-auto {
       margin-block-start: auto;
     }
-    .me-2xl--2 {
-      margin-inline-end: -0.5rem;
-    }
-    .me-2xl--1 {
-      margin-inline-end: -0.25rem;
-    }
     .me-2xl-0 {
       margin-inline-end: 0;
     }
     .me-2xl-auto {
       margin-inline-end: auto;
     }
-    .mb-2xl--2 {
-      margin-block-end: -0.5rem;
-    }
-    .mb-2xl--1 {
-      margin-block-end: -0.25rem;
-    }
     .mb-2xl-0 {
       margin-block-end: 0;
     }
     .mb-2xl-auto {
       margin-block-end: auto;
     }
-    .ms-2xl--2 {
-      margin-inline-start: -0.5rem;
-    }
-    .ms-2xl--1 {
-      margin-inline-start: -0.25rem;
-    }
     .ms-2xl-0 {
       margin-inline-start: 0;
     }
     .ms-2xl-5 {
       margin-inline-start: 3rem;
     }
-    .ms-2xl-auto {
-      margin-inline-start: auto;
+    .ms-2xl--1 {
+      margin-inline-start: -0.25rem;
     }
-    .p-2xl--2 {
-      padding: -0.5rem;
+    .ms-2xl--2 {
+      margin-inline-start: -0.5rem;
     }
-    .p-2xl--1 {
-      padding: -0.25rem;
+    .ms-2xl-auto {
+      margin-inline-start: auto;
     }
     .p-2xl-0 {
       padding: 0;
     .p-2xl-5 {
       padding: 3rem;
     }
-    .px-2xl--2 {
-      padding-inline: -0.5rem;
-    }
-    .px-2xl--1 {
-      padding-inline: -0.25rem;
-    }
     .px-2xl-0 {
       padding-inline: 0;
     }
     .px-2xl-5 {
       padding-inline: 3rem;
     }
-    .py-2xl--2 {
-      padding-block: -0.5rem;
-    }
-    .py-2xl--1 {
-      padding-block: -0.25rem;
-    }
     .py-2xl-0 {
       padding-block: 0;
     }
     .py-2xl-5 {
       padding-block: 3rem;
     }
-    .pt-2xl--2 {
-      padding-block-start: -0.5rem;
-    }
-    .pt-2xl--1 {
-      padding-block-start: -0.25rem;
-    }
     .pt-2xl-0 {
       padding-block-start: 0;
     }
     .pt-2xl-5 {
       padding-block-start: 3rem;
     }
-    .pe-2xl--2 {
-      padding-inline-end: -0.5rem;
-    }
-    .pe-2xl--1 {
-      padding-inline-end: -0.25rem;
-    }
     .pe-2xl-0 {
       padding-inline-end: 0;
     }
     .pe-2xl-5 {
       padding-inline-end: 3rem;
     }
-    .pb-2xl--2 {
-      padding-block-end: -0.5rem;
-    }
-    .pb-2xl--1 {
-      padding-block-end: -0.25rem;
-    }
     .pb-2xl-0 {
       padding-block-end: 0;
     }
     .pb-2xl-5 {
       padding-block-end: 3rem;
     }
-    .ps-2xl--2 {
-      padding-inline-start: -0.5rem;
-    }
-    .ps-2xl--1 {
-      padding-inline-start: -0.25rem;
-    }
     .ps-2xl-0 {
       padding-inline-start: 0;
     }
     .ps-2xl-5 {
       padding-inline-start: 3rem;
     }
+    .gap-2xl-0 {
+      gap: 0;
+    }
+    .gap-2xl-1 {
+      gap: 0.25rem;
+    }
+    .gap-2xl-2 {
+      gap: 0.5rem;
+    }
+    .gap-2xl-3 {
+      gap: 1rem;
+    }
+    .gap-2xl-4 {
+      gap: 1.5rem;
+    }
+    .gap-2xl-5 {
+      gap: 3rem;
+    }
+    .row-gap-2xl-0 {
+      row-gap: 0;
+    }
+    .row-gap-2xl-1 {
+      row-gap: 0.25rem;
+    }
+    .row-gap-2xl-2 {
+      row-gap: 0.5rem;
+    }
+    .row-gap-2xl-3 {
+      row-gap: 1rem;
+    }
+    .row-gap-2xl-4 {
+      row-gap: 1.5rem;
+    }
+    .row-gap-2xl-5 {
+      row-gap: 3rem;
+    }
+    .column-gap-2xl-0 {
+      -moz-column-gap: 0;
+      column-gap: 0;
+    }
+    .column-gap-2xl-1 {
+      -moz-column-gap: 0.25rem;
+      column-gap: 0.25rem;
+    }
+    .column-gap-2xl-2 {
+      -moz-column-gap: 0.5rem;
+      column-gap: 0.5rem;
+    }
+    .column-gap-2xl-3 {
+      -moz-column-gap: 1rem;
+      column-gap: 1rem;
+    }
+    .column-gap-2xl-4 {
+      -moz-column-gap: 1.5rem;
+      column-gap: 1.5rem;
+    }
+    .column-gap-2xl-5 {
+      -moz-column-gap: 3rem;
+      column-gap: 3rem;
+    }
   }
 }
 :root {
index 448deb5a341de44a804fe53d8f34bea6cce3d5fc..8c0054808968f7e534f0a7694f79b32dd38150f3 100644 (file)
@@ -1 +1 @@
-{"version":3,"sources":["../../scss/_banner.scss","../../scss/layout/_containers.scss","bootstrap-grid.css","../../scss/layout/_breakpoints.scss","../../scss/_config.scss","../../scss/layout/_grid.scss","../../scss/mixins/_grid.scss","../../scss/utilities/_api.scss","../../scss/mixins/_utilities.scss","../../scss/bootstrap-grid.scss"],"names":[],"mappings":"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A;IJolCR;IIrlCM;MACE,wBAAA;IJulCR;IIxlCM;MACE,wBAAA;IJ0lCR;II3lCM;MACE,wBAAA;IJ6lCR;II9lCM;MACE,wBAAA;IJgmCR;IIjmCM;MACE,wBAAA;IJmmCR;IIpmCM;MACE,wBAAA;IJsmCR;IIvmCM;MACE,wBAAA;IJymCR;II1mCM;MACE,yBAAA;IJ4mCR;II7mCM;MACE,yBAAA;IJ+mCR;IIhnCM;MACE,yBAAA;IJknCR;II3mCM;MACE,oBAFS;IJ+mCjB;II9mCM;MACE,oBAFS;IJknCjB;IIjnCM;MACE,oBAFS;IJqnCjB;IIpnCM;MACE,oBAFS;IJwnCjB;IIvnCM;MACE,oBAFS;IJ2nCjB;II1nCM;MACE,oBAFS;IJ8nCjB;II7nCM;MACE,oBAFS;IJioCjB;IIhoCM;MACE,oBAFS;IJooCjB;IInoCM;MACE,oBAFS;IJuoCjB;IItoCM;MACE,qBAFS;IJ0oCjB;IIzoCM;MACE,qBAFS;IJ6oCjB;EACF;ECzrCE;IGoCM;MACE,wBAAA;IJwpCR;IIzpCM;MACE,wBAAA;IJ2pCR;II5pCM;MACE,wBAAA;IJ8pCR;II/pCM;MACE,wBAAA;IJiqCR;IIlqCM;MACE,wBAAA;IJoqCR;IIrqCM;MACE,wBAAA;IJuqCR;IIxqCM;MACE,wBAAA;IJ0qCR;II3qCM;MACE,wBAAA;IJ6qCR;II9qCM;MACE,wBAAA;IJgrCR;IIjrCM;MACE,yBAAA;IJmrCR;IIprCM;MACE,yBAAA;IJsrCR;IIvrCM;MACE,yBAAA;IJyrCR;IIlrCM;MACE,oBAFS;IJsrCjB;IIrrCM;MACE,oBAFS;IJyrCjB;IIxrCM;MACE,oBAFS;IJ4rCjB;II3rCM;MACE,oBAFS;IJ+rCjB;II9rCM;MACE,oBAFS;IJksCjB;IIjsCM;MACE,oBAFS;IJqsCjB;IIpsCM;MACE,oBAFS;IJwsCjB;IIvsCM;MACE,oBAFS;IJ2sCjB;II1sCM;MACE,oBAFS;IJ8sCjB;II7sCM;MACE,qBAFS;IJitCjB;IIhtCM;MACE,qBAFS;IJotCjB;EACF;EChwCE;IGoCM;MACE,wBAAA;IJ+tCR;IIhuCM;MACE,wBAAA;IJkuCR;IInuCM;MACE,wBAAA;IJquCR;IItuCM;MACE,wBAAA;IJwuCR;IIzuCM;MACE,wBAAA;IJ2uCR;II5uCM;MACE,wBAAA;IJ8uCR;II/uCM;MACE,wBAAA;IJivCR;IIlvCM;MACE,wBAAA;IJovCR;IIrvCM;MACE,wBAAA;IJuvCR;IIxvCM;MACE,yBAAA;IJ0vCR;II3vCM;MACE,yBAAA;IJ6vCR;II9vCM;MACE,yBAAA;IJgwCR;IIzvCM;MACE,oBAFS;IJ6vCjB;II5vCM;MACE,oBAFS;IJgwCjB;II/vCM;MACE,oBAFS;IJmwCjB;IIlwCM;MACE,oBAFS;IJswCjB;IIrwCM;MACE,oBAFS;IJywCjB;IIxwCM;MACE,oBAFS;IJ4wCjB;II3wCM;MACE,oBAFS;IJ+wCjB;II9wCM;MACE,oBAFS;IJkxCjB;IIjxCM;MACE,oBAFS;IJqxCjB;IIpxCM;MACE,qBAFS;IJwxCjB;IIvxCM;MACE,qBAFS;IJ2xCjB;EACF;ECv0CE;IGoCM;MACE,wBAAA;IJsyCR;IIvyCM;MACE,wBAAA;IJyyCR;II1yCM;MACE,wBAAA;IJ4yCR;II7yCM;MACE,wBAAA;IJ+yCR;IIhzCM;MACE,wBAAA;IJkzCR;IInzCM;MACE,wBAAA;IJqzCR;IItzCM;MACE,wBAAA;IJwzCR;IIzzCM;MACE,wBAAA;IJ2zCR;II5zCM;MACE,wBAAA;IJ8zCR;II/zCM;MACE,yBAAA;IJi0CR;IIl0CM;MACE,yBAAA;IJo0CR;IIr0CM;MACE,yBAAA;IJu0CR;IIh0CM;MACE,oBAFS;IJo0CjB;IIn0CM;MACE,oBAFS;IJu0CjB;IIt0CM;MACE,oBAFS;IJ00CjB;IIz0CM;MACE,oBAFS;IJ60CjB;II50CM;MACE,oBAFS;IJg1CjB;II/0CM;MACE,oBAFS;IJm1CjB;IIl1CM;MACE,oBAFS;IJs1CjB;IIr1CM;MACE,oBAFS;IJy1CjB;IIx1CM;MACE,oBAFS;IJ41CjB;II31CM;MACE,qBAFS;IJ+1CjB;II91CM;MACE,qBAFS;IJk2CjB;EACF;EC94CE;IGoCM;MACE,wBAAA;IJ62CR;II92CM;MACE,wBAAA;IJg3CR;IIj3CM;MACE,wBAAA;IJm3CR;IIp3CM;MACE,wBAAA;IJs3CR;IIv3CM;MACE,wBAAA;IJy3CR;II13CM;MACE,wBAAA;IJ43CR;II73CM;MACE,wBAAA;IJ+3CR;IIh4CM;MACE,wBAAA;IJk4CR;IIn4CM;MACE,wBAAA;IJq4CR;IIt4CM;MACE,yBAAA;IJw4CR;IIz4CM;MACE,yBAAA;IJ24CR;II54CM;MACE,yBAAA;IJ84CR;IIv4CM;MACE,oBAFS;IJ24CjB;II14CM;MACE,oBAFS;IJ84CjB;II74CM;MACE,oBAFS;IJi5CjB;IIh5CM;MACE,oBAFS;IJo5CjB;IIn5CM;MACE,oBAFS;IJu5CjB;IIt5CM;MACE,oBAFS;IJ05CjB;IIz5CM;MACE,oBAFS;IJ65CjB;II55CM;MACE,oBAFS;IJg6CjB;II/5CM;MACE,oBAFS;IJm6CjB;IIl6CM;MACE,qBAFS;IJs6CjB;IIr6CM;MACE,qBAFS;IJy6CjB;EACF;EG1hDA;IACE,8BAAA;EH4hDF;EGzhDA;IACE,gBAAA;IAEA,aAAA;IACA,uDAAA;IACA,mBAAA;IACA,kBAAA;EH0hDF;AACF;AKlkDA;ECyMI;IApII,eA+CO;ENk9Cb;EM73CE;IApII,qBA+CO;ENq9Cb;EMh4CE;IApII,cA+CO;ENw9Cb;EMn4CE;IApII,aA+CO;EN29Cb;EMt4CE;IApII,oBA+CO;EN89Cb;EMz4CE;IApII,cA+CO;ENi+Cb;EM54CE;IApII,kBA+CO;ENo+Cb;EM/4CE;IApII,mBA+CO;ENu+Cb;EMl5CE;IApII,aA+CO;EN0+Cb;EMr5CE;IApII,oBA+CO;EN6+Cb;EMx5CE;IApII,iBA+CO;ENg/Cb;EM35CE;IApII,kBA+CO;ENm/Cb;EM95CE;IApII,aA+CO;ENs/Cb;EMj6CE;IApII,cA0CG;EN8/CT;EMp6CE;IApII,mBA+CO;EN4/Cb;EMv6CE;IApII,sBA+CO;EN+/Cb;EM16CE;IApII,2BA+CO;ENkgDb;EM76CE;IApII,8BA+CO;ENqgDb;EMh7CE;IApII,YA0CG;EN6gDT;EMn7CE;IApII,YA0CG;ENghDT;EMt7CE;IApII,cA0CG;ENmhDT;EMz7CE;IApII,cA0CG;ENshDT;EM57CE;IApII,eA+CO;ENohDb;EM/7CE;IApII,iBA+CO;ENuhDb;EMl8CE;IApII,uBA+CO;EN0hDb;EMr8CE;IApII,2BA0CG;ENkiDT;EMx8CE;IApII,yBA0CG;ENqiDT;EM38CE;IApII,uBA0CG;ENwiDT;EM98CE;IApII,8BA0CG;EN2iDT;EMj9CE;IApII,6BA0CG;EN8iDT;EMp9CE;IApII,6BA0CG;ENijDT;EMv9CE;IApII,oBA0CG;ENojDT;EM19CE;IApII,kBA0CG;ENujDT;EM79CE;IApII,qBA0CG;EN0jDT;EMh+CE;IApII,sBA0CG;EN6jDT;EMn+CE;IApII,uBA0CG;ENgkDT;EMt+CE;IApII,qBA0CG;ENmkDT;EMz+CE;IApII,mBA0CG;ENskDT;EM5+CE;IApII,qBA0CG;ENykDT;EM/+CE;IApII,oBA0CG;EN4kDT;EMl/CE;IApII,yBA0CG;EN+kDT;EMr/CE;IApII,uBA0CG;ENklDT;EMx/CE;IApII,qBA0CG;ENqlDT;EM3/CE;IApII,4BA0CG;ENwlDT;EM9/CE;IApII,2BA0CG;EN2lDT;EMjgDE;IApII,sBA0CG;EN8lDT;EMpgDE;IApII,gBA0CG;ENimDT;EMvgDE;IApII,sBA0CG;ENomDT;EM1gDE;IApII,oBA0CG;ENumDT;EM7gDE;IApII,kBA0CG;EN0mDT;EMhhDE;IApII,oBA0CG;EN6mDT;EMnhDE;IApII,mBA0CG;ENgnDT;EMthDE;IApII,kBA0CG;ENmnDT;EMzhDE;IApII,gBA0CG;ENsnDT;EM5hDE;IApII,mBA0CG;ENynDT;EM/hDE;IApII,oBA0CG;EN4nDT;EMliDE;IApII,SA0CG;EN+nDT;EMriDE;IApII,QA0CG;ENkoDT;EMxiDE;IApII,QA0CG;ENqoDT;EM3iDE;IApII,QA0CG;ENwoDT;EM9iDE;IApII,QA0CG;EN2oDT;EMjjDE;IApII,QA0CG;EN8oDT;EMpjDE;IApII,QA0CG;ENipDT;EMvjDE;IApII,QA0CG;ENopDT;EM1jDE;IApII,eA0CG;ENupDT;EM7jDE;IApII,gBA0CG;EN0pDT;EMhkDE;IApII,SA0CG;EN6pDT;EMnkDE;IApII,eA0CG;ENgqDT;EMtkDE;IApII,cA0CG;ENmqDT;EMzkDE;IApII,YA0CG;ENsqDT;EM5kDE;IApII,cA0CG;ENyqDT;EM/kDE;IApII,YA0CG;EN4qDT;EMllDE;IApII,YA0CG;EN+qDT;EMrlDE;IApII,sBA0CG;ENkrDT;EMxlDE;IApII,uBA0CG;ENqrDT;EM3lDE;IApII,gBA0CG;ENwrDT;EM9lDE;IApII,sBA0CG;EN2rDT;EMjmDE;IApII,qBA0CG;EN8rDT;EMpmDE;IApII,mBA0CG;ENisDT;EMvmDE;IApII,qBA0CG;ENosDT;EM1mDE;IApII,mBA0CG;ENusDT;EM7mDE;IApII,mBA0CG;EN0sDT;EMhnDE;IApII,qBA0CG;EN6sDT;EMnnDE;IApII,sBA0CG;ENgtDT;EMtnDE;IApII,eA0CG;ENmtDT;EMznDE;IApII,qBA0CG;ENstDT;EM5nDE;IApII,oBA0CG;ENytDT;EM/nDE;IApII,kBA0CG;EN4tDT;EMloDE;IApII,oBA0CG;EN+tDT;EMroDE;IApII,kBA0CG;ENkuDT;EMxoDE;IApII,kBA0CG;ENquDT;EM3oDE;IApII,2BA0CG;ENwuDT;EM9oDE;IApII,4BA0CG;EN2uDT;EMjpDE;IApII,qBA0CG;EN8uDT;EMppDE;IApII,2BA0CG;ENivDT;EMvpDE;IApII,0BA0CG;ENovDT;EM1pDE;IApII,wBA0CG;ENuvDT;EM7pDE;IApII,0BA0CG;EN0vDT;EMhqDE;IApII,wBA0CG;EN6vDT;EMnqDE;IApII,wBA0CG;ENgwDT;EMtqDE;IApII,0BA0CG;ENmwDT;EMzqDE;IApII,2BA0CG;ENswDT;EM5qDE;IApII,oBA0CG;ENywDT;EM/qDE;IApII,0BA0CG;EN4wDT;EMlrDE;IApII,yBA0CG;EN+wDT;EMrrDE;IApII,uBA0CG;ENkxDT;EMxrDE;IApII,yBA0CG;ENqxDT;EM3rDE;IApII,uBA0CG;ENwxDT;EM9rDE;IApII,uBA0CG;EN2xDT;EMjsDE;IApII,yBA0CG;EN8xDT;EMpsDE;IApII,0BA0CG;ENiyDT;EMvsDE;IApII,mBA0CG;ENoyDT;EM1sDE;IApII,yBA0CG;ENuyDT;EM7sDE;IApII,wBA0CG;EN0yDT;EMhtDE;IApII,sBA0CG;EN6yDT;EMntDE;IApII,wBA0CG;ENgzDT;EMttDE;IApII,sBA0CG;ENmzDT;EMztDE;IApII,sBA0CG;ENszDT;EM5tDE;IApII,4BA0CG;ENyzDT;EM/tDE;IApII,6BA0CG;EN4zDT;EMluDE;IApII,sBA0CG;EN+zDT;EMruDE;IApII,4BA0CG;ENk0DT;EMxuDE;IApII,2BA0CG;ENq0DT;EM3uDE;IApII,yBA0CG;ENw0DT;EM9uDE;IApII,2BA0CG;EN20DT;EMjvDE;IApII,yBA0CG;EN80DT;EMpvDE;IApII,yBA0CG;ENi1DT;EMvvDE;IApII,gBA0CG;ENo1DT;EM1vDE;IApII,iBA0CG;ENu1DT;EM7vDE;IApII,UA0CG;EN01DT;EMhwDE;IApII,gBA0CG;EN61DT;EMnwDE;IApII,eA0CG;ENg2DT;EMtwDE;IApII,aA0CG;ENm2DT;EMzwDE;IApII,eA0CG;ENs2DT;EM5wDE;IApII,aA0CG;ENy2DT;EM/wDE;IApII,uBA0CG;EN42DT;EMlxDE;IApII,wBA0CG;EN+2DT;EMrxDE;IApII,iBA0CG;ENk3DT;EMxxDE;IApII,uBA0CG;ENq3DT;EM3xDE;IApII,sBA0CG;ENw3DT;EM9xDE;IApII,oBA0CG;EN23DT;EMjyDE;IApII,sBA0CG;EN83DT;EMpyDE;IApII,oBA0CG;ENi4DT;EMvyDE;IApII,sBA0CG;ENo4DT;EM1yDE;IApII,uBA0CG;ENu4DT;EM7yDE;IApII,gBA0CG;EN04DT;EMhzDE;IApII,sBA0CG;EN64DT;EMnzDE;IApII,qBA0CG;ENg5DT;EMtzDE;IApII,mBA0CG;ENm5DT;EMzzDE;IApII,qBA0CG;ENs5DT;EM5zDE;IApII,mBA0CG;ENy5DT;EM/zDE;IApII,4BA0CG;EN45DT;EMl0DE;IApII,6BA0CG;EN+5DT;EMr0DE;IApII,sBA0CG;ENk6DT;EMx0DE;IApII,4BA0CG;ENq6DT;EM30DE;IApII,2BA0CG;ENw6DT;EM90DE;IApII,yBA0CG;EN26DT;EMj1DE;IApII,2BA0CG;EN86DT;EMp1DE;IApII,yBA0CG;ENi7DT;EMv1DE;IApII,2BA0CG;ENo7DT;EM11DE;IApII,4BA0CG;ENu7DT;EM71DE;IApII,qBA0CG;EN07DT;EMh2DE;IApII,2BA0CG;EN67DT;EMn2DE;IApII,0BA0CG;ENg8DT;EMt2DE;IApII,wBA0CG;ENm8DT;EMz2DE;IApII,0BA0CG;ENs8DT;EM52DE;IApII,wBA0CG;ENy8DT;EM/2DE;IApII,0BA0CG;EN48DT;EMl3DE;IApII,2BA0CG;EN+8DT;EMr3DE;IApII,oBA0CG;ENk9DT;EMx3DE;IApII,0BA0CG;ENq9DT;EM33DE;IApII,yBA0CG;ENw9DT;EM93DE;IApII,uBA0CG;EN29DT;EMj4DE;IApII,yBA0CG;EN89DT;EMp4DE;IApII,uBA0CG;ENi+DT;EMv4DE;IApII,6BA0CG;ENo+DT;EM14DE;IApII,8BA0CG;ENu+DT;EM74DE;IApII,uBA0CG;EN0+DT;EMh5DE;IApII,6BA0CG;EN6+DT;EMn5DE;IApII,4BA0CG;ENg/DT;EMt5DE;IApII,0BA0CG;ENm/DT;EMz5DE;IApII,4BA0CG;ENs/DT;EM55DE;IApII,0BA0CG;ENy/DT;ECtgEE;IKuGA;MApII,eA+CO;INw/DX;IMn6DA;MApII,qBA+CO;IN2/DX;IMt6DA;MApII,cA+CO;IN8/DX;IMz6DA;MApII,aA+CO;INigEX;IM56DA;MApII,oBA+CO;INogEX;IM/6DA;MApII,cA+CO;INugEX;IMl7DA;MApII,kBA+CO;IN0gEX;IMr7DA;MApII,mBA+CO;IN6gEX;IMx7DA;MApII,aA+CO;INghEX;IM37DA;MApII,oBA+CO;INmhEX;IM97DA;MApII,iBA+CO;INshEX;IMj8DA;MApII,kBA+CO;INyhEX;IMp8DA;MApII,aA+CO;IN4hEX;IMv8DA;MApII,cA0CG;INoiEP;IM18DA;MApII,mBA+CO;INkiEX;IM78DA;MApII,sBA+CO;INqiEX;IMh9DA;MApII,2BA+CO;INwiEX;IMn9DA;MApII,8BA+CO;IN2iEX;IMt9DA;MApII,YA0CG;INmjEP;IMz9DA;MApII,YA0CG;INsjEP;IM59DA;MApII,cA0CG;INyjEP;IM/9DA;MApII,cA0CG;IN4jEP;IMl+DA;MApII,eA+CO;IN0jEX;IMr+DA;MApII,iBA+CO;IN6jEX;IMx+DA;MApII,uBA+CO;INgkEX;IM3+DA;MApII,2BA0CG;INwkEP;IM9+DA;MApII,yBA0CG;IN2kEP;IMj/DA;MApII,uBA0CG;IN8kEP;IMp/DA;MApII,8BA0CG;INilEP;IMv/DA;MApII,6BA0CG;INolEP;IM1/DA;MApII,6BA0CG;INulEP;IM7/DA;MApII,oBA0CG;IN0lEP;IMhgEA;MApII,kBA0CG;IN6lEP;IMngEA;MApII,qBA0CG;INgmEP;IMtgEA;MApII,sBA0CG;INmmEP;IMzgEA;MApII,uBA0CG;INsmEP;IM5gEA;MApII,qBA0CG;INymEP;IM/gEA;MApII,mBA0CG;IN4mEP;IMlhEA;MApII,qBA0CG;IN+mEP;IMrhEA;MApII,oBA0CG;INknEP;IMxhEA;MApII,yBA0CG;INqnEP;IM3hEA;MApII,uBA0CG;INwnEP;IM9hEA;MApII,qBA0CG;IN2nEP;IMjiEA;MApII,4BA0CG;IN8nEP;IMpiEA;MApII,2BA0CG;INioEP;IMviEA;MApII,sBA0CG;INooEP;IM1iEA;MApII,gBA0CG;INuoEP;IM7iEA;MApII,sBA0CG;IN0oEP;IMhjEA;MApII,oBA0CG;IN6oEP;IMnjEA;MApII,kBA0CG;INgpEP;IMtjEA;MApII,oBA0CG;INmpEP;IMzjEA;MApII,mBA0CG;INspEP;IM5jEA;MApII,kBA0CG;INypEP;IM/jEA;MApII,gBA0CG;IN4pEP;IMlkEA;MApII,mBA0CG;IN+pEP;IMrkEA;MApII,oBA0CG;INkqEP;IMxkEA;MApII,SA0CG;INqqEP;IM3kEA;MApII,QA0CG;INwqEP;IM9kEA;MApII,QA0CG;IN2qEP;IMjlEA;MApII,QA0CG;IN8qEP;IMplEA;MApII,QA0CG;INirEP;IMvlEA;MApII,QA0CG;INorEP;IM1lEA;MApII,QA0CG;INurEP;IM7lEA;MApII,QA0CG;IN0rEP;IMhmEA;MApII,eA0CG;IN6rEP;IMnmEA;MApII,gBA0CG;INgsEP;IMtmEA;MApII,SA0CG;INmsEP;IMzmEA;MApII,eA0CG;INssEP;IM5mEA;MApII,cA0CG;INysEP;IM/mEA;MApII,YA0CG;IN4sEP;IMlnEA;MApII,cA0CG;IN+sEP;IMrnEA;MApII,YA0CG;INktEP;IMxnEA;MApII,YA0CG;INqtEP;IM3nEA;MApII,sBA0CG;INwtEP;IM9nEA;MApII,uBA0CG;IN2tEP;IMjoEA;MApII,gBA0CG;IN8tEP;IMpoEA;MApII,sBA0CG;INiuEP;IMvoEA;MApII,qBA0CG;INouEP;IM1oEA;MApII,mBA0CG;INuuEP;IM7oEA;MApII,qBA0CG;IN0uEP;IMhpEA;MApII,mBA0CG;IN6uEP;IMnpEA;MApII,mBA0CG;INgvEP;IMtpEA;MApII,qBA0CG;INmvEP;IMzpEA;MApII,sBA0CG;INsvEP;IM5pEA;MApII,eA0CG;INyvEP;IM/pEA;MApII,qBA0CG;IN4vEP;IMlqEA;MApII,oBA0CG;IN+vEP;IMrqEA;MApII,kBA0CG;INkwEP;IMxqEA;MApII,oBA0CG;INqwEP;IM3qEA;MApII,kBA0CG;INwwEP;IM9qEA;MApII,kBA0CG;IN2wEP;IMjrEA;MApII,2BA0CG;IN8wEP;IMprEA;MApII,4BA0CG;INixEP;IMvrEA;MApII,qBA0CG;INoxEP;IM1rEA;MApII,2BA0CG;INuxEP;IM7rEA;MApII,0BA0CG;IN0xEP;IMhsEA;MApII,wBA0CG;IN6xEP;IMnsEA;MApII,0BA0CG;INgyEP;IMtsEA;MApII,wBA0CG;INmyEP;IMzsEA;MApII,wBA0CG;INsyEP;IM5sEA;MApII,0BA0CG;INyyEP;IM/sEA;MApII,2BA0CG;IN4yEP;IMltEA;MApII,oBA0CG;IN+yEP;IMrtEA;MApII,0BA0CG;INkzEP;IMxtEA;MApII,yBA0CG;INqzEP;IM3tEA;MApII,uBA0CG;INwzEP;IM9tEA;MApII,yBA0CG;IN2zEP;IMjuEA;MApII,uBA0CG;IN8zEP;IMpuEA;MApII,uBA0CG;INi0EP;IMvuEA;MApII,yBA0CG;INo0EP;IM1uEA;MApII,0BA0CG;INu0EP;IM7uEA;MApII,mBA0CG;IN00EP;IMhvEA;MApII,yBA0CG;IN60EP;IMnvEA;MApII,wBA0CG;INg1EP;IMtvEA;MApII,sBA0CG;INm1EP;IMzvEA;MApII,wBA0CG;INs1EP;IM5vEA;MApII,sBA0CG;INy1EP;IM/vEA;MApII,sBA0CG;IN41EP;IMlwEA;MApII,4BA0CG;IN+1EP;IMrwEA;MApII,6BA0CG;INk2EP;IMxwEA;MApII,sBA0CG;INq2EP;IM3wEA;MApII,4BA0CG;INw2EP;IM9wEA;MApII,2BA0CG;IN22EP;IMjxEA;MApII,yBA0CG;IN82EP;IMpxEA;MApII,2BA0CG;INi3EP;IMvxEA;MApII,yBA0CG;INo3EP;IM1xEA;MApII,yBA0CG;INu3EP;IM7xEA;MApII,gBA0CG;IN03EP;IMhyEA;MApII,iBA0CG;IN63EP;IMnyEA;MApII,UA0CG;INg4EP;IMtyEA;MApII,gBA0CG;INm4EP;IMzyEA;MApII,eA0CG;INs4EP;IM5yEA;MApII,aA0CG;INy4EP;IM/yEA;MApII,eA0CG;IN44EP;IMlzEA;MApII,aA0CG;IN+4EP;IMrzEA;MApII,uBA0CG;INk5EP;IMxzEA;MApII,wBA0CG;INq5EP;IM3zEA;MApII,iBA0CG;INw5EP;IM9zEA;MApII,uBA0CG;IN25EP;IMj0EA;MApII,sBA0CG;IN85EP;IMp0EA;MApII,oBA0CG;INi6EP;IMv0EA;MApII,sBA0CG;INo6EP;IM10EA;MApII,oBA0CG;INu6EP;IM70EA;MApII,sBA0CG;IN06EP;IMh1EA;MApII,uBA0CG;IN66EP;IMn1EA;MApII,gBA0CG;INg7EP;IMt1EA;MApII,sBA0CG;INm7EP;IMz1EA;MApII,qBA0CG;INs7EP;IM51EA;MApII,mBA0CG;INy7EP;IM/1EA;MApII,qBA0CG;IN47EP;IMl2EA;MApII,mBA0CG;IN+7EP;IMr2EA;MApII,4BA0CG;INk8EP;IMx2EA;MApII,6BA0CG;INq8EP;IM32EA;MApII,sBA0CG;INw8EP;IM92EA;MApII,4BA0CG;IN28EP;IMj3EA;MApII,2BA0CG;IN88EP;IMp3EA;MApII,yBA0CG;INi9EP;IMv3EA;MApII,2BA0CG;INo9EP;IM13EA;MApII,yBA0CG;INu9EP;IM73EA;MApII,2BA0CG;IN09EP;IMh4EA;MApII,4BA0CG;IN69EP;IMn4EA;MApII,qBA0CG;INg+EP;IMt4EA;MApII,2BA0CG;INm+EP;IMz4EA;MApII,0BA0CG;INs+EP;IM54EA;MApII,wBA0CG;INy+EP;IM/4EA;MApII,0BA0CG;IN4+EP;IMl5EA;MApII,wBA0CG;IN++EP;IMr5EA;MApII,0BA0CG;INk/EP;IMx5EA;MApII,2BA0CG;INq/EP;IM35EA;MApII,oBA0CG;INw/EP;IM95EA;MApII,0BA0CG;IN2/EP;IMj6EA;MApII,yBA0CG;IN8/EP;IMp6EA;MApII,uBA0CG;INigFP;IMv6EA;MApII,yBA0CG;INogFP;IM16EA;MApII,uBA0CG;INugFP;IM76EA;MApII,6BA0CG;IN0gFP;IMh7EA;MApII,8BA0CG;IN6gFP;IMn7EA;MApII,uBA0CG;INghFP;IMt7EA;MApII,6BA0CG;INmhFP;IMz7EA;MApII,4BA0CG;INshFP;IM57EA;MApII,0BA0CG;INyhFP;IM/7EA;MApII,4BA0CG;IN4hFP;IMl8EA;MApII,0BA0CG;IN+hFP;EACF;EC7iFE;IKuGA;MApII,eA+CO;IN+hFX;IM18EA;MApII,qBA+CO;INkiFX;IM78EA;MApII,cA+CO;INqiFX;IMh9EA;MApII,aA+CO;INwiFX;IMn9EA;MApII,oBA+CO;IN2iFX;IMt9EA;MApII,cA+CO;IN8iFX;IMz9EA;MApII,kBA+CO;INijFX;IM59EA;MApII,mBA+CO;INojFX;IM/9EA;MApII,aA+CO;INujFX;IMl+EA;MApII,oBA+CO;IN0jFX;IMr+EA;MApII,iBA+CO;IN6jFX;IMx+EA;MApII,kBA+CO;INgkFX;IM3+EA;MApII,aA+CO;INmkFX;IM9+EA;MApII,cA0CG;IN2kFP;IMj/EA;MApII,mBA+CO;INykFX;IMp/EA;MApII,sBA+CO;IN4kFX;IMv/EA;MApII,2BA+CO;IN+kFX;IM1/EA;MApII,8BA+CO;INklFX;IM7/EA;MApII,YA0CG;IN0lFP;IMhgFA;MApII,YA0CG;IN6lFP;IMngFA;MApII,cA0CG;INgmFP;IMtgFA;MApII,cA0CG;INmmFP;IMzgFA;MApII,eA+CO;INimFX;IM5gFA;MApII,iBA+CO;INomFX;IM/gFA;MApII,uBA+CO;INumFX;IMlhFA;MApII,2BA0CG;IN+mFP;IMrhFA;MApII,yBA0CG;INknFP;IMxhFA;MApII,uBA0CG;INqnFP;IM3hFA;MApII,8BA0CG;INwnFP;IM9hFA;MApII,6BA0CG;IN2nFP;IMjiFA;MApII,6BA0CG;IN8nFP;IMpiFA;MApII,oBA0CG;INioFP;IMviFA;MApII,kBA0CG;INooFP;IM1iFA;MApII,qBA0CG;INuoFP;IM7iFA;MApII,sBA0CG;IN0oFP;IMhjFA;MApII,uBA0CG;IN6oFP;IMnjFA;MApII,qBA0CG;INgpFP;IMtjFA;MApII,mBA0CG;INmpFP;IMzjFA;MApII,qBA0CG;INspFP;IM5jFA;MApII,oBA0CG;INypFP;IM/jFA;MApII,yBA0CG;IN4pFP;IMlkFA;MApII,uBA0CG;IN+pFP;IMrkFA;MApII,qBA0CG;INkqFP;IMxkFA;MApII,4BA0CG;INqqFP;IM3kFA;MApII,2BA0CG;INwqFP;IM9kFA;MApII,sBA0CG;IN2qFP;IMjlFA;MApII,gBA0CG;IN8qFP;IMplFA;MApII,sBA0CG;INirFP;IMvlFA;MApII,oBA0CG;INorFP;IM1lFA;MApII,kBA0CG;INurFP;IM7lFA;MApII,oBA0CG;IN0rFP;IMhmFA;MApII,mBA0CG;IN6rFP;IMnmFA;MApII,kBA0CG;INgsFP;IMtmFA;MApII,gBA0CG;INmsFP;IMzmFA;MApII,mBA0CG;INssFP;IM5mFA;MApII,oBA0CG;INysFP;IM/mFA;MApII,SA0CG;IN4sFP;IMlnFA;MApII,QA0CG;IN+sFP;IMrnFA;MApII,QA0CG;INktFP;IMxnFA;MApII,QA0CG;INqtFP;IM3nFA;MApII,QA0CG;INwtFP;IM9nFA;MApII,QA0CG;IN2tFP;IMjoFA;MApII,QA0CG;IN8tFP;IMpoFA;MApII,QA0CG;INiuFP;IMvoFA;MApII,eA0CG;INouFP;IM1oFA;MApII,gBA0CG;INuuFP;IM7oFA;MApII,SA0CG;IN0uFP;IMhpFA;MApII,eA0CG;IN6uFP;IMnpFA;MApII,cA0CG;INgvFP;IMtpFA;MApII,YA0CG;INmvFP;IMzpFA;MApII,cA0CG;INsvFP;IM5pFA;MApII,YA0CG;INyvFP;IM/pFA;MApII,YA0CG;IN4vFP;IMlqFA;MApII,sBA0CG;IN+vFP;IMrqFA;MApII,uBA0CG;INkwFP;IMxqFA;MApII,gBA0CG;INqwFP;IM3qFA;MApII,sBA0CG;INwwFP;IM9qFA;MApII,qBA0CG;IN2wFP;IMjrFA;MApII,mBA0CG;IN8wFP;IMprFA;MApII,qBA0CG;INixFP;IMvrFA;MApII,mBA0CG;INoxFP;IM1rFA;MApII,mBA0CG;INuxFP;IM7rFA;MApII,qBA0CG;IN0xFP;IMhsFA;MApII,sBA0CG;IN6xFP;IMnsFA;MApII,eA0CG;INgyFP;IMtsFA;MApII,qBA0CG;INmyFP;IMzsFA;MApII,oBA0CG;INsyFP;IM5sFA;MApII,kBA0CG;INyyFP;IM/sFA;MApII,oBA0CG;IN4yFP;IMltFA;MApII,kBA0CG;IN+yFP;IMrtFA;MApII,kBA0CG;INkzFP;IMxtFA;MApII,2BA0CG;INqzFP;IM3tFA;MApII,4BA0CG;INwzFP;IM9tFA;MApII,qBA0CG;IN2zFP;IMjuFA;MApII,2BA0CG;IN8zFP;IMpuFA;MApII,0BA0CG;INi0FP;IMvuFA;MApII,wBA0CG;INo0FP;IM1uFA;MApII,0BA0CG;INu0FP;IM7uFA;MApII,wBA0CG;IN00FP;IMhvFA;MApII,wBA0CG;IN60FP;IMnvFA;MApII,0BA0CG;INg1FP;IMtvFA;MApII,2BA0CG;INm1FP;IMzvFA;MApII,oBA0CG;INs1FP;IM5vFA;MApII,0BA0CG;INy1FP;IM/vFA;MApII,yBA0CG;IN41FP;IMlwFA;MApII,uBA0CG;IN+1FP;IMrwFA;MApII,yBA0CG;INk2FP;IMxwFA;MApII,uBA0CG;INq2FP;IM3wFA;MApII,uBA0CG;INw2FP;IM9wFA;MApII,yBA0CG;IN22FP;IMjxFA;MApII,0BA0CG;IN82FP;IMpxFA;MApII,mBA0CG;INi3FP;IMvxFA;MApII,yBA0CG;INo3FP;IM1xFA;MApII,wBA0CG;INu3FP;IM7xFA;MApII,sBA0CG;IN03FP;IMhyFA;MApII,wBA0CG;IN63FP;IMnyFA;MApII,sBA0CG;INg4FP;IMtyFA;MApII,sBA0CG;INm4FP;IMzyFA;MApII,4BA0CG;INs4FP;IM5yFA;MApII,6BA0CG;INy4FP;IM/yFA;MApII,sBA0CG;IN44FP;IMlzFA;MApII,4BA0CG;IN+4FP;IMrzFA;MApII,2BA0CG;INk5FP;IMxzFA;MApII,yBA0CG;INq5FP;IM3zFA;MApII,2BA0CG;INw5FP;IM9zFA;MApII,yBA0CG;IN25FP;IMj0FA;MApII,yBA0CG;IN85FP;IMp0FA;MApII,gBA0CG;INi6FP;IMv0FA;MApII,iBA0CG;INo6FP;IM10FA;MApII,UA0CG;INu6FP;IM70FA;MApII,gBA0CG;IN06FP;IMh1FA;MApII,eA0CG;IN66FP;IMn1FA;MApII,aA0CG;INg7FP;IMt1FA;MApII,eA0CG;INm7FP;IMz1FA;MApII,aA0CG;INs7FP;IM51FA;MApII,uBA0CG;INy7FP;IM/1FA;MApII,wBA0CG;IN47FP;IMl2FA;MApII,iBA0CG;IN+7FP;IMr2FA;MApII,uBA0CG;INk8FP;IMx2FA;MApII,sBA0CG;INq8FP;IM32FA;MApII,oBA0CG;INw8FP;IM92FA;MApII,sBA0CG;IN28FP;IMj3FA;MApII,oBA0CG;IN88FP;IMp3FA;MApII,sBA0CG;INi9FP;IMv3FA;MApII,uBA0CG;INo9FP;IM13FA;MApII,gBA0CG;INu9FP;IM73FA;MApII,sBA0CG;IN09FP;IMh4FA;MApII,qBA0CG;IN69FP;IMn4FA;MApII,mBA0CG;INg+FP;IMt4FA;MApII,qBA0CG;INm+FP;IMz4FA;MApII,mBA0CG;INs+FP;IM54FA;MApII,4BA0CG;INy+FP;IM/4FA;MApII,6BA0CG;IN4+FP;IMl5FA;MApII,sBA0CG;IN++FP;IMr5FA;MApII,4BA0CG;INk/FP;IMx5FA;MApII,2BA0CG;INq/FP;IM35FA;MApII,yBA0CG;INw/FP;IM95FA;MApII,2BA0CG;IN2/FP;IMj6FA;MApII,yBA0CG;IN8/FP;IMp6FA;MApII,2BA0CG;INigGP;IMv6FA;MApII,4BA0CG;INogGP;IM16FA;MApII,qBA0CG;INugGP;IM76FA;MApII,2BA0CG;IN0gGP;IMh7FA;MApII,0BA0CG;IN6gGP;IMn7FA;MApII,wBA0CG;INghGP;IMt7FA;MApII,0BA0CG;INmhGP;IMz7FA;MApII,wBA0CG;INshGP;IM57FA;MApII,0BA0CG;INyhGP;IM/7FA;MApII,2BA0CG;IN4hGP;IMl8FA;MApII,oBA0CG;IN+hGP;IMr8FA;MApII,0BA0CG;INkiGP;IMx8FA;MApII,yBA0CG;INqiGP;IM38FA;MApII,uBA0CG;INwiGP;IM98FA;MApII,yBA0CG;IN2iGP;IMj9FA;MApII,uBA0CG;IN8iGP;IMp9FA;MApII,6BA0CG;INijGP;IMv9FA;MApII,8BA0CG;INojGP;IM19FA;MApII,uBA0CG;INujGP;IM79FA;MApII,6BA0CG;IN0jGP;IMh+FA;MApII,4BA0CG;IN6jGP;IMn+FA;MApII,0BA0CG;INgkGP;IMt+FA;MApII,4BA0CG;INmkGP;IMz+FA;MApII,0BA0CG;INskGP;EACF;ECplGE;IKuGA;MApII,eA+CO;INskGX;IMj/FA;MApII,qBA+CO;INykGX;IMp/FA;MApII,cA+CO;IN4kGX;IMv/FA;MApII,aA+CO;IN+kGX;IM1/FA;MApII,oBA+CO;INklGX;IM7/FA;MApII,cA+CO;INqlGX;IMhgGA;MApII,kBA+CO;INwlGX;IMngGA;MApII,mBA+CO;IN2lGX;IMtgGA;MApII,aA+CO;IN8lGX;IMzgGA;MApII,oBA+CO;INimGX;IM5gGA;MApII,iBA+CO;INomGX;IM/gGA;MApII,kBA+CO;INumGX;IMlhGA;MApII,aA+CO;IN0mGX;IMrhGA;MApII,cA0CG;INknGP;IMxhGA;MApII,mBA+CO;INgnGX;IM3hGA;MApII,sBA+CO;INmnGX;IM9hGA;MApII,2BA+CO;INsnGX;IMjiGA;MApII,8BA+CO;INynGX;IMpiGA;MApII,YA0CG;INioGP;IMviGA;MApII,YA0CG;INooGP;IM1iGA;MApII,cA0CG;INuoGP;IM7iGA;MApII,cA0CG;IN0oGP;IMhjGA;MApII,eA+CO;INwoGX;IMnjGA;MApII,iBA+CO;IN2oGX;IMtjGA;MApII,uBA+CO;IN8oGX;IMzjGA;MApII,2BA0CG;INspGP;IM5jGA;MApII,yBA0CG;INypGP;IM/jGA;MApII,uBA0CG;IN4pGP;IMlkGA;MApII,8BA0CG;IN+pGP;IMrkGA;MApII,6BA0CG;INkqGP;IMxkGA;MApII,6BA0CG;INqqGP;IM3kGA;MApII,oBA0CG;INwqGP;IM9kGA;MApII,kBA0CG;IN2qGP;IMjlGA;MApII,qBA0CG;IN8qGP;IMplGA;MApII,sBA0CG;INirGP;IMvlGA;MApII,uBA0CG;INorGP;IM1lGA;MApII,qBA0CG;INurGP;IM7lGA;MApII,mBA0CG;IN0rGP;IMhmGA;MApII,qBA0CG;IN6rGP;IMnmGA;MApII,oBA0CG;INgsGP;IMtmGA;MApII,yBA0CG;INmsGP;IMzmGA;MApII,uBA0CG;INssGP;IM5mGA;MApII,qBA0CG;INysGP;IM/mGA;MApII,4BA0CG;IN4sGP;IMlnGA;MApII,2BA0CG;IN+sGP;IMrnGA;MApII,sBA0CG;INktGP;IMxnGA;MApII,gBA0CG;INqtGP;IM3nGA;MApII,sBA0CG;INwtGP;IM9nGA;MApII,oBA0CG;IN2tGP;IMjoGA;MApII,kBA0CG;IN8tGP;IMpoGA;MApII,oBA0CG;INiuGP;IMvoGA;MApII,mBA0CG;INouGP;IM1oGA;MApII,kBA0CG;INuuGP;IM7oGA;MApII,gBA0CG;IN0uGP;IMhpGA;MApII,mBA0CG;IN6uGP;IMnpGA;MApII,oBA0CG;INgvGP;IMtpGA;MApII,SA0CG;INmvGP;IMzpGA;MApII,QA0CG;INsvGP;IM5pGA;MApII,QA0CG;INyvGP;IM/pGA;MApII,QA0CG;IN4vGP;IMlqGA;MApII,QA0CG;IN+vGP;IMrqGA;MApII,QA0CG;INkwGP;IMxqGA;MApII,QA0CG;INqwGP;IM3qGA;MApII,QA0CG;INwwGP;IM9qGA;MApII,eA0CG;IN2wGP;IMjrGA;MApII,gBA0CG;IN8wGP;IMprGA;MApII,SA0CG;INixGP;IMvrGA;MApII,eA0CG;INoxGP;IM1rGA;MApII,cA0CG;INuxGP;IM7rGA;MApII,YA0CG;IN0xGP;IMhsGA;MApII,cA0CG;IN6xGP;IMnsGA;MApII,YA0CG;INgyGP;IMtsGA;MApII,YA0CG;INmyGP;IMzsGA;MApII,sBA0CG;INsyGP;IM5sGA;MApII,uBA0CG;INyyGP;IM/sGA;MApII,gBA0CG;IN4yGP;IMltGA;MApII,sBA0CG;IN+yGP;IMrtGA;MApII,qBA0CG;INkzGP;IMxtGA;MApII,mBA0CG;INqzGP;IM3tGA;MApII,qBA0CG;INwzGP;IM9tGA;MApII,mBA0CG;IN2zGP;IMjuGA;MApII,mBA0CG;IN8zGP;IMpuGA;MApII,qBA0CG;INi0GP;IMvuGA;MApII,sBA0CG;INo0GP;IM1uGA;MApII,eA0CG;INu0GP;IM7uGA;MApII,qBA0CG;IN00GP;IMhvGA;MApII,oBA0CG;IN60GP;IMnvGA;MApII,kBA0CG;INg1GP;IMtvGA;MApII,oBA0CG;INm1GP;IMzvGA;MApII,kBA0CG;INs1GP;IM5vGA;MApII,kBA0CG;INy1GP;IM/vGA;MApII,2BA0CG;IN41GP;IMlwGA;MApII,4BA0CG;IN+1GP;IMrwGA;MApII,qBA0CG;INk2GP;IMxwGA;MApII,2BA0CG;INq2GP;IM3wGA;MApII,0BA0CG;INw2GP;IM9wGA;MApII,wBA0CG;IN22GP;IMjxGA;MApII,0BA0CG;IN82GP;IMpxGA;MApII,wBA0CG;INi3GP;IMvxGA;MApII,wBA0CG;INo3GP;IM1xGA;MApII,0BA0CG;INu3GP;IM7xGA;MApII,2BA0CG;IN03GP;IMhyGA;MApII,oBA0CG;IN63GP;IMnyGA;MApII,0BA0CG;INg4GP;IMtyGA;MApII,yBA0CG;INm4GP;IMzyGA;MApII,uBA0CG;INs4GP;IM5yGA;MApII,yBA0CG;INy4GP;IM/yGA;MApII,uBA0CG;IN44GP;IMlzGA;MApII,uBA0CG;IN+4GP;IMrzGA;MApII,yBA0CG;INk5GP;IMxzGA;MApII,0BA0CG;INq5GP;IM3zGA;MApII,mBA0CG;INw5GP;IM9zGA;MApII,yBA0CG;IN25GP;IMj0GA;MApII,wBA0CG;IN85GP;IMp0GA;MApII,sBA0CG;INi6GP;IMv0GA;MApII,wBA0CG;INo6GP;IM10GA;MApII,sBA0CG;INu6GP;IM70GA;MApII,sBA0CG;IN06GP;IMh1GA;MApII,4BA0CG;IN66GP;IMn1GA;MApII,6BA0CG;INg7GP;IMt1GA;MApII,sBA0CG;INm7GP;IMz1GA;MApII,4BA0CG;INs7GP;IM51GA;MApII,2BA0CG;INy7GP;IM/1GA;MApII,yBA0CG;IN47GP;IMl2GA;MApII,2BA0CG;IN+7GP;IMr2GA;MApII,yBA0CG;INk8GP;IMx2GA;MApII,yBA0CG;INq8GP;IM32GA;MApII,gBA0CG;INw8GP;IM92GA;MApII,iBA0CG;IN28GP;IMj3GA;MApII,UA0CG;IN88GP;IMp3GA;MApII,gBA0CG;INi9GP;IMv3GA;MApII,eA0CG;INo9GP;IM13GA;MApII,aA0CG;INu9GP;IM73GA;MApII,eA0CG;IN09GP;IMh4GA;MApII,aA0CG;IN69GP;IMn4GA;MApII,uBA0CG;INg+GP;IMt4GA;MApII,wBA0CG;INm+GP;IMz4GA;MApII,iBA0CG;INs+GP;IM54GA;MApII,uBA0CG;INy+GP;IM/4GA;MApII,sBA0CG;IN4+GP;IMl5GA;MApII,oBA0CG;IN++GP;IMr5GA;MApII,sBA0CG;INk/GP;IMx5GA;MApII,oBA0CG;INq/GP;IM35GA;MApII,sBA0CG;INw/GP;IM95GA;MApII,uBA0CG;IN2/GP;IMj6GA;MApII,gBA0CG;IN8/GP;IMp6GA;MApII,sBA0CG;INigHP;IMv6GA;MApII,qBA0CG;INogHP;IM16GA;MApII,mBA0CG;INugHP;IM76GA;MApII,qBA0CG;IN0gHP;IMh7GA;MApII,mBA0CG;IN6gHP;IMn7GA;MApII,4BA0CG;INghHP;IMt7GA;MApII,6BA0CG;INmhHP;IMz7GA;MApII,sBA0CG;INshHP;IM57GA;MApII,4BA0CG;INyhHP;IM/7GA;MApII,2BA0CG;IN4hHP;IMl8GA;MApII,yBA0CG;IN+hHP;IMr8GA;MApII,2BA0CG;INkiHP;IMx8GA;MApII,yBA0CG;INqiHP;IM38GA;MApII,2BA0CG;INwiHP;IM98GA;MApII,4BA0CG;IN2iHP;IMj9GA;MApII,qBA0CG;IN8iHP;IMp9GA;MApII,2BA0CG;INijHP;IMv9GA;MApII,0BA0CG;INojHP;IM19GA;MApII,wBA0CG;INujHP;IM79GA;MApII,0BA0CG;IN0jHP;IMh+GA;MApII,wBA0CG;IN6jHP;IMn+GA;MApII,0BA0CG;INgkHP;IMt+GA;MApII,2BA0CG;INmkHP;IMz+GA;MApII,oBA0CG;INskHP;IM5+GA;MApII,0BA0CG;INykHP;IM/+GA;MApII,yBA0CG;IN4kHP;IMl/GA;MApII,uBA0CG;IN+kHP;IMr/GA;MApII,yBA0CG;INklHP;IMx/GA;MApII,uBA0CG;INqlHP;IM3/GA;MApII,6BA0CG;INwlHP;IM9/GA;MApII,8BA0CG;IN2lHP;IMjgHA;MApII,uBA0CG;IN8lHP;IMpgHA;MApII,6BA0CG;INimHP;IMvgHA;MApII,4BA0CG;INomHP;IM1gHA;MApII,0BA0CG;INumHP;IM7gHA;MApII,4BA0CG;IN0mHP;IMhhHA;MApII,0BA0CG;IN6mHP;EACF;EC3nHE;IKuGA;MApII,eA+CO;IN6mHX;IMxhHA;MApII,qBA+CO;INgnHX;IM3hHA;MApII,cA+CO;INmnHX;IM9hHA;MApII,aA+CO;INsnHX;IMjiHA;MApII,oBA+CO;INynHX;IMpiHA;MApII,cA+CO;IN4nHX;IMviHA;MApII,kBA+CO;IN+nHX;IM1iHA;MApII,mBA+CO;INkoHX;IM7iHA;MApII,aA+CO;INqoHX;IMhjHA;MApII,oBA+CO;INwoHX;IMnjHA;MApII,iBA+CO;IN2oHX;IMtjHA;MApII,kBA+CO;IN8oHX;IMzjHA;MApII,aA+CO;INipHX;IM5jHA;MApII,cA0CG;INypHP;IM/jHA;MApII,mBA+CO;INupHX;IMlkHA;MApII,sBA+CO;IN0pHX;IMrkHA;MApII,2BA+CO;IN6pHX;IMxkHA;MApII,8BA+CO;INgqHX;IM3kHA;MApII,YA0CG;INwqHP;IM9kHA;MApII,YA0CG;IN2qHP;IMjlHA;MApII,cA0CG;IN8qHP;IMplHA;MApII,cA0CG;INirHP;IMvlHA;MApII,eA+CO;IN+qHX;IM1lHA;MApII,iBA+CO;INkrHX;IM7lHA;MApII,uBA+CO;INqrHX;IMhmHA;MApII,2BA0CG;IN6rHP;IMnmHA;MApII,yBA0CG;INgsHP;IMtmHA;MApII,uBA0CG;INmsHP;IMzmHA;MApII,8BA0CG;INssHP;IM5mHA;MApII,6BA0CG;INysHP;IM/mHA;MApII,6BA0CG;IN4sHP;IMlnHA;MApII,oBA0CG;IN+sHP;IMrnHA;MApII,kBA0CG;INktHP;IMxnHA;MApII,qBA0CG;INqtHP;IM3nHA;MApII,sBA0CG;INwtHP;IM9nHA;MApII,uBA0CG;IN2tHP;IMjoHA;MApII,qBA0CG;IN8tHP;IMpoHA;MApII,mBA0CG;INiuHP;IMvoHA;MApII,qBA0CG;INouHP;IM1oHA;MApII,oBA0CG;INuuHP;IM7oHA;MApII,yBA0CG;IN0uHP;IMhpHA;MApII,uBA0CG;IN6uHP;IMnpHA;MApII,qBA0CG;INgvHP;IMtpHA;MApII,4BA0CG;INmvHP;IMzpHA;MApII,2BA0CG;INsvHP;IM5pHA;MApII,sBA0CG;INyvHP;IM/pHA;MApII,gBA0CG;IN4vHP;IMlqHA;MApII,sBA0CG;IN+vHP;IMrqHA;MApII,oBA0CG;INkwHP;IMxqHA;MApII,kBA0CG;INqwHP;IM3qHA;MApII,oBA0CG;INwwHP;IM9qHA;MApII,mBA0CG;IN2wHP;IMjrHA;MApII,kBA0CG;IN8wHP;IMprHA;MApII,gBA0CG;INixHP;IMvrHA;MApII,mBA0CG;INoxHP;IM1rHA;MApII,oBA0CG;INuxHP;IM7rHA;MApII,SA0CG;IN0xHP;IMhsHA;MApII,QA0CG;IN6xHP;IMnsHA;MApII,QA0CG;INgyHP;IMtsHA;MApII,QA0CG;INmyHP;IMzsHA;MApII,QA0CG;INsyHP;IM5sHA;MApII,QA0CG;INyyHP;IM/sHA;MApII,QA0CG;IN4yHP;IMltHA;MApII,QA0CG;IN+yHP;IMrtHA;MApII,eA0CG;INkzHP;IMxtHA;MApII,gBA0CG;INqzHP;IM3tHA;MApII,SA0CG;INwzHP;IM9tHA;MApII,eA0CG;IN2zHP;IMjuHA;MApII,cA0CG;IN8zHP;IMpuHA;MApII,YA0CG;INi0HP;IMvuHA;MApII,cA0CG;INo0HP;IM1uHA;MApII,YA0CG;INu0HP;IM7uHA;MApII,YA0CG;IN00HP;IMhvHA;MApII,sBA0CG;IN60HP;IMnvHA;MApII,uBA0CG;INg1HP;IMtvHA;MApII,gBA0CG;INm1HP;IMzvHA;MApII,sBA0CG;INs1HP;IM5vHA;MApII,qBA0CG;INy1HP;IM/vHA;MApII,mBA0CG;IN41HP;IMlwHA;MApII,qBA0CG;IN+1HP;IMrwHA;MApII,mBA0CG;INk2HP;IMxwHA;MApII,mBA0CG;INq2HP;IM3wHA;MApII,qBA0CG;INw2HP;IM9wHA;MApII,sBA0CG;IN22HP;IMjxHA;MApII,eA0CG;IN82HP;IMpxHA;MApII,qBA0CG;INi3HP;IMvxHA;MApII,oBA0CG;INo3HP;IM1xHA;MApII,kBA0CG;INu3HP;IM7xHA;MApII,oBA0CG;IN03HP;IMhyHA;MApII,kBA0CG;IN63HP;IMnyHA;MApII,kBA0CG;INg4HP;IMtyHA;MApII,2BA0CG;INm4HP;IMzyHA;MApII,4BA0CG;INs4HP;IM5yHA;MApII,qBA0CG;INy4HP;IM/yHA;MApII,2BA0CG;IN44HP;IMlzHA;MApII,0BA0CG;IN+4HP;IMrzHA;MApII,wBA0CG;INk5HP;IMxzHA;MApII,0BA0CG;INq5HP;IM3zHA;MApII,wBA0CG;INw5HP;IM9zHA;MApII,wBA0CG;IN25HP;IMj0HA;MApII,0BA0CG;IN85HP;IMp0HA;MApII,2BA0CG;INi6HP;IMv0HA;MApII,oBA0CG;INo6HP;IM10HA;MApII,0BA0CG;INu6HP;IM70HA;MApII,yBA0CG;IN06HP;IMh1HA;MApII,uBA0CG;IN66HP;IMn1HA;MApII,yBA0CG;INg7HP;IMt1HA;MApII,uBA0CG;INm7HP;IMz1HA;MApII,uBA0CG;INs7HP;IM51HA;MApII,yBA0CG;INy7HP;IM/1HA;MApII,0BA0CG;IN47HP;IMl2HA;MApII,mBA0CG;IN+7HP;IMr2HA;MApII,yBA0CG;INk8HP;IMx2HA;MApII,wBA0CG;INq8HP;IM32HA;MApII,sBA0CG;INw8HP;IM92HA;MApII,wBA0CG;IN28HP;IMj3HA;MApII,sBA0CG;IN88HP;IMp3HA;MApII,sBA0CG;INi9HP;IMv3HA;MApII,4BA0CG;INo9HP;IM13HA;MApII,6BA0CG;INu9HP;IM73HA;MApII,sBA0CG;IN09HP;IMh4HA;MApII,4BA0CG;IN69HP;IMn4HA;MApII,2BA0CG;INg+HP;IMt4HA;MApII,yBA0CG;INm+HP;IMz4HA;MApII,2BA0CG;INs+HP;IM54HA;MApII,yBA0CG;INy+HP;IM/4HA;MApII,yBA0CG;IN4+HP;IMl5HA;MApII,gBA0CG;IN++HP;IMr5HA;MApII,iBA0CG;INk/HP;IMx5HA;MApII,UA0CG;INq/HP;IM35HA;MApII,gBA0CG;INw/HP;IM95HA;MApII,eA0CG;IN2/HP;IMj6HA;MApII,aA0CG;IN8/HP;IMp6HA;MApII,eA0CG;INigIP;IMv6HA;MApII,aA0CG;INogIP;IM16HA;MApII,uBA0CG;INugIP;IM76HA;MApII,wBA0CG;IN0gIP;IMh7HA;MApII,iBA0CG;IN6gIP;IMn7HA;MApII,uBA0CG;INghIP;IMt7HA;MApII,sBA0CG;INmhIP;IMz7HA;MApII,oBA0CG;INshIP;IM57HA;MApII,sBA0CG;INyhIP;IM/7HA;MApII,oBA0CG;IN4hIP;IMl8HA;MApII,sBA0CG;IN+hIP;IMr8HA;MApII,uBA0CG;INkiIP;IMx8HA;MApII,gBA0CG;INqiIP;IM38HA;MApII,sBA0CG;INwiIP;IM98HA;MApII,qBA0CG;IN2iIP;IMj9HA;MApII,mBA0CG;IN8iIP;IMp9HA;MApII,qBA0CG;INijIP;IMv9HA;MApII,mBA0CG;INojIP;IM19HA;MApII,4BA0CG;INujIP;IM79HA;MApII,6BA0CG;IN0jIP;IMh+HA;MApII,sBA0CG;IN6jIP;IMn+HA;MApII,4BA0CG;INgkIP;IMt+HA;MApII,2BA0CG;INmkIP;IMz+HA;MApII,yBA0CG;INskIP;IM5+HA;MApII,2BA0CG;INykIP;IM/+HA;MApII,yBA0CG;IN4kIP;IMl/HA;MApII,2BA0CG;IN+kIP;IMr/HA;MApII,4BA0CG;INklIP;IMx/HA;MApII,qBA0CG;INqlIP;IM3/HA;MApII,2BA0CG;INwlIP;IM9/HA;MApII,0BA0CG;IN2lIP;IMjgIA;MApII,wBA0CG;IN8lIP;IMpgIA;MApII,0BA0CG;INimIP;IMvgIA;MApII,wBA0CG;INomIP;IM1gIA;MApII,0BA0CG;INumIP;IM7gIA;MApII,2BA0CG;IN0mIP;IMhhIA;MApII,oBA0CG;IN6mIP;IMnhIA;MApII,0BA0CG;INgnIP;IMthIA;MApII,yBA0CG;INmnIP;IMzhIA;MApII,uBA0CG;INsnIP;IM5hIA;MApII,yBA0CG;INynIP;IM/hIA;MApII,uBA0CG;IN4nIP;IMliIA;MApII,6BA0CG;IN+nIP;IMriIA;MApII,8BA0CG;INkoIP;IMxiIA;MApII,uBA0CG;INqoIP;IM3iIA;MApII,6BA0CG;INwoIP;IM9iIA;MApII,4BA0CG;IN2oIP;IMjjIA;MApII,0BA0CG;IN8oIP;IMpjIA;MApII,4BA0CG;INipIP;IMvjIA;MApII,0BA0CG;INopIP;EACF;EClqIE;IKuGA;MApII,eA+CO;INopIX;IM/jIA;MApII,qBA+CO;INupIX;IMlkIA;MApII,cA+CO;IN0pIX;IMrkIA;MApII,aA+CO;IN6pIX;IMxkIA;MApII,oBA+CO;INgqIX;IM3kIA;MApII,cA+CO;INmqIX;IM9kIA;MApII,kBA+CO;INsqIX;IMjlIA;MApII,mBA+CO;INyqIX;IMplIA;MApII,aA+CO;IN4qIX;IMvlIA;MApII,oBA+CO;IN+qIX;IM1lIA;MApII,iBA+CO;INkrIX;IM7lIA;MApII,kBA+CO;INqrIX;IMhmIA;MApII,aA+CO;INwrIX;IMnmIA;MApII,cA0CG;INgsIP;IMtmIA;MApII,mBA+CO;IN8rIX;IMzmIA;MApII,sBA+CO;INisIX;IM5mIA;MApII,2BA+CO;INosIX;IM/mIA;MApII,8BA+CO;INusIX;IMlnIA;MApII,YA0CG;IN+sIP;IMrnIA;MApII,YA0CG;INktIP;IMxnIA;MApII,cA0CG;INqtIP;IM3nIA;MApII,cA0CG;INwtIP;IM9nIA;MApII,eA+CO;INstIX;IMjoIA;MApII,iBA+CO;INytIX;IMpoIA;MApII,uBA+CO;IN4tIX;IMvoIA;MApII,2BA0CG;INouIP;IM1oIA;MApII,yBA0CG;INuuIP;IM7oIA;MApII,uBA0CG;IN0uIP;IMhpIA;MApII,8BA0CG;IN6uIP;IMnpIA;MApII,6BA0CG;INgvIP;IMtpIA;MApII,6BA0CG;INmvIP;IMzpIA;MApII,oBA0CG;INsvIP;IM5pIA;MApII,kBA0CG;INyvIP;IM/pIA;MApII,qBA0CG;IN4vIP;IMlqIA;MApII,sBA0CG;IN+vIP;IMrqIA;MApII,uBA0CG;INkwIP;IMxqIA;MApII,qBA0CG;INqwIP;IM3qIA;MApII,mBA0CG;INwwIP;IM9qIA;MApII,qBA0CG;IN2wIP;IMjrIA;MApII,oBA0CG;IN8wIP;IMprIA;MApII,yBA0CG;INixIP;IMvrIA;MApII,uBA0CG;INoxIP;IM1rIA;MApII,qBA0CG;INuxIP;IM7rIA;MApII,4BA0CG;IN0xIP;IMhsIA;MApII,2BA0CG;IN6xIP;IMnsIA;MApII,sBA0CG;INgyIP;IMtsIA;MApII,gBA0CG;INmyIP;IMzsIA;MApII,sBA0CG;INsyIP;IM5sIA;MApII,oBA0CG;INyyIP;IM/sIA;MApII,kBA0CG;IN4yIP;IMltIA;MApII,oBA0CG;IN+yIP;IMrtIA;MApII,mBA0CG;INkzIP;IMxtIA;MApII,kBA0CG;INqzIP;IM3tIA;MApII,gBA0CG;INwzIP;IM9tIA;MApII,mBA0CG;IN2zIP;IMjuIA;MApII,oBA0CG;IN8zIP;IMpuIA;MApII,SA0CG;INi0IP;IMvuIA;MApII,QA0CG;INo0IP;IM1uIA;MApII,QA0CG;INu0IP;IM7uIA;MApII,QA0CG;IN00IP;IMhvIA;MApII,QA0CG;IN60IP;IMnvIA;MApII,QA0CG;INg1IP;IMtvIA;MApII,QA0CG;INm1IP;IMzvIA;MApII,QA0CG;INs1IP;IM5vIA;MApII,eA0CG;INy1IP;IM/vIA;MApII,gBA0CG;IN41IP;IMlwIA;MApII,SA0CG;IN+1IP;IMrwIA;MApII,eA0CG;INk2IP;IMxwIA;MApII,cA0CG;INq2IP;IM3wIA;MApII,YA0CG;INw2IP;IM9wIA;MApII,cA0CG;IN22IP;IMjxIA;MApII,YA0CG;IN82IP;IMpxIA;MApII,YA0CG;INi3IP;IMvxIA;MApII,sBA0CG;INo3IP;IM1xIA;MApII,uBA0CG;INu3IP;IM7xIA;MApII,gBA0CG;IN03IP;IMhyIA;MApII,sBA0CG;IN63IP;IMnyIA;MApII,qBA0CG;INg4IP;IMtyIA;MApII,mBA0CG;INm4IP;IMzyIA;MApII,qBA0CG;INs4IP;IM5yIA;MApII,mBA0CG;INy4IP;IM/yIA;MApII,mBA0CG;IN44IP;IMlzIA;MApII,qBA0CG;IN+4IP;IMrzIA;MApII,sBA0CG;INk5IP;IMxzIA;MApII,eA0CG;INq5IP;IM3zIA;MApII,qBA0CG;INw5IP;IM9zIA;MApII,oBA0CG;IN25IP;IMj0IA;MApII,kBA0CG;IN85IP;IMp0IA;MApII,oBA0CG;INi6IP;IMv0IA;MApII,kBA0CG;INo6IP;IM10IA;MApII,kBA0CG;INu6IP;IM70IA;MApII,2BA0CG;IN06IP;IMh1IA;MApII,4BA0CG;IN66IP;IMn1IA;MApII,qBA0CG;INg7IP;IMt1IA;MApII,2BA0CG;INm7IP;IMz1IA;MApII,0BA0CG;INs7IP;IM51IA;MApII,wBA0CG;INy7IP;IM/1IA;MApII,0BA0CG;IN47IP;IMl2IA;MApII,wBA0CG;IN+7IP;IMr2IA;MApII,wBA0CG;INk8IP;IMx2IA;MApII,0BA0CG;INq8IP;IM32IA;MApII,2BA0CG;INw8IP;IM92IA;MApII,oBA0CG;IN28IP;IMj3IA;MApII,0BA0CG;IN88IP;IMp3IA;MApII,yBA0CG;INi9IP;IMv3IA;MApII,uBA0CG;INo9IP;IM13IA;MApII,yBA0CG;INu9IP;IM73IA;MApII,uBA0CG;IN09IP;IMh4IA;MApII,uBA0CG;IN69IP;IMn4IA;MApII,yBA0CG;INg+IP;IMt4IA;MApII,0BA0CG;INm+IP;IMz4IA;MApII,mBA0CG;INs+IP;IM54IA;MApII,yBA0CG;INy+IP;IM/4IA;MApII,wBA0CG;IN4+IP;IMl5IA;MApII,sBA0CG;IN++IP;IMr5IA;MApII,wBA0CG;INk/IP;IMx5IA;MApII,sBA0CG;INq/IP;IM35IA;MApII,sBA0CG;INw/IP;IM95IA;MApII,4BA0CG;IN2/IP;IMj6IA;MApII,6BA0CG;IN8/IP;IMp6IA;MApII,sBA0CG;INigJP;IMv6IA;MApII,4BA0CG;INogJP;IM16IA;MApII,2BA0CG;INugJP;IM76IA;MApII,yBA0CG;IN0gJP;IMh7IA;MApII,2BA0CG;IN6gJP;IMn7IA;MApII,yBA0CG;INghJP;IMt7IA;MApII,yBA0CG;INmhJP;IMz7IA;MApII,gBA0CG;INshJP;IM57IA;MApII,iBA0CG;INyhJP;IM/7IA;MApII,UA0CG;IN4hJP;IMl8IA;MApII,gBA0CG;IN+hJP;IMr8IA;MApII,eA0CG;INkiJP;IMx8IA;MApII,aA0CG;INqiJP;IM38IA;MApII,eA0CG;INwiJP;IM98IA;MApII,aA0CG;IN2iJP;IMj9IA;MApII,uBA0CG;IN8iJP;IMp9IA;MApII,wBA0CG;INijJP;IMv9IA;MApII,iBA0CG;INojJP;IM19IA;MApII,uBA0CG;INujJP;IM79IA;MApII,sBA0CG;IN0jJP;IMh+IA;MApII,oBA0CG;IN6jJP;IMn+IA;MApII,sBA0CG;INgkJP;IMt+IA;MApII,oBA0CG;INmkJP;IMz+IA;MApII,sBA0CG;INskJP;IM5+IA;MApII,uBA0CG;INykJP;IM/+IA;MApII,gBA0CG;IN4kJP;IMl/IA;MApII,sBA0CG;IN+kJP;IMr/IA;MApII,qBA0CG;INklJP;IMx/IA;MApII,mBA0CG;INqlJP;IM3/IA;MApII,qBA0CG;INwlJP;IM9/IA;MApII,mBA0CG;IN2lJP;IMjgJA;MApII,4BA0CG;IN8lJP;IMpgJA;MApII,6BA0CG;INimJP;IMvgJA;MApII,sBA0CG;INomJP;IM1gJA;MApII,4BA0CG;INumJP;IM7gJA;MApII,2BA0CG;IN0mJP;IMhhJA;MApII,yBA0CG;IN6mJP;IMnhJA;MApII,2BA0CG;INgnJP;IMthJA;MApII,yBA0CG;INmnJP;IMzhJA;MApII,2BA0CG;INsnJP;IM5hJA;MApII,4BA0CG;INynJP;IM/hJA;MApII,qBA0CG;IN4nJP;IMliJA;MApII,2BA0CG;IN+nJP;IMriJA;MApII,0BA0CG;INkoJP;IMxiJA;MApII,wBA0CG;INqoJP;IM3iJA;MApII,0BA0CG;INwoJP;IM9iJA;MApII,wBA0CG;IN2oJP;IMjjJA;MApII,0BA0CG;IN8oJP;IMpjJA;MApII,2BA0CG;INipJP;IMvjJA;MApII,oBA0CG;INopJP;IM1jJA;MApII,0BA0CG;INupJP;IM7jJA;MApII,yBA0CG;IN0pJP;IMhkJA;MApII,uBA0CG;IN6pJP;IMnkJA;MApII,yBA0CG;INgqJP;IMtkJA;MApII,uBA0CG;INmqJP;IMzkJA;MApII,6BA0CG;INsqJP;IM5kJA;MApII,8BA0CG;INyqJP;IM/kJA;MApII,uBA0CG;IN4qJP;IMllJA;MApII,6BA0CG;IN+qJP;IMrlJA;MApII,4BA0CG;INkrJP;IMxlJA;MApII,0BA0CG;INqrJP;IM3lJA;MApII,4BA0CG;INwrJP;IM9lJA;MApII,0BA0CG;IN2rJP;EACF;AACF;AO1vJA;EAEI,qBAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,0BAAA;EAAA,0BAAA;EAAA,2BAAA;APgwJJ","file":"bootstrap-grid.css","sourcesContent":["$file: \"\" !default;\n\n/*!\n  * Bootstrap #{$file} v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n","@use \"../config\" as *;\n@use \"breakpoints\" as *;\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n  --gutter-x: #{$gutter};\n  --gutter-y: 0;\n  width: 100%;\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-inline: auto;\n}\n\n@layer layout {\n  @if $enable-container-classes {\n    // Single container class with breakpoint max-widths\n    .container,\n    // 100% wide container at all breakpoints\n    .container-fluid {\n      @include make-container();\n    }\n\n    // Responsive containers that are 100% wide until a breakpoint\n    @each $breakpoint, $container-max-width in $container-max-widths {\n      .container-#{$breakpoint} {\n        @extend .container-fluid;\n      }\n\n      @include media-breakpoint-up($breakpoint, $breakpoints) {\n        // Extend each breakpoint which is smaller or equal to the current breakpoint\n        $extend-breakpoint: true;\n\n        %responsive-container-#{$breakpoint} {\n          max-width: $container-max-width;\n        }\n\n        @each $name, $width in $breakpoints {\n          @if ($extend-breakpoint) {\n            .container#{breakpoint-infix($name, $breakpoints)} {\n              @extend %responsive-container-#{$breakpoint};\n            }\n\n            // Once the current breakpoint is reached, stop extending\n            @if ($breakpoint == $name) {\n              $extend-breakpoint: false;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","/*!\n  * Bootstrap Grid v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n@layer layout {\n  .container,\n  .container-fluid,\n  .container-2xl,\n  .container-xl,\n  .container-lg,\n  .container-md,\n  .container-sm {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-inline: auto;\n  }\n  @media (width >= 576px) {\n    .container-sm, .container {\n      max-width: 540px;\n    }\n  }\n  @media (width >= 768px) {\n    .container-md, .container-sm, .container {\n      max-width: 720px;\n    }\n  }\n  @media (width >= 1024px) {\n    .container-lg, .container-md, .container-sm, .container {\n      max-width: 960px;\n    }\n  }\n  @media (width >= 1280px) {\n    .container-xl, .container-lg, .container-md, .container-sm, .container {\n      max-width: 1200px;\n    }\n  }\n  @media (width >= 1536px) {\n    .container-2xl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n      max-width: 1440px;\n    }\n  }\n}\n@layer layout {\n  .row {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    display: flex;\n    flex-wrap: wrap;\n    margin-inline: calc(-0.5 * var(--gutter-x));\n    margin-top: calc(-1 * var(--gutter-y));\n  }\n  .row > * {\n    flex-shrink: 0;\n    width: 100%;\n    max-width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-top: var(--gutter-y);\n  }\n  .col {\n    flex: 1 0 0;\n  }\n  .row-cols-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .row-cols-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .row-cols-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .row-cols-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .row-cols-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .row-cols-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n  .row-cols-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .col-1 {\n    flex: 0 0 auto;\n    width: 8.3333333333%;\n  }\n  .col-2 {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .col-4 {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .col-5 {\n    flex: 0 0 auto;\n    width: 41.6666666667%;\n  }\n  .col-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .col-7 {\n    flex: 0 0 auto;\n    width: 58.3333333333%;\n  }\n  .col-8 {\n    flex: 0 0 auto;\n    width: 66.6666666667%;\n  }\n  .col-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n  .col-10 {\n    flex: 0 0 auto;\n    width: 83.3333333333%;\n  }\n  .col-11 {\n    flex: 0 0 auto;\n    width: 91.6666666667%;\n  }\n  .col-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .offset-1 {\n    margin-inline-start: 8.3333333333%;\n  }\n  .offset-2 {\n    margin-inline-start: 16.6666666667%;\n  }\n  .offset-3 {\n    margin-inline-start: 25%;\n  }\n  .offset-4 {\n    margin-inline-start: 33.3333333333%;\n  }\n  .offset-5 {\n    margin-inline-start: 41.6666666667%;\n  }\n  .offset-6 {\n    margin-inline-start: 50%;\n  }\n  .offset-7 {\n    margin-inline-start: 58.3333333333%;\n  }\n  .offset-8 {\n    margin-inline-start: 66.6666666667%;\n  }\n  .offset-9 {\n    margin-inline-start: 75%;\n  }\n  .offset-10 {\n    margin-inline-start: 83.3333333333%;\n  }\n  .offset-11 {\n    margin-inline-start: 91.6666666667%;\n  }\n  .g--2,\n  .gx--2 {\n    --gutter-x: -0.5rem;\n  }\n  .g--2,\n  .gy--2 {\n    --gutter-y: -0.5rem;\n  }\n  .g--1,\n  .gx--1 {\n    --gutter-x: -0.25rem;\n  }\n  .g--1,\n  .gy--1 {\n    --gutter-y: -0.25rem;\n  }\n  .g-0,\n  .gx-0 {\n    --gutter-x: 0;\n  }\n  .g-0,\n  .gy-0 {\n    --gutter-y: 0;\n  }\n  .g-1,\n  .gx-1 {\n    --gutter-x: 0.25rem;\n  }\n  .g-1,\n  .gy-1 {\n    --gutter-y: 0.25rem;\n  }\n  .g-2,\n  .gx-2 {\n    --gutter-x: 0.5rem;\n  }\n  .g-2,\n  .gy-2 {\n    --gutter-y: 0.5rem;\n  }\n  .g-3,\n  .gx-3 {\n    --gutter-x: 1rem;\n  }\n  .g-3,\n  .gy-3 {\n    --gutter-y: 1rem;\n  }\n  .g-4,\n  .gx-4 {\n    --gutter-x: 1.5rem;\n  }\n  .g-4,\n  .gy-4 {\n    --gutter-y: 1.5rem;\n  }\n  .g-5,\n  .gx-5 {\n    --gutter-x: 3rem;\n  }\n  .g-5,\n  .gy-5 {\n    --gutter-y: 3rem;\n  }\n  @media (width >= 576px) {\n    .col-sm {\n      flex: 1 0 0;\n    }\n    .row-cols-sm-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-sm-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-sm-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-sm-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-sm-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-sm-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-sm-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-sm-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-sm-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-sm-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-sm-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-sm-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-sm-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-sm-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-sm-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-sm-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-sm-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-sm-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-sm-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-sm-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-sm-0 {\n      margin-inline-start: 0;\n    }\n    .offset-sm-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-sm-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-sm-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-sm-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-sm-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-sm-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-sm-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-sm-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-sm-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-sm-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-sm-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-sm--2,\n    .gx-sm--2 {\n      --gutter-x: -0.5rem;\n    }\n    .g-sm--2,\n    .gy-sm--2 {\n      --gutter-y: -0.5rem;\n    }\n    .g-sm--1,\n    .gx-sm--1 {\n      --gutter-x: -0.25rem;\n    }\n    .g-sm--1,\n    .gy-sm--1 {\n      --gutter-y: -0.25rem;\n    }\n    .g-sm-0,\n    .gx-sm-0 {\n      --gutter-x: 0;\n    }\n    .g-sm-0,\n    .gy-sm-0 {\n      --gutter-y: 0;\n    }\n    .g-sm-1,\n    .gx-sm-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-sm-1,\n    .gy-sm-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-sm-2,\n    .gx-sm-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-sm-2,\n    .gy-sm-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-sm-3,\n    .gx-sm-3 {\n      --gutter-x: 1rem;\n    }\n    .g-sm-3,\n    .gy-sm-3 {\n      --gutter-y: 1rem;\n    }\n    .g-sm-4,\n    .gx-sm-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-sm-4,\n    .gy-sm-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-sm-5,\n    .gx-sm-5 {\n      --gutter-x: 3rem;\n    }\n    .g-sm-5,\n    .gy-sm-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 768px) {\n    .col-md {\n      flex: 1 0 0;\n    }\n    .row-cols-md-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-md-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-md-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-md-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-md-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-md-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-md-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-md-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-md-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-md-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-md-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-md-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-md-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-md-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-md-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-md-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-md-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-md-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-md-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-md-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-md-0 {\n      margin-inline-start: 0;\n    }\n    .offset-md-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-md-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-md-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-md-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-md-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-md-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-md-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-md-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-md-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-md-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-md-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-md--2,\n    .gx-md--2 {\n      --gutter-x: -0.5rem;\n    }\n    .g-md--2,\n    .gy-md--2 {\n      --gutter-y: -0.5rem;\n    }\n    .g-md--1,\n    .gx-md--1 {\n      --gutter-x: -0.25rem;\n    }\n    .g-md--1,\n    .gy-md--1 {\n      --gutter-y: -0.25rem;\n    }\n    .g-md-0,\n    .gx-md-0 {\n      --gutter-x: 0;\n    }\n    .g-md-0,\n    .gy-md-0 {\n      --gutter-y: 0;\n    }\n    .g-md-1,\n    .gx-md-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-md-1,\n    .gy-md-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-md-2,\n    .gx-md-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-md-2,\n    .gy-md-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-md-3,\n    .gx-md-3 {\n      --gutter-x: 1rem;\n    }\n    .g-md-3,\n    .gy-md-3 {\n      --gutter-y: 1rem;\n    }\n    .g-md-4,\n    .gx-md-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-md-4,\n    .gy-md-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-md-5,\n    .gx-md-5 {\n      --gutter-x: 3rem;\n    }\n    .g-md-5,\n    .gy-md-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1024px) {\n    .col-lg {\n      flex: 1 0 0;\n    }\n    .row-cols-lg-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-lg-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-lg-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-lg-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-lg-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-lg-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-lg-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-lg-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-lg-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-lg-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-lg-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-lg-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-lg-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-lg-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-lg-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-lg-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-lg-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-lg-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-lg-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-lg-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-lg-0 {\n      margin-inline-start: 0;\n    }\n    .offset-lg-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-lg-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-lg-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-lg-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-lg-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-lg-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-lg-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-lg-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-lg-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-lg-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-lg-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-lg--2,\n    .gx-lg--2 {\n      --gutter-x: -0.5rem;\n    }\n    .g-lg--2,\n    .gy-lg--2 {\n      --gutter-y: -0.5rem;\n    }\n    .g-lg--1,\n    .gx-lg--1 {\n      --gutter-x: -0.25rem;\n    }\n    .g-lg--1,\n    .gy-lg--1 {\n      --gutter-y: -0.25rem;\n    }\n    .g-lg-0,\n    .gx-lg-0 {\n      --gutter-x: 0;\n    }\n    .g-lg-0,\n    .gy-lg-0 {\n      --gutter-y: 0;\n    }\n    .g-lg-1,\n    .gx-lg-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-lg-1,\n    .gy-lg-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-lg-2,\n    .gx-lg-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-lg-2,\n    .gy-lg-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-lg-3,\n    .gx-lg-3 {\n      --gutter-x: 1rem;\n    }\n    .g-lg-3,\n    .gy-lg-3 {\n      --gutter-y: 1rem;\n    }\n    .g-lg-4,\n    .gx-lg-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-lg-4,\n    .gy-lg-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-lg-5,\n    .gx-lg-5 {\n      --gutter-x: 3rem;\n    }\n    .g-lg-5,\n    .gy-lg-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1280px) {\n    .col-xl {\n      flex: 1 0 0;\n    }\n    .row-cols-xl-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-xl-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-xl-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-xl-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-xl-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-xl-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-xl-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-xl-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-xl-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-xl-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-xl-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-xl-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-xl-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-xl-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-xl-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-xl-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-xl-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-xl-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-xl-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-xl-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-xl-0 {\n      margin-inline-start: 0;\n    }\n    .offset-xl-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-xl-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-xl-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-xl-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-xl-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-xl-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-xl-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-xl-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-xl-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-xl-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-xl-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-xl--2,\n    .gx-xl--2 {\n      --gutter-x: -0.5rem;\n    }\n    .g-xl--2,\n    .gy-xl--2 {\n      --gutter-y: -0.5rem;\n    }\n    .g-xl--1,\n    .gx-xl--1 {\n      --gutter-x: -0.25rem;\n    }\n    .g-xl--1,\n    .gy-xl--1 {\n      --gutter-y: -0.25rem;\n    }\n    .g-xl-0,\n    .gx-xl-0 {\n      --gutter-x: 0;\n    }\n    .g-xl-0,\n    .gy-xl-0 {\n      --gutter-y: 0;\n    }\n    .g-xl-1,\n    .gx-xl-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-xl-1,\n    .gy-xl-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-xl-2,\n    .gx-xl-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-xl-2,\n    .gy-xl-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-xl-3,\n    .gx-xl-3 {\n      --gutter-x: 1rem;\n    }\n    .g-xl-3,\n    .gy-xl-3 {\n      --gutter-y: 1rem;\n    }\n    .g-xl-4,\n    .gx-xl-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-xl-4,\n    .gy-xl-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-xl-5,\n    .gx-xl-5 {\n      --gutter-x: 3rem;\n    }\n    .g-xl-5,\n    .gy-xl-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1536px) {\n    .col-2xl {\n      flex: 1 0 0;\n    }\n    .row-cols-2xl-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-2xl-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-2xl-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-2xl-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-2xl-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-2xl-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-2xl-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-2xl-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-2xl-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-2xl-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-2xl-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-2xl-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-2xl-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-2xl-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-2xl-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-2xl-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-2xl-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-2xl-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-2xl-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-2xl-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-2xl-0 {\n      margin-inline-start: 0;\n    }\n    .offset-2xl-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-2xl-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-2xl-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-2xl-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-2xl-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-2xl-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-2xl-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-2xl-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-2xl-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-2xl-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-2xl-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-2xl--2,\n    .gx-2xl--2 {\n      --gutter-x: -0.5rem;\n    }\n    .g-2xl--2,\n    .gy-2xl--2 {\n      --gutter-y: -0.5rem;\n    }\n    .g-2xl--1,\n    .gx-2xl--1 {\n      --gutter-x: -0.25rem;\n    }\n    .g-2xl--1,\n    .gy-2xl--1 {\n      --gutter-y: -0.25rem;\n    }\n    .g-2xl-0,\n    .gx-2xl-0 {\n      --gutter-x: 0;\n    }\n    .g-2xl-0,\n    .gy-2xl-0 {\n      --gutter-y: 0;\n    }\n    .g-2xl-1,\n    .gx-2xl-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-2xl-1,\n    .gy-2xl-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-2xl-2,\n    .gx-2xl-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-2xl-2,\n    .gy-2xl-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-2xl-3,\n    .gx-2xl-3 {\n      --gutter-x: 1rem;\n    }\n    .g-2xl-3,\n    .gy-2xl-3 {\n      --gutter-y: 1rem;\n    }\n    .g-2xl-4,\n    .gx-2xl-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-2xl-4,\n    .gy-2xl-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-2xl-5,\n    .gx-2xl-5 {\n      --gutter-x: 3rem;\n    }\n    .g-2xl-5,\n    .gy-2xl-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  .grid {\n    --columns: 12;\n    --rows: 1;\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-rows: repeat(var(--rows), 1fr);\n    grid-template-columns: repeat(var(--columns), 1fr);\n    gap: var(--gap);\n  }\n  .g-col-1 {\n    grid-column: auto/span 1;\n  }\n  .g-col-2 {\n    grid-column: auto/span 2;\n  }\n  .g-col-3 {\n    grid-column: auto/span 3;\n  }\n  .g-col-4 {\n    grid-column: auto/span 4;\n  }\n  .g-col-5 {\n    grid-column: auto/span 5;\n  }\n  .g-col-6 {\n    grid-column: auto/span 6;\n  }\n  .g-col-7 {\n    grid-column: auto/span 7;\n  }\n  .g-col-8 {\n    grid-column: auto/span 8;\n  }\n  .g-col-9 {\n    grid-column: auto/span 9;\n  }\n  .g-col-10 {\n    grid-column: auto/span 10;\n  }\n  .g-col-11 {\n    grid-column: auto/span 11;\n  }\n  .g-col-12 {\n    grid-column: auto/span 12;\n  }\n  .g-start-1 {\n    grid-column-start: 1;\n  }\n  .g-start-2 {\n    grid-column-start: 2;\n  }\n  .g-start-3 {\n    grid-column-start: 3;\n  }\n  .g-start-4 {\n    grid-column-start: 4;\n  }\n  .g-start-5 {\n    grid-column-start: 5;\n  }\n  .g-start-6 {\n    grid-column-start: 6;\n  }\n  .g-start-7 {\n    grid-column-start: 7;\n  }\n  .g-start-8 {\n    grid-column-start: 8;\n  }\n  .g-start-9 {\n    grid-column-start: 9;\n  }\n  .g-start-10 {\n    grid-column-start: 10;\n  }\n  .g-start-11 {\n    grid-column-start: 11;\n  }\n  @media (width >= 576px) {\n    .g-col-sm-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-sm-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-sm-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-sm-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-sm-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-sm-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-sm-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-sm-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-sm-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-sm-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-sm-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-sm-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-sm-1 {\n      grid-column-start: 1;\n    }\n    .g-start-sm-2 {\n      grid-column-start: 2;\n    }\n    .g-start-sm-3 {\n      grid-column-start: 3;\n    }\n    .g-start-sm-4 {\n      grid-column-start: 4;\n    }\n    .g-start-sm-5 {\n      grid-column-start: 5;\n    }\n    .g-start-sm-6 {\n      grid-column-start: 6;\n    }\n    .g-start-sm-7 {\n      grid-column-start: 7;\n    }\n    .g-start-sm-8 {\n      grid-column-start: 8;\n    }\n    .g-start-sm-9 {\n      grid-column-start: 9;\n    }\n    .g-start-sm-10 {\n      grid-column-start: 10;\n    }\n    .g-start-sm-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 768px) {\n    .g-col-md-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-md-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-md-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-md-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-md-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-md-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-md-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-md-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-md-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-md-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-md-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-md-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-md-1 {\n      grid-column-start: 1;\n    }\n    .g-start-md-2 {\n      grid-column-start: 2;\n    }\n    .g-start-md-3 {\n      grid-column-start: 3;\n    }\n    .g-start-md-4 {\n      grid-column-start: 4;\n    }\n    .g-start-md-5 {\n      grid-column-start: 5;\n    }\n    .g-start-md-6 {\n      grid-column-start: 6;\n    }\n    .g-start-md-7 {\n      grid-column-start: 7;\n    }\n    .g-start-md-8 {\n      grid-column-start: 8;\n    }\n    .g-start-md-9 {\n      grid-column-start: 9;\n    }\n    .g-start-md-10 {\n      grid-column-start: 10;\n    }\n    .g-start-md-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1024px) {\n    .g-col-lg-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-lg-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-lg-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-lg-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-lg-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-lg-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-lg-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-lg-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-lg-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-lg-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-lg-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-lg-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-lg-1 {\n      grid-column-start: 1;\n    }\n    .g-start-lg-2 {\n      grid-column-start: 2;\n    }\n    .g-start-lg-3 {\n      grid-column-start: 3;\n    }\n    .g-start-lg-4 {\n      grid-column-start: 4;\n    }\n    .g-start-lg-5 {\n      grid-column-start: 5;\n    }\n    .g-start-lg-6 {\n      grid-column-start: 6;\n    }\n    .g-start-lg-7 {\n      grid-column-start: 7;\n    }\n    .g-start-lg-8 {\n      grid-column-start: 8;\n    }\n    .g-start-lg-9 {\n      grid-column-start: 9;\n    }\n    .g-start-lg-10 {\n      grid-column-start: 10;\n    }\n    .g-start-lg-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1280px) {\n    .g-col-xl-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-xl-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-xl-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-xl-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-xl-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-xl-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-xl-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-xl-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-xl-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-xl-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-xl-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-xl-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-xl-1 {\n      grid-column-start: 1;\n    }\n    .g-start-xl-2 {\n      grid-column-start: 2;\n    }\n    .g-start-xl-3 {\n      grid-column-start: 3;\n    }\n    .g-start-xl-4 {\n      grid-column-start: 4;\n    }\n    .g-start-xl-5 {\n      grid-column-start: 5;\n    }\n    .g-start-xl-6 {\n      grid-column-start: 6;\n    }\n    .g-start-xl-7 {\n      grid-column-start: 7;\n    }\n    .g-start-xl-8 {\n      grid-column-start: 8;\n    }\n    .g-start-xl-9 {\n      grid-column-start: 9;\n    }\n    .g-start-xl-10 {\n      grid-column-start: 10;\n    }\n    .g-start-xl-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1536px) {\n    .g-col-2xl-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-2xl-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-2xl-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-2xl-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-2xl-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-2xl-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-2xl-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-2xl-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-2xl-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-2xl-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-2xl-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-2xl-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-2xl-1 {\n      grid-column-start: 1;\n    }\n    .g-start-2xl-2 {\n      grid-column-start: 2;\n    }\n    .g-start-2xl-3 {\n      grid-column-start: 3;\n    }\n    .g-start-2xl-4 {\n      grid-column-start: 4;\n    }\n    .g-start-2xl-5 {\n      grid-column-start: 5;\n    }\n    .g-start-2xl-6 {\n      grid-column-start: 6;\n    }\n    .g-start-2xl-7 {\n      grid-column-start: 7;\n    }\n    .g-start-2xl-8 {\n      grid-column-start: 8;\n    }\n    .g-start-2xl-9 {\n      grid-column-start: 9;\n    }\n    .g-start-2xl-10 {\n      grid-column-start: 10;\n    }\n    .g-start-2xl-11 {\n      grid-column-start: 11;\n    }\n  }\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n  .grid-fill {\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n}\n@layer utilities {\n  .d-inline {\n    display: inline;\n  }\n  .d-inline-block {\n    display: inline-block;\n  }\n  .d-block {\n    display: block;\n  }\n  .d-grid {\n    display: grid;\n  }\n  .d-inline-grid {\n    display: inline-grid;\n  }\n  .d-table {\n    display: table;\n  }\n  .d-table-row {\n    display: table-row;\n  }\n  .d-table-cell {\n    display: table-cell;\n  }\n  .d-flex {\n    display: flex;\n  }\n  .d-inline-flex {\n    display: inline-flex;\n  }\n  .d-contents {\n    display: contents;\n  }\n  .d-flow-root {\n    display: flow-root;\n  }\n  .d-none {\n    display: none;\n  }\n  .flex-fill {\n    flex: 1 1 auto;\n  }\n  .flex-row {\n    flex-direction: row;\n  }\n  .flex-column {\n    flex-direction: column;\n  }\n  .flex-row-reverse {\n    flex-direction: row-reverse;\n  }\n  .flex-column-reverse {\n    flex-direction: column-reverse;\n  }\n  .flex-grow-0 {\n    flex-grow: 0;\n  }\n  .flex-grow-1 {\n    flex-grow: 1;\n  }\n  .flex-shrink-0 {\n    flex-shrink: 0;\n  }\n  .flex-shrink-1 {\n    flex-shrink: 1;\n  }\n  .flex-wrap {\n    flex-wrap: wrap;\n  }\n  .flex-nowrap {\n    flex-wrap: nowrap;\n  }\n  .flex-wrap-reverse {\n    flex-wrap: wrap-reverse;\n  }\n  .justify-content-start {\n    justify-content: flex-start;\n  }\n  .justify-content-end {\n    justify-content: flex-end;\n  }\n  .justify-content-center {\n    justify-content: center;\n  }\n  .justify-content-between {\n    justify-content: space-between;\n  }\n  .justify-content-around {\n    justify-content: space-around;\n  }\n  .justify-content-evenly {\n    justify-content: space-evenly;\n  }\n  .justify-items-start {\n    justify-items: start;\n  }\n  .justify-items-end {\n    justify-items: end;\n  }\n  .justify-items-center {\n    justify-items: center;\n  }\n  .justify-items-stretch {\n    justify-items: stretch;\n  }\n  .align-items-start {\n    align-items: flex-start;\n  }\n  .align-items-end {\n    align-items: flex-end;\n  }\n  .align-items-center {\n    align-items: center;\n  }\n  .align-items-baseline {\n    align-items: baseline;\n  }\n  .align-items-stretch {\n    align-items: stretch;\n  }\n  .align-content-start {\n    align-content: flex-start;\n  }\n  .align-content-end {\n    align-content: flex-end;\n  }\n  .align-content-center {\n    align-content: center;\n  }\n  .align-content-between {\n    align-content: space-between;\n  }\n  .align-content-around {\n    align-content: space-around;\n  }\n  .align-content-stretch {\n    align-content: stretch;\n  }\n  .align-self-auto {\n    align-self: auto;\n  }\n  .align-self-start {\n    align-self: flex-start;\n  }\n  .align-self-end {\n    align-self: flex-end;\n  }\n  .align-self-center {\n    align-self: center;\n  }\n  .align-self-baseline {\n    align-self: baseline;\n  }\n  .align-self-stretch {\n    align-self: stretch;\n  }\n  .place-items-start {\n    place-items: start;\n  }\n  .place-items-end {\n    place-items: end;\n  }\n  .place-items-center {\n    place-items: center;\n  }\n  .place-items-stretch {\n    place-items: stretch;\n  }\n  .order-first {\n    order: -1;\n  }\n  .order-0 {\n    order: 0;\n  }\n  .order-1 {\n    order: 1;\n  }\n  .order-2 {\n    order: 2;\n  }\n  .order-3 {\n    order: 3;\n  }\n  .order-4 {\n    order: 4;\n  }\n  .order-5 {\n    order: 5;\n  }\n  .order-last {\n    order: 6;\n  }\n  .m--2 {\n    margin: -0.5rem;\n  }\n  .m--1 {\n    margin: -0.25rem;\n  }\n  .m-0 {\n    margin: 0;\n  }\n  .m-1 {\n    margin: 0.25rem;\n  }\n  .m-2 {\n    margin: 0.5rem;\n  }\n  .m-3 {\n    margin: 1rem;\n  }\n  .m-4 {\n    margin: 1.5rem;\n  }\n  .m-5 {\n    margin: 3rem;\n  }\n  .m-auto {\n    margin: auto;\n  }\n  .mx--2 {\n    margin-inline: -0.5rem;\n  }\n  .mx--1 {\n    margin-inline: -0.25rem;\n  }\n  .mx-0 {\n    margin-inline: 0;\n  }\n  .mx-1 {\n    margin-inline: 0.25rem;\n  }\n  .mx-2 {\n    margin-inline: 0.5rem;\n  }\n  .mx-3 {\n    margin-inline: 1rem;\n  }\n  .mx-4 {\n    margin-inline: 1.5rem;\n  }\n  .mx-5 {\n    margin-inline: 3rem;\n  }\n  .mx-auto {\n    margin-inline: auto;\n  }\n  .my--2 {\n    margin-block: -0.5rem;\n  }\n  .my--1 {\n    margin-block: -0.25rem;\n  }\n  .my-0 {\n    margin-block: 0;\n  }\n  .my-1 {\n    margin-block: 0.25rem;\n  }\n  .my-2 {\n    margin-block: 0.5rem;\n  }\n  .my-3 {\n    margin-block: 1rem;\n  }\n  .my-4 {\n    margin-block: 1.5rem;\n  }\n  .my-5 {\n    margin-block: 3rem;\n  }\n  .my-auto {\n    margin-block: auto;\n  }\n  .mt--2 {\n    margin-block-start: -0.5rem;\n  }\n  .mt--1 {\n    margin-block-start: -0.25rem;\n  }\n  .mt-0 {\n    margin-block-start: 0;\n  }\n  .mt-1 {\n    margin-block-start: 0.25rem;\n  }\n  .mt-2 {\n    margin-block-start: 0.5rem;\n  }\n  .mt-3 {\n    margin-block-start: 1rem;\n  }\n  .mt-4 {\n    margin-block-start: 1.5rem;\n  }\n  .mt-5 {\n    margin-block-start: 3rem;\n  }\n  .mt-auto {\n    margin-block-start: auto;\n  }\n  .me--2 {\n    margin-inline-end: -0.5rem;\n  }\n  .me--1 {\n    margin-inline-end: -0.25rem;\n  }\n  .me-0 {\n    margin-inline-end: 0;\n  }\n  .me-1 {\n    margin-inline-end: 0.25rem;\n  }\n  .me-2 {\n    margin-inline-end: 0.5rem;\n  }\n  .me-3 {\n    margin-inline-end: 1rem;\n  }\n  .me-4 {\n    margin-inline-end: 1.5rem;\n  }\n  .me-5 {\n    margin-inline-end: 3rem;\n  }\n  .me-auto {\n    margin-inline-end: auto;\n  }\n  .mb--2 {\n    margin-block-end: -0.5rem;\n  }\n  .mb--1 {\n    margin-block-end: -0.25rem;\n  }\n  .mb-0 {\n    margin-block-end: 0;\n  }\n  .mb-1 {\n    margin-block-end: 0.25rem;\n  }\n  .mb-2 {\n    margin-block-end: 0.5rem;\n  }\n  .mb-3 {\n    margin-block-end: 1rem;\n  }\n  .mb-4 {\n    margin-block-end: 1.5rem;\n  }\n  .mb-5 {\n    margin-block-end: 3rem;\n  }\n  .mb-auto {\n    margin-block-end: auto;\n  }\n  .ms--2 {\n    margin-inline-start: -0.5rem;\n  }\n  .ms--1 {\n    margin-inline-start: -0.25rem;\n  }\n  .ms-0 {\n    margin-inline-start: 0;\n  }\n  .ms-1 {\n    margin-inline-start: 0.25rem;\n  }\n  .ms-2 {\n    margin-inline-start: 0.5rem;\n  }\n  .ms-3 {\n    margin-inline-start: 1rem;\n  }\n  .ms-4 {\n    margin-inline-start: 1.5rem;\n  }\n  .ms-5 {\n    margin-inline-start: 3rem;\n  }\n  .ms-auto {\n    margin-inline-start: auto;\n  }\n  .p--2 {\n    padding: -0.5rem;\n  }\n  .p--1 {\n    padding: -0.25rem;\n  }\n  .p-0 {\n    padding: 0;\n  }\n  .p-1 {\n    padding: 0.25rem;\n  }\n  .p-2 {\n    padding: 0.5rem;\n  }\n  .p-3 {\n    padding: 1rem;\n  }\n  .p-4 {\n    padding: 1.5rem;\n  }\n  .p-5 {\n    padding: 3rem;\n  }\n  .px--2 {\n    padding-inline: -0.5rem;\n  }\n  .px--1 {\n    padding-inline: -0.25rem;\n  }\n  .px-0 {\n    padding-inline: 0;\n  }\n  .px-1 {\n    padding-inline: 0.25rem;\n  }\n  .px-2 {\n    padding-inline: 0.5rem;\n  }\n  .px-3 {\n    padding-inline: 1rem;\n  }\n  .px-4 {\n    padding-inline: 1.5rem;\n  }\n  .px-5 {\n    padding-inline: 3rem;\n  }\n  .py--2 {\n    padding-block: -0.5rem;\n  }\n  .py--1 {\n    padding-block: -0.25rem;\n  }\n  .py-0 {\n    padding-block: 0;\n  }\n  .py-1 {\n    padding-block: 0.25rem;\n  }\n  .py-2 {\n    padding-block: 0.5rem;\n  }\n  .py-3 {\n    padding-block: 1rem;\n  }\n  .py-4 {\n    padding-block: 1.5rem;\n  }\n  .py-5 {\n    padding-block: 3rem;\n  }\n  .pt--2 {\n    padding-block-start: -0.5rem;\n  }\n  .pt--1 {\n    padding-block-start: -0.25rem;\n  }\n  .pt-0 {\n    padding-block-start: 0;\n  }\n  .pt-1 {\n    padding-block-start: 0.25rem;\n  }\n  .pt-2 {\n    padding-block-start: 0.5rem;\n  }\n  .pt-3 {\n    padding-block-start: 1rem;\n  }\n  .pt-4 {\n    padding-block-start: 1.5rem;\n  }\n  .pt-5 {\n    padding-block-start: 3rem;\n  }\n  .pe--2 {\n    padding-inline-end: -0.5rem;\n  }\n  .pe--1 {\n    padding-inline-end: -0.25rem;\n  }\n  .pe-0 {\n    padding-inline-end: 0;\n  }\n  .pe-1 {\n    padding-inline-end: 0.25rem;\n  }\n  .pe-2 {\n    padding-inline-end: 0.5rem;\n  }\n  .pe-3 {\n    padding-inline-end: 1rem;\n  }\n  .pe-4 {\n    padding-inline-end: 1.5rem;\n  }\n  .pe-5 {\n    padding-inline-end: 3rem;\n  }\n  .pb--2 {\n    padding-block-end: -0.5rem;\n  }\n  .pb--1 {\n    padding-block-end: -0.25rem;\n  }\n  .pb-0 {\n    padding-block-end: 0;\n  }\n  .pb-1 {\n    padding-block-end: 0.25rem;\n  }\n  .pb-2 {\n    padding-block-end: 0.5rem;\n  }\n  .pb-3 {\n    padding-block-end: 1rem;\n  }\n  .pb-4 {\n    padding-block-end: 1.5rem;\n  }\n  .pb-5 {\n    padding-block-end: 3rem;\n  }\n  .ps--2 {\n    padding-inline-start: -0.5rem;\n  }\n  .ps--1 {\n    padding-inline-start: -0.25rem;\n  }\n  .ps-0 {\n    padding-inline-start: 0;\n  }\n  .ps-1 {\n    padding-inline-start: 0.25rem;\n  }\n  .ps-2 {\n    padding-inline-start: 0.5rem;\n  }\n  .ps-3 {\n    padding-inline-start: 1rem;\n  }\n  .ps-4 {\n    padding-inline-start: 1.5rem;\n  }\n  .ps-5 {\n    padding-inline-start: 3rem;\n  }\n  @media (width >= 576px) {\n    .d-sm-inline {\n      display: inline;\n    }\n    .d-sm-inline-block {\n      display: inline-block;\n    }\n    .d-sm-block {\n      display: block;\n    }\n    .d-sm-grid {\n      display: grid;\n    }\n    .d-sm-inline-grid {\n      display: inline-grid;\n    }\n    .d-sm-table {\n      display: table;\n    }\n    .d-sm-table-row {\n      display: table-row;\n    }\n    .d-sm-table-cell {\n      display: table-cell;\n    }\n    .d-sm-flex {\n      display: flex;\n    }\n    .d-sm-inline-flex {\n      display: inline-flex;\n    }\n    .d-sm-contents {\n      display: contents;\n    }\n    .d-sm-flow-root {\n      display: flow-root;\n    }\n    .d-sm-none {\n      display: none;\n    }\n    .flex-sm-fill {\n      flex: 1 1 auto;\n    }\n    .flex-sm-row {\n      flex-direction: row;\n    }\n    .flex-sm-column {\n      flex-direction: column;\n    }\n    .flex-sm-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-sm-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-sm-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-sm-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-sm-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-sm-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-sm-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-sm-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-sm-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-sm-start {\n      justify-content: flex-start;\n    }\n    .justify-content-sm-end {\n      justify-content: flex-end;\n    }\n    .justify-content-sm-center {\n      justify-content: center;\n    }\n    .justify-content-sm-between {\n      justify-content: space-between;\n    }\n    .justify-content-sm-around {\n      justify-content: space-around;\n    }\n    .justify-content-sm-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-sm-start {\n      justify-items: start;\n    }\n    .justify-items-sm-end {\n      justify-items: end;\n    }\n    .justify-items-sm-center {\n      justify-items: center;\n    }\n    .justify-items-sm-stretch {\n      justify-items: stretch;\n    }\n    .align-items-sm-start {\n      align-items: flex-start;\n    }\n    .align-items-sm-end {\n      align-items: flex-end;\n    }\n    .align-items-sm-center {\n      align-items: center;\n    }\n    .align-items-sm-baseline {\n      align-items: baseline;\n    }\n    .align-items-sm-stretch {\n      align-items: stretch;\n    }\n    .align-content-sm-start {\n      align-content: flex-start;\n    }\n    .align-content-sm-end {\n      align-content: flex-end;\n    }\n    .align-content-sm-center {\n      align-content: center;\n    }\n    .align-content-sm-between {\n      align-content: space-between;\n    }\n    .align-content-sm-around {\n      align-content: space-around;\n    }\n    .align-content-sm-stretch {\n      align-content: stretch;\n    }\n    .align-self-sm-auto {\n      align-self: auto;\n    }\n    .align-self-sm-start {\n      align-self: flex-start;\n    }\n    .align-self-sm-end {\n      align-self: flex-end;\n    }\n    .align-self-sm-center {\n      align-self: center;\n    }\n    .align-self-sm-baseline {\n      align-self: baseline;\n    }\n    .align-self-sm-stretch {\n      align-self: stretch;\n    }\n    .place-items-sm-start {\n      place-items: start;\n    }\n    .place-items-sm-end {\n      place-items: end;\n    }\n    .place-items-sm-center {\n      place-items: center;\n    }\n    .place-items-sm-stretch {\n      place-items: stretch;\n    }\n    .order-sm-first {\n      order: -1;\n    }\n    .order-sm-0 {\n      order: 0;\n    }\n    .order-sm-1 {\n      order: 1;\n    }\n    .order-sm-2 {\n      order: 2;\n    }\n    .order-sm-3 {\n      order: 3;\n    }\n    .order-sm-4 {\n      order: 4;\n    }\n    .order-sm-5 {\n      order: 5;\n    }\n    .order-sm-last {\n      order: 6;\n    }\n    .m-sm--2 {\n      margin: -0.5rem;\n    }\n    .m-sm--1 {\n      margin: -0.25rem;\n    }\n    .m-sm-0 {\n      margin: 0;\n    }\n    .m-sm-1 {\n      margin: 0.25rem;\n    }\n    .m-sm-2 {\n      margin: 0.5rem;\n    }\n    .m-sm-3 {\n      margin: 1rem;\n    }\n    .m-sm-4 {\n      margin: 1.5rem;\n    }\n    .m-sm-5 {\n      margin: 3rem;\n    }\n    .m-sm-auto {\n      margin: auto;\n    }\n    .mx-sm--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-sm--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-sm-0 {\n      margin-inline: 0;\n    }\n    .mx-sm-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-sm-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-sm-3 {\n      margin-inline: 1rem;\n    }\n    .mx-sm-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-sm-5 {\n      margin-inline: 3rem;\n    }\n    .mx-sm-auto {\n      margin-inline: auto;\n    }\n    .my-sm--2 {\n      margin-block: -0.5rem;\n    }\n    .my-sm--1 {\n      margin-block: -0.25rem;\n    }\n    .my-sm-0 {\n      margin-block: 0;\n    }\n    .my-sm-1 {\n      margin-block: 0.25rem;\n    }\n    .my-sm-2 {\n      margin-block: 0.5rem;\n    }\n    .my-sm-3 {\n      margin-block: 1rem;\n    }\n    .my-sm-4 {\n      margin-block: 1.5rem;\n    }\n    .my-sm-5 {\n      margin-block: 3rem;\n    }\n    .my-sm-auto {\n      margin-block: auto;\n    }\n    .mt-sm--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-sm--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-sm-0 {\n      margin-block-start: 0;\n    }\n    .mt-sm-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-sm-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-sm-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-sm-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-sm-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-sm-auto {\n      margin-block-start: auto;\n    }\n    .me-sm--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-sm--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-sm-0 {\n      margin-inline-end: 0;\n    }\n    .me-sm-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-sm-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-sm-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-sm-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-sm-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-sm-auto {\n      margin-inline-end: auto;\n    }\n    .mb-sm--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-sm--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-sm-0 {\n      margin-block-end: 0;\n    }\n    .mb-sm-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-sm-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-sm-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-sm-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-sm-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-sm-auto {\n      margin-block-end: auto;\n    }\n    .ms-sm--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-sm--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-sm-0 {\n      margin-inline-start: 0;\n    }\n    .ms-sm-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-sm-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-sm-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-sm-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-sm-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-sm-auto {\n      margin-inline-start: auto;\n    }\n    .p-sm--2 {\n      padding: -0.5rem;\n    }\n    .p-sm--1 {\n      padding: -0.25rem;\n    }\n    .p-sm-0 {\n      padding: 0;\n    }\n    .p-sm-1 {\n      padding: 0.25rem;\n    }\n    .p-sm-2 {\n      padding: 0.5rem;\n    }\n    .p-sm-3 {\n      padding: 1rem;\n    }\n    .p-sm-4 {\n      padding: 1.5rem;\n    }\n    .p-sm-5 {\n      padding: 3rem;\n    }\n    .px-sm--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-sm--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-sm-0 {\n      padding-inline: 0;\n    }\n    .px-sm-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-sm-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-sm-3 {\n      padding-inline: 1rem;\n    }\n    .px-sm-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-sm-5 {\n      padding-inline: 3rem;\n    }\n    .py-sm--2 {\n      padding-block: -0.5rem;\n    }\n    .py-sm--1 {\n      padding-block: -0.25rem;\n    }\n    .py-sm-0 {\n      padding-block: 0;\n    }\n    .py-sm-1 {\n      padding-block: 0.25rem;\n    }\n    .py-sm-2 {\n      padding-block: 0.5rem;\n    }\n    .py-sm-3 {\n      padding-block: 1rem;\n    }\n    .py-sm-4 {\n      padding-block: 1.5rem;\n    }\n    .py-sm-5 {\n      padding-block: 3rem;\n    }\n    .pt-sm--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-sm--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-sm-0 {\n      padding-block-start: 0;\n    }\n    .pt-sm-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-sm-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-sm-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-sm-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-sm-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-sm--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-sm--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-sm-0 {\n      padding-inline-end: 0;\n    }\n    .pe-sm-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-sm-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-sm-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-sm-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-sm-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-sm--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-sm--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-sm-0 {\n      padding-block-end: 0;\n    }\n    .pb-sm-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-sm-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-sm-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-sm-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-sm-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-sm--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-sm--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-sm-0 {\n      padding-inline-start: 0;\n    }\n    .ps-sm-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-sm-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-sm-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-sm-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-sm-5 {\n      padding-inline-start: 3rem;\n    }\n  }\n  @media (width >= 768px) {\n    .d-md-inline {\n      display: inline;\n    }\n    .d-md-inline-block {\n      display: inline-block;\n    }\n    .d-md-block {\n      display: block;\n    }\n    .d-md-grid {\n      display: grid;\n    }\n    .d-md-inline-grid {\n      display: inline-grid;\n    }\n    .d-md-table {\n      display: table;\n    }\n    .d-md-table-row {\n      display: table-row;\n    }\n    .d-md-table-cell {\n      display: table-cell;\n    }\n    .d-md-flex {\n      display: flex;\n    }\n    .d-md-inline-flex {\n      display: inline-flex;\n    }\n    .d-md-contents {\n      display: contents;\n    }\n    .d-md-flow-root {\n      display: flow-root;\n    }\n    .d-md-none {\n      display: none;\n    }\n    .flex-md-fill {\n      flex: 1 1 auto;\n    }\n    .flex-md-row {\n      flex-direction: row;\n    }\n    .flex-md-column {\n      flex-direction: column;\n    }\n    .flex-md-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-md-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-md-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-md-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-md-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-md-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-md-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-md-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-md-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-md-start {\n      justify-content: flex-start;\n    }\n    .justify-content-md-end {\n      justify-content: flex-end;\n    }\n    .justify-content-md-center {\n      justify-content: center;\n    }\n    .justify-content-md-between {\n      justify-content: space-between;\n    }\n    .justify-content-md-around {\n      justify-content: space-around;\n    }\n    .justify-content-md-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-md-start {\n      justify-items: start;\n    }\n    .justify-items-md-end {\n      justify-items: end;\n    }\n    .justify-items-md-center {\n      justify-items: center;\n    }\n    .justify-items-md-stretch {\n      justify-items: stretch;\n    }\n    .align-items-md-start {\n      align-items: flex-start;\n    }\n    .align-items-md-end {\n      align-items: flex-end;\n    }\n    .align-items-md-center {\n      align-items: center;\n    }\n    .align-items-md-baseline {\n      align-items: baseline;\n    }\n    .align-items-md-stretch {\n      align-items: stretch;\n    }\n    .align-content-md-start {\n      align-content: flex-start;\n    }\n    .align-content-md-end {\n      align-content: flex-end;\n    }\n    .align-content-md-center {\n      align-content: center;\n    }\n    .align-content-md-between {\n      align-content: space-between;\n    }\n    .align-content-md-around {\n      align-content: space-around;\n    }\n    .align-content-md-stretch {\n      align-content: stretch;\n    }\n    .align-self-md-auto {\n      align-self: auto;\n    }\n    .align-self-md-start {\n      align-self: flex-start;\n    }\n    .align-self-md-end {\n      align-self: flex-end;\n    }\n    .align-self-md-center {\n      align-self: center;\n    }\n    .align-self-md-baseline {\n      align-self: baseline;\n    }\n    .align-self-md-stretch {\n      align-self: stretch;\n    }\n    .place-items-md-start {\n      place-items: start;\n    }\n    .place-items-md-end {\n      place-items: end;\n    }\n    .place-items-md-center {\n      place-items: center;\n    }\n    .place-items-md-stretch {\n      place-items: stretch;\n    }\n    .order-md-first {\n      order: -1;\n    }\n    .order-md-0 {\n      order: 0;\n    }\n    .order-md-1 {\n      order: 1;\n    }\n    .order-md-2 {\n      order: 2;\n    }\n    .order-md-3 {\n      order: 3;\n    }\n    .order-md-4 {\n      order: 4;\n    }\n    .order-md-5 {\n      order: 5;\n    }\n    .order-md-last {\n      order: 6;\n    }\n    .m-md--2 {\n      margin: -0.5rem;\n    }\n    .m-md--1 {\n      margin: -0.25rem;\n    }\n    .m-md-0 {\n      margin: 0;\n    }\n    .m-md-1 {\n      margin: 0.25rem;\n    }\n    .m-md-2 {\n      margin: 0.5rem;\n    }\n    .m-md-3 {\n      margin: 1rem;\n    }\n    .m-md-4 {\n      margin: 1.5rem;\n    }\n    .m-md-5 {\n      margin: 3rem;\n    }\n    .m-md-auto {\n      margin: auto;\n    }\n    .mx-md--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-md--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-md-0 {\n      margin-inline: 0;\n    }\n    .mx-md-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-md-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-md-3 {\n      margin-inline: 1rem;\n    }\n    .mx-md-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-md-5 {\n      margin-inline: 3rem;\n    }\n    .mx-md-auto {\n      margin-inline: auto;\n    }\n    .my-md--2 {\n      margin-block: -0.5rem;\n    }\n    .my-md--1 {\n      margin-block: -0.25rem;\n    }\n    .my-md-0 {\n      margin-block: 0;\n    }\n    .my-md-1 {\n      margin-block: 0.25rem;\n    }\n    .my-md-2 {\n      margin-block: 0.5rem;\n    }\n    .my-md-3 {\n      margin-block: 1rem;\n    }\n    .my-md-4 {\n      margin-block: 1.5rem;\n    }\n    .my-md-5 {\n      margin-block: 3rem;\n    }\n    .my-md-auto {\n      margin-block: auto;\n    }\n    .mt-md--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-md--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-md-0 {\n      margin-block-start: 0;\n    }\n    .mt-md-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-md-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-md-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-md-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-md-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-md-auto {\n      margin-block-start: auto;\n    }\n    .me-md--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-md--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-md-0 {\n      margin-inline-end: 0;\n    }\n    .me-md-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-md-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-md-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-md-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-md-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-md-auto {\n      margin-inline-end: auto;\n    }\n    .mb-md--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-md--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-md-0 {\n      margin-block-end: 0;\n    }\n    .mb-md-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-md-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-md-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-md-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-md-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-md-auto {\n      margin-block-end: auto;\n    }\n    .ms-md--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-md--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-md-0 {\n      margin-inline-start: 0;\n    }\n    .ms-md-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-md-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-md-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-md-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-md-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-md-auto {\n      margin-inline-start: auto;\n    }\n    .p-md--2 {\n      padding: -0.5rem;\n    }\n    .p-md--1 {\n      padding: -0.25rem;\n    }\n    .p-md-0 {\n      padding: 0;\n    }\n    .p-md-1 {\n      padding: 0.25rem;\n    }\n    .p-md-2 {\n      padding: 0.5rem;\n    }\n    .p-md-3 {\n      padding: 1rem;\n    }\n    .p-md-4 {\n      padding: 1.5rem;\n    }\n    .p-md-5 {\n      padding: 3rem;\n    }\n    .px-md--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-md--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-md-0 {\n      padding-inline: 0;\n    }\n    .px-md-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-md-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-md-3 {\n      padding-inline: 1rem;\n    }\n    .px-md-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-md-5 {\n      padding-inline: 3rem;\n    }\n    .py-md--2 {\n      padding-block: -0.5rem;\n    }\n    .py-md--1 {\n      padding-block: -0.25rem;\n    }\n    .py-md-0 {\n      padding-block: 0;\n    }\n    .py-md-1 {\n      padding-block: 0.25rem;\n    }\n    .py-md-2 {\n      padding-block: 0.5rem;\n    }\n    .py-md-3 {\n      padding-block: 1rem;\n    }\n    .py-md-4 {\n      padding-block: 1.5rem;\n    }\n    .py-md-5 {\n      padding-block: 3rem;\n    }\n    .pt-md--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-md--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-md-0 {\n      padding-block-start: 0;\n    }\n    .pt-md-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-md-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-md-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-md-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-md-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-md--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-md--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-md-0 {\n      padding-inline-end: 0;\n    }\n    .pe-md-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-md-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-md-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-md-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-md-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-md--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-md--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-md-0 {\n      padding-block-end: 0;\n    }\n    .pb-md-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-md-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-md-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-md-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-md-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-md--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-md--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-md-0 {\n      padding-inline-start: 0;\n    }\n    .ps-md-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-md-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-md-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-md-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-md-5 {\n      padding-inline-start: 3rem;\n    }\n  }\n  @media (width >= 1024px) {\n    .d-lg-inline {\n      display: inline;\n    }\n    .d-lg-inline-block {\n      display: inline-block;\n    }\n    .d-lg-block {\n      display: block;\n    }\n    .d-lg-grid {\n      display: grid;\n    }\n    .d-lg-inline-grid {\n      display: inline-grid;\n    }\n    .d-lg-table {\n      display: table;\n    }\n    .d-lg-table-row {\n      display: table-row;\n    }\n    .d-lg-table-cell {\n      display: table-cell;\n    }\n    .d-lg-flex {\n      display: flex;\n    }\n    .d-lg-inline-flex {\n      display: inline-flex;\n    }\n    .d-lg-contents {\n      display: contents;\n    }\n    .d-lg-flow-root {\n      display: flow-root;\n    }\n    .d-lg-none {\n      display: none;\n    }\n    .flex-lg-fill {\n      flex: 1 1 auto;\n    }\n    .flex-lg-row {\n      flex-direction: row;\n    }\n    .flex-lg-column {\n      flex-direction: column;\n    }\n    .flex-lg-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-lg-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-lg-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-lg-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-lg-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-lg-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-lg-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-lg-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-lg-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-lg-start {\n      justify-content: flex-start;\n    }\n    .justify-content-lg-end {\n      justify-content: flex-end;\n    }\n    .justify-content-lg-center {\n      justify-content: center;\n    }\n    .justify-content-lg-between {\n      justify-content: space-between;\n    }\n    .justify-content-lg-around {\n      justify-content: space-around;\n    }\n    .justify-content-lg-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-lg-start {\n      justify-items: start;\n    }\n    .justify-items-lg-end {\n      justify-items: end;\n    }\n    .justify-items-lg-center {\n      justify-items: center;\n    }\n    .justify-items-lg-stretch {\n      justify-items: stretch;\n    }\n    .align-items-lg-start {\n      align-items: flex-start;\n    }\n    .align-items-lg-end {\n      align-items: flex-end;\n    }\n    .align-items-lg-center {\n      align-items: center;\n    }\n    .align-items-lg-baseline {\n      align-items: baseline;\n    }\n    .align-items-lg-stretch {\n      align-items: stretch;\n    }\n    .align-content-lg-start {\n      align-content: flex-start;\n    }\n    .align-content-lg-end {\n      align-content: flex-end;\n    }\n    .align-content-lg-center {\n      align-content: center;\n    }\n    .align-content-lg-between {\n      align-content: space-between;\n    }\n    .align-content-lg-around {\n      align-content: space-around;\n    }\n    .align-content-lg-stretch {\n      align-content: stretch;\n    }\n    .align-self-lg-auto {\n      align-self: auto;\n    }\n    .align-self-lg-start {\n      align-self: flex-start;\n    }\n    .align-self-lg-end {\n      align-self: flex-end;\n    }\n    .align-self-lg-center {\n      align-self: center;\n    }\n    .align-self-lg-baseline {\n      align-self: baseline;\n    }\n    .align-self-lg-stretch {\n      align-self: stretch;\n    }\n    .place-items-lg-start {\n      place-items: start;\n    }\n    .place-items-lg-end {\n      place-items: end;\n    }\n    .place-items-lg-center {\n      place-items: center;\n    }\n    .place-items-lg-stretch {\n      place-items: stretch;\n    }\n    .order-lg-first {\n      order: -1;\n    }\n    .order-lg-0 {\n      order: 0;\n    }\n    .order-lg-1 {\n      order: 1;\n    }\n    .order-lg-2 {\n      order: 2;\n    }\n    .order-lg-3 {\n      order: 3;\n    }\n    .order-lg-4 {\n      order: 4;\n    }\n    .order-lg-5 {\n      order: 5;\n    }\n    .order-lg-last {\n      order: 6;\n    }\n    .m-lg--2 {\n      margin: -0.5rem;\n    }\n    .m-lg--1 {\n      margin: -0.25rem;\n    }\n    .m-lg-0 {\n      margin: 0;\n    }\n    .m-lg-1 {\n      margin: 0.25rem;\n    }\n    .m-lg-2 {\n      margin: 0.5rem;\n    }\n    .m-lg-3 {\n      margin: 1rem;\n    }\n    .m-lg-4 {\n      margin: 1.5rem;\n    }\n    .m-lg-5 {\n      margin: 3rem;\n    }\n    .m-lg-auto {\n      margin: auto;\n    }\n    .mx-lg--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-lg--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-lg-0 {\n      margin-inline: 0;\n    }\n    .mx-lg-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-lg-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-lg-3 {\n      margin-inline: 1rem;\n    }\n    .mx-lg-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-lg-5 {\n      margin-inline: 3rem;\n    }\n    .mx-lg-auto {\n      margin-inline: auto;\n    }\n    .my-lg--2 {\n      margin-block: -0.5rem;\n    }\n    .my-lg--1 {\n      margin-block: -0.25rem;\n    }\n    .my-lg-0 {\n      margin-block: 0;\n    }\n    .my-lg-1 {\n      margin-block: 0.25rem;\n    }\n    .my-lg-2 {\n      margin-block: 0.5rem;\n    }\n    .my-lg-3 {\n      margin-block: 1rem;\n    }\n    .my-lg-4 {\n      margin-block: 1.5rem;\n    }\n    .my-lg-5 {\n      margin-block: 3rem;\n    }\n    .my-lg-auto {\n      margin-block: auto;\n    }\n    .mt-lg--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-lg--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-lg-0 {\n      margin-block-start: 0;\n    }\n    .mt-lg-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-lg-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-lg-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-lg-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-lg-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-lg-auto {\n      margin-block-start: auto;\n    }\n    .me-lg--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-lg--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-lg-0 {\n      margin-inline-end: 0;\n    }\n    .me-lg-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-lg-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-lg-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-lg-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-lg-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-lg-auto {\n      margin-inline-end: auto;\n    }\n    .mb-lg--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-lg--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-lg-0 {\n      margin-block-end: 0;\n    }\n    .mb-lg-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-lg-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-lg-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-lg-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-lg-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-lg-auto {\n      margin-block-end: auto;\n    }\n    .ms-lg--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-lg--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-lg-0 {\n      margin-inline-start: 0;\n    }\n    .ms-lg-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-lg-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-lg-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-lg-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-lg-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-lg-auto {\n      margin-inline-start: auto;\n    }\n    .p-lg--2 {\n      padding: -0.5rem;\n    }\n    .p-lg--1 {\n      padding: -0.25rem;\n    }\n    .p-lg-0 {\n      padding: 0;\n    }\n    .p-lg-1 {\n      padding: 0.25rem;\n    }\n    .p-lg-2 {\n      padding: 0.5rem;\n    }\n    .p-lg-3 {\n      padding: 1rem;\n    }\n    .p-lg-4 {\n      padding: 1.5rem;\n    }\n    .p-lg-5 {\n      padding: 3rem;\n    }\n    .px-lg--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-lg--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-lg-0 {\n      padding-inline: 0;\n    }\n    .px-lg-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-lg-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-lg-3 {\n      padding-inline: 1rem;\n    }\n    .px-lg-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-lg-5 {\n      padding-inline: 3rem;\n    }\n    .py-lg--2 {\n      padding-block: -0.5rem;\n    }\n    .py-lg--1 {\n      padding-block: -0.25rem;\n    }\n    .py-lg-0 {\n      padding-block: 0;\n    }\n    .py-lg-1 {\n      padding-block: 0.25rem;\n    }\n    .py-lg-2 {\n      padding-block: 0.5rem;\n    }\n    .py-lg-3 {\n      padding-block: 1rem;\n    }\n    .py-lg-4 {\n      padding-block: 1.5rem;\n    }\n    .py-lg-5 {\n      padding-block: 3rem;\n    }\n    .pt-lg--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-lg--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-lg-0 {\n      padding-block-start: 0;\n    }\n    .pt-lg-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-lg-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-lg-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-lg-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-lg-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-lg--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-lg--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-lg-0 {\n      padding-inline-end: 0;\n    }\n    .pe-lg-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-lg-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-lg-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-lg-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-lg-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-lg--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-lg--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-lg-0 {\n      padding-block-end: 0;\n    }\n    .pb-lg-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-lg-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-lg-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-lg-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-lg-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-lg--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-lg--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-lg-0 {\n      padding-inline-start: 0;\n    }\n    .ps-lg-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-lg-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-lg-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-lg-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-lg-5 {\n      padding-inline-start: 3rem;\n    }\n  }\n  @media (width >= 1280px) {\n    .d-xl-inline {\n      display: inline;\n    }\n    .d-xl-inline-block {\n      display: inline-block;\n    }\n    .d-xl-block {\n      display: block;\n    }\n    .d-xl-grid {\n      display: grid;\n    }\n    .d-xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-xl-table {\n      display: table;\n    }\n    .d-xl-table-row {\n      display: table-row;\n    }\n    .d-xl-table-cell {\n      display: table-cell;\n    }\n    .d-xl-flex {\n      display: flex;\n    }\n    .d-xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-xl-contents {\n      display: contents;\n    }\n    .d-xl-flow-root {\n      display: flow-root;\n    }\n    .d-xl-none {\n      display: none;\n    }\n    .flex-xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-xl-row {\n      flex-direction: row;\n    }\n    .flex-xl-column {\n      flex-direction: column;\n    }\n    .flex-xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-xl-center {\n      justify-content: center;\n    }\n    .justify-content-xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-xl-start {\n      justify-items: start;\n    }\n    .justify-items-xl-end {\n      justify-items: end;\n    }\n    .justify-items-xl-center {\n      justify-items: center;\n    }\n    .justify-items-xl-stretch {\n      justify-items: stretch;\n    }\n    .align-items-xl-start {\n      align-items: flex-start;\n    }\n    .align-items-xl-end {\n      align-items: flex-end;\n    }\n    .align-items-xl-center {\n      align-items: center;\n    }\n    .align-items-xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-xl-start {\n      align-content: flex-start;\n    }\n    .align-content-xl-end {\n      align-content: flex-end;\n    }\n    .align-content-xl-center {\n      align-content: center;\n    }\n    .align-content-xl-between {\n      align-content: space-between;\n    }\n    .align-content-xl-around {\n      align-content: space-around;\n    }\n    .align-content-xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-xl-auto {\n      align-self: auto;\n    }\n    .align-self-xl-start {\n      align-self: flex-start;\n    }\n    .align-self-xl-end {\n      align-self: flex-end;\n    }\n    .align-self-xl-center {\n      align-self: center;\n    }\n    .align-self-xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-xl-start {\n      place-items: start;\n    }\n    .place-items-xl-end {\n      place-items: end;\n    }\n    .place-items-xl-center {\n      place-items: center;\n    }\n    .place-items-xl-stretch {\n      place-items: stretch;\n    }\n    .order-xl-first {\n      order: -1;\n    }\n    .order-xl-0 {\n      order: 0;\n    }\n    .order-xl-1 {\n      order: 1;\n    }\n    .order-xl-2 {\n      order: 2;\n    }\n    .order-xl-3 {\n      order: 3;\n    }\n    .order-xl-4 {\n      order: 4;\n    }\n    .order-xl-5 {\n      order: 5;\n    }\n    .order-xl-last {\n      order: 6;\n    }\n    .m-xl--2 {\n      margin: -0.5rem;\n    }\n    .m-xl--1 {\n      margin: -0.25rem;\n    }\n    .m-xl-0 {\n      margin: 0;\n    }\n    .m-xl-1 {\n      margin: 0.25rem;\n    }\n    .m-xl-2 {\n      margin: 0.5rem;\n    }\n    .m-xl-3 {\n      margin: 1rem;\n    }\n    .m-xl-4 {\n      margin: 1.5rem;\n    }\n    .m-xl-5 {\n      margin: 3rem;\n    }\n    .m-xl-auto {\n      margin: auto;\n    }\n    .mx-xl--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-xl--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-xl-0 {\n      margin-inline: 0;\n    }\n    .mx-xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-xl-auto {\n      margin-inline: auto;\n    }\n    .my-xl--2 {\n      margin-block: -0.5rem;\n    }\n    .my-xl--1 {\n      margin-block: -0.25rem;\n    }\n    .my-xl-0 {\n      margin-block: 0;\n    }\n    .my-xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-xl-3 {\n      margin-block: 1rem;\n    }\n    .my-xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-xl-5 {\n      margin-block: 3rem;\n    }\n    .my-xl-auto {\n      margin-block: auto;\n    }\n    .mt-xl--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-xl--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-xl-auto {\n      margin-block-start: auto;\n    }\n    .me-xl--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-xl--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-xl--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-xl--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-xl--2 {\n      padding: -0.5rem;\n    }\n    .p-xl--1 {\n      padding: -0.25rem;\n    }\n    .p-xl-0 {\n      padding: 0;\n    }\n    .p-xl-1 {\n      padding: 0.25rem;\n    }\n    .p-xl-2 {\n      padding: 0.5rem;\n    }\n    .p-xl-3 {\n      padding: 1rem;\n    }\n    .p-xl-4 {\n      padding: 1.5rem;\n    }\n    .p-xl-5 {\n      padding: 3rem;\n    }\n    .px-xl--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-xl--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-xl-0 {\n      padding-inline: 0;\n    }\n    .px-xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-xl--2 {\n      padding-block: -0.5rem;\n    }\n    .py-xl--1 {\n      padding-block: -0.25rem;\n    }\n    .py-xl-0 {\n      padding-block: 0;\n    }\n    .py-xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-xl-3 {\n      padding-block: 1rem;\n    }\n    .py-xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-xl--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-xl--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-xl--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-xl--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-xl--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-xl--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-xl--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-xl--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-xl-5 {\n      padding-inline-start: 3rem;\n    }\n  }\n  @media (width >= 1536px) {\n    .d-2xl-inline {\n      display: inline;\n    }\n    .d-2xl-inline-block {\n      display: inline-block;\n    }\n    .d-2xl-block {\n      display: block;\n    }\n    .d-2xl-grid {\n      display: grid;\n    }\n    .d-2xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-2xl-table {\n      display: table;\n    }\n    .d-2xl-table-row {\n      display: table-row;\n    }\n    .d-2xl-table-cell {\n      display: table-cell;\n    }\n    .d-2xl-flex {\n      display: flex;\n    }\n    .d-2xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-2xl-contents {\n      display: contents;\n    }\n    .d-2xl-flow-root {\n      display: flow-root;\n    }\n    .d-2xl-none {\n      display: none;\n    }\n    .flex-2xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-2xl-row {\n      flex-direction: row;\n    }\n    .flex-2xl-column {\n      flex-direction: column;\n    }\n    .flex-2xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-2xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-2xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-2xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-2xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-2xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-2xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-2xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-2xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-2xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-2xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-2xl-center {\n      justify-content: center;\n    }\n    .justify-content-2xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-2xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-2xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-2xl-start {\n      justify-items: start;\n    }\n    .justify-items-2xl-end {\n      justify-items: end;\n    }\n    .justify-items-2xl-center {\n      justify-items: center;\n    }\n    .justify-items-2xl-stretch {\n      justify-items: stretch;\n    }\n    .align-items-2xl-start {\n      align-items: flex-start;\n    }\n    .align-items-2xl-end {\n      align-items: flex-end;\n    }\n    .align-items-2xl-center {\n      align-items: center;\n    }\n    .align-items-2xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-2xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-2xl-start {\n      align-content: flex-start;\n    }\n    .align-content-2xl-end {\n      align-content: flex-end;\n    }\n    .align-content-2xl-center {\n      align-content: center;\n    }\n    .align-content-2xl-between {\n      align-content: space-between;\n    }\n    .align-content-2xl-around {\n      align-content: space-around;\n    }\n    .align-content-2xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-2xl-auto {\n      align-self: auto;\n    }\n    .align-self-2xl-start {\n      align-self: flex-start;\n    }\n    .align-self-2xl-end {\n      align-self: flex-end;\n    }\n    .align-self-2xl-center {\n      align-self: center;\n    }\n    .align-self-2xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-2xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-2xl-start {\n      place-items: start;\n    }\n    .place-items-2xl-end {\n      place-items: end;\n    }\n    .place-items-2xl-center {\n      place-items: center;\n    }\n    .place-items-2xl-stretch {\n      place-items: stretch;\n    }\n    .order-2xl-first {\n      order: -1;\n    }\n    .order-2xl-0 {\n      order: 0;\n    }\n    .order-2xl-1 {\n      order: 1;\n    }\n    .order-2xl-2 {\n      order: 2;\n    }\n    .order-2xl-3 {\n      order: 3;\n    }\n    .order-2xl-4 {\n      order: 4;\n    }\n    .order-2xl-5 {\n      order: 5;\n    }\n    .order-2xl-last {\n      order: 6;\n    }\n    .m-2xl--2 {\n      margin: -0.5rem;\n    }\n    .m-2xl--1 {\n      margin: -0.25rem;\n    }\n    .m-2xl-0 {\n      margin: 0;\n    }\n    .m-2xl-1 {\n      margin: 0.25rem;\n    }\n    .m-2xl-2 {\n      margin: 0.5rem;\n    }\n    .m-2xl-3 {\n      margin: 1rem;\n    }\n    .m-2xl-4 {\n      margin: 1.5rem;\n    }\n    .m-2xl-5 {\n      margin: 3rem;\n    }\n    .m-2xl-auto {\n      margin: auto;\n    }\n    .mx-2xl--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-2xl--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-2xl-0 {\n      margin-inline: 0;\n    }\n    .mx-2xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-2xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-2xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-2xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-2xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-2xl-auto {\n      margin-inline: auto;\n    }\n    .my-2xl--2 {\n      margin-block: -0.5rem;\n    }\n    .my-2xl--1 {\n      margin-block: -0.25rem;\n    }\n    .my-2xl-0 {\n      margin-block: 0;\n    }\n    .my-2xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-2xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-2xl-3 {\n      margin-block: 1rem;\n    }\n    .my-2xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-2xl-5 {\n      margin-block: 3rem;\n    }\n    .my-2xl-auto {\n      margin-block: auto;\n    }\n    .mt-2xl--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-2xl--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-2xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-2xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-2xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-2xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-2xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-2xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-2xl-auto {\n      margin-block-start: auto;\n    }\n    .me-2xl--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-2xl--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-2xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-2xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-2xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-2xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-2xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-2xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-2xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-2xl--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-2xl--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-2xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-2xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-2xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-2xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-2xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-2xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-2xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-2xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-2xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-2xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-2xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-2xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-2xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-2xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-2xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-2xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-2xl--2 {\n      padding: -0.5rem;\n    }\n    .p-2xl--1 {\n      padding: -0.25rem;\n    }\n    .p-2xl-0 {\n      padding: 0;\n    }\n    .p-2xl-1 {\n      padding: 0.25rem;\n    }\n    .p-2xl-2 {\n      padding: 0.5rem;\n    }\n    .p-2xl-3 {\n      padding: 1rem;\n    }\n    .p-2xl-4 {\n      padding: 1.5rem;\n    }\n    .p-2xl-5 {\n      padding: 3rem;\n    }\n    .px-2xl--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-2xl--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-2xl-0 {\n      padding-inline: 0;\n    }\n    .px-2xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-2xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-2xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-2xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-2xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-2xl--2 {\n      padding-block: -0.5rem;\n    }\n    .py-2xl--1 {\n      padding-block: -0.25rem;\n    }\n    .py-2xl-0 {\n      padding-block: 0;\n    }\n    .py-2xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-2xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-2xl-3 {\n      padding-block: 1rem;\n    }\n    .py-2xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-2xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-2xl--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-2xl--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-2xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-2xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-2xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-2xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-2xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-2xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-2xl--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-2xl--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-2xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-2xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-2xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-2xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-2xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-2xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-2xl--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-2xl--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-2xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-2xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-2xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-2xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-2xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-2xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-2xl--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-2xl--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-2xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-2xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-2xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-2xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-2xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-2xl-5 {\n      padding-inline-start: 3rem;\n    }\n  }\n}\n:root {\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 1024px;\n  --breakpoint-xl: 1280px;\n  --breakpoint-2xl: 1536px;\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"../config\" as *;\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px)\n//\n// The map defined in the `$breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl 2xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $breakpoints, $breakpoint-names: map.keys($breakpoints)) {\n  $n: list.index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoint-names}`\";\n  }\n  // Use @if/@else because list.nth would error if evaluated when $n equals list length\n  @if $n < list.length($breakpoint-names) {\n    @return list.nth($breakpoint-names, $n + 1);\n  } @else {\n    @return null;\n  }\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $breakpoints) {\n  $min: map.get($breakpoints, $name);\n  @return if(sass($min != 0): $min; else: null);\n}\n\n// Maximum breakpoint width for range media queries.\n// Returns the breakpoint value to use as an upper bound in range queries.\n//\n//    >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n//    >> breakpoint-max(xxl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    null\n@function breakpoint-max($name, $breakpoints: $breakpoints) {\n  @if $name == null {\n    @return null;\n  }\n  $max: map.get($breakpoints, $name);\n  @return if(sass($max and $max > 0): $max; else: null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $breakpoints) {\n  @return if(sass(breakpoint-min($name, $breakpoints) == null): \"\"; else: \"-#{$name}\");\n}\n\n// Iterate all breakpoints and provide the current name and infix.\n//\n//    @include loop-breakpoints-up() using ($breakpoint, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-up($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n    @content($breakpoint, $infix);\n  }\n}\n\n// Iterate all breakpoints and provide the current name, next name, and next infix.\n//\n//    @include loop-breakpoints-down() using ($breakpoint, $next, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-down($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $next: breakpoint-next($breakpoint, $breakpoints);\n    $infix: breakpoint-infix($next, $breakpoints);\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Backwards-compatible alias for next/down breakpoint loops.\n@mixin loop-breakpoints($breakpoints: $breakpoints) {\n  @include loop-breakpoints-down($breakpoints) using ($breakpoint, $next, $infix) {\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (width >= $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (width < $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n\n// Container queries\n//\n// Container queries allow elements to respond to the size of a containing element\n// rather than the viewport. These mixins mirror the media-breakpoint-* mixins above.\n//\n// scss-docs-start container-query-mixins\n\n// Set an element as a query container.\n//\n//    @include set-container();                    // container-type: inline-size\n//    @include set-container(size);                // container-type: size\n//    @include set-container(inline-size, sidebar); // container: sidebar / inline-size\n//\n@mixin set-container($type: inline-size, $name: null) {\n  @if $name {\n    container: #{$name} / #{$type};\n  } @else {\n    container-type: #{$type};\n  }\n}\n\n// Container query of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider within the container.\n//\n//    @include container-breakpoint-up(md) { ... }\n//    @include container-breakpoint-up(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-up($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower within the container.\n//\n//    @include container-breakpoint-down(lg) { ... }\n//    @include container-breakpoint-down(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-down($name, $container-name: null, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @if $container-name {\n      @container #{$container-name} (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints within the container.\n//\n//    @include container-breakpoint-between(md, xl) { ... }\n//    @include container-breakpoint-between(md, xl, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-between($lower, $upper, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($lower, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($upper, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Container query between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint within the container.\n//\n//    @include container-breakpoint-only(md) { ... }\n//    @include container-breakpoint-only(md, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-only($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($name, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($next, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n// scss-docs-end container-query-mixins\n","// Configuration\n//\n// Variables and settings not related to theme, components, and more go here. It does include layout.\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              true !default;\n$enable-gradients:            false !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        true !default;\n$enable-grid-classes:         true !default;\n$enable-container-classes:    true !default;\n$enable-cssgrid:              true !default;\n$enable-button-pointers:      true !default;\n$enable-validation-icons:     true !default;\n// $enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n\n$enable-dark-mode:            true !default;\n$color-mode-type:             data !default; // `data` or `media-query`\n\n// more to come here…\n\n$color-mode-type:          \"media-query\" !default;\n$color-contrast-dark:      #000 !default;\n$color-contrast-light:     #fff !default;\n$min-contrast-ratio:         4.5 !default;\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  -2: $spacer * -.5,\n  -1: $spacer * -.25,\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n$sizes: (\n  1: $spacer,\n  2: calc($spacer * 2),\n  3: calc($spacer * 3),\n  4: calc($spacer * 4),\n  5: calc($spacer * 5),\n  6: calc($spacer * 6),\n  7: calc($spacer * 7),\n  8: calc($spacer * 8),\n  9: calc($spacer * 9),\n  10: calc($spacer * 10),\n  11: calc($spacer * 11),\n  12: calc($spacer * 12),\n) !default;\n\n// Breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start breakpoints\n$breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 1024px,\n  xl: 1280px,\n  2xl: 1536px\n) !default;\n// scss-docs-end breakpoints\n\n// @include _assert-ascending($breakpoints, \"$breakpoints\");\n// @include _assert-starts-at-zero($breakpoints, \"$breakpoints\");\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-x: 1.5rem !default;\n$grid-gutter-y: 0 !default;\n$grid-row-columns: 6 !default;\n\n$gutters: $spacers !default;\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1200px,\n  2xl: 1440px\n) !default;\n// scss-docs-end container-max-widths\n\n$container-padding-x: $grid-gutter-x !default;\n\n$utilities: () !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n","@use \"../config\" as *;\n@use \"../mixins/grid\" as *;\n\n// mdo-do\n// - check gap utilities as replacement for gutter classes from v5\n\n@layer layout {\n  @if $enable-grid-classes {\n    .row {\n      @include make-row();\n\n      > * {\n        @include make-col-ready();\n      }\n    }\n\n    @include make-grid-columns();\n  }\n\n  @if $enable-cssgrid {\n    .grid {\n      --columns: #{$grid-columns};\n      --rows: 1;\n      --gap: #{$grid-gutter-x};\n\n      display: grid;\n      grid-template-rows: repeat(var(--rows), 1fr);\n      grid-template-columns: repeat(var(--columns), 1fr);\n      gap: var(--gap);\n\n    }\n\n    @include make-cssgrid();\n  }\n\n  // mdo-do: add to utilities?\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n\n  .grid-fill {\n    --gap: #{$grid-gutter-x};\n\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n\n  // .g-col-auto {\n  //   grid-column: auto;\n  // }\n\n  // mdo-do: add to utilities?\n  // .grid-cols-3 {\n  //   --columns: 3;\n  // }\n  // .grid-cols-4 {\n  //   --columns: 4;\n  // }\n  // .grid-cols-6 {\n  //   --columns: 6;\n  // }\n\n  // .grid-full {\n  //   grid-column: 1 / -1;\n  // }\n}\n","@use \"sass:map\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n\n// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter-x: $grid-gutter-x, $gutter-y: $grid-gutter-y) {\n  --gutter-x: #{$gutter-x};\n  --gutter-y: #{$gutter-y};\n  display: flex;\n  flex-wrap: wrap;\n  // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n  margin-inline: calc(-.5 * var(--gutter-x));\n  margin-top: calc(-1 * var(--gutter-y));\n}\n\n@mixin make-col-ready() {\n  // Add box sizing if only the grid is loaded\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  box-sizing: if(sass(meta.variable-exists(include-column-box-sizing) and $include-column-box-sizing): border-box; else: null);\n  // Prevent columns from becoming too narrow when at smaller grid tiers by\n  // always setting `width: 100%;`. This works because we set the width\n  // later on to override this initial width.\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-top: var(--gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n  @if $size {\n    flex: 0 0 auto;\n    width: math.percentage(math.div($size, $columns));\n\n  } @else {\n    flex: 1 1 0;\n    max-width: 100%;\n  }\n}\n\n@mixin make-col-auto() {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n  $num: math.div($size, $columns);\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  margin-inline-start: if(sass($num == 0): 0; else: math.percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n  > * {\n    flex: 0 0 auto;\n    width: math.percentage(math.div(1, $count));\n  }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-x, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n      .col#{$infix} {\n        flex: 1 0 0;\n      }\n\n      .row-cols#{$infix}-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .row-cols#{$infix}-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .col#{$infix}-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .col#{$infix}-#{$i} {\n            @include make-col($i, $columns);\n          }\n        }\n\n        // `$columns - 1` because offsetting by the width of an entire row isn't possible\n        @for $i from 0 through ($columns - 1) {\n          @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .offset#{$infix}-#{$i} {\n              @include make-col-offset($i, $columns);\n            }\n          }\n        }\n      }\n\n      // Gutters\n      //\n      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n      @each $key, $value in $gutters {\n        .g#{$infix}-#{$key},\n        .gx#{$infix}-#{$key} {\n          --gutter-x: #{$value};\n        }\n\n        .g#{$infix}-#{$key},\n        .gy#{$infix}-#{$key} {\n          --gutter-y: #{$value};\n        }\n      }\n    }\n  }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .g-col#{$infix}-#{$i} {\n            grid-column: auto / span $i;\n          }\n        }\n\n        // Start with `1` because `0` is an invalid value.\n        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n        @for $i from 1 through ($columns - 1) {\n          .g-start#{$infix}-#{$i} {\n            grid-column-start: $i;\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n@use \"../mixins/utilities\" as *;\n@use \"../utilities\" as *;\n\n@layer utilities {\n  // Loop over each breakpoint\n  @each $breakpoint in map.keys($breakpoints) {\n\n    // Generate media query if needed\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if meta.type-of($utility) == \"map\" and (map.get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix);\n        }\n      }\n    }\n  }\n\n  // Print utilities\n  @media print {\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Then check if the utility needs print styles\n      @if meta.type-of($utility) == \"map\" and map.get($utility, print) == true {\n        @include generate-utility($utility, \"-print\");\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n\n// stylelint-disable scss/dollar-variable-pattern\n\n// Utility generator\n\n// - Utilities can use three different types of selectors:\n//   - class: .class\n//   - attr-starts: [class^=\"class\"]\n//   - attr-includes: [class*=\"class\"]\n// - Utilities can generate regular CSS properties and CSS custom properties\n// - Utilities can be responsive or not\n// - Utilities can have state variants (e.g., hover, focus, active)\n// - Utilities can define local CSS variables\n//\n// CSS custom properties can be generated in two ways:\n//\n// 1. Property map with null values (CSS var receives the utility value):\n// \"bg-color\": (\n//   property: (\n//     \"--bg\": null,\n//     \"background-color\": var(--bg)\n//   ),\n//   class: bg,\n//   values: (\n//     primary: var(--blue-500),\n//   )\n// )\n// Generates:\n// .bg-primary {\n//   --bs-bg: var(--bs-blue-500);\n//   background-color: var(--bs-bg);\n// }\n//\n// 2. Variables map (static CSS custom properties on every class):\n// \"link-underline\": (\n//   property: text-decoration-color,\n//   class: link-underline,\n//   variables: (\n//     \"link-underline-opacity\": 1\n//   ),\n//   values: (...)\n// )\n// Generates:\n// .link-underline {\n//   --bs-link-underline-opacity: 1;\n//   text-decoration-color: ...;\n// }\n\n// Helper mixin to generate CSS properties for both legacy and property map approaches\n@mixin generate-properties($utility, $propertyMap, $properties, $value) {\n  @if $propertyMap != null {\n    // New Property-Value Mapping approach\n    @each $property, $defaultValue in $propertyMap {\n      // If value is a map, check if it has a key for this property\n      // Otherwise, use defaultValue (or $value if defaultValue is null)\n      $actualValue: $defaultValue;\n      @if meta.type-of($value) == \"map\" and map.has-key($value, $property) {\n        $actualValue: map.get($value, $property);\n      } @else if $defaultValue == null {\n        $actualValue: $value;\n      }\n      @if map.get($utility, important) {\n        #{$property}: $actualValue !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $actualValue;\n      }\n    }\n  } @else {\n    // Legacy approach\n    @each $property in $properties {\n      @if map.get($utility, important) {\n        #{$property}: $value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $value;\n      }\n    }\n  }\n}\n\n@mixin generate-utility($utility, $infix: \"\") {\n  // Validate required keys\n  @if not map.has-key($utility, property) {\n    @error \"Utility is missing required `property` key: #{$utility}\";\n  }\n  @if not map.has-key($utility, values) {\n    @error \"Utility is missing required `values` key: #{$utility}\";\n  }\n\n  // Warn on unknown keys (likely typos)\n  $valid-keys: property, values, class, selector, responsive, print, important, state, variables;\n  @each $key in map.keys($utility) {\n    @if not list.index($valid-keys, $key) {\n      @warn \"Unknown utility key `#{$key}` found. Valid keys are: #{$valid-keys}\";\n    }\n  }\n\n  // Determine if we're generating a class, or an attribute selector\n  $selectorType: \"class\";\n  @if map.has-key($utility, selector) {\n    $selectorType: map.get($utility, selector);\n    // Validate selector type\n    $valid-selectors: \"class\", \"attr-starts\", \"attr-includes\";\n    @if not list.index($valid-selectors, $selectorType) {\n      @error \"Invalid `selector` value `#{$selectorType}`. Must be one of: #{$valid-selectors}\";\n    }\n  }\n  // Then get the class name to use in a class (e.g., .class) or in a attribute selector (e.g., [class^=\"class\"])\n  $selectorClass: map.get($utility, class);\n\n  // Attribute selectors require a `class` key\n  @if $selectorType != \"class\" and not map.has-key($utility, class) {\n    @error \"Utility with `selector: #{$selectorType}` requires a `class` key.\";\n  }\n\n  // Get the list or map of values and ensure it's a map\n  $values: map.get($utility, values);\n  @if meta.type-of($values) != \"map\" {\n    @if meta.type-of($values) == \"list\" {\n      $list: ();\n      @each $value in $values {\n        $list: map.merge($list, ($value: $value));\n      }\n      $values: $list;\n    } @else {\n      $values: (null: $values);\n    }\n  }\n\n  // Calculate infix once, before the loop\n  // Note: $infix already includes the leading dash from breakpoint-infix()\n  // $infix: if($infix == \"\", \"\", \"-\" + $infix);\n\n  @each $key, $value in $values {\n    $properties: map.get($utility, property);\n    $propertyMap: null;\n    $customClass: \"\";\n\n    // Check if property is a map (new Property-Value Mapping approach)\n    // @debug \"Properties type: #{meta.type-of($properties)}\";\n    // @debug \"Properties: #{$properties}\";\n    @if meta.type-of($properties) == \"map\" {\n      $propertyMap: $properties;\n      // For property maps, we need to determine the class from the utility definition\n      $customClass: \"\";\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      }\n    } @else {\n      // Legacy approach: Multiple properties are possible, for example with vertical or horizontal margins or paddings\n      @if meta.type-of($properties) == \"string\" {\n        $properties: list.append((), $properties);\n      }\n      // Use custom class if present, otherwise use the first value from the list of properties\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      } @else {\n        $customClass: list.nth($properties, 1);\n      }\n      @if $customClass == null {\n        $customClass: \"\";\n      }\n    }\n\n    // Use custom CSS variable name if present, otherwise default to `class`\n    // mdo-do: restore?\n    // $css-variable-name: if(map.has-key($utility, css-variable-name), map.get($utility, css-variable-name), map.get($utility, class));\n\n    // State params to generate state variants\n    $state: ();\n    @if map.has-key($utility, state) {\n      $state: map.get($utility, state);\n    }\n\n    // $infix: if($customClass == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (e.g. with shadow class)\n    $customClassModifier: \"\";\n    @if $key {\n      @if $customClass == \"\" and $infix == \"\" {\n        $customClassModifier: $key;\n      } @else {\n        $customClassModifier: \"-\" + $key;\n      }\n    }\n\n    $selector: \"\";\n    @if $selectorType == \"class\" {\n      // Use the fallback of the first property if no `class` key is used\n      @if $customClass != \"\" {\n        $selector: \".#{$customClass + $infix + $customClassModifier}\";\n      } @else {\n        $selector: \".#{$selectorClass + $infix + $customClassModifier}\";\n      }\n    } @else if $selectorType == \"attr-starts\" {\n      $selector: \"[class^=\\\"#{$selectorClass}\\\"]\";\n    } @else if $selectorType == \"attr-includes\" {\n      $selector: \"[class*=\\\"#{$selectorClass}\\\"]\";\n    }\n\n    // @debug $utility;\n    // @debug $selectorType;\n    // @debug $selector;\n    // @debug $properties;\n    // @debug $values;\n\n    #{$selector} {\n      // Generate CSS custom properties (variables) if provided\n      // Variables receive the current utility value, then properties reference them\n      @if map.has-key($utility, variables) {\n        $variables: map.get($utility, variables);\n        @if meta.type-of($variables) == \"list\" {\n          // If variables is a list, each variable gets the utility value\n          @each $var-name in $variables {\n            --#{$var-name}: #{$value};\n          }\n        } @else if meta.type-of($variables) == \"map\" {\n          // If variables is a map, use the provided values (for static variables)\n          @each $var-key, $var-value in $variables {\n            --#{$var-key}: #{$var-value};\n          }\n        }\n      }\n      @include generate-properties($utility, $propertyMap, $properties, $value);\n    }\n\n    // Generate state variants\n    @if $state != () {\n      @each $state-variant in $state {\n        #{$selector}-#{$state-variant}:#{$state-variant} {\n          // Generate CSS custom properties (variables) if provided\n          @if map.has-key($utility, variables) {\n            $variables: map.get($utility, variables);\n            @if meta.type-of($variables) == \"list\" {\n              // If variables is a list, each variable gets the utility value\n              @each $var-name in $variables {\n                --#{$var-name}: #{$value};\n              }\n            } @else if meta.type-of($variables) == \"map\" {\n              // If variables is a map, use the provided values (for static variables)\n              @each $var-key, $var-value in $variables {\n                --#{$var-key}: #{$var-value};\n              }\n            }\n          }\n          @include generate-properties($utility, $propertyMap, $properties, $value);\n        }\n      }\n    }\n  }\n}\n","@use \"banner\" with (\n  $file: \"Grid\"\n);\n\n@use \"config\" as *;\n@use \"functions\" as *;\n\n@forward \"utilities\"; // Make utilities available downstream\n@use \"utilities\" as *; // Bring utilities into the current namespace\n\n@forward \"layout/containers\";\n@forward \"layout/grid\";\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$utilities: map-get-multiple(\n  $utilities,\n  (\n    \"display\",\n    \"order\",\n    \"flex\",\n    \"flex-direction\",\n    \"flex-grow\",\n    \"flex-shrink\",\n    \"flex-wrap\",\n    \"justify-content\",\n    \"justify-items\",\n    \"align-items\",\n    \"align-content\",\n    \"align-self\",\n    \"place-items\",\n    \"margin\",\n    \"margin-x\",\n    \"margin-y\",\n    \"margin-top\",\n    \"margin-end\",\n    \"margin-bottom\",\n    \"margin-start\",\n    \"negative-margin\",\n    \"negative-margin-x\",\n    \"negative-margin-y\",\n    \"negative-margin-top\",\n    \"negative-margin-end\",\n    \"negative-margin-bottom\",\n    \"negative-margin-start\",\n    \"padding\",\n    \"padding-x\",\n    \"padding-y\",\n    \"padding-top\",\n    \"padding-end\",\n    \"padding-bottom\",\n    \"padding-start\",\n  )\n);\n\n// check-unused-imports-disable-next-line — side-effect import: generates utility CSS.\n@use \"utilities/api\";\n\n:root {\n  @each $name, $value in $breakpoints {\n    --breakpoint-#{$name}: #{$value};\n  }\n}\n"]}
\ No newline at end of file
+{"version":3,"sources":["../../scss/_banner.scss","../../scss/layout/_containers.scss","bootstrap-grid.css","../../scss/layout/_breakpoints.scss","../../scss/_config.scss","../../scss/layout/_grid.scss","../../scss/mixins/_grid.scss","../../scss/utilities/_api.scss","../../scss/mixins/_utilities.scss","../../scss/bootstrap-grid.scss"],"names":[],"mappings":"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;EJ86BV;EI/6BQ;IACE,wBAAA;EJi7BV;EIl7BQ;IACE,wBAAA;EJo7BV;EIr7BQ;IACE,wBAAA;EJu7BV;EIx7BQ;IACE,wBAAA;EJ07BV;EI37BQ;IACE,wBAAA;EJ67BV;EI97BQ;IACE,wBAAA;EJg8BV;EIj8BQ;IACE,wBAAA;EJm8BV;EIp8BQ;IACE,yBAAA;EJs8BV;EIv8BQ;IACE,yBAAA;EJy8BV;EI18BQ;IACE,yBAAA;EJ48BV;EIr8BQ;IACE,oBAFS;EJy8BnB;EIx8BQ;IACE,oBAFS;EJ48BnB;EI38BQ;IACE,oBAFS;EJ+8BnB;EI98BQ;IACE,oBAFS;EJk9BnB;EIj9BQ;IACE,oBAFS;EJq9BnB;EIp9BQ;IACE,oBAFS;EJw9BnB;EIv9BQ;IACE,oBAFS;EJ29BnB;EI19BQ;IACE,oBAFS;EJ89BnB;EI79BQ;IACE,oBAFS;EJi+BnB;EIh+BQ;IACE,qBAFS;EJo+BnB;EIn+BQ;IACE,qBAFS;EJu+BnB;EClhCE;IGoCM;MACE,wBAAA;IJi/BR;IIl/BM;MACE,wBAAA;IJo/BR;IIr/BM;MACE,wBAAA;IJu/BR;IIx/BM;MACE,wBAAA;IJ0/BR;II3/BM;MACE,wBAAA;IJ6/BR;II9/BM;MACE,wBAAA;IJggCR;IIjgCM;MACE,wBAAA;IJmgCR;IIpgCM;MACE,wBAAA;IJsgCR;IIvgCM;MACE,wBAAA;IJygCR;II1gCM;MACE,yBAAA;IJ4gCR;II7gCM;MACE,yBAAA;IJ+gCR;IIhhCM;MACE,yBAAA;IJkhCR;II3gCM;MACE,oBAFS;IJ+gCjB;II9gCM;MACE,oBAFS;IJkhCjB;IIjhCM;MACE,oBAFS;IJqhCjB;IIphCM;MACE,oBAFS;IJwhCjB;IIvhCM;MACE,oBAFS;IJ2hCjB;II1hCM;MACE,oBAFS;IJ8hCjB;II7hCM;MACE,oBAFS;IJiiCjB;IIhiCM;MACE,oBAFS;IJoiCjB;IIniCM;MACE,oBAFS;IJuiCjB;IItiCM;MACE,qBAFS;IJ0iCjB;IIziCM;MACE,qBAFS;IJ6iCjB;EACF;ECzlCE;IGoCM;MACE,wBAAA;IJwjCR;IIzjCM;MACE,wBAAA;IJ2jCR;II5jCM;MACE,wBAAA;IJ8jCR;II/jCM;MACE,wBAAA;IJikCR;IIlkCM;MACE,wBAAA;IJokCR;IIrkCM;MACE,wBAAA;IJukCR;IIxkCM;MACE,wBAAA;IJ0kCR;II3kCM;MACE,wBAAA;IJ6kCR;II9kCM;MACE,wBAAA;IJglCR;IIjlCM;MACE,yBAAA;IJmlCR;IIplCM;MACE,yBAAA;IJslCR;IIvlCM;MACE,yBAAA;IJylCR;IIllCM;MACE,oBAFS;IJslCjB;IIrlCM;MACE,oBAFS;IJylCjB;IIxlCM;MACE,oBAFS;IJ4lCjB;II3lCM;MACE,oBAFS;IJ+lCjB;II9lCM;MACE,oBAFS;IJkmCjB;IIjmCM;MACE,oBAFS;IJqmCjB;IIpmCM;MACE,oBAFS;IJwmCjB;IIvmCM;MACE,oBAFS;IJ2mCjB;II1mCM;MACE,oBAFS;IJ8mCjB;II7mCM;MACE,qBAFS;IJinCjB;IIhnCM;MACE,qBAFS;IJonCjB;EACF;EChqCE;IGoCM;MACE,wBAAA;IJ+nCR;IIhoCM;MACE,wBAAA;IJkoCR;IInoCM;MACE,wBAAA;IJqoCR;IItoCM;MACE,wBAAA;IJwoCR;IIzoCM;MACE,wBAAA;IJ2oCR;II5oCM;MACE,wBAAA;IJ8oCR;II/oCM;MACE,wBAAA;IJipCR;IIlpCM;MACE,wBAAA;IJopCR;IIrpCM;MACE,wBAAA;IJupCR;IIxpCM;MACE,yBAAA;IJ0pCR;II3pCM;MACE,yBAAA;IJ6pCR;II9pCM;MACE,yBAAA;IJgqCR;IIzpCM;MACE,oBAFS;IJ6pCjB;II5pCM;MACE,oBAFS;IJgqCjB;II/pCM;MACE,oBAFS;IJmqCjB;IIlqCM;MACE,oBAFS;IJsqCjB;IIrqCM;MACE,oBAFS;IJyqCjB;IIxqCM;MACE,oBAFS;IJ4qCjB;II3qCM;MACE,oBAFS;IJ+qCjB;II9qCM;MACE,oBAFS;IJkrCjB;IIjrCM;MACE,oBAFS;IJqrCjB;IIprCM;MACE,qBAFS;IJwrCjB;IIvrCM;MACE,qBAFS;IJ2rCjB;EACF;ECvuCE;IGoCM;MACE,wBAAA;IJssCR;IIvsCM;MACE,wBAAA;IJysCR;II1sCM;MACE,wBAAA;IJ4sCR;II7sCM;MACE,wBAAA;IJ+sCR;IIhtCM;MACE,wBAAA;IJktCR;IIntCM;MACE,wBAAA;IJqtCR;IIttCM;MACE,wBAAA;IJwtCR;IIztCM;MACE,wBAAA;IJ2tCR;II5tCM;MACE,wBAAA;IJ8tCR;II/tCM;MACE,yBAAA;IJiuCR;IIluCM;MACE,yBAAA;IJouCR;IIruCM;MACE,yBAAA;IJuuCR;IIhuCM;MACE,oBAFS;IJouCjB;IInuCM;MACE,oBAFS;IJuuCjB;IItuCM;MACE,oBAFS;IJ0uCjB;IIzuCM;MACE,oBAFS;IJ6uCjB;II5uCM;MACE,oBAFS;IJgvCjB;II/uCM;MACE,oBAFS;IJmvCjB;IIlvCM;MACE,oBAFS;IJsvCjB;IIrvCM;MACE,oBAFS;IJyvCjB;IIxvCM;MACE,oBAFS;IJ4vCjB;II3vCM;MACE,qBAFS;IJ+vCjB;II9vCM;MACE,qBAFS;IJkwCjB;EACF;EC9yCE;IGoCM;MACE,wBAAA;IJ6wCR;II9wCM;MACE,wBAAA;IJgxCR;IIjxCM;MACE,wBAAA;IJmxCR;IIpxCM;MACE,wBAAA;IJsxCR;IIvxCM;MACE,wBAAA;IJyxCR;II1xCM;MACE,wBAAA;IJ4xCR;II7xCM;MACE,wBAAA;IJ+xCR;IIhyCM;MACE,wBAAA;IJkyCR;IInyCM;MACE,wBAAA;IJqyCR;IItyCM;MACE,yBAAA;IJwyCR;IIzyCM;MACE,yBAAA;IJ2yCR;II5yCM;MACE,yBAAA;IJ8yCR;IIvyCM;MACE,oBAFS;IJ2yCjB;II1yCM;MACE,oBAFS;IJ8yCjB;II7yCM;MACE,oBAFS;IJizCjB;IIhzCM;MACE,oBAFS;IJozCjB;IInzCM;MACE,oBAFS;IJuzCjB;IItzCM;MACE,oBAFS;IJ0zCjB;IIzzCM;MACE,oBAFS;IJ6zCjB;II5zCM;MACE,oBAFS;IJg0CjB;II/zCM;MACE,oBAFS;IJm0CjB;IIl0CM;MACE,qBAFS;IJs0CjB;IIr0CM;MACE,qBAFS;IJy0CjB;EACF;EG17CA;IACE,8BAAA;EH47CF;EGz7CA;IACE,gBAAA;IAEA,aAAA;IACA,uDAAA;IACA,mBAAA;IACA,kBAAA;EH07CF;AACF;AKl+CA;ECyMI;IApII,eA+CO;ENk3Cb;EM7xCE;IApII,qBA+CO;ENq3Cb;EMhyCE;IApII,cA+CO;ENw3Cb;EMnyCE;IApII,aA+CO;EN23Cb;EMtyCE;IApII,oBA+CO;EN83Cb;EMzyCE;IApII,cA+CO;ENi4Cb;EM5yCE;IApII,kBA+CO;ENo4Cb;EM/yCE;IApII,mBA+CO;ENu4Cb;EMlzCE;IApII,aA+CO;EN04Cb;EMrzCE;IApII,oBA+CO;EN64Cb;EMxzCE;IApII,iBA+CO;ENg5Cb;EM3zCE;IApII,kBA+CO;ENm5Cb;EM9zCE;IApII,aA+CO;ENs5Cb;EMj0CE;IApII,cA0CG;EN85CT;EMp0CE;IApII,mBA+CO;EN45Cb;EMv0CE;IApII,sBA+CO;EN+5Cb;EM10CE;IApII,2BA+CO;ENk6Cb;EM70CE;IApII,8BA+CO;ENq6Cb;EMh1CE;IApII,YA0CG;EN66CT;EMn1CE;IApII,YA0CG;ENg7CT;EMt1CE;IApII,cA0CG;ENm7CT;EMz1CE;IApII,cA0CG;ENs7CT;EM51CE;IApII,eA+CO;ENo7Cb;EM/1CE;IApII,iBA+CO;ENu7Cb;EMl2CE;IApII,uBA+CO;EN07Cb;EMr2CE;IApII,2BA0CG;ENk8CT;EMx2CE;IApII,yBA0CG;ENq8CT;EM32CE;IApII,uBA0CG;ENw8CT;EM92CE;IApII,8BA0CG;EN28CT;EMj3CE;IApII,6BA0CG;EN88CT;EMp3CE;IApII,6BA0CG;ENi9CT;EMv3CE;IApII,oBA0CG;ENo9CT;EM13CE;IApII,kBA0CG;ENu9CT;EM73CE;IApII,qBA0CG;EN09CT;EMh4CE;IApII,sBA0CG;EN69CT;EMn4CE;IApII,uBA0CG;ENg+CT;EMt4CE;IApII,qBA0CG;ENm+CT;EMz4CE;IApII,mBA0CG;ENs+CT;EM54CE;IApII,qBA0CG;ENy+CT;EM/4CE;IApII,oBA0CG;EN4+CT;EMl5CE;IApII,yBA0CG;EN++CT;EMr5CE;IApII,uBA0CG;ENk/CT;EMx5CE;IApII,qBA0CG;ENq/CT;EM35CE;IApII,4BA0CG;ENw/CT;EM95CE;IApII,2BA0CG;EN2/CT;EMj6CE;IApII,sBA0CG;EN8/CT;EMp6CE;IApII,gBA0CG;ENigDT;EMv6CE;IApII,sBA0CG;ENogDT;EM16CE;IApII,oBA0CG;ENugDT;EM76CE;IApII,kBA0CG;EN0gDT;EMh7CE;IApII,oBA0CG;EN6gDT;EMn7CE;IApII,mBA0CG;ENghDT;EMt7CE;IApII,kBA0CG;ENmhDT;EMz7CE;IApII,gBA0CG;ENshDT;EM57CE;IApII,mBA0CG;ENyhDT;EM/7CE;IApII,oBA0CG;EN4hDT;EMl8CE;IApII,qCA0CG;EN+hDT;EMr8CE;IApII,qCA0CG;ENkiDT;EMx8CE;IApII,qCA0CG;ENqiDT;EM38CE;IApII,qCA0CG;ENwiDT;EM98CE;IApII,mBA0CG;EN2iDT;EMj9CE;IApII,mBA+CO;ENyiDb;EMp9CE;IApII,sBA+CO;EN4iDb;EMv9CE;IApII,qBA+CO;EN+iDb;EM19CE;IApII,SA0CG;ENujDT;EM79CE;IApII,QA0CG;EN0jDT;EMh+CE;IApII,QA0CG;EN6jDT;EMn+CE;IApII,QA0CG;ENgkDT;EMt+CE;IApII,QA0CG;ENmkDT;EMz+CE;IApII,QA0CG;ENskDT;EM5+CE;IApII,QA0CG;ENykDT;EM/+CE;IApII,QA0CG;EN4kDT;EMl/CE;IApII,SA0CG;EN+kDT;EMr/CE;IApII,eA0CG;ENklDT;EMx/CE;IApII,cA0CG;ENqlDT;EM3/CE;IApII,YA0CG;ENwlDT;EM9/CE;IApII,cA0CG;EN2lDT;EMjgDE;IApII,YA0CG;EN8lDT;EMpgDE;IApII,YA0CG;ENimDT;EMvgDE;IApII,gBA0CG;ENomDT;EM1gDE;IApII,sBA0CG;ENumDT;EM7gDE;IApII,qBA0CG;EN0mDT;EMhhDE;IApII,mBA0CG;EN6mDT;EMnhDE;IApII,qBA0CG;ENgnDT;EMthDE;IApII,mBA0CG;ENmnDT;EMzhDE;IApII,mBA0CG;ENsnDT;EM5hDE;IApII,eA0CG;ENynDT;EM/hDE;IApII,qBA0CG;EN4nDT;EMliDE;IApII,oBA0CG;EN+nDT;EMriDE;IApII,kBA0CG;ENkoDT;EMxiDE;IApII,oBA0CG;ENqoDT;EM3iDE;IApII,kBA0CG;ENwoDT;EM9iDE;IApII,kBA0CG;EN2oDT;EMjjDE;IApII,qBA0CG;EN8oDT;EMpjDE;IApII,2BA0CG;ENipDT;EMvjDE;IApII,0BA0CG;ENopDT;EM1jDE;IApII,wBA0CG;ENupDT;EM7jDE;IApII,0BA0CG;EN0pDT;EMhkDE;IApII,wBA0CG;EN6pDT;EMnkDE;IApII,wBA0CG;ENgqDT;EMtkDE;IApII,oBA0CG;ENmqDT;EMzkDE;IApII,0BA0CG;ENsqDT;EM5kDE;IApII,yBA0CG;ENyqDT;EM/kDE;IApII,uBA0CG;EN4qDT;EMllDE;IApII,yBA0CG;EN+qDT;EMrlDE;IApII,uBA0CG;ENkrDT;EMxlDE;IApII,uBA0CG;ENqrDT;EM3lDE;IApII,mBA0CG;ENwrDT;EM9lDE;IApII,yBA0CG;EN2rDT;EMjmDE;IApII,wBA0CG;EN8rDT;EMpmDE;IApII,sBA0CG;ENisDT;EMvmDE;IApII,wBA0CG;ENosDT;EM1mDE;IApII,sBA0CG;ENusDT;EM7mDE;IApII,sBA0CG;EN0sDT;EMhnDE;IApII,sBA0CG;EN6sDT;EMnnDE;IApII,4BA0CG;ENgtDT;EMtnDE;IApII,2BA0CG;ENmtDT;EMznDE;IApII,yBA0CG;ENstDT;EM5nDE;IApII,2BA0CG;ENytDT;EM/nDE;IApII,yBA0CG;EN4tDT;EMloDE;IApII,6BA0CG;EN+tDT;EMroDE;IApII,4BA0CG;ENkuDT;EMxoDE;IApII,yBA0CG;ENquDT;EM3oDE;IApII,UA0CG;ENwuDT;EM9oDE;IApII,gBA0CG;EN2uDT;EMjpDE;IApII,eA0CG;EN8uDT;EMppDE;IApII,aA0CG;ENivDT;EMvpDE;IApII,eA0CG;ENovDT;EM1pDE;IApII,aA0CG;ENuvDT;EM7pDE;IApII,iBA0CG;EN0vDT;EMhqDE;IApII,uBA0CG;EN6vDT;EMnqDE;IApII,sBA0CG;ENgwDT;EMtqDE;IApII,oBA0CG;ENmwDT;EMzqDE;IApII,sBA0CG;ENswDT;EM5qDE;IApII,oBA0CG;ENywDT;EM/qDE;IApII,gBA0CG;EN4wDT;EMlrDE;IApII,sBA0CG;EN+wDT;EMrrDE;IApII,qBA0CG;ENkxDT;EMxrDE;IApII,mBA0CG;ENqxDT;EM3rDE;IApII,qBA0CG;ENwxDT;EM9rDE;IApII,mBA0CG;EN2xDT;EMjsDE;IApII,sBA0CG;EN8xDT;EMpsDE;IApII,4BA0CG;ENiyDT;EMvsDE;IApII,2BA0CG;ENoyDT;EM1sDE;IApII,yBA0CG;ENuyDT;EM7sDE;IApII,2BA0CG;EN0yDT;EMhtDE;IApII,yBA0CG;EN6yDT;EMntDE;IApII,qBA0CG;ENgzDT;EMttDE;IApII,2BA0CG;ENmzDT;EMztDE;IApII,0BA0CG;ENszDT;EM5tDE;IApII,wBA0CG;ENyzDT;EM/tDE;IApII,0BA0CG;EN4zDT;EMluDE;IApII,wBA0CG;EN+zDT;EMruDE;IApII,oBA0CG;ENk0DT;EMxuDE;IApII,0BA0CG;ENq0DT;EM3uDE;IApII,yBA0CG;ENw0DT;EM9uDE;IApII,uBA0CG;EN20DT;EMjvDE;IApII,yBA0CG;EN80DT;EMpvDE;IApII,uBA0CG;ENi1DT;EMvvDE;IApII,uBA0CG;ENo1DT;EM1vDE;IApII,6BA0CG;ENu1DT;EM7vDE;IApII,4BA0CG;EN01DT;EMhwDE;IApII,0BA0CG;EN61DT;EMnwDE;IApII,4BA0CG;ENg2DT;EMtwDE;IApII,0BA0CG;ENm2DT;EMzwDE;IApII,MA0CG;ENs2DT;EM5wDE;IApII,YA0CG;ENy2DT;EM/wDE;IApII,WA0CG;EN42DT;EMlxDE;IApII,SA0CG;EN+2DT;EMrxDE;IApII,WA0CG;ENk3DT;EMxxDE;IApII,SA0CG;ENq3DT;EM3xDE;IApII,UA0CG;ENw3DT;EM9xDE;IApII,gBA0CG;EN23DT;EMjyDE;IApII,eA0CG;EN83DT;EMpyDE;IApII,aA0CG;ENi4DT;EMvyDE;IApII,eA0CG;ENo4DT;EM1yDE;IApII,aA0CG;ENu4DT;EM7yDE;IApII,kBA0CG;IA1CH,aA0CG;EN04DT;EMhzDE;IApII,wBA0CG;IA1CH,mBA0CG;EN64DT;EMnzDE;IApII,uBA0CG;IA1CH,kBA0CG;ENg5DT;EMtzDE;IApII,qBA0CG;IA1CH,gBA0CG;ENm5DT;EMzzDE;IApII,uBA0CG;IA1CH,kBA0CG;ENs5DT;EM5zDE;IApII,qBA0CG;IA1CH,gBA0CG;ENy5DT;ECt6DE;IKuGA;MApII,eA+CO;INw5DX;IMn0DA;MApII,qBA+CO;IN25DX;IMt0DA;MApII,cA+CO;IN85DX;IMz0DA;MApII,aA+CO;INi6DX;IM50DA;MApII,oBA+CO;INo6DX;IM/0DA;MApII,cA+CO;INu6DX;IMl1DA;MApII,kBA+CO;IN06DX;IMr1DA;MApII,mBA+CO;IN66DX;IMx1DA;MApII,aA+CO;INg7DX;IM31DA;MApII,oBA+CO;INm7DX;IM91DA;MApII,iBA+CO;INs7DX;IMj2DA;MApII,kBA+CO;INy7DX;IMp2DA;MApII,aA+CO;IN47DX;IMv2DA;MApII,cA0CG;INo8DP;IM12DA;MApII,mBA+CO;INk8DX;IM72DA;MApII,sBA+CO;INq8DX;IMh3DA;MApII,2BA+CO;INw8DX;IMn3DA;MApII,8BA+CO;IN28DX;IMt3DA;MApII,YA0CG;INm9DP;IMz3DA;MApII,YA0CG;INs9DP;IM53DA;MApII,cA0CG;INy9DP;IM/3DA;MApII,cA0CG;IN49DP;IMl4DA;MApII,eA+CO;IN09DX;IMr4DA;MApII,iBA+CO;IN69DX;IMx4DA;MApII,uBA+CO;INg+DX;IM34DA;MApII,2BA0CG;INw+DP;IM94DA;MApII,yBA0CG;IN2+DP;IMj5DA;MApII,uBA0CG;IN8+DP;IMp5DA;MApII,8BA0CG;INi/DP;IMv5DA;MApII,6BA0CG;INo/DP;IM15DA;MApII,6BA0CG;INu/DP;IM75DA;MApII,oBA0CG;IN0/DP;IMh6DA;MApII,kBA0CG;IN6/DP;IMn6DA;MApII,qBA0CG;INggEP;IMt6DA;MApII,sBA0CG;INmgEP;IMz6DA;MApII,uBA0CG;INsgEP;IM56DA;MApII,qBA0CG;INygEP;IM/6DA;MApII,mBA0CG;IN4gEP;IMl7DA;MApII,qBA0CG;IN+gEP;IMr7DA;MApII,oBA0CG;INkhEP;IMx7DA;MApII,yBA0CG;INqhEP;IM37DA;MApII,uBA0CG;INwhEP;IM97DA;MApII,qBA0CG;IN2hEP;IMj8DA;MApII,4BA0CG;IN8hEP;IMp8DA;MApII,2BA0CG;INiiEP;IMv8DA;MApII,sBA0CG;INoiEP;IM18DA;MApII,gBA0CG;INuiEP;IM78DA;MApII,sBA0CG;IN0iEP;IMh9DA;MApII,oBA0CG;IN6iEP;IMn9DA;MApII,kBA0CG;INgjEP;IMt9DA;MApII,oBA0CG;INmjEP;IMz9DA;MApII,mBA0CG;INsjEP;IM59DA;MApII,kBA0CG;INyjEP;IM/9DA;MApII,gBA0CG;IN4jEP;IMl+DA;MApII,mBA0CG;IN+jEP;IMr+DA;MApII,oBA0CG;INkkEP;IMx+DA;MApII,qCA0CG;INqkEP;IM3+DA;MApII,qCA0CG;INwkEP;IM9+DA;MApII,qCA0CG;IN2kEP;IMj/DA;MApII,qCA0CG;IN8kEP;IMp/DA;MApII,mBA0CG;INilEP;IMv/DA;MApII,mBA+CO;IN+kEX;IM1/DA;MApII,sBA+CO;INklEX;IM7/DA;MApII,qBA+CO;INqlEX;IMhgEA;MApII,SA0CG;IN6lEP;IMngEA;MApII,QA0CG;INgmEP;IMtgEA;MApII,QA0CG;INmmEP;IMzgEA;MApII,QA0CG;INsmEP;IM5gEA;MApII,QA0CG;INymEP;IM/gEA;MApII,QA0CG;IN4mEP;IMlhEA;MApII,QA0CG;IN+mEP;IMrhEA;MApII,QA0CG;INknEP;IMxhEA;MApII,SA0CG;INqnEP;IM3hEA;MApII,eA0CG;INwnEP;IM9hEA;MApII,cA0CG;IN2nEP;IMjiEA;MApII,YA0CG;IN8nEP;IMpiEA;MApII,cA0CG;INioEP;IMviEA;MApII,YA0CG;INooEP;IM1iEA;MApII,YA0CG;INuoEP;IM7iEA;MApII,gBA0CG;IN0oEP;IMhjEA;MApII,sBA0CG;IN6oEP;IMnjEA;MApII,qBA0CG;INgpEP;IMtjEA;MApII,mBA0CG;INmpEP;IMzjEA;MApII,qBA0CG;INspEP;IM5jEA;MApII,mBA0CG;INypEP;IM/jEA;MApII,mBA0CG;IN4pEP;IMlkEA;MApII,eA0CG;IN+pEP;IMrkEA;MApII,qBA0CG;INkqEP;IMxkEA;MApII,oBA0CG;INqqEP;IM3kEA;MApII,kBA0CG;INwqEP;IM9kEA;MApII,oBA0CG;IN2qEP;IMjlEA;MApII,kBA0CG;IN8qEP;IMplEA;MApII,kBA0CG;INirEP;IMvlEA;MApII,qBA0CG;INorEP;IM1lEA;MApII,2BA0CG;INurEP;IM7lEA;MApII,0BA0CG;IN0rEP;IMhmEA;MApII,wBA0CG;IN6rEP;IMnmEA;MApII,0BA0CG;INgsEP;IMtmEA;MApII,wBA0CG;INmsEP;IMzmEA;MApII,wBA0CG;INssEP;IM5mEA;MApII,oBA0CG;INysEP;IM/mEA;MApII,0BA0CG;IN4sEP;IMlnEA;MApII,yBA0CG;IN+sEP;IMrnEA;MApII,uBA0CG;INktEP;IMxnEA;MApII,yBA0CG;INqtEP;IM3nEA;MApII,uBA0CG;INwtEP;IM9nEA;MApII,uBA0CG;IN2tEP;IMjoEA;MApII,mBA0CG;IN8tEP;IMpoEA;MApII,yBA0CG;INiuEP;IMvoEA;MApII,wBA0CG;INouEP;IM1oEA;MApII,sBA0CG;INuuEP;IM7oEA;MApII,wBA0CG;IN0uEP;IMhpEA;MApII,sBA0CG;IN6uEP;IMnpEA;MApII,sBA0CG;INgvEP;IMtpEA;MApII,sBA0CG;INmvEP;IMzpEA;MApII,4BA0CG;INsvEP;IM5pEA;MApII,2BA0CG;INyvEP;IM/pEA;MApII,yBA0CG;IN4vEP;IMlqEA;MApII,2BA0CG;IN+vEP;IMrqEA;MApII,yBA0CG;INkwEP;IMxqEA;MApII,6BA0CG;INqwEP;IM3qEA;MApII,4BA0CG;INwwEP;IM9qEA;MApII,yBA0CG;IN2wEP;IMjrEA;MApII,UA0CG;IN8wEP;IMprEA;MApII,gBA0CG;INixEP;IMvrEA;MApII,eA0CG;INoxEP;IM1rEA;MApII,aA0CG;INuxEP;IM7rEA;MApII,eA0CG;IN0xEP;IMhsEA;MApII,aA0CG;IN6xEP;IMnsEA;MApII,iBA0CG;INgyEP;IMtsEA;MApII,uBA0CG;INmyEP;IMzsEA;MApII,sBA0CG;INsyEP;IM5sEA;MApII,oBA0CG;INyyEP;IM/sEA;MApII,sBA0CG;IN4yEP;IMltEA;MApII,oBA0CG;IN+yEP;IMrtEA;MApII,gBA0CG;INkzEP;IMxtEA;MApII,sBA0CG;INqzEP;IM3tEA;MApII,qBA0CG;INwzEP;IM9tEA;MApII,mBA0CG;IN2zEP;IMjuEA;MApII,qBA0CG;IN8zEP;IMpuEA;MApII,mBA0CG;INi0EP;IMvuEA;MApII,sBA0CG;INo0EP;IM1uEA;MApII,4BA0CG;INu0EP;IM7uEA;MApII,2BA0CG;IN00EP;IMhvEA;MApII,yBA0CG;IN60EP;IMnvEA;MApII,2BA0CG;INg1EP;IMtvEA;MApII,yBA0CG;INm1EP;IMzvEA;MApII,qBA0CG;INs1EP;IM5vEA;MApII,2BA0CG;INy1EP;IM/vEA;MApII,0BA0CG;IN41EP;IMlwEA;MApII,wBA0CG;IN+1EP;IMrwEA;MApII,0BA0CG;INk2EP;IMxwEA;MApII,wBA0CG;INq2EP;IM3wEA;MApII,oBA0CG;INw2EP;IM9wEA;MApII,0BA0CG;IN22EP;IMjxEA;MApII,yBA0CG;IN82EP;IMpxEA;MApII,uBA0CG;INi3EP;IMvxEA;MApII,yBA0CG;INo3EP;IM1xEA;MApII,uBA0CG;INu3EP;IM7xEA;MApII,uBA0CG;IN03EP;IMhyEA;MApII,6BA0CG;IN63EP;IMnyEA;MApII,4BA0CG;INg4EP;IMtyEA;MApII,0BA0CG;INm4EP;IMzyEA;MApII,4BA0CG;INs4EP;IM5yEA;MApII,0BA0CG;INy4EP;IM/yEA;MApII,MA0CG;IN44EP;IMlzEA;MApII,YA0CG;IN+4EP;IMrzEA;MApII,WA0CG;INk5EP;IMxzEA;MApII,SA0CG;INq5EP;IM3zEA;MApII,WA0CG;INw5EP;IM9zEA;MApII,SA0CG;IN25EP;IMj0EA;MApII,UA0CG;IN85EP;IMp0EA;MApII,gBA0CG;INi6EP;IMv0EA;MApII,eA0CG;INo6EP;IM10EA;MApII,aA0CG;INu6EP;IM70EA;MApII,eA0CG;IN06EP;IMh1EA;MApII,aA0CG;IN66EP;IMn1EA;MApII,kBA0CG;MA1CH,aA0CG;INg7EP;IMt1EA;MApII,wBA0CG;MA1CH,mBA0CG;INm7EP;IMz1EA;MApII,uBA0CG;MA1CH,kBA0CG;INs7EP;IM51EA;MApII,qBA0CG;MA1CH,gBA0CG;INy7EP;IM/1EA;MApII,uBA0CG;MA1CH,kBA0CG;IN47EP;IMl2EA;MApII,qBA0CG;MA1CH,gBA0CG;IN+7EP;EACF;EC78EE;IKuGA;MApII,eA+CO;IN+7EX;IM12EA;MApII,qBA+CO;INk8EX;IM72EA;MApII,cA+CO;INq8EX;IMh3EA;MApII,aA+CO;INw8EX;IMn3EA;MApII,oBA+CO;IN28EX;IMt3EA;MApII,cA+CO;IN88EX;IMz3EA;MApII,kBA+CO;INi9EX;IM53EA;MApII,mBA+CO;INo9EX;IM/3EA;MApII,aA+CO;INu9EX;IMl4EA;MApII,oBA+CO;IN09EX;IMr4EA;MApII,iBA+CO;IN69EX;IMx4EA;MApII,kBA+CO;INg+EX;IM34EA;MApII,aA+CO;INm+EX;IM94EA;MApII,cA0CG;IN2+EP;IMj5EA;MApII,mBA+CO;INy+EX;IMp5EA;MApII,sBA+CO;IN4+EX;IMv5EA;MApII,2BA+CO;IN++EX;IM15EA;MApII,8BA+CO;INk/EX;IM75EA;MApII,YA0CG;IN0/EP;IMh6EA;MApII,YA0CG;IN6/EP;IMn6EA;MApII,cA0CG;INggFP;IMt6EA;MApII,cA0CG;INmgFP;IMz6EA;MApII,eA+CO;INigFX;IM56EA;MApII,iBA+CO;INogFX;IM/6EA;MApII,uBA+CO;INugFX;IMl7EA;MApII,2BA0CG;IN+gFP;IMr7EA;MApII,yBA0CG;INkhFP;IMx7EA;MApII,uBA0CG;INqhFP;IM37EA;MApII,8BA0CG;INwhFP;IM97EA;MApII,6BA0CG;IN2hFP;IMj8EA;MApII,6BA0CG;IN8hFP;IMp8EA;MApII,oBA0CG;INiiFP;IMv8EA;MApII,kBA0CG;INoiFP;IM18EA;MApII,qBA0CG;INuiFP;IM78EA;MApII,sBA0CG;IN0iFP;IMh9EA;MApII,uBA0CG;IN6iFP;IMn9EA;MApII,qBA0CG;INgjFP;IMt9EA;MApII,mBA0CG;INmjFP;IMz9EA;MApII,qBA0CG;INsjFP;IM59EA;MApII,oBA0CG;INyjFP;IM/9EA;MApII,yBA0CG;IN4jFP;IMl+EA;MApII,uBA0CG;IN+jFP;IMr+EA;MApII,qBA0CG;INkkFP;IMx+EA;MApII,4BA0CG;INqkFP;IM3+EA;MApII,2BA0CG;INwkFP;IM9+EA;MApII,sBA0CG;IN2kFP;IMj/EA;MApII,gBA0CG;IN8kFP;IMp/EA;MApII,sBA0CG;INilFP;IMv/EA;MApII,oBA0CG;INolFP;IM1/EA;MApII,kBA0CG;INulFP;IM7/EA;MApII,oBA0CG;IN0lFP;IMhgFA;MApII,mBA0CG;IN6lFP;IMngFA;MApII,kBA0CG;INgmFP;IMtgFA;MApII,gBA0CG;INmmFP;IMzgFA;MApII,mBA0CG;INsmFP;IM5gFA;MApII,oBA0CG;INymFP;IM/gFA;MApII,qCA0CG;IN4mFP;IMlhFA;MApII,qCA0CG;IN+mFP;IMrhFA;MApII,qCA0CG;INknFP;IMxhFA;MApII,qCA0CG;INqnFP;IM3hFA;MApII,mBA0CG;INwnFP;IM9hFA;MApII,mBA+CO;INsnFX;IMjiFA;MApII,sBA+CO;INynFX;IMpiFA;MApII,qBA+CO;IN4nFX;IMviFA;MApII,SA0CG;INooFP;IM1iFA;MApII,QA0CG;INuoFP;IM7iFA;MApII,QA0CG;IN0oFP;IMhjFA;MApII,QA0CG;IN6oFP;IMnjFA;MApII,QA0CG;INgpFP;IMtjFA;MApII,QA0CG;INmpFP;IMzjFA;MApII,QA0CG;INspFP;IM5jFA;MApII,QA0CG;INypFP;IM/jFA;MApII,SA0CG;IN4pFP;IMlkFA;MApII,eA0CG;IN+pFP;IMrkFA;MApII,cA0CG;INkqFP;IMxkFA;MApII,YA0CG;INqqFP;IM3kFA;MApII,cA0CG;INwqFP;IM9kFA;MApII,YA0CG;IN2qFP;IMjlFA;MApII,YA0CG;IN8qFP;IMplFA;MApII,gBA0CG;INirFP;IMvlFA;MApII,sBA0CG;INorFP;IM1lFA;MApII,qBA0CG;INurFP;IM7lFA;MApII,mBA0CG;IN0rFP;IMhmFA;MApII,qBA0CG;IN6rFP;IMnmFA;MApII,mBA0CG;INgsFP;IMtmFA;MApII,mBA0CG;INmsFP;IMzmFA;MApII,eA0CG;INssFP;IM5mFA;MApII,qBA0CG;INysFP;IM/mFA;MApII,oBA0CG;IN4sFP;IMlnFA;MApII,kBA0CG;IN+sFP;IMrnFA;MApII,oBA0CG;INktFP;IMxnFA;MApII,kBA0CG;INqtFP;IM3nFA;MApII,kBA0CG;INwtFP;IM9nFA;MApII,qBA0CG;IN2tFP;IMjoFA;MApII,2BA0CG;IN8tFP;IMpoFA;MApII,0BA0CG;INiuFP;IMvoFA;MApII,wBA0CG;INouFP;IM1oFA;MApII,0BA0CG;INuuFP;IM7oFA;MApII,wBA0CG;IN0uFP;IMhpFA;MApII,wBA0CG;IN6uFP;IMnpFA;MApII,oBA0CG;INgvFP;IMtpFA;MApII,0BA0CG;INmvFP;IMzpFA;MApII,yBA0CG;INsvFP;IM5pFA;MApII,uBA0CG;INyvFP;IM/pFA;MApII,yBA0CG;IN4vFP;IMlqFA;MApII,uBA0CG;IN+vFP;IMrqFA;MApII,uBA0CG;INkwFP;IMxqFA;MApII,mBA0CG;INqwFP;IM3qFA;MApII,yBA0CG;INwwFP;IM9qFA;MApII,wBA0CG;IN2wFP;IMjrFA;MApII,sBA0CG;IN8wFP;IMprFA;MApII,wBA0CG;INixFP;IMvrFA;MApII,sBA0CG;INoxFP;IM1rFA;MApII,sBA0CG;INuxFP;IM7rFA;MApII,sBA0CG;IN0xFP;IMhsFA;MApII,4BA0CG;IN6xFP;IMnsFA;MApII,2BA0CG;INgyFP;IMtsFA;MApII,yBA0CG;INmyFP;IMzsFA;MApII,2BA0CG;INsyFP;IM5sFA;MApII,yBA0CG;INyyFP;IM/sFA;MApII,6BA0CG;IN4yFP;IMltFA;MApII,4BA0CG;IN+yFP;IMrtFA;MApII,yBA0CG;INkzFP;IMxtFA;MApII,UA0CG;INqzFP;IM3tFA;MApII,gBA0CG;INwzFP;IM9tFA;MApII,eA0CG;IN2zFP;IMjuFA;MApII,aA0CG;IN8zFP;IMpuFA;MApII,eA0CG;INi0FP;IMvuFA;MApII,aA0CG;INo0FP;IM1uFA;MApII,iBA0CG;INu0FP;IM7uFA;MApII,uBA0CG;IN00FP;IMhvFA;MApII,sBA0CG;IN60FP;IMnvFA;MApII,oBA0CG;INg1FP;IMtvFA;MApII,sBA0CG;INm1FP;IMzvFA;MApII,oBA0CG;INs1FP;IM5vFA;MApII,gBA0CG;INy1FP;IM/vFA;MApII,sBA0CG;IN41FP;IMlwFA;MApII,qBA0CG;IN+1FP;IMrwFA;MApII,mBA0CG;INk2FP;IMxwFA;MApII,qBA0CG;INq2FP;IM3wFA;MApII,mBA0CG;INw2FP;IM9wFA;MApII,sBA0CG;IN22FP;IMjxFA;MApII,4BA0CG;IN82FP;IMpxFA;MApII,2BA0CG;INi3FP;IMvxFA;MApII,yBA0CG;INo3FP;IM1xFA;MApII,2BA0CG;INu3FP;IM7xFA;MApII,yBA0CG;IN03FP;IMhyFA;MApII,qBA0CG;IN63FP;IMnyFA;MApII,2BA0CG;INg4FP;IMtyFA;MApII,0BA0CG;INm4FP;IMzyFA;MApII,wBA0CG;INs4FP;IM5yFA;MApII,0BA0CG;INy4FP;IM/yFA;MApII,wBA0CG;IN44FP;IMlzFA;MApII,oBA0CG;IN+4FP;IMrzFA;MApII,0BA0CG;INk5FP;IMxzFA;MApII,yBA0CG;INq5FP;IM3zFA;MApII,uBA0CG;INw5FP;IM9zFA;MApII,yBA0CG;IN25FP;IMj0FA;MApII,uBA0CG;IN85FP;IMp0FA;MApII,uBA0CG;INi6FP;IMv0FA;MApII,6BA0CG;INo6FP;IM10FA;MApII,4BA0CG;INu6FP;IM70FA;MApII,0BA0CG;IN06FP;IMh1FA;MApII,4BA0CG;IN66FP;IMn1FA;MApII,0BA0CG;INg7FP;IMt1FA;MApII,MA0CG;INm7FP;IMz1FA;MApII,YA0CG;INs7FP;IM51FA;MApII,WA0CG;INy7FP;IM/1FA;MApII,SA0CG;IN47FP;IMl2FA;MApII,WA0CG;IN+7FP;IMr2FA;MApII,SA0CG;INk8FP;IMx2FA;MApII,UA0CG;INq8FP;IM32FA;MApII,gBA0CG;INw8FP;IM92FA;MApII,eA0CG;IN28FP;IMj3FA;MApII,aA0CG;IN88FP;IMp3FA;MApII,eA0CG;INi9FP;IMv3FA;MApII,aA0CG;INo9FP;IM13FA;MApII,kBA0CG;MA1CH,aA0CG;INu9FP;IM73FA;MApII,wBA0CG;MA1CH,mBA0CG;IN09FP;IMh4FA;MApII,uBA0CG;MA1CH,kBA0CG;IN69FP;IMn4FA;MApII,qBA0CG;MA1CH,gBA0CG;INg+FP;IMt4FA;MApII,uBA0CG;MA1CH,kBA0CG;INm+FP;IMz4FA;MApII,qBA0CG;MA1CH,gBA0CG;INs+FP;EACF;ECp/FE;IKuGA;MApII,eA+CO;INs+FX;IMj5FA;MApII,qBA+CO;INy+FX;IMp5FA;MApII,cA+CO;IN4+FX;IMv5FA;MApII,aA+CO;IN++FX;IM15FA;MApII,oBA+CO;INk/FX;IM75FA;MApII,cA+CO;INq/FX;IMh6FA;MApII,kBA+CO;INw/FX;IMn6FA;MApII,mBA+CO;IN2/FX;IMt6FA;MApII,aA+CO;IN8/FX;IMz6FA;MApII,oBA+CO;INigGX;IM56FA;MApII,iBA+CO;INogGX;IM/6FA;MApII,kBA+CO;INugGX;IMl7FA;MApII,aA+CO;IN0gGX;IMr7FA;MApII,cA0CG;INkhGP;IMx7FA;MApII,mBA+CO;INghGX;IM37FA;MApII,sBA+CO;INmhGX;IM97FA;MApII,2BA+CO;INshGX;IMj8FA;MApII,8BA+CO;INyhGX;IMp8FA;MApII,YA0CG;INiiGP;IMv8FA;MApII,YA0CG;INoiGP;IM18FA;MApII,cA0CG;INuiGP;IM78FA;MApII,cA0CG;IN0iGP;IMh9FA;MApII,eA+CO;INwiGX;IMn9FA;MApII,iBA+CO;IN2iGX;IMt9FA;MApII,uBA+CO;IN8iGX;IMz9FA;MApII,2BA0CG;INsjGP;IM59FA;MApII,yBA0CG;INyjGP;IM/9FA;MApII,uBA0CG;IN4jGP;IMl+FA;MApII,8BA0CG;IN+jGP;IMr+FA;MApII,6BA0CG;INkkGP;IMx+FA;MApII,6BA0CG;INqkGP;IM3+FA;MApII,oBA0CG;INwkGP;IM9+FA;MApII,kBA0CG;IN2kGP;IMj/FA;MApII,qBA0CG;IN8kGP;IMp/FA;MApII,sBA0CG;INilGP;IMv/FA;MApII,uBA0CG;INolGP;IM1/FA;MApII,qBA0CG;INulGP;IM7/FA;MApII,mBA0CG;IN0lGP;IMhgGA;MApII,qBA0CG;IN6lGP;IMngGA;MApII,oBA0CG;INgmGP;IMtgGA;MApII,yBA0CG;INmmGP;IMzgGA;MApII,uBA0CG;INsmGP;IM5gGA;MApII,qBA0CG;INymGP;IM/gGA;MApII,4BA0CG;IN4mGP;IMlhGA;MApII,2BA0CG;IN+mGP;IMrhGA;MApII,sBA0CG;INknGP;IMxhGA;MApII,gBA0CG;INqnGP;IM3hGA;MApII,sBA0CG;INwnGP;IM9hGA;MApII,oBA0CG;IN2nGP;IMjiGA;MApII,kBA0CG;IN8nGP;IMpiGA;MApII,oBA0CG;INioGP;IMviGA;MApII,mBA0CG;INooGP;IM1iGA;MApII,kBA0CG;INuoGP;IM7iGA;MApII,gBA0CG;IN0oGP;IMhjGA;MApII,mBA0CG;IN6oGP;IMnjGA;MApII,oBA0CG;INgpGP;IMtjGA;MApII,qCA0CG;INmpGP;IMzjGA;MApII,qCA0CG;INspGP;IM5jGA;MApII,qCA0CG;INypGP;IM/jGA;MApII,qCA0CG;IN4pGP;IMlkGA;MApII,mBA0CG;IN+pGP;IMrkGA;MApII,mBA+CO;IN6pGX;IMxkGA;MApII,sBA+CO;INgqGX;IM3kGA;MApII,qBA+CO;INmqGX;IM9kGA;MApII,SA0CG;IN2qGP;IMjlGA;MApII,QA0CG;IN8qGP;IMplGA;MApII,QA0CG;INirGP;IMvlGA;MApII,QA0CG;INorGP;IM1lGA;MApII,QA0CG;INurGP;IM7lGA;MApII,QA0CG;IN0rGP;IMhmGA;MApII,QA0CG;IN6rGP;IMnmGA;MApII,QA0CG;INgsGP;IMtmGA;MApII,SA0CG;INmsGP;IMzmGA;MApII,eA0CG;INssGP;IM5mGA;MApII,cA0CG;INysGP;IM/mGA;MApII,YA0CG;IN4sGP;IMlnGA;MApII,cA0CG;IN+sGP;IMrnGA;MApII,YA0CG;INktGP;IMxnGA;MApII,YA0CG;INqtGP;IM3nGA;MApII,gBA0CG;INwtGP;IM9nGA;MApII,sBA0CG;IN2tGP;IMjoGA;MApII,qBA0CG;IN8tGP;IMpoGA;MApII,mBA0CG;INiuGP;IMvoGA;MApII,qBA0CG;INouGP;IM1oGA;MApII,mBA0CG;INuuGP;IM7oGA;MApII,mBA0CG;IN0uGP;IMhpGA;MApII,eA0CG;IN6uGP;IMnpGA;MApII,qBA0CG;INgvGP;IMtpGA;MApII,oBA0CG;INmvGP;IMzpGA;MApII,kBA0CG;INsvGP;IM5pGA;MApII,oBA0CG;INyvGP;IM/pGA;MApII,kBA0CG;IN4vGP;IMlqGA;MApII,kBA0CG;IN+vGP;IMrqGA;MApII,qBA0CG;INkwGP;IMxqGA;MApII,2BA0CG;INqwGP;IM3qGA;MApII,0BA0CG;INwwGP;IM9qGA;MApII,wBA0CG;IN2wGP;IMjrGA;MApII,0BA0CG;IN8wGP;IMprGA;MApII,wBA0CG;INixGP;IMvrGA;MApII,wBA0CG;INoxGP;IM1rGA;MApII,oBA0CG;INuxGP;IM7rGA;MApII,0BA0CG;IN0xGP;IMhsGA;MApII,yBA0CG;IN6xGP;IMnsGA;MApII,uBA0CG;INgyGP;IMtsGA;MApII,yBA0CG;INmyGP;IMzsGA;MApII,uBA0CG;INsyGP;IM5sGA;MApII,uBA0CG;INyyGP;IM/sGA;MApII,mBA0CG;IN4yGP;IMltGA;MApII,yBA0CG;IN+yGP;IMrtGA;MApII,wBA0CG;INkzGP;IMxtGA;MApII,sBA0CG;INqzGP;IM3tGA;MApII,wBA0CG;INwzGP;IM9tGA;MApII,sBA0CG;IN2zGP;IMjuGA;MApII,sBA0CG;IN8zGP;IMpuGA;MApII,sBA0CG;INi0GP;IMvuGA;MApII,4BA0CG;INo0GP;IM1uGA;MApII,2BA0CG;INu0GP;IM7uGA;MApII,yBA0CG;IN00GP;IMhvGA;MApII,2BA0CG;IN60GP;IMnvGA;MApII,yBA0CG;INg1GP;IMtvGA;MApII,6BA0CG;INm1GP;IMzvGA;MApII,4BA0CG;INs1GP;IM5vGA;MApII,yBA0CG;INy1GP;IM/vGA;MApII,UA0CG;IN41GP;IMlwGA;MApII,gBA0CG;IN+1GP;IMrwGA;MApII,eA0CG;INk2GP;IMxwGA;MApII,aA0CG;INq2GP;IM3wGA;MApII,eA0CG;INw2GP;IM9wGA;MApII,aA0CG;IN22GP;IMjxGA;MApII,iBA0CG;IN82GP;IMpxGA;MApII,uBA0CG;INi3GP;IMvxGA;MApII,sBA0CG;INo3GP;IM1xGA;MApII,oBA0CG;INu3GP;IM7xGA;MApII,sBA0CG;IN03GP;IMhyGA;MApII,oBA0CG;IN63GP;IMnyGA;MApII,gBA0CG;INg4GP;IMtyGA;MApII,sBA0CG;INm4GP;IMzyGA;MApII,qBA0CG;INs4GP;IM5yGA;MApII,mBA0CG;INy4GP;IM/yGA;MApII,qBA0CG;IN44GP;IMlzGA;MApII,mBA0CG;IN+4GP;IMrzGA;MApII,sBA0CG;INk5GP;IMxzGA;MApII,4BA0CG;INq5GP;IM3zGA;MApII,2BA0CG;INw5GP;IM9zGA;MApII,yBA0CG;IN25GP;IMj0GA;MApII,2BA0CG;IN85GP;IMp0GA;MApII,yBA0CG;INi6GP;IMv0GA;MApII,qBA0CG;INo6GP;IM10GA;MApII,2BA0CG;INu6GP;IM70GA;MApII,0BA0CG;IN06GP;IMh1GA;MApII,wBA0CG;IN66GP;IMn1GA;MApII,0BA0CG;INg7GP;IMt1GA;MApII,wBA0CG;INm7GP;IMz1GA;MApII,oBA0CG;INs7GP;IM51GA;MApII,0BA0CG;INy7GP;IM/1GA;MApII,yBA0CG;IN47GP;IMl2GA;MApII,uBA0CG;IN+7GP;IMr2GA;MApII,yBA0CG;INk8GP;IMx2GA;MApII,uBA0CG;INq8GP;IM32GA;MApII,uBA0CG;INw8GP;IM92GA;MApII,6BA0CG;IN28GP;IMj3GA;MApII,4BA0CG;IN88GP;IMp3GA;MApII,0BA0CG;INi9GP;IMv3GA;MApII,4BA0CG;INo9GP;IM13GA;MApII,0BA0CG;INu9GP;IM73GA;MApII,MA0CG;IN09GP;IMh4GA;MApII,YA0CG;IN69GP;IMn4GA;MApII,WA0CG;INg+GP;IMt4GA;MApII,SA0CG;INm+GP;IMz4GA;MApII,WA0CG;INs+GP;IM54GA;MApII,SA0CG;INy+GP;IM/4GA;MApII,UA0CG;IN4+GP;IMl5GA;MApII,gBA0CG;IN++GP;IMr5GA;MApII,eA0CG;INk/GP;IMx5GA;MApII,aA0CG;INq/GP;IM35GA;MApII,eA0CG;INw/GP;IM95GA;MApII,aA0CG;IN2/GP;IMj6GA;MApII,kBA0CG;MA1CH,aA0CG;IN8/GP;IMp6GA;MApII,wBA0CG;MA1CH,mBA0CG;INigHP;IMv6GA;MApII,uBA0CG;MA1CH,kBA0CG;INogHP;IM16GA;MApII,qBA0CG;MA1CH,gBA0CG;INugHP;IM76GA;MApII,uBA0CG;MA1CH,kBA0CG;IN0gHP;IMh7GA;MApII,qBA0CG;MA1CH,gBA0CG;IN6gHP;EACF;EC3hHE;IKuGA;MApII,eA+CO;IN6gHX;IMx7GA;MApII,qBA+CO;INghHX;IM37GA;MApII,cA+CO;INmhHX;IM97GA;MApII,aA+CO;INshHX;IMj8GA;MApII,oBA+CO;INyhHX;IMp8GA;MApII,cA+CO;IN4hHX;IMv8GA;MApII,kBA+CO;IN+hHX;IM18GA;MApII,mBA+CO;INkiHX;IM78GA;MApII,aA+CO;INqiHX;IMh9GA;MApII,oBA+CO;INwiHX;IMn9GA;MApII,iBA+CO;IN2iHX;IMt9GA;MApII,kBA+CO;IN8iHX;IMz9GA;MApII,aA+CO;INijHX;IM59GA;MApII,cA0CG;INyjHP;IM/9GA;MApII,mBA+CO;INujHX;IMl+GA;MApII,sBA+CO;IN0jHX;IMr+GA;MApII,2BA+CO;IN6jHX;IMx+GA;MApII,8BA+CO;INgkHX;IM3+GA;MApII,YA0CG;INwkHP;IM9+GA;MApII,YA0CG;IN2kHP;IMj/GA;MApII,cA0CG;IN8kHP;IMp/GA;MApII,cA0CG;INilHP;IMv/GA;MApII,eA+CO;IN+kHX;IM1/GA;MApII,iBA+CO;INklHX;IM7/GA;MApII,uBA+CO;INqlHX;IMhgHA;MApII,2BA0CG;IN6lHP;IMngHA;MApII,yBA0CG;INgmHP;IMtgHA;MApII,uBA0CG;INmmHP;IMzgHA;MApII,8BA0CG;INsmHP;IM5gHA;MApII,6BA0CG;INymHP;IM/gHA;MApII,6BA0CG;IN4mHP;IMlhHA;MApII,oBA0CG;IN+mHP;IMrhHA;MApII,kBA0CG;INknHP;IMxhHA;MApII,qBA0CG;INqnHP;IM3hHA;MApII,sBA0CG;INwnHP;IM9hHA;MApII,uBA0CG;IN2nHP;IMjiHA;MApII,qBA0CG;IN8nHP;IMpiHA;MApII,mBA0CG;INioHP;IMviHA;MApII,qBA0CG;INooHP;IM1iHA;MApII,oBA0CG;INuoHP;IM7iHA;MApII,yBA0CG;IN0oHP;IMhjHA;MApII,uBA0CG;IN6oHP;IMnjHA;MApII,qBA0CG;INgpHP;IMtjHA;MApII,4BA0CG;INmpHP;IMzjHA;MApII,2BA0CG;INspHP;IM5jHA;MApII,sBA0CG;INypHP;IM/jHA;MApII,gBA0CG;IN4pHP;IMlkHA;MApII,sBA0CG;IN+pHP;IMrkHA;MApII,oBA0CG;INkqHP;IMxkHA;MApII,kBA0CG;INqqHP;IM3kHA;MApII,oBA0CG;INwqHP;IM9kHA;MApII,mBA0CG;IN2qHP;IMjlHA;MApII,kBA0CG;IN8qHP;IMplHA;MApII,gBA0CG;INirHP;IMvlHA;MApII,mBA0CG;INorHP;IM1lHA;MApII,oBA0CG;INurHP;IM7lHA;MApII,qCA0CG;IN0rHP;IMhmHA;MApII,qCA0CG;IN6rHP;IMnmHA;MApII,qCA0CG;INgsHP;IMtmHA;MApII,qCA0CG;INmsHP;IMzmHA;MApII,mBA0CG;INssHP;IM5mHA;MApII,mBA+CO;INosHX;IM/mHA;MApII,sBA+CO;INusHX;IMlnHA;MApII,qBA+CO;IN0sHX;IMrnHA;MApII,SA0CG;INktHP;IMxnHA;MApII,QA0CG;INqtHP;IM3nHA;MApII,QA0CG;INwtHP;IM9nHA;MApII,QA0CG;IN2tHP;IMjoHA;MApII,QA0CG;IN8tHP;IMpoHA;MApII,QA0CG;INiuHP;IMvoHA;MApII,QA0CG;INouHP;IM1oHA;MApII,QA0CG;INuuHP;IM7oHA;MApII,SA0CG;IN0uHP;IMhpHA;MApII,eA0CG;IN6uHP;IMnpHA;MApII,cA0CG;INgvHP;IMtpHA;MApII,YA0CG;INmvHP;IMzpHA;MApII,cA0CG;INsvHP;IM5pHA;MApII,YA0CG;INyvHP;IM/pHA;MApII,YA0CG;IN4vHP;IMlqHA;MApII,gBA0CG;IN+vHP;IMrqHA;MApII,sBA0CG;INkwHP;IMxqHA;MApII,qBA0CG;INqwHP;IM3qHA;MApII,mBA0CG;INwwHP;IM9qHA;MApII,qBA0CG;IN2wHP;IMjrHA;MApII,mBA0CG;IN8wHP;IMprHA;MApII,mBA0CG;INixHP;IMvrHA;MApII,eA0CG;INoxHP;IM1rHA;MApII,qBA0CG;INuxHP;IM7rHA;MApII,oBA0CG;IN0xHP;IMhsHA;MApII,kBA0CG;IN6xHP;IMnsHA;MApII,oBA0CG;INgyHP;IMtsHA;MApII,kBA0CG;INmyHP;IMzsHA;MApII,kBA0CG;INsyHP;IM5sHA;MApII,qBA0CG;INyyHP;IM/sHA;MApII,2BA0CG;IN4yHP;IMltHA;MApII,0BA0CG;IN+yHP;IMrtHA;MApII,wBA0CG;INkzHP;IMxtHA;MApII,0BA0CG;INqzHP;IM3tHA;MApII,wBA0CG;INwzHP;IM9tHA;MApII,wBA0CG;IN2zHP;IMjuHA;MApII,oBA0CG;IN8zHP;IMpuHA;MApII,0BA0CG;INi0HP;IMvuHA;MApII,yBA0CG;INo0HP;IM1uHA;MApII,uBA0CG;INu0HP;IM7uHA;MApII,yBA0CG;IN00HP;IMhvHA;MApII,uBA0CG;IN60HP;IMnvHA;MApII,uBA0CG;INg1HP;IMtvHA;MApII,mBA0CG;INm1HP;IMzvHA;MApII,yBA0CG;INs1HP;IM5vHA;MApII,wBA0CG;INy1HP;IM/vHA;MApII,sBA0CG;IN41HP;IMlwHA;MApII,wBA0CG;IN+1HP;IMrwHA;MApII,sBA0CG;INk2HP;IMxwHA;MApII,sBA0CG;INq2HP;IM3wHA;MApII,sBA0CG;INw2HP;IM9wHA;MApII,4BA0CG;IN22HP;IMjxHA;MApII,2BA0CG;IN82HP;IMpxHA;MApII,yBA0CG;INi3HP;IMvxHA;MApII,2BA0CG;INo3HP;IM1xHA;MApII,yBA0CG;INu3HP;IM7xHA;MApII,6BA0CG;IN03HP;IMhyHA;MApII,4BA0CG;IN63HP;IMnyHA;MApII,yBA0CG;INg4HP;IMtyHA;MApII,UA0CG;INm4HP;IMzyHA;MApII,gBA0CG;INs4HP;IM5yHA;MApII,eA0CG;INy4HP;IM/yHA;MApII,aA0CG;IN44HP;IMlzHA;MApII,eA0CG;IN+4HP;IMrzHA;MApII,aA0CG;INk5HP;IMxzHA;MApII,iBA0CG;INq5HP;IM3zHA;MApII,uBA0CG;INw5HP;IM9zHA;MApII,sBA0CG;IN25HP;IMj0HA;MApII,oBA0CG;IN85HP;IMp0HA;MApII,sBA0CG;INi6HP;IMv0HA;MApII,oBA0CG;INo6HP;IM10HA;MApII,gBA0CG;INu6HP;IM70HA;MApII,sBA0CG;IN06HP;IMh1HA;MApII,qBA0CG;IN66HP;IMn1HA;MApII,mBA0CG;INg7HP;IMt1HA;MApII,qBA0CG;INm7HP;IMz1HA;MApII,mBA0CG;INs7HP;IM51HA;MApII,sBA0CG;INy7HP;IM/1HA;MApII,4BA0CG;IN47HP;IMl2HA;MApII,2BA0CG;IN+7HP;IMr2HA;MApII,yBA0CG;INk8HP;IMx2HA;MApII,2BA0CG;INq8HP;IM32HA;MApII,yBA0CG;INw8HP;IM92HA;MApII,qBA0CG;IN28HP;IMj3HA;MApII,2BA0CG;IN88HP;IMp3HA;MApII,0BA0CG;INi9HP;IMv3HA;MApII,wBA0CG;INo9HP;IM13HA;MApII,0BA0CG;INu9HP;IM73HA;MApII,wBA0CG;IN09HP;IMh4HA;MApII,oBA0CG;IN69HP;IMn4HA;MApII,0BA0CG;INg+HP;IMt4HA;MApII,yBA0CG;INm+HP;IMz4HA;MApII,uBA0CG;INs+HP;IM54HA;MApII,yBA0CG;INy+HP;IM/4HA;MApII,uBA0CG;IN4+HP;IMl5HA;MApII,uBA0CG;IN++HP;IMr5HA;MApII,6BA0CG;INk/HP;IMx5HA;MApII,4BA0CG;INq/HP;IM35HA;MApII,0BA0CG;INw/HP;IM95HA;MApII,4BA0CG;IN2/HP;IMj6HA;MApII,0BA0CG;IN8/HP;IMp6HA;MApII,MA0CG;INigIP;IMv6HA;MApII,YA0CG;INogIP;IM16HA;MApII,WA0CG;INugIP;IM76HA;MApII,SA0CG;IN0gIP;IMh7HA;MApII,WA0CG;IN6gIP;IMn7HA;MApII,SA0CG;INghIP;IMt7HA;MApII,UA0CG;INmhIP;IMz7HA;MApII,gBA0CG;INshIP;IM57HA;MApII,eA0CG;INyhIP;IM/7HA;MApII,aA0CG;IN4hIP;IMl8HA;MApII,eA0CG;IN+hIP;IMr8HA;MApII,aA0CG;INkiIP;IMx8HA;MApII,kBA0CG;MA1CH,aA0CG;INqiIP;IM38HA;MApII,wBA0CG;MA1CH,mBA0CG;INwiIP;IM98HA;MApII,uBA0CG;MA1CH,kBA0CG;IN2iIP;IMj9HA;MApII,qBA0CG;MA1CH,gBA0CG;IN8iIP;IMp9HA;MApII,uBA0CG;MA1CH,kBA0CG;INijIP;IMv9HA;MApII,qBA0CG;MA1CH,gBA0CG;INojIP;EACF;EClkIE;IKuGA;MApII,eA+CO;INojIX;IM/9HA;MApII,qBA+CO;INujIX;IMl+HA;MApII,cA+CO;IN0jIX;IMr+HA;MApII,aA+CO;IN6jIX;IMx+HA;MApII,oBA+CO;INgkIX;IM3+HA;MApII,cA+CO;INmkIX;IM9+HA;MApII,kBA+CO;INskIX;IMj/HA;MApII,mBA+CO;INykIX;IMp/HA;MApII,aA+CO;IN4kIX;IMv/HA;MApII,oBA+CO;IN+kIX;IM1/HA;MApII,iBA+CO;INklIX;IM7/HA;MApII,kBA+CO;INqlIX;IMhgIA;MApII,aA+CO;INwlIX;IMngIA;MApII,cA0CG;INgmIP;IMtgIA;MApII,mBA+CO;IN8lIX;IMzgIA;MApII,sBA+CO;INimIX;IM5gIA;MApII,2BA+CO;INomIX;IM/gIA;MApII,8BA+CO;INumIX;IMlhIA;MApII,YA0CG;IN+mIP;IMrhIA;MApII,YA0CG;INknIP;IMxhIA;MApII,cA0CG;INqnIP;IM3hIA;MApII,cA0CG;INwnIP;IM9hIA;MApII,eA+CO;INsnIX;IMjiIA;MApII,iBA+CO;INynIX;IMpiIA;MApII,uBA+CO;IN4nIX;IMviIA;MApII,2BA0CG;INooIP;IM1iIA;MApII,yBA0CG;INuoIP;IM7iIA;MApII,uBA0CG;IN0oIP;IMhjIA;MApII,8BA0CG;IN6oIP;IMnjIA;MApII,6BA0CG;INgpIP;IMtjIA;MApII,6BA0CG;INmpIP;IMzjIA;MApII,oBA0CG;INspIP;IM5jIA;MApII,kBA0CG;INypIP;IM/jIA;MApII,qBA0CG;IN4pIP;IMlkIA;MApII,sBA0CG;IN+pIP;IMrkIA;MApII,uBA0CG;INkqIP;IMxkIA;MApII,qBA0CG;INqqIP;IM3kIA;MApII,mBA0CG;INwqIP;IM9kIA;MApII,qBA0CG;IN2qIP;IMjlIA;MApII,oBA0CG;IN8qIP;IMplIA;MApII,yBA0CG;INirIP;IMvlIA;MApII,uBA0CG;INorIP;IM1lIA;MApII,qBA0CG;INurIP;IM7lIA;MApII,4BA0CG;IN0rIP;IMhmIA;MApII,2BA0CG;IN6rIP;IMnmIA;MApII,sBA0CG;INgsIP;IMtmIA;MApII,gBA0CG;INmsIP;IMzmIA;MApII,sBA0CG;INssIP;IM5mIA;MApII,oBA0CG;INysIP;IM/mIA;MApII,kBA0CG;IN4sIP;IMlnIA;MApII,oBA0CG;IN+sIP;IMrnIA;MApII,mBA0CG;INktIP;IMxnIA;MApII,kBA0CG;INqtIP;IM3nIA;MApII,gBA0CG;INwtIP;IM9nIA;MApII,mBA0CG;IN2tIP;IMjoIA;MApII,oBA0CG;IN8tIP;IMpoIA;MApII,qCA0CG;INiuIP;IMvoIA;MApII,qCA0CG;INouIP;IM1oIA;MApII,qCA0CG;INuuIP;IM7oIA;MApII,qCA0CG;IN0uIP;IMhpIA;MApII,mBA0CG;IN6uIP;IMnpIA;MApII,mBA+CO;IN2uIX;IMtpIA;MApII,sBA+CO;IN8uIX;IMzpIA;MApII,qBA+CO;INivIX;IM5pIA;MApII,SA0CG;INyvIP;IM/pIA;MApII,QA0CG;IN4vIP;IMlqIA;MApII,QA0CG;IN+vIP;IMrqIA;MApII,QA0CG;INkwIP;IMxqIA;MApII,QA0CG;INqwIP;IM3qIA;MApII,QA0CG;INwwIP;IM9qIA;MApII,QA0CG;IN2wIP;IMjrIA;MApII,QA0CG;IN8wIP;IMprIA;MApII,SA0CG;INixIP;IMvrIA;MApII,eA0CG;INoxIP;IM1rIA;MApII,cA0CG;INuxIP;IM7rIA;MApII,YA0CG;IN0xIP;IMhsIA;MApII,cA0CG;IN6xIP;IMnsIA;MApII,YA0CG;INgyIP;IMtsIA;MApII,YA0CG;INmyIP;IMzsIA;MApII,gBA0CG;INsyIP;IM5sIA;MApII,sBA0CG;INyyIP;IM/sIA;MApII,qBA0CG;IN4yIP;IMltIA;MApII,mBA0CG;IN+yIP;IMrtIA;MApII,qBA0CG;INkzIP;IMxtIA;MApII,mBA0CG;INqzIP;IM3tIA;MApII,mBA0CG;INwzIP;IM9tIA;MApII,eA0CG;IN2zIP;IMjuIA;MApII,qBA0CG;IN8zIP;IMpuIA;MApII,oBA0CG;INi0IP;IMvuIA;MApII,kBA0CG;INo0IP;IM1uIA;MApII,oBA0CG;INu0IP;IM7uIA;MApII,kBA0CG;IN00IP;IMhvIA;MApII,kBA0CG;IN60IP;IMnvIA;MApII,qBA0CG;INg1IP;IMtvIA;MApII,2BA0CG;INm1IP;IMzvIA;MApII,0BA0CG;INs1IP;IM5vIA;MApII,wBA0CG;INy1IP;IM/vIA;MApII,0BA0CG;IN41IP;IMlwIA;MApII,wBA0CG;IN+1IP;IMrwIA;MApII,wBA0CG;INk2IP;IMxwIA;MApII,oBA0CG;INq2IP;IM3wIA;MApII,0BA0CG;INw2IP;IM9wIA;MApII,yBA0CG;IN22IP;IMjxIA;MApII,uBA0CG;IN82IP;IMpxIA;MApII,yBA0CG;INi3IP;IMvxIA;MApII,uBA0CG;INo3IP;IM1xIA;MApII,uBA0CG;INu3IP;IM7xIA;MApII,mBA0CG;IN03IP;IMhyIA;MApII,yBA0CG;IN63IP;IMnyIA;MApII,wBA0CG;INg4IP;IMtyIA;MApII,sBA0CG;INm4IP;IMzyIA;MApII,wBA0CG;INs4IP;IM5yIA;MApII,sBA0CG;INy4IP;IM/yIA;MApII,sBA0CG;IN44IP;IMlzIA;MApII,sBA0CG;IN+4IP;IMrzIA;MApII,4BA0CG;INk5IP;IMxzIA;MApII,2BA0CG;INq5IP;IM3zIA;MApII,yBA0CG;INw5IP;IM9zIA;MApII,2BA0CG;IN25IP;IMj0IA;MApII,yBA0CG;IN85IP;IMp0IA;MApII,6BA0CG;INi6IP;IMv0IA;MApII,4BA0CG;INo6IP;IM10IA;MApII,yBA0CG;INu6IP;IM70IA;MApII,UA0CG;IN06IP;IMh1IA;MApII,gBA0CG;IN66IP;IMn1IA;MApII,eA0CG;INg7IP;IMt1IA;MApII,aA0CG;INm7IP;IMz1IA;MApII,eA0CG;INs7IP;IM51IA;MApII,aA0CG;INy7IP;IM/1IA;MApII,iBA0CG;IN47IP;IMl2IA;MApII,uBA0CG;IN+7IP;IMr2IA;MApII,sBA0CG;INk8IP;IMx2IA;MApII,oBA0CG;INq8IP;IM32IA;MApII,sBA0CG;INw8IP;IM92IA;MApII,oBA0CG;IN28IP;IMj3IA;MApII,gBA0CG;IN88IP;IMp3IA;MApII,sBA0CG;INi9IP;IMv3IA;MApII,qBA0CG;INo9IP;IM13IA;MApII,mBA0CG;INu9IP;IM73IA;MApII,qBA0CG;IN09IP;IMh4IA;MApII,mBA0CG;IN69IP;IMn4IA;MApII,sBA0CG;INg+IP;IMt4IA;MApII,4BA0CG;INm+IP;IMz4IA;MApII,2BA0CG;INs+IP;IM54IA;MApII,yBA0CG;INy+IP;IM/4IA;MApII,2BA0CG;IN4+IP;IMl5IA;MApII,yBA0CG;IN++IP;IMr5IA;MApII,qBA0CG;INk/IP;IMx5IA;MApII,2BA0CG;INq/IP;IM35IA;MApII,0BA0CG;INw/IP;IM95IA;MApII,wBA0CG;IN2/IP;IMj6IA;MApII,0BA0CG;IN8/IP;IMp6IA;MApII,wBA0CG;INigJP;IMv6IA;MApII,oBA0CG;INogJP;IM16IA;MApII,0BA0CG;INugJP;IM76IA;MApII,yBA0CG;IN0gJP;IMh7IA;MApII,uBA0CG;IN6gJP;IMn7IA;MApII,yBA0CG;INghJP;IMt7IA;MApII,uBA0CG;INmhJP;IMz7IA;MApII,uBA0CG;INshJP;IM57IA;MApII,6BA0CG;INyhJP;IM/7IA;MApII,4BA0CG;IN4hJP;IMl8IA;MApII,0BA0CG;IN+hJP;IMr8IA;MApII,4BA0CG;INkiJP;IMx8IA;MApII,0BA0CG;INqiJP;IM38IA;MApII,MA0CG;INwiJP;IM98IA;MApII,YA0CG;IN2iJP;IMj9IA;MApII,WA0CG;IN8iJP;IMp9IA;MApII,SA0CG;INijJP;IMv9IA;MApII,WA0CG;INojJP;IM19IA;MApII,SA0CG;INujJP;IM79IA;MApII,UA0CG;IN0jJP;IMh+IA;MApII,gBA0CG;IN6jJP;IMn+IA;MApII,eA0CG;INgkJP;IMt+IA;MApII,aA0CG;INmkJP;IMz+IA;MApII,eA0CG;INskJP;IM5+IA;MApII,aA0CG;INykJP;IM/+IA;MApII,kBA0CG;MA1CH,aA0CG;IN4kJP;IMl/IA;MApII,wBA0CG;MA1CH,mBA0CG;IN+kJP;IMr/IA;MApII,uBA0CG;MA1CH,kBA0CG;INklJP;IMx/IA;MApII,qBA0CG;MA1CH,gBA0CG;INqlJP;IM3/IA;MApII,uBA0CG;MA1CH,kBA0CG;INwlJP;IM9/IA;MApII,qBA0CG;MA1CH,gBA0CG;IN2lJP;EACF;AACF;AOppJA;EAEI,qBAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,0BAAA;EAAA,0BAAA;EAAA,2BAAA;AP0pJJ","file":"bootstrap-grid.css","sourcesContent":["$file: \"\" !default;\n\n/*!\n  * Bootstrap #{$file} v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n","@use \"../config\" as *;\n@use \"breakpoints\" as *;\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n  --gutter-x: #{$gutter};\n  --gutter-y: 0;\n  width: 100%;\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-inline: auto;\n}\n\n@layer layout {\n  @if $enable-container-classes {\n    // Single container class with breakpoint max-widths\n    .container,\n    // 100% wide container at all breakpoints\n    .container-fluid {\n      @include make-container();\n    }\n\n    // Responsive containers that are 100% wide until a breakpoint\n    @each $breakpoint, $container-max-width in $container-max-widths {\n      .container-#{$breakpoint} {\n        @extend .container-fluid;\n      }\n\n      @include media-breakpoint-up($breakpoint, $breakpoints) {\n        // Extend each breakpoint which is smaller or equal to the current breakpoint\n        $extend-breakpoint: true;\n\n        %responsive-container-#{$breakpoint} {\n          max-width: $container-max-width;\n        }\n\n        @each $name, $width in $breakpoints {\n          @if ($extend-breakpoint) {\n            .container#{breakpoint-infix($name, $breakpoints)} {\n              @extend %responsive-container-#{$breakpoint};\n            }\n\n            // Once the current breakpoint is reached, stop extending\n            @if ($breakpoint == $name) {\n              $extend-breakpoint: false;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","/*!\n  * Bootstrap Grid v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n@layer layout {\n  .container,\n  .container-fluid,\n  .container-2xl,\n  .container-xl,\n  .container-lg,\n  .container-md,\n  .container-sm {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-inline: auto;\n  }\n  @media (width >= 576px) {\n    .container-sm, .container {\n      max-width: 540px;\n    }\n  }\n  @media (width >= 768px) {\n    .container-md, .container-sm, .container {\n      max-width: 720px;\n    }\n  }\n  @media (width >= 1024px) {\n    .container-lg, .container-md, .container-sm, .container {\n      max-width: 960px;\n    }\n  }\n  @media (width >= 1280px) {\n    .container-xl, .container-lg, .container-md, .container-sm, .container {\n      max-width: 1200px;\n    }\n  }\n  @media (width >= 1536px) {\n    .container-2xl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n      max-width: 1440px;\n    }\n  }\n}\n@layer layout {\n  .row {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    display: flex;\n    flex-wrap: wrap;\n    margin-inline: calc(-0.5 * var(--gutter-x));\n    margin-top: calc(-1 * var(--gutter-y));\n  }\n  .row > * {\n    flex-shrink: 0;\n    width: 100%;\n    max-width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-top: var(--gutter-y);\n  }\n  .col {\n    flex: 1 0 0;\n  }\n  .row-cols-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .row-cols-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .row-cols-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .row-cols-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .row-cols-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .row-cols-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n  .row-cols-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .col-1 {\n    flex: 0 0 auto;\n    width: 8.3333333333%;\n  }\n  .col-2 {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .col-4 {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .col-5 {\n    flex: 0 0 auto;\n    width: 41.6666666667%;\n  }\n  .col-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .col-7 {\n    flex: 0 0 auto;\n    width: 58.3333333333%;\n  }\n  .col-8 {\n    flex: 0 0 auto;\n    width: 66.6666666667%;\n  }\n  .col-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n  .col-10 {\n    flex: 0 0 auto;\n    width: 83.3333333333%;\n  }\n  .col-11 {\n    flex: 0 0 auto;\n    width: 91.6666666667%;\n  }\n  .col-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .offset-1 {\n    margin-inline-start: 8.3333333333%;\n  }\n  .offset-2 {\n    margin-inline-start: 16.6666666667%;\n  }\n  .offset-3 {\n    margin-inline-start: 25%;\n  }\n  .offset-4 {\n    margin-inline-start: 33.3333333333%;\n  }\n  .offset-5 {\n    margin-inline-start: 41.6666666667%;\n  }\n  .offset-6 {\n    margin-inline-start: 50%;\n  }\n  .offset-7 {\n    margin-inline-start: 58.3333333333%;\n  }\n  .offset-8 {\n    margin-inline-start: 66.6666666667%;\n  }\n  .offset-9 {\n    margin-inline-start: 75%;\n  }\n  .offset-10 {\n    margin-inline-start: 83.3333333333%;\n  }\n  .offset-11 {\n    margin-inline-start: 91.6666666667%;\n  }\n  .g-0,\n  .gx-0 {\n    --gutter-x: 0;\n  }\n  .g-0,\n  .gy-0 {\n    --gutter-y: 0;\n  }\n  .g-1,\n  .gx-1 {\n    --gutter-x: 0.25rem;\n  }\n  .g-1,\n  .gy-1 {\n    --gutter-y: 0.25rem;\n  }\n  .g-2,\n  .gx-2 {\n    --gutter-x: 0.5rem;\n  }\n  .g-2,\n  .gy-2 {\n    --gutter-y: 0.5rem;\n  }\n  .g-3,\n  .gx-3 {\n    --gutter-x: 1rem;\n  }\n  .g-3,\n  .gy-3 {\n    --gutter-y: 1rem;\n  }\n  .g-4,\n  .gx-4 {\n    --gutter-x: 1.5rem;\n  }\n  .g-4,\n  .gy-4 {\n    --gutter-y: 1.5rem;\n  }\n  .g-5,\n  .gx-5 {\n    --gutter-x: 3rem;\n  }\n  .g-5,\n  .gy-5 {\n    --gutter-y: 3rem;\n  }\n  @media (width >= 576px) {\n    .col-sm {\n      flex: 1 0 0;\n    }\n    .row-cols-sm-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-sm-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-sm-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-sm-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-sm-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-sm-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-sm-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-sm-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-sm-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-sm-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-sm-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-sm-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-sm-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-sm-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-sm-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-sm-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-sm-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-sm-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-sm-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-sm-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-sm-0 {\n      margin-inline-start: 0;\n    }\n    .offset-sm-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-sm-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-sm-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-sm-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-sm-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-sm-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-sm-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-sm-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-sm-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-sm-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-sm-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-sm-0,\n    .gx-sm-0 {\n      --gutter-x: 0;\n    }\n    .g-sm-0,\n    .gy-sm-0 {\n      --gutter-y: 0;\n    }\n    .g-sm-1,\n    .gx-sm-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-sm-1,\n    .gy-sm-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-sm-2,\n    .gx-sm-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-sm-2,\n    .gy-sm-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-sm-3,\n    .gx-sm-3 {\n      --gutter-x: 1rem;\n    }\n    .g-sm-3,\n    .gy-sm-3 {\n      --gutter-y: 1rem;\n    }\n    .g-sm-4,\n    .gx-sm-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-sm-4,\n    .gy-sm-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-sm-5,\n    .gx-sm-5 {\n      --gutter-x: 3rem;\n    }\n    .g-sm-5,\n    .gy-sm-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 768px) {\n    .col-md {\n      flex: 1 0 0;\n    }\n    .row-cols-md-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-md-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-md-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-md-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-md-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-md-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-md-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-md-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-md-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-md-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-md-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-md-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-md-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-md-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-md-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-md-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-md-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-md-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-md-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-md-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-md-0 {\n      margin-inline-start: 0;\n    }\n    .offset-md-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-md-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-md-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-md-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-md-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-md-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-md-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-md-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-md-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-md-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-md-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-md-0,\n    .gx-md-0 {\n      --gutter-x: 0;\n    }\n    .g-md-0,\n    .gy-md-0 {\n      --gutter-y: 0;\n    }\n    .g-md-1,\n    .gx-md-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-md-1,\n    .gy-md-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-md-2,\n    .gx-md-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-md-2,\n    .gy-md-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-md-3,\n    .gx-md-3 {\n      --gutter-x: 1rem;\n    }\n    .g-md-3,\n    .gy-md-3 {\n      --gutter-y: 1rem;\n    }\n    .g-md-4,\n    .gx-md-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-md-4,\n    .gy-md-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-md-5,\n    .gx-md-5 {\n      --gutter-x: 3rem;\n    }\n    .g-md-5,\n    .gy-md-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1024px) {\n    .col-lg {\n      flex: 1 0 0;\n    }\n    .row-cols-lg-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-lg-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-lg-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-lg-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-lg-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-lg-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-lg-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-lg-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-lg-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-lg-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-lg-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-lg-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-lg-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-lg-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-lg-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-lg-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-lg-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-lg-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-lg-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-lg-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-lg-0 {\n      margin-inline-start: 0;\n    }\n    .offset-lg-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-lg-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-lg-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-lg-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-lg-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-lg-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-lg-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-lg-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-lg-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-lg-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-lg-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-lg-0,\n    .gx-lg-0 {\n      --gutter-x: 0;\n    }\n    .g-lg-0,\n    .gy-lg-0 {\n      --gutter-y: 0;\n    }\n    .g-lg-1,\n    .gx-lg-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-lg-1,\n    .gy-lg-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-lg-2,\n    .gx-lg-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-lg-2,\n    .gy-lg-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-lg-3,\n    .gx-lg-3 {\n      --gutter-x: 1rem;\n    }\n    .g-lg-3,\n    .gy-lg-3 {\n      --gutter-y: 1rem;\n    }\n    .g-lg-4,\n    .gx-lg-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-lg-4,\n    .gy-lg-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-lg-5,\n    .gx-lg-5 {\n      --gutter-x: 3rem;\n    }\n    .g-lg-5,\n    .gy-lg-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1280px) {\n    .col-xl {\n      flex: 1 0 0;\n    }\n    .row-cols-xl-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-xl-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-xl-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-xl-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-xl-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-xl-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-xl-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-xl-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-xl-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-xl-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-xl-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-xl-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-xl-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-xl-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-xl-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-xl-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-xl-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-xl-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-xl-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-xl-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-xl-0 {\n      margin-inline-start: 0;\n    }\n    .offset-xl-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-xl-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-xl-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-xl-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-xl-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-xl-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-xl-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-xl-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-xl-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-xl-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-xl-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-xl-0,\n    .gx-xl-0 {\n      --gutter-x: 0;\n    }\n    .g-xl-0,\n    .gy-xl-0 {\n      --gutter-y: 0;\n    }\n    .g-xl-1,\n    .gx-xl-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-xl-1,\n    .gy-xl-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-xl-2,\n    .gx-xl-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-xl-2,\n    .gy-xl-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-xl-3,\n    .gx-xl-3 {\n      --gutter-x: 1rem;\n    }\n    .g-xl-3,\n    .gy-xl-3 {\n      --gutter-y: 1rem;\n    }\n    .g-xl-4,\n    .gx-xl-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-xl-4,\n    .gy-xl-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-xl-5,\n    .gx-xl-5 {\n      --gutter-x: 3rem;\n    }\n    .g-xl-5,\n    .gy-xl-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1536px) {\n    .col-2xl {\n      flex: 1 0 0;\n    }\n    .row-cols-2xl-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-2xl-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-2xl-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-2xl-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-2xl-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-2xl-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-2xl-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-2xl-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-2xl-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-2xl-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-2xl-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-2xl-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-2xl-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-2xl-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-2xl-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-2xl-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-2xl-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-2xl-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-2xl-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-2xl-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-2xl-0 {\n      margin-inline-start: 0;\n    }\n    .offset-2xl-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-2xl-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-2xl-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-2xl-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-2xl-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-2xl-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-2xl-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-2xl-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-2xl-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-2xl-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-2xl-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-2xl-0,\n    .gx-2xl-0 {\n      --gutter-x: 0;\n    }\n    .g-2xl-0,\n    .gy-2xl-0 {\n      --gutter-y: 0;\n    }\n    .g-2xl-1,\n    .gx-2xl-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-2xl-1,\n    .gy-2xl-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-2xl-2,\n    .gx-2xl-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-2xl-2,\n    .gy-2xl-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-2xl-3,\n    .gx-2xl-3 {\n      --gutter-x: 1rem;\n    }\n    .g-2xl-3,\n    .gy-2xl-3 {\n      --gutter-y: 1rem;\n    }\n    .g-2xl-4,\n    .gx-2xl-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-2xl-4,\n    .gy-2xl-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-2xl-5,\n    .gx-2xl-5 {\n      --gutter-x: 3rem;\n    }\n    .g-2xl-5,\n    .gy-2xl-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  .grid {\n    --columns: 12;\n    --rows: 1;\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-rows: repeat(var(--rows), 1fr);\n    grid-template-columns: repeat(var(--columns), 1fr);\n    gap: var(--gap);\n  }\n  .g-col-1 {\n    grid-column: auto/span 1;\n  }\n  .g-col-2 {\n    grid-column: auto/span 2;\n  }\n  .g-col-3 {\n    grid-column: auto/span 3;\n  }\n  .g-col-4 {\n    grid-column: auto/span 4;\n  }\n  .g-col-5 {\n    grid-column: auto/span 5;\n  }\n  .g-col-6 {\n    grid-column: auto/span 6;\n  }\n  .g-col-7 {\n    grid-column: auto/span 7;\n  }\n  .g-col-8 {\n    grid-column: auto/span 8;\n  }\n  .g-col-9 {\n    grid-column: auto/span 9;\n  }\n  .g-col-10 {\n    grid-column: auto/span 10;\n  }\n  .g-col-11 {\n    grid-column: auto/span 11;\n  }\n  .g-col-12 {\n    grid-column: auto/span 12;\n  }\n  .g-start-1 {\n    grid-column-start: 1;\n  }\n  .g-start-2 {\n    grid-column-start: 2;\n  }\n  .g-start-3 {\n    grid-column-start: 3;\n  }\n  .g-start-4 {\n    grid-column-start: 4;\n  }\n  .g-start-5 {\n    grid-column-start: 5;\n  }\n  .g-start-6 {\n    grid-column-start: 6;\n  }\n  .g-start-7 {\n    grid-column-start: 7;\n  }\n  .g-start-8 {\n    grid-column-start: 8;\n  }\n  .g-start-9 {\n    grid-column-start: 9;\n  }\n  .g-start-10 {\n    grid-column-start: 10;\n  }\n  .g-start-11 {\n    grid-column-start: 11;\n  }\n  @media (width >= 576px) {\n    .g-col-sm-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-sm-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-sm-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-sm-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-sm-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-sm-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-sm-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-sm-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-sm-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-sm-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-sm-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-sm-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-sm-1 {\n      grid-column-start: 1;\n    }\n    .g-start-sm-2 {\n      grid-column-start: 2;\n    }\n    .g-start-sm-3 {\n      grid-column-start: 3;\n    }\n    .g-start-sm-4 {\n      grid-column-start: 4;\n    }\n    .g-start-sm-5 {\n      grid-column-start: 5;\n    }\n    .g-start-sm-6 {\n      grid-column-start: 6;\n    }\n    .g-start-sm-7 {\n      grid-column-start: 7;\n    }\n    .g-start-sm-8 {\n      grid-column-start: 8;\n    }\n    .g-start-sm-9 {\n      grid-column-start: 9;\n    }\n    .g-start-sm-10 {\n      grid-column-start: 10;\n    }\n    .g-start-sm-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 768px) {\n    .g-col-md-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-md-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-md-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-md-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-md-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-md-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-md-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-md-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-md-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-md-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-md-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-md-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-md-1 {\n      grid-column-start: 1;\n    }\n    .g-start-md-2 {\n      grid-column-start: 2;\n    }\n    .g-start-md-3 {\n      grid-column-start: 3;\n    }\n    .g-start-md-4 {\n      grid-column-start: 4;\n    }\n    .g-start-md-5 {\n      grid-column-start: 5;\n    }\n    .g-start-md-6 {\n      grid-column-start: 6;\n    }\n    .g-start-md-7 {\n      grid-column-start: 7;\n    }\n    .g-start-md-8 {\n      grid-column-start: 8;\n    }\n    .g-start-md-9 {\n      grid-column-start: 9;\n    }\n    .g-start-md-10 {\n      grid-column-start: 10;\n    }\n    .g-start-md-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1024px) {\n    .g-col-lg-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-lg-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-lg-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-lg-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-lg-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-lg-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-lg-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-lg-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-lg-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-lg-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-lg-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-lg-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-lg-1 {\n      grid-column-start: 1;\n    }\n    .g-start-lg-2 {\n      grid-column-start: 2;\n    }\n    .g-start-lg-3 {\n      grid-column-start: 3;\n    }\n    .g-start-lg-4 {\n      grid-column-start: 4;\n    }\n    .g-start-lg-5 {\n      grid-column-start: 5;\n    }\n    .g-start-lg-6 {\n      grid-column-start: 6;\n    }\n    .g-start-lg-7 {\n      grid-column-start: 7;\n    }\n    .g-start-lg-8 {\n      grid-column-start: 8;\n    }\n    .g-start-lg-9 {\n      grid-column-start: 9;\n    }\n    .g-start-lg-10 {\n      grid-column-start: 10;\n    }\n    .g-start-lg-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1280px) {\n    .g-col-xl-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-xl-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-xl-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-xl-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-xl-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-xl-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-xl-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-xl-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-xl-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-xl-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-xl-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-xl-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-xl-1 {\n      grid-column-start: 1;\n    }\n    .g-start-xl-2 {\n      grid-column-start: 2;\n    }\n    .g-start-xl-3 {\n      grid-column-start: 3;\n    }\n    .g-start-xl-4 {\n      grid-column-start: 4;\n    }\n    .g-start-xl-5 {\n      grid-column-start: 5;\n    }\n    .g-start-xl-6 {\n      grid-column-start: 6;\n    }\n    .g-start-xl-7 {\n      grid-column-start: 7;\n    }\n    .g-start-xl-8 {\n      grid-column-start: 8;\n    }\n    .g-start-xl-9 {\n      grid-column-start: 9;\n    }\n    .g-start-xl-10 {\n      grid-column-start: 10;\n    }\n    .g-start-xl-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1536px) {\n    .g-col-2xl-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-2xl-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-2xl-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-2xl-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-2xl-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-2xl-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-2xl-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-2xl-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-2xl-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-2xl-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-2xl-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-2xl-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-2xl-1 {\n      grid-column-start: 1;\n    }\n    .g-start-2xl-2 {\n      grid-column-start: 2;\n    }\n    .g-start-2xl-3 {\n      grid-column-start: 3;\n    }\n    .g-start-2xl-4 {\n      grid-column-start: 4;\n    }\n    .g-start-2xl-5 {\n      grid-column-start: 5;\n    }\n    .g-start-2xl-6 {\n      grid-column-start: 6;\n    }\n    .g-start-2xl-7 {\n      grid-column-start: 7;\n    }\n    .g-start-2xl-8 {\n      grid-column-start: 8;\n    }\n    .g-start-2xl-9 {\n      grid-column-start: 9;\n    }\n    .g-start-2xl-10 {\n      grid-column-start: 10;\n    }\n    .g-start-2xl-11 {\n      grid-column-start: 11;\n    }\n  }\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n  .grid-fill {\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n}\n@layer utilities {\n  .d-inline {\n    display: inline;\n  }\n  .d-inline-block {\n    display: inline-block;\n  }\n  .d-block {\n    display: block;\n  }\n  .d-grid {\n    display: grid;\n  }\n  .d-inline-grid {\n    display: inline-grid;\n  }\n  .d-table {\n    display: table;\n  }\n  .d-table-row {\n    display: table-row;\n  }\n  .d-table-cell {\n    display: table-cell;\n  }\n  .d-flex {\n    display: flex;\n  }\n  .d-inline-flex {\n    display: inline-flex;\n  }\n  .d-contents {\n    display: contents;\n  }\n  .d-flow-root {\n    display: flow-root;\n  }\n  .d-none {\n    display: none;\n  }\n  .flex-fill {\n    flex: 1 1 auto;\n  }\n  .flex-row {\n    flex-direction: row;\n  }\n  .flex-column {\n    flex-direction: column;\n  }\n  .flex-row-reverse {\n    flex-direction: row-reverse;\n  }\n  .flex-column-reverse {\n    flex-direction: column-reverse;\n  }\n  .flex-grow-0 {\n    flex-grow: 0;\n  }\n  .flex-grow-1 {\n    flex-grow: 1;\n  }\n  .flex-shrink-0 {\n    flex-shrink: 0;\n  }\n  .flex-shrink-1 {\n    flex-shrink: 1;\n  }\n  .flex-wrap {\n    flex-wrap: wrap;\n  }\n  .flex-nowrap {\n    flex-wrap: nowrap;\n  }\n  .flex-wrap-reverse {\n    flex-wrap: wrap-reverse;\n  }\n  .justify-content-start {\n    justify-content: flex-start;\n  }\n  .justify-content-end {\n    justify-content: flex-end;\n  }\n  .justify-content-center {\n    justify-content: center;\n  }\n  .justify-content-between {\n    justify-content: space-between;\n  }\n  .justify-content-around {\n    justify-content: space-around;\n  }\n  .justify-content-evenly {\n    justify-content: space-evenly;\n  }\n  .justify-items-start {\n    justify-items: start;\n  }\n  .justify-items-end {\n    justify-items: end;\n  }\n  .justify-items-center {\n    justify-items: center;\n  }\n  .justify-items-stretch {\n    justify-items: stretch;\n  }\n  .align-items-start {\n    align-items: flex-start;\n  }\n  .align-items-end {\n    align-items: flex-end;\n  }\n  .align-items-center {\n    align-items: center;\n  }\n  .align-items-baseline {\n    align-items: baseline;\n  }\n  .align-items-stretch {\n    align-items: stretch;\n  }\n  .align-content-start {\n    align-content: flex-start;\n  }\n  .align-content-end {\n    align-content: flex-end;\n  }\n  .align-content-center {\n    align-content: center;\n  }\n  .align-content-between {\n    align-content: space-between;\n  }\n  .align-content-around {\n    align-content: space-around;\n  }\n  .align-content-stretch {\n    align-content: stretch;\n  }\n  .align-self-auto {\n    align-self: auto;\n  }\n  .align-self-start {\n    align-self: flex-start;\n  }\n  .align-self-end {\n    align-self: flex-end;\n  }\n  .align-self-center {\n    align-self: center;\n  }\n  .align-self-baseline {\n    align-self: baseline;\n  }\n  .align-self-stretch {\n    align-self: stretch;\n  }\n  .place-items-start {\n    place-items: start;\n  }\n  .place-items-end {\n    place-items: end;\n  }\n  .place-items-center {\n    place-items: center;\n  }\n  .place-items-stretch {\n    place-items: stretch;\n  }\n  .grid-cols-2 {\n    grid-template-columns: repeat(2, 1fr);\n  }\n  .grid-cols-3 {\n    grid-template-columns: repeat(3, 1fr);\n  }\n  .grid-cols-4 {\n    grid-template-columns: repeat(4, 1fr);\n  }\n  .grid-cols-6 {\n    grid-template-columns: repeat(6, 1fr);\n  }\n  .grid-cols-fill {\n    grid-column: 1 / -1;\n  }\n  .grid-auto-flow-row {\n    grid-auto-flow: row;\n  }\n  .grid-auto-flow-column {\n    grid-auto-flow: column;\n  }\n  .grid-auto-flow-dense {\n    grid-auto-flow: dense;\n  }\n  .order-first {\n    order: -1;\n  }\n  .order-0 {\n    order: 0;\n  }\n  .order-1 {\n    order: 1;\n  }\n  .order-2 {\n    order: 2;\n  }\n  .order-3 {\n    order: 3;\n  }\n  .order-4 {\n    order: 4;\n  }\n  .order-5 {\n    order: 5;\n  }\n  .order-last {\n    order: 6;\n  }\n  .m-0 {\n    margin: 0;\n  }\n  .m-1 {\n    margin: 0.25rem;\n  }\n  .m-2 {\n    margin: 0.5rem;\n  }\n  .m-3 {\n    margin: 1rem;\n  }\n  .m-4 {\n    margin: 1.5rem;\n  }\n  .m-5 {\n    margin: 3rem;\n  }\n  .m-auto {\n    margin: auto;\n  }\n  .mx-0 {\n    margin-inline: 0;\n  }\n  .mx-1 {\n    margin-inline: 0.25rem;\n  }\n  .mx-2 {\n    margin-inline: 0.5rem;\n  }\n  .mx-3 {\n    margin-inline: 1rem;\n  }\n  .mx-4 {\n    margin-inline: 1.5rem;\n  }\n  .mx-5 {\n    margin-inline: 3rem;\n  }\n  .mx-auto {\n    margin-inline: auto;\n  }\n  .my-0 {\n    margin-block: 0;\n  }\n  .my-1 {\n    margin-block: 0.25rem;\n  }\n  .my-2 {\n    margin-block: 0.5rem;\n  }\n  .my-3 {\n    margin-block: 1rem;\n  }\n  .my-4 {\n    margin-block: 1.5rem;\n  }\n  .my-5 {\n    margin-block: 3rem;\n  }\n  .my-auto {\n    margin-block: auto;\n  }\n  .mt-0 {\n    margin-block-start: 0;\n  }\n  .mt-1 {\n    margin-block-start: 0.25rem;\n  }\n  .mt-2 {\n    margin-block-start: 0.5rem;\n  }\n  .mt-3 {\n    margin-block-start: 1rem;\n  }\n  .mt-4 {\n    margin-block-start: 1.5rem;\n  }\n  .mt-5 {\n    margin-block-start: 3rem;\n  }\n  .mt-auto {\n    margin-block-start: auto;\n  }\n  .me-0 {\n    margin-inline-end: 0;\n  }\n  .me-1 {\n    margin-inline-end: 0.25rem;\n  }\n  .me-2 {\n    margin-inline-end: 0.5rem;\n  }\n  .me-3 {\n    margin-inline-end: 1rem;\n  }\n  .me-4 {\n    margin-inline-end: 1.5rem;\n  }\n  .me-5 {\n    margin-inline-end: 3rem;\n  }\n  .me-auto {\n    margin-inline-end: auto;\n  }\n  .mb-0 {\n    margin-block-end: 0;\n  }\n  .mb-1 {\n    margin-block-end: 0.25rem;\n  }\n  .mb-2 {\n    margin-block-end: 0.5rem;\n  }\n  .mb-3 {\n    margin-block-end: 1rem;\n  }\n  .mb-4 {\n    margin-block-end: 1.5rem;\n  }\n  .mb-5 {\n    margin-block-end: 3rem;\n  }\n  .mb-auto {\n    margin-block-end: auto;\n  }\n  .ms-0 {\n    margin-inline-start: 0;\n  }\n  .ms-1 {\n    margin-inline-start: 0.25rem;\n  }\n  .ms-2 {\n    margin-inline-start: 0.5rem;\n  }\n  .ms-3 {\n    margin-inline-start: 1rem;\n  }\n  .ms-4 {\n    margin-inline-start: 1.5rem;\n  }\n  .ms-5 {\n    margin-inline-start: 3rem;\n  }\n  .ms--1 {\n    margin-inline-start: -0.25rem;\n  }\n  .ms--2 {\n    margin-inline-start: -0.5rem;\n  }\n  .ms-auto {\n    margin-inline-start: auto;\n  }\n  .p-0 {\n    padding: 0;\n  }\n  .p-1 {\n    padding: 0.25rem;\n  }\n  .p-2 {\n    padding: 0.5rem;\n  }\n  .p-3 {\n    padding: 1rem;\n  }\n  .p-4 {\n    padding: 1.5rem;\n  }\n  .p-5 {\n    padding: 3rem;\n  }\n  .px-0 {\n    padding-inline: 0;\n  }\n  .px-1 {\n    padding-inline: 0.25rem;\n  }\n  .px-2 {\n    padding-inline: 0.5rem;\n  }\n  .px-3 {\n    padding-inline: 1rem;\n  }\n  .px-4 {\n    padding-inline: 1.5rem;\n  }\n  .px-5 {\n    padding-inline: 3rem;\n  }\n  .py-0 {\n    padding-block: 0;\n  }\n  .py-1 {\n    padding-block: 0.25rem;\n  }\n  .py-2 {\n    padding-block: 0.5rem;\n  }\n  .py-3 {\n    padding-block: 1rem;\n  }\n  .py-4 {\n    padding-block: 1.5rem;\n  }\n  .py-5 {\n    padding-block: 3rem;\n  }\n  .pt-0 {\n    padding-block-start: 0;\n  }\n  .pt-1 {\n    padding-block-start: 0.25rem;\n  }\n  .pt-2 {\n    padding-block-start: 0.5rem;\n  }\n  .pt-3 {\n    padding-block-start: 1rem;\n  }\n  .pt-4 {\n    padding-block-start: 1.5rem;\n  }\n  .pt-5 {\n    padding-block-start: 3rem;\n  }\n  .pe-0 {\n    padding-inline-end: 0;\n  }\n  .pe-1 {\n    padding-inline-end: 0.25rem;\n  }\n  .pe-2 {\n    padding-inline-end: 0.5rem;\n  }\n  .pe-3 {\n    padding-inline-end: 1rem;\n  }\n  .pe-4 {\n    padding-inline-end: 1.5rem;\n  }\n  .pe-5 {\n    padding-inline-end: 3rem;\n  }\n  .pb-0 {\n    padding-block-end: 0;\n  }\n  .pb-1 {\n    padding-block-end: 0.25rem;\n  }\n  .pb-2 {\n    padding-block-end: 0.5rem;\n  }\n  .pb-3 {\n    padding-block-end: 1rem;\n  }\n  .pb-4 {\n    padding-block-end: 1.5rem;\n  }\n  .pb-5 {\n    padding-block-end: 3rem;\n  }\n  .ps-0 {\n    padding-inline-start: 0;\n  }\n  .ps-1 {\n    padding-inline-start: 0.25rem;\n  }\n  .ps-2 {\n    padding-inline-start: 0.5rem;\n  }\n  .ps-3 {\n    padding-inline-start: 1rem;\n  }\n  .ps-4 {\n    padding-inline-start: 1.5rem;\n  }\n  .ps-5 {\n    padding-inline-start: 3rem;\n  }\n  .gap-0 {\n    gap: 0;\n  }\n  .gap-1 {\n    gap: 0.25rem;\n  }\n  .gap-2 {\n    gap: 0.5rem;\n  }\n  .gap-3 {\n    gap: 1rem;\n  }\n  .gap-4 {\n    gap: 1.5rem;\n  }\n  .gap-5 {\n    gap: 3rem;\n  }\n  .row-gap-0 {\n    row-gap: 0;\n  }\n  .row-gap-1 {\n    row-gap: 0.25rem;\n  }\n  .row-gap-2 {\n    row-gap: 0.5rem;\n  }\n  .row-gap-3 {\n    row-gap: 1rem;\n  }\n  .row-gap-4 {\n    row-gap: 1.5rem;\n  }\n  .row-gap-5 {\n    row-gap: 3rem;\n  }\n  .column-gap-0 {\n    column-gap: 0;\n  }\n  .column-gap-1 {\n    column-gap: 0.25rem;\n  }\n  .column-gap-2 {\n    column-gap: 0.5rem;\n  }\n  .column-gap-3 {\n    column-gap: 1rem;\n  }\n  .column-gap-4 {\n    column-gap: 1.5rem;\n  }\n  .column-gap-5 {\n    column-gap: 3rem;\n  }\n  @media (width >= 576px) {\n    .d-sm-inline {\n      display: inline;\n    }\n    .d-sm-inline-block {\n      display: inline-block;\n    }\n    .d-sm-block {\n      display: block;\n    }\n    .d-sm-grid {\n      display: grid;\n    }\n    .d-sm-inline-grid {\n      display: inline-grid;\n    }\n    .d-sm-table {\n      display: table;\n    }\n    .d-sm-table-row {\n      display: table-row;\n    }\n    .d-sm-table-cell {\n      display: table-cell;\n    }\n    .d-sm-flex {\n      display: flex;\n    }\n    .d-sm-inline-flex {\n      display: inline-flex;\n    }\n    .d-sm-contents {\n      display: contents;\n    }\n    .d-sm-flow-root {\n      display: flow-root;\n    }\n    .d-sm-none {\n      display: none;\n    }\n    .flex-sm-fill {\n      flex: 1 1 auto;\n    }\n    .flex-sm-row {\n      flex-direction: row;\n    }\n    .flex-sm-column {\n      flex-direction: column;\n    }\n    .flex-sm-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-sm-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-sm-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-sm-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-sm-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-sm-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-sm-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-sm-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-sm-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-sm-start {\n      justify-content: flex-start;\n    }\n    .justify-content-sm-end {\n      justify-content: flex-end;\n    }\n    .justify-content-sm-center {\n      justify-content: center;\n    }\n    .justify-content-sm-between {\n      justify-content: space-between;\n    }\n    .justify-content-sm-around {\n      justify-content: space-around;\n    }\n    .justify-content-sm-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-sm-start {\n      justify-items: start;\n    }\n    .justify-items-sm-end {\n      justify-items: end;\n    }\n    .justify-items-sm-center {\n      justify-items: center;\n    }\n    .justify-items-sm-stretch {\n      justify-items: stretch;\n    }\n    .align-items-sm-start {\n      align-items: flex-start;\n    }\n    .align-items-sm-end {\n      align-items: flex-end;\n    }\n    .align-items-sm-center {\n      align-items: center;\n    }\n    .align-items-sm-baseline {\n      align-items: baseline;\n    }\n    .align-items-sm-stretch {\n      align-items: stretch;\n    }\n    .align-content-sm-start {\n      align-content: flex-start;\n    }\n    .align-content-sm-end {\n      align-content: flex-end;\n    }\n    .align-content-sm-center {\n      align-content: center;\n    }\n    .align-content-sm-between {\n      align-content: space-between;\n    }\n    .align-content-sm-around {\n      align-content: space-around;\n    }\n    .align-content-sm-stretch {\n      align-content: stretch;\n    }\n    .align-self-sm-auto {\n      align-self: auto;\n    }\n    .align-self-sm-start {\n      align-self: flex-start;\n    }\n    .align-self-sm-end {\n      align-self: flex-end;\n    }\n    .align-self-sm-center {\n      align-self: center;\n    }\n    .align-self-sm-baseline {\n      align-self: baseline;\n    }\n    .align-self-sm-stretch {\n      align-self: stretch;\n    }\n    .place-items-sm-start {\n      place-items: start;\n    }\n    .place-items-sm-end {\n      place-items: end;\n    }\n    .place-items-sm-center {\n      place-items: center;\n    }\n    .place-items-sm-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-sm-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .grid-cols-sm-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .grid-cols-sm-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .grid-cols-sm-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .grid-cols-sm-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-sm-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-sm-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-sm-dense {\n      grid-auto-flow: dense;\n    }\n    .order-sm-first {\n      order: -1;\n    }\n    .order-sm-0 {\n      order: 0;\n    }\n    .order-sm-1 {\n      order: 1;\n    }\n    .order-sm-2 {\n      order: 2;\n    }\n    .order-sm-3 {\n      order: 3;\n    }\n    .order-sm-4 {\n      order: 4;\n    }\n    .order-sm-5 {\n      order: 5;\n    }\n    .order-sm-last {\n      order: 6;\n    }\n    .m-sm-0 {\n      margin: 0;\n    }\n    .m-sm-1 {\n      margin: 0.25rem;\n    }\n    .m-sm-2 {\n      margin: 0.5rem;\n    }\n    .m-sm-3 {\n      margin: 1rem;\n    }\n    .m-sm-4 {\n      margin: 1.5rem;\n    }\n    .m-sm-5 {\n      margin: 3rem;\n    }\n    .m-sm-auto {\n      margin: auto;\n    }\n    .mx-sm-0 {\n      margin-inline: 0;\n    }\n    .mx-sm-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-sm-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-sm-3 {\n      margin-inline: 1rem;\n    }\n    .mx-sm-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-sm-5 {\n      margin-inline: 3rem;\n    }\n    .mx-sm-auto {\n      margin-inline: auto;\n    }\n    .my-sm-0 {\n      margin-block: 0;\n    }\n    .my-sm-1 {\n      margin-block: 0.25rem;\n    }\n    .my-sm-2 {\n      margin-block: 0.5rem;\n    }\n    .my-sm-3 {\n      margin-block: 1rem;\n    }\n    .my-sm-4 {\n      margin-block: 1.5rem;\n    }\n    .my-sm-5 {\n      margin-block: 3rem;\n    }\n    .my-sm-auto {\n      margin-block: auto;\n    }\n    .mt-sm-0 {\n      margin-block-start: 0;\n    }\n    .mt-sm-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-sm-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-sm-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-sm-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-sm-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-sm-auto {\n      margin-block-start: auto;\n    }\n    .me-sm-0 {\n      margin-inline-end: 0;\n    }\n    .me-sm-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-sm-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-sm-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-sm-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-sm-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-sm-auto {\n      margin-inline-end: auto;\n    }\n    .mb-sm-0 {\n      margin-block-end: 0;\n    }\n    .mb-sm-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-sm-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-sm-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-sm-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-sm-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-sm-auto {\n      margin-block-end: auto;\n    }\n    .ms-sm-0 {\n      margin-inline-start: 0;\n    }\n    .ms-sm-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-sm-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-sm-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-sm-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-sm-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-sm--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-sm--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-sm-auto {\n      margin-inline-start: auto;\n    }\n    .p-sm-0 {\n      padding: 0;\n    }\n    .p-sm-1 {\n      padding: 0.25rem;\n    }\n    .p-sm-2 {\n      padding: 0.5rem;\n    }\n    .p-sm-3 {\n      padding: 1rem;\n    }\n    .p-sm-4 {\n      padding: 1.5rem;\n    }\n    .p-sm-5 {\n      padding: 3rem;\n    }\n    .px-sm-0 {\n      padding-inline: 0;\n    }\n    .px-sm-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-sm-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-sm-3 {\n      padding-inline: 1rem;\n    }\n    .px-sm-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-sm-5 {\n      padding-inline: 3rem;\n    }\n    .py-sm-0 {\n      padding-block: 0;\n    }\n    .py-sm-1 {\n      padding-block: 0.25rem;\n    }\n    .py-sm-2 {\n      padding-block: 0.5rem;\n    }\n    .py-sm-3 {\n      padding-block: 1rem;\n    }\n    .py-sm-4 {\n      padding-block: 1.5rem;\n    }\n    .py-sm-5 {\n      padding-block: 3rem;\n    }\n    .pt-sm-0 {\n      padding-block-start: 0;\n    }\n    .pt-sm-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-sm-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-sm-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-sm-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-sm-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-sm-0 {\n      padding-inline-end: 0;\n    }\n    .pe-sm-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-sm-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-sm-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-sm-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-sm-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-sm-0 {\n      padding-block-end: 0;\n    }\n    .pb-sm-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-sm-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-sm-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-sm-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-sm-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-sm-0 {\n      padding-inline-start: 0;\n    }\n    .ps-sm-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-sm-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-sm-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-sm-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-sm-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-sm-0 {\n      gap: 0;\n    }\n    .gap-sm-1 {\n      gap: 0.25rem;\n    }\n    .gap-sm-2 {\n      gap: 0.5rem;\n    }\n    .gap-sm-3 {\n      gap: 1rem;\n    }\n    .gap-sm-4 {\n      gap: 1.5rem;\n    }\n    .gap-sm-5 {\n      gap: 3rem;\n    }\n    .row-gap-sm-0 {\n      row-gap: 0;\n    }\n    .row-gap-sm-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-sm-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-sm-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-sm-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-sm-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-sm-0 {\n      column-gap: 0;\n    }\n    .column-gap-sm-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-sm-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-sm-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-sm-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-sm-5 {\n      column-gap: 3rem;\n    }\n  }\n  @media (width >= 768px) {\n    .d-md-inline {\n      display: inline;\n    }\n    .d-md-inline-block {\n      display: inline-block;\n    }\n    .d-md-block {\n      display: block;\n    }\n    .d-md-grid {\n      display: grid;\n    }\n    .d-md-inline-grid {\n      display: inline-grid;\n    }\n    .d-md-table {\n      display: table;\n    }\n    .d-md-table-row {\n      display: table-row;\n    }\n    .d-md-table-cell {\n      display: table-cell;\n    }\n    .d-md-flex {\n      display: flex;\n    }\n    .d-md-inline-flex {\n      display: inline-flex;\n    }\n    .d-md-contents {\n      display: contents;\n    }\n    .d-md-flow-root {\n      display: flow-root;\n    }\n    .d-md-none {\n      display: none;\n    }\n    .flex-md-fill {\n      flex: 1 1 auto;\n    }\n    .flex-md-row {\n      flex-direction: row;\n    }\n    .flex-md-column {\n      flex-direction: column;\n    }\n    .flex-md-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-md-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-md-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-md-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-md-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-md-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-md-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-md-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-md-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-md-start {\n      justify-content: flex-start;\n    }\n    .justify-content-md-end {\n      justify-content: flex-end;\n    }\n    .justify-content-md-center {\n      justify-content: center;\n    }\n    .justify-content-md-between {\n      justify-content: space-between;\n    }\n    .justify-content-md-around {\n      justify-content: space-around;\n    }\n    .justify-content-md-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-md-start {\n      justify-items: start;\n    }\n    .justify-items-md-end {\n      justify-items: end;\n    }\n    .justify-items-md-center {\n      justify-items: center;\n    }\n    .justify-items-md-stretch {\n      justify-items: stretch;\n    }\n    .align-items-md-start {\n      align-items: flex-start;\n    }\n    .align-items-md-end {\n      align-items: flex-end;\n    }\n    .align-items-md-center {\n      align-items: center;\n    }\n    .align-items-md-baseline {\n      align-items: baseline;\n    }\n    .align-items-md-stretch {\n      align-items: stretch;\n    }\n    .align-content-md-start {\n      align-content: flex-start;\n    }\n    .align-content-md-end {\n      align-content: flex-end;\n    }\n    .align-content-md-center {\n      align-content: center;\n    }\n    .align-content-md-between {\n      align-content: space-between;\n    }\n    .align-content-md-around {\n      align-content: space-around;\n    }\n    .align-content-md-stretch {\n      align-content: stretch;\n    }\n    .align-self-md-auto {\n      align-self: auto;\n    }\n    .align-self-md-start {\n      align-self: flex-start;\n    }\n    .align-self-md-end {\n      align-self: flex-end;\n    }\n    .align-self-md-center {\n      align-self: center;\n    }\n    .align-self-md-baseline {\n      align-self: baseline;\n    }\n    .align-self-md-stretch {\n      align-self: stretch;\n    }\n    .place-items-md-start {\n      place-items: start;\n    }\n    .place-items-md-end {\n      place-items: end;\n    }\n    .place-items-md-center {\n      place-items: center;\n    }\n    .place-items-md-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-md-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .grid-cols-md-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .grid-cols-md-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .grid-cols-md-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .grid-cols-md-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-md-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-md-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-md-dense {\n      grid-auto-flow: dense;\n    }\n    .order-md-first {\n      order: -1;\n    }\n    .order-md-0 {\n      order: 0;\n    }\n    .order-md-1 {\n      order: 1;\n    }\n    .order-md-2 {\n      order: 2;\n    }\n    .order-md-3 {\n      order: 3;\n    }\n    .order-md-4 {\n      order: 4;\n    }\n    .order-md-5 {\n      order: 5;\n    }\n    .order-md-last {\n      order: 6;\n    }\n    .m-md-0 {\n      margin: 0;\n    }\n    .m-md-1 {\n      margin: 0.25rem;\n    }\n    .m-md-2 {\n      margin: 0.5rem;\n    }\n    .m-md-3 {\n      margin: 1rem;\n    }\n    .m-md-4 {\n      margin: 1.5rem;\n    }\n    .m-md-5 {\n      margin: 3rem;\n    }\n    .m-md-auto {\n      margin: auto;\n    }\n    .mx-md-0 {\n      margin-inline: 0;\n    }\n    .mx-md-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-md-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-md-3 {\n      margin-inline: 1rem;\n    }\n    .mx-md-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-md-5 {\n      margin-inline: 3rem;\n    }\n    .mx-md-auto {\n      margin-inline: auto;\n    }\n    .my-md-0 {\n      margin-block: 0;\n    }\n    .my-md-1 {\n      margin-block: 0.25rem;\n    }\n    .my-md-2 {\n      margin-block: 0.5rem;\n    }\n    .my-md-3 {\n      margin-block: 1rem;\n    }\n    .my-md-4 {\n      margin-block: 1.5rem;\n    }\n    .my-md-5 {\n      margin-block: 3rem;\n    }\n    .my-md-auto {\n      margin-block: auto;\n    }\n    .mt-md-0 {\n      margin-block-start: 0;\n    }\n    .mt-md-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-md-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-md-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-md-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-md-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-md-auto {\n      margin-block-start: auto;\n    }\n    .me-md-0 {\n      margin-inline-end: 0;\n    }\n    .me-md-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-md-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-md-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-md-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-md-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-md-auto {\n      margin-inline-end: auto;\n    }\n    .mb-md-0 {\n      margin-block-end: 0;\n    }\n    .mb-md-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-md-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-md-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-md-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-md-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-md-auto {\n      margin-block-end: auto;\n    }\n    .ms-md-0 {\n      margin-inline-start: 0;\n    }\n    .ms-md-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-md-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-md-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-md-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-md-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-md--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-md--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-md-auto {\n      margin-inline-start: auto;\n    }\n    .p-md-0 {\n      padding: 0;\n    }\n    .p-md-1 {\n      padding: 0.25rem;\n    }\n    .p-md-2 {\n      padding: 0.5rem;\n    }\n    .p-md-3 {\n      padding: 1rem;\n    }\n    .p-md-4 {\n      padding: 1.5rem;\n    }\n    .p-md-5 {\n      padding: 3rem;\n    }\n    .px-md-0 {\n      padding-inline: 0;\n    }\n    .px-md-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-md-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-md-3 {\n      padding-inline: 1rem;\n    }\n    .px-md-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-md-5 {\n      padding-inline: 3rem;\n    }\n    .py-md-0 {\n      padding-block: 0;\n    }\n    .py-md-1 {\n      padding-block: 0.25rem;\n    }\n    .py-md-2 {\n      padding-block: 0.5rem;\n    }\n    .py-md-3 {\n      padding-block: 1rem;\n    }\n    .py-md-4 {\n      padding-block: 1.5rem;\n    }\n    .py-md-5 {\n      padding-block: 3rem;\n    }\n    .pt-md-0 {\n      padding-block-start: 0;\n    }\n    .pt-md-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-md-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-md-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-md-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-md-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-md-0 {\n      padding-inline-end: 0;\n    }\n    .pe-md-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-md-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-md-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-md-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-md-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-md-0 {\n      padding-block-end: 0;\n    }\n    .pb-md-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-md-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-md-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-md-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-md-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-md-0 {\n      padding-inline-start: 0;\n    }\n    .ps-md-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-md-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-md-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-md-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-md-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-md-0 {\n      gap: 0;\n    }\n    .gap-md-1 {\n      gap: 0.25rem;\n    }\n    .gap-md-2 {\n      gap: 0.5rem;\n    }\n    .gap-md-3 {\n      gap: 1rem;\n    }\n    .gap-md-4 {\n      gap: 1.5rem;\n    }\n    .gap-md-5 {\n      gap: 3rem;\n    }\n    .row-gap-md-0 {\n      row-gap: 0;\n    }\n    .row-gap-md-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-md-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-md-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-md-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-md-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-md-0 {\n      column-gap: 0;\n    }\n    .column-gap-md-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-md-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-md-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-md-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-md-5 {\n      column-gap: 3rem;\n    }\n  }\n  @media (width >= 1024px) {\n    .d-lg-inline {\n      display: inline;\n    }\n    .d-lg-inline-block {\n      display: inline-block;\n    }\n    .d-lg-block {\n      display: block;\n    }\n    .d-lg-grid {\n      display: grid;\n    }\n    .d-lg-inline-grid {\n      display: inline-grid;\n    }\n    .d-lg-table {\n      display: table;\n    }\n    .d-lg-table-row {\n      display: table-row;\n    }\n    .d-lg-table-cell {\n      display: table-cell;\n    }\n    .d-lg-flex {\n      display: flex;\n    }\n    .d-lg-inline-flex {\n      display: inline-flex;\n    }\n    .d-lg-contents {\n      display: contents;\n    }\n    .d-lg-flow-root {\n      display: flow-root;\n    }\n    .d-lg-none {\n      display: none;\n    }\n    .flex-lg-fill {\n      flex: 1 1 auto;\n    }\n    .flex-lg-row {\n      flex-direction: row;\n    }\n    .flex-lg-column {\n      flex-direction: column;\n    }\n    .flex-lg-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-lg-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-lg-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-lg-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-lg-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-lg-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-lg-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-lg-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-lg-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-lg-start {\n      justify-content: flex-start;\n    }\n    .justify-content-lg-end {\n      justify-content: flex-end;\n    }\n    .justify-content-lg-center {\n      justify-content: center;\n    }\n    .justify-content-lg-between {\n      justify-content: space-between;\n    }\n    .justify-content-lg-around {\n      justify-content: space-around;\n    }\n    .justify-content-lg-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-lg-start {\n      justify-items: start;\n    }\n    .justify-items-lg-end {\n      justify-items: end;\n    }\n    .justify-items-lg-center {\n      justify-items: center;\n    }\n    .justify-items-lg-stretch {\n      justify-items: stretch;\n    }\n    .align-items-lg-start {\n      align-items: flex-start;\n    }\n    .align-items-lg-end {\n      align-items: flex-end;\n    }\n    .align-items-lg-center {\n      align-items: center;\n    }\n    .align-items-lg-baseline {\n      align-items: baseline;\n    }\n    .align-items-lg-stretch {\n      align-items: stretch;\n    }\n    .align-content-lg-start {\n      align-content: flex-start;\n    }\n    .align-content-lg-end {\n      align-content: flex-end;\n    }\n    .align-content-lg-center {\n      align-content: center;\n    }\n    .align-content-lg-between {\n      align-content: space-between;\n    }\n    .align-content-lg-around {\n      align-content: space-around;\n    }\n    .align-content-lg-stretch {\n      align-content: stretch;\n    }\n    .align-self-lg-auto {\n      align-self: auto;\n    }\n    .align-self-lg-start {\n      align-self: flex-start;\n    }\n    .align-self-lg-end {\n      align-self: flex-end;\n    }\n    .align-self-lg-center {\n      align-self: center;\n    }\n    .align-self-lg-baseline {\n      align-self: baseline;\n    }\n    .align-self-lg-stretch {\n      align-self: stretch;\n    }\n    .place-items-lg-start {\n      place-items: start;\n    }\n    .place-items-lg-end {\n      place-items: end;\n    }\n    .place-items-lg-center {\n      place-items: center;\n    }\n    .place-items-lg-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-lg-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .grid-cols-lg-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .grid-cols-lg-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .grid-cols-lg-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .grid-cols-lg-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-lg-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-lg-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-lg-dense {\n      grid-auto-flow: dense;\n    }\n    .order-lg-first {\n      order: -1;\n    }\n    .order-lg-0 {\n      order: 0;\n    }\n    .order-lg-1 {\n      order: 1;\n    }\n    .order-lg-2 {\n      order: 2;\n    }\n    .order-lg-3 {\n      order: 3;\n    }\n    .order-lg-4 {\n      order: 4;\n    }\n    .order-lg-5 {\n      order: 5;\n    }\n    .order-lg-last {\n      order: 6;\n    }\n    .m-lg-0 {\n      margin: 0;\n    }\n    .m-lg-1 {\n      margin: 0.25rem;\n    }\n    .m-lg-2 {\n      margin: 0.5rem;\n    }\n    .m-lg-3 {\n      margin: 1rem;\n    }\n    .m-lg-4 {\n      margin: 1.5rem;\n    }\n    .m-lg-5 {\n      margin: 3rem;\n    }\n    .m-lg-auto {\n      margin: auto;\n    }\n    .mx-lg-0 {\n      margin-inline: 0;\n    }\n    .mx-lg-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-lg-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-lg-3 {\n      margin-inline: 1rem;\n    }\n    .mx-lg-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-lg-5 {\n      margin-inline: 3rem;\n    }\n    .mx-lg-auto {\n      margin-inline: auto;\n    }\n    .my-lg-0 {\n      margin-block: 0;\n    }\n    .my-lg-1 {\n      margin-block: 0.25rem;\n    }\n    .my-lg-2 {\n      margin-block: 0.5rem;\n    }\n    .my-lg-3 {\n      margin-block: 1rem;\n    }\n    .my-lg-4 {\n      margin-block: 1.5rem;\n    }\n    .my-lg-5 {\n      margin-block: 3rem;\n    }\n    .my-lg-auto {\n      margin-block: auto;\n    }\n    .mt-lg-0 {\n      margin-block-start: 0;\n    }\n    .mt-lg-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-lg-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-lg-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-lg-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-lg-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-lg-auto {\n      margin-block-start: auto;\n    }\n    .me-lg-0 {\n      margin-inline-end: 0;\n    }\n    .me-lg-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-lg-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-lg-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-lg-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-lg-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-lg-auto {\n      margin-inline-end: auto;\n    }\n    .mb-lg-0 {\n      margin-block-end: 0;\n    }\n    .mb-lg-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-lg-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-lg-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-lg-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-lg-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-lg-auto {\n      margin-block-end: auto;\n    }\n    .ms-lg-0 {\n      margin-inline-start: 0;\n    }\n    .ms-lg-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-lg-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-lg-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-lg-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-lg-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-lg--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-lg--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-lg-auto {\n      margin-inline-start: auto;\n    }\n    .p-lg-0 {\n      padding: 0;\n    }\n    .p-lg-1 {\n      padding: 0.25rem;\n    }\n    .p-lg-2 {\n      padding: 0.5rem;\n    }\n    .p-lg-3 {\n      padding: 1rem;\n    }\n    .p-lg-4 {\n      padding: 1.5rem;\n    }\n    .p-lg-5 {\n      padding: 3rem;\n    }\n    .px-lg-0 {\n      padding-inline: 0;\n    }\n    .px-lg-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-lg-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-lg-3 {\n      padding-inline: 1rem;\n    }\n    .px-lg-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-lg-5 {\n      padding-inline: 3rem;\n    }\n    .py-lg-0 {\n      padding-block: 0;\n    }\n    .py-lg-1 {\n      padding-block: 0.25rem;\n    }\n    .py-lg-2 {\n      padding-block: 0.5rem;\n    }\n    .py-lg-3 {\n      padding-block: 1rem;\n    }\n    .py-lg-4 {\n      padding-block: 1.5rem;\n    }\n    .py-lg-5 {\n      padding-block: 3rem;\n    }\n    .pt-lg-0 {\n      padding-block-start: 0;\n    }\n    .pt-lg-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-lg-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-lg-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-lg-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-lg-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-lg-0 {\n      padding-inline-end: 0;\n    }\n    .pe-lg-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-lg-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-lg-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-lg-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-lg-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-lg-0 {\n      padding-block-end: 0;\n    }\n    .pb-lg-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-lg-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-lg-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-lg-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-lg-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-lg-0 {\n      padding-inline-start: 0;\n    }\n    .ps-lg-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-lg-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-lg-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-lg-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-lg-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-lg-0 {\n      gap: 0;\n    }\n    .gap-lg-1 {\n      gap: 0.25rem;\n    }\n    .gap-lg-2 {\n      gap: 0.5rem;\n    }\n    .gap-lg-3 {\n      gap: 1rem;\n    }\n    .gap-lg-4 {\n      gap: 1.5rem;\n    }\n    .gap-lg-5 {\n      gap: 3rem;\n    }\n    .row-gap-lg-0 {\n      row-gap: 0;\n    }\n    .row-gap-lg-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-lg-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-lg-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-lg-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-lg-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-lg-0 {\n      column-gap: 0;\n    }\n    .column-gap-lg-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-lg-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-lg-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-lg-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-lg-5 {\n      column-gap: 3rem;\n    }\n  }\n  @media (width >= 1280px) {\n    .d-xl-inline {\n      display: inline;\n    }\n    .d-xl-inline-block {\n      display: inline-block;\n    }\n    .d-xl-block {\n      display: block;\n    }\n    .d-xl-grid {\n      display: grid;\n    }\n    .d-xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-xl-table {\n      display: table;\n    }\n    .d-xl-table-row {\n      display: table-row;\n    }\n    .d-xl-table-cell {\n      display: table-cell;\n    }\n    .d-xl-flex {\n      display: flex;\n    }\n    .d-xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-xl-contents {\n      display: contents;\n    }\n    .d-xl-flow-root {\n      display: flow-root;\n    }\n    .d-xl-none {\n      display: none;\n    }\n    .flex-xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-xl-row {\n      flex-direction: row;\n    }\n    .flex-xl-column {\n      flex-direction: column;\n    }\n    .flex-xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-xl-center {\n      justify-content: center;\n    }\n    .justify-content-xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-xl-start {\n      justify-items: start;\n    }\n    .justify-items-xl-end {\n      justify-items: end;\n    }\n    .justify-items-xl-center {\n      justify-items: center;\n    }\n    .justify-items-xl-stretch {\n      justify-items: stretch;\n    }\n    .align-items-xl-start {\n      align-items: flex-start;\n    }\n    .align-items-xl-end {\n      align-items: flex-end;\n    }\n    .align-items-xl-center {\n      align-items: center;\n    }\n    .align-items-xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-xl-start {\n      align-content: flex-start;\n    }\n    .align-content-xl-end {\n      align-content: flex-end;\n    }\n    .align-content-xl-center {\n      align-content: center;\n    }\n    .align-content-xl-between {\n      align-content: space-between;\n    }\n    .align-content-xl-around {\n      align-content: space-around;\n    }\n    .align-content-xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-xl-auto {\n      align-self: auto;\n    }\n    .align-self-xl-start {\n      align-self: flex-start;\n    }\n    .align-self-xl-end {\n      align-self: flex-end;\n    }\n    .align-self-xl-center {\n      align-self: center;\n    }\n    .align-self-xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-xl-start {\n      place-items: start;\n    }\n    .place-items-xl-end {\n      place-items: end;\n    }\n    .place-items-xl-center {\n      place-items: center;\n    }\n    .place-items-xl-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-xl-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .grid-cols-xl-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .grid-cols-xl-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .grid-cols-xl-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .grid-cols-xl-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-xl-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-xl-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-xl-dense {\n      grid-auto-flow: dense;\n    }\n    .order-xl-first {\n      order: -1;\n    }\n    .order-xl-0 {\n      order: 0;\n    }\n    .order-xl-1 {\n      order: 1;\n    }\n    .order-xl-2 {\n      order: 2;\n    }\n    .order-xl-3 {\n      order: 3;\n    }\n    .order-xl-4 {\n      order: 4;\n    }\n    .order-xl-5 {\n      order: 5;\n    }\n    .order-xl-last {\n      order: 6;\n    }\n    .m-xl-0 {\n      margin: 0;\n    }\n    .m-xl-1 {\n      margin: 0.25rem;\n    }\n    .m-xl-2 {\n      margin: 0.5rem;\n    }\n    .m-xl-3 {\n      margin: 1rem;\n    }\n    .m-xl-4 {\n      margin: 1.5rem;\n    }\n    .m-xl-5 {\n      margin: 3rem;\n    }\n    .m-xl-auto {\n      margin: auto;\n    }\n    .mx-xl-0 {\n      margin-inline: 0;\n    }\n    .mx-xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-xl-auto {\n      margin-inline: auto;\n    }\n    .my-xl-0 {\n      margin-block: 0;\n    }\n    .my-xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-xl-3 {\n      margin-block: 1rem;\n    }\n    .my-xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-xl-5 {\n      margin-block: 3rem;\n    }\n    .my-xl-auto {\n      margin-block: auto;\n    }\n    .mt-xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-xl-auto {\n      margin-block-start: auto;\n    }\n    .me-xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-xl-0 {\n      padding: 0;\n    }\n    .p-xl-1 {\n      padding: 0.25rem;\n    }\n    .p-xl-2 {\n      padding: 0.5rem;\n    }\n    .p-xl-3 {\n      padding: 1rem;\n    }\n    .p-xl-4 {\n      padding: 1.5rem;\n    }\n    .p-xl-5 {\n      padding: 3rem;\n    }\n    .px-xl-0 {\n      padding-inline: 0;\n    }\n    .px-xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-xl-0 {\n      padding-block: 0;\n    }\n    .py-xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-xl-3 {\n      padding-block: 1rem;\n    }\n    .py-xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-xl-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-xl-0 {\n      gap: 0;\n    }\n    .gap-xl-1 {\n      gap: 0.25rem;\n    }\n    .gap-xl-2 {\n      gap: 0.5rem;\n    }\n    .gap-xl-3 {\n      gap: 1rem;\n    }\n    .gap-xl-4 {\n      gap: 1.5rem;\n    }\n    .gap-xl-5 {\n      gap: 3rem;\n    }\n    .row-gap-xl-0 {\n      row-gap: 0;\n    }\n    .row-gap-xl-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-xl-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-xl-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-xl-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-xl-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-xl-0 {\n      column-gap: 0;\n    }\n    .column-gap-xl-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-xl-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-xl-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-xl-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-xl-5 {\n      column-gap: 3rem;\n    }\n  }\n  @media (width >= 1536px) {\n    .d-2xl-inline {\n      display: inline;\n    }\n    .d-2xl-inline-block {\n      display: inline-block;\n    }\n    .d-2xl-block {\n      display: block;\n    }\n    .d-2xl-grid {\n      display: grid;\n    }\n    .d-2xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-2xl-table {\n      display: table;\n    }\n    .d-2xl-table-row {\n      display: table-row;\n    }\n    .d-2xl-table-cell {\n      display: table-cell;\n    }\n    .d-2xl-flex {\n      display: flex;\n    }\n    .d-2xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-2xl-contents {\n      display: contents;\n    }\n    .d-2xl-flow-root {\n      display: flow-root;\n    }\n    .d-2xl-none {\n      display: none;\n    }\n    .flex-2xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-2xl-row {\n      flex-direction: row;\n    }\n    .flex-2xl-column {\n      flex-direction: column;\n    }\n    .flex-2xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-2xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-2xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-2xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-2xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-2xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-2xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-2xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-2xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-2xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-2xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-2xl-center {\n      justify-content: center;\n    }\n    .justify-content-2xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-2xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-2xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-2xl-start {\n      justify-items: start;\n    }\n    .justify-items-2xl-end {\n      justify-items: end;\n    }\n    .justify-items-2xl-center {\n      justify-items: center;\n    }\n    .justify-items-2xl-stretch {\n      justify-items: stretch;\n    }\n    .align-items-2xl-start {\n      align-items: flex-start;\n    }\n    .align-items-2xl-end {\n      align-items: flex-end;\n    }\n    .align-items-2xl-center {\n      align-items: center;\n    }\n    .align-items-2xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-2xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-2xl-start {\n      align-content: flex-start;\n    }\n    .align-content-2xl-end {\n      align-content: flex-end;\n    }\n    .align-content-2xl-center {\n      align-content: center;\n    }\n    .align-content-2xl-between {\n      align-content: space-between;\n    }\n    .align-content-2xl-around {\n      align-content: space-around;\n    }\n    .align-content-2xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-2xl-auto {\n      align-self: auto;\n    }\n    .align-self-2xl-start {\n      align-self: flex-start;\n    }\n    .align-self-2xl-end {\n      align-self: flex-end;\n    }\n    .align-self-2xl-center {\n      align-self: center;\n    }\n    .align-self-2xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-2xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-2xl-start {\n      place-items: start;\n    }\n    .place-items-2xl-end {\n      place-items: end;\n    }\n    .place-items-2xl-center {\n      place-items: center;\n    }\n    .place-items-2xl-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-2xl-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .grid-cols-2xl-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .grid-cols-2xl-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .grid-cols-2xl-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .grid-cols-2xl-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-2xl-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-2xl-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-2xl-dense {\n      grid-auto-flow: dense;\n    }\n    .order-2xl-first {\n      order: -1;\n    }\n    .order-2xl-0 {\n      order: 0;\n    }\n    .order-2xl-1 {\n      order: 1;\n    }\n    .order-2xl-2 {\n      order: 2;\n    }\n    .order-2xl-3 {\n      order: 3;\n    }\n    .order-2xl-4 {\n      order: 4;\n    }\n    .order-2xl-5 {\n      order: 5;\n    }\n    .order-2xl-last {\n      order: 6;\n    }\n    .m-2xl-0 {\n      margin: 0;\n    }\n    .m-2xl-1 {\n      margin: 0.25rem;\n    }\n    .m-2xl-2 {\n      margin: 0.5rem;\n    }\n    .m-2xl-3 {\n      margin: 1rem;\n    }\n    .m-2xl-4 {\n      margin: 1.5rem;\n    }\n    .m-2xl-5 {\n      margin: 3rem;\n    }\n    .m-2xl-auto {\n      margin: auto;\n    }\n    .mx-2xl-0 {\n      margin-inline: 0;\n    }\n    .mx-2xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-2xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-2xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-2xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-2xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-2xl-auto {\n      margin-inline: auto;\n    }\n    .my-2xl-0 {\n      margin-block: 0;\n    }\n    .my-2xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-2xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-2xl-3 {\n      margin-block: 1rem;\n    }\n    .my-2xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-2xl-5 {\n      margin-block: 3rem;\n    }\n    .my-2xl-auto {\n      margin-block: auto;\n    }\n    .mt-2xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-2xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-2xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-2xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-2xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-2xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-2xl-auto {\n      margin-block-start: auto;\n    }\n    .me-2xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-2xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-2xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-2xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-2xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-2xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-2xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-2xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-2xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-2xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-2xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-2xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-2xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-2xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-2xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-2xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-2xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-2xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-2xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-2xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-2xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-2xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-2xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-2xl-0 {\n      padding: 0;\n    }\n    .p-2xl-1 {\n      padding: 0.25rem;\n    }\n    .p-2xl-2 {\n      padding: 0.5rem;\n    }\n    .p-2xl-3 {\n      padding: 1rem;\n    }\n    .p-2xl-4 {\n      padding: 1.5rem;\n    }\n    .p-2xl-5 {\n      padding: 3rem;\n    }\n    .px-2xl-0 {\n      padding-inline: 0;\n    }\n    .px-2xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-2xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-2xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-2xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-2xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-2xl-0 {\n      padding-block: 0;\n    }\n    .py-2xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-2xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-2xl-3 {\n      padding-block: 1rem;\n    }\n    .py-2xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-2xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-2xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-2xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-2xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-2xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-2xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-2xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-2xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-2xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-2xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-2xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-2xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-2xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-2xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-2xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-2xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-2xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-2xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-2xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-2xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-2xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-2xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-2xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-2xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-2xl-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-2xl-0 {\n      gap: 0;\n    }\n    .gap-2xl-1 {\n      gap: 0.25rem;\n    }\n    .gap-2xl-2 {\n      gap: 0.5rem;\n    }\n    .gap-2xl-3 {\n      gap: 1rem;\n    }\n    .gap-2xl-4 {\n      gap: 1.5rem;\n    }\n    .gap-2xl-5 {\n      gap: 3rem;\n    }\n    .row-gap-2xl-0 {\n      row-gap: 0;\n    }\n    .row-gap-2xl-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-2xl-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-2xl-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-2xl-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-2xl-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-2xl-0 {\n      column-gap: 0;\n    }\n    .column-gap-2xl-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-2xl-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-2xl-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-2xl-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-2xl-5 {\n      column-gap: 3rem;\n    }\n  }\n}\n:root {\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 1024px;\n  --breakpoint-xl: 1280px;\n  --breakpoint-2xl: 1536px;\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"../config\" as *;\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px)\n//\n// The map defined in the `$breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl 2xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $breakpoints, $breakpoint-names: map.keys($breakpoints)) {\n  $n: list.index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoint-names}`\";\n  }\n  // Use @if/@else because list.nth would error if evaluated when $n equals list length\n  @if $n < list.length($breakpoint-names) {\n    @return list.nth($breakpoint-names, $n + 1);\n  } @else {\n    @return null;\n  }\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $breakpoints) {\n  $min: map.get($breakpoints, $name);\n  @return if(sass($min != 0): $min; else: null);\n}\n\n// Maximum breakpoint width for range media queries.\n// Returns the breakpoint value to use as an upper bound in range queries.\n//\n//    >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n//    >> breakpoint-max(xxl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    null\n@function breakpoint-max($name, $breakpoints: $breakpoints) {\n  @if $name == null {\n    @return null;\n  }\n  $max: map.get($breakpoints, $name);\n  @return if(sass($max and $max > 0): $max; else: null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $breakpoints) {\n  @return if(sass(breakpoint-min($name, $breakpoints) == null): \"\"; else: \"-#{$name}\");\n}\n\n// Iterate all breakpoints and provide the current name and infix.\n//\n//    @include loop-breakpoints-up() using ($breakpoint, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-up($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n    @content($breakpoint, $infix);\n  }\n}\n\n// Iterate all breakpoints and provide the current name, next name, and next infix.\n//\n//    @include loop-breakpoints-down() using ($breakpoint, $next, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-down($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $next: breakpoint-next($breakpoint, $breakpoints);\n    $infix: breakpoint-infix($next, $breakpoints);\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Backwards-compatible alias for next/down breakpoint loops.\n@mixin loop-breakpoints($breakpoints: $breakpoints) {\n  @include loop-breakpoints-down($breakpoints) using ($breakpoint, $next, $infix) {\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (width >= $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (width < $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n\n// Container queries\n//\n// Container queries allow elements to respond to the size of a containing element\n// rather than the viewport. These mixins mirror the media-breakpoint-* mixins above.\n//\n// scss-docs-start container-query-mixins\n\n// Set an element as a query container.\n//\n//    @include set-container();                    // container-type: inline-size\n//    @include set-container(size);                // container-type: size\n//    @include set-container(inline-size, sidebar); // container: sidebar / inline-size\n//\n@mixin set-container($type: inline-size, $name: null) {\n  @if $name {\n    container: #{$name} / #{$type};\n  } @else {\n    container-type: #{$type};\n  }\n}\n\n// Container query of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider within the container.\n//\n//    @include container-breakpoint-up(md) { ... }\n//    @include container-breakpoint-up(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-up($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower within the container.\n//\n//    @include container-breakpoint-down(lg) { ... }\n//    @include container-breakpoint-down(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-down($name, $container-name: null, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @if $container-name {\n      @container #{$container-name} (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints within the container.\n//\n//    @include container-breakpoint-between(md, xl) { ... }\n//    @include container-breakpoint-between(md, xl, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-between($lower, $upper, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($lower, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($upper, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Container query between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint within the container.\n//\n//    @include container-breakpoint-only(md) { ... }\n//    @include container-breakpoint-only(md, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-only($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($name, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($next, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n// scss-docs-end container-query-mixins\n","@use \"sass:map\";\n@use \"sass:meta\";\n\n// Configuration\n//\n// Variables and settings not related to theme, components, and more go here. It does include layout.\n\n// Merge overrides on top of defaults, stripping null entries.\n// Null values let users remove map keys via @use ... with().\n// Accepts a list as $defaults (converted to a map with `true` values).\n@function defaults($defaults, $overrides) {\n  @if meta.type-of($defaults) == \"list\" {\n    $map: ();\n    @each $key in $defaults {\n      $map: map.merge($map, ($key: true));\n    }\n    $defaults: $map;\n  }\n  $merged: map.merge($defaults, $overrides);\n  @each $key, $value in $merged {\n    @if $value == null {\n      $merged: map.remove($merged, $key);\n    }\n  }\n  @return $merged;\n}\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              true !default;\n$enable-gradients:            false !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        true !default;\n$enable-grid-classes:         true !default;\n$enable-container-classes:    true !default;\n$enable-cssgrid:              true !default;\n$enable-button-pointers:      true !default;\n$enable-validation-icons:     true !default;\n// $enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n\n$enable-dark-mode:            true !default;\n\n$color-mode-type:          \"media-query\" !default;\n$color-contrast-dark:      #000 !default;\n$color-contrast-light:     #fff !default;\n$min-contrast-ratio:         4.5 !default;\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n\n$negative-spacers: (\n  \"-1\": $spacer * -.25,\n  \"-2\": $spacer * -.5,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n$sizes: (\n  1: $spacer,\n  2: calc($spacer * 2),\n  3: calc($spacer * 3),\n  4: calc($spacer * 4),\n  5: calc($spacer * 5),\n  6: calc($spacer * 6),\n  7: calc($spacer * 7),\n  8: calc($spacer * 8),\n  9: calc($spacer * 9),\n  10: calc($spacer * 10),\n  11: calc($spacer * 11),\n  12: calc($spacer * 12),\n) !default;\n\n// Breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start breakpoints\n$breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 1024px,\n  xl: 1280px,\n  2xl: 1536px\n) !default;\n// scss-docs-end breakpoints\n\n// @include _assert-ascending($breakpoints, \"$breakpoints\");\n// @include _assert-starts-at-zero($breakpoints, \"$breakpoints\");\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-x: 1.5rem !default;\n$grid-gutter-y: 0 !default;\n$grid-row-columns: 6 !default;\n\n$gutters: $spacers !default;\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1200px,\n  2xl: 1440px\n) !default;\n// scss-docs-end container-max-widths\n\n$container-padding-x: $grid-gutter-x !default;\n\n$utilities: () !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent)) !default;\n// scss-docs-end variable-gradient\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Links\n//\n// Style anchor elements.\n\n$link-decoration:                         underline !default;\n$link-underline-offset:                   .2em !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap:               .375rem !default;\n$icon-link-underline-offset:  .25em !default;\n$icon-link-icon-size:         1em !default;\n$icon-link-icon-transition:   .2s ease-in-out transform !default;\n$icon-link-icon-transform:    translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n$border-style:                solid !default;\n$border-color:                color-mix(in oklch, var(--gray-100), var(--gray-200)) !default;\n// scss-docs-end border-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"auto\": auto,\n  \"1x1\": #{\"1 / 1\"},\n  \"4x3\": #{\"4 / 3\"},\n  \"16x9\": #{\"16 / 9\"},\n  \"21x9\": #{\"21 / 9\"}\n) !default;\n// scss-docs-end aspect-ratios\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-medium:          500 !default;\n$font-weight-semibold:        600 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$font-sizes: defaults(\n  (\n    \"xs\": (\n      \"font-size\": .75rem,\n      \"line-height\": 1.25\n    ),\n    \"sm\": (\n      \"font-size\": .875rem,\n      \"line-height\": 1.5\n    ),\n    \"md\": (\n      \"font-size\": 1rem,\n      \"line-height\": 1.5\n    ),\n    \"lg\": (\n      \"font-size\": clamp(1.25rem, 1rem + .625vw, 1.5rem),\n      \"line-height\": 1.5\n    ),\n    \"xl\": (\n      \"font-size\": clamp(1.5rem, 1.1rem + .75vw, 1.75rem),\n      \"line-height\": calc(2.5 / 1.75)\n    ),\n    \"2xl\": (\n      \"font-size\": clamp(1.75rem, 1.3rem + 1vw, 2rem),\n      \"line-height\": calc(3 / 2.25)\n    ),\n    \"3xl\": (\n      \"font-size\": clamp(2rem, 1.5rem + 1.875vw, 2.5rem),\n      \"line-height\": 1.2\n    ),\n    \"4xl\": (\n      \"font-size\": clamp(2.25rem, 1.75rem + 2.5vw, 3rem),\n      \"line-height\": 1.1\n    ),\n    \"5xl\": (\n      \"font-size\": clamp(3rem, 2rem + 5vw, 4rem),\n      \"line-height\": 1.1\n    ),\n    \"6xl\": (\n      \"font-size\": clamp(3.75rem, 2.5rem + 6.25vw, 5rem),\n      \"line-height\": 1\n    ),\n  ),\n  $font-sizes\n);\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start type-variables\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n// scss-docs-end type-variables\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-menu:                       1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-dialog:                     1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n$zindex-toast:                      1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n  n1: -1,\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n","@use \"../config\" as *;\n@use \"../mixins/grid\" as *;\n\n// mdo-do\n// - check gap utilities as replacement for gutter classes from v5\n\n@layer layout {\n  @if $enable-grid-classes {\n    .row {\n      @include make-row();\n\n      > * {\n        @include make-col-ready();\n      }\n    }\n\n    @include make-grid-columns();\n  }\n\n  @if $enable-cssgrid {\n    .grid {\n      --columns: #{$grid-columns};\n      --rows: 1;\n      --gap: #{$grid-gutter-x};\n\n      display: grid;\n      grid-template-rows: repeat(var(--rows), 1fr);\n      grid-template-columns: repeat(var(--columns), 1fr);\n      gap: var(--gap);\n\n    }\n\n    @include make-cssgrid();\n  }\n\n  // mdo-do: add to utilities?\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n\n  .grid-fill {\n    --gap: #{$grid-gutter-x};\n\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n\n  // .g-col-auto {\n  //   grid-column: auto;\n  // }\n\n  // mdo-do: add to utilities?\n  // .grid-cols-3 {\n  //   --columns: 3;\n  // }\n  // .grid-cols-4 {\n  //   --columns: 4;\n  // }\n  // .grid-cols-6 {\n  //   --columns: 6;\n  // }\n\n  // .grid-full {\n  //   grid-column: 1 / -1;\n  // }\n}\n","@use \"sass:map\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n\n// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter-x: $grid-gutter-x, $gutter-y: $grid-gutter-y) {\n  --gutter-x: #{$gutter-x};\n  --gutter-y: #{$gutter-y};\n  display: flex;\n  flex-wrap: wrap;\n  // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n  margin-inline: calc(-.5 * var(--gutter-x));\n  margin-top: calc(-1 * var(--gutter-y));\n}\n\n@mixin make-col-ready() {\n  // Add box sizing if only the grid is loaded\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  box-sizing: if(sass(meta.variable-exists(include-column-box-sizing) and $include-column-box-sizing): border-box; else: null);\n  // Prevent columns from becoming too narrow when at smaller grid tiers by\n  // always setting `width: 100%;`. This works because we set the width\n  // later on to override this initial width.\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-top: var(--gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n  @if $size {\n    flex: 0 0 auto;\n    width: math.percentage(math.div($size, $columns));\n\n  } @else {\n    flex: 1 1 0;\n    max-width: 100%;\n  }\n}\n\n@mixin make-col-auto() {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n  $num: math.div($size, $columns);\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  margin-inline-start: if(sass($num == 0): 0; else: math.percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n  > * {\n    flex: 0 0 auto;\n    width: math.percentage(math.div(1, $count));\n  }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-x, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n      .col#{$infix} {\n        flex: 1 0 0;\n      }\n\n      .row-cols#{$infix}-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .row-cols#{$infix}-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .col#{$infix}-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .col#{$infix}-#{$i} {\n            @include make-col($i, $columns);\n          }\n        }\n\n        // `$columns - 1` because offsetting by the width of an entire row isn't possible\n        @for $i from 0 through ($columns - 1) {\n          @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .offset#{$infix}-#{$i} {\n              @include make-col-offset($i, $columns);\n            }\n          }\n        }\n      }\n\n      // Gutters\n      //\n      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n      @each $key, $value in $gutters {\n        .g#{$infix}-#{$key},\n        .gx#{$infix}-#{$key} {\n          --gutter-x: #{$value};\n        }\n\n        .g#{$infix}-#{$key},\n        .gy#{$infix}-#{$key} {\n          --gutter-y: #{$value};\n        }\n      }\n    }\n  }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .g-col#{$infix}-#{$i} {\n            grid-column: auto / span $i;\n          }\n        }\n\n        // Start with `1` because `0` is an invalid value.\n        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n        @for $i from 1 through ($columns - 1) {\n          .g-start#{$infix}-#{$i} {\n            grid-column-start: $i;\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n@use \"../mixins/utilities\" as *;\n@use \"../utilities\" as *;\n\n@layer utilities {\n  // Loop over each breakpoint\n  @each $breakpoint in map.keys($breakpoints) {\n\n    // Generate media query if needed\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if meta.type-of($utility) == \"map\" and (map.get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix);\n        }\n      }\n    }\n  }\n\n  // Print utilities\n  @media print {\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Then check if the utility needs print styles\n      @if meta.type-of($utility) == \"map\" and map.get($utility, print) == true {\n        @include generate-utility($utility, \"-print\");\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n\n// stylelint-disable scss/dollar-variable-pattern\n\n// Utility generator\n\n// - Utilities can use three different types of selectors:\n//   - class: .class\n//   - attr-starts: [class^=\"class\"]\n//   - attr-includes: [class*=\"class\"]\n// - Utilities can generate regular CSS properties and CSS custom properties\n// - Utilities can be responsive or not\n// - Utilities can have state variants (e.g., hover, focus, active)\n// - Utilities can define local CSS variables\n//\n// CSS custom properties can be generated in two ways:\n//\n// 1. Property map with null values (CSS var receives the utility value):\n// \"bg-color\": (\n//   property: (\n//     \"--bg\": null,\n//     \"background-color\": var(--bg)\n//   ),\n//   class: bg,\n//   values: (\n//     primary: var(--blue-500),\n//   )\n// )\n// Generates:\n// .bg-primary {\n//   --bs-bg: var(--bs-blue-500);\n//   background-color: var(--bs-bg);\n// }\n//\n// 2. Variables map (static CSS custom properties on every class):\n// \"link-underline\": (\n//   property: text-decoration-color,\n//   class: link-underline,\n//   variables: (\n//     \"link-underline-opacity\": 1\n//   ),\n//   values: (...)\n// )\n// Generates:\n// .link-underline {\n//   --bs-link-underline-opacity: 1;\n//   text-decoration-color: ...;\n// }\n\n// Helper mixin to generate CSS properties for both legacy and property map approaches\n@mixin generate-properties($utility, $propertyMap, $properties, $value) {\n  @if $propertyMap != null {\n    // New Property-Value Mapping approach\n    @each $property, $defaultValue in $propertyMap {\n      // If value is a map, check if it has a key for this property\n      // Otherwise, use defaultValue (or $value if defaultValue is null)\n      $actualValue: $defaultValue;\n      @if meta.type-of($value) == \"map\" and map.has-key($value, $property) {\n        $actualValue: map.get($value, $property);\n      } @else if $defaultValue == null {\n        $actualValue: $value;\n      }\n      @if map.get($utility, important) {\n        #{$property}: $actualValue !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $actualValue;\n      }\n    }\n  } @else {\n    // Legacy approach\n    @each $property in $properties {\n      @if map.get($utility, important) {\n        #{$property}: $value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $value;\n      }\n    }\n  }\n}\n\n@mixin generate-utility($utility, $infix: \"\") {\n  // Validate required keys\n  @if not map.has-key($utility, property) {\n    @error \"Utility is missing required `property` key: #{$utility}\";\n  }\n  @if not map.has-key($utility, values) {\n    @error \"Utility is missing required `values` key: #{$utility}\";\n  }\n\n  // Warn on unknown keys (likely typos)\n  $valid-keys: property, values, class, selector, responsive, print, important, state, variables;\n  @each $key in map.keys($utility) {\n    @if not list.index($valid-keys, $key) {\n      @warn \"Unknown utility key `#{$key}` found. Valid keys are: #{$valid-keys}\";\n    }\n  }\n\n  // Determine if we're generating a class, or an attribute selector\n  $selectorType: \"class\";\n  @if map.has-key($utility, selector) {\n    $selectorType: map.get($utility, selector);\n    // Validate selector type\n    $valid-selectors: \"class\", \"attr-starts\", \"attr-includes\";\n    @if not list.index($valid-selectors, $selectorType) {\n      @error \"Invalid `selector` value `#{$selectorType}`. Must be one of: #{$valid-selectors}\";\n    }\n  }\n  // Then get the class name to use in a class (e.g., .class) or in a attribute selector (e.g., [class^=\"class\"])\n  $selectorClass: map.get($utility, class);\n\n  // Attribute selectors require a `class` key\n  @if $selectorType != \"class\" and not map.has-key($utility, class) {\n    @error \"Utility with `selector: #{$selectorType}` requires a `class` key.\";\n  }\n\n  // Get the list or map of values and ensure it's a map\n  $values: map.get($utility, values);\n  @if meta.type-of($values) != \"map\" {\n    @if meta.type-of($values) == \"list\" {\n      $list: ();\n      @each $value in $values {\n        $list: map.merge($list, ($value: $value));\n      }\n      $values: $list;\n    } @else {\n      $values: (null: $values);\n    }\n  }\n\n  // Calculate infix once, before the loop\n  // Note: $infix already includes the leading dash from breakpoint-infix()\n  // $infix: if($infix == \"\", \"\", \"-\" + $infix);\n\n  @each $key, $value in $values {\n    $properties: map.get($utility, property);\n    $propertyMap: null;\n    $customClass: \"\";\n\n    // Check if property is a map (new Property-Value Mapping approach)\n    // @debug \"Properties type: #{meta.type-of($properties)}\";\n    // @debug \"Properties: #{$properties}\";\n    @if meta.type-of($properties) == \"map\" {\n      $propertyMap: $properties;\n      // For property maps, we need to determine the class from the utility definition\n      $customClass: \"\";\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      }\n    } @else {\n      // Legacy approach: Multiple properties are possible, for example with vertical or horizontal margins or paddings\n      @if meta.type-of($properties) == \"string\" {\n        $properties: list.append((), $properties);\n      }\n      // Use custom class if present, otherwise use the first value from the list of properties\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      } @else {\n        $customClass: list.nth($properties, 1);\n      }\n      @if $customClass == null {\n        $customClass: \"\";\n      }\n    }\n\n    // Use custom CSS variable name if present, otherwise default to `class`\n    // mdo-do: restore?\n    // $css-variable-name: if(map.has-key($utility, css-variable-name), map.get($utility, css-variable-name), map.get($utility, class));\n\n    // State params to generate state variants\n    $state: ();\n    @if map.has-key($utility, state) {\n      $state: map.get($utility, state);\n    }\n\n    // $infix: if($customClass == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (e.g. with shadow class)\n    $customClassModifier: \"\";\n    @if $key {\n      @if $customClass == \"\" and $infix == \"\" {\n        $customClassModifier: $key;\n      } @else {\n        $customClassModifier: \"-\" + $key;\n      }\n    }\n\n    $selector: \"\";\n    @if $selectorType == \"class\" {\n      // Use the fallback of the first property if no `class` key is used\n      @if $customClass != \"\" {\n        $selector: \".#{$customClass + $infix + $customClassModifier}\";\n      } @else {\n        $selector: \".#{$selectorClass + $infix + $customClassModifier}\";\n      }\n    } @else if $selectorType == \"attr-starts\" {\n      $selector: \"[class^=\\\"#{$selectorClass}\\\"]\";\n    } @else if $selectorType == \"attr-includes\" {\n      $selector: \"[class*=\\\"#{$selectorClass}\\\"]\";\n    }\n\n    // @debug $utility;\n    // @debug $selectorType;\n    // @debug $selector;\n    // @debug $properties;\n    // @debug $values;\n\n    #{$selector} {\n      // Generate CSS custom properties (variables) if provided\n      // Variables receive the current utility value, then properties reference them\n      @if map.has-key($utility, variables) {\n        $variables: map.get($utility, variables);\n        @if meta.type-of($variables) == \"list\" {\n          // If variables is a list, each variable gets the utility value\n          @each $var-name in $variables {\n            --#{$var-name}: #{$value};\n          }\n        } @else if meta.type-of($variables) == \"map\" {\n          // If variables is a map, use the provided values (for static variables)\n          @each $var-key, $var-value in $variables {\n            --#{$var-key}: #{$var-value};\n          }\n        }\n      }\n      @include generate-properties($utility, $propertyMap, $properties, $value);\n    }\n\n    // Generate state variants\n    @if $state != () {\n      @each $state-variant in $state {\n        #{$selector}-#{$state-variant}:#{$state-variant} {\n          // Generate CSS custom properties (variables) if provided\n          @if map.has-key($utility, variables) {\n            $variables: map.get($utility, variables);\n            @if meta.type-of($variables) == \"list\" {\n              // If variables is a list, each variable gets the utility value\n              @each $var-name in $variables {\n                --#{$var-name}: #{$value};\n              }\n            } @else if meta.type-of($variables) == \"map\" {\n              // If variables is a map, use the provided values (for static variables)\n              @each $var-key, $var-value in $variables {\n                --#{$var-key}: #{$var-value};\n              }\n            }\n          }\n          @include generate-properties($utility, $propertyMap, $properties, $value);\n        }\n      }\n    }\n  }\n}\n","@use \"banner\" with (\n  $file: \"Grid\"\n);\n\n@use \"config\" as *;\n@use \"functions\" as *;\n\n@forward \"utilities\"; // Make utilities available downstream\n@use \"utilities\" as *; // Bring utilities into the current namespace\n\n@forward \"layout/containers\";\n@forward \"layout/grid\";\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$utilities: map-get-multiple(\n  $utilities,\n  (\n    \"display\",\n    \"order\",\n    \"grid-column-counts\",\n    \"grid-columns\",\n    \"grid-auto-flow\",\n    \"gap\",\n    \"row-gap\",\n    \"column-gap\",\n    \"flex\",\n    \"flex-direction\",\n    \"flex-grow\",\n    \"flex-shrink\",\n    \"flex-wrap\",\n    \"justify-content\",\n    \"justify-items\",\n    \"align-items\",\n    \"align-content\",\n    \"align-self\",\n    \"place-items\",\n    \"margin\",\n    \"margin-x\",\n    \"margin-y\",\n    \"margin-top\",\n    \"margin-end\",\n    \"margin-bottom\",\n    \"margin-start\",\n    \"negative-margin\",\n    \"negative-margin-x\",\n    \"negative-margin-y\",\n    \"negative-margin-top\",\n    \"negative-margin-end\",\n    \"negative-margin-bottom\",\n    \"negative-margin-start\",\n    \"padding\",\n    \"padding-x\",\n    \"padding-y\",\n    \"padding-top\",\n    \"padding-end\",\n    \"padding-bottom\",\n    \"padding-start\",\n  )\n);\n\n// check-unused-imports-disable-next-line — side-effect import: generates utility CSS.\n@use \"utilities/api\";\n\n:root {\n  @each $name, $value in $breakpoints {\n    --breakpoint-#{$name}: #{$value};\n  }\n}\n"]}
\ No newline at end of file
index 0c092b3ba222084727153617baf00ec0d90794e2..8346dbc4c6ba1ba9dd3f027748296dffeb1f52c1 100644 (file)
@@ -3,5 +3,5 @@
   * Copyright 2011-2026 The Bootstrap Authors
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   */
-@layer layout{.container,.container-fluid,.container-2xl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-inline:calc(var(--bs-gutter-x)*.5);margin-inline:auto}@media (width>=576px){.container-sm,.container{max-width:540px}}@media (width>=768px){.container-md,.container-sm,.container{max-width:720px}}@media (width>=1024px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (width>=1280px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1200px}}@media (width>=1536px){.container-2xl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1440px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;margin-inline:calc(-.5*var(--bs-gutter-x));margin-top:calc(-1*var(--bs-gutter-y));flex-wrap:wrap;display:flex}.row>*{width:100%;max-width:100%;padding-inline:calc(var(--bs-gutter-x)*.5);margin-top:var(--bs-gutter-y);flex-shrink:0}.col{flex:1 0 0}.row-cols-auto>*{flex:none;width:auto}.row-cols-1>*{flex:none;width:100%}.row-cols-2>*{flex:none;width:50%}.row-cols-3>*{flex:none;width:33.3333%}.row-cols-4>*{flex:none;width:25%}.row-cols-5>*{flex:none;width:20%}.row-cols-6>*{flex:none;width:16.6667%}.col-auto{flex:none;width:auto}.col-1{flex:none;width:8.33333%}.col-2{flex:none;width:16.6667%}.col-3{flex:none;width:25%}.col-4{flex:none;width:33.3333%}.col-5{flex:none;width:41.6667%}.col-6{flex:none;width:50%}.col-7{flex:none;width:58.3333%}.col-8{flex:none;width:66.6667%}.col-9{flex:none;width:75%}.col-10{flex:none;width:83.3333%}.col-11{flex:none;width:91.6667%}.col-12{flex:none;width:100%}.offset-1{margin-inline-start:8.33333%}.offset-2{margin-inline-start:16.6667%}.offset-3{margin-inline-start:25%}.offset-4{margin-inline-start:33.3333%}.offset-5{margin-inline-start:41.6667%}.offset-6{margin-inline-start:50%}.offset-7{margin-inline-start:58.3333%}.offset-8{margin-inline-start:66.6667%}.offset-9{margin-inline-start:75%}.offset-10{margin-inline-start:83.3333%}.offset-11{margin-inline-start:91.6667%}.g--2,.gx--2{--bs-gutter-x:-.5rem}.g--2,.gy--2{--bs-gutter-y:-.5rem}.g--1,.gx--1{--bs-gutter-x:-.25rem}.g--1,.gy--1{--bs-gutter-y:-.25rem}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:.25rem}.g-1,.gy-1{--bs-gutter-y:.25rem}.g-2,.gx-2{--bs-gutter-x:.5rem}.g-2,.gy-2{--bs-gutter-y:.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (width>=576px){.col-sm{flex:1 0 0}.row-cols-sm-auto>*{flex:none;width:auto}.row-cols-sm-1>*{flex:none;width:100%}.row-cols-sm-2>*{flex:none;width:50%}.row-cols-sm-3>*{flex:none;width:33.3333%}.row-cols-sm-4>*{flex:none;width:25%}.row-cols-sm-5>*{flex:none;width:20%}.row-cols-sm-6>*{flex:none;width:16.6667%}.col-sm-auto{flex:none;width:auto}.col-sm-1{flex:none;width:8.33333%}.col-sm-2{flex:none;width:16.6667%}.col-sm-3{flex:none;width:25%}.col-sm-4{flex:none;width:33.3333%}.col-sm-5{flex:none;width:41.6667%}.col-sm-6{flex:none;width:50%}.col-sm-7{flex:none;width:58.3333%}.col-sm-8{flex:none;width:66.6667%}.col-sm-9{flex:none;width:75%}.col-sm-10{flex:none;width:83.3333%}.col-sm-11{flex:none;width:91.6667%}.col-sm-12{flex:none;width:100%}.offset-sm-0{margin-inline-start:0}.offset-sm-1{margin-inline-start:8.33333%}.offset-sm-2{margin-inline-start:16.6667%}.offset-sm-3{margin-inline-start:25%}.offset-sm-4{margin-inline-start:33.3333%}.offset-sm-5{margin-inline-start:41.6667%}.offset-sm-6{margin-inline-start:50%}.offset-sm-7{margin-inline-start:58.3333%}.offset-sm-8{margin-inline-start:66.6667%}.offset-sm-9{margin-inline-start:75%}.offset-sm-10{margin-inline-start:83.3333%}.offset-sm-11{margin-inline-start:91.6667%}.g-sm--2,.gx-sm--2{--bs-gutter-x:-.5rem}.g-sm--2,.gy-sm--2{--bs-gutter-y:-.5rem}.g-sm--1,.gx-sm--1{--bs-gutter-x:-.25rem}.g-sm--1,.gy-sm--1{--bs-gutter-y:-.25rem}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (width>=768px){.col-md{flex:1 0 0}.row-cols-md-auto>*{flex:none;width:auto}.row-cols-md-1>*{flex:none;width:100%}.row-cols-md-2>*{flex:none;width:50%}.row-cols-md-3>*{flex:none;width:33.3333%}.row-cols-md-4>*{flex:none;width:25%}.row-cols-md-5>*{flex:none;width:20%}.row-cols-md-6>*{flex:none;width:16.6667%}.col-md-auto{flex:none;width:auto}.col-md-1{flex:none;width:8.33333%}.col-md-2{flex:none;width:16.6667%}.col-md-3{flex:none;width:25%}.col-md-4{flex:none;width:33.3333%}.col-md-5{flex:none;width:41.6667%}.col-md-6{flex:none;width:50%}.col-md-7{flex:none;width:58.3333%}.col-md-8{flex:none;width:66.6667%}.col-md-9{flex:none;width:75%}.col-md-10{flex:none;width:83.3333%}.col-md-11{flex:none;width:91.6667%}.col-md-12{flex:none;width:100%}.offset-md-0{margin-inline-start:0}.offset-md-1{margin-inline-start:8.33333%}.offset-md-2{margin-inline-start:16.6667%}.offset-md-3{margin-inline-start:25%}.offset-md-4{margin-inline-start:33.3333%}.offset-md-5{margin-inline-start:41.6667%}.offset-md-6{margin-inline-start:50%}.offset-md-7{margin-inline-start:58.3333%}.offset-md-8{margin-inline-start:66.6667%}.offset-md-9{margin-inline-start:75%}.offset-md-10{margin-inline-start:83.3333%}.offset-md-11{margin-inline-start:91.6667%}.g-md--2,.gx-md--2{--bs-gutter-x:-.5rem}.g-md--2,.gy-md--2{--bs-gutter-y:-.5rem}.g-md--1,.gx-md--1{--bs-gutter-x:-.25rem}.g-md--1,.gy-md--1{--bs-gutter-y:-.25rem}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (width>=1024px){.col-lg{flex:1 0 0}.row-cols-lg-auto>*{flex:none;width:auto}.row-cols-lg-1>*{flex:none;width:100%}.row-cols-lg-2>*{flex:none;width:50%}.row-cols-lg-3>*{flex:none;width:33.3333%}.row-cols-lg-4>*{flex:none;width:25%}.row-cols-lg-5>*{flex:none;width:20%}.row-cols-lg-6>*{flex:none;width:16.6667%}.col-lg-auto{flex:none;width:auto}.col-lg-1{flex:none;width:8.33333%}.col-lg-2{flex:none;width:16.6667%}.col-lg-3{flex:none;width:25%}.col-lg-4{flex:none;width:33.3333%}.col-lg-5{flex:none;width:41.6667%}.col-lg-6{flex:none;width:50%}.col-lg-7{flex:none;width:58.3333%}.col-lg-8{flex:none;width:66.6667%}.col-lg-9{flex:none;width:75%}.col-lg-10{flex:none;width:83.3333%}.col-lg-11{flex:none;width:91.6667%}.col-lg-12{flex:none;width:100%}.offset-lg-0{margin-inline-start:0}.offset-lg-1{margin-inline-start:8.33333%}.offset-lg-2{margin-inline-start:16.6667%}.offset-lg-3{margin-inline-start:25%}.offset-lg-4{margin-inline-start:33.3333%}.offset-lg-5{margin-inline-start:41.6667%}.offset-lg-6{margin-inline-start:50%}.offset-lg-7{margin-inline-start:58.3333%}.offset-lg-8{margin-inline-start:66.6667%}.offset-lg-9{margin-inline-start:75%}.offset-lg-10{margin-inline-start:83.3333%}.offset-lg-11{margin-inline-start:91.6667%}.g-lg--2,.gx-lg--2{--bs-gutter-x:-.5rem}.g-lg--2,.gy-lg--2{--bs-gutter-y:-.5rem}.g-lg--1,.gx-lg--1{--bs-gutter-x:-.25rem}.g-lg--1,.gy-lg--1{--bs-gutter-y:-.25rem}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (width>=1280px){.col-xl{flex:1 0 0}.row-cols-xl-auto>*{flex:none;width:auto}.row-cols-xl-1>*{flex:none;width:100%}.row-cols-xl-2>*{flex:none;width:50%}.row-cols-xl-3>*{flex:none;width:33.3333%}.row-cols-xl-4>*{flex:none;width:25%}.row-cols-xl-5>*{flex:none;width:20%}.row-cols-xl-6>*{flex:none;width:16.6667%}.col-xl-auto{flex:none;width:auto}.col-xl-1{flex:none;width:8.33333%}.col-xl-2{flex:none;width:16.6667%}.col-xl-3{flex:none;width:25%}.col-xl-4{flex:none;width:33.3333%}.col-xl-5{flex:none;width:41.6667%}.col-xl-6{flex:none;width:50%}.col-xl-7{flex:none;width:58.3333%}.col-xl-8{flex:none;width:66.6667%}.col-xl-9{flex:none;width:75%}.col-xl-10{flex:none;width:83.3333%}.col-xl-11{flex:none;width:91.6667%}.col-xl-12{flex:none;width:100%}.offset-xl-0{margin-inline-start:0}.offset-xl-1{margin-inline-start:8.33333%}.offset-xl-2{margin-inline-start:16.6667%}.offset-xl-3{margin-inline-start:25%}.offset-xl-4{margin-inline-start:33.3333%}.offset-xl-5{margin-inline-start:41.6667%}.offset-xl-6{margin-inline-start:50%}.offset-xl-7{margin-inline-start:58.3333%}.offset-xl-8{margin-inline-start:66.6667%}.offset-xl-9{margin-inline-start:75%}.offset-xl-10{margin-inline-start:83.3333%}.offset-xl-11{margin-inline-start:91.6667%}.g-xl--2,.gx-xl--2{--bs-gutter-x:-.5rem}.g-xl--2,.gy-xl--2{--bs-gutter-y:-.5rem}.g-xl--1,.gx-xl--1{--bs-gutter-x:-.25rem}.g-xl--1,.gy-xl--1{--bs-gutter-y:-.25rem}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (width>=1536px){.col-2xl{flex:1 0 0}.row-cols-2xl-auto>*{flex:none;width:auto}.row-cols-2xl-1>*{flex:none;width:100%}.row-cols-2xl-2>*{flex:none;width:50%}.row-cols-2xl-3>*{flex:none;width:33.3333%}.row-cols-2xl-4>*{flex:none;width:25%}.row-cols-2xl-5>*{flex:none;width:20%}.row-cols-2xl-6>*{flex:none;width:16.6667%}.col-2xl-auto{flex:none;width:auto}.col-2xl-1{flex:none;width:8.33333%}.col-2xl-2{flex:none;width:16.6667%}.col-2xl-3{flex:none;width:25%}.col-2xl-4{flex:none;width:33.3333%}.col-2xl-5{flex:none;width:41.6667%}.col-2xl-6{flex:none;width:50%}.col-2xl-7{flex:none;width:58.3333%}.col-2xl-8{flex:none;width:66.6667%}.col-2xl-9{flex:none;width:75%}.col-2xl-10{flex:none;width:83.3333%}.col-2xl-11{flex:none;width:91.6667%}.col-2xl-12{flex:none;width:100%}.offset-2xl-0{margin-inline-start:0}.offset-2xl-1{margin-inline-start:8.33333%}.offset-2xl-2{margin-inline-start:16.6667%}.offset-2xl-3{margin-inline-start:25%}.offset-2xl-4{margin-inline-start:33.3333%}.offset-2xl-5{margin-inline-start:41.6667%}.offset-2xl-6{margin-inline-start:50%}.offset-2xl-7{margin-inline-start:58.3333%}.offset-2xl-8{margin-inline-start:66.6667%}.offset-2xl-9{margin-inline-start:75%}.offset-2xl-10{margin-inline-start:83.3333%}.offset-2xl-11{margin-inline-start:91.6667%}.g-2xl--2,.gx-2xl--2{--bs-gutter-x:-.5rem}.g-2xl--2,.gy-2xl--2{--bs-gutter-y:-.5rem}.g-2xl--1,.gx-2xl--1{--bs-gutter-x:-.25rem}.g-2xl--1,.gy-2xl--1{--bs-gutter-y:-.25rem}.g-2xl-0,.gx-2xl-0{--bs-gutter-x:0}.g-2xl-0,.gy-2xl-0{--bs-gutter-y:0}.g-2xl-1,.gx-2xl-1{--bs-gutter-x:.25rem}.g-2xl-1,.gy-2xl-1{--bs-gutter-y:.25rem}.g-2xl-2,.gx-2xl-2{--bs-gutter-x:.5rem}.g-2xl-2,.gy-2xl-2{--bs-gutter-y:.5rem}.g-2xl-3,.gx-2xl-3{--bs-gutter-x:1rem}.g-2xl-3,.gy-2xl-3{--bs-gutter-y:1rem}.g-2xl-4,.gx-2xl-4{--bs-gutter-x:1.5rem}.g-2xl-4,.gy-2xl-4{--bs-gutter-y:1.5rem}.g-2xl-5,.gx-2xl-5{--bs-gutter-x:3rem}.g-2xl-5,.gy-2xl-5{--bs-gutter-y:3rem}}.grid{--bs-columns:12;--bs-rows:1;--bs-gap:1.5rem;grid-template-rows:repeat(var(--bs-rows),1fr);grid-template-columns:repeat(var(--bs-columns),1fr);gap:var(--bs-gap);display:grid}.g-col-1{grid-column:auto/span 1}.g-col-2{grid-column:auto/span 2}.g-col-3{grid-column:auto/span 3}.g-col-4{grid-column:auto/span 4}.g-col-5{grid-column:auto/span 5}.g-col-6{grid-column:auto/span 6}.g-col-7{grid-column:auto/span 7}.g-col-8{grid-column:auto/span 8}.g-col-9{grid-column:auto/span 9}.g-col-10{grid-column:auto/span 10}.g-col-11{grid-column:auto/span 11}.g-col-12{grid-column:auto/span 12}.g-start-1{grid-column-start:1}.g-start-2{grid-column-start:2}.g-start-3{grid-column-start:3}.g-start-4{grid-column-start:4}.g-start-5{grid-column-start:5}.g-start-6{grid-column-start:6}.g-start-7{grid-column-start:7}.g-start-8{grid-column-start:8}.g-start-9{grid-column-start:9}.g-start-10{grid-column-start:10}.g-start-11{grid-column-start:11}@media (width>=576px){.g-col-sm-1{grid-column:auto/span 1}.g-col-sm-2{grid-column:auto/span 2}.g-col-sm-3{grid-column:auto/span 3}.g-col-sm-4{grid-column:auto/span 4}.g-col-sm-5{grid-column:auto/span 5}.g-col-sm-6{grid-column:auto/span 6}.g-col-sm-7{grid-column:auto/span 7}.g-col-sm-8{grid-column:auto/span 8}.g-col-sm-9{grid-column:auto/span 9}.g-col-sm-10{grid-column:auto/span 10}.g-col-sm-11{grid-column:auto/span 11}.g-col-sm-12{grid-column:auto/span 12}.g-start-sm-1{grid-column-start:1}.g-start-sm-2{grid-column-start:2}.g-start-sm-3{grid-column-start:3}.g-start-sm-4{grid-column-start:4}.g-start-sm-5{grid-column-start:5}.g-start-sm-6{grid-column-start:6}.g-start-sm-7{grid-column-start:7}.g-start-sm-8{grid-column-start:8}.g-start-sm-9{grid-column-start:9}.g-start-sm-10{grid-column-start:10}.g-start-sm-11{grid-column-start:11}}@media (width>=768px){.g-col-md-1{grid-column:auto/span 1}.g-col-md-2{grid-column:auto/span 2}.g-col-md-3{grid-column:auto/span 3}.g-col-md-4{grid-column:auto/span 4}.g-col-md-5{grid-column:auto/span 5}.g-col-md-6{grid-column:auto/span 6}.g-col-md-7{grid-column:auto/span 7}.g-col-md-8{grid-column:auto/span 8}.g-col-md-9{grid-column:auto/span 9}.g-col-md-10{grid-column:auto/span 10}.g-col-md-11{grid-column:auto/span 11}.g-col-md-12{grid-column:auto/span 12}.g-start-md-1{grid-column-start:1}.g-start-md-2{grid-column-start:2}.g-start-md-3{grid-column-start:3}.g-start-md-4{grid-column-start:4}.g-start-md-5{grid-column-start:5}.g-start-md-6{grid-column-start:6}.g-start-md-7{grid-column-start:7}.g-start-md-8{grid-column-start:8}.g-start-md-9{grid-column-start:9}.g-start-md-10{grid-column-start:10}.g-start-md-11{grid-column-start:11}}@media (width>=1024px){.g-col-lg-1{grid-column:auto/span 1}.g-col-lg-2{grid-column:auto/span 2}.g-col-lg-3{grid-column:auto/span 3}.g-col-lg-4{grid-column:auto/span 4}.g-col-lg-5{grid-column:auto/span 5}.g-col-lg-6{grid-column:auto/span 6}.g-col-lg-7{grid-column:auto/span 7}.g-col-lg-8{grid-column:auto/span 8}.g-col-lg-9{grid-column:auto/span 9}.g-col-lg-10{grid-column:auto/span 10}.g-col-lg-11{grid-column:auto/span 11}.g-col-lg-12{grid-column:auto/span 12}.g-start-lg-1{grid-column-start:1}.g-start-lg-2{grid-column-start:2}.g-start-lg-3{grid-column-start:3}.g-start-lg-4{grid-column-start:4}.g-start-lg-5{grid-column-start:5}.g-start-lg-6{grid-column-start:6}.g-start-lg-7{grid-column-start:7}.g-start-lg-8{grid-column-start:8}.g-start-lg-9{grid-column-start:9}.g-start-lg-10{grid-column-start:10}.g-start-lg-11{grid-column-start:11}}@media (width>=1280px){.g-col-xl-1{grid-column:auto/span 1}.g-col-xl-2{grid-column:auto/span 2}.g-col-xl-3{grid-column:auto/span 3}.g-col-xl-4{grid-column:auto/span 4}.g-col-xl-5{grid-column:auto/span 5}.g-col-xl-6{grid-column:auto/span 6}.g-col-xl-7{grid-column:auto/span 7}.g-col-xl-8{grid-column:auto/span 8}.g-col-xl-9{grid-column:auto/span 9}.g-col-xl-10{grid-column:auto/span 10}.g-col-xl-11{grid-column:auto/span 11}.g-col-xl-12{grid-column:auto/span 12}.g-start-xl-1{grid-column-start:1}.g-start-xl-2{grid-column-start:2}.g-start-xl-3{grid-column-start:3}.g-start-xl-4{grid-column-start:4}.g-start-xl-5{grid-column-start:5}.g-start-xl-6{grid-column-start:6}.g-start-xl-7{grid-column-start:7}.g-start-xl-8{grid-column-start:8}.g-start-xl-9{grid-column-start:9}.g-start-xl-10{grid-column-start:10}.g-start-xl-11{grid-column-start:11}}@media (width>=1536px){.g-col-2xl-1{grid-column:auto/span 1}.g-col-2xl-2{grid-column:auto/span 2}.g-col-2xl-3{grid-column:auto/span 3}.g-col-2xl-4{grid-column:auto/span 4}.g-col-2xl-5{grid-column:auto/span 5}.g-col-2xl-6{grid-column:auto/span 6}.g-col-2xl-7{grid-column:auto/span 7}.g-col-2xl-8{grid-column:auto/span 8}.g-col-2xl-9{grid-column:auto/span 9}.g-col-2xl-10{grid-column:auto/span 10}.g-col-2xl-11{grid-column:auto/span 11}.g-col-2xl-12{grid-column:auto/span 12}.g-start-2xl-1{grid-column-start:1}.g-start-2xl-2{grid-column-start:2}.g-start-2xl-3{grid-column-start:3}.g-start-2xl-4{grid-column-start:4}.g-start-2xl-5{grid-column-start:5}.g-start-2xl-6{grid-column-start:6}.g-start-2xl-7{grid-column-start:7}.g-start-2xl-8{grid-column-start:8}.g-start-2xl-9{grid-column-start:9}.g-start-2xl-10{grid-column-start:10}.g-start-2xl-11{grid-column-start:11}}.grid-cols-subgrid{grid-template-columns:subgrid}.grid-fill{--bs-gap:1.5rem;gap:var(--bs-gap);grid-template-columns:repeat(auto-fit,minmax(0,1fr));grid-auto-flow:row;display:grid}}@layer utilities{.d-inline{display:inline}.d-inline-block{display:inline-block}.d-block{display:block}.d-grid{display:grid}.d-inline-grid{display:inline-grid}.d-table{display:table}.d-table-row{display:table-row}.d-table-cell{display:table-cell}.d-flex{display:flex}.d-inline-flex{display:inline-flex}.d-contents{display:contents}.d-flow-root{display:flow-root}.d-none{display:none}.flex-fill{flex:auto}.flex-row{flex-direction:row}.flex-column{flex-direction:column}.flex-row-reverse{flex-direction:row-reverse}.flex-column-reverse{flex-direction:column-reverse}.flex-grow-0{flex-grow:0}.flex-grow-1{flex-grow:1}.flex-shrink-0{flex-shrink:0}.flex-shrink-1{flex-shrink:1}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-start{justify-content:flex-start}.justify-content-end{justify-content:flex-end}.justify-content-center{justify-content:center}.justify-content-between{justify-content:space-between}.justify-content-around{justify-content:space-around}.justify-content-evenly{justify-content:space-evenly}.justify-items-start{justify-items:start}.justify-items-end{justify-items:end}.justify-items-center{justify-items:center}.justify-items-stretch{justify-items:stretch}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.align-items-center{align-items:center}.align-items-baseline{align-items:baseline}.align-items-stretch{align-items:stretch}.align-content-start{align-content:flex-start}.align-content-end{align-content:flex-end}.align-content-center{align-content:center}.align-content-between{align-content:space-between}.align-content-around{align-content:space-around}.align-content-stretch{align-content:stretch}.align-self-auto{align-self:auto}.align-self-start{align-self:flex-start}.align-self-end{align-self:flex-end}.align-self-center{align-self:center}.align-self-baseline{align-self:baseline}.align-self-stretch{align-self:stretch}.place-items-start{place-items:start}.place-items-end{place-items:end}.place-items-center{place-items:center}.place-items-stretch{place-items:stretch stretch}.order-first{order:-1}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-last{order:6}.m--2{margin:-.5rem}.m--1{margin:-.25rem}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-3{margin:1rem}.m-4{margin:1.5rem}.m-5{margin:3rem}.m-auto{margin:auto}.mx--2{margin-inline:-.5rem}.mx--1{margin-inline:-.25rem}.mx-0{margin-inline:0}.mx-1{margin-inline:.25rem}.mx-2{margin-inline:.5rem}.mx-3{margin-inline:1rem}.mx-4{margin-inline:1.5rem}.mx-5{margin-inline:3rem}.mx-auto{margin-inline:auto}.my--2{margin-block:-.5rem}.my--1{margin-block:-.25rem}.my-0{margin-block:0}.my-1{margin-block:.25rem}.my-2{margin-block:.5rem}.my-3{margin-block:1rem}.my-4{margin-block:1.5rem}.my-5{margin-block:3rem}.my-auto{margin-block:auto}.mt--2{margin-block-start:-.5rem}.mt--1{margin-block-start:-.25rem}.mt-0{margin-block-start:0}.mt-1{margin-block-start:.25rem}.mt-2{margin-block-start:.5rem}.mt-3{margin-block-start:1rem}.mt-4{margin-block-start:1.5rem}.mt-5{margin-block-start:3rem}.mt-auto{margin-block-start:auto}.me--2{margin-inline-end:-.5rem}.me--1{margin-inline-end:-.25rem}.me-0{margin-inline-end:0}.me-1{margin-inline-end:.25rem}.me-2{margin-inline-end:.5rem}.me-3{margin-inline-end:1rem}.me-4{margin-inline-end:1.5rem}.me-5{margin-inline-end:3rem}.me-auto{margin-inline-end:auto}.mb--2{margin-block-end:-.5rem}.mb--1{margin-block-end:-.25rem}.mb-0{margin-block-end:0}.mb-1{margin-block-end:.25rem}.mb-2{margin-block-end:.5rem}.mb-3{margin-block-end:1rem}.mb-4{margin-block-end:1.5rem}.mb-5{margin-block-end:3rem}.mb-auto{margin-block-end:auto}.ms--2{margin-inline-start:-.5rem}.ms--1{margin-inline-start:-.25rem}.ms-0{margin-inline-start:0}.ms-1{margin-inline-start:.25rem}.ms-2{margin-inline-start:.5rem}.ms-3{margin-inline-start:1rem}.ms-4{margin-inline-start:1.5rem}.ms-5{margin-inline-start:3rem}.ms-auto{margin-inline-start:auto}.p--2{padding:-.5rem}.p--1{padding:-.25rem}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:1rem}.p-4{padding:1.5rem}.p-5{padding:3rem}.px--2{padding-inline:-.5rem}.px--1{padding-inline:-.25rem}.px-0{padding-inline:0}.px-1{padding-inline:.25rem}.px-2{padding-inline:.5rem}.px-3{padding-inline:1rem}.px-4{padding-inline:1.5rem}.px-5{padding-inline:3rem}.py--2{padding-block:-.5rem}.py--1{padding-block:-.25rem}.py-0{padding-block:0}.py-1{padding-block:.25rem}.py-2{padding-block:.5rem}.py-3{padding-block:1rem}.py-4{padding-block:1.5rem}.py-5{padding-block:3rem}.pt--2{padding-block-start:-.5rem}.pt--1{padding-block-start:-.25rem}.pt-0{padding-block-start:0}.pt-1{padding-block-start:.25rem}.pt-2{padding-block-start:.5rem}.pt-3{padding-block-start:1rem}.pt-4{padding-block-start:1.5rem}.pt-5{padding-block-start:3rem}.pe--2{padding-inline-end:-.5rem}.pe--1{padding-inline-end:-.25rem}.pe-0{padding-inline-end:0}.pe-1{padding-inline-end:.25rem}.pe-2{padding-inline-end:.5rem}.pe-3{padding-inline-end:1rem}.pe-4{padding-inline-end:1.5rem}.pe-5{padding-inline-end:3rem}.pb--2{padding-block-end:-.5rem}.pb--1{padding-block-end:-.25rem}.pb-0{padding-block-end:0}.pb-1{padding-block-end:.25rem}.pb-2{padding-block-end:.5rem}.pb-3{padding-block-end:1rem}.pb-4{padding-block-end:1.5rem}.pb-5{padding-block-end:3rem}.ps--2{padding-inline-start:-.5rem}.ps--1{padding-inline-start:-.25rem}.ps-0{padding-inline-start:0}.ps-1{padding-inline-start:.25rem}.ps-2{padding-inline-start:.5rem}.ps-3{padding-inline-start:1rem}.ps-4{padding-inline-start:1.5rem}.ps-5{padding-inline-start:3rem}@media (width>=576px){.d-sm-inline{display:inline}.d-sm-inline-block{display:inline-block}.d-sm-block{display:block}.d-sm-grid{display:grid}.d-sm-inline-grid{display:inline-grid}.d-sm-table{display:table}.d-sm-table-row{display:table-row}.d-sm-table-cell{display:table-cell}.d-sm-flex{display:flex}.d-sm-inline-flex{display:inline-flex}.d-sm-contents{display:contents}.d-sm-flow-root{display:flow-root}.d-sm-none{display:none}.flex-sm-fill{flex:auto}.flex-sm-row{flex-direction:row}.flex-sm-column{flex-direction:column}.flex-sm-row-reverse{flex-direction:row-reverse}.flex-sm-column-reverse{flex-direction:column-reverse}.flex-sm-grow-0{flex-grow:0}.flex-sm-grow-1{flex-grow:1}.flex-sm-shrink-0{flex-shrink:0}.flex-sm-shrink-1{flex-shrink:1}.flex-sm-wrap{flex-wrap:wrap}.flex-sm-nowrap{flex-wrap:nowrap}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-sm-start{justify-content:flex-start}.justify-content-sm-end{justify-content:flex-end}.justify-content-sm-center{justify-content:center}.justify-content-sm-between{justify-content:space-between}.justify-content-sm-around{justify-content:space-around}.justify-content-sm-evenly{justify-content:space-evenly}.justify-items-sm-start{justify-items:start}.justify-items-sm-end{justify-items:end}.justify-items-sm-center{justify-items:center}.justify-items-sm-stretch{justify-items:stretch}.align-items-sm-start{align-items:flex-start}.align-items-sm-end{align-items:flex-end}.align-items-sm-center{align-items:center}.align-items-sm-baseline{align-items:baseline}.align-items-sm-stretch{align-items:stretch}.align-content-sm-start{align-content:flex-start}.align-content-sm-end{align-content:flex-end}.align-content-sm-center{align-content:center}.align-content-sm-between{align-content:space-between}.align-content-sm-around{align-content:space-around}.align-content-sm-stretch{align-content:stretch}.align-self-sm-auto{align-self:auto}.align-self-sm-start{align-self:flex-start}.align-self-sm-end{align-self:flex-end}.align-self-sm-center{align-self:center}.align-self-sm-baseline{align-self:baseline}.align-self-sm-stretch{align-self:stretch}.place-items-sm-start{place-items:start}.place-items-sm-end{place-items:end}.place-items-sm-center{place-items:center}.place-items-sm-stretch{place-items:stretch stretch}.order-sm-first{order:-1}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-last{order:6}.m-sm--2{margin:-.5rem}.m-sm--1{margin:-.25rem}.m-sm-0{margin:0}.m-sm-1{margin:.25rem}.m-sm-2{margin:.5rem}.m-sm-3{margin:1rem}.m-sm-4{margin:1.5rem}.m-sm-5{margin:3rem}.m-sm-auto{margin:auto}.mx-sm--2{margin-inline:-.5rem}.mx-sm--1{margin-inline:-.25rem}.mx-sm-0{margin-inline:0}.mx-sm-1{margin-inline:.25rem}.mx-sm-2{margin-inline:.5rem}.mx-sm-3{margin-inline:1rem}.mx-sm-4{margin-inline:1.5rem}.mx-sm-5{margin-inline:3rem}.mx-sm-auto{margin-inline:auto}.my-sm--2{margin-block:-.5rem}.my-sm--1{margin-block:-.25rem}.my-sm-0{margin-block:0}.my-sm-1{margin-block:.25rem}.my-sm-2{margin-block:.5rem}.my-sm-3{margin-block:1rem}.my-sm-4{margin-block:1.5rem}.my-sm-5{margin-block:3rem}.my-sm-auto{margin-block:auto}.mt-sm--2{margin-block-start:-.5rem}.mt-sm--1{margin-block-start:-.25rem}.mt-sm-0{margin-block-start:0}.mt-sm-1{margin-block-start:.25rem}.mt-sm-2{margin-block-start:.5rem}.mt-sm-3{margin-block-start:1rem}.mt-sm-4{margin-block-start:1.5rem}.mt-sm-5{margin-block-start:3rem}.mt-sm-auto{margin-block-start:auto}.me-sm--2{margin-inline-end:-.5rem}.me-sm--1{margin-inline-end:-.25rem}.me-sm-0{margin-inline-end:0}.me-sm-1{margin-inline-end:.25rem}.me-sm-2{margin-inline-end:.5rem}.me-sm-3{margin-inline-end:1rem}.me-sm-4{margin-inline-end:1.5rem}.me-sm-5{margin-inline-end:3rem}.me-sm-auto{margin-inline-end:auto}.mb-sm--2{margin-block-end:-.5rem}.mb-sm--1{margin-block-end:-.25rem}.mb-sm-0{margin-block-end:0}.mb-sm-1{margin-block-end:.25rem}.mb-sm-2{margin-block-end:.5rem}.mb-sm-3{margin-block-end:1rem}.mb-sm-4{margin-block-end:1.5rem}.mb-sm-5{margin-block-end:3rem}.mb-sm-auto{margin-block-end:auto}.ms-sm--2{margin-inline-start:-.5rem}.ms-sm--1{margin-inline-start:-.25rem}.ms-sm-0{margin-inline-start:0}.ms-sm-1{margin-inline-start:.25rem}.ms-sm-2{margin-inline-start:.5rem}.ms-sm-3{margin-inline-start:1rem}.ms-sm-4{margin-inline-start:1.5rem}.ms-sm-5{margin-inline-start:3rem}.ms-sm-auto{margin-inline-start:auto}.p-sm--2{padding:-.5rem}.p-sm--1{padding:-.25rem}.p-sm-0{padding:0}.p-sm-1{padding:.25rem}.p-sm-2{padding:.5rem}.p-sm-3{padding:1rem}.p-sm-4{padding:1.5rem}.p-sm-5{padding:3rem}.px-sm--2{padding-inline:-.5rem}.px-sm--1{padding-inline:-.25rem}.px-sm-0{padding-inline:0}.px-sm-1{padding-inline:.25rem}.px-sm-2{padding-inline:.5rem}.px-sm-3{padding-inline:1rem}.px-sm-4{padding-inline:1.5rem}.px-sm-5{padding-inline:3rem}.py-sm--2{padding-block:-.5rem}.py-sm--1{padding-block:-.25rem}.py-sm-0{padding-block:0}.py-sm-1{padding-block:.25rem}.py-sm-2{padding-block:.5rem}.py-sm-3{padding-block:1rem}.py-sm-4{padding-block:1.5rem}.py-sm-5{padding-block:3rem}.pt-sm--2{padding-block-start:-.5rem}.pt-sm--1{padding-block-start:-.25rem}.pt-sm-0{padding-block-start:0}.pt-sm-1{padding-block-start:.25rem}.pt-sm-2{padding-block-start:.5rem}.pt-sm-3{padding-block-start:1rem}.pt-sm-4{padding-block-start:1.5rem}.pt-sm-5{padding-block-start:3rem}.pe-sm--2{padding-inline-end:-.5rem}.pe-sm--1{padding-inline-end:-.25rem}.pe-sm-0{padding-inline-end:0}.pe-sm-1{padding-inline-end:.25rem}.pe-sm-2{padding-inline-end:.5rem}.pe-sm-3{padding-inline-end:1rem}.pe-sm-4{padding-inline-end:1.5rem}.pe-sm-5{padding-inline-end:3rem}.pb-sm--2{padding-block-end:-.5rem}.pb-sm--1{padding-block-end:-.25rem}.pb-sm-0{padding-block-end:0}.pb-sm-1{padding-block-end:.25rem}.pb-sm-2{padding-block-end:.5rem}.pb-sm-3{padding-block-end:1rem}.pb-sm-4{padding-block-end:1.5rem}.pb-sm-5{padding-block-end:3rem}.ps-sm--2{padding-inline-start:-.5rem}.ps-sm--1{padding-inline-start:-.25rem}.ps-sm-0{padding-inline-start:0}.ps-sm-1{padding-inline-start:.25rem}.ps-sm-2{padding-inline-start:.5rem}.ps-sm-3{padding-inline-start:1rem}.ps-sm-4{padding-inline-start:1.5rem}.ps-sm-5{padding-inline-start:3rem}}@media (width>=768px){.d-md-inline{display:inline}.d-md-inline-block{display:inline-block}.d-md-block{display:block}.d-md-grid{display:grid}.d-md-inline-grid{display:inline-grid}.d-md-table{display:table}.d-md-table-row{display:table-row}.d-md-table-cell{display:table-cell}.d-md-flex{display:flex}.d-md-inline-flex{display:inline-flex}.d-md-contents{display:contents}.d-md-flow-root{display:flow-root}.d-md-none{display:none}.flex-md-fill{flex:auto}.flex-md-row{flex-direction:row}.flex-md-column{flex-direction:column}.flex-md-row-reverse{flex-direction:row-reverse}.flex-md-column-reverse{flex-direction:column-reverse}.flex-md-grow-0{flex-grow:0}.flex-md-grow-1{flex-grow:1}.flex-md-shrink-0{flex-shrink:0}.flex-md-shrink-1{flex-shrink:1}.flex-md-wrap{flex-wrap:wrap}.flex-md-nowrap{flex-wrap:nowrap}.flex-md-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-md-start{justify-content:flex-start}.justify-content-md-end{justify-content:flex-end}.justify-content-md-center{justify-content:center}.justify-content-md-between{justify-content:space-between}.justify-content-md-around{justify-content:space-around}.justify-content-md-evenly{justify-content:space-evenly}.justify-items-md-start{justify-items:start}.justify-items-md-end{justify-items:end}.justify-items-md-center{justify-items:center}.justify-items-md-stretch{justify-items:stretch}.align-items-md-start{align-items:flex-start}.align-items-md-end{align-items:flex-end}.align-items-md-center{align-items:center}.align-items-md-baseline{align-items:baseline}.align-items-md-stretch{align-items:stretch}.align-content-md-start{align-content:flex-start}.align-content-md-end{align-content:flex-end}.align-content-md-center{align-content:center}.align-content-md-between{align-content:space-between}.align-content-md-around{align-content:space-around}.align-content-md-stretch{align-content:stretch}.align-self-md-auto{align-self:auto}.align-self-md-start{align-self:flex-start}.align-self-md-end{align-self:flex-end}.align-self-md-center{align-self:center}.align-self-md-baseline{align-self:baseline}.align-self-md-stretch{align-self:stretch}.place-items-md-start{place-items:start}.place-items-md-end{place-items:end}.place-items-md-center{place-items:center}.place-items-md-stretch{place-items:stretch stretch}.order-md-first{order:-1}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-last{order:6}.m-md--2{margin:-.5rem}.m-md--1{margin:-.25rem}.m-md-0{margin:0}.m-md-1{margin:.25rem}.m-md-2{margin:.5rem}.m-md-3{margin:1rem}.m-md-4{margin:1.5rem}.m-md-5{margin:3rem}.m-md-auto{margin:auto}.mx-md--2{margin-inline:-.5rem}.mx-md--1{margin-inline:-.25rem}.mx-md-0{margin-inline:0}.mx-md-1{margin-inline:.25rem}.mx-md-2{margin-inline:.5rem}.mx-md-3{margin-inline:1rem}.mx-md-4{margin-inline:1.5rem}.mx-md-5{margin-inline:3rem}.mx-md-auto{margin-inline:auto}.my-md--2{margin-block:-.5rem}.my-md--1{margin-block:-.25rem}.my-md-0{margin-block:0}.my-md-1{margin-block:.25rem}.my-md-2{margin-block:.5rem}.my-md-3{margin-block:1rem}.my-md-4{margin-block:1.5rem}.my-md-5{margin-block:3rem}.my-md-auto{margin-block:auto}.mt-md--2{margin-block-start:-.5rem}.mt-md--1{margin-block-start:-.25rem}.mt-md-0{margin-block-start:0}.mt-md-1{margin-block-start:.25rem}.mt-md-2{margin-block-start:.5rem}.mt-md-3{margin-block-start:1rem}.mt-md-4{margin-block-start:1.5rem}.mt-md-5{margin-block-start:3rem}.mt-md-auto{margin-block-start:auto}.me-md--2{margin-inline-end:-.5rem}.me-md--1{margin-inline-end:-.25rem}.me-md-0{margin-inline-end:0}.me-md-1{margin-inline-end:.25rem}.me-md-2{margin-inline-end:.5rem}.me-md-3{margin-inline-end:1rem}.me-md-4{margin-inline-end:1.5rem}.me-md-5{margin-inline-end:3rem}.me-md-auto{margin-inline-end:auto}.mb-md--2{margin-block-end:-.5rem}.mb-md--1{margin-block-end:-.25rem}.mb-md-0{margin-block-end:0}.mb-md-1{margin-block-end:.25rem}.mb-md-2{margin-block-end:.5rem}.mb-md-3{margin-block-end:1rem}.mb-md-4{margin-block-end:1.5rem}.mb-md-5{margin-block-end:3rem}.mb-md-auto{margin-block-end:auto}.ms-md--2{margin-inline-start:-.5rem}.ms-md--1{margin-inline-start:-.25rem}.ms-md-0{margin-inline-start:0}.ms-md-1{margin-inline-start:.25rem}.ms-md-2{margin-inline-start:.5rem}.ms-md-3{margin-inline-start:1rem}.ms-md-4{margin-inline-start:1.5rem}.ms-md-5{margin-inline-start:3rem}.ms-md-auto{margin-inline-start:auto}.p-md--2{padding:-.5rem}.p-md--1{padding:-.25rem}.p-md-0{padding:0}.p-md-1{padding:.25rem}.p-md-2{padding:.5rem}.p-md-3{padding:1rem}.p-md-4{padding:1.5rem}.p-md-5{padding:3rem}.px-md--2{padding-inline:-.5rem}.px-md--1{padding-inline:-.25rem}.px-md-0{padding-inline:0}.px-md-1{padding-inline:.25rem}.px-md-2{padding-inline:.5rem}.px-md-3{padding-inline:1rem}.px-md-4{padding-inline:1.5rem}.px-md-5{padding-inline:3rem}.py-md--2{padding-block:-.5rem}.py-md--1{padding-block:-.25rem}.py-md-0{padding-block:0}.py-md-1{padding-block:.25rem}.py-md-2{padding-block:.5rem}.py-md-3{padding-block:1rem}.py-md-4{padding-block:1.5rem}.py-md-5{padding-block:3rem}.pt-md--2{padding-block-start:-.5rem}.pt-md--1{padding-block-start:-.25rem}.pt-md-0{padding-block-start:0}.pt-md-1{padding-block-start:.25rem}.pt-md-2{padding-block-start:.5rem}.pt-md-3{padding-block-start:1rem}.pt-md-4{padding-block-start:1.5rem}.pt-md-5{padding-block-start:3rem}.pe-md--2{padding-inline-end:-.5rem}.pe-md--1{padding-inline-end:-.25rem}.pe-md-0{padding-inline-end:0}.pe-md-1{padding-inline-end:.25rem}.pe-md-2{padding-inline-end:.5rem}.pe-md-3{padding-inline-end:1rem}.pe-md-4{padding-inline-end:1.5rem}.pe-md-5{padding-inline-end:3rem}.pb-md--2{padding-block-end:-.5rem}.pb-md--1{padding-block-end:-.25rem}.pb-md-0{padding-block-end:0}.pb-md-1{padding-block-end:.25rem}.pb-md-2{padding-block-end:.5rem}.pb-md-3{padding-block-end:1rem}.pb-md-4{padding-block-end:1.5rem}.pb-md-5{padding-block-end:3rem}.ps-md--2{padding-inline-start:-.5rem}.ps-md--1{padding-inline-start:-.25rem}.ps-md-0{padding-inline-start:0}.ps-md-1{padding-inline-start:.25rem}.ps-md-2{padding-inline-start:.5rem}.ps-md-3{padding-inline-start:1rem}.ps-md-4{padding-inline-start:1.5rem}.ps-md-5{padding-inline-start:3rem}}@media (width>=1024px){.d-lg-inline{display:inline}.d-lg-inline-block{display:inline-block}.d-lg-block{display:block}.d-lg-grid{display:grid}.d-lg-inline-grid{display:inline-grid}.d-lg-table{display:table}.d-lg-table-row{display:table-row}.d-lg-table-cell{display:table-cell}.d-lg-flex{display:flex}.d-lg-inline-flex{display:inline-flex}.d-lg-contents{display:contents}.d-lg-flow-root{display:flow-root}.d-lg-none{display:none}.flex-lg-fill{flex:auto}.flex-lg-row{flex-direction:row}.flex-lg-column{flex-direction:column}.flex-lg-row-reverse{flex-direction:row-reverse}.flex-lg-column-reverse{flex-direction:column-reverse}.flex-lg-grow-0{flex-grow:0}.flex-lg-grow-1{flex-grow:1}.flex-lg-shrink-0{flex-shrink:0}.flex-lg-shrink-1{flex-shrink:1}.flex-lg-wrap{flex-wrap:wrap}.flex-lg-nowrap{flex-wrap:nowrap}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-lg-start{justify-content:flex-start}.justify-content-lg-end{justify-content:flex-end}.justify-content-lg-center{justify-content:center}.justify-content-lg-between{justify-content:space-between}.justify-content-lg-around{justify-content:space-around}.justify-content-lg-evenly{justify-content:space-evenly}.justify-items-lg-start{justify-items:start}.justify-items-lg-end{justify-items:end}.justify-items-lg-center{justify-items:center}.justify-items-lg-stretch{justify-items:stretch}.align-items-lg-start{align-items:flex-start}.align-items-lg-end{align-items:flex-end}.align-items-lg-center{align-items:center}.align-items-lg-baseline{align-items:baseline}.align-items-lg-stretch{align-items:stretch}.align-content-lg-start{align-content:flex-start}.align-content-lg-end{align-content:flex-end}.align-content-lg-center{align-content:center}.align-content-lg-between{align-content:space-between}.align-content-lg-around{align-content:space-around}.align-content-lg-stretch{align-content:stretch}.align-self-lg-auto{align-self:auto}.align-self-lg-start{align-self:flex-start}.align-self-lg-end{align-self:flex-end}.align-self-lg-center{align-self:center}.align-self-lg-baseline{align-self:baseline}.align-self-lg-stretch{align-self:stretch}.place-items-lg-start{place-items:start}.place-items-lg-end{place-items:end}.place-items-lg-center{place-items:center}.place-items-lg-stretch{place-items:stretch stretch}.order-lg-first{order:-1}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-last{order:6}.m-lg--2{margin:-.5rem}.m-lg--1{margin:-.25rem}.m-lg-0{margin:0}.m-lg-1{margin:.25rem}.m-lg-2{margin:.5rem}.m-lg-3{margin:1rem}.m-lg-4{margin:1.5rem}.m-lg-5{margin:3rem}.m-lg-auto{margin:auto}.mx-lg--2{margin-inline:-.5rem}.mx-lg--1{margin-inline:-.25rem}.mx-lg-0{margin-inline:0}.mx-lg-1{margin-inline:.25rem}.mx-lg-2{margin-inline:.5rem}.mx-lg-3{margin-inline:1rem}.mx-lg-4{margin-inline:1.5rem}.mx-lg-5{margin-inline:3rem}.mx-lg-auto{margin-inline:auto}.my-lg--2{margin-block:-.5rem}.my-lg--1{margin-block:-.25rem}.my-lg-0{margin-block:0}.my-lg-1{margin-block:.25rem}.my-lg-2{margin-block:.5rem}.my-lg-3{margin-block:1rem}.my-lg-4{margin-block:1.5rem}.my-lg-5{margin-block:3rem}.my-lg-auto{margin-block:auto}.mt-lg--2{margin-block-start:-.5rem}.mt-lg--1{margin-block-start:-.25rem}.mt-lg-0{margin-block-start:0}.mt-lg-1{margin-block-start:.25rem}.mt-lg-2{margin-block-start:.5rem}.mt-lg-3{margin-block-start:1rem}.mt-lg-4{margin-block-start:1.5rem}.mt-lg-5{margin-block-start:3rem}.mt-lg-auto{margin-block-start:auto}.me-lg--2{margin-inline-end:-.5rem}.me-lg--1{margin-inline-end:-.25rem}.me-lg-0{margin-inline-end:0}.me-lg-1{margin-inline-end:.25rem}.me-lg-2{margin-inline-end:.5rem}.me-lg-3{margin-inline-end:1rem}.me-lg-4{margin-inline-end:1.5rem}.me-lg-5{margin-inline-end:3rem}.me-lg-auto{margin-inline-end:auto}.mb-lg--2{margin-block-end:-.5rem}.mb-lg--1{margin-block-end:-.25rem}.mb-lg-0{margin-block-end:0}.mb-lg-1{margin-block-end:.25rem}.mb-lg-2{margin-block-end:.5rem}.mb-lg-3{margin-block-end:1rem}.mb-lg-4{margin-block-end:1.5rem}.mb-lg-5{margin-block-end:3rem}.mb-lg-auto{margin-block-end:auto}.ms-lg--2{margin-inline-start:-.5rem}.ms-lg--1{margin-inline-start:-.25rem}.ms-lg-0{margin-inline-start:0}.ms-lg-1{margin-inline-start:.25rem}.ms-lg-2{margin-inline-start:.5rem}.ms-lg-3{margin-inline-start:1rem}.ms-lg-4{margin-inline-start:1.5rem}.ms-lg-5{margin-inline-start:3rem}.ms-lg-auto{margin-inline-start:auto}.p-lg--2{padding:-.5rem}.p-lg--1{padding:-.25rem}.p-lg-0{padding:0}.p-lg-1{padding:.25rem}.p-lg-2{padding:.5rem}.p-lg-3{padding:1rem}.p-lg-4{padding:1.5rem}.p-lg-5{padding:3rem}.px-lg--2{padding-inline:-.5rem}.px-lg--1{padding-inline:-.25rem}.px-lg-0{padding-inline:0}.px-lg-1{padding-inline:.25rem}.px-lg-2{padding-inline:.5rem}.px-lg-3{padding-inline:1rem}.px-lg-4{padding-inline:1.5rem}.px-lg-5{padding-inline:3rem}.py-lg--2{padding-block:-.5rem}.py-lg--1{padding-block:-.25rem}.py-lg-0{padding-block:0}.py-lg-1{padding-block:.25rem}.py-lg-2{padding-block:.5rem}.py-lg-3{padding-block:1rem}.py-lg-4{padding-block:1.5rem}.py-lg-5{padding-block:3rem}.pt-lg--2{padding-block-start:-.5rem}.pt-lg--1{padding-block-start:-.25rem}.pt-lg-0{padding-block-start:0}.pt-lg-1{padding-block-start:.25rem}.pt-lg-2{padding-block-start:.5rem}.pt-lg-3{padding-block-start:1rem}.pt-lg-4{padding-block-start:1.5rem}.pt-lg-5{padding-block-start:3rem}.pe-lg--2{padding-inline-end:-.5rem}.pe-lg--1{padding-inline-end:-.25rem}.pe-lg-0{padding-inline-end:0}.pe-lg-1{padding-inline-end:.25rem}.pe-lg-2{padding-inline-end:.5rem}.pe-lg-3{padding-inline-end:1rem}.pe-lg-4{padding-inline-end:1.5rem}.pe-lg-5{padding-inline-end:3rem}.pb-lg--2{padding-block-end:-.5rem}.pb-lg--1{padding-block-end:-.25rem}.pb-lg-0{padding-block-end:0}.pb-lg-1{padding-block-end:.25rem}.pb-lg-2{padding-block-end:.5rem}.pb-lg-3{padding-block-end:1rem}.pb-lg-4{padding-block-end:1.5rem}.pb-lg-5{padding-block-end:3rem}.ps-lg--2{padding-inline-start:-.5rem}.ps-lg--1{padding-inline-start:-.25rem}.ps-lg-0{padding-inline-start:0}.ps-lg-1{padding-inline-start:.25rem}.ps-lg-2{padding-inline-start:.5rem}.ps-lg-3{padding-inline-start:1rem}.ps-lg-4{padding-inline-start:1.5rem}.ps-lg-5{padding-inline-start:3rem}}@media (width>=1280px){.d-xl-inline{display:inline}.d-xl-inline-block{display:inline-block}.d-xl-block{display:block}.d-xl-grid{display:grid}.d-xl-inline-grid{display:inline-grid}.d-xl-table{display:table}.d-xl-table-row{display:table-row}.d-xl-table-cell{display:table-cell}.d-xl-flex{display:flex}.d-xl-inline-flex{display:inline-flex}.d-xl-contents{display:contents}.d-xl-flow-root{display:flow-root}.d-xl-none{display:none}.flex-xl-fill{flex:auto}.flex-xl-row{flex-direction:row}.flex-xl-column{flex-direction:column}.flex-xl-row-reverse{flex-direction:row-reverse}.flex-xl-column-reverse{flex-direction:column-reverse}.flex-xl-grow-0{flex-grow:0}.flex-xl-grow-1{flex-grow:1}.flex-xl-shrink-0{flex-shrink:0}.flex-xl-shrink-1{flex-shrink:1}.flex-xl-wrap{flex-wrap:wrap}.flex-xl-nowrap{flex-wrap:nowrap}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-xl-start{justify-content:flex-start}.justify-content-xl-end{justify-content:flex-end}.justify-content-xl-center{justify-content:center}.justify-content-xl-between{justify-content:space-between}.justify-content-xl-around{justify-content:space-around}.justify-content-xl-evenly{justify-content:space-evenly}.justify-items-xl-start{justify-items:start}.justify-items-xl-end{justify-items:end}.justify-items-xl-center{justify-items:center}.justify-items-xl-stretch{justify-items:stretch}.align-items-xl-start{align-items:flex-start}.align-items-xl-end{align-items:flex-end}.align-items-xl-center{align-items:center}.align-items-xl-baseline{align-items:baseline}.align-items-xl-stretch{align-items:stretch}.align-content-xl-start{align-content:flex-start}.align-content-xl-end{align-content:flex-end}.align-content-xl-center{align-content:center}.align-content-xl-between{align-content:space-between}.align-content-xl-around{align-content:space-around}.align-content-xl-stretch{align-content:stretch}.align-self-xl-auto{align-self:auto}.align-self-xl-start{align-self:flex-start}.align-self-xl-end{align-self:flex-end}.align-self-xl-center{align-self:center}.align-self-xl-baseline{align-self:baseline}.align-self-xl-stretch{align-self:stretch}.place-items-xl-start{place-items:start}.place-items-xl-end{place-items:end}.place-items-xl-center{place-items:center}.place-items-xl-stretch{place-items:stretch stretch}.order-xl-first{order:-1}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-last{order:6}.m-xl--2{margin:-.5rem}.m-xl--1{margin:-.25rem}.m-xl-0{margin:0}.m-xl-1{margin:.25rem}.m-xl-2{margin:.5rem}.m-xl-3{margin:1rem}.m-xl-4{margin:1.5rem}.m-xl-5{margin:3rem}.m-xl-auto{margin:auto}.mx-xl--2{margin-inline:-.5rem}.mx-xl--1{margin-inline:-.25rem}.mx-xl-0{margin-inline:0}.mx-xl-1{margin-inline:.25rem}.mx-xl-2{margin-inline:.5rem}.mx-xl-3{margin-inline:1rem}.mx-xl-4{margin-inline:1.5rem}.mx-xl-5{margin-inline:3rem}.mx-xl-auto{margin-inline:auto}.my-xl--2{margin-block:-.5rem}.my-xl--1{margin-block:-.25rem}.my-xl-0{margin-block:0}.my-xl-1{margin-block:.25rem}.my-xl-2{margin-block:.5rem}.my-xl-3{margin-block:1rem}.my-xl-4{margin-block:1.5rem}.my-xl-5{margin-block:3rem}.my-xl-auto{margin-block:auto}.mt-xl--2{margin-block-start:-.5rem}.mt-xl--1{margin-block-start:-.25rem}.mt-xl-0{margin-block-start:0}.mt-xl-1{margin-block-start:.25rem}.mt-xl-2{margin-block-start:.5rem}.mt-xl-3{margin-block-start:1rem}.mt-xl-4{margin-block-start:1.5rem}.mt-xl-5{margin-block-start:3rem}.mt-xl-auto{margin-block-start:auto}.me-xl--2{margin-inline-end:-.5rem}.me-xl--1{margin-inline-end:-.25rem}.me-xl-0{margin-inline-end:0}.me-xl-1{margin-inline-end:.25rem}.me-xl-2{margin-inline-end:.5rem}.me-xl-3{margin-inline-end:1rem}.me-xl-4{margin-inline-end:1.5rem}.me-xl-5{margin-inline-end:3rem}.me-xl-auto{margin-inline-end:auto}.mb-xl--2{margin-block-end:-.5rem}.mb-xl--1{margin-block-end:-.25rem}.mb-xl-0{margin-block-end:0}.mb-xl-1{margin-block-end:.25rem}.mb-xl-2{margin-block-end:.5rem}.mb-xl-3{margin-block-end:1rem}.mb-xl-4{margin-block-end:1.5rem}.mb-xl-5{margin-block-end:3rem}.mb-xl-auto{margin-block-end:auto}.ms-xl--2{margin-inline-start:-.5rem}.ms-xl--1{margin-inline-start:-.25rem}.ms-xl-0{margin-inline-start:0}.ms-xl-1{margin-inline-start:.25rem}.ms-xl-2{margin-inline-start:.5rem}.ms-xl-3{margin-inline-start:1rem}.ms-xl-4{margin-inline-start:1.5rem}.ms-xl-5{margin-inline-start:3rem}.ms-xl-auto{margin-inline-start:auto}.p-xl--2{padding:-.5rem}.p-xl--1{padding:-.25rem}.p-xl-0{padding:0}.p-xl-1{padding:.25rem}.p-xl-2{padding:.5rem}.p-xl-3{padding:1rem}.p-xl-4{padding:1.5rem}.p-xl-5{padding:3rem}.px-xl--2{padding-inline:-.5rem}.px-xl--1{padding-inline:-.25rem}.px-xl-0{padding-inline:0}.px-xl-1{padding-inline:.25rem}.px-xl-2{padding-inline:.5rem}.px-xl-3{padding-inline:1rem}.px-xl-4{padding-inline:1.5rem}.px-xl-5{padding-inline:3rem}.py-xl--2{padding-block:-.5rem}.py-xl--1{padding-block:-.25rem}.py-xl-0{padding-block:0}.py-xl-1{padding-block:.25rem}.py-xl-2{padding-block:.5rem}.py-xl-3{padding-block:1rem}.py-xl-4{padding-block:1.5rem}.py-xl-5{padding-block:3rem}.pt-xl--2{padding-block-start:-.5rem}.pt-xl--1{padding-block-start:-.25rem}.pt-xl-0{padding-block-start:0}.pt-xl-1{padding-block-start:.25rem}.pt-xl-2{padding-block-start:.5rem}.pt-xl-3{padding-block-start:1rem}.pt-xl-4{padding-block-start:1.5rem}.pt-xl-5{padding-block-start:3rem}.pe-xl--2{padding-inline-end:-.5rem}.pe-xl--1{padding-inline-end:-.25rem}.pe-xl-0{padding-inline-end:0}.pe-xl-1{padding-inline-end:.25rem}.pe-xl-2{padding-inline-end:.5rem}.pe-xl-3{padding-inline-end:1rem}.pe-xl-4{padding-inline-end:1.5rem}.pe-xl-5{padding-inline-end:3rem}.pb-xl--2{padding-block-end:-.5rem}.pb-xl--1{padding-block-end:-.25rem}.pb-xl-0{padding-block-end:0}.pb-xl-1{padding-block-end:.25rem}.pb-xl-2{padding-block-end:.5rem}.pb-xl-3{padding-block-end:1rem}.pb-xl-4{padding-block-end:1.5rem}.pb-xl-5{padding-block-end:3rem}.ps-xl--2{padding-inline-start:-.5rem}.ps-xl--1{padding-inline-start:-.25rem}.ps-xl-0{padding-inline-start:0}.ps-xl-1{padding-inline-start:.25rem}.ps-xl-2{padding-inline-start:.5rem}.ps-xl-3{padding-inline-start:1rem}.ps-xl-4{padding-inline-start:1.5rem}.ps-xl-5{padding-inline-start:3rem}}@media (width>=1536px){.d-2xl-inline{display:inline}.d-2xl-inline-block{display:inline-block}.d-2xl-block{display:block}.d-2xl-grid{display:grid}.d-2xl-inline-grid{display:inline-grid}.d-2xl-table{display:table}.d-2xl-table-row{display:table-row}.d-2xl-table-cell{display:table-cell}.d-2xl-flex{display:flex}.d-2xl-inline-flex{display:inline-flex}.d-2xl-contents{display:contents}.d-2xl-flow-root{display:flow-root}.d-2xl-none{display:none}.flex-2xl-fill{flex:auto}.flex-2xl-row{flex-direction:row}.flex-2xl-column{flex-direction:column}.flex-2xl-row-reverse{flex-direction:row-reverse}.flex-2xl-column-reverse{flex-direction:column-reverse}.flex-2xl-grow-0{flex-grow:0}.flex-2xl-grow-1{flex-grow:1}.flex-2xl-shrink-0{flex-shrink:0}.flex-2xl-shrink-1{flex-shrink:1}.flex-2xl-wrap{flex-wrap:wrap}.flex-2xl-nowrap{flex-wrap:nowrap}.flex-2xl-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-2xl-start{justify-content:flex-start}.justify-content-2xl-end{justify-content:flex-end}.justify-content-2xl-center{justify-content:center}.justify-content-2xl-between{justify-content:space-between}.justify-content-2xl-around{justify-content:space-around}.justify-content-2xl-evenly{justify-content:space-evenly}.justify-items-2xl-start{justify-items:start}.justify-items-2xl-end{justify-items:end}.justify-items-2xl-center{justify-items:center}.justify-items-2xl-stretch{justify-items:stretch}.align-items-2xl-start{align-items:flex-start}.align-items-2xl-end{align-items:flex-end}.align-items-2xl-center{align-items:center}.align-items-2xl-baseline{align-items:baseline}.align-items-2xl-stretch{align-items:stretch}.align-content-2xl-start{align-content:flex-start}.align-content-2xl-end{align-content:flex-end}.align-content-2xl-center{align-content:center}.align-content-2xl-between{align-content:space-between}.align-content-2xl-around{align-content:space-around}.align-content-2xl-stretch{align-content:stretch}.align-self-2xl-auto{align-self:auto}.align-self-2xl-start{align-self:flex-start}.align-self-2xl-end{align-self:flex-end}.align-self-2xl-center{align-self:center}.align-self-2xl-baseline{align-self:baseline}.align-self-2xl-stretch{align-self:stretch}.place-items-2xl-start{place-items:start}.place-items-2xl-end{place-items:end}.place-items-2xl-center{place-items:center}.place-items-2xl-stretch{place-items:stretch stretch}.order-2xl-first{order:-1}.order-2xl-0{order:0}.order-2xl-1{order:1}.order-2xl-2{order:2}.order-2xl-3{order:3}.order-2xl-4{order:4}.order-2xl-5{order:5}.order-2xl-last{order:6}.m-2xl--2{margin:-.5rem}.m-2xl--1{margin:-.25rem}.m-2xl-0{margin:0}.m-2xl-1{margin:.25rem}.m-2xl-2{margin:.5rem}.m-2xl-3{margin:1rem}.m-2xl-4{margin:1.5rem}.m-2xl-5{margin:3rem}.m-2xl-auto{margin:auto}.mx-2xl--2{margin-inline:-.5rem}.mx-2xl--1{margin-inline:-.25rem}.mx-2xl-0{margin-inline:0}.mx-2xl-1{margin-inline:.25rem}.mx-2xl-2{margin-inline:.5rem}.mx-2xl-3{margin-inline:1rem}.mx-2xl-4{margin-inline:1.5rem}.mx-2xl-5{margin-inline:3rem}.mx-2xl-auto{margin-inline:auto}.my-2xl--2{margin-block:-.5rem}.my-2xl--1{margin-block:-.25rem}.my-2xl-0{margin-block:0}.my-2xl-1{margin-block:.25rem}.my-2xl-2{margin-block:.5rem}.my-2xl-3{margin-block:1rem}.my-2xl-4{margin-block:1.5rem}.my-2xl-5{margin-block:3rem}.my-2xl-auto{margin-block:auto}.mt-2xl--2{margin-block-start:-.5rem}.mt-2xl--1{margin-block-start:-.25rem}.mt-2xl-0{margin-block-start:0}.mt-2xl-1{margin-block-start:.25rem}.mt-2xl-2{margin-block-start:.5rem}.mt-2xl-3{margin-block-start:1rem}.mt-2xl-4{margin-block-start:1.5rem}.mt-2xl-5{margin-block-start:3rem}.mt-2xl-auto{margin-block-start:auto}.me-2xl--2{margin-inline-end:-.5rem}.me-2xl--1{margin-inline-end:-.25rem}.me-2xl-0{margin-inline-end:0}.me-2xl-1{margin-inline-end:.25rem}.me-2xl-2{margin-inline-end:.5rem}.me-2xl-3{margin-inline-end:1rem}.me-2xl-4{margin-inline-end:1.5rem}.me-2xl-5{margin-inline-end:3rem}.me-2xl-auto{margin-inline-end:auto}.mb-2xl--2{margin-block-end:-.5rem}.mb-2xl--1{margin-block-end:-.25rem}.mb-2xl-0{margin-block-end:0}.mb-2xl-1{margin-block-end:.25rem}.mb-2xl-2{margin-block-end:.5rem}.mb-2xl-3{margin-block-end:1rem}.mb-2xl-4{margin-block-end:1.5rem}.mb-2xl-5{margin-block-end:3rem}.mb-2xl-auto{margin-block-end:auto}.ms-2xl--2{margin-inline-start:-.5rem}.ms-2xl--1{margin-inline-start:-.25rem}.ms-2xl-0{margin-inline-start:0}.ms-2xl-1{margin-inline-start:.25rem}.ms-2xl-2{margin-inline-start:.5rem}.ms-2xl-3{margin-inline-start:1rem}.ms-2xl-4{margin-inline-start:1.5rem}.ms-2xl-5{margin-inline-start:3rem}.ms-2xl-auto{margin-inline-start:auto}.p-2xl--2{padding:-.5rem}.p-2xl--1{padding:-.25rem}.p-2xl-0{padding:0}.p-2xl-1{padding:.25rem}.p-2xl-2{padding:.5rem}.p-2xl-3{padding:1rem}.p-2xl-4{padding:1.5rem}.p-2xl-5{padding:3rem}.px-2xl--2{padding-inline:-.5rem}.px-2xl--1{padding-inline:-.25rem}.px-2xl-0{padding-inline:0}.px-2xl-1{padding-inline:.25rem}.px-2xl-2{padding-inline:.5rem}.px-2xl-3{padding-inline:1rem}.px-2xl-4{padding-inline:1.5rem}.px-2xl-5{padding-inline:3rem}.py-2xl--2{padding-block:-.5rem}.py-2xl--1{padding-block:-.25rem}.py-2xl-0{padding-block:0}.py-2xl-1{padding-block:.25rem}.py-2xl-2{padding-block:.5rem}.py-2xl-3{padding-block:1rem}.py-2xl-4{padding-block:1.5rem}.py-2xl-5{padding-block:3rem}.pt-2xl--2{padding-block-start:-.5rem}.pt-2xl--1{padding-block-start:-.25rem}.pt-2xl-0{padding-block-start:0}.pt-2xl-1{padding-block-start:.25rem}.pt-2xl-2{padding-block-start:.5rem}.pt-2xl-3{padding-block-start:1rem}.pt-2xl-4{padding-block-start:1.5rem}.pt-2xl-5{padding-block-start:3rem}.pe-2xl--2{padding-inline-end:-.5rem}.pe-2xl--1{padding-inline-end:-.25rem}.pe-2xl-0{padding-inline-end:0}.pe-2xl-1{padding-inline-end:.25rem}.pe-2xl-2{padding-inline-end:.5rem}.pe-2xl-3{padding-inline-end:1rem}.pe-2xl-4{padding-inline-end:1.5rem}.pe-2xl-5{padding-inline-end:3rem}.pb-2xl--2{padding-block-end:-.5rem}.pb-2xl--1{padding-block-end:-.25rem}.pb-2xl-0{padding-block-end:0}.pb-2xl-1{padding-block-end:.25rem}.pb-2xl-2{padding-block-end:.5rem}.pb-2xl-3{padding-block-end:1rem}.pb-2xl-4{padding-block-end:1.5rem}.pb-2xl-5{padding-block-end:3rem}.ps-2xl--2{padding-inline-start:-.5rem}.ps-2xl--1{padding-inline-start:-.25rem}.ps-2xl-0{padding-inline-start:0}.ps-2xl-1{padding-inline-start:.25rem}.ps-2xl-2{padding-inline-start:.5rem}.ps-2xl-3{padding-inline-start:1rem}.ps-2xl-4{padding-inline-start:1.5rem}.ps-2xl-5{padding-inline-start:3rem}}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:1024px;--bs-breakpoint-xl:1280px;--bs-breakpoint-2xl:1536px}
+@layer layout{.container,.container-fluid,.container-2xl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-inline:calc(var(--bs-gutter-x)*.5);margin-inline:auto}@media (width>=576px){.container-sm,.container{max-width:540px}}@media (width>=768px){.container-md,.container-sm,.container{max-width:720px}}@media (width>=1024px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (width>=1280px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1200px}}@media (width>=1536px){.container-2xl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1440px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;margin-inline:calc(-.5*var(--bs-gutter-x));margin-top:calc(-1*var(--bs-gutter-y));flex-wrap:wrap;display:flex}.row>*{width:100%;max-width:100%;padding-inline:calc(var(--bs-gutter-x)*.5);margin-top:var(--bs-gutter-y);flex-shrink:0}.col{flex:1 0 0}.row-cols-auto>*{flex:none;width:auto}.row-cols-1>*{flex:none;width:100%}.row-cols-2>*{flex:none;width:50%}.row-cols-3>*{flex:none;width:33.3333%}.row-cols-4>*{flex:none;width:25%}.row-cols-5>*{flex:none;width:20%}.row-cols-6>*{flex:none;width:16.6667%}.col-auto{flex:none;width:auto}.col-1{flex:none;width:8.33333%}.col-2{flex:none;width:16.6667%}.col-3{flex:none;width:25%}.col-4{flex:none;width:33.3333%}.col-5{flex:none;width:41.6667%}.col-6{flex:none;width:50%}.col-7{flex:none;width:58.3333%}.col-8{flex:none;width:66.6667%}.col-9{flex:none;width:75%}.col-10{flex:none;width:83.3333%}.col-11{flex:none;width:91.6667%}.col-12{flex:none;width:100%}.offset-1{margin-inline-start:8.33333%}.offset-2{margin-inline-start:16.6667%}.offset-3{margin-inline-start:25%}.offset-4{margin-inline-start:33.3333%}.offset-5{margin-inline-start:41.6667%}.offset-6{margin-inline-start:50%}.offset-7{margin-inline-start:58.3333%}.offset-8{margin-inline-start:66.6667%}.offset-9{margin-inline-start:75%}.offset-10{margin-inline-start:83.3333%}.offset-11{margin-inline-start:91.6667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:.25rem}.g-1,.gy-1{--bs-gutter-y:.25rem}.g-2,.gx-2{--bs-gutter-x:.5rem}.g-2,.gy-2{--bs-gutter-y:.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (width>=576px){.col-sm{flex:1 0 0}.row-cols-sm-auto>*{flex:none;width:auto}.row-cols-sm-1>*{flex:none;width:100%}.row-cols-sm-2>*{flex:none;width:50%}.row-cols-sm-3>*{flex:none;width:33.3333%}.row-cols-sm-4>*{flex:none;width:25%}.row-cols-sm-5>*{flex:none;width:20%}.row-cols-sm-6>*{flex:none;width:16.6667%}.col-sm-auto{flex:none;width:auto}.col-sm-1{flex:none;width:8.33333%}.col-sm-2{flex:none;width:16.6667%}.col-sm-3{flex:none;width:25%}.col-sm-4{flex:none;width:33.3333%}.col-sm-5{flex:none;width:41.6667%}.col-sm-6{flex:none;width:50%}.col-sm-7{flex:none;width:58.3333%}.col-sm-8{flex:none;width:66.6667%}.col-sm-9{flex:none;width:75%}.col-sm-10{flex:none;width:83.3333%}.col-sm-11{flex:none;width:91.6667%}.col-sm-12{flex:none;width:100%}.offset-sm-0{margin-inline-start:0}.offset-sm-1{margin-inline-start:8.33333%}.offset-sm-2{margin-inline-start:16.6667%}.offset-sm-3{margin-inline-start:25%}.offset-sm-4{margin-inline-start:33.3333%}.offset-sm-5{margin-inline-start:41.6667%}.offset-sm-6{margin-inline-start:50%}.offset-sm-7{margin-inline-start:58.3333%}.offset-sm-8{margin-inline-start:66.6667%}.offset-sm-9{margin-inline-start:75%}.offset-sm-10{margin-inline-start:83.3333%}.offset-sm-11{margin-inline-start:91.6667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (width>=768px){.col-md{flex:1 0 0}.row-cols-md-auto>*{flex:none;width:auto}.row-cols-md-1>*{flex:none;width:100%}.row-cols-md-2>*{flex:none;width:50%}.row-cols-md-3>*{flex:none;width:33.3333%}.row-cols-md-4>*{flex:none;width:25%}.row-cols-md-5>*{flex:none;width:20%}.row-cols-md-6>*{flex:none;width:16.6667%}.col-md-auto{flex:none;width:auto}.col-md-1{flex:none;width:8.33333%}.col-md-2{flex:none;width:16.6667%}.col-md-3{flex:none;width:25%}.col-md-4{flex:none;width:33.3333%}.col-md-5{flex:none;width:41.6667%}.col-md-6{flex:none;width:50%}.col-md-7{flex:none;width:58.3333%}.col-md-8{flex:none;width:66.6667%}.col-md-9{flex:none;width:75%}.col-md-10{flex:none;width:83.3333%}.col-md-11{flex:none;width:91.6667%}.col-md-12{flex:none;width:100%}.offset-md-0{margin-inline-start:0}.offset-md-1{margin-inline-start:8.33333%}.offset-md-2{margin-inline-start:16.6667%}.offset-md-3{margin-inline-start:25%}.offset-md-4{margin-inline-start:33.3333%}.offset-md-5{margin-inline-start:41.6667%}.offset-md-6{margin-inline-start:50%}.offset-md-7{margin-inline-start:58.3333%}.offset-md-8{margin-inline-start:66.6667%}.offset-md-9{margin-inline-start:75%}.offset-md-10{margin-inline-start:83.3333%}.offset-md-11{margin-inline-start:91.6667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (width>=1024px){.col-lg{flex:1 0 0}.row-cols-lg-auto>*{flex:none;width:auto}.row-cols-lg-1>*{flex:none;width:100%}.row-cols-lg-2>*{flex:none;width:50%}.row-cols-lg-3>*{flex:none;width:33.3333%}.row-cols-lg-4>*{flex:none;width:25%}.row-cols-lg-5>*{flex:none;width:20%}.row-cols-lg-6>*{flex:none;width:16.6667%}.col-lg-auto{flex:none;width:auto}.col-lg-1{flex:none;width:8.33333%}.col-lg-2{flex:none;width:16.6667%}.col-lg-3{flex:none;width:25%}.col-lg-4{flex:none;width:33.3333%}.col-lg-5{flex:none;width:41.6667%}.col-lg-6{flex:none;width:50%}.col-lg-7{flex:none;width:58.3333%}.col-lg-8{flex:none;width:66.6667%}.col-lg-9{flex:none;width:75%}.col-lg-10{flex:none;width:83.3333%}.col-lg-11{flex:none;width:91.6667%}.col-lg-12{flex:none;width:100%}.offset-lg-0{margin-inline-start:0}.offset-lg-1{margin-inline-start:8.33333%}.offset-lg-2{margin-inline-start:16.6667%}.offset-lg-3{margin-inline-start:25%}.offset-lg-4{margin-inline-start:33.3333%}.offset-lg-5{margin-inline-start:41.6667%}.offset-lg-6{margin-inline-start:50%}.offset-lg-7{margin-inline-start:58.3333%}.offset-lg-8{margin-inline-start:66.6667%}.offset-lg-9{margin-inline-start:75%}.offset-lg-10{margin-inline-start:83.3333%}.offset-lg-11{margin-inline-start:91.6667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (width>=1280px){.col-xl{flex:1 0 0}.row-cols-xl-auto>*{flex:none;width:auto}.row-cols-xl-1>*{flex:none;width:100%}.row-cols-xl-2>*{flex:none;width:50%}.row-cols-xl-3>*{flex:none;width:33.3333%}.row-cols-xl-4>*{flex:none;width:25%}.row-cols-xl-5>*{flex:none;width:20%}.row-cols-xl-6>*{flex:none;width:16.6667%}.col-xl-auto{flex:none;width:auto}.col-xl-1{flex:none;width:8.33333%}.col-xl-2{flex:none;width:16.6667%}.col-xl-3{flex:none;width:25%}.col-xl-4{flex:none;width:33.3333%}.col-xl-5{flex:none;width:41.6667%}.col-xl-6{flex:none;width:50%}.col-xl-7{flex:none;width:58.3333%}.col-xl-8{flex:none;width:66.6667%}.col-xl-9{flex:none;width:75%}.col-xl-10{flex:none;width:83.3333%}.col-xl-11{flex:none;width:91.6667%}.col-xl-12{flex:none;width:100%}.offset-xl-0{margin-inline-start:0}.offset-xl-1{margin-inline-start:8.33333%}.offset-xl-2{margin-inline-start:16.6667%}.offset-xl-3{margin-inline-start:25%}.offset-xl-4{margin-inline-start:33.3333%}.offset-xl-5{margin-inline-start:41.6667%}.offset-xl-6{margin-inline-start:50%}.offset-xl-7{margin-inline-start:58.3333%}.offset-xl-8{margin-inline-start:66.6667%}.offset-xl-9{margin-inline-start:75%}.offset-xl-10{margin-inline-start:83.3333%}.offset-xl-11{margin-inline-start:91.6667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (width>=1536px){.col-2xl{flex:1 0 0}.row-cols-2xl-auto>*{flex:none;width:auto}.row-cols-2xl-1>*{flex:none;width:100%}.row-cols-2xl-2>*{flex:none;width:50%}.row-cols-2xl-3>*{flex:none;width:33.3333%}.row-cols-2xl-4>*{flex:none;width:25%}.row-cols-2xl-5>*{flex:none;width:20%}.row-cols-2xl-6>*{flex:none;width:16.6667%}.col-2xl-auto{flex:none;width:auto}.col-2xl-1{flex:none;width:8.33333%}.col-2xl-2{flex:none;width:16.6667%}.col-2xl-3{flex:none;width:25%}.col-2xl-4{flex:none;width:33.3333%}.col-2xl-5{flex:none;width:41.6667%}.col-2xl-6{flex:none;width:50%}.col-2xl-7{flex:none;width:58.3333%}.col-2xl-8{flex:none;width:66.6667%}.col-2xl-9{flex:none;width:75%}.col-2xl-10{flex:none;width:83.3333%}.col-2xl-11{flex:none;width:91.6667%}.col-2xl-12{flex:none;width:100%}.offset-2xl-0{margin-inline-start:0}.offset-2xl-1{margin-inline-start:8.33333%}.offset-2xl-2{margin-inline-start:16.6667%}.offset-2xl-3{margin-inline-start:25%}.offset-2xl-4{margin-inline-start:33.3333%}.offset-2xl-5{margin-inline-start:41.6667%}.offset-2xl-6{margin-inline-start:50%}.offset-2xl-7{margin-inline-start:58.3333%}.offset-2xl-8{margin-inline-start:66.6667%}.offset-2xl-9{margin-inline-start:75%}.offset-2xl-10{margin-inline-start:83.3333%}.offset-2xl-11{margin-inline-start:91.6667%}.g-2xl-0,.gx-2xl-0{--bs-gutter-x:0}.g-2xl-0,.gy-2xl-0{--bs-gutter-y:0}.g-2xl-1,.gx-2xl-1{--bs-gutter-x:.25rem}.g-2xl-1,.gy-2xl-1{--bs-gutter-y:.25rem}.g-2xl-2,.gx-2xl-2{--bs-gutter-x:.5rem}.g-2xl-2,.gy-2xl-2{--bs-gutter-y:.5rem}.g-2xl-3,.gx-2xl-3{--bs-gutter-x:1rem}.g-2xl-3,.gy-2xl-3{--bs-gutter-y:1rem}.g-2xl-4,.gx-2xl-4{--bs-gutter-x:1.5rem}.g-2xl-4,.gy-2xl-4{--bs-gutter-y:1.5rem}.g-2xl-5,.gx-2xl-5{--bs-gutter-x:3rem}.g-2xl-5,.gy-2xl-5{--bs-gutter-y:3rem}}.grid{--bs-columns:12;--bs-rows:1;--bs-gap:1.5rem;grid-template-rows:repeat(var(--bs-rows),1fr);grid-template-columns:repeat(var(--bs-columns),1fr);gap:var(--bs-gap);display:grid}.g-col-1{grid-column:auto/span 1}.g-col-2{grid-column:auto/span 2}.g-col-3{grid-column:auto/span 3}.g-col-4{grid-column:auto/span 4}.g-col-5{grid-column:auto/span 5}.g-col-6{grid-column:auto/span 6}.g-col-7{grid-column:auto/span 7}.g-col-8{grid-column:auto/span 8}.g-col-9{grid-column:auto/span 9}.g-col-10{grid-column:auto/span 10}.g-col-11{grid-column:auto/span 11}.g-col-12{grid-column:auto/span 12}.g-start-1{grid-column-start:1}.g-start-2{grid-column-start:2}.g-start-3{grid-column-start:3}.g-start-4{grid-column-start:4}.g-start-5{grid-column-start:5}.g-start-6{grid-column-start:6}.g-start-7{grid-column-start:7}.g-start-8{grid-column-start:8}.g-start-9{grid-column-start:9}.g-start-10{grid-column-start:10}.g-start-11{grid-column-start:11}@media (width>=576px){.g-col-sm-1{grid-column:auto/span 1}.g-col-sm-2{grid-column:auto/span 2}.g-col-sm-3{grid-column:auto/span 3}.g-col-sm-4{grid-column:auto/span 4}.g-col-sm-5{grid-column:auto/span 5}.g-col-sm-6{grid-column:auto/span 6}.g-col-sm-7{grid-column:auto/span 7}.g-col-sm-8{grid-column:auto/span 8}.g-col-sm-9{grid-column:auto/span 9}.g-col-sm-10{grid-column:auto/span 10}.g-col-sm-11{grid-column:auto/span 11}.g-col-sm-12{grid-column:auto/span 12}.g-start-sm-1{grid-column-start:1}.g-start-sm-2{grid-column-start:2}.g-start-sm-3{grid-column-start:3}.g-start-sm-4{grid-column-start:4}.g-start-sm-5{grid-column-start:5}.g-start-sm-6{grid-column-start:6}.g-start-sm-7{grid-column-start:7}.g-start-sm-8{grid-column-start:8}.g-start-sm-9{grid-column-start:9}.g-start-sm-10{grid-column-start:10}.g-start-sm-11{grid-column-start:11}}@media (width>=768px){.g-col-md-1{grid-column:auto/span 1}.g-col-md-2{grid-column:auto/span 2}.g-col-md-3{grid-column:auto/span 3}.g-col-md-4{grid-column:auto/span 4}.g-col-md-5{grid-column:auto/span 5}.g-col-md-6{grid-column:auto/span 6}.g-col-md-7{grid-column:auto/span 7}.g-col-md-8{grid-column:auto/span 8}.g-col-md-9{grid-column:auto/span 9}.g-col-md-10{grid-column:auto/span 10}.g-col-md-11{grid-column:auto/span 11}.g-col-md-12{grid-column:auto/span 12}.g-start-md-1{grid-column-start:1}.g-start-md-2{grid-column-start:2}.g-start-md-3{grid-column-start:3}.g-start-md-4{grid-column-start:4}.g-start-md-5{grid-column-start:5}.g-start-md-6{grid-column-start:6}.g-start-md-7{grid-column-start:7}.g-start-md-8{grid-column-start:8}.g-start-md-9{grid-column-start:9}.g-start-md-10{grid-column-start:10}.g-start-md-11{grid-column-start:11}}@media (width>=1024px){.g-col-lg-1{grid-column:auto/span 1}.g-col-lg-2{grid-column:auto/span 2}.g-col-lg-3{grid-column:auto/span 3}.g-col-lg-4{grid-column:auto/span 4}.g-col-lg-5{grid-column:auto/span 5}.g-col-lg-6{grid-column:auto/span 6}.g-col-lg-7{grid-column:auto/span 7}.g-col-lg-8{grid-column:auto/span 8}.g-col-lg-9{grid-column:auto/span 9}.g-col-lg-10{grid-column:auto/span 10}.g-col-lg-11{grid-column:auto/span 11}.g-col-lg-12{grid-column:auto/span 12}.g-start-lg-1{grid-column-start:1}.g-start-lg-2{grid-column-start:2}.g-start-lg-3{grid-column-start:3}.g-start-lg-4{grid-column-start:4}.g-start-lg-5{grid-column-start:5}.g-start-lg-6{grid-column-start:6}.g-start-lg-7{grid-column-start:7}.g-start-lg-8{grid-column-start:8}.g-start-lg-9{grid-column-start:9}.g-start-lg-10{grid-column-start:10}.g-start-lg-11{grid-column-start:11}}@media (width>=1280px){.g-col-xl-1{grid-column:auto/span 1}.g-col-xl-2{grid-column:auto/span 2}.g-col-xl-3{grid-column:auto/span 3}.g-col-xl-4{grid-column:auto/span 4}.g-col-xl-5{grid-column:auto/span 5}.g-col-xl-6{grid-column:auto/span 6}.g-col-xl-7{grid-column:auto/span 7}.g-col-xl-8{grid-column:auto/span 8}.g-col-xl-9{grid-column:auto/span 9}.g-col-xl-10{grid-column:auto/span 10}.g-col-xl-11{grid-column:auto/span 11}.g-col-xl-12{grid-column:auto/span 12}.g-start-xl-1{grid-column-start:1}.g-start-xl-2{grid-column-start:2}.g-start-xl-3{grid-column-start:3}.g-start-xl-4{grid-column-start:4}.g-start-xl-5{grid-column-start:5}.g-start-xl-6{grid-column-start:6}.g-start-xl-7{grid-column-start:7}.g-start-xl-8{grid-column-start:8}.g-start-xl-9{grid-column-start:9}.g-start-xl-10{grid-column-start:10}.g-start-xl-11{grid-column-start:11}}@media (width>=1536px){.g-col-2xl-1{grid-column:auto/span 1}.g-col-2xl-2{grid-column:auto/span 2}.g-col-2xl-3{grid-column:auto/span 3}.g-col-2xl-4{grid-column:auto/span 4}.g-col-2xl-5{grid-column:auto/span 5}.g-col-2xl-6{grid-column:auto/span 6}.g-col-2xl-7{grid-column:auto/span 7}.g-col-2xl-8{grid-column:auto/span 8}.g-col-2xl-9{grid-column:auto/span 9}.g-col-2xl-10{grid-column:auto/span 10}.g-col-2xl-11{grid-column:auto/span 11}.g-col-2xl-12{grid-column:auto/span 12}.g-start-2xl-1{grid-column-start:1}.g-start-2xl-2{grid-column-start:2}.g-start-2xl-3{grid-column-start:3}.g-start-2xl-4{grid-column-start:4}.g-start-2xl-5{grid-column-start:5}.g-start-2xl-6{grid-column-start:6}.g-start-2xl-7{grid-column-start:7}.g-start-2xl-8{grid-column-start:8}.g-start-2xl-9{grid-column-start:9}.g-start-2xl-10{grid-column-start:10}.g-start-2xl-11{grid-column-start:11}}.grid-cols-subgrid{grid-template-columns:subgrid}.grid-fill{--bs-gap:1.5rem;gap:var(--bs-gap);grid-template-columns:repeat(auto-fit,minmax(0,1fr));grid-auto-flow:row;display:grid}}@layer utilities{.d-inline{display:inline}.d-inline-block{display:inline-block}.d-block{display:block}.d-grid{display:grid}.d-inline-grid{display:inline-grid}.d-table{display:table}.d-table-row{display:table-row}.d-table-cell{display:table-cell}.d-flex{display:flex}.d-inline-flex{display:inline-flex}.d-contents{display:contents}.d-flow-root{display:flow-root}.d-none{display:none}.flex-fill{flex:auto}.flex-row{flex-direction:row}.flex-column{flex-direction:column}.flex-row-reverse{flex-direction:row-reverse}.flex-column-reverse{flex-direction:column-reverse}.flex-grow-0{flex-grow:0}.flex-grow-1{flex-grow:1}.flex-shrink-0{flex-shrink:0}.flex-shrink-1{flex-shrink:1}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-start{justify-content:flex-start}.justify-content-end{justify-content:flex-end}.justify-content-center{justify-content:center}.justify-content-between{justify-content:space-between}.justify-content-around{justify-content:space-around}.justify-content-evenly{justify-content:space-evenly}.justify-items-start{justify-items:start}.justify-items-end{justify-items:end}.justify-items-center{justify-items:center}.justify-items-stretch{justify-items:stretch}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.align-items-center{align-items:center}.align-items-baseline{align-items:baseline}.align-items-stretch{align-items:stretch}.align-content-start{align-content:flex-start}.align-content-end{align-content:flex-end}.align-content-center{align-content:center}.align-content-between{align-content:space-between}.align-content-around{align-content:space-around}.align-content-stretch{align-content:stretch}.align-self-auto{align-self:auto}.align-self-start{align-self:flex-start}.align-self-end{align-self:flex-end}.align-self-center{align-self:center}.align-self-baseline{align-self:baseline}.align-self-stretch{align-self:stretch}.place-items-start{place-items:start}.place-items-end{place-items:end}.place-items-center{place-items:center}.place-items-stretch{place-items:stretch stretch}.grid-cols-3{--bs-columns:3}.grid-cols-4{--bs-columns:4}.grid-cols-6{--bs-columns:6}.grid-cols-fill{grid-column:1/-1}.grid-auto-flow-row{grid-auto-flow:row}.grid-auto-flow-column{grid-auto-flow:column}.grid-auto-flow-dense{grid-auto-flow:dense}.order-first{order:-1}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-last{order:6}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-3{margin:1rem}.m-4{margin:1.5rem}.m-5{margin:3rem}.m-auto{margin:auto}.mx-0{margin-inline:0}.mx-1{margin-inline:.25rem}.mx-2{margin-inline:.5rem}.mx-3{margin-inline:1rem}.mx-4{margin-inline:1.5rem}.mx-5{margin-inline:3rem}.mx-auto{margin-inline:auto}.my-0{margin-block:0}.my-1{margin-block:.25rem}.my-2{margin-block:.5rem}.my-3{margin-block:1rem}.my-4{margin-block:1.5rem}.my-5{margin-block:3rem}.my-auto{margin-block:auto}.mt-0{margin-block-start:0}.mt-1{margin-block-start:.25rem}.mt-2{margin-block-start:.5rem}.mt-3{margin-block-start:1rem}.mt-4{margin-block-start:1.5rem}.mt-5{margin-block-start:3rem}.mt-auto{margin-block-start:auto}.me-0{margin-inline-end:0}.me-1{margin-inline-end:.25rem}.me-2{margin-inline-end:.5rem}.me-3{margin-inline-end:1rem}.me-4{margin-inline-end:1.5rem}.me-5{margin-inline-end:3rem}.me-auto{margin-inline-end:auto}.mb-0{margin-block-end:0}.mb-1{margin-block-end:.25rem}.mb-2{margin-block-end:.5rem}.mb-3{margin-block-end:1rem}.mb-4{margin-block-end:1.5rem}.mb-5{margin-block-end:3rem}.mb-auto{margin-block-end:auto}.ms-0{margin-inline-start:0}.ms-1{margin-inline-start:.25rem}.ms-2{margin-inline-start:.5rem}.ms-3{margin-inline-start:1rem}.ms-4{margin-inline-start:1.5rem}.ms-5{margin-inline-start:3rem}.ms--1{margin-inline-start:-.25rem}.ms--2{margin-inline-start:-.5rem}.ms-auto{margin-inline-start:auto}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:1rem}.p-4{padding:1.5rem}.p-5{padding:3rem}.px-0{padding-inline:0}.px-1{padding-inline:.25rem}.px-2{padding-inline:.5rem}.px-3{padding-inline:1rem}.px-4{padding-inline:1.5rem}.px-5{padding-inline:3rem}.py-0{padding-block:0}.py-1{padding-block:.25rem}.py-2{padding-block:.5rem}.py-3{padding-block:1rem}.py-4{padding-block:1.5rem}.py-5{padding-block:3rem}.pt-0{padding-block-start:0}.pt-1{padding-block-start:.25rem}.pt-2{padding-block-start:.5rem}.pt-3{padding-block-start:1rem}.pt-4{padding-block-start:1.5rem}.pt-5{padding-block-start:3rem}.pe-0{padding-inline-end:0}.pe-1{padding-inline-end:.25rem}.pe-2{padding-inline-end:.5rem}.pe-3{padding-inline-end:1rem}.pe-4{padding-inline-end:1.5rem}.pe-5{padding-inline-end:3rem}.pb-0{padding-block-end:0}.pb-1{padding-block-end:.25rem}.pb-2{padding-block-end:.5rem}.pb-3{padding-block-end:1rem}.pb-4{padding-block-end:1.5rem}.pb-5{padding-block-end:3rem}.ps-0{padding-inline-start:0}.ps-1{padding-inline-start:.25rem}.ps-2{padding-inline-start:.5rem}.ps-3{padding-inline-start:1rem}.ps-4{padding-inline-start:1.5rem}.ps-5{padding-inline-start:3rem}.gap-0{gap:0}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:1rem}.gap-4{gap:1.5rem}.gap-5{gap:3rem}.row-gap-0{row-gap:0}.row-gap-1{row-gap:.25rem}.row-gap-2{row-gap:.5rem}.row-gap-3{row-gap:1rem}.row-gap-4{row-gap:1.5rem}.row-gap-5{row-gap:3rem}.column-gap-0{-moz-column-gap:0;column-gap:0}.column-gap-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-5{-moz-column-gap:3rem;column-gap:3rem}@media (width>=576px){.d-sm-inline{display:inline}.d-sm-inline-block{display:inline-block}.d-sm-block{display:block}.d-sm-grid{display:grid}.d-sm-inline-grid{display:inline-grid}.d-sm-table{display:table}.d-sm-table-row{display:table-row}.d-sm-table-cell{display:table-cell}.d-sm-flex{display:flex}.d-sm-inline-flex{display:inline-flex}.d-sm-contents{display:contents}.d-sm-flow-root{display:flow-root}.d-sm-none{display:none}.flex-sm-fill{flex:auto}.flex-sm-row{flex-direction:row}.flex-sm-column{flex-direction:column}.flex-sm-row-reverse{flex-direction:row-reverse}.flex-sm-column-reverse{flex-direction:column-reverse}.flex-sm-grow-0{flex-grow:0}.flex-sm-grow-1{flex-grow:1}.flex-sm-shrink-0{flex-shrink:0}.flex-sm-shrink-1{flex-shrink:1}.flex-sm-wrap{flex-wrap:wrap}.flex-sm-nowrap{flex-wrap:nowrap}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-sm-start{justify-content:flex-start}.justify-content-sm-end{justify-content:flex-end}.justify-content-sm-center{justify-content:center}.justify-content-sm-between{justify-content:space-between}.justify-content-sm-around{justify-content:space-around}.justify-content-sm-evenly{justify-content:space-evenly}.justify-items-sm-start{justify-items:start}.justify-items-sm-end{justify-items:end}.justify-items-sm-center{justify-items:center}.justify-items-sm-stretch{justify-items:stretch}.align-items-sm-start{align-items:flex-start}.align-items-sm-end{align-items:flex-end}.align-items-sm-center{align-items:center}.align-items-sm-baseline{align-items:baseline}.align-items-sm-stretch{align-items:stretch}.align-content-sm-start{align-content:flex-start}.align-content-sm-end{align-content:flex-end}.align-content-sm-center{align-content:center}.align-content-sm-between{align-content:space-between}.align-content-sm-around{align-content:space-around}.align-content-sm-stretch{align-content:stretch}.align-self-sm-auto{align-self:auto}.align-self-sm-start{align-self:flex-start}.align-self-sm-end{align-self:flex-end}.align-self-sm-center{align-self:center}.align-self-sm-baseline{align-self:baseline}.align-self-sm-stretch{align-self:stretch}.place-items-sm-start{place-items:start}.place-items-sm-end{place-items:end}.place-items-sm-center{place-items:center}.place-items-sm-stretch{place-items:stretch stretch}.grid-cols-sm-3{--bs-columns:3}.grid-cols-sm-4{--bs-columns:4}.grid-cols-sm-6{--bs-columns:6}.grid-cols-sm-fill{grid-column:1/-1}.grid-auto-flow-sm-row{grid-auto-flow:row}.grid-auto-flow-sm-column{grid-auto-flow:column}.grid-auto-flow-sm-dense{grid-auto-flow:dense}.order-sm-first{order:-1}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-last{order:6}.m-sm-0{margin:0}.m-sm-1{margin:.25rem}.m-sm-2{margin:.5rem}.m-sm-3{margin:1rem}.m-sm-4{margin:1.5rem}.m-sm-5{margin:3rem}.m-sm-auto{margin:auto}.mx-sm-0{margin-inline:0}.mx-sm-1{margin-inline:.25rem}.mx-sm-2{margin-inline:.5rem}.mx-sm-3{margin-inline:1rem}.mx-sm-4{margin-inline:1.5rem}.mx-sm-5{margin-inline:3rem}.mx-sm-auto{margin-inline:auto}.my-sm-0{margin-block:0}.my-sm-1{margin-block:.25rem}.my-sm-2{margin-block:.5rem}.my-sm-3{margin-block:1rem}.my-sm-4{margin-block:1.5rem}.my-sm-5{margin-block:3rem}.my-sm-auto{margin-block:auto}.mt-sm-0{margin-block-start:0}.mt-sm-1{margin-block-start:.25rem}.mt-sm-2{margin-block-start:.5rem}.mt-sm-3{margin-block-start:1rem}.mt-sm-4{margin-block-start:1.5rem}.mt-sm-5{margin-block-start:3rem}.mt-sm-auto{margin-block-start:auto}.me-sm-0{margin-inline-end:0}.me-sm-1{margin-inline-end:.25rem}.me-sm-2{margin-inline-end:.5rem}.me-sm-3{margin-inline-end:1rem}.me-sm-4{margin-inline-end:1.5rem}.me-sm-5{margin-inline-end:3rem}.me-sm-auto{margin-inline-end:auto}.mb-sm-0{margin-block-end:0}.mb-sm-1{margin-block-end:.25rem}.mb-sm-2{margin-block-end:.5rem}.mb-sm-3{margin-block-end:1rem}.mb-sm-4{margin-block-end:1.5rem}.mb-sm-5{margin-block-end:3rem}.mb-sm-auto{margin-block-end:auto}.ms-sm-0{margin-inline-start:0}.ms-sm-1{margin-inline-start:.25rem}.ms-sm-2{margin-inline-start:.5rem}.ms-sm-3{margin-inline-start:1rem}.ms-sm-4{margin-inline-start:1.5rem}.ms-sm-5{margin-inline-start:3rem}.ms-sm--1{margin-inline-start:-.25rem}.ms-sm--2{margin-inline-start:-.5rem}.ms-sm-auto{margin-inline-start:auto}.p-sm-0{padding:0}.p-sm-1{padding:.25rem}.p-sm-2{padding:.5rem}.p-sm-3{padding:1rem}.p-sm-4{padding:1.5rem}.p-sm-5{padding:3rem}.px-sm-0{padding-inline:0}.px-sm-1{padding-inline:.25rem}.px-sm-2{padding-inline:.5rem}.px-sm-3{padding-inline:1rem}.px-sm-4{padding-inline:1.5rem}.px-sm-5{padding-inline:3rem}.py-sm-0{padding-block:0}.py-sm-1{padding-block:.25rem}.py-sm-2{padding-block:.5rem}.py-sm-3{padding-block:1rem}.py-sm-4{padding-block:1.5rem}.py-sm-5{padding-block:3rem}.pt-sm-0{padding-block-start:0}.pt-sm-1{padding-block-start:.25rem}.pt-sm-2{padding-block-start:.5rem}.pt-sm-3{padding-block-start:1rem}.pt-sm-4{padding-block-start:1.5rem}.pt-sm-5{padding-block-start:3rem}.pe-sm-0{padding-inline-end:0}.pe-sm-1{padding-inline-end:.25rem}.pe-sm-2{padding-inline-end:.5rem}.pe-sm-3{padding-inline-end:1rem}.pe-sm-4{padding-inline-end:1.5rem}.pe-sm-5{padding-inline-end:3rem}.pb-sm-0{padding-block-end:0}.pb-sm-1{padding-block-end:.25rem}.pb-sm-2{padding-block-end:.5rem}.pb-sm-3{padding-block-end:1rem}.pb-sm-4{padding-block-end:1.5rem}.pb-sm-5{padding-block-end:3rem}.ps-sm-0{padding-inline-start:0}.ps-sm-1{padding-inline-start:.25rem}.ps-sm-2{padding-inline-start:.5rem}.ps-sm-3{padding-inline-start:1rem}.ps-sm-4{padding-inline-start:1.5rem}.ps-sm-5{padding-inline-start:3rem}.gap-sm-0{gap:0}.gap-sm-1{gap:.25rem}.gap-sm-2{gap:.5rem}.gap-sm-3{gap:1rem}.gap-sm-4{gap:1.5rem}.gap-sm-5{gap:3rem}.row-gap-sm-0{row-gap:0}.row-gap-sm-1{row-gap:.25rem}.row-gap-sm-2{row-gap:.5rem}.row-gap-sm-3{row-gap:1rem}.row-gap-sm-4{row-gap:1.5rem}.row-gap-sm-5{row-gap:3rem}.column-gap-sm-0{-moz-column-gap:0;column-gap:0}.column-gap-sm-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-sm-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-sm-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-sm-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-sm-5{-moz-column-gap:3rem;column-gap:3rem}}@media (width>=768px){.d-md-inline{display:inline}.d-md-inline-block{display:inline-block}.d-md-block{display:block}.d-md-grid{display:grid}.d-md-inline-grid{display:inline-grid}.d-md-table{display:table}.d-md-table-row{display:table-row}.d-md-table-cell{display:table-cell}.d-md-flex{display:flex}.d-md-inline-flex{display:inline-flex}.d-md-contents{display:contents}.d-md-flow-root{display:flow-root}.d-md-none{display:none}.flex-md-fill{flex:auto}.flex-md-row{flex-direction:row}.flex-md-column{flex-direction:column}.flex-md-row-reverse{flex-direction:row-reverse}.flex-md-column-reverse{flex-direction:column-reverse}.flex-md-grow-0{flex-grow:0}.flex-md-grow-1{flex-grow:1}.flex-md-shrink-0{flex-shrink:0}.flex-md-shrink-1{flex-shrink:1}.flex-md-wrap{flex-wrap:wrap}.flex-md-nowrap{flex-wrap:nowrap}.flex-md-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-md-start{justify-content:flex-start}.justify-content-md-end{justify-content:flex-end}.justify-content-md-center{justify-content:center}.justify-content-md-between{justify-content:space-between}.justify-content-md-around{justify-content:space-around}.justify-content-md-evenly{justify-content:space-evenly}.justify-items-md-start{justify-items:start}.justify-items-md-end{justify-items:end}.justify-items-md-center{justify-items:center}.justify-items-md-stretch{justify-items:stretch}.align-items-md-start{align-items:flex-start}.align-items-md-end{align-items:flex-end}.align-items-md-center{align-items:center}.align-items-md-baseline{align-items:baseline}.align-items-md-stretch{align-items:stretch}.align-content-md-start{align-content:flex-start}.align-content-md-end{align-content:flex-end}.align-content-md-center{align-content:center}.align-content-md-between{align-content:space-between}.align-content-md-around{align-content:space-around}.align-content-md-stretch{align-content:stretch}.align-self-md-auto{align-self:auto}.align-self-md-start{align-self:flex-start}.align-self-md-end{align-self:flex-end}.align-self-md-center{align-self:center}.align-self-md-baseline{align-self:baseline}.align-self-md-stretch{align-self:stretch}.place-items-md-start{place-items:start}.place-items-md-end{place-items:end}.place-items-md-center{place-items:center}.place-items-md-stretch{place-items:stretch stretch}.grid-cols-md-3{--bs-columns:3}.grid-cols-md-4{--bs-columns:4}.grid-cols-md-6{--bs-columns:6}.grid-cols-md-fill{grid-column:1/-1}.grid-auto-flow-md-row{grid-auto-flow:row}.grid-auto-flow-md-column{grid-auto-flow:column}.grid-auto-flow-md-dense{grid-auto-flow:dense}.order-md-first{order:-1}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-last{order:6}.m-md-0{margin:0}.m-md-1{margin:.25rem}.m-md-2{margin:.5rem}.m-md-3{margin:1rem}.m-md-4{margin:1.5rem}.m-md-5{margin:3rem}.m-md-auto{margin:auto}.mx-md-0{margin-inline:0}.mx-md-1{margin-inline:.25rem}.mx-md-2{margin-inline:.5rem}.mx-md-3{margin-inline:1rem}.mx-md-4{margin-inline:1.5rem}.mx-md-5{margin-inline:3rem}.mx-md-auto{margin-inline:auto}.my-md-0{margin-block:0}.my-md-1{margin-block:.25rem}.my-md-2{margin-block:.5rem}.my-md-3{margin-block:1rem}.my-md-4{margin-block:1.5rem}.my-md-5{margin-block:3rem}.my-md-auto{margin-block:auto}.mt-md-0{margin-block-start:0}.mt-md-1{margin-block-start:.25rem}.mt-md-2{margin-block-start:.5rem}.mt-md-3{margin-block-start:1rem}.mt-md-4{margin-block-start:1.5rem}.mt-md-5{margin-block-start:3rem}.mt-md-auto{margin-block-start:auto}.me-md-0{margin-inline-end:0}.me-md-1{margin-inline-end:.25rem}.me-md-2{margin-inline-end:.5rem}.me-md-3{margin-inline-end:1rem}.me-md-4{margin-inline-end:1.5rem}.me-md-5{margin-inline-end:3rem}.me-md-auto{margin-inline-end:auto}.mb-md-0{margin-block-end:0}.mb-md-1{margin-block-end:.25rem}.mb-md-2{margin-block-end:.5rem}.mb-md-3{margin-block-end:1rem}.mb-md-4{margin-block-end:1.5rem}.mb-md-5{margin-block-end:3rem}.mb-md-auto{margin-block-end:auto}.ms-md-0{margin-inline-start:0}.ms-md-1{margin-inline-start:.25rem}.ms-md-2{margin-inline-start:.5rem}.ms-md-3{margin-inline-start:1rem}.ms-md-4{margin-inline-start:1.5rem}.ms-md-5{margin-inline-start:3rem}.ms-md--1{margin-inline-start:-.25rem}.ms-md--2{margin-inline-start:-.5rem}.ms-md-auto{margin-inline-start:auto}.p-md-0{padding:0}.p-md-1{padding:.25rem}.p-md-2{padding:.5rem}.p-md-3{padding:1rem}.p-md-4{padding:1.5rem}.p-md-5{padding:3rem}.px-md-0{padding-inline:0}.px-md-1{padding-inline:.25rem}.px-md-2{padding-inline:.5rem}.px-md-3{padding-inline:1rem}.px-md-4{padding-inline:1.5rem}.px-md-5{padding-inline:3rem}.py-md-0{padding-block:0}.py-md-1{padding-block:.25rem}.py-md-2{padding-block:.5rem}.py-md-3{padding-block:1rem}.py-md-4{padding-block:1.5rem}.py-md-5{padding-block:3rem}.pt-md-0{padding-block-start:0}.pt-md-1{padding-block-start:.25rem}.pt-md-2{padding-block-start:.5rem}.pt-md-3{padding-block-start:1rem}.pt-md-4{padding-block-start:1.5rem}.pt-md-5{padding-block-start:3rem}.pe-md-0{padding-inline-end:0}.pe-md-1{padding-inline-end:.25rem}.pe-md-2{padding-inline-end:.5rem}.pe-md-3{padding-inline-end:1rem}.pe-md-4{padding-inline-end:1.5rem}.pe-md-5{padding-inline-end:3rem}.pb-md-0{padding-block-end:0}.pb-md-1{padding-block-end:.25rem}.pb-md-2{padding-block-end:.5rem}.pb-md-3{padding-block-end:1rem}.pb-md-4{padding-block-end:1.5rem}.pb-md-5{padding-block-end:3rem}.ps-md-0{padding-inline-start:0}.ps-md-1{padding-inline-start:.25rem}.ps-md-2{padding-inline-start:.5rem}.ps-md-3{padding-inline-start:1rem}.ps-md-4{padding-inline-start:1.5rem}.ps-md-5{padding-inline-start:3rem}.gap-md-0{gap:0}.gap-md-1{gap:.25rem}.gap-md-2{gap:.5rem}.gap-md-3{gap:1rem}.gap-md-4{gap:1.5rem}.gap-md-5{gap:3rem}.row-gap-md-0{row-gap:0}.row-gap-md-1{row-gap:.25rem}.row-gap-md-2{row-gap:.5rem}.row-gap-md-3{row-gap:1rem}.row-gap-md-4{row-gap:1.5rem}.row-gap-md-5{row-gap:3rem}.column-gap-md-0{-moz-column-gap:0;column-gap:0}.column-gap-md-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-md-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-md-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-md-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-md-5{-moz-column-gap:3rem;column-gap:3rem}}@media (width>=1024px){.d-lg-inline{display:inline}.d-lg-inline-block{display:inline-block}.d-lg-block{display:block}.d-lg-grid{display:grid}.d-lg-inline-grid{display:inline-grid}.d-lg-table{display:table}.d-lg-table-row{display:table-row}.d-lg-table-cell{display:table-cell}.d-lg-flex{display:flex}.d-lg-inline-flex{display:inline-flex}.d-lg-contents{display:contents}.d-lg-flow-root{display:flow-root}.d-lg-none{display:none}.flex-lg-fill{flex:auto}.flex-lg-row{flex-direction:row}.flex-lg-column{flex-direction:column}.flex-lg-row-reverse{flex-direction:row-reverse}.flex-lg-column-reverse{flex-direction:column-reverse}.flex-lg-grow-0{flex-grow:0}.flex-lg-grow-1{flex-grow:1}.flex-lg-shrink-0{flex-shrink:0}.flex-lg-shrink-1{flex-shrink:1}.flex-lg-wrap{flex-wrap:wrap}.flex-lg-nowrap{flex-wrap:nowrap}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-lg-start{justify-content:flex-start}.justify-content-lg-end{justify-content:flex-end}.justify-content-lg-center{justify-content:center}.justify-content-lg-between{justify-content:space-between}.justify-content-lg-around{justify-content:space-around}.justify-content-lg-evenly{justify-content:space-evenly}.justify-items-lg-start{justify-items:start}.justify-items-lg-end{justify-items:end}.justify-items-lg-center{justify-items:center}.justify-items-lg-stretch{justify-items:stretch}.align-items-lg-start{align-items:flex-start}.align-items-lg-end{align-items:flex-end}.align-items-lg-center{align-items:center}.align-items-lg-baseline{align-items:baseline}.align-items-lg-stretch{align-items:stretch}.align-content-lg-start{align-content:flex-start}.align-content-lg-end{align-content:flex-end}.align-content-lg-center{align-content:center}.align-content-lg-between{align-content:space-between}.align-content-lg-around{align-content:space-around}.align-content-lg-stretch{align-content:stretch}.align-self-lg-auto{align-self:auto}.align-self-lg-start{align-self:flex-start}.align-self-lg-end{align-self:flex-end}.align-self-lg-center{align-self:center}.align-self-lg-baseline{align-self:baseline}.align-self-lg-stretch{align-self:stretch}.place-items-lg-start{place-items:start}.place-items-lg-end{place-items:end}.place-items-lg-center{place-items:center}.place-items-lg-stretch{place-items:stretch stretch}.grid-cols-lg-3{--bs-columns:3}.grid-cols-lg-4{--bs-columns:4}.grid-cols-lg-6{--bs-columns:6}.grid-cols-lg-fill{grid-column:1/-1}.grid-auto-flow-lg-row{grid-auto-flow:row}.grid-auto-flow-lg-column{grid-auto-flow:column}.grid-auto-flow-lg-dense{grid-auto-flow:dense}.order-lg-first{order:-1}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-last{order:6}.m-lg-0{margin:0}.m-lg-1{margin:.25rem}.m-lg-2{margin:.5rem}.m-lg-3{margin:1rem}.m-lg-4{margin:1.5rem}.m-lg-5{margin:3rem}.m-lg-auto{margin:auto}.mx-lg-0{margin-inline:0}.mx-lg-1{margin-inline:.25rem}.mx-lg-2{margin-inline:.5rem}.mx-lg-3{margin-inline:1rem}.mx-lg-4{margin-inline:1.5rem}.mx-lg-5{margin-inline:3rem}.mx-lg-auto{margin-inline:auto}.my-lg-0{margin-block:0}.my-lg-1{margin-block:.25rem}.my-lg-2{margin-block:.5rem}.my-lg-3{margin-block:1rem}.my-lg-4{margin-block:1.5rem}.my-lg-5{margin-block:3rem}.my-lg-auto{margin-block:auto}.mt-lg-0{margin-block-start:0}.mt-lg-1{margin-block-start:.25rem}.mt-lg-2{margin-block-start:.5rem}.mt-lg-3{margin-block-start:1rem}.mt-lg-4{margin-block-start:1.5rem}.mt-lg-5{margin-block-start:3rem}.mt-lg-auto{margin-block-start:auto}.me-lg-0{margin-inline-end:0}.me-lg-1{margin-inline-end:.25rem}.me-lg-2{margin-inline-end:.5rem}.me-lg-3{margin-inline-end:1rem}.me-lg-4{margin-inline-end:1.5rem}.me-lg-5{margin-inline-end:3rem}.me-lg-auto{margin-inline-end:auto}.mb-lg-0{margin-block-end:0}.mb-lg-1{margin-block-end:.25rem}.mb-lg-2{margin-block-end:.5rem}.mb-lg-3{margin-block-end:1rem}.mb-lg-4{margin-block-end:1.5rem}.mb-lg-5{margin-block-end:3rem}.mb-lg-auto{margin-block-end:auto}.ms-lg-0{margin-inline-start:0}.ms-lg-1{margin-inline-start:.25rem}.ms-lg-2{margin-inline-start:.5rem}.ms-lg-3{margin-inline-start:1rem}.ms-lg-4{margin-inline-start:1.5rem}.ms-lg-5{margin-inline-start:3rem}.ms-lg--1{margin-inline-start:-.25rem}.ms-lg--2{margin-inline-start:-.5rem}.ms-lg-auto{margin-inline-start:auto}.p-lg-0{padding:0}.p-lg-1{padding:.25rem}.p-lg-2{padding:.5rem}.p-lg-3{padding:1rem}.p-lg-4{padding:1.5rem}.p-lg-5{padding:3rem}.px-lg-0{padding-inline:0}.px-lg-1{padding-inline:.25rem}.px-lg-2{padding-inline:.5rem}.px-lg-3{padding-inline:1rem}.px-lg-4{padding-inline:1.5rem}.px-lg-5{padding-inline:3rem}.py-lg-0{padding-block:0}.py-lg-1{padding-block:.25rem}.py-lg-2{padding-block:.5rem}.py-lg-3{padding-block:1rem}.py-lg-4{padding-block:1.5rem}.py-lg-5{padding-block:3rem}.pt-lg-0{padding-block-start:0}.pt-lg-1{padding-block-start:.25rem}.pt-lg-2{padding-block-start:.5rem}.pt-lg-3{padding-block-start:1rem}.pt-lg-4{padding-block-start:1.5rem}.pt-lg-5{padding-block-start:3rem}.pe-lg-0{padding-inline-end:0}.pe-lg-1{padding-inline-end:.25rem}.pe-lg-2{padding-inline-end:.5rem}.pe-lg-3{padding-inline-end:1rem}.pe-lg-4{padding-inline-end:1.5rem}.pe-lg-5{padding-inline-end:3rem}.pb-lg-0{padding-block-end:0}.pb-lg-1{padding-block-end:.25rem}.pb-lg-2{padding-block-end:.5rem}.pb-lg-3{padding-block-end:1rem}.pb-lg-4{padding-block-end:1.5rem}.pb-lg-5{padding-block-end:3rem}.ps-lg-0{padding-inline-start:0}.ps-lg-1{padding-inline-start:.25rem}.ps-lg-2{padding-inline-start:.5rem}.ps-lg-3{padding-inline-start:1rem}.ps-lg-4{padding-inline-start:1.5rem}.ps-lg-5{padding-inline-start:3rem}.gap-lg-0{gap:0}.gap-lg-1{gap:.25rem}.gap-lg-2{gap:.5rem}.gap-lg-3{gap:1rem}.gap-lg-4{gap:1.5rem}.gap-lg-5{gap:3rem}.row-gap-lg-0{row-gap:0}.row-gap-lg-1{row-gap:.25rem}.row-gap-lg-2{row-gap:.5rem}.row-gap-lg-3{row-gap:1rem}.row-gap-lg-4{row-gap:1.5rem}.row-gap-lg-5{row-gap:3rem}.column-gap-lg-0{-moz-column-gap:0;column-gap:0}.column-gap-lg-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-lg-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-lg-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-lg-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-lg-5{-moz-column-gap:3rem;column-gap:3rem}}@media (width>=1280px){.d-xl-inline{display:inline}.d-xl-inline-block{display:inline-block}.d-xl-block{display:block}.d-xl-grid{display:grid}.d-xl-inline-grid{display:inline-grid}.d-xl-table{display:table}.d-xl-table-row{display:table-row}.d-xl-table-cell{display:table-cell}.d-xl-flex{display:flex}.d-xl-inline-flex{display:inline-flex}.d-xl-contents{display:contents}.d-xl-flow-root{display:flow-root}.d-xl-none{display:none}.flex-xl-fill{flex:auto}.flex-xl-row{flex-direction:row}.flex-xl-column{flex-direction:column}.flex-xl-row-reverse{flex-direction:row-reverse}.flex-xl-column-reverse{flex-direction:column-reverse}.flex-xl-grow-0{flex-grow:0}.flex-xl-grow-1{flex-grow:1}.flex-xl-shrink-0{flex-shrink:0}.flex-xl-shrink-1{flex-shrink:1}.flex-xl-wrap{flex-wrap:wrap}.flex-xl-nowrap{flex-wrap:nowrap}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-xl-start{justify-content:flex-start}.justify-content-xl-end{justify-content:flex-end}.justify-content-xl-center{justify-content:center}.justify-content-xl-between{justify-content:space-between}.justify-content-xl-around{justify-content:space-around}.justify-content-xl-evenly{justify-content:space-evenly}.justify-items-xl-start{justify-items:start}.justify-items-xl-end{justify-items:end}.justify-items-xl-center{justify-items:center}.justify-items-xl-stretch{justify-items:stretch}.align-items-xl-start{align-items:flex-start}.align-items-xl-end{align-items:flex-end}.align-items-xl-center{align-items:center}.align-items-xl-baseline{align-items:baseline}.align-items-xl-stretch{align-items:stretch}.align-content-xl-start{align-content:flex-start}.align-content-xl-end{align-content:flex-end}.align-content-xl-center{align-content:center}.align-content-xl-between{align-content:space-between}.align-content-xl-around{align-content:space-around}.align-content-xl-stretch{align-content:stretch}.align-self-xl-auto{align-self:auto}.align-self-xl-start{align-self:flex-start}.align-self-xl-end{align-self:flex-end}.align-self-xl-center{align-self:center}.align-self-xl-baseline{align-self:baseline}.align-self-xl-stretch{align-self:stretch}.place-items-xl-start{place-items:start}.place-items-xl-end{place-items:end}.place-items-xl-center{place-items:center}.place-items-xl-stretch{place-items:stretch stretch}.grid-cols-xl-3{--bs-columns:3}.grid-cols-xl-4{--bs-columns:4}.grid-cols-xl-6{--bs-columns:6}.grid-cols-xl-fill{grid-column:1/-1}.grid-auto-flow-xl-row{grid-auto-flow:row}.grid-auto-flow-xl-column{grid-auto-flow:column}.grid-auto-flow-xl-dense{grid-auto-flow:dense}.order-xl-first{order:-1}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-last{order:6}.m-xl-0{margin:0}.m-xl-1{margin:.25rem}.m-xl-2{margin:.5rem}.m-xl-3{margin:1rem}.m-xl-4{margin:1.5rem}.m-xl-5{margin:3rem}.m-xl-auto{margin:auto}.mx-xl-0{margin-inline:0}.mx-xl-1{margin-inline:.25rem}.mx-xl-2{margin-inline:.5rem}.mx-xl-3{margin-inline:1rem}.mx-xl-4{margin-inline:1.5rem}.mx-xl-5{margin-inline:3rem}.mx-xl-auto{margin-inline:auto}.my-xl-0{margin-block:0}.my-xl-1{margin-block:.25rem}.my-xl-2{margin-block:.5rem}.my-xl-3{margin-block:1rem}.my-xl-4{margin-block:1.5rem}.my-xl-5{margin-block:3rem}.my-xl-auto{margin-block:auto}.mt-xl-0{margin-block-start:0}.mt-xl-1{margin-block-start:.25rem}.mt-xl-2{margin-block-start:.5rem}.mt-xl-3{margin-block-start:1rem}.mt-xl-4{margin-block-start:1.5rem}.mt-xl-5{margin-block-start:3rem}.mt-xl-auto{margin-block-start:auto}.me-xl-0{margin-inline-end:0}.me-xl-1{margin-inline-end:.25rem}.me-xl-2{margin-inline-end:.5rem}.me-xl-3{margin-inline-end:1rem}.me-xl-4{margin-inline-end:1.5rem}.me-xl-5{margin-inline-end:3rem}.me-xl-auto{margin-inline-end:auto}.mb-xl-0{margin-block-end:0}.mb-xl-1{margin-block-end:.25rem}.mb-xl-2{margin-block-end:.5rem}.mb-xl-3{margin-block-end:1rem}.mb-xl-4{margin-block-end:1.5rem}.mb-xl-5{margin-block-end:3rem}.mb-xl-auto{margin-block-end:auto}.ms-xl-0{margin-inline-start:0}.ms-xl-1{margin-inline-start:.25rem}.ms-xl-2{margin-inline-start:.5rem}.ms-xl-3{margin-inline-start:1rem}.ms-xl-4{margin-inline-start:1.5rem}.ms-xl-5{margin-inline-start:3rem}.ms-xl--1{margin-inline-start:-.25rem}.ms-xl--2{margin-inline-start:-.5rem}.ms-xl-auto{margin-inline-start:auto}.p-xl-0{padding:0}.p-xl-1{padding:.25rem}.p-xl-2{padding:.5rem}.p-xl-3{padding:1rem}.p-xl-4{padding:1.5rem}.p-xl-5{padding:3rem}.px-xl-0{padding-inline:0}.px-xl-1{padding-inline:.25rem}.px-xl-2{padding-inline:.5rem}.px-xl-3{padding-inline:1rem}.px-xl-4{padding-inline:1.5rem}.px-xl-5{padding-inline:3rem}.py-xl-0{padding-block:0}.py-xl-1{padding-block:.25rem}.py-xl-2{padding-block:.5rem}.py-xl-3{padding-block:1rem}.py-xl-4{padding-block:1.5rem}.py-xl-5{padding-block:3rem}.pt-xl-0{padding-block-start:0}.pt-xl-1{padding-block-start:.25rem}.pt-xl-2{padding-block-start:.5rem}.pt-xl-3{padding-block-start:1rem}.pt-xl-4{padding-block-start:1.5rem}.pt-xl-5{padding-block-start:3rem}.pe-xl-0{padding-inline-end:0}.pe-xl-1{padding-inline-end:.25rem}.pe-xl-2{padding-inline-end:.5rem}.pe-xl-3{padding-inline-end:1rem}.pe-xl-4{padding-inline-end:1.5rem}.pe-xl-5{padding-inline-end:3rem}.pb-xl-0{padding-block-end:0}.pb-xl-1{padding-block-end:.25rem}.pb-xl-2{padding-block-end:.5rem}.pb-xl-3{padding-block-end:1rem}.pb-xl-4{padding-block-end:1.5rem}.pb-xl-5{padding-block-end:3rem}.ps-xl-0{padding-inline-start:0}.ps-xl-1{padding-inline-start:.25rem}.ps-xl-2{padding-inline-start:.5rem}.ps-xl-3{padding-inline-start:1rem}.ps-xl-4{padding-inline-start:1.5rem}.ps-xl-5{padding-inline-start:3rem}.gap-xl-0{gap:0}.gap-xl-1{gap:.25rem}.gap-xl-2{gap:.5rem}.gap-xl-3{gap:1rem}.gap-xl-4{gap:1.5rem}.gap-xl-5{gap:3rem}.row-gap-xl-0{row-gap:0}.row-gap-xl-1{row-gap:.25rem}.row-gap-xl-2{row-gap:.5rem}.row-gap-xl-3{row-gap:1rem}.row-gap-xl-4{row-gap:1.5rem}.row-gap-xl-5{row-gap:3rem}.column-gap-xl-0{-moz-column-gap:0;column-gap:0}.column-gap-xl-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-xl-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-xl-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-xl-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-xl-5{-moz-column-gap:3rem;column-gap:3rem}}@media (width>=1536px){.d-2xl-inline{display:inline}.d-2xl-inline-block{display:inline-block}.d-2xl-block{display:block}.d-2xl-grid{display:grid}.d-2xl-inline-grid{display:inline-grid}.d-2xl-table{display:table}.d-2xl-table-row{display:table-row}.d-2xl-table-cell{display:table-cell}.d-2xl-flex{display:flex}.d-2xl-inline-flex{display:inline-flex}.d-2xl-contents{display:contents}.d-2xl-flow-root{display:flow-root}.d-2xl-none{display:none}.flex-2xl-fill{flex:auto}.flex-2xl-row{flex-direction:row}.flex-2xl-column{flex-direction:column}.flex-2xl-row-reverse{flex-direction:row-reverse}.flex-2xl-column-reverse{flex-direction:column-reverse}.flex-2xl-grow-0{flex-grow:0}.flex-2xl-grow-1{flex-grow:1}.flex-2xl-shrink-0{flex-shrink:0}.flex-2xl-shrink-1{flex-shrink:1}.flex-2xl-wrap{flex-wrap:wrap}.flex-2xl-nowrap{flex-wrap:nowrap}.flex-2xl-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-2xl-start{justify-content:flex-start}.justify-content-2xl-end{justify-content:flex-end}.justify-content-2xl-center{justify-content:center}.justify-content-2xl-between{justify-content:space-between}.justify-content-2xl-around{justify-content:space-around}.justify-content-2xl-evenly{justify-content:space-evenly}.justify-items-2xl-start{justify-items:start}.justify-items-2xl-end{justify-items:end}.justify-items-2xl-center{justify-items:center}.justify-items-2xl-stretch{justify-items:stretch}.align-items-2xl-start{align-items:flex-start}.align-items-2xl-end{align-items:flex-end}.align-items-2xl-center{align-items:center}.align-items-2xl-baseline{align-items:baseline}.align-items-2xl-stretch{align-items:stretch}.align-content-2xl-start{align-content:flex-start}.align-content-2xl-end{align-content:flex-end}.align-content-2xl-center{align-content:center}.align-content-2xl-between{align-content:space-between}.align-content-2xl-around{align-content:space-around}.align-content-2xl-stretch{align-content:stretch}.align-self-2xl-auto{align-self:auto}.align-self-2xl-start{align-self:flex-start}.align-self-2xl-end{align-self:flex-end}.align-self-2xl-center{align-self:center}.align-self-2xl-baseline{align-self:baseline}.align-self-2xl-stretch{align-self:stretch}.place-items-2xl-start{place-items:start}.place-items-2xl-end{place-items:end}.place-items-2xl-center{place-items:center}.place-items-2xl-stretch{place-items:stretch stretch}.grid-cols-2xl-3{--bs-columns:3}.grid-cols-2xl-4{--bs-columns:4}.grid-cols-2xl-6{--bs-columns:6}.grid-cols-2xl-fill{grid-column:1/-1}.grid-auto-flow-2xl-row{grid-auto-flow:row}.grid-auto-flow-2xl-column{grid-auto-flow:column}.grid-auto-flow-2xl-dense{grid-auto-flow:dense}.order-2xl-first{order:-1}.order-2xl-0{order:0}.order-2xl-1{order:1}.order-2xl-2{order:2}.order-2xl-3{order:3}.order-2xl-4{order:4}.order-2xl-5{order:5}.order-2xl-last{order:6}.m-2xl-0{margin:0}.m-2xl-1{margin:.25rem}.m-2xl-2{margin:.5rem}.m-2xl-3{margin:1rem}.m-2xl-4{margin:1.5rem}.m-2xl-5{margin:3rem}.m-2xl-auto{margin:auto}.mx-2xl-0{margin-inline:0}.mx-2xl-1{margin-inline:.25rem}.mx-2xl-2{margin-inline:.5rem}.mx-2xl-3{margin-inline:1rem}.mx-2xl-4{margin-inline:1.5rem}.mx-2xl-5{margin-inline:3rem}.mx-2xl-auto{margin-inline:auto}.my-2xl-0{margin-block:0}.my-2xl-1{margin-block:.25rem}.my-2xl-2{margin-block:.5rem}.my-2xl-3{margin-block:1rem}.my-2xl-4{margin-block:1.5rem}.my-2xl-5{margin-block:3rem}.my-2xl-auto{margin-block:auto}.mt-2xl-0{margin-block-start:0}.mt-2xl-1{margin-block-start:.25rem}.mt-2xl-2{margin-block-start:.5rem}.mt-2xl-3{margin-block-start:1rem}.mt-2xl-4{margin-block-start:1.5rem}.mt-2xl-5{margin-block-start:3rem}.mt-2xl-auto{margin-block-start:auto}.me-2xl-0{margin-inline-end:0}.me-2xl-1{margin-inline-end:.25rem}.me-2xl-2{margin-inline-end:.5rem}.me-2xl-3{margin-inline-end:1rem}.me-2xl-4{margin-inline-end:1.5rem}.me-2xl-5{margin-inline-end:3rem}.me-2xl-auto{margin-inline-end:auto}.mb-2xl-0{margin-block-end:0}.mb-2xl-1{margin-block-end:.25rem}.mb-2xl-2{margin-block-end:.5rem}.mb-2xl-3{margin-block-end:1rem}.mb-2xl-4{margin-block-end:1.5rem}.mb-2xl-5{margin-block-end:3rem}.mb-2xl-auto{margin-block-end:auto}.ms-2xl-0{margin-inline-start:0}.ms-2xl-1{margin-inline-start:.25rem}.ms-2xl-2{margin-inline-start:.5rem}.ms-2xl-3{margin-inline-start:1rem}.ms-2xl-4{margin-inline-start:1.5rem}.ms-2xl-5{margin-inline-start:3rem}.ms-2xl--1{margin-inline-start:-.25rem}.ms-2xl--2{margin-inline-start:-.5rem}.ms-2xl-auto{margin-inline-start:auto}.p-2xl-0{padding:0}.p-2xl-1{padding:.25rem}.p-2xl-2{padding:.5rem}.p-2xl-3{padding:1rem}.p-2xl-4{padding:1.5rem}.p-2xl-5{padding:3rem}.px-2xl-0{padding-inline:0}.px-2xl-1{padding-inline:.25rem}.px-2xl-2{padding-inline:.5rem}.px-2xl-3{padding-inline:1rem}.px-2xl-4{padding-inline:1.5rem}.px-2xl-5{padding-inline:3rem}.py-2xl-0{padding-block:0}.py-2xl-1{padding-block:.25rem}.py-2xl-2{padding-block:.5rem}.py-2xl-3{padding-block:1rem}.py-2xl-4{padding-block:1.5rem}.py-2xl-5{padding-block:3rem}.pt-2xl-0{padding-block-start:0}.pt-2xl-1{padding-block-start:.25rem}.pt-2xl-2{padding-block-start:.5rem}.pt-2xl-3{padding-block-start:1rem}.pt-2xl-4{padding-block-start:1.5rem}.pt-2xl-5{padding-block-start:3rem}.pe-2xl-0{padding-inline-end:0}.pe-2xl-1{padding-inline-end:.25rem}.pe-2xl-2{padding-inline-end:.5rem}.pe-2xl-3{padding-inline-end:1rem}.pe-2xl-4{padding-inline-end:1.5rem}.pe-2xl-5{padding-inline-end:3rem}.pb-2xl-0{padding-block-end:0}.pb-2xl-1{padding-block-end:.25rem}.pb-2xl-2{padding-block-end:.5rem}.pb-2xl-3{padding-block-end:1rem}.pb-2xl-4{padding-block-end:1.5rem}.pb-2xl-5{padding-block-end:3rem}.ps-2xl-0{padding-inline-start:0}.ps-2xl-1{padding-inline-start:.25rem}.ps-2xl-2{padding-inline-start:.5rem}.ps-2xl-3{padding-inline-start:1rem}.ps-2xl-4{padding-inline-start:1.5rem}.ps-2xl-5{padding-inline-start:3rem}.gap-2xl-0{gap:0}.gap-2xl-1{gap:.25rem}.gap-2xl-2{gap:.5rem}.gap-2xl-3{gap:1rem}.gap-2xl-4{gap:1.5rem}.gap-2xl-5{gap:3rem}.row-gap-2xl-0{row-gap:0}.row-gap-2xl-1{row-gap:.25rem}.row-gap-2xl-2{row-gap:.5rem}.row-gap-2xl-3{row-gap:1rem}.row-gap-2xl-4{row-gap:1.5rem}.row-gap-2xl-5{row-gap:3rem}.column-gap-2xl-0{-moz-column-gap:0;column-gap:0}.column-gap-2xl-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-2xl-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-2xl-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-2xl-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-2xl-5{-moz-column-gap:3rem;column-gap:3rem}}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:1024px;--bs-breakpoint-xl:1280px;--bs-breakpoint-2xl:1536px}
 /*# sourceMappingURL=bootstrap-grid.min.css.map */
\ No newline at end of file
index d6e634e01a8dffb7c63aa52db8de738ffe0225de..960e1e5c187ccadec2df40924a560d10f0e53fcf 100644 (file)
@@ -1 +1 @@
-{"version":3,"sourceRoot":null,"mappings":"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","sources":["bootstrap-grid.css","../../scss/_banner.scss","../../scss/layout/_containers.scss","../../scss/layout/_breakpoints.scss","../../scss/_config.scss","../../scss/layout/_grid.scss","../../scss/mixins/_grid.scss","../../scss/utilities/_api.scss","../../scss/mixins/_utilities.scss","../../scss/bootstrap-grid.scss"],"sourcesContent":["/*!\n  * Bootstrap Grid v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n@layer layout {\n  .container,\n  .container-fluid,\n  .container-2xl,\n  .container-xl,\n  .container-lg,\n  .container-md,\n  .container-sm {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-inline: auto;\n  }\n  @media (width >= 576px) {\n    .container-sm, .container {\n      max-width: 540px;\n    }\n  }\n  @media (width >= 768px) {\n    .container-md, .container-sm, .container {\n      max-width: 720px;\n    }\n  }\n  @media (width >= 1024px) {\n    .container-lg, .container-md, .container-sm, .container {\n      max-width: 960px;\n    }\n  }\n  @media (width >= 1280px) {\n    .container-xl, .container-lg, .container-md, .container-sm, .container {\n      max-width: 1200px;\n    }\n  }\n  @media (width >= 1536px) {\n    .container-2xl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n      max-width: 1440px;\n    }\n  }\n}\n@layer layout {\n  .row {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    display: flex;\n    flex-wrap: wrap;\n    margin-inline: calc(-0.5 * var(--gutter-x));\n    margin-top: calc(-1 * var(--gutter-y));\n  }\n  .row > * {\n    flex-shrink: 0;\n    width: 100%;\n    max-width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-top: var(--gutter-y);\n  }\n  .col {\n    flex: 1 0 0;\n  }\n  .row-cols-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .row-cols-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .row-cols-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .row-cols-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .row-cols-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .row-cols-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n  .row-cols-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .col-1 {\n    flex: 0 0 auto;\n    width: 8.3333333333%;\n  }\n  .col-2 {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .col-4 {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .col-5 {\n    flex: 0 0 auto;\n    width: 41.6666666667%;\n  }\n  .col-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .col-7 {\n    flex: 0 0 auto;\n    width: 58.3333333333%;\n  }\n  .col-8 {\n    flex: 0 0 auto;\n    width: 66.6666666667%;\n  }\n  .col-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n  .col-10 {\n    flex: 0 0 auto;\n    width: 83.3333333333%;\n  }\n  .col-11 {\n    flex: 0 0 auto;\n    width: 91.6666666667%;\n  }\n  .col-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .offset-1 {\n    margin-inline-start: 8.3333333333%;\n  }\n  .offset-2 {\n    margin-inline-start: 16.6666666667%;\n  }\n  .offset-3 {\n    margin-inline-start: 25%;\n  }\n  .offset-4 {\n    margin-inline-start: 33.3333333333%;\n  }\n  .offset-5 {\n    margin-inline-start: 41.6666666667%;\n  }\n  .offset-6 {\n    margin-inline-start: 50%;\n  }\n  .offset-7 {\n    margin-inline-start: 58.3333333333%;\n  }\n  .offset-8 {\n    margin-inline-start: 66.6666666667%;\n  }\n  .offset-9 {\n    margin-inline-start: 75%;\n  }\n  .offset-10 {\n    margin-inline-start: 83.3333333333%;\n  }\n  .offset-11 {\n    margin-inline-start: 91.6666666667%;\n  }\n  .g--2,\n  .gx--2 {\n    --gutter-x: -0.5rem;\n  }\n  .g--2,\n  .gy--2 {\n    --gutter-y: -0.5rem;\n  }\n  .g--1,\n  .gx--1 {\n    --gutter-x: -0.25rem;\n  }\n  .g--1,\n  .gy--1 {\n    --gutter-y: -0.25rem;\n  }\n  .g-0,\n  .gx-0 {\n    --gutter-x: 0;\n  }\n  .g-0,\n  .gy-0 {\n    --gutter-y: 0;\n  }\n  .g-1,\n  .gx-1 {\n    --gutter-x: 0.25rem;\n  }\n  .g-1,\n  .gy-1 {\n    --gutter-y: 0.25rem;\n  }\n  .g-2,\n  .gx-2 {\n    --gutter-x: 0.5rem;\n  }\n  .g-2,\n  .gy-2 {\n    --gutter-y: 0.5rem;\n  }\n  .g-3,\n  .gx-3 {\n    --gutter-x: 1rem;\n  }\n  .g-3,\n  .gy-3 {\n    --gutter-y: 1rem;\n  }\n  .g-4,\n  .gx-4 {\n    --gutter-x: 1.5rem;\n  }\n  .g-4,\n  .gy-4 {\n    --gutter-y: 1.5rem;\n  }\n  .g-5,\n  .gx-5 {\n    --gutter-x: 3rem;\n  }\n  .g-5,\n  .gy-5 {\n    --gutter-y: 3rem;\n  }\n  @media (width >= 576px) {\n    .col-sm {\n      flex: 1 0 0;\n    }\n    .row-cols-sm-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-sm-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-sm-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-sm-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-sm-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-sm-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-sm-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-sm-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-sm-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-sm-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-sm-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-sm-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-sm-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-sm-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-sm-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-sm-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-sm-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-sm-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-sm-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-sm-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-sm-0 {\n      margin-inline-start: 0;\n    }\n    .offset-sm-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-sm-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-sm-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-sm-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-sm-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-sm-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-sm-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-sm-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-sm-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-sm-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-sm-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-sm--2,\n    .gx-sm--2 {\n      --gutter-x: -0.5rem;\n    }\n    .g-sm--2,\n    .gy-sm--2 {\n      --gutter-y: -0.5rem;\n    }\n    .g-sm--1,\n    .gx-sm--1 {\n      --gutter-x: -0.25rem;\n    }\n    .g-sm--1,\n    .gy-sm--1 {\n      --gutter-y: -0.25rem;\n    }\n    .g-sm-0,\n    .gx-sm-0 {\n      --gutter-x: 0;\n    }\n    .g-sm-0,\n    .gy-sm-0 {\n      --gutter-y: 0;\n    }\n    .g-sm-1,\n    .gx-sm-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-sm-1,\n    .gy-sm-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-sm-2,\n    .gx-sm-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-sm-2,\n    .gy-sm-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-sm-3,\n    .gx-sm-3 {\n      --gutter-x: 1rem;\n    }\n    .g-sm-3,\n    .gy-sm-3 {\n      --gutter-y: 1rem;\n    }\n    .g-sm-4,\n    .gx-sm-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-sm-4,\n    .gy-sm-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-sm-5,\n    .gx-sm-5 {\n      --gutter-x: 3rem;\n    }\n    .g-sm-5,\n    .gy-sm-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 768px) {\n    .col-md {\n      flex: 1 0 0;\n    }\n    .row-cols-md-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-md-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-md-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-md-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-md-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-md-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-md-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-md-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-md-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-md-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-md-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-md-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-md-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-md-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-md-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-md-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-md-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-md-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-md-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-md-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-md-0 {\n      margin-inline-start: 0;\n    }\n    .offset-md-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-md-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-md-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-md-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-md-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-md-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-md-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-md-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-md-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-md-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-md-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-md--2,\n    .gx-md--2 {\n      --gutter-x: -0.5rem;\n    }\n    .g-md--2,\n    .gy-md--2 {\n      --gutter-y: -0.5rem;\n    }\n    .g-md--1,\n    .gx-md--1 {\n      --gutter-x: -0.25rem;\n    }\n    .g-md--1,\n    .gy-md--1 {\n      --gutter-y: -0.25rem;\n    }\n    .g-md-0,\n    .gx-md-0 {\n      --gutter-x: 0;\n    }\n    .g-md-0,\n    .gy-md-0 {\n      --gutter-y: 0;\n    }\n    .g-md-1,\n    .gx-md-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-md-1,\n    .gy-md-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-md-2,\n    .gx-md-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-md-2,\n    .gy-md-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-md-3,\n    .gx-md-3 {\n      --gutter-x: 1rem;\n    }\n    .g-md-3,\n    .gy-md-3 {\n      --gutter-y: 1rem;\n    }\n    .g-md-4,\n    .gx-md-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-md-4,\n    .gy-md-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-md-5,\n    .gx-md-5 {\n      --gutter-x: 3rem;\n    }\n    .g-md-5,\n    .gy-md-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1024px) {\n    .col-lg {\n      flex: 1 0 0;\n    }\n    .row-cols-lg-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-lg-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-lg-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-lg-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-lg-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-lg-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-lg-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-lg-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-lg-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-lg-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-lg-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-lg-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-lg-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-lg-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-lg-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-lg-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-lg-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-lg-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-lg-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-lg-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-lg-0 {\n      margin-inline-start: 0;\n    }\n    .offset-lg-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-lg-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-lg-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-lg-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-lg-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-lg-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-lg-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-lg-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-lg-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-lg-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-lg-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-lg--2,\n    .gx-lg--2 {\n      --gutter-x: -0.5rem;\n    }\n    .g-lg--2,\n    .gy-lg--2 {\n      --gutter-y: -0.5rem;\n    }\n    .g-lg--1,\n    .gx-lg--1 {\n      --gutter-x: -0.25rem;\n    }\n    .g-lg--1,\n    .gy-lg--1 {\n      --gutter-y: -0.25rem;\n    }\n    .g-lg-0,\n    .gx-lg-0 {\n      --gutter-x: 0;\n    }\n    .g-lg-0,\n    .gy-lg-0 {\n      --gutter-y: 0;\n    }\n    .g-lg-1,\n    .gx-lg-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-lg-1,\n    .gy-lg-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-lg-2,\n    .gx-lg-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-lg-2,\n    .gy-lg-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-lg-3,\n    .gx-lg-3 {\n      --gutter-x: 1rem;\n    }\n    .g-lg-3,\n    .gy-lg-3 {\n      --gutter-y: 1rem;\n    }\n    .g-lg-4,\n    .gx-lg-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-lg-4,\n    .gy-lg-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-lg-5,\n    .gx-lg-5 {\n      --gutter-x: 3rem;\n    }\n    .g-lg-5,\n    .gy-lg-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1280px) {\n    .col-xl {\n      flex: 1 0 0;\n    }\n    .row-cols-xl-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-xl-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-xl-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-xl-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-xl-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-xl-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-xl-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-xl-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-xl-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-xl-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-xl-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-xl-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-xl-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-xl-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-xl-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-xl-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-xl-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-xl-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-xl-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-xl-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-xl-0 {\n      margin-inline-start: 0;\n    }\n    .offset-xl-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-xl-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-xl-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-xl-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-xl-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-xl-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-xl-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-xl-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-xl-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-xl-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-xl-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-xl--2,\n    .gx-xl--2 {\n      --gutter-x: -0.5rem;\n    }\n    .g-xl--2,\n    .gy-xl--2 {\n      --gutter-y: -0.5rem;\n    }\n    .g-xl--1,\n    .gx-xl--1 {\n      --gutter-x: -0.25rem;\n    }\n    .g-xl--1,\n    .gy-xl--1 {\n      --gutter-y: -0.25rem;\n    }\n    .g-xl-0,\n    .gx-xl-0 {\n      --gutter-x: 0;\n    }\n    .g-xl-0,\n    .gy-xl-0 {\n      --gutter-y: 0;\n    }\n    .g-xl-1,\n    .gx-xl-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-xl-1,\n    .gy-xl-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-xl-2,\n    .gx-xl-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-xl-2,\n    .gy-xl-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-xl-3,\n    .gx-xl-3 {\n      --gutter-x: 1rem;\n    }\n    .g-xl-3,\n    .gy-xl-3 {\n      --gutter-y: 1rem;\n    }\n    .g-xl-4,\n    .gx-xl-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-xl-4,\n    .gy-xl-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-xl-5,\n    .gx-xl-5 {\n      --gutter-x: 3rem;\n    }\n    .g-xl-5,\n    .gy-xl-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1536px) {\n    .col-2xl {\n      flex: 1 0 0;\n    }\n    .row-cols-2xl-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-2xl-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-2xl-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-2xl-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-2xl-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-2xl-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-2xl-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-2xl-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-2xl-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-2xl-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-2xl-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-2xl-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-2xl-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-2xl-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-2xl-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-2xl-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-2xl-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-2xl-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-2xl-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-2xl-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-2xl-0 {\n      margin-inline-start: 0;\n    }\n    .offset-2xl-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-2xl-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-2xl-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-2xl-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-2xl-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-2xl-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-2xl-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-2xl-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-2xl-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-2xl-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-2xl-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-2xl--2,\n    .gx-2xl--2 {\n      --gutter-x: -0.5rem;\n    }\n    .g-2xl--2,\n    .gy-2xl--2 {\n      --gutter-y: -0.5rem;\n    }\n    .g-2xl--1,\n    .gx-2xl--1 {\n      --gutter-x: -0.25rem;\n    }\n    .g-2xl--1,\n    .gy-2xl--1 {\n      --gutter-y: -0.25rem;\n    }\n    .g-2xl-0,\n    .gx-2xl-0 {\n      --gutter-x: 0;\n    }\n    .g-2xl-0,\n    .gy-2xl-0 {\n      --gutter-y: 0;\n    }\n    .g-2xl-1,\n    .gx-2xl-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-2xl-1,\n    .gy-2xl-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-2xl-2,\n    .gx-2xl-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-2xl-2,\n    .gy-2xl-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-2xl-3,\n    .gx-2xl-3 {\n      --gutter-x: 1rem;\n    }\n    .g-2xl-3,\n    .gy-2xl-3 {\n      --gutter-y: 1rem;\n    }\n    .g-2xl-4,\n    .gx-2xl-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-2xl-4,\n    .gy-2xl-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-2xl-5,\n    .gx-2xl-5 {\n      --gutter-x: 3rem;\n    }\n    .g-2xl-5,\n    .gy-2xl-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  .grid {\n    --columns: 12;\n    --rows: 1;\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-rows: repeat(var(--rows), 1fr);\n    grid-template-columns: repeat(var(--columns), 1fr);\n    gap: var(--gap);\n  }\n  .g-col-1 {\n    grid-column: auto/span 1;\n  }\n  .g-col-2 {\n    grid-column: auto/span 2;\n  }\n  .g-col-3 {\n    grid-column: auto/span 3;\n  }\n  .g-col-4 {\n    grid-column: auto/span 4;\n  }\n  .g-col-5 {\n    grid-column: auto/span 5;\n  }\n  .g-col-6 {\n    grid-column: auto/span 6;\n  }\n  .g-col-7 {\n    grid-column: auto/span 7;\n  }\n  .g-col-8 {\n    grid-column: auto/span 8;\n  }\n  .g-col-9 {\n    grid-column: auto/span 9;\n  }\n  .g-col-10 {\n    grid-column: auto/span 10;\n  }\n  .g-col-11 {\n    grid-column: auto/span 11;\n  }\n  .g-col-12 {\n    grid-column: auto/span 12;\n  }\n  .g-start-1 {\n    grid-column-start: 1;\n  }\n  .g-start-2 {\n    grid-column-start: 2;\n  }\n  .g-start-3 {\n    grid-column-start: 3;\n  }\n  .g-start-4 {\n    grid-column-start: 4;\n  }\n  .g-start-5 {\n    grid-column-start: 5;\n  }\n  .g-start-6 {\n    grid-column-start: 6;\n  }\n  .g-start-7 {\n    grid-column-start: 7;\n  }\n  .g-start-8 {\n    grid-column-start: 8;\n  }\n  .g-start-9 {\n    grid-column-start: 9;\n  }\n  .g-start-10 {\n    grid-column-start: 10;\n  }\n  .g-start-11 {\n    grid-column-start: 11;\n  }\n  @media (width >= 576px) {\n    .g-col-sm-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-sm-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-sm-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-sm-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-sm-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-sm-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-sm-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-sm-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-sm-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-sm-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-sm-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-sm-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-sm-1 {\n      grid-column-start: 1;\n    }\n    .g-start-sm-2 {\n      grid-column-start: 2;\n    }\n    .g-start-sm-3 {\n      grid-column-start: 3;\n    }\n    .g-start-sm-4 {\n      grid-column-start: 4;\n    }\n    .g-start-sm-5 {\n      grid-column-start: 5;\n    }\n    .g-start-sm-6 {\n      grid-column-start: 6;\n    }\n    .g-start-sm-7 {\n      grid-column-start: 7;\n    }\n    .g-start-sm-8 {\n      grid-column-start: 8;\n    }\n    .g-start-sm-9 {\n      grid-column-start: 9;\n    }\n    .g-start-sm-10 {\n      grid-column-start: 10;\n    }\n    .g-start-sm-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 768px) {\n    .g-col-md-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-md-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-md-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-md-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-md-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-md-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-md-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-md-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-md-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-md-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-md-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-md-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-md-1 {\n      grid-column-start: 1;\n    }\n    .g-start-md-2 {\n      grid-column-start: 2;\n    }\n    .g-start-md-3 {\n      grid-column-start: 3;\n    }\n    .g-start-md-4 {\n      grid-column-start: 4;\n    }\n    .g-start-md-5 {\n      grid-column-start: 5;\n    }\n    .g-start-md-6 {\n      grid-column-start: 6;\n    }\n    .g-start-md-7 {\n      grid-column-start: 7;\n    }\n    .g-start-md-8 {\n      grid-column-start: 8;\n    }\n    .g-start-md-9 {\n      grid-column-start: 9;\n    }\n    .g-start-md-10 {\n      grid-column-start: 10;\n    }\n    .g-start-md-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1024px) {\n    .g-col-lg-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-lg-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-lg-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-lg-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-lg-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-lg-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-lg-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-lg-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-lg-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-lg-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-lg-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-lg-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-lg-1 {\n      grid-column-start: 1;\n    }\n    .g-start-lg-2 {\n      grid-column-start: 2;\n    }\n    .g-start-lg-3 {\n      grid-column-start: 3;\n    }\n    .g-start-lg-4 {\n      grid-column-start: 4;\n    }\n    .g-start-lg-5 {\n      grid-column-start: 5;\n    }\n    .g-start-lg-6 {\n      grid-column-start: 6;\n    }\n    .g-start-lg-7 {\n      grid-column-start: 7;\n    }\n    .g-start-lg-8 {\n      grid-column-start: 8;\n    }\n    .g-start-lg-9 {\n      grid-column-start: 9;\n    }\n    .g-start-lg-10 {\n      grid-column-start: 10;\n    }\n    .g-start-lg-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1280px) {\n    .g-col-xl-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-xl-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-xl-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-xl-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-xl-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-xl-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-xl-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-xl-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-xl-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-xl-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-xl-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-xl-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-xl-1 {\n      grid-column-start: 1;\n    }\n    .g-start-xl-2 {\n      grid-column-start: 2;\n    }\n    .g-start-xl-3 {\n      grid-column-start: 3;\n    }\n    .g-start-xl-4 {\n      grid-column-start: 4;\n    }\n    .g-start-xl-5 {\n      grid-column-start: 5;\n    }\n    .g-start-xl-6 {\n      grid-column-start: 6;\n    }\n    .g-start-xl-7 {\n      grid-column-start: 7;\n    }\n    .g-start-xl-8 {\n      grid-column-start: 8;\n    }\n    .g-start-xl-9 {\n      grid-column-start: 9;\n    }\n    .g-start-xl-10 {\n      grid-column-start: 10;\n    }\n    .g-start-xl-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1536px) {\n    .g-col-2xl-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-2xl-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-2xl-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-2xl-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-2xl-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-2xl-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-2xl-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-2xl-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-2xl-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-2xl-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-2xl-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-2xl-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-2xl-1 {\n      grid-column-start: 1;\n    }\n    .g-start-2xl-2 {\n      grid-column-start: 2;\n    }\n    .g-start-2xl-3 {\n      grid-column-start: 3;\n    }\n    .g-start-2xl-4 {\n      grid-column-start: 4;\n    }\n    .g-start-2xl-5 {\n      grid-column-start: 5;\n    }\n    .g-start-2xl-6 {\n      grid-column-start: 6;\n    }\n    .g-start-2xl-7 {\n      grid-column-start: 7;\n    }\n    .g-start-2xl-8 {\n      grid-column-start: 8;\n    }\n    .g-start-2xl-9 {\n      grid-column-start: 9;\n    }\n    .g-start-2xl-10 {\n      grid-column-start: 10;\n    }\n    .g-start-2xl-11 {\n      grid-column-start: 11;\n    }\n  }\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n  .grid-fill {\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n}\n@layer utilities {\n  .d-inline {\n    display: inline;\n  }\n  .d-inline-block {\n    display: inline-block;\n  }\n  .d-block {\n    display: block;\n  }\n  .d-grid {\n    display: grid;\n  }\n  .d-inline-grid {\n    display: inline-grid;\n  }\n  .d-table {\n    display: table;\n  }\n  .d-table-row {\n    display: table-row;\n  }\n  .d-table-cell {\n    display: table-cell;\n  }\n  .d-flex {\n    display: flex;\n  }\n  .d-inline-flex {\n    display: inline-flex;\n  }\n  .d-contents {\n    display: contents;\n  }\n  .d-flow-root {\n    display: flow-root;\n  }\n  .d-none {\n    display: none;\n  }\n  .flex-fill {\n    flex: 1 1 auto;\n  }\n  .flex-row {\n    flex-direction: row;\n  }\n  .flex-column {\n    flex-direction: column;\n  }\n  .flex-row-reverse {\n    flex-direction: row-reverse;\n  }\n  .flex-column-reverse {\n    flex-direction: column-reverse;\n  }\n  .flex-grow-0 {\n    flex-grow: 0;\n  }\n  .flex-grow-1 {\n    flex-grow: 1;\n  }\n  .flex-shrink-0 {\n    flex-shrink: 0;\n  }\n  .flex-shrink-1 {\n    flex-shrink: 1;\n  }\n  .flex-wrap {\n    flex-wrap: wrap;\n  }\n  .flex-nowrap {\n    flex-wrap: nowrap;\n  }\n  .flex-wrap-reverse {\n    flex-wrap: wrap-reverse;\n  }\n  .justify-content-start {\n    justify-content: flex-start;\n  }\n  .justify-content-end {\n    justify-content: flex-end;\n  }\n  .justify-content-center {\n    justify-content: center;\n  }\n  .justify-content-between {\n    justify-content: space-between;\n  }\n  .justify-content-around {\n    justify-content: space-around;\n  }\n  .justify-content-evenly {\n    justify-content: space-evenly;\n  }\n  .justify-items-start {\n    justify-items: start;\n  }\n  .justify-items-end {\n    justify-items: end;\n  }\n  .justify-items-center {\n    justify-items: center;\n  }\n  .justify-items-stretch {\n    justify-items: stretch;\n  }\n  .align-items-start {\n    align-items: flex-start;\n  }\n  .align-items-end {\n    align-items: flex-end;\n  }\n  .align-items-center {\n    align-items: center;\n  }\n  .align-items-baseline {\n    align-items: baseline;\n  }\n  .align-items-stretch {\n    align-items: stretch;\n  }\n  .align-content-start {\n    align-content: flex-start;\n  }\n  .align-content-end {\n    align-content: flex-end;\n  }\n  .align-content-center {\n    align-content: center;\n  }\n  .align-content-between {\n    align-content: space-between;\n  }\n  .align-content-around {\n    align-content: space-around;\n  }\n  .align-content-stretch {\n    align-content: stretch;\n  }\n  .align-self-auto {\n    align-self: auto;\n  }\n  .align-self-start {\n    align-self: flex-start;\n  }\n  .align-self-end {\n    align-self: flex-end;\n  }\n  .align-self-center {\n    align-self: center;\n  }\n  .align-self-baseline {\n    align-self: baseline;\n  }\n  .align-self-stretch {\n    align-self: stretch;\n  }\n  .place-items-start {\n    place-items: start;\n  }\n  .place-items-end {\n    place-items: end;\n  }\n  .place-items-center {\n    place-items: center;\n  }\n  .place-items-stretch {\n    place-items: stretch;\n  }\n  .order-first {\n    order: -1;\n  }\n  .order-0 {\n    order: 0;\n  }\n  .order-1 {\n    order: 1;\n  }\n  .order-2 {\n    order: 2;\n  }\n  .order-3 {\n    order: 3;\n  }\n  .order-4 {\n    order: 4;\n  }\n  .order-5 {\n    order: 5;\n  }\n  .order-last {\n    order: 6;\n  }\n  .m--2 {\n    margin: -0.5rem;\n  }\n  .m--1 {\n    margin: -0.25rem;\n  }\n  .m-0 {\n    margin: 0;\n  }\n  .m-1 {\n    margin: 0.25rem;\n  }\n  .m-2 {\n    margin: 0.5rem;\n  }\n  .m-3 {\n    margin: 1rem;\n  }\n  .m-4 {\n    margin: 1.5rem;\n  }\n  .m-5 {\n    margin: 3rem;\n  }\n  .m-auto {\n    margin: auto;\n  }\n  .mx--2 {\n    margin-inline: -0.5rem;\n  }\n  .mx--1 {\n    margin-inline: -0.25rem;\n  }\n  .mx-0 {\n    margin-inline: 0;\n  }\n  .mx-1 {\n    margin-inline: 0.25rem;\n  }\n  .mx-2 {\n    margin-inline: 0.5rem;\n  }\n  .mx-3 {\n    margin-inline: 1rem;\n  }\n  .mx-4 {\n    margin-inline: 1.5rem;\n  }\n  .mx-5 {\n    margin-inline: 3rem;\n  }\n  .mx-auto {\n    margin-inline: auto;\n  }\n  .my--2 {\n    margin-block: -0.5rem;\n  }\n  .my--1 {\n    margin-block: -0.25rem;\n  }\n  .my-0 {\n    margin-block: 0;\n  }\n  .my-1 {\n    margin-block: 0.25rem;\n  }\n  .my-2 {\n    margin-block: 0.5rem;\n  }\n  .my-3 {\n    margin-block: 1rem;\n  }\n  .my-4 {\n    margin-block: 1.5rem;\n  }\n  .my-5 {\n    margin-block: 3rem;\n  }\n  .my-auto {\n    margin-block: auto;\n  }\n  .mt--2 {\n    margin-block-start: -0.5rem;\n  }\n  .mt--1 {\n    margin-block-start: -0.25rem;\n  }\n  .mt-0 {\n    margin-block-start: 0;\n  }\n  .mt-1 {\n    margin-block-start: 0.25rem;\n  }\n  .mt-2 {\n    margin-block-start: 0.5rem;\n  }\n  .mt-3 {\n    margin-block-start: 1rem;\n  }\n  .mt-4 {\n    margin-block-start: 1.5rem;\n  }\n  .mt-5 {\n    margin-block-start: 3rem;\n  }\n  .mt-auto {\n    margin-block-start: auto;\n  }\n  .me--2 {\n    margin-inline-end: -0.5rem;\n  }\n  .me--1 {\n    margin-inline-end: -0.25rem;\n  }\n  .me-0 {\n    margin-inline-end: 0;\n  }\n  .me-1 {\n    margin-inline-end: 0.25rem;\n  }\n  .me-2 {\n    margin-inline-end: 0.5rem;\n  }\n  .me-3 {\n    margin-inline-end: 1rem;\n  }\n  .me-4 {\n    margin-inline-end: 1.5rem;\n  }\n  .me-5 {\n    margin-inline-end: 3rem;\n  }\n  .me-auto {\n    margin-inline-end: auto;\n  }\n  .mb--2 {\n    margin-block-end: -0.5rem;\n  }\n  .mb--1 {\n    margin-block-end: -0.25rem;\n  }\n  .mb-0 {\n    margin-block-end: 0;\n  }\n  .mb-1 {\n    margin-block-end: 0.25rem;\n  }\n  .mb-2 {\n    margin-block-end: 0.5rem;\n  }\n  .mb-3 {\n    margin-block-end: 1rem;\n  }\n  .mb-4 {\n    margin-block-end: 1.5rem;\n  }\n  .mb-5 {\n    margin-block-end: 3rem;\n  }\n  .mb-auto {\n    margin-block-end: auto;\n  }\n  .ms--2 {\n    margin-inline-start: -0.5rem;\n  }\n  .ms--1 {\n    margin-inline-start: -0.25rem;\n  }\n  .ms-0 {\n    margin-inline-start: 0;\n  }\n  .ms-1 {\n    margin-inline-start: 0.25rem;\n  }\n  .ms-2 {\n    margin-inline-start: 0.5rem;\n  }\n  .ms-3 {\n    margin-inline-start: 1rem;\n  }\n  .ms-4 {\n    margin-inline-start: 1.5rem;\n  }\n  .ms-5 {\n    margin-inline-start: 3rem;\n  }\n  .ms-auto {\n    margin-inline-start: auto;\n  }\n  .p--2 {\n    padding: -0.5rem;\n  }\n  .p--1 {\n    padding: -0.25rem;\n  }\n  .p-0 {\n    padding: 0;\n  }\n  .p-1 {\n    padding: 0.25rem;\n  }\n  .p-2 {\n    padding: 0.5rem;\n  }\n  .p-3 {\n    padding: 1rem;\n  }\n  .p-4 {\n    padding: 1.5rem;\n  }\n  .p-5 {\n    padding: 3rem;\n  }\n  .px--2 {\n    padding-inline: -0.5rem;\n  }\n  .px--1 {\n    padding-inline: -0.25rem;\n  }\n  .px-0 {\n    padding-inline: 0;\n  }\n  .px-1 {\n    padding-inline: 0.25rem;\n  }\n  .px-2 {\n    padding-inline: 0.5rem;\n  }\n  .px-3 {\n    padding-inline: 1rem;\n  }\n  .px-4 {\n    padding-inline: 1.5rem;\n  }\n  .px-5 {\n    padding-inline: 3rem;\n  }\n  .py--2 {\n    padding-block: -0.5rem;\n  }\n  .py--1 {\n    padding-block: -0.25rem;\n  }\n  .py-0 {\n    padding-block: 0;\n  }\n  .py-1 {\n    padding-block: 0.25rem;\n  }\n  .py-2 {\n    padding-block: 0.5rem;\n  }\n  .py-3 {\n    padding-block: 1rem;\n  }\n  .py-4 {\n    padding-block: 1.5rem;\n  }\n  .py-5 {\n    padding-block: 3rem;\n  }\n  .pt--2 {\n    padding-block-start: -0.5rem;\n  }\n  .pt--1 {\n    padding-block-start: -0.25rem;\n  }\n  .pt-0 {\n    padding-block-start: 0;\n  }\n  .pt-1 {\n    padding-block-start: 0.25rem;\n  }\n  .pt-2 {\n    padding-block-start: 0.5rem;\n  }\n  .pt-3 {\n    padding-block-start: 1rem;\n  }\n  .pt-4 {\n    padding-block-start: 1.5rem;\n  }\n  .pt-5 {\n    padding-block-start: 3rem;\n  }\n  .pe--2 {\n    padding-inline-end: -0.5rem;\n  }\n  .pe--1 {\n    padding-inline-end: -0.25rem;\n  }\n  .pe-0 {\n    padding-inline-end: 0;\n  }\n  .pe-1 {\n    padding-inline-end: 0.25rem;\n  }\n  .pe-2 {\n    padding-inline-end: 0.5rem;\n  }\n  .pe-3 {\n    padding-inline-end: 1rem;\n  }\n  .pe-4 {\n    padding-inline-end: 1.5rem;\n  }\n  .pe-5 {\n    padding-inline-end: 3rem;\n  }\n  .pb--2 {\n    padding-block-end: -0.5rem;\n  }\n  .pb--1 {\n    padding-block-end: -0.25rem;\n  }\n  .pb-0 {\n    padding-block-end: 0;\n  }\n  .pb-1 {\n    padding-block-end: 0.25rem;\n  }\n  .pb-2 {\n    padding-block-end: 0.5rem;\n  }\n  .pb-3 {\n    padding-block-end: 1rem;\n  }\n  .pb-4 {\n    padding-block-end: 1.5rem;\n  }\n  .pb-5 {\n    padding-block-end: 3rem;\n  }\n  .ps--2 {\n    padding-inline-start: -0.5rem;\n  }\n  .ps--1 {\n    padding-inline-start: -0.25rem;\n  }\n  .ps-0 {\n    padding-inline-start: 0;\n  }\n  .ps-1 {\n    padding-inline-start: 0.25rem;\n  }\n  .ps-2 {\n    padding-inline-start: 0.5rem;\n  }\n  .ps-3 {\n    padding-inline-start: 1rem;\n  }\n  .ps-4 {\n    padding-inline-start: 1.5rem;\n  }\n  .ps-5 {\n    padding-inline-start: 3rem;\n  }\n  @media (width >= 576px) {\n    .d-sm-inline {\n      display: inline;\n    }\n    .d-sm-inline-block {\n      display: inline-block;\n    }\n    .d-sm-block {\n      display: block;\n    }\n    .d-sm-grid {\n      display: grid;\n    }\n    .d-sm-inline-grid {\n      display: inline-grid;\n    }\n    .d-sm-table {\n      display: table;\n    }\n    .d-sm-table-row {\n      display: table-row;\n    }\n    .d-sm-table-cell {\n      display: table-cell;\n    }\n    .d-sm-flex {\n      display: flex;\n    }\n    .d-sm-inline-flex {\n      display: inline-flex;\n    }\n    .d-sm-contents {\n      display: contents;\n    }\n    .d-sm-flow-root {\n      display: flow-root;\n    }\n    .d-sm-none {\n      display: none;\n    }\n    .flex-sm-fill {\n      flex: 1 1 auto;\n    }\n    .flex-sm-row {\n      flex-direction: row;\n    }\n    .flex-sm-column {\n      flex-direction: column;\n    }\n    .flex-sm-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-sm-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-sm-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-sm-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-sm-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-sm-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-sm-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-sm-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-sm-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-sm-start {\n      justify-content: flex-start;\n    }\n    .justify-content-sm-end {\n      justify-content: flex-end;\n    }\n    .justify-content-sm-center {\n      justify-content: center;\n    }\n    .justify-content-sm-between {\n      justify-content: space-between;\n    }\n    .justify-content-sm-around {\n      justify-content: space-around;\n    }\n    .justify-content-sm-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-sm-start {\n      justify-items: start;\n    }\n    .justify-items-sm-end {\n      justify-items: end;\n    }\n    .justify-items-sm-center {\n      justify-items: center;\n    }\n    .justify-items-sm-stretch {\n      justify-items: stretch;\n    }\n    .align-items-sm-start {\n      align-items: flex-start;\n    }\n    .align-items-sm-end {\n      align-items: flex-end;\n    }\n    .align-items-sm-center {\n      align-items: center;\n    }\n    .align-items-sm-baseline {\n      align-items: baseline;\n    }\n    .align-items-sm-stretch {\n      align-items: stretch;\n    }\n    .align-content-sm-start {\n      align-content: flex-start;\n    }\n    .align-content-sm-end {\n      align-content: flex-end;\n    }\n    .align-content-sm-center {\n      align-content: center;\n    }\n    .align-content-sm-between {\n      align-content: space-between;\n    }\n    .align-content-sm-around {\n      align-content: space-around;\n    }\n    .align-content-sm-stretch {\n      align-content: stretch;\n    }\n    .align-self-sm-auto {\n      align-self: auto;\n    }\n    .align-self-sm-start {\n      align-self: flex-start;\n    }\n    .align-self-sm-end {\n      align-self: flex-end;\n    }\n    .align-self-sm-center {\n      align-self: center;\n    }\n    .align-self-sm-baseline {\n      align-self: baseline;\n    }\n    .align-self-sm-stretch {\n      align-self: stretch;\n    }\n    .place-items-sm-start {\n      place-items: start;\n    }\n    .place-items-sm-end {\n      place-items: end;\n    }\n    .place-items-sm-center {\n      place-items: center;\n    }\n    .place-items-sm-stretch {\n      place-items: stretch;\n    }\n    .order-sm-first {\n      order: -1;\n    }\n    .order-sm-0 {\n      order: 0;\n    }\n    .order-sm-1 {\n      order: 1;\n    }\n    .order-sm-2 {\n      order: 2;\n    }\n    .order-sm-3 {\n      order: 3;\n    }\n    .order-sm-4 {\n      order: 4;\n    }\n    .order-sm-5 {\n      order: 5;\n    }\n    .order-sm-last {\n      order: 6;\n    }\n    .m-sm--2 {\n      margin: -0.5rem;\n    }\n    .m-sm--1 {\n      margin: -0.25rem;\n    }\n    .m-sm-0 {\n      margin: 0;\n    }\n    .m-sm-1 {\n      margin: 0.25rem;\n    }\n    .m-sm-2 {\n      margin: 0.5rem;\n    }\n    .m-sm-3 {\n      margin: 1rem;\n    }\n    .m-sm-4 {\n      margin: 1.5rem;\n    }\n    .m-sm-5 {\n      margin: 3rem;\n    }\n    .m-sm-auto {\n      margin: auto;\n    }\n    .mx-sm--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-sm--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-sm-0 {\n      margin-inline: 0;\n    }\n    .mx-sm-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-sm-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-sm-3 {\n      margin-inline: 1rem;\n    }\n    .mx-sm-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-sm-5 {\n      margin-inline: 3rem;\n    }\n    .mx-sm-auto {\n      margin-inline: auto;\n    }\n    .my-sm--2 {\n      margin-block: -0.5rem;\n    }\n    .my-sm--1 {\n      margin-block: -0.25rem;\n    }\n    .my-sm-0 {\n      margin-block: 0;\n    }\n    .my-sm-1 {\n      margin-block: 0.25rem;\n    }\n    .my-sm-2 {\n      margin-block: 0.5rem;\n    }\n    .my-sm-3 {\n      margin-block: 1rem;\n    }\n    .my-sm-4 {\n      margin-block: 1.5rem;\n    }\n    .my-sm-5 {\n      margin-block: 3rem;\n    }\n    .my-sm-auto {\n      margin-block: auto;\n    }\n    .mt-sm--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-sm--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-sm-0 {\n      margin-block-start: 0;\n    }\n    .mt-sm-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-sm-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-sm-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-sm-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-sm-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-sm-auto {\n      margin-block-start: auto;\n    }\n    .me-sm--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-sm--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-sm-0 {\n      margin-inline-end: 0;\n    }\n    .me-sm-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-sm-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-sm-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-sm-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-sm-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-sm-auto {\n      margin-inline-end: auto;\n    }\n    .mb-sm--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-sm--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-sm-0 {\n      margin-block-end: 0;\n    }\n    .mb-sm-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-sm-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-sm-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-sm-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-sm-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-sm-auto {\n      margin-block-end: auto;\n    }\n    .ms-sm--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-sm--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-sm-0 {\n      margin-inline-start: 0;\n    }\n    .ms-sm-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-sm-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-sm-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-sm-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-sm-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-sm-auto {\n      margin-inline-start: auto;\n    }\n    .p-sm--2 {\n      padding: -0.5rem;\n    }\n    .p-sm--1 {\n      padding: -0.25rem;\n    }\n    .p-sm-0 {\n      padding: 0;\n    }\n    .p-sm-1 {\n      padding: 0.25rem;\n    }\n    .p-sm-2 {\n      padding: 0.5rem;\n    }\n    .p-sm-3 {\n      padding: 1rem;\n    }\n    .p-sm-4 {\n      padding: 1.5rem;\n    }\n    .p-sm-5 {\n      padding: 3rem;\n    }\n    .px-sm--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-sm--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-sm-0 {\n      padding-inline: 0;\n    }\n    .px-sm-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-sm-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-sm-3 {\n      padding-inline: 1rem;\n    }\n    .px-sm-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-sm-5 {\n      padding-inline: 3rem;\n    }\n    .py-sm--2 {\n      padding-block: -0.5rem;\n    }\n    .py-sm--1 {\n      padding-block: -0.25rem;\n    }\n    .py-sm-0 {\n      padding-block: 0;\n    }\n    .py-sm-1 {\n      padding-block: 0.25rem;\n    }\n    .py-sm-2 {\n      padding-block: 0.5rem;\n    }\n    .py-sm-3 {\n      padding-block: 1rem;\n    }\n    .py-sm-4 {\n      padding-block: 1.5rem;\n    }\n    .py-sm-5 {\n      padding-block: 3rem;\n    }\n    .pt-sm--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-sm--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-sm-0 {\n      padding-block-start: 0;\n    }\n    .pt-sm-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-sm-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-sm-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-sm-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-sm-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-sm--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-sm--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-sm-0 {\n      padding-inline-end: 0;\n    }\n    .pe-sm-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-sm-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-sm-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-sm-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-sm-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-sm--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-sm--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-sm-0 {\n      padding-block-end: 0;\n    }\n    .pb-sm-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-sm-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-sm-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-sm-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-sm-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-sm--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-sm--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-sm-0 {\n      padding-inline-start: 0;\n    }\n    .ps-sm-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-sm-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-sm-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-sm-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-sm-5 {\n      padding-inline-start: 3rem;\n    }\n  }\n  @media (width >= 768px) {\n    .d-md-inline {\n      display: inline;\n    }\n    .d-md-inline-block {\n      display: inline-block;\n    }\n    .d-md-block {\n      display: block;\n    }\n    .d-md-grid {\n      display: grid;\n    }\n    .d-md-inline-grid {\n      display: inline-grid;\n    }\n    .d-md-table {\n      display: table;\n    }\n    .d-md-table-row {\n      display: table-row;\n    }\n    .d-md-table-cell {\n      display: table-cell;\n    }\n    .d-md-flex {\n      display: flex;\n    }\n    .d-md-inline-flex {\n      display: inline-flex;\n    }\n    .d-md-contents {\n      display: contents;\n    }\n    .d-md-flow-root {\n      display: flow-root;\n    }\n    .d-md-none {\n      display: none;\n    }\n    .flex-md-fill {\n      flex: 1 1 auto;\n    }\n    .flex-md-row {\n      flex-direction: row;\n    }\n    .flex-md-column {\n      flex-direction: column;\n    }\n    .flex-md-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-md-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-md-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-md-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-md-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-md-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-md-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-md-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-md-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-md-start {\n      justify-content: flex-start;\n    }\n    .justify-content-md-end {\n      justify-content: flex-end;\n    }\n    .justify-content-md-center {\n      justify-content: center;\n    }\n    .justify-content-md-between {\n      justify-content: space-between;\n    }\n    .justify-content-md-around {\n      justify-content: space-around;\n    }\n    .justify-content-md-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-md-start {\n      justify-items: start;\n    }\n    .justify-items-md-end {\n      justify-items: end;\n    }\n    .justify-items-md-center {\n      justify-items: center;\n    }\n    .justify-items-md-stretch {\n      justify-items: stretch;\n    }\n    .align-items-md-start {\n      align-items: flex-start;\n    }\n    .align-items-md-end {\n      align-items: flex-end;\n    }\n    .align-items-md-center {\n      align-items: center;\n    }\n    .align-items-md-baseline {\n      align-items: baseline;\n    }\n    .align-items-md-stretch {\n      align-items: stretch;\n    }\n    .align-content-md-start {\n      align-content: flex-start;\n    }\n    .align-content-md-end {\n      align-content: flex-end;\n    }\n    .align-content-md-center {\n      align-content: center;\n    }\n    .align-content-md-between {\n      align-content: space-between;\n    }\n    .align-content-md-around {\n      align-content: space-around;\n    }\n    .align-content-md-stretch {\n      align-content: stretch;\n    }\n    .align-self-md-auto {\n      align-self: auto;\n    }\n    .align-self-md-start {\n      align-self: flex-start;\n    }\n    .align-self-md-end {\n      align-self: flex-end;\n    }\n    .align-self-md-center {\n      align-self: center;\n    }\n    .align-self-md-baseline {\n      align-self: baseline;\n    }\n    .align-self-md-stretch {\n      align-self: stretch;\n    }\n    .place-items-md-start {\n      place-items: start;\n    }\n    .place-items-md-end {\n      place-items: end;\n    }\n    .place-items-md-center {\n      place-items: center;\n    }\n    .place-items-md-stretch {\n      place-items: stretch;\n    }\n    .order-md-first {\n      order: -1;\n    }\n    .order-md-0 {\n      order: 0;\n    }\n    .order-md-1 {\n      order: 1;\n    }\n    .order-md-2 {\n      order: 2;\n    }\n    .order-md-3 {\n      order: 3;\n    }\n    .order-md-4 {\n      order: 4;\n    }\n    .order-md-5 {\n      order: 5;\n    }\n    .order-md-last {\n      order: 6;\n    }\n    .m-md--2 {\n      margin: -0.5rem;\n    }\n    .m-md--1 {\n      margin: -0.25rem;\n    }\n    .m-md-0 {\n      margin: 0;\n    }\n    .m-md-1 {\n      margin: 0.25rem;\n    }\n    .m-md-2 {\n      margin: 0.5rem;\n    }\n    .m-md-3 {\n      margin: 1rem;\n    }\n    .m-md-4 {\n      margin: 1.5rem;\n    }\n    .m-md-5 {\n      margin: 3rem;\n    }\n    .m-md-auto {\n      margin: auto;\n    }\n    .mx-md--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-md--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-md-0 {\n      margin-inline: 0;\n    }\n    .mx-md-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-md-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-md-3 {\n      margin-inline: 1rem;\n    }\n    .mx-md-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-md-5 {\n      margin-inline: 3rem;\n    }\n    .mx-md-auto {\n      margin-inline: auto;\n    }\n    .my-md--2 {\n      margin-block: -0.5rem;\n    }\n    .my-md--1 {\n      margin-block: -0.25rem;\n    }\n    .my-md-0 {\n      margin-block: 0;\n    }\n    .my-md-1 {\n      margin-block: 0.25rem;\n    }\n    .my-md-2 {\n      margin-block: 0.5rem;\n    }\n    .my-md-3 {\n      margin-block: 1rem;\n    }\n    .my-md-4 {\n      margin-block: 1.5rem;\n    }\n    .my-md-5 {\n      margin-block: 3rem;\n    }\n    .my-md-auto {\n      margin-block: auto;\n    }\n    .mt-md--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-md--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-md-0 {\n      margin-block-start: 0;\n    }\n    .mt-md-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-md-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-md-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-md-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-md-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-md-auto {\n      margin-block-start: auto;\n    }\n    .me-md--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-md--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-md-0 {\n      margin-inline-end: 0;\n    }\n    .me-md-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-md-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-md-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-md-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-md-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-md-auto {\n      margin-inline-end: auto;\n    }\n    .mb-md--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-md--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-md-0 {\n      margin-block-end: 0;\n    }\n    .mb-md-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-md-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-md-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-md-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-md-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-md-auto {\n      margin-block-end: auto;\n    }\n    .ms-md--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-md--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-md-0 {\n      margin-inline-start: 0;\n    }\n    .ms-md-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-md-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-md-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-md-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-md-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-md-auto {\n      margin-inline-start: auto;\n    }\n    .p-md--2 {\n      padding: -0.5rem;\n    }\n    .p-md--1 {\n      padding: -0.25rem;\n    }\n    .p-md-0 {\n      padding: 0;\n    }\n    .p-md-1 {\n      padding: 0.25rem;\n    }\n    .p-md-2 {\n      padding: 0.5rem;\n    }\n    .p-md-3 {\n      padding: 1rem;\n    }\n    .p-md-4 {\n      padding: 1.5rem;\n    }\n    .p-md-5 {\n      padding: 3rem;\n    }\n    .px-md--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-md--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-md-0 {\n      padding-inline: 0;\n    }\n    .px-md-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-md-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-md-3 {\n      padding-inline: 1rem;\n    }\n    .px-md-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-md-5 {\n      padding-inline: 3rem;\n    }\n    .py-md--2 {\n      padding-block: -0.5rem;\n    }\n    .py-md--1 {\n      padding-block: -0.25rem;\n    }\n    .py-md-0 {\n      padding-block: 0;\n    }\n    .py-md-1 {\n      padding-block: 0.25rem;\n    }\n    .py-md-2 {\n      padding-block: 0.5rem;\n    }\n    .py-md-3 {\n      padding-block: 1rem;\n    }\n    .py-md-4 {\n      padding-block: 1.5rem;\n    }\n    .py-md-5 {\n      padding-block: 3rem;\n    }\n    .pt-md--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-md--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-md-0 {\n      padding-block-start: 0;\n    }\n    .pt-md-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-md-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-md-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-md-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-md-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-md--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-md--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-md-0 {\n      padding-inline-end: 0;\n    }\n    .pe-md-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-md-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-md-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-md-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-md-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-md--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-md--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-md-0 {\n      padding-block-end: 0;\n    }\n    .pb-md-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-md-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-md-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-md-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-md-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-md--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-md--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-md-0 {\n      padding-inline-start: 0;\n    }\n    .ps-md-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-md-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-md-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-md-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-md-5 {\n      padding-inline-start: 3rem;\n    }\n  }\n  @media (width >= 1024px) {\n    .d-lg-inline {\n      display: inline;\n    }\n    .d-lg-inline-block {\n      display: inline-block;\n    }\n    .d-lg-block {\n      display: block;\n    }\n    .d-lg-grid {\n      display: grid;\n    }\n    .d-lg-inline-grid {\n      display: inline-grid;\n    }\n    .d-lg-table {\n      display: table;\n    }\n    .d-lg-table-row {\n      display: table-row;\n    }\n    .d-lg-table-cell {\n      display: table-cell;\n    }\n    .d-lg-flex {\n      display: flex;\n    }\n    .d-lg-inline-flex {\n      display: inline-flex;\n    }\n    .d-lg-contents {\n      display: contents;\n    }\n    .d-lg-flow-root {\n      display: flow-root;\n    }\n    .d-lg-none {\n      display: none;\n    }\n    .flex-lg-fill {\n      flex: 1 1 auto;\n    }\n    .flex-lg-row {\n      flex-direction: row;\n    }\n    .flex-lg-column {\n      flex-direction: column;\n    }\n    .flex-lg-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-lg-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-lg-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-lg-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-lg-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-lg-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-lg-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-lg-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-lg-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-lg-start {\n      justify-content: flex-start;\n    }\n    .justify-content-lg-end {\n      justify-content: flex-end;\n    }\n    .justify-content-lg-center {\n      justify-content: center;\n    }\n    .justify-content-lg-between {\n      justify-content: space-between;\n    }\n    .justify-content-lg-around {\n      justify-content: space-around;\n    }\n    .justify-content-lg-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-lg-start {\n      justify-items: start;\n    }\n    .justify-items-lg-end {\n      justify-items: end;\n    }\n    .justify-items-lg-center {\n      justify-items: center;\n    }\n    .justify-items-lg-stretch {\n      justify-items: stretch;\n    }\n    .align-items-lg-start {\n      align-items: flex-start;\n    }\n    .align-items-lg-end {\n      align-items: flex-end;\n    }\n    .align-items-lg-center {\n      align-items: center;\n    }\n    .align-items-lg-baseline {\n      align-items: baseline;\n    }\n    .align-items-lg-stretch {\n      align-items: stretch;\n    }\n    .align-content-lg-start {\n      align-content: flex-start;\n    }\n    .align-content-lg-end {\n      align-content: flex-end;\n    }\n    .align-content-lg-center {\n      align-content: center;\n    }\n    .align-content-lg-between {\n      align-content: space-between;\n    }\n    .align-content-lg-around {\n      align-content: space-around;\n    }\n    .align-content-lg-stretch {\n      align-content: stretch;\n    }\n    .align-self-lg-auto {\n      align-self: auto;\n    }\n    .align-self-lg-start {\n      align-self: flex-start;\n    }\n    .align-self-lg-end {\n      align-self: flex-end;\n    }\n    .align-self-lg-center {\n      align-self: center;\n    }\n    .align-self-lg-baseline {\n      align-self: baseline;\n    }\n    .align-self-lg-stretch {\n      align-self: stretch;\n    }\n    .place-items-lg-start {\n      place-items: start;\n    }\n    .place-items-lg-end {\n      place-items: end;\n    }\n    .place-items-lg-center {\n      place-items: center;\n    }\n    .place-items-lg-stretch {\n      place-items: stretch;\n    }\n    .order-lg-first {\n      order: -1;\n    }\n    .order-lg-0 {\n      order: 0;\n    }\n    .order-lg-1 {\n      order: 1;\n    }\n    .order-lg-2 {\n      order: 2;\n    }\n    .order-lg-3 {\n      order: 3;\n    }\n    .order-lg-4 {\n      order: 4;\n    }\n    .order-lg-5 {\n      order: 5;\n    }\n    .order-lg-last {\n      order: 6;\n    }\n    .m-lg--2 {\n      margin: -0.5rem;\n    }\n    .m-lg--1 {\n      margin: -0.25rem;\n    }\n    .m-lg-0 {\n      margin: 0;\n    }\n    .m-lg-1 {\n      margin: 0.25rem;\n    }\n    .m-lg-2 {\n      margin: 0.5rem;\n    }\n    .m-lg-3 {\n      margin: 1rem;\n    }\n    .m-lg-4 {\n      margin: 1.5rem;\n    }\n    .m-lg-5 {\n      margin: 3rem;\n    }\n    .m-lg-auto {\n      margin: auto;\n    }\n    .mx-lg--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-lg--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-lg-0 {\n      margin-inline: 0;\n    }\n    .mx-lg-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-lg-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-lg-3 {\n      margin-inline: 1rem;\n    }\n    .mx-lg-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-lg-5 {\n      margin-inline: 3rem;\n    }\n    .mx-lg-auto {\n      margin-inline: auto;\n    }\n    .my-lg--2 {\n      margin-block: -0.5rem;\n    }\n    .my-lg--1 {\n      margin-block: -0.25rem;\n    }\n    .my-lg-0 {\n      margin-block: 0;\n    }\n    .my-lg-1 {\n      margin-block: 0.25rem;\n    }\n    .my-lg-2 {\n      margin-block: 0.5rem;\n    }\n    .my-lg-3 {\n      margin-block: 1rem;\n    }\n    .my-lg-4 {\n      margin-block: 1.5rem;\n    }\n    .my-lg-5 {\n      margin-block: 3rem;\n    }\n    .my-lg-auto {\n      margin-block: auto;\n    }\n    .mt-lg--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-lg--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-lg-0 {\n      margin-block-start: 0;\n    }\n    .mt-lg-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-lg-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-lg-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-lg-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-lg-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-lg-auto {\n      margin-block-start: auto;\n    }\n    .me-lg--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-lg--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-lg-0 {\n      margin-inline-end: 0;\n    }\n    .me-lg-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-lg-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-lg-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-lg-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-lg-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-lg-auto {\n      margin-inline-end: auto;\n    }\n    .mb-lg--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-lg--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-lg-0 {\n      margin-block-end: 0;\n    }\n    .mb-lg-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-lg-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-lg-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-lg-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-lg-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-lg-auto {\n      margin-block-end: auto;\n    }\n    .ms-lg--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-lg--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-lg-0 {\n      margin-inline-start: 0;\n    }\n    .ms-lg-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-lg-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-lg-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-lg-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-lg-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-lg-auto {\n      margin-inline-start: auto;\n    }\n    .p-lg--2 {\n      padding: -0.5rem;\n    }\n    .p-lg--1 {\n      padding: -0.25rem;\n    }\n    .p-lg-0 {\n      padding: 0;\n    }\n    .p-lg-1 {\n      padding: 0.25rem;\n    }\n    .p-lg-2 {\n      padding: 0.5rem;\n    }\n    .p-lg-3 {\n      padding: 1rem;\n    }\n    .p-lg-4 {\n      padding: 1.5rem;\n    }\n    .p-lg-5 {\n      padding: 3rem;\n    }\n    .px-lg--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-lg--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-lg-0 {\n      padding-inline: 0;\n    }\n    .px-lg-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-lg-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-lg-3 {\n      padding-inline: 1rem;\n    }\n    .px-lg-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-lg-5 {\n      padding-inline: 3rem;\n    }\n    .py-lg--2 {\n      padding-block: -0.5rem;\n    }\n    .py-lg--1 {\n      padding-block: -0.25rem;\n    }\n    .py-lg-0 {\n      padding-block: 0;\n    }\n    .py-lg-1 {\n      padding-block: 0.25rem;\n    }\n    .py-lg-2 {\n      padding-block: 0.5rem;\n    }\n    .py-lg-3 {\n      padding-block: 1rem;\n    }\n    .py-lg-4 {\n      padding-block: 1.5rem;\n    }\n    .py-lg-5 {\n      padding-block: 3rem;\n    }\n    .pt-lg--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-lg--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-lg-0 {\n      padding-block-start: 0;\n    }\n    .pt-lg-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-lg-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-lg-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-lg-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-lg-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-lg--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-lg--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-lg-0 {\n      padding-inline-end: 0;\n    }\n    .pe-lg-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-lg-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-lg-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-lg-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-lg-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-lg--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-lg--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-lg-0 {\n      padding-block-end: 0;\n    }\n    .pb-lg-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-lg-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-lg-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-lg-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-lg-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-lg--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-lg--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-lg-0 {\n      padding-inline-start: 0;\n    }\n    .ps-lg-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-lg-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-lg-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-lg-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-lg-5 {\n      padding-inline-start: 3rem;\n    }\n  }\n  @media (width >= 1280px) {\n    .d-xl-inline {\n      display: inline;\n    }\n    .d-xl-inline-block {\n      display: inline-block;\n    }\n    .d-xl-block {\n      display: block;\n    }\n    .d-xl-grid {\n      display: grid;\n    }\n    .d-xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-xl-table {\n      display: table;\n    }\n    .d-xl-table-row {\n      display: table-row;\n    }\n    .d-xl-table-cell {\n      display: table-cell;\n    }\n    .d-xl-flex {\n      display: flex;\n    }\n    .d-xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-xl-contents {\n      display: contents;\n    }\n    .d-xl-flow-root {\n      display: flow-root;\n    }\n    .d-xl-none {\n      display: none;\n    }\n    .flex-xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-xl-row {\n      flex-direction: row;\n    }\n    .flex-xl-column {\n      flex-direction: column;\n    }\n    .flex-xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-xl-center {\n      justify-content: center;\n    }\n    .justify-content-xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-xl-start {\n      justify-items: start;\n    }\n    .justify-items-xl-end {\n      justify-items: end;\n    }\n    .justify-items-xl-center {\n      justify-items: center;\n    }\n    .justify-items-xl-stretch {\n      justify-items: stretch;\n    }\n    .align-items-xl-start {\n      align-items: flex-start;\n    }\n    .align-items-xl-end {\n      align-items: flex-end;\n    }\n    .align-items-xl-center {\n      align-items: center;\n    }\n    .align-items-xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-xl-start {\n      align-content: flex-start;\n    }\n    .align-content-xl-end {\n      align-content: flex-end;\n    }\n    .align-content-xl-center {\n      align-content: center;\n    }\n    .align-content-xl-between {\n      align-content: space-between;\n    }\n    .align-content-xl-around {\n      align-content: space-around;\n    }\n    .align-content-xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-xl-auto {\n      align-self: auto;\n    }\n    .align-self-xl-start {\n      align-self: flex-start;\n    }\n    .align-self-xl-end {\n      align-self: flex-end;\n    }\n    .align-self-xl-center {\n      align-self: center;\n    }\n    .align-self-xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-xl-start {\n      place-items: start;\n    }\n    .place-items-xl-end {\n      place-items: end;\n    }\n    .place-items-xl-center {\n      place-items: center;\n    }\n    .place-items-xl-stretch {\n      place-items: stretch;\n    }\n    .order-xl-first {\n      order: -1;\n    }\n    .order-xl-0 {\n      order: 0;\n    }\n    .order-xl-1 {\n      order: 1;\n    }\n    .order-xl-2 {\n      order: 2;\n    }\n    .order-xl-3 {\n      order: 3;\n    }\n    .order-xl-4 {\n      order: 4;\n    }\n    .order-xl-5 {\n      order: 5;\n    }\n    .order-xl-last {\n      order: 6;\n    }\n    .m-xl--2 {\n      margin: -0.5rem;\n    }\n    .m-xl--1 {\n      margin: -0.25rem;\n    }\n    .m-xl-0 {\n      margin: 0;\n    }\n    .m-xl-1 {\n      margin: 0.25rem;\n    }\n    .m-xl-2 {\n      margin: 0.5rem;\n    }\n    .m-xl-3 {\n      margin: 1rem;\n    }\n    .m-xl-4 {\n      margin: 1.5rem;\n    }\n    .m-xl-5 {\n      margin: 3rem;\n    }\n    .m-xl-auto {\n      margin: auto;\n    }\n    .mx-xl--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-xl--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-xl-0 {\n      margin-inline: 0;\n    }\n    .mx-xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-xl-auto {\n      margin-inline: auto;\n    }\n    .my-xl--2 {\n      margin-block: -0.5rem;\n    }\n    .my-xl--1 {\n      margin-block: -0.25rem;\n    }\n    .my-xl-0 {\n      margin-block: 0;\n    }\n    .my-xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-xl-3 {\n      margin-block: 1rem;\n    }\n    .my-xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-xl-5 {\n      margin-block: 3rem;\n    }\n    .my-xl-auto {\n      margin-block: auto;\n    }\n    .mt-xl--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-xl--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-xl-auto {\n      margin-block-start: auto;\n    }\n    .me-xl--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-xl--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-xl--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-xl--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-xl--2 {\n      padding: -0.5rem;\n    }\n    .p-xl--1 {\n      padding: -0.25rem;\n    }\n    .p-xl-0 {\n      padding: 0;\n    }\n    .p-xl-1 {\n      padding: 0.25rem;\n    }\n    .p-xl-2 {\n      padding: 0.5rem;\n    }\n    .p-xl-3 {\n      padding: 1rem;\n    }\n    .p-xl-4 {\n      padding: 1.5rem;\n    }\n    .p-xl-5 {\n      padding: 3rem;\n    }\n    .px-xl--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-xl--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-xl-0 {\n      padding-inline: 0;\n    }\n    .px-xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-xl--2 {\n      padding-block: -0.5rem;\n    }\n    .py-xl--1 {\n      padding-block: -0.25rem;\n    }\n    .py-xl-0 {\n      padding-block: 0;\n    }\n    .py-xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-xl-3 {\n      padding-block: 1rem;\n    }\n    .py-xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-xl--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-xl--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-xl--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-xl--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-xl--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-xl--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-xl--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-xl--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-xl-5 {\n      padding-inline-start: 3rem;\n    }\n  }\n  @media (width >= 1536px) {\n    .d-2xl-inline {\n      display: inline;\n    }\n    .d-2xl-inline-block {\n      display: inline-block;\n    }\n    .d-2xl-block {\n      display: block;\n    }\n    .d-2xl-grid {\n      display: grid;\n    }\n    .d-2xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-2xl-table {\n      display: table;\n    }\n    .d-2xl-table-row {\n      display: table-row;\n    }\n    .d-2xl-table-cell {\n      display: table-cell;\n    }\n    .d-2xl-flex {\n      display: flex;\n    }\n    .d-2xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-2xl-contents {\n      display: contents;\n    }\n    .d-2xl-flow-root {\n      display: flow-root;\n    }\n    .d-2xl-none {\n      display: none;\n    }\n    .flex-2xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-2xl-row {\n      flex-direction: row;\n    }\n    .flex-2xl-column {\n      flex-direction: column;\n    }\n    .flex-2xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-2xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-2xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-2xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-2xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-2xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-2xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-2xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-2xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-2xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-2xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-2xl-center {\n      justify-content: center;\n    }\n    .justify-content-2xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-2xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-2xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-2xl-start {\n      justify-items: start;\n    }\n    .justify-items-2xl-end {\n      justify-items: end;\n    }\n    .justify-items-2xl-center {\n      justify-items: center;\n    }\n    .justify-items-2xl-stretch {\n      justify-items: stretch;\n    }\n    .align-items-2xl-start {\n      align-items: flex-start;\n    }\n    .align-items-2xl-end {\n      align-items: flex-end;\n    }\n    .align-items-2xl-center {\n      align-items: center;\n    }\n    .align-items-2xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-2xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-2xl-start {\n      align-content: flex-start;\n    }\n    .align-content-2xl-end {\n      align-content: flex-end;\n    }\n    .align-content-2xl-center {\n      align-content: center;\n    }\n    .align-content-2xl-between {\n      align-content: space-between;\n    }\n    .align-content-2xl-around {\n      align-content: space-around;\n    }\n    .align-content-2xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-2xl-auto {\n      align-self: auto;\n    }\n    .align-self-2xl-start {\n      align-self: flex-start;\n    }\n    .align-self-2xl-end {\n      align-self: flex-end;\n    }\n    .align-self-2xl-center {\n      align-self: center;\n    }\n    .align-self-2xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-2xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-2xl-start {\n      place-items: start;\n    }\n    .place-items-2xl-end {\n      place-items: end;\n    }\n    .place-items-2xl-center {\n      place-items: center;\n    }\n    .place-items-2xl-stretch {\n      place-items: stretch;\n    }\n    .order-2xl-first {\n      order: -1;\n    }\n    .order-2xl-0 {\n      order: 0;\n    }\n    .order-2xl-1 {\n      order: 1;\n    }\n    .order-2xl-2 {\n      order: 2;\n    }\n    .order-2xl-3 {\n      order: 3;\n    }\n    .order-2xl-4 {\n      order: 4;\n    }\n    .order-2xl-5 {\n      order: 5;\n    }\n    .order-2xl-last {\n      order: 6;\n    }\n    .m-2xl--2 {\n      margin: -0.5rem;\n    }\n    .m-2xl--1 {\n      margin: -0.25rem;\n    }\n    .m-2xl-0 {\n      margin: 0;\n    }\n    .m-2xl-1 {\n      margin: 0.25rem;\n    }\n    .m-2xl-2 {\n      margin: 0.5rem;\n    }\n    .m-2xl-3 {\n      margin: 1rem;\n    }\n    .m-2xl-4 {\n      margin: 1.5rem;\n    }\n    .m-2xl-5 {\n      margin: 3rem;\n    }\n    .m-2xl-auto {\n      margin: auto;\n    }\n    .mx-2xl--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-2xl--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-2xl-0 {\n      margin-inline: 0;\n    }\n    .mx-2xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-2xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-2xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-2xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-2xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-2xl-auto {\n      margin-inline: auto;\n    }\n    .my-2xl--2 {\n      margin-block: -0.5rem;\n    }\n    .my-2xl--1 {\n      margin-block: -0.25rem;\n    }\n    .my-2xl-0 {\n      margin-block: 0;\n    }\n    .my-2xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-2xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-2xl-3 {\n      margin-block: 1rem;\n    }\n    .my-2xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-2xl-5 {\n      margin-block: 3rem;\n    }\n    .my-2xl-auto {\n      margin-block: auto;\n    }\n    .mt-2xl--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-2xl--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-2xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-2xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-2xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-2xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-2xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-2xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-2xl-auto {\n      margin-block-start: auto;\n    }\n    .me-2xl--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-2xl--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-2xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-2xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-2xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-2xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-2xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-2xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-2xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-2xl--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-2xl--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-2xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-2xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-2xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-2xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-2xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-2xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-2xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-2xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-2xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-2xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-2xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-2xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-2xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-2xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-2xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-2xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-2xl--2 {\n      padding: -0.5rem;\n    }\n    .p-2xl--1 {\n      padding: -0.25rem;\n    }\n    .p-2xl-0 {\n      padding: 0;\n    }\n    .p-2xl-1 {\n      padding: 0.25rem;\n    }\n    .p-2xl-2 {\n      padding: 0.5rem;\n    }\n    .p-2xl-3 {\n      padding: 1rem;\n    }\n    .p-2xl-4 {\n      padding: 1.5rem;\n    }\n    .p-2xl-5 {\n      padding: 3rem;\n    }\n    .px-2xl--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-2xl--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-2xl-0 {\n      padding-inline: 0;\n    }\n    .px-2xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-2xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-2xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-2xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-2xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-2xl--2 {\n      padding-block: -0.5rem;\n    }\n    .py-2xl--1 {\n      padding-block: -0.25rem;\n    }\n    .py-2xl-0 {\n      padding-block: 0;\n    }\n    .py-2xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-2xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-2xl-3 {\n      padding-block: 1rem;\n    }\n    .py-2xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-2xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-2xl--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-2xl--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-2xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-2xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-2xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-2xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-2xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-2xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-2xl--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-2xl--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-2xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-2xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-2xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-2xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-2xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-2xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-2xl--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-2xl--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-2xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-2xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-2xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-2xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-2xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-2xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-2xl--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-2xl--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-2xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-2xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-2xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-2xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-2xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-2xl-5 {\n      padding-inline-start: 3rem;\n    }\n  }\n}\n:root {\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 1024px;\n  --breakpoint-xl: 1280px;\n  --breakpoint-2xl: 1536px;\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","$file: \"\" !default;\n\n/*!\n  * Bootstrap #{$file} v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n","@use \"../config\" as *;\n@use \"breakpoints\" as *;\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n  --gutter-x: #{$gutter};\n  --gutter-y: 0;\n  width: 100%;\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-inline: auto;\n}\n\n@layer layout {\n  @if $enable-container-classes {\n    // Single container class with breakpoint max-widths\n    .container,\n    // 100% wide container at all breakpoints\n    .container-fluid {\n      @include make-container();\n    }\n\n    // Responsive containers that are 100% wide until a breakpoint\n    @each $breakpoint, $container-max-width in $container-max-widths {\n      .container-#{$breakpoint} {\n        @extend .container-fluid;\n      }\n\n      @include media-breakpoint-up($breakpoint, $breakpoints) {\n        // Extend each breakpoint which is smaller or equal to the current breakpoint\n        $extend-breakpoint: true;\n\n        %responsive-container-#{$breakpoint} {\n          max-width: $container-max-width;\n        }\n\n        @each $name, $width in $breakpoints {\n          @if ($extend-breakpoint) {\n            .container#{breakpoint-infix($name, $breakpoints)} {\n              @extend %responsive-container-#{$breakpoint};\n            }\n\n            // Once the current breakpoint is reached, stop extending\n            @if ($breakpoint == $name) {\n              $extend-breakpoint: false;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"../config\" as *;\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px)\n//\n// The map defined in the `$breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl 2xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $breakpoints, $breakpoint-names: map.keys($breakpoints)) {\n  $n: list.index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoint-names}`\";\n  }\n  // Use @if/@else because list.nth would error if evaluated when $n equals list length\n  @if $n < list.length($breakpoint-names) {\n    @return list.nth($breakpoint-names, $n + 1);\n  } @else {\n    @return null;\n  }\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $breakpoints) {\n  $min: map.get($breakpoints, $name);\n  @return if(sass($min != 0): $min; else: null);\n}\n\n// Maximum breakpoint width for range media queries.\n// Returns the breakpoint value to use as an upper bound in range queries.\n//\n//    >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n//    >> breakpoint-max(xxl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    null\n@function breakpoint-max($name, $breakpoints: $breakpoints) {\n  @if $name == null {\n    @return null;\n  }\n  $max: map.get($breakpoints, $name);\n  @return if(sass($max and $max > 0): $max; else: null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $breakpoints) {\n  @return if(sass(breakpoint-min($name, $breakpoints) == null): \"\"; else: \"-#{$name}\");\n}\n\n// Iterate all breakpoints and provide the current name and infix.\n//\n//    @include loop-breakpoints-up() using ($breakpoint, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-up($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n    @content($breakpoint, $infix);\n  }\n}\n\n// Iterate all breakpoints and provide the current name, next name, and next infix.\n//\n//    @include loop-breakpoints-down() using ($breakpoint, $next, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-down($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $next: breakpoint-next($breakpoint, $breakpoints);\n    $infix: breakpoint-infix($next, $breakpoints);\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Backwards-compatible alias for next/down breakpoint loops.\n@mixin loop-breakpoints($breakpoints: $breakpoints) {\n  @include loop-breakpoints-down($breakpoints) using ($breakpoint, $next, $infix) {\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (width >= $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (width < $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n\n// Container queries\n//\n// Container queries allow elements to respond to the size of a containing element\n// rather than the viewport. These mixins mirror the media-breakpoint-* mixins above.\n//\n// scss-docs-start container-query-mixins\n\n// Set an element as a query container.\n//\n//    @include set-container();                    // container-type: inline-size\n//    @include set-container(size);                // container-type: size\n//    @include set-container(inline-size, sidebar); // container: sidebar / inline-size\n//\n@mixin set-container($type: inline-size, $name: null) {\n  @if $name {\n    container: #{$name} / #{$type};\n  } @else {\n    container-type: #{$type};\n  }\n}\n\n// Container query of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider within the container.\n//\n//    @include container-breakpoint-up(md) { ... }\n//    @include container-breakpoint-up(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-up($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower within the container.\n//\n//    @include container-breakpoint-down(lg) { ... }\n//    @include container-breakpoint-down(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-down($name, $container-name: null, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @if $container-name {\n      @container #{$container-name} (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints within the container.\n//\n//    @include container-breakpoint-between(md, xl) { ... }\n//    @include container-breakpoint-between(md, xl, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-between($lower, $upper, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($lower, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($upper, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Container query between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint within the container.\n//\n//    @include container-breakpoint-only(md) { ... }\n//    @include container-breakpoint-only(md, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-only($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($name, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($next, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n// scss-docs-end container-query-mixins\n","// Configuration\n//\n// Variables and settings not related to theme, components, and more go here. It does include layout.\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              true !default;\n$enable-gradients:            false !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        true !default;\n$enable-grid-classes:         true !default;\n$enable-container-classes:    true !default;\n$enable-cssgrid:              true !default;\n$enable-button-pointers:      true !default;\n$enable-validation-icons:     true !default;\n// $enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n\n$enable-dark-mode:            true !default;\n$color-mode-type:             data !default; // `data` or `media-query`\n\n// more to come here…\n\n$color-mode-type:          \"media-query\" !default;\n$color-contrast-dark:      #000 !default;\n$color-contrast-light:     #fff !default;\n$min-contrast-ratio:         4.5 !default;\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  -2: $spacer * -.5,\n  -1: $spacer * -.25,\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n$sizes: (\n  1: $spacer,\n  2: calc($spacer * 2),\n  3: calc($spacer * 3),\n  4: calc($spacer * 4),\n  5: calc($spacer * 5),\n  6: calc($spacer * 6),\n  7: calc($spacer * 7),\n  8: calc($spacer * 8),\n  9: calc($spacer * 9),\n  10: calc($spacer * 10),\n  11: calc($spacer * 11),\n  12: calc($spacer * 12),\n) !default;\n\n// Breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start breakpoints\n$breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 1024px,\n  xl: 1280px,\n  2xl: 1536px\n) !default;\n// scss-docs-end breakpoints\n\n// @include _assert-ascending($breakpoints, \"$breakpoints\");\n// @include _assert-starts-at-zero($breakpoints, \"$breakpoints\");\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-x: 1.5rem !default;\n$grid-gutter-y: 0 !default;\n$grid-row-columns: 6 !default;\n\n$gutters: $spacers !default;\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1200px,\n  2xl: 1440px\n) !default;\n// scss-docs-end container-max-widths\n\n$container-padding-x: $grid-gutter-x !default;\n\n$utilities: () !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n","@use \"../config\" as *;\n@use \"../mixins/grid\" as *;\n\n// mdo-do\n// - check gap utilities as replacement for gutter classes from v5\n\n@layer layout {\n  @if $enable-grid-classes {\n    .row {\n      @include make-row();\n\n      > * {\n        @include make-col-ready();\n      }\n    }\n\n    @include make-grid-columns();\n  }\n\n  @if $enable-cssgrid {\n    .grid {\n      --columns: #{$grid-columns};\n      --rows: 1;\n      --gap: #{$grid-gutter-x};\n\n      display: grid;\n      grid-template-rows: repeat(var(--rows), 1fr);\n      grid-template-columns: repeat(var(--columns), 1fr);\n      gap: var(--gap);\n\n    }\n\n    @include make-cssgrid();\n  }\n\n  // mdo-do: add to utilities?\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n\n  .grid-fill {\n    --gap: #{$grid-gutter-x};\n\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n\n  // .g-col-auto {\n  //   grid-column: auto;\n  // }\n\n  // mdo-do: add to utilities?\n  // .grid-cols-3 {\n  //   --columns: 3;\n  // }\n  // .grid-cols-4 {\n  //   --columns: 4;\n  // }\n  // .grid-cols-6 {\n  //   --columns: 6;\n  // }\n\n  // .grid-full {\n  //   grid-column: 1 / -1;\n  // }\n}\n","@use \"sass:map\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n\n// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter-x: $grid-gutter-x, $gutter-y: $grid-gutter-y) {\n  --gutter-x: #{$gutter-x};\n  --gutter-y: #{$gutter-y};\n  display: flex;\n  flex-wrap: wrap;\n  // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n  margin-inline: calc(-.5 * var(--gutter-x));\n  margin-top: calc(-1 * var(--gutter-y));\n}\n\n@mixin make-col-ready() {\n  // Add box sizing if only the grid is loaded\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  box-sizing: if(sass(meta.variable-exists(include-column-box-sizing) and $include-column-box-sizing): border-box; else: null);\n  // Prevent columns from becoming too narrow when at smaller grid tiers by\n  // always setting `width: 100%;`. This works because we set the width\n  // later on to override this initial width.\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-top: var(--gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n  @if $size {\n    flex: 0 0 auto;\n    width: math.percentage(math.div($size, $columns));\n\n  } @else {\n    flex: 1 1 0;\n    max-width: 100%;\n  }\n}\n\n@mixin make-col-auto() {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n  $num: math.div($size, $columns);\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  margin-inline-start: if(sass($num == 0): 0; else: math.percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n  > * {\n    flex: 0 0 auto;\n    width: math.percentage(math.div(1, $count));\n  }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-x, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n      .col#{$infix} {\n        flex: 1 0 0;\n      }\n\n      .row-cols#{$infix}-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .row-cols#{$infix}-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .col#{$infix}-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .col#{$infix}-#{$i} {\n            @include make-col($i, $columns);\n          }\n        }\n\n        // `$columns - 1` because offsetting by the width of an entire row isn't possible\n        @for $i from 0 through ($columns - 1) {\n          @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .offset#{$infix}-#{$i} {\n              @include make-col-offset($i, $columns);\n            }\n          }\n        }\n      }\n\n      // Gutters\n      //\n      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n      @each $key, $value in $gutters {\n        .g#{$infix}-#{$key},\n        .gx#{$infix}-#{$key} {\n          --gutter-x: #{$value};\n        }\n\n        .g#{$infix}-#{$key},\n        .gy#{$infix}-#{$key} {\n          --gutter-y: #{$value};\n        }\n      }\n    }\n  }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .g-col#{$infix}-#{$i} {\n            grid-column: auto / span $i;\n          }\n        }\n\n        // Start with `1` because `0` is an invalid value.\n        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n        @for $i from 1 through ($columns - 1) {\n          .g-start#{$infix}-#{$i} {\n            grid-column-start: $i;\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n@use \"../mixins/utilities\" as *;\n@use \"../utilities\" as *;\n\n@layer utilities {\n  // Loop over each breakpoint\n  @each $breakpoint in map.keys($breakpoints) {\n\n    // Generate media query if needed\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if meta.type-of($utility) == \"map\" and (map.get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix);\n        }\n      }\n    }\n  }\n\n  // Print utilities\n  @media print {\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Then check if the utility needs print styles\n      @if meta.type-of($utility) == \"map\" and map.get($utility, print) == true {\n        @include generate-utility($utility, \"-print\");\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n\n// stylelint-disable scss/dollar-variable-pattern\n\n// Utility generator\n\n// - Utilities can use three different types of selectors:\n//   - class: .class\n//   - attr-starts: [class^=\"class\"]\n//   - attr-includes: [class*=\"class\"]\n// - Utilities can generate regular CSS properties and CSS custom properties\n// - Utilities can be responsive or not\n// - Utilities can have state variants (e.g., hover, focus, active)\n// - Utilities can define local CSS variables\n//\n// CSS custom properties can be generated in two ways:\n//\n// 1. Property map with null values (CSS var receives the utility value):\n// \"bg-color\": (\n//   property: (\n//     \"--bg\": null,\n//     \"background-color\": var(--bg)\n//   ),\n//   class: bg,\n//   values: (\n//     primary: var(--blue-500),\n//   )\n// )\n// Generates:\n// .bg-primary {\n//   --bs-bg: var(--bs-blue-500);\n//   background-color: var(--bs-bg);\n// }\n//\n// 2. Variables map (static CSS custom properties on every class):\n// \"link-underline\": (\n//   property: text-decoration-color,\n//   class: link-underline,\n//   variables: (\n//     \"link-underline-opacity\": 1\n//   ),\n//   values: (...)\n// )\n// Generates:\n// .link-underline {\n//   --bs-link-underline-opacity: 1;\n//   text-decoration-color: ...;\n// }\n\n// Helper mixin to generate CSS properties for both legacy and property map approaches\n@mixin generate-properties($utility, $propertyMap, $properties, $value) {\n  @if $propertyMap != null {\n    // New Property-Value Mapping approach\n    @each $property, $defaultValue in $propertyMap {\n      // If value is a map, check if it has a key for this property\n      // Otherwise, use defaultValue (or $value if defaultValue is null)\n      $actualValue: $defaultValue;\n      @if meta.type-of($value) == \"map\" and map.has-key($value, $property) {\n        $actualValue: map.get($value, $property);\n      } @else if $defaultValue == null {\n        $actualValue: $value;\n      }\n      @if map.get($utility, important) {\n        #{$property}: $actualValue !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $actualValue;\n      }\n    }\n  } @else {\n    // Legacy approach\n    @each $property in $properties {\n      @if map.get($utility, important) {\n        #{$property}: $value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $value;\n      }\n    }\n  }\n}\n\n@mixin generate-utility($utility, $infix: \"\") {\n  // Validate required keys\n  @if not map.has-key($utility, property) {\n    @error \"Utility is missing required `property` key: #{$utility}\";\n  }\n  @if not map.has-key($utility, values) {\n    @error \"Utility is missing required `values` key: #{$utility}\";\n  }\n\n  // Warn on unknown keys (likely typos)\n  $valid-keys: property, values, class, selector, responsive, print, important, state, variables;\n  @each $key in map.keys($utility) {\n    @if not list.index($valid-keys, $key) {\n      @warn \"Unknown utility key `#{$key}` found. Valid keys are: #{$valid-keys}\";\n    }\n  }\n\n  // Determine if we're generating a class, or an attribute selector\n  $selectorType: \"class\";\n  @if map.has-key($utility, selector) {\n    $selectorType: map.get($utility, selector);\n    // Validate selector type\n    $valid-selectors: \"class\", \"attr-starts\", \"attr-includes\";\n    @if not list.index($valid-selectors, $selectorType) {\n      @error \"Invalid `selector` value `#{$selectorType}`. Must be one of: #{$valid-selectors}\";\n    }\n  }\n  // Then get the class name to use in a class (e.g., .class) or in a attribute selector (e.g., [class^=\"class\"])\n  $selectorClass: map.get($utility, class);\n\n  // Attribute selectors require a `class` key\n  @if $selectorType != \"class\" and not map.has-key($utility, class) {\n    @error \"Utility with `selector: #{$selectorType}` requires a `class` key.\";\n  }\n\n  // Get the list or map of values and ensure it's a map\n  $values: map.get($utility, values);\n  @if meta.type-of($values) != \"map\" {\n    @if meta.type-of($values) == \"list\" {\n      $list: ();\n      @each $value in $values {\n        $list: map.merge($list, ($value: $value));\n      }\n      $values: $list;\n    } @else {\n      $values: (null: $values);\n    }\n  }\n\n  // Calculate infix once, before the loop\n  // Note: $infix already includes the leading dash from breakpoint-infix()\n  // $infix: if($infix == \"\", \"\", \"-\" + $infix);\n\n  @each $key, $value in $values {\n    $properties: map.get($utility, property);\n    $propertyMap: null;\n    $customClass: \"\";\n\n    // Check if property is a map (new Property-Value Mapping approach)\n    // @debug \"Properties type: #{meta.type-of($properties)}\";\n    // @debug \"Properties: #{$properties}\";\n    @if meta.type-of($properties) == \"map\" {\n      $propertyMap: $properties;\n      // For property maps, we need to determine the class from the utility definition\n      $customClass: \"\";\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      }\n    } @else {\n      // Legacy approach: Multiple properties are possible, for example with vertical or horizontal margins or paddings\n      @if meta.type-of($properties) == \"string\" {\n        $properties: list.append((), $properties);\n      }\n      // Use custom class if present, otherwise use the first value from the list of properties\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      } @else {\n        $customClass: list.nth($properties, 1);\n      }\n      @if $customClass == null {\n        $customClass: \"\";\n      }\n    }\n\n    // Use custom CSS variable name if present, otherwise default to `class`\n    // mdo-do: restore?\n    // $css-variable-name: if(map.has-key($utility, css-variable-name), map.get($utility, css-variable-name), map.get($utility, class));\n\n    // State params to generate state variants\n    $state: ();\n    @if map.has-key($utility, state) {\n      $state: map.get($utility, state);\n    }\n\n    // $infix: if($customClass == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (e.g. with shadow class)\n    $customClassModifier: \"\";\n    @if $key {\n      @if $customClass == \"\" and $infix == \"\" {\n        $customClassModifier: $key;\n      } @else {\n        $customClassModifier: \"-\" + $key;\n      }\n    }\n\n    $selector: \"\";\n    @if $selectorType == \"class\" {\n      // Use the fallback of the first property if no `class` key is used\n      @if $customClass != \"\" {\n        $selector: \".#{$customClass + $infix + $customClassModifier}\";\n      } @else {\n        $selector: \".#{$selectorClass + $infix + $customClassModifier}\";\n      }\n    } @else if $selectorType == \"attr-starts\" {\n      $selector: \"[class^=\\\"#{$selectorClass}\\\"]\";\n    } @else if $selectorType == \"attr-includes\" {\n      $selector: \"[class*=\\\"#{$selectorClass}\\\"]\";\n    }\n\n    // @debug $utility;\n    // @debug $selectorType;\n    // @debug $selector;\n    // @debug $properties;\n    // @debug $values;\n\n    #{$selector} {\n      // Generate CSS custom properties (variables) if provided\n      // Variables receive the current utility value, then properties reference them\n      @if map.has-key($utility, variables) {\n        $variables: map.get($utility, variables);\n        @if meta.type-of($variables) == \"list\" {\n          // If variables is a list, each variable gets the utility value\n          @each $var-name in $variables {\n            --#{$var-name}: #{$value};\n          }\n        } @else if meta.type-of($variables) == \"map\" {\n          // If variables is a map, use the provided values (for static variables)\n          @each $var-key, $var-value in $variables {\n            --#{$var-key}: #{$var-value};\n          }\n        }\n      }\n      @include generate-properties($utility, $propertyMap, $properties, $value);\n    }\n\n    // Generate state variants\n    @if $state != () {\n      @each $state-variant in $state {\n        #{$selector}-#{$state-variant}:#{$state-variant} {\n          // Generate CSS custom properties (variables) if provided\n          @if map.has-key($utility, variables) {\n            $variables: map.get($utility, variables);\n            @if meta.type-of($variables) == \"list\" {\n              // If variables is a list, each variable gets the utility value\n              @each $var-name in $variables {\n                --#{$var-name}: #{$value};\n              }\n            } @else if meta.type-of($variables) == \"map\" {\n              // If variables is a map, use the provided values (for static variables)\n              @each $var-key, $var-value in $variables {\n                --#{$var-key}: #{$var-value};\n              }\n            }\n          }\n          @include generate-properties($utility, $propertyMap, $properties, $value);\n        }\n      }\n    }\n  }\n}\n","@use \"banner\" with (\n  $file: \"Grid\"\n);\n\n@use \"config\" as *;\n@use \"functions\" as *;\n\n@forward \"utilities\"; // Make utilities available downstream\n@use \"utilities\" as *; // Bring utilities into the current namespace\n\n@forward \"layout/containers\";\n@forward \"layout/grid\";\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$utilities: map-get-multiple(\n  $utilities,\n  (\n    \"display\",\n    \"order\",\n    \"flex\",\n    \"flex-direction\",\n    \"flex-grow\",\n    \"flex-shrink\",\n    \"flex-wrap\",\n    \"justify-content\",\n    \"justify-items\",\n    \"align-items\",\n    \"align-content\",\n    \"align-self\",\n    \"place-items\",\n    \"margin\",\n    \"margin-x\",\n    \"margin-y\",\n    \"margin-top\",\n    \"margin-end\",\n    \"margin-bottom\",\n    \"margin-start\",\n    \"negative-margin\",\n    \"negative-margin-x\",\n    \"negative-margin-y\",\n    \"negative-margin-top\",\n    \"negative-margin-end\",\n    \"negative-margin-bottom\",\n    \"negative-margin-start\",\n    \"padding\",\n    \"padding-x\",\n    \"padding-y\",\n    \"padding-top\",\n    \"padding-end\",\n    \"padding-bottom\",\n    \"padding-start\",\n  )\n);\n\n// check-unused-imports-disable-next-line — side-effect import: generates utility CSS.\n@use \"utilities/api\";\n\n:root {\n  @each $name, $value in $breakpoints {\n    --breakpoint-#{$name}: #{$value};\n  }\n}\n"],"names":[]}
\ No newline at end of file
+{"version":3,"sourceRoot":null,"mappings":"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","sources":["bootstrap-grid.css","../../scss/_banner.scss","../../scss/layout/_containers.scss","../../scss/layout/_breakpoints.scss","../../scss/_config.scss","../../scss/layout/_grid.scss","../../scss/mixins/_grid.scss","../../scss/utilities/_api.scss","../../scss/mixins/_utilities.scss","../../scss/bootstrap-grid.scss"],"sourcesContent":["/*!\n  * Bootstrap Grid v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n@layer layout {\n  .container,\n  .container-fluid,\n  .container-2xl,\n  .container-xl,\n  .container-lg,\n  .container-md,\n  .container-sm {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-inline: auto;\n  }\n  @media (width >= 576px) {\n    .container-sm, .container {\n      max-width: 540px;\n    }\n  }\n  @media (width >= 768px) {\n    .container-md, .container-sm, .container {\n      max-width: 720px;\n    }\n  }\n  @media (width >= 1024px) {\n    .container-lg, .container-md, .container-sm, .container {\n      max-width: 960px;\n    }\n  }\n  @media (width >= 1280px) {\n    .container-xl, .container-lg, .container-md, .container-sm, .container {\n      max-width: 1200px;\n    }\n  }\n  @media (width >= 1536px) {\n    .container-2xl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n      max-width: 1440px;\n    }\n  }\n}\n@layer layout {\n  .row {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    display: flex;\n    flex-wrap: wrap;\n    margin-inline: calc(-0.5 * var(--gutter-x));\n    margin-top: calc(-1 * var(--gutter-y));\n  }\n  .row > * {\n    flex-shrink: 0;\n    width: 100%;\n    max-width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-top: var(--gutter-y);\n  }\n  .col {\n    flex: 1 0 0;\n  }\n  .row-cols-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .row-cols-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .row-cols-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .row-cols-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .row-cols-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .row-cols-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n  .row-cols-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .col-1 {\n    flex: 0 0 auto;\n    width: 8.3333333333%;\n  }\n  .col-2 {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .col-4 {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .col-5 {\n    flex: 0 0 auto;\n    width: 41.6666666667%;\n  }\n  .col-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .col-7 {\n    flex: 0 0 auto;\n    width: 58.3333333333%;\n  }\n  .col-8 {\n    flex: 0 0 auto;\n    width: 66.6666666667%;\n  }\n  .col-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n  .col-10 {\n    flex: 0 0 auto;\n    width: 83.3333333333%;\n  }\n  .col-11 {\n    flex: 0 0 auto;\n    width: 91.6666666667%;\n  }\n  .col-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .offset-1 {\n    margin-inline-start: 8.3333333333%;\n  }\n  .offset-2 {\n    margin-inline-start: 16.6666666667%;\n  }\n  .offset-3 {\n    margin-inline-start: 25%;\n  }\n  .offset-4 {\n    margin-inline-start: 33.3333333333%;\n  }\n  .offset-5 {\n    margin-inline-start: 41.6666666667%;\n  }\n  .offset-6 {\n    margin-inline-start: 50%;\n  }\n  .offset-7 {\n    margin-inline-start: 58.3333333333%;\n  }\n  .offset-8 {\n    margin-inline-start: 66.6666666667%;\n  }\n  .offset-9 {\n    margin-inline-start: 75%;\n  }\n  .offset-10 {\n    margin-inline-start: 83.3333333333%;\n  }\n  .offset-11 {\n    margin-inline-start: 91.6666666667%;\n  }\n  .g-0,\n  .gx-0 {\n    --gutter-x: 0;\n  }\n  .g-0,\n  .gy-0 {\n    --gutter-y: 0;\n  }\n  .g-1,\n  .gx-1 {\n    --gutter-x: 0.25rem;\n  }\n  .g-1,\n  .gy-1 {\n    --gutter-y: 0.25rem;\n  }\n  .g-2,\n  .gx-2 {\n    --gutter-x: 0.5rem;\n  }\n  .g-2,\n  .gy-2 {\n    --gutter-y: 0.5rem;\n  }\n  .g-3,\n  .gx-3 {\n    --gutter-x: 1rem;\n  }\n  .g-3,\n  .gy-3 {\n    --gutter-y: 1rem;\n  }\n  .g-4,\n  .gx-4 {\n    --gutter-x: 1.5rem;\n  }\n  .g-4,\n  .gy-4 {\n    --gutter-y: 1.5rem;\n  }\n  .g-5,\n  .gx-5 {\n    --gutter-x: 3rem;\n  }\n  .g-5,\n  .gy-5 {\n    --gutter-y: 3rem;\n  }\n  @media (width >= 576px) {\n    .col-sm {\n      flex: 1 0 0;\n    }\n    .row-cols-sm-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-sm-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-sm-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-sm-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-sm-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-sm-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-sm-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-sm-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-sm-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-sm-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-sm-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-sm-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-sm-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-sm-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-sm-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-sm-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-sm-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-sm-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-sm-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-sm-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-sm-0 {\n      margin-inline-start: 0;\n    }\n    .offset-sm-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-sm-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-sm-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-sm-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-sm-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-sm-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-sm-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-sm-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-sm-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-sm-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-sm-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-sm-0,\n    .gx-sm-0 {\n      --gutter-x: 0;\n    }\n    .g-sm-0,\n    .gy-sm-0 {\n      --gutter-y: 0;\n    }\n    .g-sm-1,\n    .gx-sm-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-sm-1,\n    .gy-sm-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-sm-2,\n    .gx-sm-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-sm-2,\n    .gy-sm-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-sm-3,\n    .gx-sm-3 {\n      --gutter-x: 1rem;\n    }\n    .g-sm-3,\n    .gy-sm-3 {\n      --gutter-y: 1rem;\n    }\n    .g-sm-4,\n    .gx-sm-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-sm-4,\n    .gy-sm-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-sm-5,\n    .gx-sm-5 {\n      --gutter-x: 3rem;\n    }\n    .g-sm-5,\n    .gy-sm-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 768px) {\n    .col-md {\n      flex: 1 0 0;\n    }\n    .row-cols-md-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-md-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-md-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-md-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-md-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-md-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-md-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-md-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-md-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-md-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-md-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-md-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-md-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-md-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-md-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-md-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-md-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-md-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-md-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-md-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-md-0 {\n      margin-inline-start: 0;\n    }\n    .offset-md-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-md-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-md-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-md-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-md-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-md-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-md-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-md-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-md-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-md-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-md-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-md-0,\n    .gx-md-0 {\n      --gutter-x: 0;\n    }\n    .g-md-0,\n    .gy-md-0 {\n      --gutter-y: 0;\n    }\n    .g-md-1,\n    .gx-md-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-md-1,\n    .gy-md-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-md-2,\n    .gx-md-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-md-2,\n    .gy-md-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-md-3,\n    .gx-md-3 {\n      --gutter-x: 1rem;\n    }\n    .g-md-3,\n    .gy-md-3 {\n      --gutter-y: 1rem;\n    }\n    .g-md-4,\n    .gx-md-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-md-4,\n    .gy-md-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-md-5,\n    .gx-md-5 {\n      --gutter-x: 3rem;\n    }\n    .g-md-5,\n    .gy-md-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1024px) {\n    .col-lg {\n      flex: 1 0 0;\n    }\n    .row-cols-lg-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-lg-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-lg-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-lg-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-lg-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-lg-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-lg-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-lg-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-lg-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-lg-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-lg-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-lg-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-lg-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-lg-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-lg-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-lg-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-lg-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-lg-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-lg-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-lg-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-lg-0 {\n      margin-inline-start: 0;\n    }\n    .offset-lg-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-lg-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-lg-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-lg-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-lg-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-lg-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-lg-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-lg-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-lg-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-lg-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-lg-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-lg-0,\n    .gx-lg-0 {\n      --gutter-x: 0;\n    }\n    .g-lg-0,\n    .gy-lg-0 {\n      --gutter-y: 0;\n    }\n    .g-lg-1,\n    .gx-lg-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-lg-1,\n    .gy-lg-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-lg-2,\n    .gx-lg-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-lg-2,\n    .gy-lg-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-lg-3,\n    .gx-lg-3 {\n      --gutter-x: 1rem;\n    }\n    .g-lg-3,\n    .gy-lg-3 {\n      --gutter-y: 1rem;\n    }\n    .g-lg-4,\n    .gx-lg-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-lg-4,\n    .gy-lg-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-lg-5,\n    .gx-lg-5 {\n      --gutter-x: 3rem;\n    }\n    .g-lg-5,\n    .gy-lg-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1280px) {\n    .col-xl {\n      flex: 1 0 0;\n    }\n    .row-cols-xl-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-xl-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-xl-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-xl-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-xl-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-xl-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-xl-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-xl-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-xl-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-xl-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-xl-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-xl-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-xl-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-xl-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-xl-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-xl-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-xl-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-xl-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-xl-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-xl-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-xl-0 {\n      margin-inline-start: 0;\n    }\n    .offset-xl-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-xl-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-xl-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-xl-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-xl-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-xl-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-xl-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-xl-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-xl-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-xl-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-xl-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-xl-0,\n    .gx-xl-0 {\n      --gutter-x: 0;\n    }\n    .g-xl-0,\n    .gy-xl-0 {\n      --gutter-y: 0;\n    }\n    .g-xl-1,\n    .gx-xl-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-xl-1,\n    .gy-xl-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-xl-2,\n    .gx-xl-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-xl-2,\n    .gy-xl-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-xl-3,\n    .gx-xl-3 {\n      --gutter-x: 1rem;\n    }\n    .g-xl-3,\n    .gy-xl-3 {\n      --gutter-y: 1rem;\n    }\n    .g-xl-4,\n    .gx-xl-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-xl-4,\n    .gy-xl-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-xl-5,\n    .gx-xl-5 {\n      --gutter-x: 3rem;\n    }\n    .g-xl-5,\n    .gy-xl-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1536px) {\n    .col-2xl {\n      flex: 1 0 0;\n    }\n    .row-cols-2xl-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-2xl-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-2xl-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-2xl-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-2xl-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-2xl-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-2xl-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-2xl-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-2xl-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-2xl-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-2xl-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-2xl-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-2xl-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-2xl-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-2xl-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-2xl-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-2xl-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-2xl-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-2xl-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-2xl-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-2xl-0 {\n      margin-inline-start: 0;\n    }\n    .offset-2xl-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-2xl-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-2xl-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-2xl-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-2xl-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-2xl-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-2xl-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-2xl-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-2xl-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-2xl-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-2xl-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-2xl-0,\n    .gx-2xl-0 {\n      --gutter-x: 0;\n    }\n    .g-2xl-0,\n    .gy-2xl-0 {\n      --gutter-y: 0;\n    }\n    .g-2xl-1,\n    .gx-2xl-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-2xl-1,\n    .gy-2xl-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-2xl-2,\n    .gx-2xl-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-2xl-2,\n    .gy-2xl-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-2xl-3,\n    .gx-2xl-3 {\n      --gutter-x: 1rem;\n    }\n    .g-2xl-3,\n    .gy-2xl-3 {\n      --gutter-y: 1rem;\n    }\n    .g-2xl-4,\n    .gx-2xl-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-2xl-4,\n    .gy-2xl-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-2xl-5,\n    .gx-2xl-5 {\n      --gutter-x: 3rem;\n    }\n    .g-2xl-5,\n    .gy-2xl-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  .grid {\n    --columns: 12;\n    --rows: 1;\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-rows: repeat(var(--rows), 1fr);\n    grid-template-columns: repeat(var(--columns), 1fr);\n    gap: var(--gap);\n  }\n  .g-col-1 {\n    grid-column: auto/span 1;\n  }\n  .g-col-2 {\n    grid-column: auto/span 2;\n  }\n  .g-col-3 {\n    grid-column: auto/span 3;\n  }\n  .g-col-4 {\n    grid-column: auto/span 4;\n  }\n  .g-col-5 {\n    grid-column: auto/span 5;\n  }\n  .g-col-6 {\n    grid-column: auto/span 6;\n  }\n  .g-col-7 {\n    grid-column: auto/span 7;\n  }\n  .g-col-8 {\n    grid-column: auto/span 8;\n  }\n  .g-col-9 {\n    grid-column: auto/span 9;\n  }\n  .g-col-10 {\n    grid-column: auto/span 10;\n  }\n  .g-col-11 {\n    grid-column: auto/span 11;\n  }\n  .g-col-12 {\n    grid-column: auto/span 12;\n  }\n  .g-start-1 {\n    grid-column-start: 1;\n  }\n  .g-start-2 {\n    grid-column-start: 2;\n  }\n  .g-start-3 {\n    grid-column-start: 3;\n  }\n  .g-start-4 {\n    grid-column-start: 4;\n  }\n  .g-start-5 {\n    grid-column-start: 5;\n  }\n  .g-start-6 {\n    grid-column-start: 6;\n  }\n  .g-start-7 {\n    grid-column-start: 7;\n  }\n  .g-start-8 {\n    grid-column-start: 8;\n  }\n  .g-start-9 {\n    grid-column-start: 9;\n  }\n  .g-start-10 {\n    grid-column-start: 10;\n  }\n  .g-start-11 {\n    grid-column-start: 11;\n  }\n  @media (width >= 576px) {\n    .g-col-sm-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-sm-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-sm-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-sm-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-sm-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-sm-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-sm-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-sm-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-sm-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-sm-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-sm-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-sm-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-sm-1 {\n      grid-column-start: 1;\n    }\n    .g-start-sm-2 {\n      grid-column-start: 2;\n    }\n    .g-start-sm-3 {\n      grid-column-start: 3;\n    }\n    .g-start-sm-4 {\n      grid-column-start: 4;\n    }\n    .g-start-sm-5 {\n      grid-column-start: 5;\n    }\n    .g-start-sm-6 {\n      grid-column-start: 6;\n    }\n    .g-start-sm-7 {\n      grid-column-start: 7;\n    }\n    .g-start-sm-8 {\n      grid-column-start: 8;\n    }\n    .g-start-sm-9 {\n      grid-column-start: 9;\n    }\n    .g-start-sm-10 {\n      grid-column-start: 10;\n    }\n    .g-start-sm-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 768px) {\n    .g-col-md-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-md-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-md-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-md-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-md-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-md-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-md-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-md-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-md-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-md-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-md-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-md-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-md-1 {\n      grid-column-start: 1;\n    }\n    .g-start-md-2 {\n      grid-column-start: 2;\n    }\n    .g-start-md-3 {\n      grid-column-start: 3;\n    }\n    .g-start-md-4 {\n      grid-column-start: 4;\n    }\n    .g-start-md-5 {\n      grid-column-start: 5;\n    }\n    .g-start-md-6 {\n      grid-column-start: 6;\n    }\n    .g-start-md-7 {\n      grid-column-start: 7;\n    }\n    .g-start-md-8 {\n      grid-column-start: 8;\n    }\n    .g-start-md-9 {\n      grid-column-start: 9;\n    }\n    .g-start-md-10 {\n      grid-column-start: 10;\n    }\n    .g-start-md-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1024px) {\n    .g-col-lg-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-lg-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-lg-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-lg-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-lg-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-lg-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-lg-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-lg-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-lg-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-lg-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-lg-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-lg-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-lg-1 {\n      grid-column-start: 1;\n    }\n    .g-start-lg-2 {\n      grid-column-start: 2;\n    }\n    .g-start-lg-3 {\n      grid-column-start: 3;\n    }\n    .g-start-lg-4 {\n      grid-column-start: 4;\n    }\n    .g-start-lg-5 {\n      grid-column-start: 5;\n    }\n    .g-start-lg-6 {\n      grid-column-start: 6;\n    }\n    .g-start-lg-7 {\n      grid-column-start: 7;\n    }\n    .g-start-lg-8 {\n      grid-column-start: 8;\n    }\n    .g-start-lg-9 {\n      grid-column-start: 9;\n    }\n    .g-start-lg-10 {\n      grid-column-start: 10;\n    }\n    .g-start-lg-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1280px) {\n    .g-col-xl-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-xl-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-xl-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-xl-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-xl-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-xl-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-xl-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-xl-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-xl-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-xl-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-xl-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-xl-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-xl-1 {\n      grid-column-start: 1;\n    }\n    .g-start-xl-2 {\n      grid-column-start: 2;\n    }\n    .g-start-xl-3 {\n      grid-column-start: 3;\n    }\n    .g-start-xl-4 {\n      grid-column-start: 4;\n    }\n    .g-start-xl-5 {\n      grid-column-start: 5;\n    }\n    .g-start-xl-6 {\n      grid-column-start: 6;\n    }\n    .g-start-xl-7 {\n      grid-column-start: 7;\n    }\n    .g-start-xl-8 {\n      grid-column-start: 8;\n    }\n    .g-start-xl-9 {\n      grid-column-start: 9;\n    }\n    .g-start-xl-10 {\n      grid-column-start: 10;\n    }\n    .g-start-xl-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1536px) {\n    .g-col-2xl-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-2xl-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-2xl-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-2xl-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-2xl-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-2xl-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-2xl-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-2xl-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-2xl-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-2xl-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-2xl-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-2xl-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-2xl-1 {\n      grid-column-start: 1;\n    }\n    .g-start-2xl-2 {\n      grid-column-start: 2;\n    }\n    .g-start-2xl-3 {\n      grid-column-start: 3;\n    }\n    .g-start-2xl-4 {\n      grid-column-start: 4;\n    }\n    .g-start-2xl-5 {\n      grid-column-start: 5;\n    }\n    .g-start-2xl-6 {\n      grid-column-start: 6;\n    }\n    .g-start-2xl-7 {\n      grid-column-start: 7;\n    }\n    .g-start-2xl-8 {\n      grid-column-start: 8;\n    }\n    .g-start-2xl-9 {\n      grid-column-start: 9;\n    }\n    .g-start-2xl-10 {\n      grid-column-start: 10;\n    }\n    .g-start-2xl-11 {\n      grid-column-start: 11;\n    }\n  }\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n  .grid-fill {\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n}\n@layer utilities {\n  .d-inline {\n    display: inline;\n  }\n  .d-inline-block {\n    display: inline-block;\n  }\n  .d-block {\n    display: block;\n  }\n  .d-grid {\n    display: grid;\n  }\n  .d-inline-grid {\n    display: inline-grid;\n  }\n  .d-table {\n    display: table;\n  }\n  .d-table-row {\n    display: table-row;\n  }\n  .d-table-cell {\n    display: table-cell;\n  }\n  .d-flex {\n    display: flex;\n  }\n  .d-inline-flex {\n    display: inline-flex;\n  }\n  .d-contents {\n    display: contents;\n  }\n  .d-flow-root {\n    display: flow-root;\n  }\n  .d-none {\n    display: none;\n  }\n  .flex-fill {\n    flex: 1 1 auto;\n  }\n  .flex-row {\n    flex-direction: row;\n  }\n  .flex-column {\n    flex-direction: column;\n  }\n  .flex-row-reverse {\n    flex-direction: row-reverse;\n  }\n  .flex-column-reverse {\n    flex-direction: column-reverse;\n  }\n  .flex-grow-0 {\n    flex-grow: 0;\n  }\n  .flex-grow-1 {\n    flex-grow: 1;\n  }\n  .flex-shrink-0 {\n    flex-shrink: 0;\n  }\n  .flex-shrink-1 {\n    flex-shrink: 1;\n  }\n  .flex-wrap {\n    flex-wrap: wrap;\n  }\n  .flex-nowrap {\n    flex-wrap: nowrap;\n  }\n  .flex-wrap-reverse {\n    flex-wrap: wrap-reverse;\n  }\n  .justify-content-start {\n    justify-content: flex-start;\n  }\n  .justify-content-end {\n    justify-content: flex-end;\n  }\n  .justify-content-center {\n    justify-content: center;\n  }\n  .justify-content-between {\n    justify-content: space-between;\n  }\n  .justify-content-around {\n    justify-content: space-around;\n  }\n  .justify-content-evenly {\n    justify-content: space-evenly;\n  }\n  .justify-items-start {\n    justify-items: start;\n  }\n  .justify-items-end {\n    justify-items: end;\n  }\n  .justify-items-center {\n    justify-items: center;\n  }\n  .justify-items-stretch {\n    justify-items: stretch;\n  }\n  .align-items-start {\n    align-items: flex-start;\n  }\n  .align-items-end {\n    align-items: flex-end;\n  }\n  .align-items-center {\n    align-items: center;\n  }\n  .align-items-baseline {\n    align-items: baseline;\n  }\n  .align-items-stretch {\n    align-items: stretch;\n  }\n  .align-content-start {\n    align-content: flex-start;\n  }\n  .align-content-end {\n    align-content: flex-end;\n  }\n  .align-content-center {\n    align-content: center;\n  }\n  .align-content-between {\n    align-content: space-between;\n  }\n  .align-content-around {\n    align-content: space-around;\n  }\n  .align-content-stretch {\n    align-content: stretch;\n  }\n  .align-self-auto {\n    align-self: auto;\n  }\n  .align-self-start {\n    align-self: flex-start;\n  }\n  .align-self-end {\n    align-self: flex-end;\n  }\n  .align-self-center {\n    align-self: center;\n  }\n  .align-self-baseline {\n    align-self: baseline;\n  }\n  .align-self-stretch {\n    align-self: stretch;\n  }\n  .place-items-start {\n    place-items: start;\n  }\n  .place-items-end {\n    place-items: end;\n  }\n  .place-items-center {\n    place-items: center;\n  }\n  .place-items-stretch {\n    place-items: stretch;\n  }\n  .grid-cols-3 {\n    --columns: 3;\n  }\n  .grid-cols-4 {\n    --columns: 4;\n  }\n  .grid-cols-6 {\n    --columns: 6;\n  }\n  .grid-cols-fill {\n    grid-column: 1 / -1;\n  }\n  .grid-auto-flow-row {\n    grid-auto-flow: row;\n  }\n  .grid-auto-flow-column {\n    grid-auto-flow: column;\n  }\n  .grid-auto-flow-dense {\n    grid-auto-flow: dense;\n  }\n  .order-first {\n    order: -1;\n  }\n  .order-0 {\n    order: 0;\n  }\n  .order-1 {\n    order: 1;\n  }\n  .order-2 {\n    order: 2;\n  }\n  .order-3 {\n    order: 3;\n  }\n  .order-4 {\n    order: 4;\n  }\n  .order-5 {\n    order: 5;\n  }\n  .order-last {\n    order: 6;\n  }\n  .m-0 {\n    margin: 0;\n  }\n  .m-1 {\n    margin: 0.25rem;\n  }\n  .m-2 {\n    margin: 0.5rem;\n  }\n  .m-3 {\n    margin: 1rem;\n  }\n  .m-4 {\n    margin: 1.5rem;\n  }\n  .m-5 {\n    margin: 3rem;\n  }\n  .m-auto {\n    margin: auto;\n  }\n  .mx-0 {\n    margin-inline: 0;\n  }\n  .mx-1 {\n    margin-inline: 0.25rem;\n  }\n  .mx-2 {\n    margin-inline: 0.5rem;\n  }\n  .mx-3 {\n    margin-inline: 1rem;\n  }\n  .mx-4 {\n    margin-inline: 1.5rem;\n  }\n  .mx-5 {\n    margin-inline: 3rem;\n  }\n  .mx-auto {\n    margin-inline: auto;\n  }\n  .my-0 {\n    margin-block: 0;\n  }\n  .my-1 {\n    margin-block: 0.25rem;\n  }\n  .my-2 {\n    margin-block: 0.5rem;\n  }\n  .my-3 {\n    margin-block: 1rem;\n  }\n  .my-4 {\n    margin-block: 1.5rem;\n  }\n  .my-5 {\n    margin-block: 3rem;\n  }\n  .my-auto {\n    margin-block: auto;\n  }\n  .mt-0 {\n    margin-block-start: 0;\n  }\n  .mt-1 {\n    margin-block-start: 0.25rem;\n  }\n  .mt-2 {\n    margin-block-start: 0.5rem;\n  }\n  .mt-3 {\n    margin-block-start: 1rem;\n  }\n  .mt-4 {\n    margin-block-start: 1.5rem;\n  }\n  .mt-5 {\n    margin-block-start: 3rem;\n  }\n  .mt-auto {\n    margin-block-start: auto;\n  }\n  .me-0 {\n    margin-inline-end: 0;\n  }\n  .me-1 {\n    margin-inline-end: 0.25rem;\n  }\n  .me-2 {\n    margin-inline-end: 0.5rem;\n  }\n  .me-3 {\n    margin-inline-end: 1rem;\n  }\n  .me-4 {\n    margin-inline-end: 1.5rem;\n  }\n  .me-5 {\n    margin-inline-end: 3rem;\n  }\n  .me-auto {\n    margin-inline-end: auto;\n  }\n  .mb-0 {\n    margin-block-end: 0;\n  }\n  .mb-1 {\n    margin-block-end: 0.25rem;\n  }\n  .mb-2 {\n    margin-block-end: 0.5rem;\n  }\n  .mb-3 {\n    margin-block-end: 1rem;\n  }\n  .mb-4 {\n    margin-block-end: 1.5rem;\n  }\n  .mb-5 {\n    margin-block-end: 3rem;\n  }\n  .mb-auto {\n    margin-block-end: auto;\n  }\n  .ms-0 {\n    margin-inline-start: 0;\n  }\n  .ms-1 {\n    margin-inline-start: 0.25rem;\n  }\n  .ms-2 {\n    margin-inline-start: 0.5rem;\n  }\n  .ms-3 {\n    margin-inline-start: 1rem;\n  }\n  .ms-4 {\n    margin-inline-start: 1.5rem;\n  }\n  .ms-5 {\n    margin-inline-start: 3rem;\n  }\n  .ms--1 {\n    margin-inline-start: -0.25rem;\n  }\n  .ms--2 {\n    margin-inline-start: -0.5rem;\n  }\n  .ms-auto {\n    margin-inline-start: auto;\n  }\n  .p-0 {\n    padding: 0;\n  }\n  .p-1 {\n    padding: 0.25rem;\n  }\n  .p-2 {\n    padding: 0.5rem;\n  }\n  .p-3 {\n    padding: 1rem;\n  }\n  .p-4 {\n    padding: 1.5rem;\n  }\n  .p-5 {\n    padding: 3rem;\n  }\n  .px-0 {\n    padding-inline: 0;\n  }\n  .px-1 {\n    padding-inline: 0.25rem;\n  }\n  .px-2 {\n    padding-inline: 0.5rem;\n  }\n  .px-3 {\n    padding-inline: 1rem;\n  }\n  .px-4 {\n    padding-inline: 1.5rem;\n  }\n  .px-5 {\n    padding-inline: 3rem;\n  }\n  .py-0 {\n    padding-block: 0;\n  }\n  .py-1 {\n    padding-block: 0.25rem;\n  }\n  .py-2 {\n    padding-block: 0.5rem;\n  }\n  .py-3 {\n    padding-block: 1rem;\n  }\n  .py-4 {\n    padding-block: 1.5rem;\n  }\n  .py-5 {\n    padding-block: 3rem;\n  }\n  .pt-0 {\n    padding-block-start: 0;\n  }\n  .pt-1 {\n    padding-block-start: 0.25rem;\n  }\n  .pt-2 {\n    padding-block-start: 0.5rem;\n  }\n  .pt-3 {\n    padding-block-start: 1rem;\n  }\n  .pt-4 {\n    padding-block-start: 1.5rem;\n  }\n  .pt-5 {\n    padding-block-start: 3rem;\n  }\n  .pe-0 {\n    padding-inline-end: 0;\n  }\n  .pe-1 {\n    padding-inline-end: 0.25rem;\n  }\n  .pe-2 {\n    padding-inline-end: 0.5rem;\n  }\n  .pe-3 {\n    padding-inline-end: 1rem;\n  }\n  .pe-4 {\n    padding-inline-end: 1.5rem;\n  }\n  .pe-5 {\n    padding-inline-end: 3rem;\n  }\n  .pb-0 {\n    padding-block-end: 0;\n  }\n  .pb-1 {\n    padding-block-end: 0.25rem;\n  }\n  .pb-2 {\n    padding-block-end: 0.5rem;\n  }\n  .pb-3 {\n    padding-block-end: 1rem;\n  }\n  .pb-4 {\n    padding-block-end: 1.5rem;\n  }\n  .pb-5 {\n    padding-block-end: 3rem;\n  }\n  .ps-0 {\n    padding-inline-start: 0;\n  }\n  .ps-1 {\n    padding-inline-start: 0.25rem;\n  }\n  .ps-2 {\n    padding-inline-start: 0.5rem;\n  }\n  .ps-3 {\n    padding-inline-start: 1rem;\n  }\n  .ps-4 {\n    padding-inline-start: 1.5rem;\n  }\n  .ps-5 {\n    padding-inline-start: 3rem;\n  }\n  .gap-0 {\n    gap: 0;\n  }\n  .gap-1 {\n    gap: 0.25rem;\n  }\n  .gap-2 {\n    gap: 0.5rem;\n  }\n  .gap-3 {\n    gap: 1rem;\n  }\n  .gap-4 {\n    gap: 1.5rem;\n  }\n  .gap-5 {\n    gap: 3rem;\n  }\n  .row-gap-0 {\n    row-gap: 0;\n  }\n  .row-gap-1 {\n    row-gap: 0.25rem;\n  }\n  .row-gap-2 {\n    row-gap: 0.5rem;\n  }\n  .row-gap-3 {\n    row-gap: 1rem;\n  }\n  .row-gap-4 {\n    row-gap: 1.5rem;\n  }\n  .row-gap-5 {\n    row-gap: 3rem;\n  }\n  .column-gap-0 {\n    column-gap: 0;\n  }\n  .column-gap-1 {\n    column-gap: 0.25rem;\n  }\n  .column-gap-2 {\n    column-gap: 0.5rem;\n  }\n  .column-gap-3 {\n    column-gap: 1rem;\n  }\n  .column-gap-4 {\n    column-gap: 1.5rem;\n  }\n  .column-gap-5 {\n    column-gap: 3rem;\n  }\n  @media (width >= 576px) {\n    .d-sm-inline {\n      display: inline;\n    }\n    .d-sm-inline-block {\n      display: inline-block;\n    }\n    .d-sm-block {\n      display: block;\n    }\n    .d-sm-grid {\n      display: grid;\n    }\n    .d-sm-inline-grid {\n      display: inline-grid;\n    }\n    .d-sm-table {\n      display: table;\n    }\n    .d-sm-table-row {\n      display: table-row;\n    }\n    .d-sm-table-cell {\n      display: table-cell;\n    }\n    .d-sm-flex {\n      display: flex;\n    }\n    .d-sm-inline-flex {\n      display: inline-flex;\n    }\n    .d-sm-contents {\n      display: contents;\n    }\n    .d-sm-flow-root {\n      display: flow-root;\n    }\n    .d-sm-none {\n      display: none;\n    }\n    .flex-sm-fill {\n      flex: 1 1 auto;\n    }\n    .flex-sm-row {\n      flex-direction: row;\n    }\n    .flex-sm-column {\n      flex-direction: column;\n    }\n    .flex-sm-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-sm-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-sm-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-sm-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-sm-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-sm-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-sm-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-sm-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-sm-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-sm-start {\n      justify-content: flex-start;\n    }\n    .justify-content-sm-end {\n      justify-content: flex-end;\n    }\n    .justify-content-sm-center {\n      justify-content: center;\n    }\n    .justify-content-sm-between {\n      justify-content: space-between;\n    }\n    .justify-content-sm-around {\n      justify-content: space-around;\n    }\n    .justify-content-sm-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-sm-start {\n      justify-items: start;\n    }\n    .justify-items-sm-end {\n      justify-items: end;\n    }\n    .justify-items-sm-center {\n      justify-items: center;\n    }\n    .justify-items-sm-stretch {\n      justify-items: stretch;\n    }\n    .align-items-sm-start {\n      align-items: flex-start;\n    }\n    .align-items-sm-end {\n      align-items: flex-end;\n    }\n    .align-items-sm-center {\n      align-items: center;\n    }\n    .align-items-sm-baseline {\n      align-items: baseline;\n    }\n    .align-items-sm-stretch {\n      align-items: stretch;\n    }\n    .align-content-sm-start {\n      align-content: flex-start;\n    }\n    .align-content-sm-end {\n      align-content: flex-end;\n    }\n    .align-content-sm-center {\n      align-content: center;\n    }\n    .align-content-sm-between {\n      align-content: space-between;\n    }\n    .align-content-sm-around {\n      align-content: space-around;\n    }\n    .align-content-sm-stretch {\n      align-content: stretch;\n    }\n    .align-self-sm-auto {\n      align-self: auto;\n    }\n    .align-self-sm-start {\n      align-self: flex-start;\n    }\n    .align-self-sm-end {\n      align-self: flex-end;\n    }\n    .align-self-sm-center {\n      align-self: center;\n    }\n    .align-self-sm-baseline {\n      align-self: baseline;\n    }\n    .align-self-sm-stretch {\n      align-self: stretch;\n    }\n    .place-items-sm-start {\n      place-items: start;\n    }\n    .place-items-sm-end {\n      place-items: end;\n    }\n    .place-items-sm-center {\n      place-items: center;\n    }\n    .place-items-sm-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-sm-3 {\n      --columns: 3;\n    }\n    .grid-cols-sm-4 {\n      --columns: 4;\n    }\n    .grid-cols-sm-6 {\n      --columns: 6;\n    }\n    .grid-cols-sm-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-sm-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-sm-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-sm-dense {\n      grid-auto-flow: dense;\n    }\n    .order-sm-first {\n      order: -1;\n    }\n    .order-sm-0 {\n      order: 0;\n    }\n    .order-sm-1 {\n      order: 1;\n    }\n    .order-sm-2 {\n      order: 2;\n    }\n    .order-sm-3 {\n      order: 3;\n    }\n    .order-sm-4 {\n      order: 4;\n    }\n    .order-sm-5 {\n      order: 5;\n    }\n    .order-sm-last {\n      order: 6;\n    }\n    .m-sm-0 {\n      margin: 0;\n    }\n    .m-sm-1 {\n      margin: 0.25rem;\n    }\n    .m-sm-2 {\n      margin: 0.5rem;\n    }\n    .m-sm-3 {\n      margin: 1rem;\n    }\n    .m-sm-4 {\n      margin: 1.5rem;\n    }\n    .m-sm-5 {\n      margin: 3rem;\n    }\n    .m-sm-auto {\n      margin: auto;\n    }\n    .mx-sm-0 {\n      margin-inline: 0;\n    }\n    .mx-sm-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-sm-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-sm-3 {\n      margin-inline: 1rem;\n    }\n    .mx-sm-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-sm-5 {\n      margin-inline: 3rem;\n    }\n    .mx-sm-auto {\n      margin-inline: auto;\n    }\n    .my-sm-0 {\n      margin-block: 0;\n    }\n    .my-sm-1 {\n      margin-block: 0.25rem;\n    }\n    .my-sm-2 {\n      margin-block: 0.5rem;\n    }\n    .my-sm-3 {\n      margin-block: 1rem;\n    }\n    .my-sm-4 {\n      margin-block: 1.5rem;\n    }\n    .my-sm-5 {\n      margin-block: 3rem;\n    }\n    .my-sm-auto {\n      margin-block: auto;\n    }\n    .mt-sm-0 {\n      margin-block-start: 0;\n    }\n    .mt-sm-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-sm-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-sm-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-sm-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-sm-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-sm-auto {\n      margin-block-start: auto;\n    }\n    .me-sm-0 {\n      margin-inline-end: 0;\n    }\n    .me-sm-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-sm-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-sm-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-sm-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-sm-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-sm-auto {\n      margin-inline-end: auto;\n    }\n    .mb-sm-0 {\n      margin-block-end: 0;\n    }\n    .mb-sm-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-sm-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-sm-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-sm-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-sm-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-sm-auto {\n      margin-block-end: auto;\n    }\n    .ms-sm-0 {\n      margin-inline-start: 0;\n    }\n    .ms-sm-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-sm-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-sm-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-sm-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-sm-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-sm--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-sm--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-sm-auto {\n      margin-inline-start: auto;\n    }\n    .p-sm-0 {\n      padding: 0;\n    }\n    .p-sm-1 {\n      padding: 0.25rem;\n    }\n    .p-sm-2 {\n      padding: 0.5rem;\n    }\n    .p-sm-3 {\n      padding: 1rem;\n    }\n    .p-sm-4 {\n      padding: 1.5rem;\n    }\n    .p-sm-5 {\n      padding: 3rem;\n    }\n    .px-sm-0 {\n      padding-inline: 0;\n    }\n    .px-sm-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-sm-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-sm-3 {\n      padding-inline: 1rem;\n    }\n    .px-sm-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-sm-5 {\n      padding-inline: 3rem;\n    }\n    .py-sm-0 {\n      padding-block: 0;\n    }\n    .py-sm-1 {\n      padding-block: 0.25rem;\n    }\n    .py-sm-2 {\n      padding-block: 0.5rem;\n    }\n    .py-sm-3 {\n      padding-block: 1rem;\n    }\n    .py-sm-4 {\n      padding-block: 1.5rem;\n    }\n    .py-sm-5 {\n      padding-block: 3rem;\n    }\n    .pt-sm-0 {\n      padding-block-start: 0;\n    }\n    .pt-sm-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-sm-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-sm-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-sm-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-sm-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-sm-0 {\n      padding-inline-end: 0;\n    }\n    .pe-sm-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-sm-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-sm-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-sm-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-sm-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-sm-0 {\n      padding-block-end: 0;\n    }\n    .pb-sm-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-sm-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-sm-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-sm-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-sm-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-sm-0 {\n      padding-inline-start: 0;\n    }\n    .ps-sm-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-sm-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-sm-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-sm-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-sm-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-sm-0 {\n      gap: 0;\n    }\n    .gap-sm-1 {\n      gap: 0.25rem;\n    }\n    .gap-sm-2 {\n      gap: 0.5rem;\n    }\n    .gap-sm-3 {\n      gap: 1rem;\n    }\n    .gap-sm-4 {\n      gap: 1.5rem;\n    }\n    .gap-sm-5 {\n      gap: 3rem;\n    }\n    .row-gap-sm-0 {\n      row-gap: 0;\n    }\n    .row-gap-sm-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-sm-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-sm-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-sm-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-sm-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-sm-0 {\n      column-gap: 0;\n    }\n    .column-gap-sm-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-sm-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-sm-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-sm-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-sm-5 {\n      column-gap: 3rem;\n    }\n  }\n  @media (width >= 768px) {\n    .d-md-inline {\n      display: inline;\n    }\n    .d-md-inline-block {\n      display: inline-block;\n    }\n    .d-md-block {\n      display: block;\n    }\n    .d-md-grid {\n      display: grid;\n    }\n    .d-md-inline-grid {\n      display: inline-grid;\n    }\n    .d-md-table {\n      display: table;\n    }\n    .d-md-table-row {\n      display: table-row;\n    }\n    .d-md-table-cell {\n      display: table-cell;\n    }\n    .d-md-flex {\n      display: flex;\n    }\n    .d-md-inline-flex {\n      display: inline-flex;\n    }\n    .d-md-contents {\n      display: contents;\n    }\n    .d-md-flow-root {\n      display: flow-root;\n    }\n    .d-md-none {\n      display: none;\n    }\n    .flex-md-fill {\n      flex: 1 1 auto;\n    }\n    .flex-md-row {\n      flex-direction: row;\n    }\n    .flex-md-column {\n      flex-direction: column;\n    }\n    .flex-md-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-md-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-md-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-md-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-md-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-md-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-md-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-md-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-md-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-md-start {\n      justify-content: flex-start;\n    }\n    .justify-content-md-end {\n      justify-content: flex-end;\n    }\n    .justify-content-md-center {\n      justify-content: center;\n    }\n    .justify-content-md-between {\n      justify-content: space-between;\n    }\n    .justify-content-md-around {\n      justify-content: space-around;\n    }\n    .justify-content-md-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-md-start {\n      justify-items: start;\n    }\n    .justify-items-md-end {\n      justify-items: end;\n    }\n    .justify-items-md-center {\n      justify-items: center;\n    }\n    .justify-items-md-stretch {\n      justify-items: stretch;\n    }\n    .align-items-md-start {\n      align-items: flex-start;\n    }\n    .align-items-md-end {\n      align-items: flex-end;\n    }\n    .align-items-md-center {\n      align-items: center;\n    }\n    .align-items-md-baseline {\n      align-items: baseline;\n    }\n    .align-items-md-stretch {\n      align-items: stretch;\n    }\n    .align-content-md-start {\n      align-content: flex-start;\n    }\n    .align-content-md-end {\n      align-content: flex-end;\n    }\n    .align-content-md-center {\n      align-content: center;\n    }\n    .align-content-md-between {\n      align-content: space-between;\n    }\n    .align-content-md-around {\n      align-content: space-around;\n    }\n    .align-content-md-stretch {\n      align-content: stretch;\n    }\n    .align-self-md-auto {\n      align-self: auto;\n    }\n    .align-self-md-start {\n      align-self: flex-start;\n    }\n    .align-self-md-end {\n      align-self: flex-end;\n    }\n    .align-self-md-center {\n      align-self: center;\n    }\n    .align-self-md-baseline {\n      align-self: baseline;\n    }\n    .align-self-md-stretch {\n      align-self: stretch;\n    }\n    .place-items-md-start {\n      place-items: start;\n    }\n    .place-items-md-end {\n      place-items: end;\n    }\n    .place-items-md-center {\n      place-items: center;\n    }\n    .place-items-md-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-md-3 {\n      --columns: 3;\n    }\n    .grid-cols-md-4 {\n      --columns: 4;\n    }\n    .grid-cols-md-6 {\n      --columns: 6;\n    }\n    .grid-cols-md-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-md-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-md-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-md-dense {\n      grid-auto-flow: dense;\n    }\n    .order-md-first {\n      order: -1;\n    }\n    .order-md-0 {\n      order: 0;\n    }\n    .order-md-1 {\n      order: 1;\n    }\n    .order-md-2 {\n      order: 2;\n    }\n    .order-md-3 {\n      order: 3;\n    }\n    .order-md-4 {\n      order: 4;\n    }\n    .order-md-5 {\n      order: 5;\n    }\n    .order-md-last {\n      order: 6;\n    }\n    .m-md-0 {\n      margin: 0;\n    }\n    .m-md-1 {\n      margin: 0.25rem;\n    }\n    .m-md-2 {\n      margin: 0.5rem;\n    }\n    .m-md-3 {\n      margin: 1rem;\n    }\n    .m-md-4 {\n      margin: 1.5rem;\n    }\n    .m-md-5 {\n      margin: 3rem;\n    }\n    .m-md-auto {\n      margin: auto;\n    }\n    .mx-md-0 {\n      margin-inline: 0;\n    }\n    .mx-md-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-md-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-md-3 {\n      margin-inline: 1rem;\n    }\n    .mx-md-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-md-5 {\n      margin-inline: 3rem;\n    }\n    .mx-md-auto {\n      margin-inline: auto;\n    }\n    .my-md-0 {\n      margin-block: 0;\n    }\n    .my-md-1 {\n      margin-block: 0.25rem;\n    }\n    .my-md-2 {\n      margin-block: 0.5rem;\n    }\n    .my-md-3 {\n      margin-block: 1rem;\n    }\n    .my-md-4 {\n      margin-block: 1.5rem;\n    }\n    .my-md-5 {\n      margin-block: 3rem;\n    }\n    .my-md-auto {\n      margin-block: auto;\n    }\n    .mt-md-0 {\n      margin-block-start: 0;\n    }\n    .mt-md-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-md-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-md-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-md-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-md-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-md-auto {\n      margin-block-start: auto;\n    }\n    .me-md-0 {\n      margin-inline-end: 0;\n    }\n    .me-md-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-md-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-md-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-md-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-md-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-md-auto {\n      margin-inline-end: auto;\n    }\n    .mb-md-0 {\n      margin-block-end: 0;\n    }\n    .mb-md-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-md-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-md-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-md-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-md-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-md-auto {\n      margin-block-end: auto;\n    }\n    .ms-md-0 {\n      margin-inline-start: 0;\n    }\n    .ms-md-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-md-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-md-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-md-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-md-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-md--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-md--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-md-auto {\n      margin-inline-start: auto;\n    }\n    .p-md-0 {\n      padding: 0;\n    }\n    .p-md-1 {\n      padding: 0.25rem;\n    }\n    .p-md-2 {\n      padding: 0.5rem;\n    }\n    .p-md-3 {\n      padding: 1rem;\n    }\n    .p-md-4 {\n      padding: 1.5rem;\n    }\n    .p-md-5 {\n      padding: 3rem;\n    }\n    .px-md-0 {\n      padding-inline: 0;\n    }\n    .px-md-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-md-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-md-3 {\n      padding-inline: 1rem;\n    }\n    .px-md-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-md-5 {\n      padding-inline: 3rem;\n    }\n    .py-md-0 {\n      padding-block: 0;\n    }\n    .py-md-1 {\n      padding-block: 0.25rem;\n    }\n    .py-md-2 {\n      padding-block: 0.5rem;\n    }\n    .py-md-3 {\n      padding-block: 1rem;\n    }\n    .py-md-4 {\n      padding-block: 1.5rem;\n    }\n    .py-md-5 {\n      padding-block: 3rem;\n    }\n    .pt-md-0 {\n      padding-block-start: 0;\n    }\n    .pt-md-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-md-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-md-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-md-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-md-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-md-0 {\n      padding-inline-end: 0;\n    }\n    .pe-md-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-md-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-md-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-md-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-md-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-md-0 {\n      padding-block-end: 0;\n    }\n    .pb-md-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-md-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-md-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-md-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-md-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-md-0 {\n      padding-inline-start: 0;\n    }\n    .ps-md-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-md-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-md-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-md-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-md-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-md-0 {\n      gap: 0;\n    }\n    .gap-md-1 {\n      gap: 0.25rem;\n    }\n    .gap-md-2 {\n      gap: 0.5rem;\n    }\n    .gap-md-3 {\n      gap: 1rem;\n    }\n    .gap-md-4 {\n      gap: 1.5rem;\n    }\n    .gap-md-5 {\n      gap: 3rem;\n    }\n    .row-gap-md-0 {\n      row-gap: 0;\n    }\n    .row-gap-md-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-md-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-md-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-md-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-md-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-md-0 {\n      column-gap: 0;\n    }\n    .column-gap-md-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-md-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-md-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-md-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-md-5 {\n      column-gap: 3rem;\n    }\n  }\n  @media (width >= 1024px) {\n    .d-lg-inline {\n      display: inline;\n    }\n    .d-lg-inline-block {\n      display: inline-block;\n    }\n    .d-lg-block {\n      display: block;\n    }\n    .d-lg-grid {\n      display: grid;\n    }\n    .d-lg-inline-grid {\n      display: inline-grid;\n    }\n    .d-lg-table {\n      display: table;\n    }\n    .d-lg-table-row {\n      display: table-row;\n    }\n    .d-lg-table-cell {\n      display: table-cell;\n    }\n    .d-lg-flex {\n      display: flex;\n    }\n    .d-lg-inline-flex {\n      display: inline-flex;\n    }\n    .d-lg-contents {\n      display: contents;\n    }\n    .d-lg-flow-root {\n      display: flow-root;\n    }\n    .d-lg-none {\n      display: none;\n    }\n    .flex-lg-fill {\n      flex: 1 1 auto;\n    }\n    .flex-lg-row {\n      flex-direction: row;\n    }\n    .flex-lg-column {\n      flex-direction: column;\n    }\n    .flex-lg-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-lg-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-lg-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-lg-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-lg-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-lg-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-lg-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-lg-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-lg-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-lg-start {\n      justify-content: flex-start;\n    }\n    .justify-content-lg-end {\n      justify-content: flex-end;\n    }\n    .justify-content-lg-center {\n      justify-content: center;\n    }\n    .justify-content-lg-between {\n      justify-content: space-between;\n    }\n    .justify-content-lg-around {\n      justify-content: space-around;\n    }\n    .justify-content-lg-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-lg-start {\n      justify-items: start;\n    }\n    .justify-items-lg-end {\n      justify-items: end;\n    }\n    .justify-items-lg-center {\n      justify-items: center;\n    }\n    .justify-items-lg-stretch {\n      justify-items: stretch;\n    }\n    .align-items-lg-start {\n      align-items: flex-start;\n    }\n    .align-items-lg-end {\n      align-items: flex-end;\n    }\n    .align-items-lg-center {\n      align-items: center;\n    }\n    .align-items-lg-baseline {\n      align-items: baseline;\n    }\n    .align-items-lg-stretch {\n      align-items: stretch;\n    }\n    .align-content-lg-start {\n      align-content: flex-start;\n    }\n    .align-content-lg-end {\n      align-content: flex-end;\n    }\n    .align-content-lg-center {\n      align-content: center;\n    }\n    .align-content-lg-between {\n      align-content: space-between;\n    }\n    .align-content-lg-around {\n      align-content: space-around;\n    }\n    .align-content-lg-stretch {\n      align-content: stretch;\n    }\n    .align-self-lg-auto {\n      align-self: auto;\n    }\n    .align-self-lg-start {\n      align-self: flex-start;\n    }\n    .align-self-lg-end {\n      align-self: flex-end;\n    }\n    .align-self-lg-center {\n      align-self: center;\n    }\n    .align-self-lg-baseline {\n      align-self: baseline;\n    }\n    .align-self-lg-stretch {\n      align-self: stretch;\n    }\n    .place-items-lg-start {\n      place-items: start;\n    }\n    .place-items-lg-end {\n      place-items: end;\n    }\n    .place-items-lg-center {\n      place-items: center;\n    }\n    .place-items-lg-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-lg-3 {\n      --columns: 3;\n    }\n    .grid-cols-lg-4 {\n      --columns: 4;\n    }\n    .grid-cols-lg-6 {\n      --columns: 6;\n    }\n    .grid-cols-lg-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-lg-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-lg-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-lg-dense {\n      grid-auto-flow: dense;\n    }\n    .order-lg-first {\n      order: -1;\n    }\n    .order-lg-0 {\n      order: 0;\n    }\n    .order-lg-1 {\n      order: 1;\n    }\n    .order-lg-2 {\n      order: 2;\n    }\n    .order-lg-3 {\n      order: 3;\n    }\n    .order-lg-4 {\n      order: 4;\n    }\n    .order-lg-5 {\n      order: 5;\n    }\n    .order-lg-last {\n      order: 6;\n    }\n    .m-lg-0 {\n      margin: 0;\n    }\n    .m-lg-1 {\n      margin: 0.25rem;\n    }\n    .m-lg-2 {\n      margin: 0.5rem;\n    }\n    .m-lg-3 {\n      margin: 1rem;\n    }\n    .m-lg-4 {\n      margin: 1.5rem;\n    }\n    .m-lg-5 {\n      margin: 3rem;\n    }\n    .m-lg-auto {\n      margin: auto;\n    }\n    .mx-lg-0 {\n      margin-inline: 0;\n    }\n    .mx-lg-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-lg-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-lg-3 {\n      margin-inline: 1rem;\n    }\n    .mx-lg-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-lg-5 {\n      margin-inline: 3rem;\n    }\n    .mx-lg-auto {\n      margin-inline: auto;\n    }\n    .my-lg-0 {\n      margin-block: 0;\n    }\n    .my-lg-1 {\n      margin-block: 0.25rem;\n    }\n    .my-lg-2 {\n      margin-block: 0.5rem;\n    }\n    .my-lg-3 {\n      margin-block: 1rem;\n    }\n    .my-lg-4 {\n      margin-block: 1.5rem;\n    }\n    .my-lg-5 {\n      margin-block: 3rem;\n    }\n    .my-lg-auto {\n      margin-block: auto;\n    }\n    .mt-lg-0 {\n      margin-block-start: 0;\n    }\n    .mt-lg-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-lg-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-lg-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-lg-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-lg-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-lg-auto {\n      margin-block-start: auto;\n    }\n    .me-lg-0 {\n      margin-inline-end: 0;\n    }\n    .me-lg-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-lg-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-lg-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-lg-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-lg-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-lg-auto {\n      margin-inline-end: auto;\n    }\n    .mb-lg-0 {\n      margin-block-end: 0;\n    }\n    .mb-lg-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-lg-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-lg-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-lg-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-lg-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-lg-auto {\n      margin-block-end: auto;\n    }\n    .ms-lg-0 {\n      margin-inline-start: 0;\n    }\n    .ms-lg-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-lg-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-lg-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-lg-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-lg-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-lg--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-lg--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-lg-auto {\n      margin-inline-start: auto;\n    }\n    .p-lg-0 {\n      padding: 0;\n    }\n    .p-lg-1 {\n      padding: 0.25rem;\n    }\n    .p-lg-2 {\n      padding: 0.5rem;\n    }\n    .p-lg-3 {\n      padding: 1rem;\n    }\n    .p-lg-4 {\n      padding: 1.5rem;\n    }\n    .p-lg-5 {\n      padding: 3rem;\n    }\n    .px-lg-0 {\n      padding-inline: 0;\n    }\n    .px-lg-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-lg-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-lg-3 {\n      padding-inline: 1rem;\n    }\n    .px-lg-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-lg-5 {\n      padding-inline: 3rem;\n    }\n    .py-lg-0 {\n      padding-block: 0;\n    }\n    .py-lg-1 {\n      padding-block: 0.25rem;\n    }\n    .py-lg-2 {\n      padding-block: 0.5rem;\n    }\n    .py-lg-3 {\n      padding-block: 1rem;\n    }\n    .py-lg-4 {\n      padding-block: 1.5rem;\n    }\n    .py-lg-5 {\n      padding-block: 3rem;\n    }\n    .pt-lg-0 {\n      padding-block-start: 0;\n    }\n    .pt-lg-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-lg-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-lg-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-lg-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-lg-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-lg-0 {\n      padding-inline-end: 0;\n    }\n    .pe-lg-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-lg-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-lg-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-lg-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-lg-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-lg-0 {\n      padding-block-end: 0;\n    }\n    .pb-lg-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-lg-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-lg-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-lg-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-lg-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-lg-0 {\n      padding-inline-start: 0;\n    }\n    .ps-lg-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-lg-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-lg-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-lg-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-lg-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-lg-0 {\n      gap: 0;\n    }\n    .gap-lg-1 {\n      gap: 0.25rem;\n    }\n    .gap-lg-2 {\n      gap: 0.5rem;\n    }\n    .gap-lg-3 {\n      gap: 1rem;\n    }\n    .gap-lg-4 {\n      gap: 1.5rem;\n    }\n    .gap-lg-5 {\n      gap: 3rem;\n    }\n    .row-gap-lg-0 {\n      row-gap: 0;\n    }\n    .row-gap-lg-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-lg-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-lg-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-lg-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-lg-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-lg-0 {\n      column-gap: 0;\n    }\n    .column-gap-lg-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-lg-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-lg-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-lg-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-lg-5 {\n      column-gap: 3rem;\n    }\n  }\n  @media (width >= 1280px) {\n    .d-xl-inline {\n      display: inline;\n    }\n    .d-xl-inline-block {\n      display: inline-block;\n    }\n    .d-xl-block {\n      display: block;\n    }\n    .d-xl-grid {\n      display: grid;\n    }\n    .d-xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-xl-table {\n      display: table;\n    }\n    .d-xl-table-row {\n      display: table-row;\n    }\n    .d-xl-table-cell {\n      display: table-cell;\n    }\n    .d-xl-flex {\n      display: flex;\n    }\n    .d-xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-xl-contents {\n      display: contents;\n    }\n    .d-xl-flow-root {\n      display: flow-root;\n    }\n    .d-xl-none {\n      display: none;\n    }\n    .flex-xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-xl-row {\n      flex-direction: row;\n    }\n    .flex-xl-column {\n      flex-direction: column;\n    }\n    .flex-xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-xl-center {\n      justify-content: center;\n    }\n    .justify-content-xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-xl-start {\n      justify-items: start;\n    }\n    .justify-items-xl-end {\n      justify-items: end;\n    }\n    .justify-items-xl-center {\n      justify-items: center;\n    }\n    .justify-items-xl-stretch {\n      justify-items: stretch;\n    }\n    .align-items-xl-start {\n      align-items: flex-start;\n    }\n    .align-items-xl-end {\n      align-items: flex-end;\n    }\n    .align-items-xl-center {\n      align-items: center;\n    }\n    .align-items-xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-xl-start {\n      align-content: flex-start;\n    }\n    .align-content-xl-end {\n      align-content: flex-end;\n    }\n    .align-content-xl-center {\n      align-content: center;\n    }\n    .align-content-xl-between {\n      align-content: space-between;\n    }\n    .align-content-xl-around {\n      align-content: space-around;\n    }\n    .align-content-xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-xl-auto {\n      align-self: auto;\n    }\n    .align-self-xl-start {\n      align-self: flex-start;\n    }\n    .align-self-xl-end {\n      align-self: flex-end;\n    }\n    .align-self-xl-center {\n      align-self: center;\n    }\n    .align-self-xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-xl-start {\n      place-items: start;\n    }\n    .place-items-xl-end {\n      place-items: end;\n    }\n    .place-items-xl-center {\n      place-items: center;\n    }\n    .place-items-xl-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-xl-3 {\n      --columns: 3;\n    }\n    .grid-cols-xl-4 {\n      --columns: 4;\n    }\n    .grid-cols-xl-6 {\n      --columns: 6;\n    }\n    .grid-cols-xl-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-xl-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-xl-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-xl-dense {\n      grid-auto-flow: dense;\n    }\n    .order-xl-first {\n      order: -1;\n    }\n    .order-xl-0 {\n      order: 0;\n    }\n    .order-xl-1 {\n      order: 1;\n    }\n    .order-xl-2 {\n      order: 2;\n    }\n    .order-xl-3 {\n      order: 3;\n    }\n    .order-xl-4 {\n      order: 4;\n    }\n    .order-xl-5 {\n      order: 5;\n    }\n    .order-xl-last {\n      order: 6;\n    }\n    .m-xl-0 {\n      margin: 0;\n    }\n    .m-xl-1 {\n      margin: 0.25rem;\n    }\n    .m-xl-2 {\n      margin: 0.5rem;\n    }\n    .m-xl-3 {\n      margin: 1rem;\n    }\n    .m-xl-4 {\n      margin: 1.5rem;\n    }\n    .m-xl-5 {\n      margin: 3rem;\n    }\n    .m-xl-auto {\n      margin: auto;\n    }\n    .mx-xl-0 {\n      margin-inline: 0;\n    }\n    .mx-xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-xl-auto {\n      margin-inline: auto;\n    }\n    .my-xl-0 {\n      margin-block: 0;\n    }\n    .my-xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-xl-3 {\n      margin-block: 1rem;\n    }\n    .my-xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-xl-5 {\n      margin-block: 3rem;\n    }\n    .my-xl-auto {\n      margin-block: auto;\n    }\n    .mt-xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-xl-auto {\n      margin-block-start: auto;\n    }\n    .me-xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-xl-0 {\n      padding: 0;\n    }\n    .p-xl-1 {\n      padding: 0.25rem;\n    }\n    .p-xl-2 {\n      padding: 0.5rem;\n    }\n    .p-xl-3 {\n      padding: 1rem;\n    }\n    .p-xl-4 {\n      padding: 1.5rem;\n    }\n    .p-xl-5 {\n      padding: 3rem;\n    }\n    .px-xl-0 {\n      padding-inline: 0;\n    }\n    .px-xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-xl-0 {\n      padding-block: 0;\n    }\n    .py-xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-xl-3 {\n      padding-block: 1rem;\n    }\n    .py-xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-xl-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-xl-0 {\n      gap: 0;\n    }\n    .gap-xl-1 {\n      gap: 0.25rem;\n    }\n    .gap-xl-2 {\n      gap: 0.5rem;\n    }\n    .gap-xl-3 {\n      gap: 1rem;\n    }\n    .gap-xl-4 {\n      gap: 1.5rem;\n    }\n    .gap-xl-5 {\n      gap: 3rem;\n    }\n    .row-gap-xl-0 {\n      row-gap: 0;\n    }\n    .row-gap-xl-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-xl-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-xl-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-xl-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-xl-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-xl-0 {\n      column-gap: 0;\n    }\n    .column-gap-xl-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-xl-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-xl-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-xl-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-xl-5 {\n      column-gap: 3rem;\n    }\n  }\n  @media (width >= 1536px) {\n    .d-2xl-inline {\n      display: inline;\n    }\n    .d-2xl-inline-block {\n      display: inline-block;\n    }\n    .d-2xl-block {\n      display: block;\n    }\n    .d-2xl-grid {\n      display: grid;\n    }\n    .d-2xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-2xl-table {\n      display: table;\n    }\n    .d-2xl-table-row {\n      display: table-row;\n    }\n    .d-2xl-table-cell {\n      display: table-cell;\n    }\n    .d-2xl-flex {\n      display: flex;\n    }\n    .d-2xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-2xl-contents {\n      display: contents;\n    }\n    .d-2xl-flow-root {\n      display: flow-root;\n    }\n    .d-2xl-none {\n      display: none;\n    }\n    .flex-2xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-2xl-row {\n      flex-direction: row;\n    }\n    .flex-2xl-column {\n      flex-direction: column;\n    }\n    .flex-2xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-2xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-2xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-2xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-2xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-2xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-2xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-2xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-2xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-2xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-2xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-2xl-center {\n      justify-content: center;\n    }\n    .justify-content-2xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-2xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-2xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-2xl-start {\n      justify-items: start;\n    }\n    .justify-items-2xl-end {\n      justify-items: end;\n    }\n    .justify-items-2xl-center {\n      justify-items: center;\n    }\n    .justify-items-2xl-stretch {\n      justify-items: stretch;\n    }\n    .align-items-2xl-start {\n      align-items: flex-start;\n    }\n    .align-items-2xl-end {\n      align-items: flex-end;\n    }\n    .align-items-2xl-center {\n      align-items: center;\n    }\n    .align-items-2xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-2xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-2xl-start {\n      align-content: flex-start;\n    }\n    .align-content-2xl-end {\n      align-content: flex-end;\n    }\n    .align-content-2xl-center {\n      align-content: center;\n    }\n    .align-content-2xl-between {\n      align-content: space-between;\n    }\n    .align-content-2xl-around {\n      align-content: space-around;\n    }\n    .align-content-2xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-2xl-auto {\n      align-self: auto;\n    }\n    .align-self-2xl-start {\n      align-self: flex-start;\n    }\n    .align-self-2xl-end {\n      align-self: flex-end;\n    }\n    .align-self-2xl-center {\n      align-self: center;\n    }\n    .align-self-2xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-2xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-2xl-start {\n      place-items: start;\n    }\n    .place-items-2xl-end {\n      place-items: end;\n    }\n    .place-items-2xl-center {\n      place-items: center;\n    }\n    .place-items-2xl-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-2xl-3 {\n      --columns: 3;\n    }\n    .grid-cols-2xl-4 {\n      --columns: 4;\n    }\n    .grid-cols-2xl-6 {\n      --columns: 6;\n    }\n    .grid-cols-2xl-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-2xl-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-2xl-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-2xl-dense {\n      grid-auto-flow: dense;\n    }\n    .order-2xl-first {\n      order: -1;\n    }\n    .order-2xl-0 {\n      order: 0;\n    }\n    .order-2xl-1 {\n      order: 1;\n    }\n    .order-2xl-2 {\n      order: 2;\n    }\n    .order-2xl-3 {\n      order: 3;\n    }\n    .order-2xl-4 {\n      order: 4;\n    }\n    .order-2xl-5 {\n      order: 5;\n    }\n    .order-2xl-last {\n      order: 6;\n    }\n    .m-2xl-0 {\n      margin: 0;\n    }\n    .m-2xl-1 {\n      margin: 0.25rem;\n    }\n    .m-2xl-2 {\n      margin: 0.5rem;\n    }\n    .m-2xl-3 {\n      margin: 1rem;\n    }\n    .m-2xl-4 {\n      margin: 1.5rem;\n    }\n    .m-2xl-5 {\n      margin: 3rem;\n    }\n    .m-2xl-auto {\n      margin: auto;\n    }\n    .mx-2xl-0 {\n      margin-inline: 0;\n    }\n    .mx-2xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-2xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-2xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-2xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-2xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-2xl-auto {\n      margin-inline: auto;\n    }\n    .my-2xl-0 {\n      margin-block: 0;\n    }\n    .my-2xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-2xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-2xl-3 {\n      margin-block: 1rem;\n    }\n    .my-2xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-2xl-5 {\n      margin-block: 3rem;\n    }\n    .my-2xl-auto {\n      margin-block: auto;\n    }\n    .mt-2xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-2xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-2xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-2xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-2xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-2xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-2xl-auto {\n      margin-block-start: auto;\n    }\n    .me-2xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-2xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-2xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-2xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-2xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-2xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-2xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-2xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-2xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-2xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-2xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-2xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-2xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-2xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-2xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-2xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-2xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-2xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-2xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-2xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-2xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-2xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-2xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-2xl-0 {\n      padding: 0;\n    }\n    .p-2xl-1 {\n      padding: 0.25rem;\n    }\n    .p-2xl-2 {\n      padding: 0.5rem;\n    }\n    .p-2xl-3 {\n      padding: 1rem;\n    }\n    .p-2xl-4 {\n      padding: 1.5rem;\n    }\n    .p-2xl-5 {\n      padding: 3rem;\n    }\n    .px-2xl-0 {\n      padding-inline: 0;\n    }\n    .px-2xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-2xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-2xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-2xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-2xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-2xl-0 {\n      padding-block: 0;\n    }\n    .py-2xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-2xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-2xl-3 {\n      padding-block: 1rem;\n    }\n    .py-2xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-2xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-2xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-2xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-2xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-2xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-2xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-2xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-2xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-2xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-2xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-2xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-2xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-2xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-2xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-2xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-2xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-2xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-2xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-2xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-2xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-2xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-2xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-2xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-2xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-2xl-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-2xl-0 {\n      gap: 0;\n    }\n    .gap-2xl-1 {\n      gap: 0.25rem;\n    }\n    .gap-2xl-2 {\n      gap: 0.5rem;\n    }\n    .gap-2xl-3 {\n      gap: 1rem;\n    }\n    .gap-2xl-4 {\n      gap: 1.5rem;\n    }\n    .gap-2xl-5 {\n      gap: 3rem;\n    }\n    .row-gap-2xl-0 {\n      row-gap: 0;\n    }\n    .row-gap-2xl-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-2xl-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-2xl-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-2xl-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-2xl-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-2xl-0 {\n      column-gap: 0;\n    }\n    .column-gap-2xl-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-2xl-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-2xl-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-2xl-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-2xl-5 {\n      column-gap: 3rem;\n    }\n  }\n}\n:root {\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 1024px;\n  --breakpoint-xl: 1280px;\n  --breakpoint-2xl: 1536px;\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","$file: \"\" !default;\n\n/*!\n  * Bootstrap #{$file} v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n","@use \"../config\" as *;\n@use \"breakpoints\" as *;\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n  --gutter-x: #{$gutter};\n  --gutter-y: 0;\n  width: 100%;\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-inline: auto;\n}\n\n@layer layout {\n  @if $enable-container-classes {\n    // Single container class with breakpoint max-widths\n    .container,\n    // 100% wide container at all breakpoints\n    .container-fluid {\n      @include make-container();\n    }\n\n    // Responsive containers that are 100% wide until a breakpoint\n    @each $breakpoint, $container-max-width in $container-max-widths {\n      .container-#{$breakpoint} {\n        @extend .container-fluid;\n      }\n\n      @include media-breakpoint-up($breakpoint, $breakpoints) {\n        // Extend each breakpoint which is smaller or equal to the current breakpoint\n        $extend-breakpoint: true;\n\n        %responsive-container-#{$breakpoint} {\n          max-width: $container-max-width;\n        }\n\n        @each $name, $width in $breakpoints {\n          @if ($extend-breakpoint) {\n            .container#{breakpoint-infix($name, $breakpoints)} {\n              @extend %responsive-container-#{$breakpoint};\n            }\n\n            // Once the current breakpoint is reached, stop extending\n            @if ($breakpoint == $name) {\n              $extend-breakpoint: false;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"../config\" as *;\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px)\n//\n// The map defined in the `$breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl 2xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $breakpoints, $breakpoint-names: map.keys($breakpoints)) {\n  $n: list.index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoint-names}`\";\n  }\n  // Use @if/@else because list.nth would error if evaluated when $n equals list length\n  @if $n < list.length($breakpoint-names) {\n    @return list.nth($breakpoint-names, $n + 1);\n  } @else {\n    @return null;\n  }\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $breakpoints) {\n  $min: map.get($breakpoints, $name);\n  @return if(sass($min != 0): $min; else: null);\n}\n\n// Maximum breakpoint width for range media queries.\n// Returns the breakpoint value to use as an upper bound in range queries.\n//\n//    >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n//    >> breakpoint-max(xxl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    null\n@function breakpoint-max($name, $breakpoints: $breakpoints) {\n  @if $name == null {\n    @return null;\n  }\n  $max: map.get($breakpoints, $name);\n  @return if(sass($max and $max > 0): $max; else: null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $breakpoints) {\n  @return if(sass(breakpoint-min($name, $breakpoints) == null): \"\"; else: \"-#{$name}\");\n}\n\n// Iterate all breakpoints and provide the current name and infix.\n//\n//    @include loop-breakpoints-up() using ($breakpoint, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-up($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n    @content($breakpoint, $infix);\n  }\n}\n\n// Iterate all breakpoints and provide the current name, next name, and next infix.\n//\n//    @include loop-breakpoints-down() using ($breakpoint, $next, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-down($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $next: breakpoint-next($breakpoint, $breakpoints);\n    $infix: breakpoint-infix($next, $breakpoints);\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Backwards-compatible alias for next/down breakpoint loops.\n@mixin loop-breakpoints($breakpoints: $breakpoints) {\n  @include loop-breakpoints-down($breakpoints) using ($breakpoint, $next, $infix) {\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (width >= $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (width < $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n\n// Container queries\n//\n// Container queries allow elements to respond to the size of a containing element\n// rather than the viewport. These mixins mirror the media-breakpoint-* mixins above.\n//\n// scss-docs-start container-query-mixins\n\n// Set an element as a query container.\n//\n//    @include set-container();                    // container-type: inline-size\n//    @include set-container(size);                // container-type: size\n//    @include set-container(inline-size, sidebar); // container: sidebar / inline-size\n//\n@mixin set-container($type: inline-size, $name: null) {\n  @if $name {\n    container: #{$name} / #{$type};\n  } @else {\n    container-type: #{$type};\n  }\n}\n\n// Container query of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider within the container.\n//\n//    @include container-breakpoint-up(md) { ... }\n//    @include container-breakpoint-up(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-up($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower within the container.\n//\n//    @include container-breakpoint-down(lg) { ... }\n//    @include container-breakpoint-down(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-down($name, $container-name: null, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @if $container-name {\n      @container #{$container-name} (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints within the container.\n//\n//    @include container-breakpoint-between(md, xl) { ... }\n//    @include container-breakpoint-between(md, xl, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-between($lower, $upper, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($lower, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($upper, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Container query between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint within the container.\n//\n//    @include container-breakpoint-only(md) { ... }\n//    @include container-breakpoint-only(md, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-only($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($name, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($next, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n// scss-docs-end container-query-mixins\n","@use \"sass:map\";\n@use \"sass:meta\";\n\n// Configuration\n//\n// Variables and settings not related to theme, components, and more go here. It does include layout.\n\n// Merge overrides on top of defaults, stripping null entries.\n// Null values let users remove map keys via @use ... with().\n// Accepts a list as $defaults (converted to a map with `true` values).\n@function defaults($defaults, $overrides) {\n  @if meta.type-of($defaults) == \"list\" {\n    $map: ();\n    @each $key in $defaults {\n      $map: map.merge($map, ($key: true));\n    }\n    $defaults: $map;\n  }\n  $merged: map.merge($defaults, $overrides);\n  @each $key, $value in $merged {\n    @if $value == null {\n      $merged: map.remove($merged, $key);\n    }\n  }\n  @return $merged;\n}\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              true !default;\n$enable-gradients:            false !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        true !default;\n$enable-grid-classes:         true !default;\n$enable-container-classes:    true !default;\n$enable-cssgrid:              true !default;\n$enable-button-pointers:      true !default;\n$enable-validation-icons:     true !default;\n// $enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n\n$enable-dark-mode:            true !default;\n\n$color-mode-type:          \"media-query\" !default;\n$color-contrast-dark:      #000 !default;\n$color-contrast-light:     #fff !default;\n$min-contrast-ratio:         4.5 !default;\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n\n$negative-spacers: (\n  \"-1\": $spacer * -.25,\n  \"-2\": $spacer * -.5,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n$sizes: (\n  1: $spacer,\n  2: calc($spacer * 2),\n  3: calc($spacer * 3),\n  4: calc($spacer * 4),\n  5: calc($spacer * 5),\n  6: calc($spacer * 6),\n  7: calc($spacer * 7),\n  8: calc($spacer * 8),\n  9: calc($spacer * 9),\n  10: calc($spacer * 10),\n  11: calc($spacer * 11),\n  12: calc($spacer * 12),\n) !default;\n\n// Breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start breakpoints\n$breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 1024px,\n  xl: 1280px,\n  2xl: 1536px\n) !default;\n// scss-docs-end breakpoints\n\n// @include _assert-ascending($breakpoints, \"$breakpoints\");\n// @include _assert-starts-at-zero($breakpoints, \"$breakpoints\");\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-x: 1.5rem !default;\n$grid-gutter-y: 0 !default;\n$grid-row-columns: 6 !default;\n\n$gutters: $spacers !default;\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1200px,\n  2xl: 1440px\n) !default;\n// scss-docs-end container-max-widths\n\n$container-padding-x: $grid-gutter-x !default;\n\n$utilities: () !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent)) !default;\n// scss-docs-end variable-gradient\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Links\n//\n// Style anchor elements.\n\n$link-decoration:                         underline !default;\n$link-underline-offset:                   .2em !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap:               .375rem !default;\n$icon-link-underline-offset:  .25em !default;\n$icon-link-icon-size:         1em !default;\n$icon-link-icon-transition:   .2s ease-in-out transform !default;\n$icon-link-icon-transform:    translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n$border-style:                solid !default;\n$border-color:                color-mix(in oklch, var(--gray-100), var(--gray-200)) !default;\n// scss-docs-end border-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"auto\": auto,\n  \"1x1\": #{\"1 / 1\"},\n  \"4x3\": #{\"4 / 3\"},\n  \"16x9\": #{\"16 / 9\"},\n  \"21x9\": #{\"21 / 9\"}\n) !default;\n// scss-docs-end aspect-ratios\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-medium:          500 !default;\n$font-weight-semibold:        600 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$font-sizes: defaults(\n  (\n    \"xs\": (\n      \"font-size\": .75rem,\n      \"line-height\": 1.25\n    ),\n    \"sm\": (\n      \"font-size\": .875rem,\n      \"line-height\": 1.5\n    ),\n    \"md\": (\n      \"font-size\": 1rem,\n      \"line-height\": 1.5\n    ),\n    \"lg\": (\n      \"font-size\": clamp(1.25rem, 1rem + .625vw, 1.5rem),\n      \"line-height\": 1.5\n    ),\n    \"xl\": (\n      \"font-size\": clamp(1.5rem, 1.1rem + .75vw, 1.75rem),\n      \"line-height\": calc(2.5 / 1.75)\n    ),\n    \"2xl\": (\n      \"font-size\": clamp(1.75rem, 1.3rem + 1vw, 2rem),\n      \"line-height\": calc(3 / 2.25)\n    ),\n    \"3xl\": (\n      \"font-size\": clamp(2rem, 1.5rem + 1.875vw, 2.5rem),\n      \"line-height\": 1.2\n    ),\n    \"4xl\": (\n      \"font-size\": clamp(2.25rem, 1.75rem + 2.5vw, 3rem),\n      \"line-height\": 1.1\n    ),\n    \"5xl\": (\n      \"font-size\": clamp(3rem, 2rem + 5vw, 4rem),\n      \"line-height\": 1.1\n    ),\n    \"6xl\": (\n      \"font-size\": clamp(3.75rem, 2.5rem + 6.25vw, 5rem),\n      \"line-height\": 1\n    ),\n  ),\n  $font-sizes\n);\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start type-variables\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n// scss-docs-end type-variables\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-menu:                       1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-dialog:                     1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n$zindex-toast:                      1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n  n1: -1,\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n","@use \"../config\" as *;\n@use \"../mixins/grid\" as *;\n\n// mdo-do\n// - check gap utilities as replacement for gutter classes from v5\n\n@layer layout {\n  @if $enable-grid-classes {\n    .row {\n      @include make-row();\n\n      > * {\n        @include make-col-ready();\n      }\n    }\n\n    @include make-grid-columns();\n  }\n\n  @if $enable-cssgrid {\n    .grid {\n      --columns: #{$grid-columns};\n      --rows: 1;\n      --gap: #{$grid-gutter-x};\n\n      display: grid;\n      grid-template-rows: repeat(var(--rows), 1fr);\n      grid-template-columns: repeat(var(--columns), 1fr);\n      gap: var(--gap);\n\n    }\n\n    @include make-cssgrid();\n  }\n\n  // mdo-do: add to utilities?\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n\n  .grid-fill {\n    --gap: #{$grid-gutter-x};\n\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n\n  // .g-col-auto {\n  //   grid-column: auto;\n  // }\n\n  // mdo-do: add to utilities?\n  // .grid-cols-3 {\n  //   --columns: 3;\n  // }\n  // .grid-cols-4 {\n  //   --columns: 4;\n  // }\n  // .grid-cols-6 {\n  //   --columns: 6;\n  // }\n\n  // .grid-full {\n  //   grid-column: 1 / -1;\n  // }\n}\n","@use \"sass:map\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n\n// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter-x: $grid-gutter-x, $gutter-y: $grid-gutter-y) {\n  --gutter-x: #{$gutter-x};\n  --gutter-y: #{$gutter-y};\n  display: flex;\n  flex-wrap: wrap;\n  // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n  margin-inline: calc(-.5 * var(--gutter-x));\n  margin-top: calc(-1 * var(--gutter-y));\n}\n\n@mixin make-col-ready() {\n  // Add box sizing if only the grid is loaded\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  box-sizing: if(sass(meta.variable-exists(include-column-box-sizing) and $include-column-box-sizing): border-box; else: null);\n  // Prevent columns from becoming too narrow when at smaller grid tiers by\n  // always setting `width: 100%;`. This works because we set the width\n  // later on to override this initial width.\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-top: var(--gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n  @if $size {\n    flex: 0 0 auto;\n    width: math.percentage(math.div($size, $columns));\n\n  } @else {\n    flex: 1 1 0;\n    max-width: 100%;\n  }\n}\n\n@mixin make-col-auto() {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n  $num: math.div($size, $columns);\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  margin-inline-start: if(sass($num == 0): 0; else: math.percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n  > * {\n    flex: 0 0 auto;\n    width: math.percentage(math.div(1, $count));\n  }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-x, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n      .col#{$infix} {\n        flex: 1 0 0;\n      }\n\n      .row-cols#{$infix}-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .row-cols#{$infix}-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .col#{$infix}-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .col#{$infix}-#{$i} {\n            @include make-col($i, $columns);\n          }\n        }\n\n        // `$columns - 1` because offsetting by the width of an entire row isn't possible\n        @for $i from 0 through ($columns - 1) {\n          @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .offset#{$infix}-#{$i} {\n              @include make-col-offset($i, $columns);\n            }\n          }\n        }\n      }\n\n      // Gutters\n      //\n      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n      @each $key, $value in $gutters {\n        .g#{$infix}-#{$key},\n        .gx#{$infix}-#{$key} {\n          --gutter-x: #{$value};\n        }\n\n        .g#{$infix}-#{$key},\n        .gy#{$infix}-#{$key} {\n          --gutter-y: #{$value};\n        }\n      }\n    }\n  }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .g-col#{$infix}-#{$i} {\n            grid-column: auto / span $i;\n          }\n        }\n\n        // Start with `1` because `0` is an invalid value.\n        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n        @for $i from 1 through ($columns - 1) {\n          .g-start#{$infix}-#{$i} {\n            grid-column-start: $i;\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n@use \"../mixins/utilities\" as *;\n@use \"../utilities\" as *;\n\n@layer utilities {\n  // Loop over each breakpoint\n  @each $breakpoint in map.keys($breakpoints) {\n\n    // Generate media query if needed\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if meta.type-of($utility) == \"map\" and (map.get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix);\n        }\n      }\n    }\n  }\n\n  // Print utilities\n  @media print {\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Then check if the utility needs print styles\n      @if meta.type-of($utility) == \"map\" and map.get($utility, print) == true {\n        @include generate-utility($utility, \"-print\");\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n\n// stylelint-disable scss/dollar-variable-pattern\n\n// Utility generator\n\n// - Utilities can use three different types of selectors:\n//   - class: .class\n//   - attr-starts: [class^=\"class\"]\n//   - attr-includes: [class*=\"class\"]\n// - Utilities can generate regular CSS properties and CSS custom properties\n// - Utilities can be responsive or not\n// - Utilities can have state variants (e.g., hover, focus, active)\n// - Utilities can define local CSS variables\n//\n// CSS custom properties can be generated in two ways:\n//\n// 1. Property map with null values (CSS var receives the utility value):\n// \"bg-color\": (\n//   property: (\n//     \"--bg\": null,\n//     \"background-color\": var(--bg)\n//   ),\n//   class: bg,\n//   values: (\n//     primary: var(--blue-500),\n//   )\n// )\n// Generates:\n// .bg-primary {\n//   --bs-bg: var(--bs-blue-500);\n//   background-color: var(--bs-bg);\n// }\n//\n// 2. Variables map (static CSS custom properties on every class):\n// \"link-underline\": (\n//   property: text-decoration-color,\n//   class: link-underline,\n//   variables: (\n//     \"link-underline-opacity\": 1\n//   ),\n//   values: (...)\n// )\n// Generates:\n// .link-underline {\n//   --bs-link-underline-opacity: 1;\n//   text-decoration-color: ...;\n// }\n\n// Helper mixin to generate CSS properties for both legacy and property map approaches\n@mixin generate-properties($utility, $propertyMap, $properties, $value) {\n  @if $propertyMap != null {\n    // New Property-Value Mapping approach\n    @each $property, $defaultValue in $propertyMap {\n      // If value is a map, check if it has a key for this property\n      // Otherwise, use defaultValue (or $value if defaultValue is null)\n      $actualValue: $defaultValue;\n      @if meta.type-of($value) == \"map\" and map.has-key($value, $property) {\n        $actualValue: map.get($value, $property);\n      } @else if $defaultValue == null {\n        $actualValue: $value;\n      }\n      @if map.get($utility, important) {\n        #{$property}: $actualValue !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $actualValue;\n      }\n    }\n  } @else {\n    // Legacy approach\n    @each $property in $properties {\n      @if map.get($utility, important) {\n        #{$property}: $value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $value;\n      }\n    }\n  }\n}\n\n@mixin generate-utility($utility, $infix: \"\") {\n  // Validate required keys\n  @if not map.has-key($utility, property) {\n    @error \"Utility is missing required `property` key: #{$utility}\";\n  }\n  @if not map.has-key($utility, values) {\n    @error \"Utility is missing required `values` key: #{$utility}\";\n  }\n\n  // Warn on unknown keys (likely typos)\n  $valid-keys: property, values, class, selector, responsive, print, important, state, variables;\n  @each $key in map.keys($utility) {\n    @if not list.index($valid-keys, $key) {\n      @warn \"Unknown utility key `#{$key}` found. Valid keys are: #{$valid-keys}\";\n    }\n  }\n\n  // Determine if we're generating a class, or an attribute selector\n  $selectorType: \"class\";\n  @if map.has-key($utility, selector) {\n    $selectorType: map.get($utility, selector);\n    // Validate selector type\n    $valid-selectors: \"class\", \"attr-starts\", \"attr-includes\";\n    @if not list.index($valid-selectors, $selectorType) {\n      @error \"Invalid `selector` value `#{$selectorType}`. Must be one of: #{$valid-selectors}\";\n    }\n  }\n  // Then get the class name to use in a class (e.g., .class) or in a attribute selector (e.g., [class^=\"class\"])\n  $selectorClass: map.get($utility, class);\n\n  // Attribute selectors require a `class` key\n  @if $selectorType != \"class\" and not map.has-key($utility, class) {\n    @error \"Utility with `selector: #{$selectorType}` requires a `class` key.\";\n  }\n\n  // Get the list or map of values and ensure it's a map\n  $values: map.get($utility, values);\n  @if meta.type-of($values) != \"map\" {\n    @if meta.type-of($values) == \"list\" {\n      $list: ();\n      @each $value in $values {\n        $list: map.merge($list, ($value: $value));\n      }\n      $values: $list;\n    } @else {\n      $values: (null: $values);\n    }\n  }\n\n  // Calculate infix once, before the loop\n  // Note: $infix already includes the leading dash from breakpoint-infix()\n  // $infix: if($infix == \"\", \"\", \"-\" + $infix);\n\n  @each $key, $value in $values {\n    $properties: map.get($utility, property);\n    $propertyMap: null;\n    $customClass: \"\";\n\n    // Check if property is a map (new Property-Value Mapping approach)\n    // @debug \"Properties type: #{meta.type-of($properties)}\";\n    // @debug \"Properties: #{$properties}\";\n    @if meta.type-of($properties) == \"map\" {\n      $propertyMap: $properties;\n      // For property maps, we need to determine the class from the utility definition\n      $customClass: \"\";\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      }\n    } @else {\n      // Legacy approach: Multiple properties are possible, for example with vertical or horizontal margins or paddings\n      @if meta.type-of($properties) == \"string\" {\n        $properties: list.append((), $properties);\n      }\n      // Use custom class if present, otherwise use the first value from the list of properties\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      } @else {\n        $customClass: list.nth($properties, 1);\n      }\n      @if $customClass == null {\n        $customClass: \"\";\n      }\n    }\n\n    // Use custom CSS variable name if present, otherwise default to `class`\n    // mdo-do: restore?\n    // $css-variable-name: if(map.has-key($utility, css-variable-name), map.get($utility, css-variable-name), map.get($utility, class));\n\n    // State params to generate state variants\n    $state: ();\n    @if map.has-key($utility, state) {\n      $state: map.get($utility, state);\n    }\n\n    // $infix: if($customClass == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (e.g. with shadow class)\n    $customClassModifier: \"\";\n    @if $key {\n      @if $customClass == \"\" and $infix == \"\" {\n        $customClassModifier: $key;\n      } @else {\n        $customClassModifier: \"-\" + $key;\n      }\n    }\n\n    $selector: \"\";\n    @if $selectorType == \"class\" {\n      // Use the fallback of the first property if no `class` key is used\n      @if $customClass != \"\" {\n        $selector: \".#{$customClass + $infix + $customClassModifier}\";\n      } @else {\n        $selector: \".#{$selectorClass + $infix + $customClassModifier}\";\n      }\n    } @else if $selectorType == \"attr-starts\" {\n      $selector: \"[class^=\\\"#{$selectorClass}\\\"]\";\n    } @else if $selectorType == \"attr-includes\" {\n      $selector: \"[class*=\\\"#{$selectorClass}\\\"]\";\n    }\n\n    // @debug $utility;\n    // @debug $selectorType;\n    // @debug $selector;\n    // @debug $properties;\n    // @debug $values;\n\n    #{$selector} {\n      // Generate CSS custom properties (variables) if provided\n      // Variables receive the current utility value, then properties reference them\n      @if map.has-key($utility, variables) {\n        $variables: map.get($utility, variables);\n        @if meta.type-of($variables) == \"list\" {\n          // If variables is a list, each variable gets the utility value\n          @each $var-name in $variables {\n            --#{$var-name}: #{$value};\n          }\n        } @else if meta.type-of($variables) == \"map\" {\n          // If variables is a map, use the provided values (for static variables)\n          @each $var-key, $var-value in $variables {\n            --#{$var-key}: #{$var-value};\n          }\n        }\n      }\n      @include generate-properties($utility, $propertyMap, $properties, $value);\n    }\n\n    // Generate state variants\n    @if $state != () {\n      @each $state-variant in $state {\n        #{$selector}-#{$state-variant}:#{$state-variant} {\n          // Generate CSS custom properties (variables) if provided\n          @if map.has-key($utility, variables) {\n            $variables: map.get($utility, variables);\n            @if meta.type-of($variables) == \"list\" {\n              // If variables is a list, each variable gets the utility value\n              @each $var-name in $variables {\n                --#{$var-name}: #{$value};\n              }\n            } @else if meta.type-of($variables) == \"map\" {\n              // If variables is a map, use the provided values (for static variables)\n              @each $var-key, $var-value in $variables {\n                --#{$var-key}: #{$var-value};\n              }\n            }\n          }\n          @include generate-properties($utility, $propertyMap, $properties, $value);\n        }\n      }\n    }\n  }\n}\n","@use \"banner\" with (\n  $file: \"Grid\"\n);\n\n@use \"config\" as *;\n@use \"functions\" as *;\n\n@forward \"utilities\"; // Make utilities available downstream\n@use \"utilities\" as *; // Bring utilities into the current namespace\n\n@forward \"layout/containers\";\n@forward \"layout/grid\";\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$utilities: map-get-multiple(\n  $utilities,\n  (\n    \"display\",\n    \"order\",\n    \"grid-column-counts\",\n    \"grid-columns\",\n    \"grid-auto-flow\",\n    \"gap\",\n    \"row-gap\",\n    \"column-gap\",\n    \"flex\",\n    \"flex-direction\",\n    \"flex-grow\",\n    \"flex-shrink\",\n    \"flex-wrap\",\n    \"justify-content\",\n    \"justify-items\",\n    \"align-items\",\n    \"align-content\",\n    \"align-self\",\n    \"place-items\",\n    \"margin\",\n    \"margin-x\",\n    \"margin-y\",\n    \"margin-top\",\n    \"margin-end\",\n    \"margin-bottom\",\n    \"margin-start\",\n    \"negative-margin\",\n    \"negative-margin-x\",\n    \"negative-margin-y\",\n    \"negative-margin-top\",\n    \"negative-margin-end\",\n    \"negative-margin-bottom\",\n    \"negative-margin-start\",\n    \"padding\",\n    \"padding-x\",\n    \"padding-y\",\n    \"padding-top\",\n    \"padding-end\",\n    \"padding-bottom\",\n    \"padding-start\",\n  )\n);\n\n// check-unused-imports-disable-next-line — side-effect import: generates utility CSS.\n@use \"utilities/api\";\n\n:root {\n  @each $name, $value in $breakpoints {\n    --breakpoint-#{$name}: #{$value};\n  }\n}\n"],"names":[]}
\ No newline at end of file
index 7637a32e48d4f41add88b2fe975bc811808b43a8..3bd91c51f9d583f5e81575de1fe4f5fdc4e7642f 100644 (file)
   --bs-black: #000;
   --bs-white: #fff;
   --bs-gradient: linear-gradient(180deg, color-mix(var(--bs-white) 15%, transparent), color-mix(var(--bs-white) 0%, transparent));
-  --bs-font-size-base: 1rem;
-  --bs-font-size-xs: 0.75rem;
-  --bs-font-size-sm: 0.875rem;
-  --bs-font-size-md: 1rem;
-  --bs-font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);
-  --bs-font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);
-  --bs-font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);
-  --bs-font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);
-  --bs-font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);
-  --bs-font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);
-  --bs-font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);
-  --bs-line-height-xs: 1.25;
-  --bs-line-height-sm: 1.5;
-  --bs-line-height-md: 1.5;
-  --bs-line-height-lg: 1.5;
-  --bs-line-height-xl: 1.4285714286;
-  --bs-line-height-2xl: 1.3333333333;
-  --bs-line-height-3xl: 1.2;
-  --bs-line-height-4xl: 1.1;
-  --bs-line-height-5xl: 1.1;
-  --bs-line-height-6xl: 1;
   --bs-font-weight-lighter: lighter;
   --bs-font-weight-light: 300;
   --bs-font-weight-normal: 400;
   --bs-form-valid-border-color: var(--bs-success-text);
   --bs-form-invalid-color: var(--bs-danger-text);
   --bs-form-invalid-border-color: var(--bs-danger-text);
+  --bs-font-size-xs: 0.75rem;
+  --bs-line-height-xs: 1.25;
+  --bs-font-size-sm: 0.875rem;
+  --bs-line-height-sm: 1.5;
+  --bs-font-size-md: 1rem;
+  --bs-line-height-md: 1.5;
+  --bs-font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);
+  --bs-line-height-lg: 1.5;
+  --bs-font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);
+  --bs-line-height-xl: 1.4285714286;
+  --bs-font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);
+  --bs-line-height-2xl: 1.3333333333;
+  --bs-font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);
+  --bs-line-height-3xl: 1.2;
+  --bs-font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);
+  --bs-line-height-4xl: 1.1;
+  --bs-font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);
+  --bs-line-height-5xl: 1.1;
+  --bs-font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);
+  --bs-line-height-6xl: 1;
   --bs-primary-base: var(--bs-blue-500);
   --bs-primary-text: light-dark(var(--bs-blue-600), var(--bs-blue-400));
   --bs-primary-text-emphasis: light-dark(var(--bs-blue-800), var(--bs-blue-200));
index 4fc6fbc9e6a762af2f65c5901b77a2d29517b43b..cd4f8da060c28ec0d2b6769928c895433340492e 100644 (file)
@@ -1 +1 @@
-{"version":3,"sources":["../../scss/_banner.scss","../../scss/_colors.scss","../../scss/mixins/_tokens.scss","bootstrap-reboot.css","../../scss/_root.scss","../../scss/content/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_border-radius.scss"],"names":[],"mappings":"AAEA;;;;GAAA;ACiGA;EC9FI,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,qCAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,uCAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,uCAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,uCAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,mCAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,mCAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,sCAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,oCAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,sCAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,qCAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,sCAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,qCAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,qCAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,qCAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,qCAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,uCAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;ACiNJ;;AC5MA,0GAAA;AAqLA;EF1LI,gBAAA;EAAA,gBAAA;EAAA,+HAAA;EAAA,yBAAA;EAAA,0BAAA;EAAA,2BAAA;EAAA,uBAAA;EAAA,yDAAA;EAAA,0DAAA;EAAA,sDAAA;EAAA,yDAAA;EAAA,yDAAA;EAAA,iDAAA;EAAA,yDAAA;EAAA,yBAAA;EAAA,wBAAA;EAAA,wBAAA;EAAA,wBAAA;EAAA,iCAAA;EAAA,kCAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,uBAAA;EAAA,iCAAA;EAAA,2BAAA;EAAA,4BAAA;EAAA,4BAAA;EAAA,8BAAA;EAAA,0BAAA;EAAA,+BAAA;EAAA,gCAAA;EAAA,6CAAA;EAAA,0BAAA;EAAA,0BAAA;EAAA,2BAAA;EAAA,4CAAA;EAAA,2EAAA;EAAA,+BAAA;EAAA,0EAAA;EAAA,oGAAA;EAAA,wBAAA;EAAA,+BAAA;EAAA,sBAAA;EAAA,wBAAA;EAAA,8GAAA;EAAA,sFAAA;EAAA,0BAAA;EAAA,+BAAA;EAAA,6BAAA;EAAA,8BAAA;EAAA,2BAAA;EAAA,4BAAA;EAAA,8BAAA;EAAA,kDAAA;EAAA,2DAAA;EAAA,oDAAA;EAAA,2DAAA;EAAA,iBAAA;EAAA,0BAAA;EAAA,2BAAA;EAAA,mDAAA;EAAA,4EAAA;EAAA,+CAAA;EAAA,+DAAA;EAAA,8CAAA;EAAA,6DAAA;EAAA,wCAAA;EAAA,mCAAA;EAAA,oCAAA;EAAA,oCAAA;EAAA,mCAAA;EAAA,kCAAA;EAAA,iCAAA;EAAA,kDAAA;EAAA,sDAAA;EAAA,qDAAA;EAAA,oCAAA;EAAA,qCAAA;EAAA,mCAAA;EAAA,mDAAA;EAAA,oCAAA;EAAA,2DAAA;EAAA,kCAAA;EAAA,oCAAA;EAAA,qCAAA;EAAA,mDAAA;EAAA,uDAAA;EAAA,2DAAA;EAAA,qCAAA;EAAA,mCAAA;EAAA,iCAAA;EAAA,mDAAA;EAAA,uDAAA;EAAA,2DAAA;EAAA,6CAAA;EAAA,oDAAA;EAAA,8CAAA;EAAA,qDAAA;EAAA,qCAAA;EAAA,qEAAA;EAAA,8EAAA;EAAA,mCAAA;EAAA,0EAAA;EAAA,yEAAA;EAAA,uEAAA;EAAA,mKAAA;EAAA,sCAAA;EAAA,sCAAA;EAAA,mHAAA;EAAA,iFAAA;EAAA,oCAAA;EAAA,6EAAA;EAAA,4EAAA;EAAA,0EAAA;EAAA,sKAAA;EAAA,qCAAA;EAAA,sCAAA;EAAA,uEAAA;EAAA,gFAAA;EAAA,oCAAA;EAAA,4EAAA;EAAA,2EAAA;EAAA,yEAAA;EAAA,qKAAA;EAAA,sCAAA;EAAA,mCAAA;EAAA,kEAAA;EAAA,2EAAA;EAAA,iCAAA;EAAA,uEAAA;EAAA,sEAAA;EAAA,oEAAA;EAAA,gKAAA;EAAA,qCAAA;EAAA,uCAAA;EAAA,yEAAA;EAAA,kFAAA;EAAA,qCAAA;EAAA,8EAAA;EAAA,6EAAA;EAAA,2EAAA;EAAA,uKAAA;EAAA,yCAAA;EAAA,kCAAA;EAAA,kEAAA;EAAA,2EAAA;EAAA,gCAAA;EAAA,uEAAA;EAAA,sEAAA;EAAA,oEAAA;EAAA,gKAAA;EAAA,sCAAA;EAAA,qCAAA;EAAA,qEAAA;EAAA,2EAAA;EAAA,mEAAA;EAAA,0EAAA;EAAA,yEAAA;EAAA,uEAAA;EAAA,uHAAA;EAAA,sEAAA;EAAA,uCAAA;EAAA,uEAAA;EAAA,gFAAA;EAAA,qEAAA;EAAA,4EAAA;EAAA,2EAAA;EAAA,yEAAA;EAAA,yHAAA;EAAA,wEAAA;EAAA,6DAAA;EAAA,6DAAA;EAAA,6DAAA;EAAA,6DAAA;EAAA,6DAAA;EAAA,8BAAA;EAAA,8BAAA;EAAA,gCAAA;EAAA,wBAAA;EAAA,gEAAA;EAAA,6DAAA;EAAA,6DAAA;EAAA,6DAAA;EAAA,6DAAA;EAAA,8BAAA;EAAA,8BAAA;EAAA,wBAAA;EAAA,iCAAA;EAAA,oEAAA;EAAA,qEAAA;EAAA,sEAAA;EAAA,0EAAA;EAAA,kCAAA;EAAA,kCAAA;EAAA,qBAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,0BAAA;EAAA,0BAAA;EAAA,2BAAA;EE6LF,wBAAA;ADkOF;;AC/NA;EACE,kBAAA;ADkOF;;AC/NA;EACE,mBAAA;ADkOF;;AEpYA;EAYE;;;IAGE,sBAAA;EF4XF;EEpXA;IAEE,oCAAA;EFqXF;EElXI;IALJ;MAMM,uBAAA;IFqXJ;EACF;EEzWA;IACE,SAAA;IACA,uCAAA;IACA,mCAAA;IACA,uCAAA;IACA,uCAAA;IACA,wBAAA;IACA,qCAAA;IACA,mCAAA;IACA,8BAAA;IACA,6CAAA;EF2WF;EEvWA;IACE,iDAAA;IACA,SAAA;IACA,0EAAA;EFyWF;EEhWA;;;;;;;IACE,aAAA;IACA,qBC8F0B;ID3F1B,gBC8F0B;ID7F1B,gBC8F0B;ID7F1B,8BAAA;EFsWF;EEnWA;;IAGE,kCCyBW;EH2Ub;EEjWA;;IAGE,kCCoBW;EH8Ub;EE/VA;;IAGE,iCCeW;EHiVb;EE7VA;;IAGE,iCCUW;EHoVb;EE3VA;;IAGE,iCCKW;EHuVb;EEzVA;;IAGE,iCAAA;EF0VF;EElVA;IACE,aAAA;IACA,mBC5EwB;EHga1B;EE3UA;IACE,yCAAA;IAAA,iCAAA;IACA,YAAA;IACA,sCAAA;IAAA,8BAAA;EF6UF;EExUA;IACE,mBAAA;IACA,kBAAA;IACA,oBAAA;EF0UF;EErUA;;IAEE,0BAAA;EFuUF;EEpUA;;;IAGE,aAAA;IACA,mBAAA;EFsUF;EEnUA;;;;IAIE,gBAAA;EFqUF;EElUA;IACE,gBCrE0B;EHyY5B;EE/TA;IACE,sBAAA;IACA,qBAAA;EFiUF;EE5TA;IACE,gBAAA;EF8TF;EE7TE;IACE,eAAA;EF+TJ;EEvTA;;IAEE,mBC7F0B;EHsZ5B;EElTA;;IAEE,2CAAA;EFoTF;EE/SA;;IHhPE,2BAAA;IAAA,kCAAA;IAAA,oEAAA;IGmPA,+BAAA;IACA,2BAAA;IACA,mCAAA;EFmTF;EE3SA;;IAEE,kBAAA;IACA,8CAAA;IACA,cAAA;IACA,wBAAA;EF6SF;EE1SA;IAAM,eAAA;EF6SN;EE5SA;IAAM,WAAA;EF+SN;EE3SA;IACE,iDAAA;IACA,kDAAA;IAAA,0CAAA;IACA,4BC/MsC;EH4fxC;EE3SE;IAGE,gEAAA;IACA,mFAAA;IAAA,2EAAA;EF2SJ;EEjSE;IAEE,cAAA;IACA,qBAAA;EFkSJ;EE5RA;;;;IAIE,gCAAA;IACA,cAAA;EF8RF;EEvRA;IACE,cAAA;IACA,aAAA;IACA,mBAAA;IACA,cAAA;IACA,mCAAA;IACA,oCAAA;EFyRF;EEtRE;IACE,kBAAA;IACA,cAAA;IACA,kBAAA;EFwRJ;EEpRA;IACE,mCAAA;IACA,2BAAA;IACA,qBAAA;EFsRF;EEnRE;IACE,cAAA;EFqRJ;EEjRA;IH7UE,4BAAA;IAAA,2BAAA;IAAA,0CAAA;IAAA,iCAAA;IAAA,2BAAA;IAAA,kDAAA;IG+UA,wDAAA;IACA,kCAAA;IACA,0BAAA;IACA,kCAAA;IE/TA,0CAAA;EJwlBF;EEtRE;IACE,UAAA;IACA,cAAA;IACA,oBAAA;EFwRJ;EEhRA;IACE,gBAAA;EFkRF;EE7QA;;IAEE,sBAAA;EF+QF;EExQA;IACE,oBAAA;IACA,yBAAA;EF0QF;EEvQA;IAIE,qBAAA;IACA,qBAAA;IACA,iBAAA;EFsQF;EE/PA;IAEE,mBAAA;IACA,gCAAA;EFgQF;EE7PA;;;;;;IAME,qBAAA;IACA,mBAAA;IACA,eAAA;EF+PF;EExPA;IACE,qBAAA;EF0PF;EEpPA;IAEE,gBAAA;EFqPF;EE7OA;IACE,UAAA;EF+OF;EE1OA;;;;;IAKE,SAAA;IACA,oBAAA;IACA,kBAAA;IACA,oBAAA;EF4OF;EExOA;;IAEE,oBAAA;EF0OF;EErOA;IACE,eAAA;EFuOF;EEpOA;IAGE,iBAAA;EFoOF;EEjOE;IACE,UAAA;EFmOJ;EE5NA;IACE,wBAAA;EF8NF;EEtNA;;;;IAIE,0BAAA;EFwNF;EErNI;;;;IACE,eAAA;EF0NN;EEnNA;IACE,UAAA;IACA,kBAAA;EFqNF;EEhNA;IACE,gBAAA;EFkNF;EExMA;IACE,YAAA;IACA,UAAA;IACA,SAAA;IACA,SAAA;EF0MF;EElMA;IACE,mBAAA;IACA,WAAA;IACA,UAAA;IACA,qBC3T0B;ID4T1B,iBC3T0B;ID6T1B,oBAAA;EFmMF;EEjME;IACE,mBAAA;EFmMJ;EE5LA;;;;;;;;;;;IAWE,UAAA;EF8LF;EE3LA;IACE,YAAA;EF6LF;EEpLA;IACE,6BAAA;IACA,oBAAA;EFsLF;EEnLE;IACE,eAAA;IACA,oBAAA;EFqLJ;EE9KA;;;;IAIE,cAAA;EFgLF;EE3KA;IACE,wBAAA;EF6KF;EExKA;IACE,UAAA;EF0KF;EEpKA;IACE,aAAA;IACA,0BAAA;EFsKF;EEjKA;IACE,qBAAA;EFmKF;EE9JA;IACE,SAAA;EFgKF;EEzJA;IACE,kBAAA;IACA,eAAA;EF2JF;EEpJA;IACE,wBAAA;EFsJF;EE/IA;IACE,wBAAA;EFiJF;AACF","file":"bootstrap-reboot.css","sourcesContent":["$file: \"\" !default;\n\n/*!\n  * Bootstrap #{$file} v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n","// stylelint-disable hue-degree-notation, @stylistic/number-leading-zero\n\n@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// Easily convert colors to oklch() with https://oklch.com/\n\n$white: #fff !default;\n$black: #000 !default;\n\n// scss-docs-start colors-list\n$blue: oklch(60% 0.24 240) !default;\n$indigo: oklch(56% 0.26 288) !default;\n$violet: oklch(56% 0.24 300) !default;\n$purple: oklch(56% 0.24 320) !default;\n$pink: oklch(60% 0.22 4) !default;\n$red: oklch(60% 0.22 20) !default;\n$orange: oklch(70% 0.22 52) !default;\n$amber: oklch(79% 0.2 78) !default;\n$yellow: oklch(88% 0.24 88) !default;\n$lime: oklch(65% 0.24 135) !default;\n$green: oklch(64% 0.22 160) !default;\n$teal: oklch(68% 0.22 190) !default;\n$cyan: oklch(69% 0.22 220) !default;\n$brown: oklch(60% 0.12 54) !default;\n$gray: oklch(60% 0.02 245) !default;\n$pewter: oklch(65% 0.01 290) !default;\n// scss-docs-end colors-list\n\n// scss-docs-start colors-map\n$colors: () !default;\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$colors: defaults(\n  (\n    \"blue\": $blue,\n    \"indigo\": $indigo,\n    \"violet\": $violet,\n    \"purple\": $purple,\n    \"pink\": $pink,\n    \"red\": $red,\n    \"orange\": $orange,\n    \"amber\": $amber,\n    \"yellow\": $yellow,\n    \"lime\": $lime,\n    \"green\": $green,\n    \"teal\": $teal,\n    \"cyan\": $cyan,\n    \"brown\": $brown,\n    \"gray\": $gray,\n    \"pewter\": $pewter,\n  ),\n  $colors\n);\n// scss-docs-end colors-map\n\n// scss-docs-start color-mix-options\n$color-mix-space: lab !default;\n$tint-color: var(--white) !default;\n$shade-color: var(--black) !default;\n\n$color-tints: (\n  \"025\": 94%,\n  \"050\": 90%,\n  \"100\": 80%,\n  \"200\": 60%,\n  \"300\": 40%,\n  \"400\": 20%,\n) !default;\n\n$color-shades: (\n  \"600\": 16%,\n  \"700\": 32%,\n  \"800\": 48%,\n  \"900\": 64%,\n  \"950\": 76%,\n  \"975\": 88%,\n) !default;\n// scss-docs-end color-mix-options\n\n// scss-docs-start color-tokens\n$color-tokens: () !default;\n\n$-color-defaults: () !default;\n@each $color, $value in $colors {\n  @each $stop, $percent in $color-tints {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$tint-color} #{$percent}, #{$value}));\n  }\n  $-color-defaults: map.set($-color-defaults, --#{$color}-500, #{$value});\n  @each $stop, $percent in $color-shades {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$shade-color} #{$percent}, #{$value}));\n  }\n}\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$color-tokens: defaults($-color-defaults, $color-tokens);\n// scss-docs-end color-tokens\n\n:root {\n  @include tokens($color-tokens);\n}\n","// Mixin to output tokens as CSS custom properties\n\n// scss-docs-start mixin-tokens\n@mixin tokens($map) {\n  @each $prop, $value in $map {\n    #{$prop}: #{$value};\n  }\n}\n// scss-docs-end mixin-tokens\n","/*!\n  * Bootstrap Reboot v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n:root {\n  --blue-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.24 240deg));\n  --blue-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.24 240deg));\n  --blue-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.24 240deg));\n  --blue-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.24 240deg));\n  --blue-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.24 240deg));\n  --blue-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.24 240deg));\n  --blue-500: oklch(60% 0.24 240deg);\n  --blue-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.24 240deg));\n  --blue-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.24 240deg));\n  --blue-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.24 240deg));\n  --blue-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.24 240deg));\n  --blue-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.24 240deg));\n  --blue-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.24 240deg));\n  --indigo-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.26 288deg));\n  --indigo-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.26 288deg));\n  --indigo-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.26 288deg));\n  --indigo-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.26 288deg));\n  --indigo-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.26 288deg));\n  --indigo-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.26 288deg));\n  --indigo-500: oklch(56% 0.26 288deg);\n  --indigo-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.26 288deg));\n  --indigo-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.26 288deg));\n  --indigo-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.26 288deg));\n  --indigo-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.26 288deg));\n  --indigo-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.26 288deg));\n  --indigo-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.26 288deg));\n  --violet-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 300deg));\n  --violet-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 300deg));\n  --violet-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 300deg));\n  --violet-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 300deg));\n  --violet-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 300deg));\n  --violet-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 300deg));\n  --violet-500: oklch(56% 0.24 300deg);\n  --violet-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 300deg));\n  --violet-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 300deg));\n  --violet-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 300deg));\n  --violet-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 300deg));\n  --violet-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 300deg));\n  --violet-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 300deg));\n  --purple-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 320deg));\n  --purple-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 320deg));\n  --purple-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 320deg));\n  --purple-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 320deg));\n  --purple-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 320deg));\n  --purple-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 320deg));\n  --purple-500: oklch(56% 0.24 320deg);\n  --purple-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 320deg));\n  --purple-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 320deg));\n  --purple-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 320deg));\n  --purple-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 320deg));\n  --purple-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 320deg));\n  --purple-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 320deg));\n  --pink-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 4deg));\n  --pink-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 4deg));\n  --pink-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 4deg));\n  --pink-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 4deg));\n  --pink-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 4deg));\n  --pink-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 4deg));\n  --pink-500: oklch(60% 0.22 4deg);\n  --pink-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 4deg));\n  --pink-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 4deg));\n  --pink-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 4deg));\n  --pink-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 4deg));\n  --pink-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 4deg));\n  --pink-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 4deg));\n  --red-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 20deg));\n  --red-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 20deg));\n  --red-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 20deg));\n  --red-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 20deg));\n  --red-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 20deg));\n  --red-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 20deg));\n  --red-500: oklch(60% 0.22 20deg);\n  --red-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 20deg));\n  --red-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 20deg));\n  --red-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 20deg));\n  --red-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 20deg));\n  --red-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 20deg));\n  --red-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 20deg));\n  --orange-025: color-mix(in lab, var(--white) 94%, oklch(70% 0.22 52deg));\n  --orange-050: color-mix(in lab, var(--white) 90%, oklch(70% 0.22 52deg));\n  --orange-100: color-mix(in lab, var(--white) 80%, oklch(70% 0.22 52deg));\n  --orange-200: color-mix(in lab, var(--white) 60%, oklch(70% 0.22 52deg));\n  --orange-300: color-mix(in lab, var(--white) 40%, oklch(70% 0.22 52deg));\n  --orange-400: color-mix(in lab, var(--white) 20%, oklch(70% 0.22 52deg));\n  --orange-500: oklch(70% 0.22 52deg);\n  --orange-600: color-mix(in lab, var(--black) 16%, oklch(70% 0.22 52deg));\n  --orange-700: color-mix(in lab, var(--black) 32%, oklch(70% 0.22 52deg));\n  --orange-800: color-mix(in lab, var(--black) 48%, oklch(70% 0.22 52deg));\n  --orange-900: color-mix(in lab, var(--black) 64%, oklch(70% 0.22 52deg));\n  --orange-950: color-mix(in lab, var(--black) 76%, oklch(70% 0.22 52deg));\n  --orange-975: color-mix(in lab, var(--black) 88%, oklch(70% 0.22 52deg));\n  --amber-025: color-mix(in lab, var(--white) 94%, oklch(79% 0.2 78deg));\n  --amber-050: color-mix(in lab, var(--white) 90%, oklch(79% 0.2 78deg));\n  --amber-100: color-mix(in lab, var(--white) 80%, oklch(79% 0.2 78deg));\n  --amber-200: color-mix(in lab, var(--white) 60%, oklch(79% 0.2 78deg));\n  --amber-300: color-mix(in lab, var(--white) 40%, oklch(79% 0.2 78deg));\n  --amber-400: color-mix(in lab, var(--white) 20%, oklch(79% 0.2 78deg));\n  --amber-500: oklch(79% 0.2 78deg);\n  --amber-600: color-mix(in lab, var(--black) 16%, oklch(79% 0.2 78deg));\n  --amber-700: color-mix(in lab, var(--black) 32%, oklch(79% 0.2 78deg));\n  --amber-800: color-mix(in lab, var(--black) 48%, oklch(79% 0.2 78deg));\n  --amber-900: color-mix(in lab, var(--black) 64%, oklch(79% 0.2 78deg));\n  --amber-950: color-mix(in lab, var(--black) 76%, oklch(79% 0.2 78deg));\n  --amber-975: color-mix(in lab, var(--black) 88%, oklch(79% 0.2 78deg));\n  --yellow-025: color-mix(in lab, var(--white) 94%, oklch(88% 0.24 88deg));\n  --yellow-050: color-mix(in lab, var(--white) 90%, oklch(88% 0.24 88deg));\n  --yellow-100: color-mix(in lab, var(--white) 80%, oklch(88% 0.24 88deg));\n  --yellow-200: color-mix(in lab, var(--white) 60%, oklch(88% 0.24 88deg));\n  --yellow-300: color-mix(in lab, var(--white) 40%, oklch(88% 0.24 88deg));\n  --yellow-400: color-mix(in lab, var(--white) 20%, oklch(88% 0.24 88deg));\n  --yellow-500: oklch(88% 0.24 88deg);\n  --yellow-600: color-mix(in lab, var(--black) 16%, oklch(88% 0.24 88deg));\n  --yellow-700: color-mix(in lab, var(--black) 32%, oklch(88% 0.24 88deg));\n  --yellow-800: color-mix(in lab, var(--black) 48%, oklch(88% 0.24 88deg));\n  --yellow-900: color-mix(in lab, var(--black) 64%, oklch(88% 0.24 88deg));\n  --yellow-950: color-mix(in lab, var(--black) 76%, oklch(88% 0.24 88deg));\n  --yellow-975: color-mix(in lab, var(--black) 88%, oklch(88% 0.24 88deg));\n  --lime-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.24 135deg));\n  --lime-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.24 135deg));\n  --lime-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.24 135deg));\n  --lime-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.24 135deg));\n  --lime-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.24 135deg));\n  --lime-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.24 135deg));\n  --lime-500: oklch(65% 0.24 135deg);\n  --lime-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.24 135deg));\n  --lime-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.24 135deg));\n  --lime-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.24 135deg));\n  --lime-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.24 135deg));\n  --lime-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.24 135deg));\n  --lime-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.24 135deg));\n  --green-025: color-mix(in lab, var(--white) 94%, oklch(64% 0.22 160deg));\n  --green-050: color-mix(in lab, var(--white) 90%, oklch(64% 0.22 160deg));\n  --green-100: color-mix(in lab, var(--white) 80%, oklch(64% 0.22 160deg));\n  --green-200: color-mix(in lab, var(--white) 60%, oklch(64% 0.22 160deg));\n  --green-300: color-mix(in lab, var(--white) 40%, oklch(64% 0.22 160deg));\n  --green-400: color-mix(in lab, var(--white) 20%, oklch(64% 0.22 160deg));\n  --green-500: oklch(64% 0.22 160deg);\n  --green-600: color-mix(in lab, var(--black) 16%, oklch(64% 0.22 160deg));\n  --green-700: color-mix(in lab, var(--black) 32%, oklch(64% 0.22 160deg));\n  --green-800: color-mix(in lab, var(--black) 48%, oklch(64% 0.22 160deg));\n  --green-900: color-mix(in lab, var(--black) 64%, oklch(64% 0.22 160deg));\n  --green-950: color-mix(in lab, var(--black) 76%, oklch(64% 0.22 160deg));\n  --green-975: color-mix(in lab, var(--black) 88%, oklch(64% 0.22 160deg));\n  --teal-025: color-mix(in lab, var(--white) 94%, oklch(68% 0.22 190deg));\n  --teal-050: color-mix(in lab, var(--white) 90%, oklch(68% 0.22 190deg));\n  --teal-100: color-mix(in lab, var(--white) 80%, oklch(68% 0.22 190deg));\n  --teal-200: color-mix(in lab, var(--white) 60%, oklch(68% 0.22 190deg));\n  --teal-300: color-mix(in lab, var(--white) 40%, oklch(68% 0.22 190deg));\n  --teal-400: color-mix(in lab, var(--white) 20%, oklch(68% 0.22 190deg));\n  --teal-500: oklch(68% 0.22 190deg);\n  --teal-600: color-mix(in lab, var(--black) 16%, oklch(68% 0.22 190deg));\n  --teal-700: color-mix(in lab, var(--black) 32%, oklch(68% 0.22 190deg));\n  --teal-800: color-mix(in lab, var(--black) 48%, oklch(68% 0.22 190deg));\n  --teal-900: color-mix(in lab, var(--black) 64%, oklch(68% 0.22 190deg));\n  --teal-950: color-mix(in lab, var(--black) 76%, oklch(68% 0.22 190deg));\n  --teal-975: color-mix(in lab, var(--black) 88%, oklch(68% 0.22 190deg));\n  --cyan-025: color-mix(in lab, var(--white) 94%, oklch(69% 0.22 220deg));\n  --cyan-050: color-mix(in lab, var(--white) 90%, oklch(69% 0.22 220deg));\n  --cyan-100: color-mix(in lab, var(--white) 80%, oklch(69% 0.22 220deg));\n  --cyan-200: color-mix(in lab, var(--white) 60%, oklch(69% 0.22 220deg));\n  --cyan-300: color-mix(in lab, var(--white) 40%, oklch(69% 0.22 220deg));\n  --cyan-400: color-mix(in lab, var(--white) 20%, oklch(69% 0.22 220deg));\n  --cyan-500: oklch(69% 0.22 220deg);\n  --cyan-600: color-mix(in lab, var(--black) 16%, oklch(69% 0.22 220deg));\n  --cyan-700: color-mix(in lab, var(--black) 32%, oklch(69% 0.22 220deg));\n  --cyan-800: color-mix(in lab, var(--black) 48%, oklch(69% 0.22 220deg));\n  --cyan-900: color-mix(in lab, var(--black) 64%, oklch(69% 0.22 220deg));\n  --cyan-950: color-mix(in lab, var(--black) 76%, oklch(69% 0.22 220deg));\n  --cyan-975: color-mix(in lab, var(--black) 88%, oklch(69% 0.22 220deg));\n  --brown-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.12 54deg));\n  --brown-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.12 54deg));\n  --brown-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.12 54deg));\n  --brown-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.12 54deg));\n  --brown-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.12 54deg));\n  --brown-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.12 54deg));\n  --brown-500: oklch(60% 0.12 54deg);\n  --brown-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.12 54deg));\n  --brown-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.12 54deg));\n  --brown-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.12 54deg));\n  --brown-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.12 54deg));\n  --brown-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.12 54deg));\n  --brown-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.12 54deg));\n  --gray-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.02 245deg));\n  --gray-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.02 245deg));\n  --gray-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.02 245deg));\n  --gray-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.02 245deg));\n  --gray-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.02 245deg));\n  --gray-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.02 245deg));\n  --gray-500: oklch(60% 0.02 245deg);\n  --gray-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.02 245deg));\n  --gray-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.02 245deg));\n  --gray-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.02 245deg));\n  --gray-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.02 245deg));\n  --gray-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.02 245deg));\n  --gray-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.02 245deg));\n  --pewter-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.01 290deg));\n  --pewter-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.01 290deg));\n  --pewter-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.01 290deg));\n  --pewter-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.01 290deg));\n  --pewter-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.01 290deg));\n  --pewter-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.01 290deg));\n  --pewter-500: oklch(65% 0.01 290deg);\n  --pewter-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.01 290deg));\n  --pewter-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.01 290deg));\n  --pewter-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.01 290deg));\n  --pewter-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.01 290deg));\n  --pewter-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.01 290deg));\n  --pewter-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.01 290deg));\n}\n\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n:root {\n  --black: #000;\n  --white: #fff;\n  --gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent));\n  --font-size-base: 1rem;\n  --font-size-xs: 0.75rem;\n  --font-size-sm: 0.875rem;\n  --font-size-md: 1rem;\n  --font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  --font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);\n  --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  --line-height-xs: 1.25;\n  --line-height-sm: 1.5;\n  --line-height-md: 1.5;\n  --line-height-lg: 1.5;\n  --line-height-xl: 1.4285714286;\n  --line-height-2xl: 1.3333333333;\n  --line-height-3xl: 1.2;\n  --line-height-4xl: 1.1;\n  --line-height-5xl: 1.1;\n  --line-height-6xl: 1;\n  --font-weight-lighter: lighter;\n  --font-weight-light: 300;\n  --font-weight-normal: 400;\n  --font-weight-medium: 500;\n  --font-weight-semibold: 600;\n  --font-weight-bold: 700;\n  --font-weight-bolder: bolder;\n  --body-font-family: system-ui;\n  --body-font-size: var(--font-size-base);\n  --body-font-weight: 400;\n  --body-line-height: 1.5;\n  --heading-color: inherit;\n  --hr-border-color: var(--border-color);\n  --link-color: light-dark(var(--primary-base), var(--primary-text));\n  --link-decoration: underline;\n  --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000);\n  --font-mono: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;\n  --code-font-size: 95%;\n  --code-color: var(--fg-2);\n  --border-width: 1px;\n  --border-style: solid;\n  --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700));\n  --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent);\n  --border-radius: 0.5rem;\n  --border-radius-xs: 0.375rem;\n  --border-radius-sm: 0.5rem;\n  --border-radius-lg: 0.75rem;\n  --border-radius-xl: 1rem;\n  --border-radius-2xl: 2rem;\n  --border-radius-pill: 50rem;\n  --box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  --box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n  --box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n  --box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n  --spacer: 1rem;\n  --focus-ring-width: 3px;\n  --focus-ring-offset: 1px;\n  --focus-ring-color: var(--primary-focus-ring);\n  --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color);\n  --control-checked-bg: var(--primary-base);\n  --control-checked-border-color: var(--control-checked-bg);\n  --control-active-bg: var(--primary-base);\n  --control-active-border-color: var(--control-active-bg);\n  --control-disabled-bg: var(--bg-3);\n  --control-disabled-opacity: 0.65;\n  --btn-input-fg: var(--fg-body);\n  --btn-input-bg: var(--bg-body);\n  --btn-input-min-height: 2.375rem;\n  --btn-input-padding-y: 0.375rem;\n  --btn-input-padding-x: 0.75rem;\n  --btn-input-font-size: var(--font-size-base);\n  --btn-input-line-height: var(--line-height-base);\n  --btn-input-border-radius: var(--border-radius);\n  --btn-input-xs-min-height: 1.5rem;\n  --btn-input-xs-padding-y: 0.125rem;\n  --btn-input-xs-padding-x: 0.5rem;\n  --btn-input-xs-font-size: var(--font-size-xs);\n  --btn-input-xs-line-height: 1.125;\n  --btn-input-xs-border-radius: var(--border-radius-xs);\n  --btn-input-sm-min-height: 2rem;\n  --btn-input-sm-padding-y: 0.25rem;\n  --btn-input-sm-padding-x: 0.625rem;\n  --btn-input-sm-font-size: var(--font-size-sm);\n  --btn-input-sm-line-height: var(--line-height-sm);\n  --btn-input-sm-border-radius: var(--border-radius-sm);\n  --btn-input-lg-min-height: 2.75rem;\n  --btn-input-lg-padding-y: 0.5rem;\n  --btn-input-lg-padding-x: 1rem;\n  --btn-input-lg-font-size: var(--font-size-md);\n  --btn-input-lg-line-height: var(--line-height-md);\n  --btn-input-lg-border-radius: var(--border-radius-lg);\n  --form-valid-color: var(--success-text);\n  --form-valid-border-color: var(--success-text);\n  --form-invalid-color: var(--danger-text);\n  --form-invalid-border-color: var(--danger-text);\n  --primary-base: var(--blue-500);\n  --primary-text: light-dark(var(--blue-600), var(--blue-400));\n  --primary-text-emphasis: light-dark(var(--blue-800), var(--blue-200));\n  --primary-bg: var(--blue-500);\n  --primary-bg-subtle: light-dark(var(--blue-100), var(--blue-900));\n  --primary-bg-muted: light-dark(var(--blue-200), var(--blue-800));\n  --primary-border: light-dark(var(--blue-300), var(--blue-600));\n  --primary-focus-ring: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  --primary-contrast: var(--white);\n  --accent-base: var(--indigo-500);\n  --accent-text: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  --accent-text-emphasis: light-dark(var(--indigo-800), var(--indigo-300));\n  --accent-bg: var(--indigo-500);\n  --accent-bg-subtle: light-dark(var(--indigo-100), var(--indigo-900));\n  --accent-bg-muted: light-dark(var(--indigo-200), var(--indigo-800));\n  --accent-border: light-dark(var(--indigo-300), var(--indigo-600));\n  --accent-focus-ring: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  --accent-contrast: var(--white);\n  --success-base: var(--green-500);\n  --success-text: light-dark(var(--green-600), var(--green-400));\n  --success-text-emphasis: light-dark(var(--green-800), var(--green-300));\n  --success-bg: var(--green-500);\n  --success-bg-subtle: light-dark(var(--green-100), var(--green-900));\n  --success-bg-muted: light-dark(var(--green-200), var(--green-800));\n  --success-border: light-dark(var(--green-300), var(--green-600));\n  --success-focus-ring: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  --success-contrast: var(--white);\n  --danger-base: var(--red-500);\n  --danger-text: light-dark(var(--red-600), var(--red-400));\n  --danger-text-emphasis: light-dark(var(--red-800), var(--red-300));\n  --danger-bg: var(--red-500);\n  --danger-bg-subtle: light-dark(var(--red-100), var(--red-900));\n  --danger-bg-muted: light-dark(var(--red-200), var(--red-800));\n  --danger-border: light-dark(var(--red-300), var(--red-600));\n  --danger-focus-ring: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  --danger-contrast: var(--white);\n  --warning-base: var(--yellow-500);\n  --warning-text: light-dark(var(--yellow-700), var(--yellow-400));\n  --warning-text-emphasis: light-dark(var(--yellow-800), var(--yellow-300));\n  --warning-bg: var(--yellow-500);\n  --warning-bg-subtle: light-dark(var(--yellow-100), var(--yellow-900));\n  --warning-bg-muted: light-dark(var(--yellow-200), var(--yellow-800));\n  --warning-border: light-dark(var(--yellow-300), var(--yellow-600));\n  --warning-focus-ring: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  --warning-contrast: var(--gray-900);\n  --info-base: var(--cyan-500);\n  --info-text: light-dark(var(--cyan-600), var(--cyan-400));\n  --info-text-emphasis: light-dark(var(--cyan-800), var(--cyan-300));\n  --info-bg: var(--cyan-500);\n  --info-bg-subtle: light-dark(var(--cyan-100), var(--cyan-900));\n  --info-bg-muted: light-dark(var(--cyan-200), var(--cyan-800));\n  --info-border: light-dark(var(--cyan-300), var(--cyan-600));\n  --info-focus-ring: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  --info-contrast: var(--gray-900);\n  --inverse-base: var(--gray-900);\n  --inverse-text: light-dark(var(--gray-900), var(--gray-200));\n  --inverse-text-emphasis: light-dark(var(--gray-975), var(--white));\n  --inverse-bg: light-dark(var(--gray-900), var(--gray-025));\n  --inverse-bg-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --inverse-bg-muted: light-dark(var(--gray-200), var(--gray-300));\n  --inverse-border: light-dark(var(--gray-400), var(--gray-100));\n  --inverse-focus-ring: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  --inverse-contrast: light-dark(var(--white), var(--gray-900));\n  --secondary-base: var(--gray-200);\n  --secondary-text: light-dark(var(--gray-600), var(--gray-400));\n  --secondary-text-emphasis: light-dark(var(--gray-800), var(--gray-200));\n  --secondary-bg: light-dark(var(--gray-100), var(--gray-600));\n  --secondary-bg-subtle: light-dark(var(--gray-050), var(--gray-800));\n  --secondary-bg-muted: light-dark(var(--gray-100), var(--gray-700));\n  --secondary-border: light-dark(var(--gray-300), var(--gray-600));\n  --secondary-focus-ring: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  --secondary-contrast: light-dark(var(--gray-900), var(--white));\n  --bg-body: light-dark(var(--white), var(--gray-975));\n  --bg-1: light-dark(var(--gray-025), var(--gray-950));\n  --bg-2: light-dark(var(--gray-050), var(--gray-900));\n  --bg-3: light-dark(var(--gray-100), var(--gray-800));\n  --bg-4: light-dark(var(--gray-200), var(--gray-700));\n  --bg-white: var(--white);\n  --bg-black: var(--black);\n  --bg-transparent: transparent;\n  --bg-inherit: inherit;\n  --fg-body: light-dark(var(--gray-900), var(--gray-050));\n  --fg-1: light-dark(var(--gray-800), var(--gray-200));\n  --fg-2: light-dark(var(--gray-700), var(--gray-300));\n  --fg-3: light-dark(var(--gray-600), var(--gray-500));\n  --fg-4: light-dark(var(--gray-500), var(--gray-600));\n  --fg-white: var(--white);\n  --fg-black: var(--black);\n  --fg-inherit: inherit;\n  --border-bg: var(--bg-body);\n  --border-body: light-dark(var(--gray-300), var(--gray-800));\n  --border-muted: light-dark(var(--gray-200), var(--gray-800));\n  --border-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --border-emphasized: light-dark(var(--gray-400), var(--gray-600));\n  --border-white: var(--white);\n  --border-black: var(--black);\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 1024px;\n  --breakpoint-xl: 1280px;\n  --breakpoint-2xl: 1536px;\n  color-scheme: light dark;\n}\n\n[data-bs-theme=dark] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=light] {\n  color-scheme: light;\n}\n\n@layer reboot {\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n  :root {\n    accent-color: var(--primary-base);\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    :root {\n      scroll-behavior: smooth;\n    }\n  }\n  body {\n    margin: 0;\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body);\n    -webkit-text-size-adjust: 100%;\n    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  }\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n  h6,\n  .h6, h5,\n  .h5, h4,\n  .h4, h3,\n  .h3, h2,\n  .h2, h1,\n  .h1 {\n    margin-top: 0;\n    margin-bottom: 0.5rem;\n    font-weight: 500;\n    line-height: 1.2;\n    color: var(--heading-color);\n  }\n  h1,\n  .h1 {\n    font-size: var(--font-size-3xl);\n  }\n  h2,\n  .h2 {\n    font-size: var(--font-size-2xl);\n  }\n  h3,\n  .h3 {\n    font-size: var(--font-size-xl);\n  }\n  h4,\n  .h4 {\n    font-size: var(--font-size-lg);\n  }\n  h5,\n  .h5 {\n    font-size: var(--font-size-md);\n  }\n  h6,\n  .h6 {\n    font-size: var(--font-size-sm);\n  }\n  p {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  abbr[title] {\n    text-decoration: underline dotted;\n    cursor: help;\n    text-decoration-skip-ink: none;\n  }\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n  dt {\n    font-weight: 700;\n  }\n  dd {\n    margin-inline-start: 0;\n    margin-bottom: 0.5rem;\n  }\n  blockquote {\n    margin: 0 0 1rem;\n  }\n  blockquote > * {\n    margin-block: 0;\n  }\n  b,\n  strong {\n    font-weight: bolder;\n  }\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n  mark,\n  .mark {\n    --mark-padding: 0.1875em;\n    --mark-color: var(--fg-body);\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900));\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, 0.75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n  sub {\n    bottom: -0.25em;\n  }\n  sup {\n    top: -0.5em;\n  }\n  a {\n    color: var(--theme-text, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: 0.2em;\n  }\n  a:hover {\n    color: var(--theme-text-emphasis, var(--link-hover-color));\n    text-decoration: var(--link-hover-decoration, var(--link-decoration));\n  }\n  a:not([href]):not([class]), a:not([href]):not([class]):hover {\n    color: inherit;\n    text-decoration: none;\n  }\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em;\n  }\n  pre {\n    display: block;\n    margin-top: 0;\n    margin-bottom: 1rem;\n    overflow: auto;\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n  }\n  pre code {\n    font-size: inherit;\n    color: inherit;\n    word-break: normal;\n  }\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n  }\n  a > code {\n    color: inherit;\n  }\n  kbd {\n    --kbd-padding-y: 0.125rem;\n    --kbd-padding-x: 0.25rem;\n    --kbd-font-size: var(--font-size-xs);\n    --kbd-color: var(--bg-body);\n    --kbd-bg: var(--fg-2);\n    --kbd-border-radius: var(--border-radius-sm);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    border-radius: var(--kbd-border-radius);\n  }\n  kbd kbd {\n    padding: 0;\n    font-size: 1em;\n    font-weight: inherit;\n  }\n  figure {\n    margin: 0 0 1rem;\n  }\n  img,\n  svg {\n    vertical-align: middle;\n  }\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n  caption {\n    padding-block: 0.5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n  th {\n    text-align: inherit;\n    text-align: -webkit-match-parent;\n  }\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n  label {\n    display: inline-block;\n  }\n  button {\n    border-radius: 0;\n  }\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0;\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n  button,\n  select {\n    text-transform: none;\n  }\n  [role=button] {\n    cursor: pointer;\n  }\n  select {\n    word-wrap: normal;\n  }\n  select:disabled {\n    opacity: 1;\n  }\n  [list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n  button,\n  [type=button],\n  [type=reset],\n  [type=submit] {\n    -webkit-appearance: button;\n  }\n  button:not(:disabled),\n  [type=button]:not(:disabled),\n  [type=reset]:not(:disabled),\n  [type=submit]:not(:disabled) {\n    cursor: pointer;\n  }\n  ::-moz-focus-inner {\n    padding: 0;\n    border-style: none;\n  }\n  textarea {\n    resize: vertical;\n  }\n  fieldset {\n    min-width: 0;\n    padding: 0;\n    margin: 0;\n    border: 0;\n  }\n  legend {\n    float: inline-start;\n    width: 100%;\n    padding: 0;\n    margin-bottom: 0.5rem;\n    font-size: 1.5rem;\n    line-height: inherit;\n  }\n  legend + * {\n    clear: inline-start;\n  }\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-ampm-field,\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n  ::-webkit-inner-spin-button {\n    height: auto;\n  }\n  [type=search] {\n    -webkit-appearance: textfield;\n    outline-offset: -2px;\n  }\n  [type=search]::-webkit-search-cancel-button {\n    cursor: pointer;\n    filter: grayscale(1);\n  }\n  [type=tel],\n  [type=url],\n  [type=email],\n  [type=number] {\n    direction: ltr;\n  }\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n  ::file-selector-button {\n    font: inherit;\n    -webkit-appearance: button;\n  }\n  output {\n    display: inline-block;\n  }\n  iframe {\n    border: 0;\n  }\n  summary {\n    display: list-item;\n    cursor: pointer;\n  }\n  progress {\n    vertical-align: baseline;\n  }\n  [hidden] {\n    display: none !important;\n  }\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */\n","@use \"sass:map\";\n@use \"colors\" as *;\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"theme\" as *;\n@use \"mixins/tokens\" as *;\n@use \"forms/form-variables\" as *;\n\n// mdo-do: do we need theme?\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n\n$root-tokens: () !default;\n\n// scss-docs-start root-tokens\n// stylelint-disable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: defaults(\n  (\n    --black: #{$black},\n    --white: #{$white},\n\n    --gradient: #{$gradient},\n\n    // scss-docs-start root-font-size-variables\n    --font-size-base: 1rem,\n    --font-size-xs: .75rem,\n    --font-size-sm: .875rem,\n    --font-size-md: 1rem,\n    --font-size-lg: clamp(1.25rem, 1rem + .625vw, 1.5rem),\n    --font-size-xl: clamp(1.5rem, 1.1rem + .75vw, 1.75rem),\n    --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem),\n    --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem),\n    --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem),\n    --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem),\n    --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem),\n\n    --line-height-xs: 1.25,\n    --line-height-sm: 1.5,\n    --line-height-md: 1.5,\n    --line-height-lg: 1.5,\n    --line-height-xl: calc(2.5 / 1.75),\n    --line-height-2xl: calc(3 / 2.25),\n    --line-height-3xl: 1.2,\n    --line-height-4xl: 1.1,\n    --line-height-5xl: 1.1,\n    --line-height-6xl: 1,\n    // scss-docs-end root-font-size-variables\n\n    // scss-docs-start root-font-weight-variables\n    --font-weight-lighter: lighter,\n    --font-weight-light: 300,\n    --font-weight-normal: 400,\n    --font-weight-medium: 500,\n    --font-weight-semibold: 600,\n    --font-weight-bold: 700,\n    --font-weight-bolder: bolder,\n    // scss-docs-end root-font-weight-variables\n\n    // scss-docs-start root-body-variables\n    --body-font-family: system-ui,\n    --body-font-size: var(--font-size-base),\n    --body-font-weight: #{$font-weight-base},\n    --body-line-height: #{$line-height-base},\n\n    --heading-color: #{$headings-color},\n\n    --hr-border-color: var(--border-color),\n\n    --link-color: light-dark(var(--primary-base), var(--primary-text)),\n    --link-decoration: #{$link-decoration},\n    --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000),\n\n    --font-mono: \"SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace\",\n    --code-font-size: 95%,\n    --code-color: var(--fg-2),\n\n    // scss-docs-start root-border-var\n    --border-width: #{$border-width},\n    --border-style: #{$border-style},\n    --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700)),\n    --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    // scss-docs-end root-border-var\n\n    // scss-docs-start root-border-radius-var\n    --border-radius: .5rem,\n    --border-radius-xs: .375rem,\n    --border-radius-sm: .5rem,\n    --border-radius-lg: .75rem,\n    --border-radius-xl: 1rem,\n    --border-radius-2xl: 2rem,\n    --border-radius-pill: 50rem,\n    // scss-docs-end root-border-radius-var\n\n    // scss-docs-start root-box-shadow-variables\n    --box-shadow: 0 .5rem 1rem rgb(0 0 0 / 15%),\n    --box-shadow-sm: 0 .125rem .25rem rgb(0 0 0 / 7.5%),\n    --box-shadow-lg: 0 1rem 3rem rgb(0 0 0 / 17.5%),\n    --box-shadow-inset: inset 0 1px 2px rgb(0 0 0 / 7.5%),\n    // scss-docs-end root-box-shadow-variables\n\n    --spacer: 1rem,\n\n    // scss-docs-start root-focus-variables\n    --focus-ring-width: 3px,\n    --focus-ring-offset: 1px,\n    --focus-ring-color: var(--primary-focus-ring),\n    --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color),\n    // scss-docs-end root-focus-variables\n\n    // scss-docs-start root-form-variables\n    --control-checked-bg: var(--primary-base),\n    --control-checked-border-color: var(--control-checked-bg),\n    --control-active-bg: var(--primary-base),\n    --control-active-border-color: var(--control-active-bg),\n    --control-disabled-bg: var(--bg-3),\n    --control-disabled-opacity: .65,\n\n    --btn-input-fg: var(--fg-body),\n    --btn-input-bg: var(--bg-body),\n\n    --btn-input-min-height: 2.375rem,\n    --btn-input-padding-y: .375rem,\n    --btn-input-padding-x: .75rem,\n    --btn-input-font-size: var(--font-size-base),\n    --btn-input-line-height: var(--line-height-base),\n    --btn-input-border-radius: var(--border-radius),\n\n    --btn-input-xs-min-height: 1.5rem,\n    --btn-input-xs-padding-y: .125rem,\n    --btn-input-xs-padding-x: .5rem,\n    --btn-input-xs-font-size: var(--font-size-xs),\n    --btn-input-xs-line-height: 1.125,\n    --btn-input-xs-border-radius: var(--border-radius-xs),\n\n    --btn-input-sm-min-height: 2rem,\n    --btn-input-sm-padding-y: .25rem,\n    --btn-input-sm-padding-x: .625rem,\n    --btn-input-sm-font-size: var(--font-size-sm),\n    --btn-input-sm-line-height: var(--line-height-sm),\n    --btn-input-sm-border-radius: var(--border-radius-sm),\n\n    --btn-input-lg-min-height: 2.75rem,\n    --btn-input-lg-padding-y: .5rem,\n    --btn-input-lg-padding-x: 1rem,\n    --btn-input-lg-font-size: var(--font-size-md),\n    --btn-input-lg-line-height: var(--line-height-md),\n    --btn-input-lg-border-radius: var(--border-radius-lg),\n    // scss-docs-end root-form-variables\n\n    // scss-docs-start root-form-validation-variables\n    --form-valid-color: #{$form-valid-color},\n    --form-valid-border-color: #{$form-valid-border-color},\n    --form-invalid-color: #{$form-invalid-color},\n    --form-invalid-border-color: #{$form-invalid-border-color},\n    // scss-docs-end root-form-validation-variables\n  ),\n  $root-tokens\n);\n// stylelint-enable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// scss-docs-end root-tokens\n\n// scss-docs-start root-theme-tokens\n// Generate semantic theme colors\n@each $color-name, $color-map in $theme-colors {\n  @each $key, $value in $color-map {\n    $root-tokens: map.set($root-tokens, --#{$color-name}-#{$key}, $value);\n  }\n}\n\n// Generate background tokens\n@each $key, $value in $theme-bgs {\n  $root-tokens: map.set($root-tokens, --bg-#{$key}, $value);\n}\n\n// Generate foreground tokens\n@each $key, $value in $theme-fgs {\n  $root-tokens: map.set($root-tokens, --fg-#{$key}, $value);\n}\n\n// Generate border tokens\n@each $key, $value in $theme-borders {\n  $root-tokens: map.set($root-tokens, --border-#{$key}, $value);\n}\n// scss-docs-end root-theme-tokens\n\n// Generate breakpoint tokens\n@each $name, $value in $breakpoints {\n  $root-tokens: map.set($root-tokens, --breakpoint-#{$name}, $value);\n}\n\n:root {\n  @include tokens($root-tokens);\n\n  color-scheme: light dark;\n}\n\n[data-bs-theme=\"dark\"] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=\"light\"] {\n  color-scheme: light;\n}\n","@use \"../colors\" as *;\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../variables\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n$reboot-kbd-tokens: () !default;\n\n// scss-docs-start reboot-kbd-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-kbd-tokens: defaults(\n  (\n    --kbd-padding-y: .125rem,\n    --kbd-padding-x: .25rem,\n    --kbd-font-size: var(--font-size-xs),\n    --kbd-color: var(--bg-body),\n    --kbd-bg: var(--fg-2),\n    --kbd-border-radius: var(--border-radius-sm),\n  ),\n  $reboot-kbd-tokens\n);\n// scss-docs-end reboot-kbd-tokens\n\n$reboot-mark-tokens: () !default;\n\n// scss-docs-start reboot-mark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-mark-tokens: defaults(\n  (\n    --mark-padding: .1875em,\n    --mark-color: var(--fg-body),\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900)),\n  ),\n  $reboot-mark-tokens\n);\n// scss-docs-end reboot-mark-tokens\n\n@layer reboot {\n  // Reboot\n  //\n  // Normalization of HTML elements, manually forked from Normalize.css to remove\n  // styles targeting irrelevant browsers while applying new styles.\n  //\n  // Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n  // Document\n  //\n  // Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n\n  // Root\n  //\n  // Ability to the value of the root font sizes, affecting the value of `rem`.\n  // null by default, thus nothing is generated.\n\n  :root {\n    // Assume browser default font-size of 16px, or a user's preference\n    accent-color: var(--primary-base);\n\n    @if $enable-smooth-scroll {\n      @media (prefers-reduced-motion: no-preference) {\n        scroll-behavior: smooth;\n      }\n    }\n  }\n\n  // Body\n  //\n  // 1. Remove the margin in all browsers.\n  // 2. As a best practice, apply a default `background-color`.\n  // 3. Prevent adjustments of font size after orientation changes in iOS.\n  // 4. Change the default tap highlight to be completely transparent in iOS.\n\n  // scss-docs-start reboot-body-rules\n  body {\n    margin: 0; // 1\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body); // 2\n    -webkit-text-size-adjust: 100%; // 3\n    -webkit-tap-highlight-color: rgba($black, 0); // 4\n  }\n  // scss-docs-end reboot-body-rules\n\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n\n  // Typography\n  //\n  // 1. Remove top margins from headings\n  //    By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n  //    margin for easier control within type scales as it avoids margin collapsing.\n\n  %heading {\n    margin-top: 0; // 1\n    margin-bottom: $headings-margin-bottom;\n    font-family: $headings-font-family;\n    font-style: $headings-font-style;\n    font-weight: $headings-font-weight;\n    line-height: $headings-line-height;\n    color: var(--heading-color);\n  }\n\n  h1,\n  .h1 {\n    @extend %heading;\n    font-size: $h1-font-size;\n  }\n\n  h2,\n  .h2 {\n    @extend %heading;\n    font-size: $h2-font-size;\n  }\n\n  h3,\n  .h3 {\n    @extend %heading;\n    font-size: $h3-font-size;\n  }\n\n  h4,\n  .h4 {\n    @extend %heading;\n    font-size: $h4-font-size;\n  }\n\n  h5,\n  .h5 {\n    @extend %heading;\n    font-size: $h5-font-size;\n  }\n\n  h6,\n  .h6 {\n    @extend %heading;\n    font-size: $h6-font-size;\n  }\n\n  // Reset margins on paragraphs\n  //\n  // Similarly, the top margin on `<p>`s get reset. However, we also reset the\n  // bottom margin to use `rem` units instead of `em`.\n\n  p {\n    margin-top: 0;\n    margin-bottom: $paragraph-margin-bottom;\n  }\n\n  // Abbreviations\n  //\n  // 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n  // 2. Add explicit cursor to indicate changed behavior.\n  // 3. Prevent the text-decoration to be skipped.\n\n  abbr[title] {\n    text-decoration: underline dotted; // 1\n    cursor: help; // 2\n    text-decoration-skip-ink: none; // 3\n  }\n\n  // Address\n\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n\n  // Lists\n\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n\n  dt {\n    font-weight: $dt-font-weight;\n  }\n\n  // 1. Undo browser default\n\n  dd {\n    margin-inline-start: 0; // 1\n    margin-bottom: .5rem;\n  }\n\n  // Blockquote\n\n  blockquote {\n    margin: 0 0 1rem;\n    > * {\n      margin-block: 0;\n    }\n  }\n\n  // Strong\n  //\n  // Add the correct font weight in Chrome, Edge, and Safari\n\n  b,\n  strong {\n    font-weight: $font-weight-bolder;\n  }\n\n  // Small\n  //\n  // Add the correct font size in all browsers\n\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n\n  // Mark\n\n  mark,\n  .mark {\n    @include tokens($reboot-mark-tokens);\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n\n  // Sub and Sup\n  //\n  // Prevent `sub` and `sup` elements from affecting the line height in\n  // all browsers.\n\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, .75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n\n  sub { bottom: -.25em; }\n  sup { top: -.5em; }\n\n  // Links\n\n  a {\n    color: var(--theme-text, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: $link-underline-offset;\n\n    &:hover {\n      // --link-color: var(--link-hover-color);\n      // --link-decoration: var(--link-hover-decoration, var(--link-decoration));\n      color: var(--theme-text-emphasis, var(--link-hover-color));\n      text-decoration: var(--link-hover-decoration, var(--link-decoration));\n    }\n  }\n\n  // And undo these styles for placeholder links/named anchors (without href).\n  // It would be more straightforward to just use a[href] in previous block, but that\n  // causes specificity issues in many other styles that are too complex to fix.\n  // See https://github.com/twbs/bootstrap/issues/19402\n\n  a:not([href]):not([class]) {\n    &,\n    &:hover {\n      color: inherit;\n      text-decoration: none;\n    }\n  }\n\n  // Code\n\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n  }\n\n  // 1. Remove browser default top margin\n  // 2. Reset browser default of `1em` to use `rem`s\n  // 3. Don't allow content to break outside\n\n  pre {\n    display: block;\n    margin-top: 0; // 1\n    margin-bottom: 1rem; // 2\n    overflow: auto; // 3\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n\n    // Account for some code outputs that place code tags in pre tags\n    code {\n      font-size: inherit;\n      color: inherit;\n      word-break: normal;\n    }\n  }\n\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n\n    // Streamline the style when inside anchors to avoid broken underline and more\n    a > & {\n      color: inherit;\n    }\n  }\n\n  kbd {\n    @include tokens($reboot-kbd-tokens);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    @include border-radius(var(--kbd-border-radius));\n\n    kbd {\n      padding: 0;\n      font-size: 1em;\n      font-weight: inherit; // mdo-do: check if this is needed\n    }\n  }\n\n  // Figures\n  //\n  // Apply a consistent margin strategy (matches our type styles).\n\n  figure {\n    margin: 0 0 1rem;\n  }\n\n  // Images and content\n\n  img,\n  svg {\n    vertical-align: middle;\n  }\n\n  // Tables\n  //\n  // Prevent double borders\n\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n\n  caption {\n    // padding-top: $table-cell-padding-y;\n    // padding-bottom: $table-cell-padding-y;\n    // color: $table-caption-color;\n    padding-block: .5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n\n  // 1. Removes font-weight bold by inheriting\n  // 2. Matches default `<td>` alignment by inheriting `text-align`.\n  // 3. Fix alignment for Safari\n\n  th {\n    // font-weight: $table-th-font-weight; // 1 // mdo-do: it's null by default. maybe we remove?\n    text-align: inherit; // 2\n    text-align: -webkit-match-parent; // 3\n  }\n\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n\n  // Forms\n  //\n  // 1. Allow labels to use `margin` for spacing.\n\n  label {\n    display: inline-block; // 1\n  }\n\n  // Remove the default `border-radius` that macOS Chrome adds.\n  // See https://github.com/twbs/bootstrap/issues/24093\n\n  button {\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 0;\n  }\n\n  // Explicitly remove focus outline in Chromium when it shouldn't be\n  // visible (e.g. as result of mouse click or touch tap). It already\n  // should be doing this automatically, but seems to currently be\n  // confused and applies its very visible two-tone outline anyway.\n\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n\n  // 1. Remove the margin in Firefox and Safari\n\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0; // 1\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n\n  // Remove the inheritance of text transform in Firefox\n  button,\n  select {\n    text-transform: none;\n  }\n  // Set the cursor for non-`<button>` buttons\n  //\n  // Details at https://github.com/twbs/bootstrap/pull/30562\n  [role=\"button\"] {\n    cursor: pointer;\n  }\n\n  select {\n    // Remove the inheritance of word-wrap in Safari.\n    // See https://github.com/twbs/bootstrap/issues/24990\n    word-wrap: normal;\n\n    // Undo the opacity change from Chrome\n    &:disabled {\n      opacity: 1;\n    }\n  }\n\n  // Remove the dropdown arrow only from text type inputs built with datalists in Chrome.\n  // See https://stackoverflow.com/a/54997118\n\n  [list]:not([type=\"date\"]):not([type=\"datetime-local\"]):not([type=\"month\"]):not([type=\"week\"]):not([type=\"time\"])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n\n  // 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n  //    controls in Android 4.\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n  // 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\n  button,\n  [type=\"button\"], // 1\n  [type=\"reset\"],\n  [type=\"submit\"] {\n    -webkit-appearance: button; // 2\n\n    @if $enable-button-pointers {\n      &:not(:disabled) {\n        cursor: pointer; // 3\n      }\n    }\n  }\n\n  // Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\n\n  ::-moz-focus-inner {\n    padding: 0;\n    border-style: none;\n  }\n\n  // 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\n  textarea {\n    resize: vertical; // 1\n  }\n\n  // 1. Browsers set a default `min-width: min-content;` on fieldsets,\n  //    unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n  //    So we reset that to ensure fieldsets behave more like a standard block element.\n  //    See https://github.com/twbs/bootstrap/issues/12359\n  //    and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n  // 2. Reset the default outline behavior of fieldsets so they don't affect page layout.\n\n  fieldset {\n    min-width: 0; // 1\n    padding: 0; // 2\n    margin: 0; // 2\n    border: 0; // 2\n  }\n\n  // 1. By using `float: inline-start`, the legend will behave like a block element.\n  //    This way the border of a fieldset wraps around the legend if present.\n  // 2. Fix wrapping bug.\n  //    See https://github.com/twbs/bootstrap/issues/29712\n\n  legend {\n    float: inline-start; // 1\n    width: 100%;\n    padding: 0;\n    margin-bottom: $legend-margin-bottom;\n    font-size: $legend-font-size;\n    font-weight: $legend-font-weight;\n    line-height: inherit;\n\n    + * {\n      clear: inline-start; // 2\n    }\n  }\n\n  // Fix height of inputs with a type of datetime-local, date, month, week, or time\n  // See https://github.com/twbs/bootstrap/issues/18842\n\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-ampm-field,\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n\n  ::-webkit-inner-spin-button {\n    height: auto;\n  }\n\n  // 1. This overrides the extra rounded corners on search inputs in iOS so that our\n  //    `.form-control` class can properly style them. Note that this cannot simply\n  //    be added to `.form-control` as it's not specific enough. For details, see\n  //    https://github.com/twbs/bootstrap/issues/11586.\n  // 2. Correct the outline style in Safari.\n\n  [type=\"search\"] {\n    -webkit-appearance: textfield; // 1\n    outline-offset: -2px; // 2\n\n    // 3. Better affordance and consistent appearance for search cancel button\n    &::-webkit-search-cancel-button {\n      cursor: pointer;\n      filter: grayscale(1);\n    }\n  }\n\n  // A few input types should stay LTR regardless of document direction\n  // See https://rtlstyling.com/posts/rtl-styling#form-inputs\n\n  [type=\"tel\"],\n  [type=\"url\"],\n  [type=\"email\"],\n  [type=\"number\"] {\n    direction: ltr;\n  }\n\n  // Remove the inner padding in Chrome and Safari on macOS.\n\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n\n  // Remove padding around color pickers in webkit browsers\n\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n\n  // 1. Inherit font family and line height for file input buttons\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n\n  ::file-selector-button {\n    font: inherit; // 1\n    -webkit-appearance: button; // 2\n  }\n\n  // Correct element displays\n\n  output {\n    display: inline-block;\n  }\n\n  // Remove border from iframe\n\n  iframe {\n    border: 0;\n  }\n\n  // Summary\n  //\n  // 1. Add the correct display in all browsers\n\n  summary {\n    display: list-item; // 1\n    cursor: pointer;\n  }\n\n  // Progress\n  //\n  // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\n  progress {\n    vertical-align: baseline;\n  }\n\n  // Hidden attribute\n  //\n  // Always hide an element with the `hidden` HTML attribute.\n\n  [hidden] {\n    display: none !important;\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n\n// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $btn-padding-y-lg.\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `<body>` element.\n\n// $body-text-align:           null !default;\n\n// Links\n//\n// Style anchor elements.\n\n// $link-color:                              var !default;\n$link-decoration:                         underline !default;\n$link-underline-offset:                   .2em !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap:               .375rem !default;\n$icon-link-underline-offset:  .25em !default;\n$icon-link-icon-size:         1em !default;\n$icon-link-icon-transition:   .2s ease-in-out transform !default;\n$icon-link-icon-transform:    translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n$border-style:                solid !default;\n$border-color:                color-mix(in oklch, var(--gray-100), var(--gray-200)) !default;\n// scss-docs-end border-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"auto\": auto,\n  \"1x1\": #{\"1 / 1\"},\n  \"4x3\": #{\"4 / 3\"},\n  \"16x9\": #{\"16 / 9\"},\n  \"21x9\": #{\"21 / 9\"}\n) !default;\n// scss-docs-end aspect-ratios\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// $font-family-sans-serif:      system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n// $font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// $font-family-base:            var(--font-sans-serif) !default;\n// $font-family-code:            var(--font-monospace) !default;\n\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-medium:          500 !default;\n$font-weight-semibold:        600 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n\n$h1-font-size: var(--font-size-3xl) !default;\n$h2-font-size: var(--font-size-2xl) !default;\n$h3-font-size: var(--font-size-xl) !default;\n$h4-font-size: var(--font-size-lg) !default;\n$h5-font-size: var(--font-size-md) !default;\n$h6-font-size: var(--font-size-sm) !default;\n// scss-docs-end font-variables\n\n// Font sizes with line-height for utilities\n$font-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$font-sizes: defaults(\n  (\n    \"xs\": (\n      \"font-size\": var(--font-size-xs),\n      \"line-height\": var(--line-height-xs)\n    ),\n    \"sm\": (\n      \"font-size\": var(--font-size-sm),\n      \"line-height\": var(--line-height-sm)\n    ),\n    \"md\": (\n      \"font-size\": var(--font-size-md),\n      \"line-height\": var(--line-height-md)\n    ),\n    \"lg\": (\n      \"font-size\": var(--font-size-lg),\n      \"line-height\": var(--line-height-lg)\n    ),\n    \"xl\": (\n      \"font-size\": var(--font-size-xl),\n      \"line-height\": var(--line-height-xl)\n    ),\n    \"2xl\": (\n      \"font-size\": var(--font-size-2xl),\n      \"line-height\": var(--line-height-2xl)\n    ),\n    \"3xl\": (\n      \"font-size\": var(--font-size-3xl),\n      \"line-height\": var(--line-height-3xl)\n    ),\n    \"4xl\": (\n      \"font-size\": var(--font-size-4xl),\n      \"line-height\": var(--line-height-4xl)\n    ),\n    \"5xl\": (\n      \"font-size\": var(--font-size-5xl),\n      \"line-height\": var(--line-height-5xl)\n    ),\n    \"6xl\": (\n      \"font-size\": var(--font-size-6xl),\n      \"line-height\": var(--line-height-6xl)\n    ),\n  ),\n  $font-sizes\n);\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start type-variables\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n// $list-inline-padding:         .5rem !default;\n// scss-docs-end type-variables\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown:                   1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-dialog:                     1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n$zindex-toast:                      1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n  n1: -1,\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n","@use \"sass:list\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n  $return: ();\n  @each $value in $radius {\n    @if meta.type-of($value) == number {\n      $return: list.append($return, math.max($value, 0));\n    } @else {\n      $return: list.append($return, $value);\n    }\n  }\n  @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: var(--border-radius), $fallback-border-radius: false) {\n  @if $enable-rounded {\n    border-radius: valid-radius($radius);\n  }\n  @else if $fallback-border-radius != false {\n    border-radius: $fallback-border-radius;\n  }\n}\n\n@mixin border-top-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n// scss-docs-end border-radius-mixins\n"]}
\ No newline at end of file
+{"version":3,"sources":["../../scss/_banner.scss","../../scss/_colors.scss","../../scss/mixins/_tokens.scss","bootstrap-reboot.css","../../scss/_root.scss","../../scss/content/_reboot.scss","../../scss/_config.scss","../../scss/mixins/_border-radius.scss"],"names":[],"mappings":"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","file":"bootstrap-reboot.css","sourcesContent":["$file: \"\" !default;\n\n/*!\n  * Bootstrap #{$file} v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n","// stylelint-disable hue-degree-notation, @stylistic/number-leading-zero\n\n@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// Easily convert colors to oklch() with https://oklch.com/\n\n$white: #fff !default;\n$black: #000 !default;\n\n// scss-docs-start colors-list\n$blue: oklch(60% 0.24 240) !default;\n$indigo: oklch(56% 0.26 288) !default;\n$violet: oklch(56% 0.24 300) !default;\n$purple: oklch(56% 0.24 320) !default;\n$pink: oklch(60% 0.22 4) !default;\n$red: oklch(60% 0.22 20) !default;\n$orange: oklch(70% 0.22 52) !default;\n$amber: oklch(79% 0.2 78) !default;\n$yellow: oklch(88% 0.24 88) !default;\n$lime: oklch(65% 0.24 135) !default;\n$green: oklch(64% 0.22 160) !default;\n$teal: oklch(68% 0.22 190) !default;\n$cyan: oklch(69% 0.22 220) !default;\n$brown: oklch(60% 0.12 54) !default;\n$gray: oklch(60% 0.02 245) !default;\n$pewter: oklch(65% 0.01 290) !default;\n// scss-docs-end colors-list\n\n// scss-docs-start colors-map\n$colors: () !default;\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$colors: defaults(\n  (\n    \"blue\": $blue,\n    \"indigo\": $indigo,\n    \"violet\": $violet,\n    \"purple\": $purple,\n    \"pink\": $pink,\n    \"red\": $red,\n    \"orange\": $orange,\n    \"amber\": $amber,\n    \"yellow\": $yellow,\n    \"lime\": $lime,\n    \"green\": $green,\n    \"teal\": $teal,\n    \"cyan\": $cyan,\n    \"brown\": $brown,\n    \"gray\": $gray,\n    \"pewter\": $pewter,\n  ),\n  $colors\n);\n// scss-docs-end colors-map\n\n// scss-docs-start color-mix-options\n$color-mix-space: lab !default;\n$tint-color: var(--white) !default;\n$shade-color: var(--black) !default;\n\n$color-tints: (\n  \"025\": 94%,\n  \"050\": 90%,\n  \"100\": 80%,\n  \"200\": 60%,\n  \"300\": 40%,\n  \"400\": 20%,\n) !default;\n\n$color-shades: (\n  \"600\": 16%,\n  \"700\": 32%,\n  \"800\": 48%,\n  \"900\": 64%,\n  \"950\": 76%,\n  \"975\": 88%,\n) !default;\n// scss-docs-end color-mix-options\n\n// scss-docs-start color-tokens\n$color-tokens: () !default;\n\n$-color-defaults: () !default;\n@each $color, $value in $colors {\n  @each $stop, $percent in $color-tints {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$tint-color} #{$percent}, #{$value}));\n  }\n  $-color-defaults: map.set($-color-defaults, --#{$color}-500, #{$value});\n  @each $stop, $percent in $color-shades {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$shade-color} #{$percent}, #{$value}));\n  }\n}\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$color-tokens: defaults($-color-defaults, $color-tokens);\n// scss-docs-end color-tokens\n\n:root {\n  @include tokens($color-tokens);\n}\n","// Mixin to output tokens as CSS custom properties\n\n// scss-docs-start mixin-tokens\n@mixin tokens($map) {\n  @each $prop, $value in $map {\n    #{$prop}: #{$value};\n  }\n}\n// scss-docs-end mixin-tokens\n","/*!\n  * Bootstrap Reboot v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n:root {\n  --blue-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.24 240deg));\n  --blue-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.24 240deg));\n  --blue-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.24 240deg));\n  --blue-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.24 240deg));\n  --blue-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.24 240deg));\n  --blue-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.24 240deg));\n  --blue-500: oklch(60% 0.24 240deg);\n  --blue-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.24 240deg));\n  --blue-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.24 240deg));\n  --blue-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.24 240deg));\n  --blue-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.24 240deg));\n  --blue-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.24 240deg));\n  --blue-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.24 240deg));\n  --indigo-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.26 288deg));\n  --indigo-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.26 288deg));\n  --indigo-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.26 288deg));\n  --indigo-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.26 288deg));\n  --indigo-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.26 288deg));\n  --indigo-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.26 288deg));\n  --indigo-500: oklch(56% 0.26 288deg);\n  --indigo-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.26 288deg));\n  --indigo-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.26 288deg));\n  --indigo-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.26 288deg));\n  --indigo-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.26 288deg));\n  --indigo-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.26 288deg));\n  --indigo-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.26 288deg));\n  --violet-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 300deg));\n  --violet-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 300deg));\n  --violet-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 300deg));\n  --violet-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 300deg));\n  --violet-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 300deg));\n  --violet-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 300deg));\n  --violet-500: oklch(56% 0.24 300deg);\n  --violet-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 300deg));\n  --violet-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 300deg));\n  --violet-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 300deg));\n  --violet-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 300deg));\n  --violet-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 300deg));\n  --violet-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 300deg));\n  --purple-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 320deg));\n  --purple-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 320deg));\n  --purple-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 320deg));\n  --purple-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 320deg));\n  --purple-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 320deg));\n  --purple-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 320deg));\n  --purple-500: oklch(56% 0.24 320deg);\n  --purple-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 320deg));\n  --purple-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 320deg));\n  --purple-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 320deg));\n  --purple-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 320deg));\n  --purple-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 320deg));\n  --purple-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 320deg));\n  --pink-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 4deg));\n  --pink-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 4deg));\n  --pink-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 4deg));\n  --pink-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 4deg));\n  --pink-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 4deg));\n  --pink-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 4deg));\n  --pink-500: oklch(60% 0.22 4deg);\n  --pink-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 4deg));\n  --pink-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 4deg));\n  --pink-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 4deg));\n  --pink-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 4deg));\n  --pink-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 4deg));\n  --pink-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 4deg));\n  --red-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 20deg));\n  --red-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 20deg));\n  --red-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 20deg));\n  --red-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 20deg));\n  --red-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 20deg));\n  --red-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 20deg));\n  --red-500: oklch(60% 0.22 20deg);\n  --red-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 20deg));\n  --red-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 20deg));\n  --red-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 20deg));\n  --red-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 20deg));\n  --red-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 20deg));\n  --red-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 20deg));\n  --orange-025: color-mix(in lab, var(--white) 94%, oklch(70% 0.22 52deg));\n  --orange-050: color-mix(in lab, var(--white) 90%, oklch(70% 0.22 52deg));\n  --orange-100: color-mix(in lab, var(--white) 80%, oklch(70% 0.22 52deg));\n  --orange-200: color-mix(in lab, var(--white) 60%, oklch(70% 0.22 52deg));\n  --orange-300: color-mix(in lab, var(--white) 40%, oklch(70% 0.22 52deg));\n  --orange-400: color-mix(in lab, var(--white) 20%, oklch(70% 0.22 52deg));\n  --orange-500: oklch(70% 0.22 52deg);\n  --orange-600: color-mix(in lab, var(--black) 16%, oklch(70% 0.22 52deg));\n  --orange-700: color-mix(in lab, var(--black) 32%, oklch(70% 0.22 52deg));\n  --orange-800: color-mix(in lab, var(--black) 48%, oklch(70% 0.22 52deg));\n  --orange-900: color-mix(in lab, var(--black) 64%, oklch(70% 0.22 52deg));\n  --orange-950: color-mix(in lab, var(--black) 76%, oklch(70% 0.22 52deg));\n  --orange-975: color-mix(in lab, var(--black) 88%, oklch(70% 0.22 52deg));\n  --amber-025: color-mix(in lab, var(--white) 94%, oklch(79% 0.2 78deg));\n  --amber-050: color-mix(in lab, var(--white) 90%, oklch(79% 0.2 78deg));\n  --amber-100: color-mix(in lab, var(--white) 80%, oklch(79% 0.2 78deg));\n  --amber-200: color-mix(in lab, var(--white) 60%, oklch(79% 0.2 78deg));\n  --amber-300: color-mix(in lab, var(--white) 40%, oklch(79% 0.2 78deg));\n  --amber-400: color-mix(in lab, var(--white) 20%, oklch(79% 0.2 78deg));\n  --amber-500: oklch(79% 0.2 78deg);\n  --amber-600: color-mix(in lab, var(--black) 16%, oklch(79% 0.2 78deg));\n  --amber-700: color-mix(in lab, var(--black) 32%, oklch(79% 0.2 78deg));\n  --amber-800: color-mix(in lab, var(--black) 48%, oklch(79% 0.2 78deg));\n  --amber-900: color-mix(in lab, var(--black) 64%, oklch(79% 0.2 78deg));\n  --amber-950: color-mix(in lab, var(--black) 76%, oklch(79% 0.2 78deg));\n  --amber-975: color-mix(in lab, var(--black) 88%, oklch(79% 0.2 78deg));\n  --yellow-025: color-mix(in lab, var(--white) 94%, oklch(88% 0.24 88deg));\n  --yellow-050: color-mix(in lab, var(--white) 90%, oklch(88% 0.24 88deg));\n  --yellow-100: color-mix(in lab, var(--white) 80%, oklch(88% 0.24 88deg));\n  --yellow-200: color-mix(in lab, var(--white) 60%, oklch(88% 0.24 88deg));\n  --yellow-300: color-mix(in lab, var(--white) 40%, oklch(88% 0.24 88deg));\n  --yellow-400: color-mix(in lab, var(--white) 20%, oklch(88% 0.24 88deg));\n  --yellow-500: oklch(88% 0.24 88deg);\n  --yellow-600: color-mix(in lab, var(--black) 16%, oklch(88% 0.24 88deg));\n  --yellow-700: color-mix(in lab, var(--black) 32%, oklch(88% 0.24 88deg));\n  --yellow-800: color-mix(in lab, var(--black) 48%, oklch(88% 0.24 88deg));\n  --yellow-900: color-mix(in lab, var(--black) 64%, oklch(88% 0.24 88deg));\n  --yellow-950: color-mix(in lab, var(--black) 76%, oklch(88% 0.24 88deg));\n  --yellow-975: color-mix(in lab, var(--black) 88%, oklch(88% 0.24 88deg));\n  --lime-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.24 135deg));\n  --lime-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.24 135deg));\n  --lime-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.24 135deg));\n  --lime-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.24 135deg));\n  --lime-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.24 135deg));\n  --lime-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.24 135deg));\n  --lime-500: oklch(65% 0.24 135deg);\n  --lime-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.24 135deg));\n  --lime-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.24 135deg));\n  --lime-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.24 135deg));\n  --lime-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.24 135deg));\n  --lime-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.24 135deg));\n  --lime-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.24 135deg));\n  --green-025: color-mix(in lab, var(--white) 94%, oklch(64% 0.22 160deg));\n  --green-050: color-mix(in lab, var(--white) 90%, oklch(64% 0.22 160deg));\n  --green-100: color-mix(in lab, var(--white) 80%, oklch(64% 0.22 160deg));\n  --green-200: color-mix(in lab, var(--white) 60%, oklch(64% 0.22 160deg));\n  --green-300: color-mix(in lab, var(--white) 40%, oklch(64% 0.22 160deg));\n  --green-400: color-mix(in lab, var(--white) 20%, oklch(64% 0.22 160deg));\n  --green-500: oklch(64% 0.22 160deg);\n  --green-600: color-mix(in lab, var(--black) 16%, oklch(64% 0.22 160deg));\n  --green-700: color-mix(in lab, var(--black) 32%, oklch(64% 0.22 160deg));\n  --green-800: color-mix(in lab, var(--black) 48%, oklch(64% 0.22 160deg));\n  --green-900: color-mix(in lab, var(--black) 64%, oklch(64% 0.22 160deg));\n  --green-950: color-mix(in lab, var(--black) 76%, oklch(64% 0.22 160deg));\n  --green-975: color-mix(in lab, var(--black) 88%, oklch(64% 0.22 160deg));\n  --teal-025: color-mix(in lab, var(--white) 94%, oklch(68% 0.22 190deg));\n  --teal-050: color-mix(in lab, var(--white) 90%, oklch(68% 0.22 190deg));\n  --teal-100: color-mix(in lab, var(--white) 80%, oklch(68% 0.22 190deg));\n  --teal-200: color-mix(in lab, var(--white) 60%, oklch(68% 0.22 190deg));\n  --teal-300: color-mix(in lab, var(--white) 40%, oklch(68% 0.22 190deg));\n  --teal-400: color-mix(in lab, var(--white) 20%, oklch(68% 0.22 190deg));\n  --teal-500: oklch(68% 0.22 190deg);\n  --teal-600: color-mix(in lab, var(--black) 16%, oklch(68% 0.22 190deg));\n  --teal-700: color-mix(in lab, var(--black) 32%, oklch(68% 0.22 190deg));\n  --teal-800: color-mix(in lab, var(--black) 48%, oklch(68% 0.22 190deg));\n  --teal-900: color-mix(in lab, var(--black) 64%, oklch(68% 0.22 190deg));\n  --teal-950: color-mix(in lab, var(--black) 76%, oklch(68% 0.22 190deg));\n  --teal-975: color-mix(in lab, var(--black) 88%, oklch(68% 0.22 190deg));\n  --cyan-025: color-mix(in lab, var(--white) 94%, oklch(69% 0.22 220deg));\n  --cyan-050: color-mix(in lab, var(--white) 90%, oklch(69% 0.22 220deg));\n  --cyan-100: color-mix(in lab, var(--white) 80%, oklch(69% 0.22 220deg));\n  --cyan-200: color-mix(in lab, var(--white) 60%, oklch(69% 0.22 220deg));\n  --cyan-300: color-mix(in lab, var(--white) 40%, oklch(69% 0.22 220deg));\n  --cyan-400: color-mix(in lab, var(--white) 20%, oklch(69% 0.22 220deg));\n  --cyan-500: oklch(69% 0.22 220deg);\n  --cyan-600: color-mix(in lab, var(--black) 16%, oklch(69% 0.22 220deg));\n  --cyan-700: color-mix(in lab, var(--black) 32%, oklch(69% 0.22 220deg));\n  --cyan-800: color-mix(in lab, var(--black) 48%, oklch(69% 0.22 220deg));\n  --cyan-900: color-mix(in lab, var(--black) 64%, oklch(69% 0.22 220deg));\n  --cyan-950: color-mix(in lab, var(--black) 76%, oklch(69% 0.22 220deg));\n  --cyan-975: color-mix(in lab, var(--black) 88%, oklch(69% 0.22 220deg));\n  --brown-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.12 54deg));\n  --brown-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.12 54deg));\n  --brown-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.12 54deg));\n  --brown-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.12 54deg));\n  --brown-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.12 54deg));\n  --brown-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.12 54deg));\n  --brown-500: oklch(60% 0.12 54deg);\n  --brown-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.12 54deg));\n  --brown-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.12 54deg));\n  --brown-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.12 54deg));\n  --brown-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.12 54deg));\n  --brown-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.12 54deg));\n  --brown-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.12 54deg));\n  --gray-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.02 245deg));\n  --gray-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.02 245deg));\n  --gray-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.02 245deg));\n  --gray-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.02 245deg));\n  --gray-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.02 245deg));\n  --gray-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.02 245deg));\n  --gray-500: oklch(60% 0.02 245deg);\n  --gray-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.02 245deg));\n  --gray-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.02 245deg));\n  --gray-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.02 245deg));\n  --gray-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.02 245deg));\n  --gray-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.02 245deg));\n  --gray-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.02 245deg));\n  --pewter-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.01 290deg));\n  --pewter-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.01 290deg));\n  --pewter-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.01 290deg));\n  --pewter-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.01 290deg));\n  --pewter-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.01 290deg));\n  --pewter-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.01 290deg));\n  --pewter-500: oklch(65% 0.01 290deg);\n  --pewter-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.01 290deg));\n  --pewter-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.01 290deg));\n  --pewter-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.01 290deg));\n  --pewter-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.01 290deg));\n  --pewter-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.01 290deg));\n  --pewter-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.01 290deg));\n}\n\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n:root {\n  --black: #000;\n  --white: #fff;\n  --gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent));\n  --font-weight-lighter: lighter;\n  --font-weight-light: 300;\n  --font-weight-normal: 400;\n  --font-weight-medium: 500;\n  --font-weight-semibold: 600;\n  --font-weight-bold: 700;\n  --font-weight-bolder: bolder;\n  --body-font-family: system-ui;\n  --body-font-size: var(--font-size-base);\n  --body-font-weight: 400;\n  --body-line-height: 1.5;\n  --heading-color: inherit;\n  --hr-border-color: var(--border-color);\n  --link-color: light-dark(var(--primary-base), var(--primary-text));\n  --link-decoration: underline;\n  --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000);\n  --font-mono: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;\n  --code-font-size: 95%;\n  --code-color: var(--fg-2);\n  --border-width: 1px;\n  --border-style: solid;\n  --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700));\n  --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent);\n  --border-radius: 0.5rem;\n  --border-radius-xs: 0.375rem;\n  --border-radius-sm: 0.5rem;\n  --border-radius-lg: 0.75rem;\n  --border-radius-xl: 1rem;\n  --border-radius-2xl: 2rem;\n  --border-radius-pill: 50rem;\n  --box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  --box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n  --box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n  --box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n  --spacer: 1rem;\n  --focus-ring-width: 3px;\n  --focus-ring-offset: 1px;\n  --focus-ring-color: var(--primary-focus-ring);\n  --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color);\n  --control-checked-bg: var(--primary-base);\n  --control-checked-border-color: var(--control-checked-bg);\n  --control-active-bg: var(--primary-base);\n  --control-active-border-color: var(--control-active-bg);\n  --control-disabled-bg: var(--bg-3);\n  --control-disabled-opacity: 0.65;\n  --btn-input-fg: var(--fg-body);\n  --btn-input-bg: var(--bg-body);\n  --btn-input-min-height: 2.375rem;\n  --btn-input-padding-y: 0.375rem;\n  --btn-input-padding-x: 0.75rem;\n  --btn-input-font-size: var(--font-size-base);\n  --btn-input-line-height: var(--line-height-base);\n  --btn-input-border-radius: var(--border-radius);\n  --btn-input-xs-min-height: 1.5rem;\n  --btn-input-xs-padding-y: 0.125rem;\n  --btn-input-xs-padding-x: 0.5rem;\n  --btn-input-xs-font-size: var(--font-size-xs);\n  --btn-input-xs-line-height: 1.125;\n  --btn-input-xs-border-radius: var(--border-radius-xs);\n  --btn-input-sm-min-height: 2rem;\n  --btn-input-sm-padding-y: 0.25rem;\n  --btn-input-sm-padding-x: 0.625rem;\n  --btn-input-sm-font-size: var(--font-size-sm);\n  --btn-input-sm-line-height: var(--line-height-sm);\n  --btn-input-sm-border-radius: var(--border-radius-sm);\n  --btn-input-lg-min-height: 2.75rem;\n  --btn-input-lg-padding-y: 0.5rem;\n  --btn-input-lg-padding-x: 1rem;\n  --btn-input-lg-font-size: var(--font-size-md);\n  --btn-input-lg-line-height: var(--line-height-md);\n  --btn-input-lg-border-radius: var(--border-radius-lg);\n  --form-valid-color: var(--success-text);\n  --form-valid-border-color: var(--success-text);\n  --form-invalid-color: var(--danger-text);\n  --form-invalid-border-color: var(--danger-text);\n  --font-size-xs: 0.75rem;\n  --line-height-xs: 1.25;\n  --font-size-sm: 0.875rem;\n  --line-height-sm: 1.5;\n  --font-size-md: 1rem;\n  --line-height-md: 1.5;\n  --font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  --line-height-lg: 1.5;\n  --font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  --line-height-xl: 1.4285714286;\n  --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  --line-height-2xl: 1.3333333333;\n  --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  --line-height-3xl: 1.2;\n  --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  --line-height-4xl: 1.1;\n  --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);\n  --line-height-5xl: 1.1;\n  --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  --line-height-6xl: 1;\n  --primary-base: var(--blue-500);\n  --primary-text: light-dark(var(--blue-600), var(--blue-400));\n  --primary-text-emphasis: light-dark(var(--blue-800), var(--blue-200));\n  --primary-bg: var(--blue-500);\n  --primary-bg-subtle: light-dark(var(--blue-100), var(--blue-900));\n  --primary-bg-muted: light-dark(var(--blue-200), var(--blue-800));\n  --primary-border: light-dark(var(--blue-300), var(--blue-600));\n  --primary-focus-ring: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  --primary-contrast: var(--white);\n  --accent-base: var(--indigo-500);\n  --accent-text: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  --accent-text-emphasis: light-dark(var(--indigo-800), var(--indigo-300));\n  --accent-bg: var(--indigo-500);\n  --accent-bg-subtle: light-dark(var(--indigo-100), var(--indigo-900));\n  --accent-bg-muted: light-dark(var(--indigo-200), var(--indigo-800));\n  --accent-border: light-dark(var(--indigo-300), var(--indigo-600));\n  --accent-focus-ring: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  --accent-contrast: var(--white);\n  --success-base: var(--green-500);\n  --success-text: light-dark(var(--green-600), var(--green-400));\n  --success-text-emphasis: light-dark(var(--green-800), var(--green-300));\n  --success-bg: var(--green-500);\n  --success-bg-subtle: light-dark(var(--green-100), var(--green-900));\n  --success-bg-muted: light-dark(var(--green-200), var(--green-800));\n  --success-border: light-dark(var(--green-300), var(--green-600));\n  --success-focus-ring: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  --success-contrast: var(--white);\n  --danger-base: var(--red-500);\n  --danger-text: light-dark(var(--red-600), var(--red-400));\n  --danger-text-emphasis: light-dark(var(--red-800), var(--red-300));\n  --danger-bg: var(--red-500);\n  --danger-bg-subtle: light-dark(var(--red-100), var(--red-900));\n  --danger-bg-muted: light-dark(var(--red-200), var(--red-800));\n  --danger-border: light-dark(var(--red-300), var(--red-600));\n  --danger-focus-ring: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  --danger-contrast: var(--white);\n  --warning-base: var(--yellow-500);\n  --warning-text: light-dark(var(--yellow-700), var(--yellow-400));\n  --warning-text-emphasis: light-dark(var(--yellow-800), var(--yellow-300));\n  --warning-bg: var(--yellow-500);\n  --warning-bg-subtle: light-dark(var(--yellow-100), var(--yellow-900));\n  --warning-bg-muted: light-dark(var(--yellow-200), var(--yellow-800));\n  --warning-border: light-dark(var(--yellow-300), var(--yellow-600));\n  --warning-focus-ring: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  --warning-contrast: var(--gray-900);\n  --info-base: var(--cyan-500);\n  --info-text: light-dark(var(--cyan-600), var(--cyan-400));\n  --info-text-emphasis: light-dark(var(--cyan-800), var(--cyan-300));\n  --info-bg: var(--cyan-500);\n  --info-bg-subtle: light-dark(var(--cyan-100), var(--cyan-900));\n  --info-bg-muted: light-dark(var(--cyan-200), var(--cyan-800));\n  --info-border: light-dark(var(--cyan-300), var(--cyan-600));\n  --info-focus-ring: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  --info-contrast: var(--gray-900);\n  --inverse-base: var(--gray-900);\n  --inverse-text: light-dark(var(--gray-900), var(--gray-200));\n  --inverse-text-emphasis: light-dark(var(--gray-975), var(--white));\n  --inverse-bg: light-dark(var(--gray-900), var(--gray-025));\n  --inverse-bg-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --inverse-bg-muted: light-dark(var(--gray-200), var(--gray-300));\n  --inverse-border: light-dark(var(--gray-400), var(--gray-100));\n  --inverse-focus-ring: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  --inverse-contrast: light-dark(var(--white), var(--gray-900));\n  --secondary-base: var(--gray-200);\n  --secondary-text: light-dark(var(--gray-600), var(--gray-400));\n  --secondary-text-emphasis: light-dark(var(--gray-800), var(--gray-200));\n  --secondary-bg: light-dark(var(--gray-100), var(--gray-600));\n  --secondary-bg-subtle: light-dark(var(--gray-050), var(--gray-800));\n  --secondary-bg-muted: light-dark(var(--gray-100), var(--gray-700));\n  --secondary-border: light-dark(var(--gray-300), var(--gray-600));\n  --secondary-focus-ring: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  --secondary-contrast: light-dark(var(--gray-900), var(--white));\n  --bg-body: light-dark(var(--white), var(--gray-975));\n  --bg-1: light-dark(var(--gray-025), var(--gray-950));\n  --bg-2: light-dark(var(--gray-050), var(--gray-900));\n  --bg-3: light-dark(var(--gray-100), var(--gray-800));\n  --bg-4: light-dark(var(--gray-200), var(--gray-700));\n  --bg-white: var(--white);\n  --bg-black: var(--black);\n  --bg-transparent: transparent;\n  --bg-inherit: inherit;\n  --fg-body: light-dark(var(--gray-900), var(--gray-050));\n  --fg-1: light-dark(var(--gray-800), var(--gray-200));\n  --fg-2: light-dark(var(--gray-700), var(--gray-300));\n  --fg-3: light-dark(var(--gray-600), var(--gray-500));\n  --fg-4: light-dark(var(--gray-500), var(--gray-600));\n  --fg-white: var(--white);\n  --fg-black: var(--black);\n  --fg-inherit: inherit;\n  --border-bg: var(--bg-body);\n  --border-body: light-dark(var(--gray-300), var(--gray-800));\n  --border-muted: light-dark(var(--gray-200), var(--gray-800));\n  --border-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --border-emphasized: light-dark(var(--gray-400), var(--gray-600));\n  --border-white: var(--white);\n  --border-black: var(--black);\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 1024px;\n  --breakpoint-xl: 1280px;\n  --breakpoint-2xl: 1536px;\n  color-scheme: light dark;\n}\n\n[data-bs-theme=dark] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=light] {\n  color-scheme: light;\n}\n\n@layer reboot {\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n  :root {\n    accent-color: var(--primary-base);\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    :root {\n      scroll-behavior: smooth;\n    }\n  }\n  body {\n    margin: 0;\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body);\n    -webkit-text-size-adjust: 100%;\n    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  }\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n  h6,\n  .h6, h5,\n  .h5, h4,\n  .h4, h3,\n  .h3, h2,\n  .h2, h1,\n  .h1 {\n    margin-top: 0;\n    margin-bottom: 0.5rem;\n    font-weight: 500;\n    line-height: 1.2;\n    color: var(--heading-color);\n  }\n  h1,\n  .h1 {\n    font-size: var(--font-size-3xl);\n  }\n  h2,\n  .h2 {\n    font-size: var(--font-size-2xl);\n  }\n  h3,\n  .h3 {\n    font-size: var(--font-size-xl);\n  }\n  h4,\n  .h4 {\n    font-size: var(--font-size-lg);\n  }\n  h5,\n  .h5 {\n    font-size: var(--font-size-md);\n  }\n  h6,\n  .h6 {\n    font-size: var(--font-size-sm);\n  }\n  p {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  abbr[title] {\n    text-decoration: underline dotted;\n    cursor: help;\n    text-decoration-skip-ink: none;\n  }\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n  dt {\n    font-weight: 700;\n  }\n  dd {\n    margin-inline-start: 0;\n    margin-bottom: 0.5rem;\n  }\n  blockquote {\n    margin: 0 0 1rem;\n  }\n  blockquote > * {\n    margin-block: 0;\n  }\n  b,\n  strong {\n    font-weight: bolder;\n  }\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n  mark,\n  .mark {\n    --mark-padding: 0.1875em;\n    --mark-color: var(--fg-body);\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900));\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, 0.75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n  sub {\n    bottom: -0.25em;\n  }\n  sup {\n    top: -0.5em;\n  }\n  a {\n    color: var(--theme-text, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: 0.2em;\n  }\n  a:hover {\n    color: var(--theme-text-emphasis, var(--link-hover-color));\n    text-decoration: var(--link-hover-decoration, var(--link-decoration));\n  }\n  a:not([href]):not([class]), a:not([href]):not([class]):hover {\n    color: inherit;\n    text-decoration: none;\n  }\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em;\n  }\n  pre {\n    display: block;\n    margin-top: 0;\n    margin-bottom: 1rem;\n    overflow: auto;\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n  }\n  pre code {\n    font-size: inherit;\n    color: inherit;\n    word-break: normal;\n  }\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n  }\n  a > code {\n    color: inherit;\n  }\n  kbd {\n    --kbd-padding-y: 0.125rem;\n    --kbd-padding-x: 0.25rem;\n    --kbd-font-size: var(--font-size-xs);\n    --kbd-color: var(--bg-body);\n    --kbd-bg: var(--fg-2);\n    --kbd-border-radius: var(--border-radius-sm);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    border-radius: var(--kbd-border-radius);\n  }\n  kbd kbd {\n    padding: 0;\n    font-size: 1em;\n    font-weight: inherit;\n  }\n  figure {\n    margin: 0 0 1rem;\n  }\n  img,\n  svg {\n    vertical-align: middle;\n  }\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n  caption {\n    padding-block: 0.5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n  th {\n    text-align: inherit;\n    text-align: -webkit-match-parent;\n  }\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n  label {\n    display: inline-block;\n  }\n  button {\n    border-radius: 0;\n  }\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0;\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n  button,\n  select {\n    text-transform: none;\n  }\n  [role=button] {\n    cursor: pointer;\n  }\n  select {\n    word-wrap: normal;\n  }\n  select:disabled {\n    opacity: 1;\n  }\n  [list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n  button,\n  [type=button],\n  [type=reset],\n  [type=submit] {\n    -webkit-appearance: button;\n  }\n  button:not(:disabled),\n  [type=button]:not(:disabled),\n  [type=reset]:not(:disabled),\n  [type=submit]:not(:disabled) {\n    cursor: pointer;\n  }\n  ::-moz-focus-inner {\n    padding: 0;\n    border-style: none;\n  }\n  textarea {\n    resize: vertical;\n  }\n  fieldset {\n    min-width: 0;\n    padding: 0;\n    margin: 0;\n    border: 0;\n  }\n  legend {\n    float: inline-start;\n    width: 100%;\n    padding: 0;\n    margin-bottom: 0.5rem;\n    font-size: 1.5rem;\n    line-height: inherit;\n  }\n  legend + * {\n    clear: inline-start;\n  }\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-ampm-field,\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n  ::-webkit-inner-spin-button {\n    height: auto;\n  }\n  [type=search] {\n    -webkit-appearance: textfield;\n    outline-offset: -2px;\n  }\n  [type=search]::-webkit-search-cancel-button {\n    cursor: pointer;\n    filter: grayscale(1);\n  }\n  [type=tel],\n  [type=url],\n  [type=email],\n  [type=number] {\n    direction: ltr;\n  }\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n  ::file-selector-button {\n    font: inherit;\n    -webkit-appearance: button;\n  }\n  output {\n    display: inline-block;\n  }\n  iframe {\n    border: 0;\n  }\n  summary {\n    display: list-item;\n    cursor: pointer;\n  }\n  progress {\n    vertical-align: baseline;\n  }\n  [hidden] {\n    display: none !important;\n  }\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */\n","@use \"sass:map\";\n@use \"colors\" as *;\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"theme\" as *;\n@use \"mixins/tokens\" as *;\n@use \"forms/form-variables\" as *;\n\n// mdo-do: do we need theme?\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n\n$root-tokens: () !default;\n\n// scss-docs-start root-tokens\n// stylelint-disable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: defaults(\n  (\n    --black: #{$black},\n    --white: #{$white},\n\n    --gradient: #{$gradient},\n\n    // scss-docs-start root-font-weight-variables\n    --font-weight-lighter: lighter,\n    --font-weight-light: 300,\n    --font-weight-normal: 400,\n    --font-weight-medium: 500,\n    --font-weight-semibold: 600,\n    --font-weight-bold: 700,\n    --font-weight-bolder: bolder,\n    // scss-docs-end root-font-weight-variables\n\n    // scss-docs-start root-body-variables\n    --body-font-family: system-ui,\n    --body-font-size: var(--font-size-base),\n    --body-font-weight: #{$font-weight-base},\n    --body-line-height: #{$line-height-base},\n\n    --heading-color: #{$headings-color},\n\n    --hr-border-color: var(--border-color),\n\n    --link-color: light-dark(var(--primary-base), var(--primary-text)),\n    --link-decoration: #{$link-decoration},\n    --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000),\n\n    --font-mono: \"SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace\",\n    --code-font-size: 95%,\n    --code-color: var(--fg-2),\n\n    // scss-docs-start root-border-var\n    --border-width: #{$border-width},\n    --border-style: #{$border-style},\n    --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700)),\n    --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    // scss-docs-end root-border-var\n\n    // scss-docs-start root-border-radius-var\n    --border-radius: .5rem,\n    --border-radius-xs: .375rem,\n    --border-radius-sm: .5rem,\n    --border-radius-lg: .75rem,\n    --border-radius-xl: 1rem,\n    --border-radius-2xl: 2rem,\n    --border-radius-pill: 50rem,\n    // scss-docs-end root-border-radius-var\n\n    // scss-docs-start root-box-shadow-variables\n    --box-shadow: 0 .5rem 1rem rgb(0 0 0 / 15%),\n    --box-shadow-sm: 0 .125rem .25rem rgb(0 0 0 / 7.5%),\n    --box-shadow-lg: 0 1rem 3rem rgb(0 0 0 / 17.5%),\n    --box-shadow-inset: inset 0 1px 2px rgb(0 0 0 / 7.5%),\n    // scss-docs-end root-box-shadow-variables\n\n    --spacer: 1rem,\n\n    // scss-docs-start root-focus-variables\n    --focus-ring-width: 3px,\n    --focus-ring-offset: 1px,\n    --focus-ring-color: var(--primary-focus-ring),\n    --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color),\n    // scss-docs-end root-focus-variables\n\n    // scss-docs-start root-form-variables\n    --control-checked-bg: var(--primary-base),\n    --control-checked-border-color: var(--control-checked-bg),\n    --control-active-bg: var(--primary-base),\n    --control-active-border-color: var(--control-active-bg),\n    --control-disabled-bg: var(--bg-3),\n    --control-disabled-opacity: .65,\n\n    --btn-input-fg: var(--fg-body),\n    --btn-input-bg: var(--bg-body),\n\n    --btn-input-min-height: 2.375rem,\n    --btn-input-padding-y: .375rem,\n    --btn-input-padding-x: .75rem,\n    --btn-input-font-size: var(--font-size-base),\n    --btn-input-line-height: var(--line-height-base),\n    --btn-input-border-radius: var(--border-radius),\n\n    --btn-input-xs-min-height: 1.5rem,\n    --btn-input-xs-padding-y: .125rem,\n    --btn-input-xs-padding-x: .5rem,\n    --btn-input-xs-font-size: var(--font-size-xs),\n    --btn-input-xs-line-height: 1.125,\n    --btn-input-xs-border-radius: var(--border-radius-xs),\n\n    --btn-input-sm-min-height: 2rem,\n    --btn-input-sm-padding-y: .25rem,\n    --btn-input-sm-padding-x: .625rem,\n    --btn-input-sm-font-size: var(--font-size-sm),\n    --btn-input-sm-line-height: var(--line-height-sm),\n    --btn-input-sm-border-radius: var(--border-radius-sm),\n\n    --btn-input-lg-min-height: 2.75rem,\n    --btn-input-lg-padding-y: .5rem,\n    --btn-input-lg-padding-x: 1rem,\n    --btn-input-lg-font-size: var(--font-size-md),\n    --btn-input-lg-line-height: var(--line-height-md),\n    --btn-input-lg-border-radius: var(--border-radius-lg),\n    // scss-docs-end root-form-variables\n\n    // scss-docs-start root-form-validation-variables\n    --form-valid-color: #{$form-valid-color},\n    --form-valid-border-color: #{$form-valid-border-color},\n    --form-invalid-color: #{$form-invalid-color},\n    --form-invalid-border-color: #{$form-invalid-border-color},\n    // scss-docs-end root-form-validation-variables\n  ),\n  $root-tokens\n);\n// stylelint-enable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// scss-docs-end root-tokens\n\n// scss-docs-start root-font-size-loop\n// Generate font-size and line-height tokens\n@each $name, $props in $font-sizes {\n  $root-tokens: map.set($root-tokens, --font-size-#{$name}, map.get($props, \"font-size\"));\n  $root-tokens: map.set($root-tokens, --line-height-#{$name}, map.get($props, \"line-height\"));\n}\n// scss-docs-end root-font-size-loop\n\n// scss-docs-start root-theme-tokens\n// Generate semantic theme colors\n@each $color-name, $color-map in $theme-colors {\n  @each $key, $value in $color-map {\n    $root-tokens: map.set($root-tokens, --#{$color-name}-#{$key}, $value);\n  }\n}\n\n// Generate background tokens\n@each $key, $value in $theme-bgs {\n  $root-tokens: map.set($root-tokens, --bg-#{$key}, $value);\n}\n\n// Generate foreground tokens\n@each $key, $value in $theme-fgs {\n  $root-tokens: map.set($root-tokens, --fg-#{$key}, $value);\n}\n\n// Generate border tokens\n@each $key, $value in $theme-borders {\n  $root-tokens: map.set($root-tokens, --border-#{$key}, $value);\n}\n// scss-docs-end root-theme-tokens\n\n// Generate breakpoint tokens\n@each $name, $value in $breakpoints {\n  $root-tokens: map.set($root-tokens, --breakpoint-#{$name}, $value);\n}\n\n:root {\n  @include tokens($root-tokens);\n\n  color-scheme: light dark;\n}\n\n[data-bs-theme=\"dark\"] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=\"light\"] {\n  color-scheme: light;\n}\n","@use \"../colors\" as *;\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n$reboot-kbd-tokens: () !default;\n$reboot-mark-tokens: () !default;\n\n// scss-docs-start reboot-kbd-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-kbd-tokens: defaults(\n  (\n    --kbd-padding-y: .125rem,\n    --kbd-padding-x: .25rem,\n    --kbd-font-size: var(--font-size-xs),\n    --kbd-color: var(--bg-body),\n    --kbd-bg: var(--fg-2),\n    --kbd-border-radius: var(--border-radius-sm),\n  ),\n  $reboot-kbd-tokens\n);\n// scss-docs-end reboot-kbd-tokens\n\n// scss-docs-start reboot-mark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-mark-tokens: defaults(\n  (\n    --mark-padding: .1875em,\n    --mark-color: var(--fg-body),\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900)),\n  ),\n  $reboot-mark-tokens\n);\n// scss-docs-end reboot-mark-tokens\n\n@layer reboot {\n  // Reboot\n  //\n  // Normalization of HTML elements, manually forked from Normalize.css to remove\n  // styles targeting irrelevant browsers while applying new styles.\n  //\n  // Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n  // Document\n  //\n  // Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n\n  // Root\n  //\n  // Ability to the value of the root font sizes, affecting the value of `rem`.\n  // null by default, thus nothing is generated.\n\n  :root {\n    // Assume browser default font-size of 16px, or a user's preference\n    accent-color: var(--primary-base);\n\n    @if $enable-smooth-scroll {\n      @media (prefers-reduced-motion: no-preference) {\n        scroll-behavior: smooth;\n      }\n    }\n  }\n\n  // Body\n  //\n  // 1. Remove the margin in all browsers.\n  // 2. As a best practice, apply a default `background-color`.\n  // 3. Prevent adjustments of font size after orientation changes in iOS.\n  // 4. Change the default tap highlight to be completely transparent in iOS.\n\n  // scss-docs-start reboot-body-rules\n  body {\n    margin: 0; // 1\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body); // 2\n    -webkit-text-size-adjust: 100%; // 3\n    -webkit-tap-highlight-color: rgba($black, 0); // 4\n  }\n  // scss-docs-end reboot-body-rules\n\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n\n  // Typography\n  //\n  // 1. Remove top margins from headings\n  //    By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n  //    margin for easier control within type scales as it avoids margin collapsing.\n\n  %heading {\n    margin-top: 0; // 1\n    margin-bottom: $headings-margin-bottom;\n    font-family: $headings-font-family;\n    font-style: $headings-font-style;\n    font-weight: $headings-font-weight;\n    line-height: $headings-line-height;\n    color: var(--heading-color);\n  }\n\n  h1,\n  .h1 {\n    @extend %heading;\n    font-size: var(--font-size-3xl);\n  }\n\n  h2,\n  .h2 {\n    @extend %heading;\n    font-size: var(--font-size-2xl);\n  }\n\n  h3,\n  .h3 {\n    @extend %heading;\n    font-size: var(--font-size-xl);\n  }\n\n  h4,\n  .h4 {\n    @extend %heading;\n    font-size: var(--font-size-lg);\n  }\n\n  h5,\n  .h5 {\n    @extend %heading;\n    font-size: var(--font-size-md);\n  }\n\n  h6,\n  .h6 {\n    @extend %heading;\n    font-size: var(--font-size-sm);\n  }\n\n  // Reset margins on paragraphs\n  //\n  // Similarly, the top margin on `<p>`s get reset. However, we also reset the\n  // bottom margin to use `rem` units instead of `em`.\n\n  p {\n    margin-top: 0;\n    margin-bottom: $paragraph-margin-bottom;\n  }\n\n  // Abbreviations\n  //\n  // 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n  // 2. Add explicit cursor to indicate changed behavior.\n  // 3. Prevent the text-decoration to be skipped.\n\n  abbr[title] {\n    text-decoration: underline dotted; // 1\n    cursor: help; // 2\n    text-decoration-skip-ink: none; // 3\n  }\n\n  // Address\n\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n\n  // Lists\n\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n\n  dt {\n    font-weight: $dt-font-weight;\n  }\n\n  // 1. Undo browser default\n\n  dd {\n    margin-inline-start: 0; // 1\n    margin-bottom: .5rem;\n  }\n\n  // Blockquote\n\n  blockquote {\n    margin: 0 0 1rem;\n    > * {\n      margin-block: 0;\n    }\n  }\n\n  // Strong\n  //\n  // Add the correct font weight in Chrome, Edge, and Safari\n\n  b,\n  strong {\n    font-weight: $font-weight-bolder;\n  }\n\n  // Small\n  //\n  // Add the correct font size in all browsers\n\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n\n  // Mark\n\n  mark,\n  .mark {\n    @include tokens($reboot-mark-tokens);\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n\n  // Sub and Sup\n  //\n  // Prevent `sub` and `sup` elements from affecting the line height in\n  // all browsers.\n\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, .75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n\n  sub { bottom: -.25em; }\n  sup { top: -.5em; }\n\n  // Links\n\n  a {\n    color: var(--theme-text, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: $link-underline-offset;\n\n    &:hover {\n      // --link-color: var(--link-hover-color);\n      // --link-decoration: var(--link-hover-decoration, var(--link-decoration));\n      color: var(--theme-text-emphasis, var(--link-hover-color));\n      text-decoration: var(--link-hover-decoration, var(--link-decoration));\n    }\n  }\n\n  // And undo these styles for placeholder links/named anchors (without href).\n  // It would be more straightforward to just use a[href] in previous block, but that\n  // causes specificity issues in many other styles that are too complex to fix.\n  // See https://github.com/twbs/bootstrap/issues/19402\n\n  a:not([href]):not([class]) {\n    &,\n    &:hover {\n      color: inherit;\n      text-decoration: none;\n    }\n  }\n\n  // Code\n\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n  }\n\n  // 1. Remove browser default top margin\n  // 2. Reset browser default of `1em` to use `rem`s\n  // 3. Don't allow content to break outside\n\n  pre {\n    display: block;\n    margin-top: 0; // 1\n    margin-bottom: 1rem; // 2\n    overflow: auto; // 3\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n\n    // Account for some code outputs that place code tags in pre tags\n    code {\n      font-size: inherit;\n      color: inherit;\n      word-break: normal;\n    }\n  }\n\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n\n    // Streamline the style when inside anchors to avoid broken underline and more\n    a > & {\n      color: inherit;\n    }\n  }\n\n  kbd {\n    @include tokens($reboot-kbd-tokens);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    @include border-radius(var(--kbd-border-radius));\n\n    kbd {\n      padding: 0;\n      font-size: 1em;\n      font-weight: inherit; // mdo-do: check if this is needed\n    }\n  }\n\n  // Figures\n  //\n  // Apply a consistent margin strategy (matches our type styles).\n\n  figure {\n    margin: 0 0 1rem;\n  }\n\n  // Images and content\n\n  img,\n  svg {\n    vertical-align: middle;\n  }\n\n  // Tables\n  //\n  // Prevent double borders\n\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n\n  caption {\n    // padding-top: $table-cell-padding-y;\n    // padding-bottom: $table-cell-padding-y;\n    // color: $table-caption-color;\n    padding-block: .5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n\n  // 1. Removes font-weight bold by inheriting\n  // 2. Matches default `<td>` alignment by inheriting `text-align`.\n  // 3. Fix alignment for Safari\n\n  th {\n    // font-weight: $table-th-font-weight; // 1 // mdo-do: it's null by default. maybe we remove?\n    text-align: inherit; // 2\n    text-align: -webkit-match-parent; // 3\n  }\n\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n\n  // Forms\n  //\n  // 1. Allow labels to use `margin` for spacing.\n\n  label {\n    display: inline-block; // 1\n  }\n\n  // Remove the default `border-radius` that macOS Chrome adds.\n  // See https://github.com/twbs/bootstrap/issues/24093\n\n  button {\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 0;\n  }\n\n  // Explicitly remove focus outline in Chromium when it shouldn't be\n  // visible (e.g. as result of mouse click or touch tap). It already\n  // should be doing this automatically, but seems to currently be\n  // confused and applies its very visible two-tone outline anyway.\n\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n\n  // 1. Remove the margin in Firefox and Safari\n\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0; // 1\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n\n  // Remove the inheritance of text transform in Firefox\n  button,\n  select {\n    text-transform: none;\n  }\n  // Set the cursor for non-`<button>` buttons\n  //\n  // Details at https://github.com/twbs/bootstrap/pull/30562\n  [role=\"button\"] {\n    cursor: pointer;\n  }\n\n  select {\n    // Remove the inheritance of word-wrap in Safari.\n    // See https://github.com/twbs/bootstrap/issues/24990\n    word-wrap: normal;\n\n    // Undo the opacity change from Chrome\n    &:disabled {\n      opacity: 1;\n    }\n  }\n\n  // Remove the dropdown arrow only from text type inputs built with datalists in Chrome.\n  // See https://stackoverflow.com/a/54997118\n\n  [list]:not([type=\"date\"]):not([type=\"datetime-local\"]):not([type=\"month\"]):not([type=\"week\"]):not([type=\"time\"])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n\n  // 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n  //    controls in Android 4.\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n  // 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\n  button,\n  [type=\"button\"], // 1\n  [type=\"reset\"],\n  [type=\"submit\"] {\n    -webkit-appearance: button; // 2\n\n    @if $enable-button-pointers {\n      &:not(:disabled) {\n        cursor: pointer; // 3\n      }\n    }\n  }\n\n  // Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\n\n  ::-moz-focus-inner {\n    padding: 0;\n    border-style: none;\n  }\n\n  // 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\n  textarea {\n    resize: vertical; // 1\n  }\n\n  // 1. Browsers set a default `min-width: min-content;` on fieldsets,\n  //    unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n  //    So we reset that to ensure fieldsets behave more like a standard block element.\n  //    See https://github.com/twbs/bootstrap/issues/12359\n  //    and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n  // 2. Reset the default outline behavior of fieldsets so they don't affect page layout.\n\n  fieldset {\n    min-width: 0; // 1\n    padding: 0; // 2\n    margin: 0; // 2\n    border: 0; // 2\n  }\n\n  // 1. By using `float: inline-start`, the legend will behave like a block element.\n  //    This way the border of a fieldset wraps around the legend if present.\n  // 2. Fix wrapping bug.\n  //    See https://github.com/twbs/bootstrap/issues/29712\n\n  legend {\n    float: inline-start; // 1\n    width: 100%;\n    padding: 0;\n    margin-bottom: $legend-margin-bottom;\n    font-size: $legend-font-size;\n    font-weight: $legend-font-weight;\n    line-height: inherit;\n\n    + * {\n      clear: inline-start; // 2\n    }\n  }\n\n  // Fix height of inputs with a type of datetime-local, date, month, week, or time\n  // See https://github.com/twbs/bootstrap/issues/18842\n\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-ampm-field,\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n\n  ::-webkit-inner-spin-button {\n    height: auto;\n  }\n\n  // 1. This overrides the extra rounded corners on search inputs in iOS so that our\n  //    `.form-control` class can properly style them. Note that this cannot simply\n  //    be added to `.form-control` as it's not specific enough. For details, see\n  //    https://github.com/twbs/bootstrap/issues/11586.\n  // 2. Correct the outline style in Safari.\n\n  [type=\"search\"] {\n    -webkit-appearance: textfield; // 1\n    outline-offset: -2px; // 2\n\n    // 3. Better affordance and consistent appearance for search cancel button\n    &::-webkit-search-cancel-button {\n      cursor: pointer;\n      filter: grayscale(1);\n    }\n  }\n\n  // A few input types should stay LTR regardless of document direction\n  // See https://rtlstyling.com/posts/rtl-styling#form-inputs\n\n  [type=\"tel\"],\n  [type=\"url\"],\n  [type=\"email\"],\n  [type=\"number\"] {\n    direction: ltr;\n  }\n\n  // Remove the inner padding in Chrome and Safari on macOS.\n\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n\n  // Remove padding around color pickers in webkit browsers\n\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n\n  // 1. Inherit font family and line height for file input buttons\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n\n  ::file-selector-button {\n    font: inherit; // 1\n    -webkit-appearance: button; // 2\n  }\n\n  // Correct element displays\n\n  output {\n    display: inline-block;\n  }\n\n  // Remove border from iframe\n\n  iframe {\n    border: 0;\n  }\n\n  // Summary\n  //\n  // 1. Add the correct display in all browsers\n\n  summary {\n    display: list-item; // 1\n    cursor: pointer;\n  }\n\n  // Progress\n  //\n  // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\n  progress {\n    vertical-align: baseline;\n  }\n\n  // Hidden attribute\n  //\n  // Always hide an element with the `hidden` HTML attribute.\n\n  [hidden] {\n    display: none !important;\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n\n// Configuration\n//\n// Variables and settings not related to theme, components, and more go here. It does include layout.\n\n// Merge overrides on top of defaults, stripping null entries.\n// Null values let users remove map keys via @use ... with().\n// Accepts a list as $defaults (converted to a map with `true` values).\n@function defaults($defaults, $overrides) {\n  @if meta.type-of($defaults) == \"list\" {\n    $map: ();\n    @each $key in $defaults {\n      $map: map.merge($map, ($key: true));\n    }\n    $defaults: $map;\n  }\n  $merged: map.merge($defaults, $overrides);\n  @each $key, $value in $merged {\n    @if $value == null {\n      $merged: map.remove($merged, $key);\n    }\n  }\n  @return $merged;\n}\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              true !default;\n$enable-gradients:            false !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        true !default;\n$enable-grid-classes:         true !default;\n$enable-container-classes:    true !default;\n$enable-cssgrid:              true !default;\n$enable-button-pointers:      true !default;\n$enable-validation-icons:     true !default;\n// $enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n\n$enable-dark-mode:            true !default;\n\n$color-mode-type:          \"media-query\" !default;\n$color-contrast-dark:      #000 !default;\n$color-contrast-light:     #fff !default;\n$min-contrast-ratio:         4.5 !default;\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n\n$negative-spacers: (\n  \"-1\": $spacer * -.25,\n  \"-2\": $spacer * -.5,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n$sizes: (\n  1: $spacer,\n  2: calc($spacer * 2),\n  3: calc($spacer * 3),\n  4: calc($spacer * 4),\n  5: calc($spacer * 5),\n  6: calc($spacer * 6),\n  7: calc($spacer * 7),\n  8: calc($spacer * 8),\n  9: calc($spacer * 9),\n  10: calc($spacer * 10),\n  11: calc($spacer * 11),\n  12: calc($spacer * 12),\n) !default;\n\n// Breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start breakpoints\n$breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 1024px,\n  xl: 1280px,\n  2xl: 1536px\n) !default;\n// scss-docs-end breakpoints\n\n// @include _assert-ascending($breakpoints, \"$breakpoints\");\n// @include _assert-starts-at-zero($breakpoints, \"$breakpoints\");\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-x: 1.5rem !default;\n$grid-gutter-y: 0 !default;\n$grid-row-columns: 6 !default;\n\n$gutters: $spacers !default;\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1200px,\n  2xl: 1440px\n) !default;\n// scss-docs-end container-max-widths\n\n$container-padding-x: $grid-gutter-x !default;\n\n$utilities: () !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent)) !default;\n// scss-docs-end variable-gradient\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Links\n//\n// Style anchor elements.\n\n$link-decoration:                         underline !default;\n$link-underline-offset:                   .2em !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap:               .375rem !default;\n$icon-link-underline-offset:  .25em !default;\n$icon-link-icon-size:         1em !default;\n$icon-link-icon-transition:   .2s ease-in-out transform !default;\n$icon-link-icon-transform:    translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n$border-style:                solid !default;\n$border-color:                color-mix(in oklch, var(--gray-100), var(--gray-200)) !default;\n// scss-docs-end border-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"auto\": auto,\n  \"1x1\": #{\"1 / 1\"},\n  \"4x3\": #{\"4 / 3\"},\n  \"16x9\": #{\"16 / 9\"},\n  \"21x9\": #{\"21 / 9\"}\n) !default;\n// scss-docs-end aspect-ratios\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-medium:          500 !default;\n$font-weight-semibold:        600 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$font-sizes: defaults(\n  (\n    \"xs\": (\n      \"font-size\": .75rem,\n      \"line-height\": 1.25\n    ),\n    \"sm\": (\n      \"font-size\": .875rem,\n      \"line-height\": 1.5\n    ),\n    \"md\": (\n      \"font-size\": 1rem,\n      \"line-height\": 1.5\n    ),\n    \"lg\": (\n      \"font-size\": clamp(1.25rem, 1rem + .625vw, 1.5rem),\n      \"line-height\": 1.5\n    ),\n    \"xl\": (\n      \"font-size\": clamp(1.5rem, 1.1rem + .75vw, 1.75rem),\n      \"line-height\": calc(2.5 / 1.75)\n    ),\n    \"2xl\": (\n      \"font-size\": clamp(1.75rem, 1.3rem + 1vw, 2rem),\n      \"line-height\": calc(3 / 2.25)\n    ),\n    \"3xl\": (\n      \"font-size\": clamp(2rem, 1.5rem + 1.875vw, 2.5rem),\n      \"line-height\": 1.2\n    ),\n    \"4xl\": (\n      \"font-size\": clamp(2.25rem, 1.75rem + 2.5vw, 3rem),\n      \"line-height\": 1.1\n    ),\n    \"5xl\": (\n      \"font-size\": clamp(3rem, 2rem + 5vw, 4rem),\n      \"line-height\": 1.1\n    ),\n    \"6xl\": (\n      \"font-size\": clamp(3.75rem, 2.5rem + 6.25vw, 5rem),\n      \"line-height\": 1\n    ),\n  ),\n  $font-sizes\n);\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start type-variables\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n// scss-docs-end type-variables\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-menu:                       1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-dialog:                     1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n$zindex-toast:                      1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n  n1: -1,\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n","@use \"sass:list\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n  $return: ();\n  @each $value in $radius {\n    @if meta.type-of($value) == number {\n      $return: list.append($return, math.max($value, 0));\n    } @else {\n      $return: list.append($return, $value);\n    }\n  }\n  @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: var(--border-radius), $fallback-border-radius: false) {\n  @if $enable-rounded {\n    border-radius: valid-radius($radius);\n  }\n  @else if $fallback-border-radius != false {\n    border-radius: $fallback-border-radius;\n  }\n}\n\n@mixin border-top-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n// scss-docs-end border-radius-mixins\n"]}
\ No newline at end of file
index 6c557878f5fa9124b0191857e13c39fb637ecc64..3fcdb85c44a10fcc992448e2bfb65271ab88b4da 100644 (file)
@@ -3,5 +3,5 @@
   * Copyright 2011-2026 The Bootstrap Authors
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   */
-:root{--bs-blue-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .24 240));--bs-blue-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .24 240));--bs-blue-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .24 240));--bs-blue-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .24 240));--bs-blue-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .24 240));--bs-blue-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .24 240));--bs-blue-500:oklch(60% .24 240);--bs-blue-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .24 240));--bs-blue-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .24 240));--bs-blue-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .24 240));--bs-blue-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .24 240));--bs-blue-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .24 240));--bs-blue-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .24 240));--bs-indigo-025:color-mix(in lab,var(--bs-white)94%,oklch(56% .26 288));--bs-indigo-050:color-mix(in lab,var(--bs-white)90%,oklch(56% .26 288));--bs-indigo-100:color-mix(in lab,var(--bs-white)80%,oklch(56% .26 288));--bs-indigo-200:color-mix(in lab,var(--bs-white)60%,oklch(56% .26 288));--bs-indigo-300:color-mix(in lab,var(--bs-white)40%,oklch(56% .26 288));--bs-indigo-400:color-mix(in lab,var(--bs-white)20%,oklch(56% .26 288));--bs-indigo-500:oklch(56% .26 288);--bs-indigo-600:color-mix(in lab,var(--bs-black)16%,oklch(56% .26 288));--bs-indigo-700:color-mix(in lab,var(--bs-black)32%,oklch(56% .26 288));--bs-indigo-800:color-mix(in lab,var(--bs-black)48%,oklch(56% .26 288));--bs-indigo-900:color-mix(in lab,var(--bs-black)64%,oklch(56% .26 288));--bs-indigo-950:color-mix(in lab,var(--bs-black)76%,oklch(56% .26 288));--bs-indigo-975:color-mix(in lab,var(--bs-black)88%,oklch(56% .26 288));--bs-violet-025:color-mix(in lab,var(--bs-white)94%,oklch(56% .24 300));--bs-violet-050:color-mix(in lab,var(--bs-white)90%,oklch(56% .24 300));--bs-violet-100:color-mix(in lab,var(--bs-white)80%,oklch(56% .24 300));--bs-violet-200:color-mix(in lab,var(--bs-white)60%,oklch(56% .24 300));--bs-violet-300:color-mix(in lab,var(--bs-white)40%,oklch(56% .24 300));--bs-violet-400:color-mix(in lab,var(--bs-white)20%,oklch(56% .24 300));--bs-violet-500:oklch(56% .24 300);--bs-violet-600:color-mix(in lab,var(--bs-black)16%,oklch(56% .24 300));--bs-violet-700:color-mix(in lab,var(--bs-black)32%,oklch(56% .24 300));--bs-violet-800:color-mix(in lab,var(--bs-black)48%,oklch(56% .24 300));--bs-violet-900:color-mix(in lab,var(--bs-black)64%,oklch(56% .24 300));--bs-violet-950:color-mix(in lab,var(--bs-black)76%,oklch(56% .24 300));--bs-violet-975:color-mix(in lab,var(--bs-black)88%,oklch(56% .24 300));--bs-purple-025:color-mix(in lab,var(--bs-white)94%,oklch(56% .24 320));--bs-purple-050:color-mix(in lab,var(--bs-white)90%,oklch(56% .24 320));--bs-purple-100:color-mix(in lab,var(--bs-white)80%,oklch(56% .24 320));--bs-purple-200:color-mix(in lab,var(--bs-white)60%,oklch(56% .24 320));--bs-purple-300:color-mix(in lab,var(--bs-white)40%,oklch(56% .24 320));--bs-purple-400:color-mix(in lab,var(--bs-white)20%,oklch(56% .24 320));--bs-purple-500:oklch(56% .24 320);--bs-purple-600:color-mix(in lab,var(--bs-black)16%,oklch(56% .24 320));--bs-purple-700:color-mix(in lab,var(--bs-black)32%,oklch(56% .24 320));--bs-purple-800:color-mix(in lab,var(--bs-black)48%,oklch(56% .24 320));--bs-purple-900:color-mix(in lab,var(--bs-black)64%,oklch(56% .24 320));--bs-purple-950:color-mix(in lab,var(--bs-black)76%,oklch(56% .24 320));--bs-purple-975:color-mix(in lab,var(--bs-black)88%,oklch(56% .24 320));--bs-pink-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .22 4));--bs-pink-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .22 4));--bs-pink-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .22 4));--bs-pink-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .22 4));--bs-pink-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .22 4));--bs-pink-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .22 4));--bs-pink-500:oklch(60% .22 4);--bs-pink-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .22 4));--bs-pink-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .22 4));--bs-pink-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .22 4));--bs-pink-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .22 4));--bs-pink-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .22 4));--bs-pink-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .22 4));--bs-red-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .22 20));--bs-red-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .22 20));--bs-red-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .22 20));--bs-red-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .22 20));--bs-red-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .22 20));--bs-red-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .22 20));--bs-red-500:oklch(60% .22 20);--bs-red-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .22 20));--bs-red-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .22 20));--bs-red-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .22 20));--bs-red-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .22 20));--bs-red-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .22 20));--bs-red-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .22 20));--bs-orange-025:color-mix(in lab,var(--bs-white)94%,oklch(70% .22 52));--bs-orange-050:color-mix(in lab,var(--bs-white)90%,oklch(70% .22 52));--bs-orange-100:color-mix(in lab,var(--bs-white)80%,oklch(70% .22 52));--bs-orange-200:color-mix(in lab,var(--bs-white)60%,oklch(70% .22 52));--bs-orange-300:color-mix(in lab,var(--bs-white)40%,oklch(70% .22 52));--bs-orange-400:color-mix(in lab,var(--bs-white)20%,oklch(70% .22 52));--bs-orange-500:oklch(70% .22 52);--bs-orange-600:color-mix(in lab,var(--bs-black)16%,oklch(70% .22 52));--bs-orange-700:color-mix(in lab,var(--bs-black)32%,oklch(70% .22 52));--bs-orange-800:color-mix(in lab,var(--bs-black)48%,oklch(70% .22 52));--bs-orange-900:color-mix(in lab,var(--bs-black)64%,oklch(70% .22 52));--bs-orange-950:color-mix(in lab,var(--bs-black)76%,oklch(70% .22 52));--bs-orange-975:color-mix(in lab,var(--bs-black)88%,oklch(70% .22 52));--bs-amber-025:color-mix(in lab,var(--bs-white)94%,oklch(79% .2 78));--bs-amber-050:color-mix(in lab,var(--bs-white)90%,oklch(79% .2 78));--bs-amber-100:color-mix(in lab,var(--bs-white)80%,oklch(79% .2 78));--bs-amber-200:color-mix(in lab,var(--bs-white)60%,oklch(79% .2 78));--bs-amber-300:color-mix(in lab,var(--bs-white)40%,oklch(79% .2 78));--bs-amber-400:color-mix(in lab,var(--bs-white)20%,oklch(79% .2 78));--bs-amber-500:oklch(79% .2 78);--bs-amber-600:color-mix(in lab,var(--bs-black)16%,oklch(79% .2 78));--bs-amber-700:color-mix(in lab,var(--bs-black)32%,oklch(79% .2 78));--bs-amber-800:color-mix(in lab,var(--bs-black)48%,oklch(79% .2 78));--bs-amber-900:color-mix(in lab,var(--bs-black)64%,oklch(79% .2 78));--bs-amber-950:color-mix(in lab,var(--bs-black)76%,oklch(79% .2 78));--bs-amber-975:color-mix(in lab,var(--bs-black)88%,oklch(79% .2 78));--bs-yellow-025:color-mix(in lab,var(--bs-white)94%,oklch(88% .24 88));--bs-yellow-050:color-mix(in lab,var(--bs-white)90%,oklch(88% .24 88));--bs-yellow-100:color-mix(in lab,var(--bs-white)80%,oklch(88% .24 88));--bs-yellow-200:color-mix(in lab,var(--bs-white)60%,oklch(88% .24 88));--bs-yellow-300:color-mix(in lab,var(--bs-white)40%,oklch(88% .24 88));--bs-yellow-400:color-mix(in lab,var(--bs-white)20%,oklch(88% .24 88));--bs-yellow-500:oklch(88% .24 88);--bs-yellow-600:color-mix(in lab,var(--bs-black)16%,oklch(88% .24 88));--bs-yellow-700:color-mix(in lab,var(--bs-black)32%,oklch(88% .24 88));--bs-yellow-800:color-mix(in lab,var(--bs-black)48%,oklch(88% .24 88));--bs-yellow-900:color-mix(in lab,var(--bs-black)64%,oklch(88% .24 88));--bs-yellow-950:color-mix(in lab,var(--bs-black)76%,oklch(88% .24 88));--bs-yellow-975:color-mix(in lab,var(--bs-black)88%,oklch(88% .24 88));--bs-lime-025:color-mix(in lab,var(--bs-white)94%,oklch(65% .24 135));--bs-lime-050:color-mix(in lab,var(--bs-white)90%,oklch(65% .24 135));--bs-lime-100:color-mix(in lab,var(--bs-white)80%,oklch(65% .24 135));--bs-lime-200:color-mix(in lab,var(--bs-white)60%,oklch(65% .24 135));--bs-lime-300:color-mix(in lab,var(--bs-white)40%,oklch(65% .24 135));--bs-lime-400:color-mix(in lab,var(--bs-white)20%,oklch(65% .24 135));--bs-lime-500:oklch(65% .24 135);--bs-lime-600:color-mix(in lab,var(--bs-black)16%,oklch(65% .24 135));--bs-lime-700:color-mix(in lab,var(--bs-black)32%,oklch(65% .24 135));--bs-lime-800:color-mix(in lab,var(--bs-black)48%,oklch(65% .24 135));--bs-lime-900:color-mix(in lab,var(--bs-black)64%,oklch(65% .24 135));--bs-lime-950:color-mix(in lab,var(--bs-black)76%,oklch(65% .24 135));--bs-lime-975:color-mix(in lab,var(--bs-black)88%,oklch(65% .24 135));--bs-green-025:color-mix(in lab,var(--bs-white)94%,oklch(64% .22 160));--bs-green-050:color-mix(in lab,var(--bs-white)90%,oklch(64% .22 160));--bs-green-100:color-mix(in lab,var(--bs-white)80%,oklch(64% .22 160));--bs-green-200:color-mix(in lab,var(--bs-white)60%,oklch(64% .22 160));--bs-green-300:color-mix(in lab,var(--bs-white)40%,oklch(64% .22 160));--bs-green-400:color-mix(in lab,var(--bs-white)20%,oklch(64% .22 160));--bs-green-500:oklch(64% .22 160);--bs-green-600:color-mix(in lab,var(--bs-black)16%,oklch(64% .22 160));--bs-green-700:color-mix(in lab,var(--bs-black)32%,oklch(64% .22 160));--bs-green-800:color-mix(in lab,var(--bs-black)48%,oklch(64% .22 160));--bs-green-900:color-mix(in lab,var(--bs-black)64%,oklch(64% .22 160));--bs-green-950:color-mix(in lab,var(--bs-black)76%,oklch(64% .22 160));--bs-green-975:color-mix(in lab,var(--bs-black)88%,oklch(64% .22 160));--bs-teal-025:color-mix(in lab,var(--bs-white)94%,oklch(68% .22 190));--bs-teal-050:color-mix(in lab,var(--bs-white)90%,oklch(68% .22 190));--bs-teal-100:color-mix(in lab,var(--bs-white)80%,oklch(68% .22 190));--bs-teal-200:color-mix(in lab,var(--bs-white)60%,oklch(68% .22 190));--bs-teal-300:color-mix(in lab,var(--bs-white)40%,oklch(68% .22 190));--bs-teal-400:color-mix(in lab,var(--bs-white)20%,oklch(68% .22 190));--bs-teal-500:oklch(68% .22 190);--bs-teal-600:color-mix(in lab,var(--bs-black)16%,oklch(68% .22 190));--bs-teal-700:color-mix(in lab,var(--bs-black)32%,oklch(68% .22 190));--bs-teal-800:color-mix(in lab,var(--bs-black)48%,oklch(68% .22 190));--bs-teal-900:color-mix(in lab,var(--bs-black)64%,oklch(68% .22 190));--bs-teal-950:color-mix(in lab,var(--bs-black)76%,oklch(68% .22 190));--bs-teal-975:color-mix(in lab,var(--bs-black)88%,oklch(68% .22 190));--bs-cyan-025:color-mix(in lab,var(--bs-white)94%,oklch(69% .22 220));--bs-cyan-050:color-mix(in lab,var(--bs-white)90%,oklch(69% .22 220));--bs-cyan-100:color-mix(in lab,var(--bs-white)80%,oklch(69% .22 220));--bs-cyan-200:color-mix(in lab,var(--bs-white)60%,oklch(69% .22 220));--bs-cyan-300:color-mix(in lab,var(--bs-white)40%,oklch(69% .22 220));--bs-cyan-400:color-mix(in lab,var(--bs-white)20%,oklch(69% .22 220));--bs-cyan-500:oklch(69% .22 220);--bs-cyan-600:color-mix(in lab,var(--bs-black)16%,oklch(69% .22 220));--bs-cyan-700:color-mix(in lab,var(--bs-black)32%,oklch(69% .22 220));--bs-cyan-800:color-mix(in lab,var(--bs-black)48%,oklch(69% .22 220));--bs-cyan-900:color-mix(in lab,var(--bs-black)64%,oklch(69% .22 220));--bs-cyan-950:color-mix(in lab,var(--bs-black)76%,oklch(69% .22 220));--bs-cyan-975:color-mix(in lab,var(--bs-black)88%,oklch(69% .22 220));--bs-brown-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .12 54));--bs-brown-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .12 54));--bs-brown-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .12 54));--bs-brown-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .12 54));--bs-brown-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .12 54));--bs-brown-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .12 54));--bs-brown-500:oklch(60% .12 54);--bs-brown-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .12 54));--bs-brown-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .12 54));--bs-brown-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .12 54));--bs-brown-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .12 54));--bs-brown-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .12 54));--bs-brown-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .12 54));--bs-gray-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .02 245));--bs-gray-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .02 245));--bs-gray-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .02 245));--bs-gray-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .02 245));--bs-gray-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .02 245));--bs-gray-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .02 245));--bs-gray-500:oklch(60% .02 245);--bs-gray-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .02 245));--bs-gray-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .02 245));--bs-gray-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .02 245));--bs-gray-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .02 245));--bs-gray-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .02 245));--bs-gray-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .02 245));--bs-pewter-025:color-mix(in lab,var(--bs-white)94%,oklch(65% .01 290));--bs-pewter-050:color-mix(in lab,var(--bs-white)90%,oklch(65% .01 290));--bs-pewter-100:color-mix(in lab,var(--bs-white)80%,oklch(65% .01 290));--bs-pewter-200:color-mix(in lab,var(--bs-white)60%,oklch(65% .01 290));--bs-pewter-300:color-mix(in lab,var(--bs-white)40%,oklch(65% .01 290));--bs-pewter-400:color-mix(in lab,var(--bs-white)20%,oklch(65% .01 290));--bs-pewter-500:oklch(65% .01 290);--bs-pewter-600:color-mix(in lab,var(--bs-black)16%,oklch(65% .01 290));--bs-pewter-700:color-mix(in lab,var(--bs-black)32%,oklch(65% .01 290));--bs-pewter-800:color-mix(in lab,var(--bs-black)48%,oklch(65% .01 290));--bs-pewter-900:color-mix(in lab,var(--bs-black)64%,oklch(65% .01 290));--bs-pewter-950:color-mix(in lab,var(--bs-black)76%,oklch(65% .01 290));--bs-pewter-975:color-mix(in lab,var(--bs-black)88%,oklch(65% .01 290))}@layer colors,theme,config,root;@layer reboot{*,:before,:after{box-sizing:border-box}:root{accent-color:var(--bs-primary-base)}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-fg-body);text-align:var(--bs-body-text-align);background-color:var(--bs-bg-body);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:#0000;margin:0}hr{margin:var(--bs-hr-margin-y,var(--bs-spacer))0;border:0;border-block-start:var(--bs-border-width)solid var(--bs-hr-border-color)}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{color:var(--bs-heading-color);margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:var(--bs-font-size-3xl)}h2,.h2{font-size:var(--bs-font-size-2xl)}h3,.h3{font-size:var(--bs-font-size-xl)}h4,.h4{font-size:var(--bs-font-size-lg)}h5,.h5{font-size:var(--bs-font-size-md)}h6,.h6{font-size:var(--bs-font-size-sm)}p{margin-top:0;margin-bottom:1rem}abbr[title]{cursor:help;text-decoration-skip-ink:none;text-decoration:underline dotted}address{font-style:normal;line-height:inherit;margin-bottom:1rem}ol,ul{padding-inline-start:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-inline-start:0;margin-bottom:.5rem}blockquote{margin:0 0 1rem}blockquote>*{margin-block:0}b,strong{font-weight:bolder}small,.small{font-size:var(--bs-small-font-size,87.5%)}mark,.mark{--bs-mark-padding:.1875em;--bs-mark-color:var(--bs-fg-body);--bs-mark-bg:light-dark(var(--bs-yellow-100),var(--bs-yellow-900));padding:var(--bs-mark-padding);color:var(--bs-mark-color);background-color:var(--bs-mark-bg)}sub,sup{font-size:var(--bs-sub-sup-font-size,.75em);vertical-align:baseline;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-theme-text,var(--bs-link-color));-webkit-text-decoration:var(--bs-link-decoration);text-decoration:var(--bs-link-decoration);text-underline-offset:.2em}a:hover{color:var(--bs-theme-text-emphasis,var(--bs-link-hover-color));-webkit-text-decoration:var(--bs-link-hover-decoration,var(--bs-link-decoration));text-decoration:var(--bs-link-hover-decoration,var(--bs-link-decoration))}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-mono);font-size:1em}pre{font-size:var(--bs-code-font-size);color:var(--bs-code-color,inherit);margin-top:0;margin-bottom:1rem;display:block;overflow:auto}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:var(--bs-code-font-size);color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{--bs-kbd-padding-y:.125rem;--bs-kbd-padding-x:.25rem;--bs-kbd-font-size:var(--bs-font-size-xs);--bs-kbd-color:var(--bs-bg-body);--bs-kbd-bg:var(--bs-fg-2);--bs-kbd-border-radius:var(--bs-border-radius-sm);padding:var(--bs-kbd-padding-y)var(--bs-kbd-padding-x);font-size:var(--bs-kbd-font-size);color:var(--bs-kbd-color);background-color:var(--bs-kbd-bg);border-radius:var(--bs-kbd-border-radius)}kbd kbd{font-size:1em;font-weight:inherit;padding:0}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{color:var(--bs-fg-3);text-align:start;padding-block:.5rem}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{border-style:none;padding:0}textarea{resize:vertical}fieldset{border:0;min-width:0;margin:0;padding:0}legend{float:inline-start;width:100%;font-size:1.5rem;line-height:inherit;margin-bottom:.5rem;padding:0}legend+*{clear:inline-start}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-text{padding:0}::-webkit-datetime-edit-millisecond-field{padding:0}::-webkit-datetime-edit-second-field{padding:0}::-webkit-datetime-edit-minute-field{padding:0}::-webkit-datetime-edit-hour-field{padding:0}::-webkit-datetime-edit-ampm-field{padding:0}::-webkit-datetime-edit-day-field{padding:0}::-webkit-datetime-edit-week-field{padding:0}::-webkit-datetime-edit-month-field{padding:0}::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button{cursor:pointer;filter:grayscale()}[type=tel],[type=url],[type=email],[type=number]{direction:ltr}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{cursor:pointer;display:list-item}progress{vertical-align:baseline}[hidden]{display:none!important}}@layer layout,content,forms,components,custom,helpers,utilities;:root{--bs-black:#000;--bs-white:#fff;--bs-gradient:linear-gradient(180deg,color-mix(var(--bs-white)15%,transparent),color-mix(var(--bs-white)0%,transparent));--bs-font-size-base:1rem;--bs-font-size-xs:.75rem;--bs-font-size-sm:.875rem;--bs-font-size-md:1rem;--bs-font-size-lg:clamp(1.25rem,1rem + .625vw,1.5rem);--bs-font-size-xl:clamp(1.5rem,1.1rem + .75vw,1.75rem);--bs-font-size-2xl:clamp(1.75rem,1.3rem + 1vw,2rem);--bs-font-size-3xl:clamp(2rem,1.5rem + 1.875vw,2.5rem);--bs-font-size-4xl:clamp(2.25rem,1.75rem + 2.5vw,3rem);--bs-font-size-5xl:clamp(3rem,2rem + 5vw,4rem);--bs-font-size-6xl:clamp(3.75rem,2.5rem + 6.25vw,5rem);--bs-line-height-xs:1.25;--bs-line-height-sm:1.5;--bs-line-height-md:1.5;--bs-line-height-lg:1.5;--bs-line-height-xl:1.42857;--bs-line-height-2xl:1.33333;--bs-line-height-3xl:1.2;--bs-line-height-4xl:1.1;--bs-line-height-5xl:1.1;--bs-line-height-6xl:1;--bs-font-weight-lighter:lighter;--bs-font-weight-light:300;--bs-font-weight-normal:400;--bs-font-weight-medium:500;--bs-font-weight-semibold:600;--bs-font-weight-bold:700;--bs-font-weight-bolder:bolder;--bs-body-font-family:system-ui;--bs-body-font-size:var(--bs-font-size-base);--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-heading-color:inherit;--bs-hr-border-color:var(--bs-border-color);--bs-link-color:light-dark(var(--bs-primary-base),var(--bs-primary-text));--bs-link-decoration:underline;--bs-link-hover-color:color-mix(in oklch,var(--bs-link-color)90%,#000);--bs-font-mono:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-code-font-size:95%;--bs-code-color:var(--bs-fg-2);--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:light-dark(color-mix(in oklch,var(--bs-gray-100),var(--bs-gray-200)),var(--bs-gray-700));--bs-border-color-translucent:color-mix(in oklch,var(--bs-fg-body)15%,transparent);--bs-border-radius:.5rem;--bs-border-radius-xs:.375rem;--bs-border-radius-sm:.5rem;--bs-border-radius-lg:.75rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-box-shadow:0 .5rem 1rem #00000026;--bs-box-shadow-sm:0 .125rem .25rem #00000013;--bs-box-shadow-lg:0 1rem 3rem #0000002d;--bs-box-shadow-inset:inset 0 1px 2px #00000013;--bs-spacer:1rem;--bs-focus-ring-width:3px;--bs-focus-ring-offset:1px;--bs-focus-ring-color:var(--bs-primary-focus-ring);--bs-focus-ring:var(--bs-focus-ring-width)solid var(--bs-focus-ring-color);--bs-control-checked-bg:var(--bs-primary-base);--bs-control-checked-border-color:var(--bs-control-checked-bg);--bs-control-active-bg:var(--bs-primary-base);--bs-control-active-border-color:var(--bs-control-active-bg);--bs-control-disabled-bg:var(--bs-bg-3);--bs-control-disabled-opacity:.65;--bs-btn-input-fg:var(--bs-fg-body);--bs-btn-input-bg:var(--bs-bg-body);--bs-btn-input-min-height:2.375rem;--bs-btn-input-padding-y:.375rem;--bs-btn-input-padding-x:.75rem;--bs-btn-input-font-size:var(--bs-font-size-base);--bs-btn-input-line-height:var(--bs-line-height-base);--bs-btn-input-border-radius:var(--bs-border-radius);--bs-btn-input-xs-min-height:1.5rem;--bs-btn-input-xs-padding-y:.125rem;--bs-btn-input-xs-padding-x:.5rem;--bs-btn-input-xs-font-size:var(--bs-font-size-xs);--bs-btn-input-xs-line-height:1.125;--bs-btn-input-xs-border-radius:var(--bs-border-radius-xs);--bs-btn-input-sm-min-height:2rem;--bs-btn-input-sm-padding-y:.25rem;--bs-btn-input-sm-padding-x:.625rem;--bs-btn-input-sm-font-size:var(--bs-font-size-sm);--bs-btn-input-sm-line-height:var(--bs-line-height-sm);--bs-btn-input-sm-border-radius:var(--bs-border-radius-sm);--bs-btn-input-lg-min-height:2.75rem;--bs-btn-input-lg-padding-y:.5rem;--bs-btn-input-lg-padding-x:1rem;--bs-btn-input-lg-font-size:var(--bs-font-size-md);--bs-btn-input-lg-line-height:var(--bs-line-height-md);--bs-btn-input-lg-border-radius:var(--bs-border-radius-lg);--bs-form-valid-color:var(--bs-success-text);--bs-form-valid-border-color:var(--bs-success-text);--bs-form-invalid-color:var(--bs-danger-text);--bs-form-invalid-border-color:var(--bs-danger-text);--bs-primary-base:var(--bs-blue-500);--bs-primary-text:light-dark(var(--bs-blue-600),var(--bs-blue-400));--bs-primary-text-emphasis:light-dark(var(--bs-blue-800),var(--bs-blue-200));--bs-primary-bg:var(--bs-blue-500);--bs-primary-bg-subtle:light-dark(var(--bs-blue-100),var(--bs-blue-900));--bs-primary-bg-muted:light-dark(var(--bs-blue-200),var(--bs-blue-800));--bs-primary-border:light-dark(var(--bs-blue-300),var(--bs-blue-600));--bs-primary-focus-ring:light-dark(color-mix(in oklch,var(--bs-blue-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-blue-500)75%,var(--bs-bg-body)));--bs-primary-contrast:var(--bs-white);--bs-accent-base:var(--bs-indigo-500);--bs-accent-text:light-dark(var(--bs-indigo-600),color-mix(in oklch,var(--bs-indigo-400),var(--bs-indigo-300)));--bs-accent-text-emphasis:light-dark(var(--bs-indigo-800),var(--bs-indigo-300));--bs-accent-bg:var(--bs-indigo-500);--bs-accent-bg-subtle:light-dark(var(--bs-indigo-100),var(--bs-indigo-900));--bs-accent-bg-muted:light-dark(var(--bs-indigo-200),var(--bs-indigo-800));--bs-accent-border:light-dark(var(--bs-indigo-300),var(--bs-indigo-600));--bs-accent-focus-ring:light-dark(color-mix(in oklch,var(--bs-indigo-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-indigo-500)75%,var(--bs-bg-body)));--bs-accent-contrast:var(--bs-white);--bs-success-base:var(--bs-green-500);--bs-success-text:light-dark(var(--bs-green-600),var(--bs-green-400));--bs-success-text-emphasis:light-dark(var(--bs-green-800),var(--bs-green-300));--bs-success-bg:var(--bs-green-500);--bs-success-bg-subtle:light-dark(var(--bs-green-100),var(--bs-green-900));--bs-success-bg-muted:light-dark(var(--bs-green-200),var(--bs-green-800));--bs-success-border:light-dark(var(--bs-green-300),var(--bs-green-600));--bs-success-focus-ring:light-dark(color-mix(in oklch,var(--bs-green-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-green-500)75%,var(--bs-bg-body)));--bs-success-contrast:var(--bs-white);--bs-danger-base:var(--bs-red-500);--bs-danger-text:light-dark(var(--bs-red-600),var(--bs-red-400));--bs-danger-text-emphasis:light-dark(var(--bs-red-800),var(--bs-red-300));--bs-danger-bg:var(--bs-red-500);--bs-danger-bg-subtle:light-dark(var(--bs-red-100),var(--bs-red-900));--bs-danger-bg-muted:light-dark(var(--bs-red-200),var(--bs-red-800));--bs-danger-border:light-dark(var(--bs-red-300),var(--bs-red-600));--bs-danger-focus-ring:light-dark(color-mix(in oklch,var(--bs-red-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-red-500)75%,var(--bs-bg-body)));--bs-danger-contrast:var(--bs-white);--bs-warning-base:var(--bs-yellow-500);--bs-warning-text:light-dark(var(--bs-yellow-700),var(--bs-yellow-400));--bs-warning-text-emphasis:light-dark(var(--bs-yellow-800),var(--bs-yellow-300));--bs-warning-bg:var(--bs-yellow-500);--bs-warning-bg-subtle:light-dark(var(--bs-yellow-100),var(--bs-yellow-900));--bs-warning-bg-muted:light-dark(var(--bs-yellow-200),var(--bs-yellow-800));--bs-warning-border:light-dark(var(--bs-yellow-300),var(--bs-yellow-600));--bs-warning-focus-ring:light-dark(color-mix(in oklch,var(--bs-yellow-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-yellow-400)85%,var(--bs-bg-body)));--bs-warning-contrast:var(--bs-gray-900);--bs-info-base:var(--bs-cyan-500);--bs-info-text:light-dark(var(--bs-cyan-600),var(--bs-cyan-400));--bs-info-text-emphasis:light-dark(var(--bs-cyan-800),var(--bs-cyan-300));--bs-info-bg:var(--bs-cyan-500);--bs-info-bg-subtle:light-dark(var(--bs-cyan-100),var(--bs-cyan-900));--bs-info-bg-muted:light-dark(var(--bs-cyan-200),var(--bs-cyan-800));--bs-info-border:light-dark(var(--bs-cyan-300),var(--bs-cyan-600));--bs-info-focus-ring:light-dark(color-mix(in oklch,var(--bs-cyan-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-cyan-500)75%,var(--bs-bg-body)));--bs-info-contrast:var(--bs-gray-900);--bs-inverse-base:var(--bs-gray-900);--bs-inverse-text:light-dark(var(--bs-gray-900),var(--bs-gray-200));--bs-inverse-text-emphasis:light-dark(var(--bs-gray-975),var(--bs-white));--bs-inverse-bg:light-dark(var(--bs-gray-900),var(--bs-gray-025));--bs-inverse-bg-subtle:light-dark(var(--bs-gray-100),var(--bs-gray-900));--bs-inverse-bg-muted:light-dark(var(--bs-gray-200),var(--bs-gray-300));--bs-inverse-border:light-dark(var(--bs-gray-400),var(--bs-gray-100));--bs-inverse-focus-ring:color-mix(in oklch,light-dark(var(--bs-gray-900),var(--bs-gray-100))50%,var(--bs-bg-body));--bs-inverse-contrast:light-dark(var(--bs-white),var(--bs-gray-900));--bs-secondary-base:var(--bs-gray-200);--bs-secondary-text:light-dark(var(--bs-gray-600),var(--bs-gray-400));--bs-secondary-text-emphasis:light-dark(var(--bs-gray-800),var(--bs-gray-200));--bs-secondary-bg:light-dark(var(--bs-gray-100),var(--bs-gray-600));--bs-secondary-bg-subtle:light-dark(var(--bs-gray-050),var(--bs-gray-800));--bs-secondary-bg-muted:light-dark(var(--bs-gray-100),var(--bs-gray-700));--bs-secondary-border:light-dark(var(--bs-gray-300),var(--bs-gray-600));--bs-secondary-focus-ring:color-mix(in oklch,light-dark(var(--bs-gray-500),var(--bs-gray-300))50%,var(--bs-bg-body));--bs-secondary-contrast:light-dark(var(--bs-gray-900),var(--bs-white));--bs-bg-body:light-dark(var(--bs-white),var(--bs-gray-975));--bs-bg-1:light-dark(var(--bs-gray-025),var(--bs-gray-950));--bs-bg-2:light-dark(var(--bs-gray-050),var(--bs-gray-900));--bs-bg-3:light-dark(var(--bs-gray-100),var(--bs-gray-800));--bs-bg-4:light-dark(var(--bs-gray-200),var(--bs-gray-700));--bs-bg-white:var(--bs-white);--bs-bg-black:var(--bs-black);--bs-bg-transparent:transparent;--bs-bg-inherit:inherit;--bs-fg-body:light-dark(var(--bs-gray-900),var(--bs-gray-050));--bs-fg-1:light-dark(var(--bs-gray-800),var(--bs-gray-200));--bs-fg-2:light-dark(var(--bs-gray-700),var(--bs-gray-300));--bs-fg-3:light-dark(var(--bs-gray-600),var(--bs-gray-500));--bs-fg-4:light-dark(var(--bs-gray-500),var(--bs-gray-600));--bs-fg-white:var(--bs-white);--bs-fg-black:var(--bs-black);--bs-fg-inherit:inherit;--bs-border-bg:var(--bs-bg-body);--bs-border-body:light-dark(var(--bs-gray-300),var(--bs-gray-800));--bs-border-muted:light-dark(var(--bs-gray-200),var(--bs-gray-800));--bs-border-subtle:light-dark(var(--bs-gray-100),var(--bs-gray-900));--bs-border-emphasized:light-dark(var(--bs-gray-400),var(--bs-gray-600));--bs-border-white:var(--bs-white);--bs-border-black:var(--bs-black);--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:1024px;--bs-breakpoint-xl:1280px;--bs-breakpoint-2xl:1536px;color-scheme:light dark}[data-bs-theme=dark]{color-scheme:dark}[data-bs-theme=light]{color-scheme:light}
+:root{--bs-blue-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .24 240));--bs-blue-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .24 240));--bs-blue-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .24 240));--bs-blue-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .24 240));--bs-blue-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .24 240));--bs-blue-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .24 240));--bs-blue-500:oklch(60% .24 240);--bs-blue-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .24 240));--bs-blue-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .24 240));--bs-blue-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .24 240));--bs-blue-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .24 240));--bs-blue-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .24 240));--bs-blue-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .24 240));--bs-indigo-025:color-mix(in lab,var(--bs-white)94%,oklch(56% .26 288));--bs-indigo-050:color-mix(in lab,var(--bs-white)90%,oklch(56% .26 288));--bs-indigo-100:color-mix(in lab,var(--bs-white)80%,oklch(56% .26 288));--bs-indigo-200:color-mix(in lab,var(--bs-white)60%,oklch(56% .26 288));--bs-indigo-300:color-mix(in lab,var(--bs-white)40%,oklch(56% .26 288));--bs-indigo-400:color-mix(in lab,var(--bs-white)20%,oklch(56% .26 288));--bs-indigo-500:oklch(56% .26 288);--bs-indigo-600:color-mix(in lab,var(--bs-black)16%,oklch(56% .26 288));--bs-indigo-700:color-mix(in lab,var(--bs-black)32%,oklch(56% .26 288));--bs-indigo-800:color-mix(in lab,var(--bs-black)48%,oklch(56% .26 288));--bs-indigo-900:color-mix(in lab,var(--bs-black)64%,oklch(56% .26 288));--bs-indigo-950:color-mix(in lab,var(--bs-black)76%,oklch(56% .26 288));--bs-indigo-975:color-mix(in lab,var(--bs-black)88%,oklch(56% .26 288));--bs-violet-025:color-mix(in lab,var(--bs-white)94%,oklch(56% .24 300));--bs-violet-050:color-mix(in lab,var(--bs-white)90%,oklch(56% .24 300));--bs-violet-100:color-mix(in lab,var(--bs-white)80%,oklch(56% .24 300));--bs-violet-200:color-mix(in lab,var(--bs-white)60%,oklch(56% .24 300));--bs-violet-300:color-mix(in lab,var(--bs-white)40%,oklch(56% .24 300));--bs-violet-400:color-mix(in lab,var(--bs-white)20%,oklch(56% .24 300));--bs-violet-500:oklch(56% .24 300);--bs-violet-600:color-mix(in lab,var(--bs-black)16%,oklch(56% .24 300));--bs-violet-700:color-mix(in lab,var(--bs-black)32%,oklch(56% .24 300));--bs-violet-800:color-mix(in lab,var(--bs-black)48%,oklch(56% .24 300));--bs-violet-900:color-mix(in lab,var(--bs-black)64%,oklch(56% .24 300));--bs-violet-950:color-mix(in lab,var(--bs-black)76%,oklch(56% .24 300));--bs-violet-975:color-mix(in lab,var(--bs-black)88%,oklch(56% .24 300));--bs-purple-025:color-mix(in lab,var(--bs-white)94%,oklch(56% .24 320));--bs-purple-050:color-mix(in lab,var(--bs-white)90%,oklch(56% .24 320));--bs-purple-100:color-mix(in lab,var(--bs-white)80%,oklch(56% .24 320));--bs-purple-200:color-mix(in lab,var(--bs-white)60%,oklch(56% .24 320));--bs-purple-300:color-mix(in lab,var(--bs-white)40%,oklch(56% .24 320));--bs-purple-400:color-mix(in lab,var(--bs-white)20%,oklch(56% .24 320));--bs-purple-500:oklch(56% .24 320);--bs-purple-600:color-mix(in lab,var(--bs-black)16%,oklch(56% .24 320));--bs-purple-700:color-mix(in lab,var(--bs-black)32%,oklch(56% .24 320));--bs-purple-800:color-mix(in lab,var(--bs-black)48%,oklch(56% .24 320));--bs-purple-900:color-mix(in lab,var(--bs-black)64%,oklch(56% .24 320));--bs-purple-950:color-mix(in lab,var(--bs-black)76%,oklch(56% .24 320));--bs-purple-975:color-mix(in lab,var(--bs-black)88%,oklch(56% .24 320));--bs-pink-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .22 4));--bs-pink-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .22 4));--bs-pink-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .22 4));--bs-pink-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .22 4));--bs-pink-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .22 4));--bs-pink-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .22 4));--bs-pink-500:oklch(60% .22 4);--bs-pink-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .22 4));--bs-pink-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .22 4));--bs-pink-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .22 4));--bs-pink-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .22 4));--bs-pink-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .22 4));--bs-pink-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .22 4));--bs-red-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .22 20));--bs-red-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .22 20));--bs-red-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .22 20));--bs-red-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .22 20));--bs-red-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .22 20));--bs-red-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .22 20));--bs-red-500:oklch(60% .22 20);--bs-red-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .22 20));--bs-red-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .22 20));--bs-red-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .22 20));--bs-red-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .22 20));--bs-red-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .22 20));--bs-red-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .22 20));--bs-orange-025:color-mix(in lab,var(--bs-white)94%,oklch(70% .22 52));--bs-orange-050:color-mix(in lab,var(--bs-white)90%,oklch(70% .22 52));--bs-orange-100:color-mix(in lab,var(--bs-white)80%,oklch(70% .22 52));--bs-orange-200:color-mix(in lab,var(--bs-white)60%,oklch(70% .22 52));--bs-orange-300:color-mix(in lab,var(--bs-white)40%,oklch(70% .22 52));--bs-orange-400:color-mix(in lab,var(--bs-white)20%,oklch(70% .22 52));--bs-orange-500:oklch(70% .22 52);--bs-orange-600:color-mix(in lab,var(--bs-black)16%,oklch(70% .22 52));--bs-orange-700:color-mix(in lab,var(--bs-black)32%,oklch(70% .22 52));--bs-orange-800:color-mix(in lab,var(--bs-black)48%,oklch(70% .22 52));--bs-orange-900:color-mix(in lab,var(--bs-black)64%,oklch(70% .22 52));--bs-orange-950:color-mix(in lab,var(--bs-black)76%,oklch(70% .22 52));--bs-orange-975:color-mix(in lab,var(--bs-black)88%,oklch(70% .22 52));--bs-amber-025:color-mix(in lab,var(--bs-white)94%,oklch(79% .2 78));--bs-amber-050:color-mix(in lab,var(--bs-white)90%,oklch(79% .2 78));--bs-amber-100:color-mix(in lab,var(--bs-white)80%,oklch(79% .2 78));--bs-amber-200:color-mix(in lab,var(--bs-white)60%,oklch(79% .2 78));--bs-amber-300:color-mix(in lab,var(--bs-white)40%,oklch(79% .2 78));--bs-amber-400:color-mix(in lab,var(--bs-white)20%,oklch(79% .2 78));--bs-amber-500:oklch(79% .2 78);--bs-amber-600:color-mix(in lab,var(--bs-black)16%,oklch(79% .2 78));--bs-amber-700:color-mix(in lab,var(--bs-black)32%,oklch(79% .2 78));--bs-amber-800:color-mix(in lab,var(--bs-black)48%,oklch(79% .2 78));--bs-amber-900:color-mix(in lab,var(--bs-black)64%,oklch(79% .2 78));--bs-amber-950:color-mix(in lab,var(--bs-black)76%,oklch(79% .2 78));--bs-amber-975:color-mix(in lab,var(--bs-black)88%,oklch(79% .2 78));--bs-yellow-025:color-mix(in lab,var(--bs-white)94%,oklch(88% .24 88));--bs-yellow-050:color-mix(in lab,var(--bs-white)90%,oklch(88% .24 88));--bs-yellow-100:color-mix(in lab,var(--bs-white)80%,oklch(88% .24 88));--bs-yellow-200:color-mix(in lab,var(--bs-white)60%,oklch(88% .24 88));--bs-yellow-300:color-mix(in lab,var(--bs-white)40%,oklch(88% .24 88));--bs-yellow-400:color-mix(in lab,var(--bs-white)20%,oklch(88% .24 88));--bs-yellow-500:oklch(88% .24 88);--bs-yellow-600:color-mix(in lab,var(--bs-black)16%,oklch(88% .24 88));--bs-yellow-700:color-mix(in lab,var(--bs-black)32%,oklch(88% .24 88));--bs-yellow-800:color-mix(in lab,var(--bs-black)48%,oklch(88% .24 88));--bs-yellow-900:color-mix(in lab,var(--bs-black)64%,oklch(88% .24 88));--bs-yellow-950:color-mix(in lab,var(--bs-black)76%,oklch(88% .24 88));--bs-yellow-975:color-mix(in lab,var(--bs-black)88%,oklch(88% .24 88));--bs-lime-025:color-mix(in lab,var(--bs-white)94%,oklch(65% .24 135));--bs-lime-050:color-mix(in lab,var(--bs-white)90%,oklch(65% .24 135));--bs-lime-100:color-mix(in lab,var(--bs-white)80%,oklch(65% .24 135));--bs-lime-200:color-mix(in lab,var(--bs-white)60%,oklch(65% .24 135));--bs-lime-300:color-mix(in lab,var(--bs-white)40%,oklch(65% .24 135));--bs-lime-400:color-mix(in lab,var(--bs-white)20%,oklch(65% .24 135));--bs-lime-500:oklch(65% .24 135);--bs-lime-600:color-mix(in lab,var(--bs-black)16%,oklch(65% .24 135));--bs-lime-700:color-mix(in lab,var(--bs-black)32%,oklch(65% .24 135));--bs-lime-800:color-mix(in lab,var(--bs-black)48%,oklch(65% .24 135));--bs-lime-900:color-mix(in lab,var(--bs-black)64%,oklch(65% .24 135));--bs-lime-950:color-mix(in lab,var(--bs-black)76%,oklch(65% .24 135));--bs-lime-975:color-mix(in lab,var(--bs-black)88%,oklch(65% .24 135));--bs-green-025:color-mix(in lab,var(--bs-white)94%,oklch(64% .22 160));--bs-green-050:color-mix(in lab,var(--bs-white)90%,oklch(64% .22 160));--bs-green-100:color-mix(in lab,var(--bs-white)80%,oklch(64% .22 160));--bs-green-200:color-mix(in lab,var(--bs-white)60%,oklch(64% .22 160));--bs-green-300:color-mix(in lab,var(--bs-white)40%,oklch(64% .22 160));--bs-green-400:color-mix(in lab,var(--bs-white)20%,oklch(64% .22 160));--bs-green-500:oklch(64% .22 160);--bs-green-600:color-mix(in lab,var(--bs-black)16%,oklch(64% .22 160));--bs-green-700:color-mix(in lab,var(--bs-black)32%,oklch(64% .22 160));--bs-green-800:color-mix(in lab,var(--bs-black)48%,oklch(64% .22 160));--bs-green-900:color-mix(in lab,var(--bs-black)64%,oklch(64% .22 160));--bs-green-950:color-mix(in lab,var(--bs-black)76%,oklch(64% .22 160));--bs-green-975:color-mix(in lab,var(--bs-black)88%,oklch(64% .22 160));--bs-teal-025:color-mix(in lab,var(--bs-white)94%,oklch(68% .22 190));--bs-teal-050:color-mix(in lab,var(--bs-white)90%,oklch(68% .22 190));--bs-teal-100:color-mix(in lab,var(--bs-white)80%,oklch(68% .22 190));--bs-teal-200:color-mix(in lab,var(--bs-white)60%,oklch(68% .22 190));--bs-teal-300:color-mix(in lab,var(--bs-white)40%,oklch(68% .22 190));--bs-teal-400:color-mix(in lab,var(--bs-white)20%,oklch(68% .22 190));--bs-teal-500:oklch(68% .22 190);--bs-teal-600:color-mix(in lab,var(--bs-black)16%,oklch(68% .22 190));--bs-teal-700:color-mix(in lab,var(--bs-black)32%,oklch(68% .22 190));--bs-teal-800:color-mix(in lab,var(--bs-black)48%,oklch(68% .22 190));--bs-teal-900:color-mix(in lab,var(--bs-black)64%,oklch(68% .22 190));--bs-teal-950:color-mix(in lab,var(--bs-black)76%,oklch(68% .22 190));--bs-teal-975:color-mix(in lab,var(--bs-black)88%,oklch(68% .22 190));--bs-cyan-025:color-mix(in lab,var(--bs-white)94%,oklch(69% .22 220));--bs-cyan-050:color-mix(in lab,var(--bs-white)90%,oklch(69% .22 220));--bs-cyan-100:color-mix(in lab,var(--bs-white)80%,oklch(69% .22 220));--bs-cyan-200:color-mix(in lab,var(--bs-white)60%,oklch(69% .22 220));--bs-cyan-300:color-mix(in lab,var(--bs-white)40%,oklch(69% .22 220));--bs-cyan-400:color-mix(in lab,var(--bs-white)20%,oklch(69% .22 220));--bs-cyan-500:oklch(69% .22 220);--bs-cyan-600:color-mix(in lab,var(--bs-black)16%,oklch(69% .22 220));--bs-cyan-700:color-mix(in lab,var(--bs-black)32%,oklch(69% .22 220));--bs-cyan-800:color-mix(in lab,var(--bs-black)48%,oklch(69% .22 220));--bs-cyan-900:color-mix(in lab,var(--bs-black)64%,oklch(69% .22 220));--bs-cyan-950:color-mix(in lab,var(--bs-black)76%,oklch(69% .22 220));--bs-cyan-975:color-mix(in lab,var(--bs-black)88%,oklch(69% .22 220));--bs-brown-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .12 54));--bs-brown-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .12 54));--bs-brown-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .12 54));--bs-brown-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .12 54));--bs-brown-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .12 54));--bs-brown-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .12 54));--bs-brown-500:oklch(60% .12 54);--bs-brown-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .12 54));--bs-brown-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .12 54));--bs-brown-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .12 54));--bs-brown-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .12 54));--bs-brown-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .12 54));--bs-brown-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .12 54));--bs-gray-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .02 245));--bs-gray-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .02 245));--bs-gray-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .02 245));--bs-gray-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .02 245));--bs-gray-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .02 245));--bs-gray-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .02 245));--bs-gray-500:oklch(60% .02 245);--bs-gray-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .02 245));--bs-gray-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .02 245));--bs-gray-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .02 245));--bs-gray-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .02 245));--bs-gray-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .02 245));--bs-gray-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .02 245));--bs-pewter-025:color-mix(in lab,var(--bs-white)94%,oklch(65% .01 290));--bs-pewter-050:color-mix(in lab,var(--bs-white)90%,oklch(65% .01 290));--bs-pewter-100:color-mix(in lab,var(--bs-white)80%,oklch(65% .01 290));--bs-pewter-200:color-mix(in lab,var(--bs-white)60%,oklch(65% .01 290));--bs-pewter-300:color-mix(in lab,var(--bs-white)40%,oklch(65% .01 290));--bs-pewter-400:color-mix(in lab,var(--bs-white)20%,oklch(65% .01 290));--bs-pewter-500:oklch(65% .01 290);--bs-pewter-600:color-mix(in lab,var(--bs-black)16%,oklch(65% .01 290));--bs-pewter-700:color-mix(in lab,var(--bs-black)32%,oklch(65% .01 290));--bs-pewter-800:color-mix(in lab,var(--bs-black)48%,oklch(65% .01 290));--bs-pewter-900:color-mix(in lab,var(--bs-black)64%,oklch(65% .01 290));--bs-pewter-950:color-mix(in lab,var(--bs-black)76%,oklch(65% .01 290));--bs-pewter-975:color-mix(in lab,var(--bs-black)88%,oklch(65% .01 290))}@layer colors,theme,config,root;@layer reboot{*,:before,:after{box-sizing:border-box}:root{accent-color:var(--bs-primary-base)}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-fg-body);text-align:var(--bs-body-text-align);background-color:var(--bs-bg-body);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:#0000;margin:0}hr{margin:var(--bs-hr-margin-y,var(--bs-spacer))0;border:0;border-block-start:var(--bs-border-width)solid var(--bs-hr-border-color)}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{color:var(--bs-heading-color);margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:var(--bs-font-size-3xl)}h2,.h2{font-size:var(--bs-font-size-2xl)}h3,.h3{font-size:var(--bs-font-size-xl)}h4,.h4{font-size:var(--bs-font-size-lg)}h5,.h5{font-size:var(--bs-font-size-md)}h6,.h6{font-size:var(--bs-font-size-sm)}p{margin-top:0;margin-bottom:1rem}abbr[title]{cursor:help;text-decoration-skip-ink:none;text-decoration:underline dotted}address{font-style:normal;line-height:inherit;margin-bottom:1rem}ol,ul{padding-inline-start:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-inline-start:0;margin-bottom:.5rem}blockquote{margin:0 0 1rem}blockquote>*{margin-block:0}b,strong{font-weight:bolder}small,.small{font-size:var(--bs-small-font-size,87.5%)}mark,.mark{--bs-mark-padding:.1875em;--bs-mark-color:var(--bs-fg-body);--bs-mark-bg:light-dark(var(--bs-yellow-100),var(--bs-yellow-900));padding:var(--bs-mark-padding);color:var(--bs-mark-color);background-color:var(--bs-mark-bg)}sub,sup{font-size:var(--bs-sub-sup-font-size,.75em);vertical-align:baseline;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-theme-text,var(--bs-link-color));-webkit-text-decoration:var(--bs-link-decoration);text-decoration:var(--bs-link-decoration);text-underline-offset:.2em}a:hover{color:var(--bs-theme-text-emphasis,var(--bs-link-hover-color));-webkit-text-decoration:var(--bs-link-hover-decoration,var(--bs-link-decoration));text-decoration:var(--bs-link-hover-decoration,var(--bs-link-decoration))}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-mono);font-size:1em}pre{font-size:var(--bs-code-font-size);color:var(--bs-code-color,inherit);margin-top:0;margin-bottom:1rem;display:block;overflow:auto}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:var(--bs-code-font-size);color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{--bs-kbd-padding-y:.125rem;--bs-kbd-padding-x:.25rem;--bs-kbd-font-size:var(--bs-font-size-xs);--bs-kbd-color:var(--bs-bg-body);--bs-kbd-bg:var(--bs-fg-2);--bs-kbd-border-radius:var(--bs-border-radius-sm);padding:var(--bs-kbd-padding-y)var(--bs-kbd-padding-x);font-size:var(--bs-kbd-font-size);color:var(--bs-kbd-color);background-color:var(--bs-kbd-bg);border-radius:var(--bs-kbd-border-radius)}kbd kbd{font-size:1em;font-weight:inherit;padding:0}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{color:var(--bs-fg-3);text-align:start;padding-block:.5rem}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{border-style:none;padding:0}textarea{resize:vertical}fieldset{border:0;min-width:0;margin:0;padding:0}legend{float:inline-start;width:100%;font-size:1.5rem;line-height:inherit;margin-bottom:.5rem;padding:0}legend+*{clear:inline-start}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-text{padding:0}::-webkit-datetime-edit-millisecond-field{padding:0}::-webkit-datetime-edit-second-field{padding:0}::-webkit-datetime-edit-minute-field{padding:0}::-webkit-datetime-edit-hour-field{padding:0}::-webkit-datetime-edit-ampm-field{padding:0}::-webkit-datetime-edit-day-field{padding:0}::-webkit-datetime-edit-week-field{padding:0}::-webkit-datetime-edit-month-field{padding:0}::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button{cursor:pointer;filter:grayscale()}[type=tel],[type=url],[type=email],[type=number]{direction:ltr}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{cursor:pointer;display:list-item}progress{vertical-align:baseline}[hidden]{display:none!important}}@layer layout,content,forms,components,custom,helpers,utilities;:root{--bs-black:#000;--bs-white:#fff;--bs-gradient:linear-gradient(180deg,color-mix(var(--bs-white)15%,transparent),color-mix(var(--bs-white)0%,transparent));--bs-font-weight-lighter:lighter;--bs-font-weight-light:300;--bs-font-weight-normal:400;--bs-font-weight-medium:500;--bs-font-weight-semibold:600;--bs-font-weight-bold:700;--bs-font-weight-bolder:bolder;--bs-body-font-family:system-ui;--bs-body-font-size:var(--bs-font-size-base);--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-heading-color:inherit;--bs-hr-border-color:var(--bs-border-color);--bs-link-color:light-dark(var(--bs-primary-base),var(--bs-primary-text));--bs-link-decoration:underline;--bs-link-hover-color:color-mix(in oklch,var(--bs-link-color)90%,#000);--bs-font-mono:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-code-font-size:95%;--bs-code-color:var(--bs-fg-2);--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:light-dark(color-mix(in oklch,var(--bs-gray-100),var(--bs-gray-200)),var(--bs-gray-700));--bs-border-color-translucent:color-mix(in oklch,var(--bs-fg-body)15%,transparent);--bs-border-radius:.5rem;--bs-border-radius-xs:.375rem;--bs-border-radius-sm:.5rem;--bs-border-radius-lg:.75rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-box-shadow:0 .5rem 1rem #00000026;--bs-box-shadow-sm:0 .125rem .25rem #00000013;--bs-box-shadow-lg:0 1rem 3rem #0000002d;--bs-box-shadow-inset:inset 0 1px 2px #00000013;--bs-spacer:1rem;--bs-focus-ring-width:3px;--bs-focus-ring-offset:1px;--bs-focus-ring-color:var(--bs-primary-focus-ring);--bs-focus-ring:var(--bs-focus-ring-width)solid var(--bs-focus-ring-color);--bs-control-checked-bg:var(--bs-primary-base);--bs-control-checked-border-color:var(--bs-control-checked-bg);--bs-control-active-bg:var(--bs-primary-base);--bs-control-active-border-color:var(--bs-control-active-bg);--bs-control-disabled-bg:var(--bs-bg-3);--bs-control-disabled-opacity:.65;--bs-btn-input-fg:var(--bs-fg-body);--bs-btn-input-bg:var(--bs-bg-body);--bs-btn-input-min-height:2.375rem;--bs-btn-input-padding-y:.375rem;--bs-btn-input-padding-x:.75rem;--bs-btn-input-font-size:var(--bs-font-size-base);--bs-btn-input-line-height:var(--bs-line-height-base);--bs-btn-input-border-radius:var(--bs-border-radius);--bs-btn-input-xs-min-height:1.5rem;--bs-btn-input-xs-padding-y:.125rem;--bs-btn-input-xs-padding-x:.5rem;--bs-btn-input-xs-font-size:var(--bs-font-size-xs);--bs-btn-input-xs-line-height:1.125;--bs-btn-input-xs-border-radius:var(--bs-border-radius-xs);--bs-btn-input-sm-min-height:2rem;--bs-btn-input-sm-padding-y:.25rem;--bs-btn-input-sm-padding-x:.625rem;--bs-btn-input-sm-font-size:var(--bs-font-size-sm);--bs-btn-input-sm-line-height:var(--bs-line-height-sm);--bs-btn-input-sm-border-radius:var(--bs-border-radius-sm);--bs-btn-input-lg-min-height:2.75rem;--bs-btn-input-lg-padding-y:.5rem;--bs-btn-input-lg-padding-x:1rem;--bs-btn-input-lg-font-size:var(--bs-font-size-md);--bs-btn-input-lg-line-height:var(--bs-line-height-md);--bs-btn-input-lg-border-radius:var(--bs-border-radius-lg);--bs-form-valid-color:var(--bs-success-text);--bs-form-valid-border-color:var(--bs-success-text);--bs-form-invalid-color:var(--bs-danger-text);--bs-form-invalid-border-color:var(--bs-danger-text);--bs-font-size-xs:.75rem;--bs-line-height-xs:1.25;--bs-font-size-sm:.875rem;--bs-line-height-sm:1.5;--bs-font-size-md:1rem;--bs-line-height-md:1.5;--bs-font-size-lg:clamp(1.25rem,1rem + .625vw,1.5rem);--bs-line-height-lg:1.5;--bs-font-size-xl:clamp(1.5rem,1.1rem + .75vw,1.75rem);--bs-line-height-xl:1.42857;--bs-font-size-2xl:clamp(1.75rem,1.3rem + 1vw,2rem);--bs-line-height-2xl:1.33333;--bs-font-size-3xl:clamp(2rem,1.5rem + 1.875vw,2.5rem);--bs-line-height-3xl:1.2;--bs-font-size-4xl:clamp(2.25rem,1.75rem + 2.5vw,3rem);--bs-line-height-4xl:1.1;--bs-font-size-5xl:clamp(3rem,2rem + 5vw,4rem);--bs-line-height-5xl:1.1;--bs-font-size-6xl:clamp(3.75rem,2.5rem + 6.25vw,5rem);--bs-line-height-6xl:1;--bs-primary-base:var(--bs-blue-500);--bs-primary-text:light-dark(var(--bs-blue-600),var(--bs-blue-400));--bs-primary-text-emphasis:light-dark(var(--bs-blue-800),var(--bs-blue-200));--bs-primary-bg:var(--bs-blue-500);--bs-primary-bg-subtle:light-dark(var(--bs-blue-100),var(--bs-blue-900));--bs-primary-bg-muted:light-dark(var(--bs-blue-200),var(--bs-blue-800));--bs-primary-border:light-dark(var(--bs-blue-300),var(--bs-blue-600));--bs-primary-focus-ring:light-dark(color-mix(in oklch,var(--bs-blue-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-blue-500)75%,var(--bs-bg-body)));--bs-primary-contrast:var(--bs-white);--bs-accent-base:var(--bs-indigo-500);--bs-accent-text:light-dark(var(--bs-indigo-600),color-mix(in oklch,var(--bs-indigo-400),var(--bs-indigo-300)));--bs-accent-text-emphasis:light-dark(var(--bs-indigo-800),var(--bs-indigo-300));--bs-accent-bg:var(--bs-indigo-500);--bs-accent-bg-subtle:light-dark(var(--bs-indigo-100),var(--bs-indigo-900));--bs-accent-bg-muted:light-dark(var(--bs-indigo-200),var(--bs-indigo-800));--bs-accent-border:light-dark(var(--bs-indigo-300),var(--bs-indigo-600));--bs-accent-focus-ring:light-dark(color-mix(in oklch,var(--bs-indigo-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-indigo-500)75%,var(--bs-bg-body)));--bs-accent-contrast:var(--bs-white);--bs-success-base:var(--bs-green-500);--bs-success-text:light-dark(var(--bs-green-600),var(--bs-green-400));--bs-success-text-emphasis:light-dark(var(--bs-green-800),var(--bs-green-300));--bs-success-bg:var(--bs-green-500);--bs-success-bg-subtle:light-dark(var(--bs-green-100),var(--bs-green-900));--bs-success-bg-muted:light-dark(var(--bs-green-200),var(--bs-green-800));--bs-success-border:light-dark(var(--bs-green-300),var(--bs-green-600));--bs-success-focus-ring:light-dark(color-mix(in oklch,var(--bs-green-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-green-500)75%,var(--bs-bg-body)));--bs-success-contrast:var(--bs-white);--bs-danger-base:var(--bs-red-500);--bs-danger-text:light-dark(var(--bs-red-600),var(--bs-red-400));--bs-danger-text-emphasis:light-dark(var(--bs-red-800),var(--bs-red-300));--bs-danger-bg:var(--bs-red-500);--bs-danger-bg-subtle:light-dark(var(--bs-red-100),var(--bs-red-900));--bs-danger-bg-muted:light-dark(var(--bs-red-200),var(--bs-red-800));--bs-danger-border:light-dark(var(--bs-red-300),var(--bs-red-600));--bs-danger-focus-ring:light-dark(color-mix(in oklch,var(--bs-red-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-red-500)75%,var(--bs-bg-body)));--bs-danger-contrast:var(--bs-white);--bs-warning-base:var(--bs-yellow-500);--bs-warning-text:light-dark(var(--bs-yellow-700),var(--bs-yellow-400));--bs-warning-text-emphasis:light-dark(var(--bs-yellow-800),var(--bs-yellow-300));--bs-warning-bg:var(--bs-yellow-500);--bs-warning-bg-subtle:light-dark(var(--bs-yellow-100),var(--bs-yellow-900));--bs-warning-bg-muted:light-dark(var(--bs-yellow-200),var(--bs-yellow-800));--bs-warning-border:light-dark(var(--bs-yellow-300),var(--bs-yellow-600));--bs-warning-focus-ring:light-dark(color-mix(in oklch,var(--bs-yellow-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-yellow-400)85%,var(--bs-bg-body)));--bs-warning-contrast:var(--bs-gray-900);--bs-info-base:var(--bs-cyan-500);--bs-info-text:light-dark(var(--bs-cyan-600),var(--bs-cyan-400));--bs-info-text-emphasis:light-dark(var(--bs-cyan-800),var(--bs-cyan-300));--bs-info-bg:var(--bs-cyan-500);--bs-info-bg-subtle:light-dark(var(--bs-cyan-100),var(--bs-cyan-900));--bs-info-bg-muted:light-dark(var(--bs-cyan-200),var(--bs-cyan-800));--bs-info-border:light-dark(var(--bs-cyan-300),var(--bs-cyan-600));--bs-info-focus-ring:light-dark(color-mix(in oklch,var(--bs-cyan-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-cyan-500)75%,var(--bs-bg-body)));--bs-info-contrast:var(--bs-gray-900);--bs-inverse-base:var(--bs-gray-900);--bs-inverse-text:light-dark(var(--bs-gray-900),var(--bs-gray-200));--bs-inverse-text-emphasis:light-dark(var(--bs-gray-975),var(--bs-white));--bs-inverse-bg:light-dark(var(--bs-gray-900),var(--bs-gray-025));--bs-inverse-bg-subtle:light-dark(var(--bs-gray-100),var(--bs-gray-900));--bs-inverse-bg-muted:light-dark(var(--bs-gray-200),var(--bs-gray-300));--bs-inverse-border:light-dark(var(--bs-gray-400),var(--bs-gray-100));--bs-inverse-focus-ring:color-mix(in oklch,light-dark(var(--bs-gray-900),var(--bs-gray-100))50%,var(--bs-bg-body));--bs-inverse-contrast:light-dark(var(--bs-white),var(--bs-gray-900));--bs-secondary-base:var(--bs-gray-200);--bs-secondary-text:light-dark(var(--bs-gray-600),var(--bs-gray-400));--bs-secondary-text-emphasis:light-dark(var(--bs-gray-800),var(--bs-gray-200));--bs-secondary-bg:light-dark(var(--bs-gray-100),var(--bs-gray-600));--bs-secondary-bg-subtle:light-dark(var(--bs-gray-050),var(--bs-gray-800));--bs-secondary-bg-muted:light-dark(var(--bs-gray-100),var(--bs-gray-700));--bs-secondary-border:light-dark(var(--bs-gray-300),var(--bs-gray-600));--bs-secondary-focus-ring:color-mix(in oklch,light-dark(var(--bs-gray-500),var(--bs-gray-300))50%,var(--bs-bg-body));--bs-secondary-contrast:light-dark(var(--bs-gray-900),var(--bs-white));--bs-bg-body:light-dark(var(--bs-white),var(--bs-gray-975));--bs-bg-1:light-dark(var(--bs-gray-025),var(--bs-gray-950));--bs-bg-2:light-dark(var(--bs-gray-050),var(--bs-gray-900));--bs-bg-3:light-dark(var(--bs-gray-100),var(--bs-gray-800));--bs-bg-4:light-dark(var(--bs-gray-200),var(--bs-gray-700));--bs-bg-white:var(--bs-white);--bs-bg-black:var(--bs-black);--bs-bg-transparent:transparent;--bs-bg-inherit:inherit;--bs-fg-body:light-dark(var(--bs-gray-900),var(--bs-gray-050));--bs-fg-1:light-dark(var(--bs-gray-800),var(--bs-gray-200));--bs-fg-2:light-dark(var(--bs-gray-700),var(--bs-gray-300));--bs-fg-3:light-dark(var(--bs-gray-600),var(--bs-gray-500));--bs-fg-4:light-dark(var(--bs-gray-500),var(--bs-gray-600));--bs-fg-white:var(--bs-white);--bs-fg-black:var(--bs-black);--bs-fg-inherit:inherit;--bs-border-bg:var(--bs-bg-body);--bs-border-body:light-dark(var(--bs-gray-300),var(--bs-gray-800));--bs-border-muted:light-dark(var(--bs-gray-200),var(--bs-gray-800));--bs-border-subtle:light-dark(var(--bs-gray-100),var(--bs-gray-900));--bs-border-emphasized:light-dark(var(--bs-gray-400),var(--bs-gray-600));--bs-border-white:var(--bs-white);--bs-border-black:var(--bs-black);--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:1024px;--bs-breakpoint-xl:1280px;--bs-breakpoint-2xl:1536px;color-scheme:light dark}[data-bs-theme=dark]{color-scheme:dark}[data-bs-theme=light]{color-scheme:light}
 /*# sourceMappingURL=bootstrap-reboot.min.css.map */
\ No newline at end of file
index 96815e1092e38f18dc09cbf50a017a46fffd6aaa..9a869fc16098c81ac946a952e62a16fccee569fe 100644 (file)
@@ -1 +1 @@
-{"version":3,"sourceRoot":null,"mappings":";;;;;AEmGA,oubEzFA,gCAAA,cC0CE,uCAWA,0CAKI,8CALJ,8BAmBA,sUAcA,oIAYA,yIAUA,yCAMA,yCAMA,wCAMA,wCAMA,wCAMA,wCAWA,kCAWA,uFAQA,iEAQA,gCAKA,yCAOA,wCAOA,mBAMA,6CAOA,2BAEE,4BASF,4BASA,uDAOA,uOAaA,4GAQA,kBACA,cAIA,yKAKE,mOAcA,+FASF,gEAYA,sIASE,2DAOF,wFAME,qBAKF,gZAQE,oDAWF,uBAMA,8BASA,mDAKA,kEAaA,sDAMA,kFAeA,2BAOA,uBAUA,2CAMA,yGAYA,kCAOA,6BAIA,wBAME,0BAQF,iKASA,0EAOI,2HAQJ,+CAOA,yBAWA,iDAYA,wGASE,4BAQF,iDAAA,uCAAA,oDAAA,+CAAA,+CAAA,6CAAA,6CAAA,4CAAA,6CAAA,8CAAA,6CAcA,wCAUA,+DAKE,8EASF,+DASA,oDAMA,yCAOA,8DAOA,4BAMA,gBAQA,yCASA,iCAQA,iCDtnBF,gEAqLA,mwUAMA,uCAIA","sources":["bootstrap-reboot.css","../../scss/_banner.scss","../../scss/_colors.scss","../../scss/mixins/_tokens.scss","../../scss/_root.scss","../../scss/content/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_border-radius.scss"],"sourcesContent":["/*!\n  * Bootstrap Reboot v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n:root {\n  --blue-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.24 240deg));\n  --blue-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.24 240deg));\n  --blue-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.24 240deg));\n  --blue-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.24 240deg));\n  --blue-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.24 240deg));\n  --blue-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.24 240deg));\n  --blue-500: oklch(60% 0.24 240deg);\n  --blue-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.24 240deg));\n  --blue-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.24 240deg));\n  --blue-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.24 240deg));\n  --blue-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.24 240deg));\n  --blue-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.24 240deg));\n  --blue-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.24 240deg));\n  --indigo-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.26 288deg));\n  --indigo-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.26 288deg));\n  --indigo-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.26 288deg));\n  --indigo-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.26 288deg));\n  --indigo-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.26 288deg));\n  --indigo-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.26 288deg));\n  --indigo-500: oklch(56% 0.26 288deg);\n  --indigo-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.26 288deg));\n  --indigo-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.26 288deg));\n  --indigo-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.26 288deg));\n  --indigo-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.26 288deg));\n  --indigo-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.26 288deg));\n  --indigo-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.26 288deg));\n  --violet-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 300deg));\n  --violet-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 300deg));\n  --violet-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 300deg));\n  --violet-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 300deg));\n  --violet-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 300deg));\n  --violet-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 300deg));\n  --violet-500: oklch(56% 0.24 300deg);\n  --violet-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 300deg));\n  --violet-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 300deg));\n  --violet-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 300deg));\n  --violet-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 300deg));\n  --violet-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 300deg));\n  --violet-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 300deg));\n  --purple-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 320deg));\n  --purple-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 320deg));\n  --purple-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 320deg));\n  --purple-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 320deg));\n  --purple-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 320deg));\n  --purple-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 320deg));\n  --purple-500: oklch(56% 0.24 320deg);\n  --purple-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 320deg));\n  --purple-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 320deg));\n  --purple-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 320deg));\n  --purple-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 320deg));\n  --purple-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 320deg));\n  --purple-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 320deg));\n  --pink-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 4deg));\n  --pink-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 4deg));\n  --pink-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 4deg));\n  --pink-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 4deg));\n  --pink-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 4deg));\n  --pink-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 4deg));\n  --pink-500: oklch(60% 0.22 4deg);\n  --pink-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 4deg));\n  --pink-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 4deg));\n  --pink-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 4deg));\n  --pink-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 4deg));\n  --pink-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 4deg));\n  --pink-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 4deg));\n  --red-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 20deg));\n  --red-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 20deg));\n  --red-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 20deg));\n  --red-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 20deg));\n  --red-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 20deg));\n  --red-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 20deg));\n  --red-500: oklch(60% 0.22 20deg);\n  --red-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 20deg));\n  --red-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 20deg));\n  --red-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 20deg));\n  --red-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 20deg));\n  --red-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 20deg));\n  --red-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 20deg));\n  --orange-025: color-mix(in lab, var(--white) 94%, oklch(70% 0.22 52deg));\n  --orange-050: color-mix(in lab, var(--white) 90%, oklch(70% 0.22 52deg));\n  --orange-100: color-mix(in lab, var(--white) 80%, oklch(70% 0.22 52deg));\n  --orange-200: color-mix(in lab, var(--white) 60%, oklch(70% 0.22 52deg));\n  --orange-300: color-mix(in lab, var(--white) 40%, oklch(70% 0.22 52deg));\n  --orange-400: color-mix(in lab, var(--white) 20%, oklch(70% 0.22 52deg));\n  --orange-500: oklch(70% 0.22 52deg);\n  --orange-600: color-mix(in lab, var(--black) 16%, oklch(70% 0.22 52deg));\n  --orange-700: color-mix(in lab, var(--black) 32%, oklch(70% 0.22 52deg));\n  --orange-800: color-mix(in lab, var(--black) 48%, oklch(70% 0.22 52deg));\n  --orange-900: color-mix(in lab, var(--black) 64%, oklch(70% 0.22 52deg));\n  --orange-950: color-mix(in lab, var(--black) 76%, oklch(70% 0.22 52deg));\n  --orange-975: color-mix(in lab, var(--black) 88%, oklch(70% 0.22 52deg));\n  --amber-025: color-mix(in lab, var(--white) 94%, oklch(79% 0.2 78deg));\n  --amber-050: color-mix(in lab, var(--white) 90%, oklch(79% 0.2 78deg));\n  --amber-100: color-mix(in lab, var(--white) 80%, oklch(79% 0.2 78deg));\n  --amber-200: color-mix(in lab, var(--white) 60%, oklch(79% 0.2 78deg));\n  --amber-300: color-mix(in lab, var(--white) 40%, oklch(79% 0.2 78deg));\n  --amber-400: color-mix(in lab, var(--white) 20%, oklch(79% 0.2 78deg));\n  --amber-500: oklch(79% 0.2 78deg);\n  --amber-600: color-mix(in lab, var(--black) 16%, oklch(79% 0.2 78deg));\n  --amber-700: color-mix(in lab, var(--black) 32%, oklch(79% 0.2 78deg));\n  --amber-800: color-mix(in lab, var(--black) 48%, oklch(79% 0.2 78deg));\n  --amber-900: color-mix(in lab, var(--black) 64%, oklch(79% 0.2 78deg));\n  --amber-950: color-mix(in lab, var(--black) 76%, oklch(79% 0.2 78deg));\n  --amber-975: color-mix(in lab, var(--black) 88%, oklch(79% 0.2 78deg));\n  --yellow-025: color-mix(in lab, var(--white) 94%, oklch(88% 0.24 88deg));\n  --yellow-050: color-mix(in lab, var(--white) 90%, oklch(88% 0.24 88deg));\n  --yellow-100: color-mix(in lab, var(--white) 80%, oklch(88% 0.24 88deg));\n  --yellow-200: color-mix(in lab, var(--white) 60%, oklch(88% 0.24 88deg));\n  --yellow-300: color-mix(in lab, var(--white) 40%, oklch(88% 0.24 88deg));\n  --yellow-400: color-mix(in lab, var(--white) 20%, oklch(88% 0.24 88deg));\n  --yellow-500: oklch(88% 0.24 88deg);\n  --yellow-600: color-mix(in lab, var(--black) 16%, oklch(88% 0.24 88deg));\n  --yellow-700: color-mix(in lab, var(--black) 32%, oklch(88% 0.24 88deg));\n  --yellow-800: color-mix(in lab, var(--black) 48%, oklch(88% 0.24 88deg));\n  --yellow-900: color-mix(in lab, var(--black) 64%, oklch(88% 0.24 88deg));\n  --yellow-950: color-mix(in lab, var(--black) 76%, oklch(88% 0.24 88deg));\n  --yellow-975: color-mix(in lab, var(--black) 88%, oklch(88% 0.24 88deg));\n  --lime-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.24 135deg));\n  --lime-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.24 135deg));\n  --lime-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.24 135deg));\n  --lime-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.24 135deg));\n  --lime-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.24 135deg));\n  --lime-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.24 135deg));\n  --lime-500: oklch(65% 0.24 135deg);\n  --lime-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.24 135deg));\n  --lime-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.24 135deg));\n  --lime-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.24 135deg));\n  --lime-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.24 135deg));\n  --lime-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.24 135deg));\n  --lime-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.24 135deg));\n  --green-025: color-mix(in lab, var(--white) 94%, oklch(64% 0.22 160deg));\n  --green-050: color-mix(in lab, var(--white) 90%, oklch(64% 0.22 160deg));\n  --green-100: color-mix(in lab, var(--white) 80%, oklch(64% 0.22 160deg));\n  --green-200: color-mix(in lab, var(--white) 60%, oklch(64% 0.22 160deg));\n  --green-300: color-mix(in lab, var(--white) 40%, oklch(64% 0.22 160deg));\n  --green-400: color-mix(in lab, var(--white) 20%, oklch(64% 0.22 160deg));\n  --green-500: oklch(64% 0.22 160deg);\n  --green-600: color-mix(in lab, var(--black) 16%, oklch(64% 0.22 160deg));\n  --green-700: color-mix(in lab, var(--black) 32%, oklch(64% 0.22 160deg));\n  --green-800: color-mix(in lab, var(--black) 48%, oklch(64% 0.22 160deg));\n  --green-900: color-mix(in lab, var(--black) 64%, oklch(64% 0.22 160deg));\n  --green-950: color-mix(in lab, var(--black) 76%, oklch(64% 0.22 160deg));\n  --green-975: color-mix(in lab, var(--black) 88%, oklch(64% 0.22 160deg));\n  --teal-025: color-mix(in lab, var(--white) 94%, oklch(68% 0.22 190deg));\n  --teal-050: color-mix(in lab, var(--white) 90%, oklch(68% 0.22 190deg));\n  --teal-100: color-mix(in lab, var(--white) 80%, oklch(68% 0.22 190deg));\n  --teal-200: color-mix(in lab, var(--white) 60%, oklch(68% 0.22 190deg));\n  --teal-300: color-mix(in lab, var(--white) 40%, oklch(68% 0.22 190deg));\n  --teal-400: color-mix(in lab, var(--white) 20%, oklch(68% 0.22 190deg));\n  --teal-500: oklch(68% 0.22 190deg);\n  --teal-600: color-mix(in lab, var(--black) 16%, oklch(68% 0.22 190deg));\n  --teal-700: color-mix(in lab, var(--black) 32%, oklch(68% 0.22 190deg));\n  --teal-800: color-mix(in lab, var(--black) 48%, oklch(68% 0.22 190deg));\n  --teal-900: color-mix(in lab, var(--black) 64%, oklch(68% 0.22 190deg));\n  --teal-950: color-mix(in lab, var(--black) 76%, oklch(68% 0.22 190deg));\n  --teal-975: color-mix(in lab, var(--black) 88%, oklch(68% 0.22 190deg));\n  --cyan-025: color-mix(in lab, var(--white) 94%, oklch(69% 0.22 220deg));\n  --cyan-050: color-mix(in lab, var(--white) 90%, oklch(69% 0.22 220deg));\n  --cyan-100: color-mix(in lab, var(--white) 80%, oklch(69% 0.22 220deg));\n  --cyan-200: color-mix(in lab, var(--white) 60%, oklch(69% 0.22 220deg));\n  --cyan-300: color-mix(in lab, var(--white) 40%, oklch(69% 0.22 220deg));\n  --cyan-400: color-mix(in lab, var(--white) 20%, oklch(69% 0.22 220deg));\n  --cyan-500: oklch(69% 0.22 220deg);\n  --cyan-600: color-mix(in lab, var(--black) 16%, oklch(69% 0.22 220deg));\n  --cyan-700: color-mix(in lab, var(--black) 32%, oklch(69% 0.22 220deg));\n  --cyan-800: color-mix(in lab, var(--black) 48%, oklch(69% 0.22 220deg));\n  --cyan-900: color-mix(in lab, var(--black) 64%, oklch(69% 0.22 220deg));\n  --cyan-950: color-mix(in lab, var(--black) 76%, oklch(69% 0.22 220deg));\n  --cyan-975: color-mix(in lab, var(--black) 88%, oklch(69% 0.22 220deg));\n  --brown-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.12 54deg));\n  --brown-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.12 54deg));\n  --brown-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.12 54deg));\n  --brown-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.12 54deg));\n  --brown-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.12 54deg));\n  --brown-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.12 54deg));\n  --brown-500: oklch(60% 0.12 54deg);\n  --brown-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.12 54deg));\n  --brown-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.12 54deg));\n  --brown-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.12 54deg));\n  --brown-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.12 54deg));\n  --brown-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.12 54deg));\n  --brown-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.12 54deg));\n  --gray-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.02 245deg));\n  --gray-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.02 245deg));\n  --gray-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.02 245deg));\n  --gray-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.02 245deg));\n  --gray-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.02 245deg));\n  --gray-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.02 245deg));\n  --gray-500: oklch(60% 0.02 245deg);\n  --gray-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.02 245deg));\n  --gray-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.02 245deg));\n  --gray-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.02 245deg));\n  --gray-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.02 245deg));\n  --gray-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.02 245deg));\n  --gray-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.02 245deg));\n  --pewter-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.01 290deg));\n  --pewter-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.01 290deg));\n  --pewter-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.01 290deg));\n  --pewter-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.01 290deg));\n  --pewter-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.01 290deg));\n  --pewter-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.01 290deg));\n  --pewter-500: oklch(65% 0.01 290deg);\n  --pewter-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.01 290deg));\n  --pewter-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.01 290deg));\n  --pewter-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.01 290deg));\n  --pewter-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.01 290deg));\n  --pewter-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.01 290deg));\n  --pewter-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.01 290deg));\n}\n\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n:root {\n  --black: #000;\n  --white: #fff;\n  --gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent));\n  --font-size-base: 1rem;\n  --font-size-xs: 0.75rem;\n  --font-size-sm: 0.875rem;\n  --font-size-md: 1rem;\n  --font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  --font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);\n  --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  --line-height-xs: 1.25;\n  --line-height-sm: 1.5;\n  --line-height-md: 1.5;\n  --line-height-lg: 1.5;\n  --line-height-xl: 1.4285714286;\n  --line-height-2xl: 1.3333333333;\n  --line-height-3xl: 1.2;\n  --line-height-4xl: 1.1;\n  --line-height-5xl: 1.1;\n  --line-height-6xl: 1;\n  --font-weight-lighter: lighter;\n  --font-weight-light: 300;\n  --font-weight-normal: 400;\n  --font-weight-medium: 500;\n  --font-weight-semibold: 600;\n  --font-weight-bold: 700;\n  --font-weight-bolder: bolder;\n  --body-font-family: system-ui;\n  --body-font-size: var(--font-size-base);\n  --body-font-weight: 400;\n  --body-line-height: 1.5;\n  --heading-color: inherit;\n  --hr-border-color: var(--border-color);\n  --link-color: light-dark(var(--primary-base), var(--primary-text));\n  --link-decoration: underline;\n  --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000);\n  --font-mono: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;\n  --code-font-size: 95%;\n  --code-color: var(--fg-2);\n  --border-width: 1px;\n  --border-style: solid;\n  --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700));\n  --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent);\n  --border-radius: 0.5rem;\n  --border-radius-xs: 0.375rem;\n  --border-radius-sm: 0.5rem;\n  --border-radius-lg: 0.75rem;\n  --border-radius-xl: 1rem;\n  --border-radius-2xl: 2rem;\n  --border-radius-pill: 50rem;\n  --box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  --box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n  --box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n  --box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n  --spacer: 1rem;\n  --focus-ring-width: 3px;\n  --focus-ring-offset: 1px;\n  --focus-ring-color: var(--primary-focus-ring);\n  --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color);\n  --control-checked-bg: var(--primary-base);\n  --control-checked-border-color: var(--control-checked-bg);\n  --control-active-bg: var(--primary-base);\n  --control-active-border-color: var(--control-active-bg);\n  --control-disabled-bg: var(--bg-3);\n  --control-disabled-opacity: 0.65;\n  --btn-input-fg: var(--fg-body);\n  --btn-input-bg: var(--bg-body);\n  --btn-input-min-height: 2.375rem;\n  --btn-input-padding-y: 0.375rem;\n  --btn-input-padding-x: 0.75rem;\n  --btn-input-font-size: var(--font-size-base);\n  --btn-input-line-height: var(--line-height-base);\n  --btn-input-border-radius: var(--border-radius);\n  --btn-input-xs-min-height: 1.5rem;\n  --btn-input-xs-padding-y: 0.125rem;\n  --btn-input-xs-padding-x: 0.5rem;\n  --btn-input-xs-font-size: var(--font-size-xs);\n  --btn-input-xs-line-height: 1.125;\n  --btn-input-xs-border-radius: var(--border-radius-xs);\n  --btn-input-sm-min-height: 2rem;\n  --btn-input-sm-padding-y: 0.25rem;\n  --btn-input-sm-padding-x: 0.625rem;\n  --btn-input-sm-font-size: var(--font-size-sm);\n  --btn-input-sm-line-height: var(--line-height-sm);\n  --btn-input-sm-border-radius: var(--border-radius-sm);\n  --btn-input-lg-min-height: 2.75rem;\n  --btn-input-lg-padding-y: 0.5rem;\n  --btn-input-lg-padding-x: 1rem;\n  --btn-input-lg-font-size: var(--font-size-md);\n  --btn-input-lg-line-height: var(--line-height-md);\n  --btn-input-lg-border-radius: var(--border-radius-lg);\n  --form-valid-color: var(--success-text);\n  --form-valid-border-color: var(--success-text);\n  --form-invalid-color: var(--danger-text);\n  --form-invalid-border-color: var(--danger-text);\n  --primary-base: var(--blue-500);\n  --primary-text: light-dark(var(--blue-600), var(--blue-400));\n  --primary-text-emphasis: light-dark(var(--blue-800), var(--blue-200));\n  --primary-bg: var(--blue-500);\n  --primary-bg-subtle: light-dark(var(--blue-100), var(--blue-900));\n  --primary-bg-muted: light-dark(var(--blue-200), var(--blue-800));\n  --primary-border: light-dark(var(--blue-300), var(--blue-600));\n  --primary-focus-ring: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  --primary-contrast: var(--white);\n  --accent-base: var(--indigo-500);\n  --accent-text: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  --accent-text-emphasis: light-dark(var(--indigo-800), var(--indigo-300));\n  --accent-bg: var(--indigo-500);\n  --accent-bg-subtle: light-dark(var(--indigo-100), var(--indigo-900));\n  --accent-bg-muted: light-dark(var(--indigo-200), var(--indigo-800));\n  --accent-border: light-dark(var(--indigo-300), var(--indigo-600));\n  --accent-focus-ring: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  --accent-contrast: var(--white);\n  --success-base: var(--green-500);\n  --success-text: light-dark(var(--green-600), var(--green-400));\n  --success-text-emphasis: light-dark(var(--green-800), var(--green-300));\n  --success-bg: var(--green-500);\n  --success-bg-subtle: light-dark(var(--green-100), var(--green-900));\n  --success-bg-muted: light-dark(var(--green-200), var(--green-800));\n  --success-border: light-dark(var(--green-300), var(--green-600));\n  --success-focus-ring: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  --success-contrast: var(--white);\n  --danger-base: var(--red-500);\n  --danger-text: light-dark(var(--red-600), var(--red-400));\n  --danger-text-emphasis: light-dark(var(--red-800), var(--red-300));\n  --danger-bg: var(--red-500);\n  --danger-bg-subtle: light-dark(var(--red-100), var(--red-900));\n  --danger-bg-muted: light-dark(var(--red-200), var(--red-800));\n  --danger-border: light-dark(var(--red-300), var(--red-600));\n  --danger-focus-ring: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  --danger-contrast: var(--white);\n  --warning-base: var(--yellow-500);\n  --warning-text: light-dark(var(--yellow-700), var(--yellow-400));\n  --warning-text-emphasis: light-dark(var(--yellow-800), var(--yellow-300));\n  --warning-bg: var(--yellow-500);\n  --warning-bg-subtle: light-dark(var(--yellow-100), var(--yellow-900));\n  --warning-bg-muted: light-dark(var(--yellow-200), var(--yellow-800));\n  --warning-border: light-dark(var(--yellow-300), var(--yellow-600));\n  --warning-focus-ring: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  --warning-contrast: var(--gray-900);\n  --info-base: var(--cyan-500);\n  --info-text: light-dark(var(--cyan-600), var(--cyan-400));\n  --info-text-emphasis: light-dark(var(--cyan-800), var(--cyan-300));\n  --info-bg: var(--cyan-500);\n  --info-bg-subtle: light-dark(var(--cyan-100), var(--cyan-900));\n  --info-bg-muted: light-dark(var(--cyan-200), var(--cyan-800));\n  --info-border: light-dark(var(--cyan-300), var(--cyan-600));\n  --info-focus-ring: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  --info-contrast: var(--gray-900);\n  --inverse-base: var(--gray-900);\n  --inverse-text: light-dark(var(--gray-900), var(--gray-200));\n  --inverse-text-emphasis: light-dark(var(--gray-975), var(--white));\n  --inverse-bg: light-dark(var(--gray-900), var(--gray-025));\n  --inverse-bg-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --inverse-bg-muted: light-dark(var(--gray-200), var(--gray-300));\n  --inverse-border: light-dark(var(--gray-400), var(--gray-100));\n  --inverse-focus-ring: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  --inverse-contrast: light-dark(var(--white), var(--gray-900));\n  --secondary-base: var(--gray-200);\n  --secondary-text: light-dark(var(--gray-600), var(--gray-400));\n  --secondary-text-emphasis: light-dark(var(--gray-800), var(--gray-200));\n  --secondary-bg: light-dark(var(--gray-100), var(--gray-600));\n  --secondary-bg-subtle: light-dark(var(--gray-050), var(--gray-800));\n  --secondary-bg-muted: light-dark(var(--gray-100), var(--gray-700));\n  --secondary-border: light-dark(var(--gray-300), var(--gray-600));\n  --secondary-focus-ring: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  --secondary-contrast: light-dark(var(--gray-900), var(--white));\n  --bg-body: light-dark(var(--white), var(--gray-975));\n  --bg-1: light-dark(var(--gray-025), var(--gray-950));\n  --bg-2: light-dark(var(--gray-050), var(--gray-900));\n  --bg-3: light-dark(var(--gray-100), var(--gray-800));\n  --bg-4: light-dark(var(--gray-200), var(--gray-700));\n  --bg-white: var(--white);\n  --bg-black: var(--black);\n  --bg-transparent: transparent;\n  --bg-inherit: inherit;\n  --fg-body: light-dark(var(--gray-900), var(--gray-050));\n  --fg-1: light-dark(var(--gray-800), var(--gray-200));\n  --fg-2: light-dark(var(--gray-700), var(--gray-300));\n  --fg-3: light-dark(var(--gray-600), var(--gray-500));\n  --fg-4: light-dark(var(--gray-500), var(--gray-600));\n  --fg-white: var(--white);\n  --fg-black: var(--black);\n  --fg-inherit: inherit;\n  --border-bg: var(--bg-body);\n  --border-body: light-dark(var(--gray-300), var(--gray-800));\n  --border-muted: light-dark(var(--gray-200), var(--gray-800));\n  --border-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --border-emphasized: light-dark(var(--gray-400), var(--gray-600));\n  --border-white: var(--white);\n  --border-black: var(--black);\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 1024px;\n  --breakpoint-xl: 1280px;\n  --breakpoint-2xl: 1536px;\n  color-scheme: light dark;\n}\n\n[data-bs-theme=dark] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=light] {\n  color-scheme: light;\n}\n\n@layer reboot {\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n  :root {\n    accent-color: var(--primary-base);\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    :root {\n      scroll-behavior: smooth;\n    }\n  }\n  body {\n    margin: 0;\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body);\n    -webkit-text-size-adjust: 100%;\n    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  }\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n  h6,\n  .h6, h5,\n  .h5, h4,\n  .h4, h3,\n  .h3, h2,\n  .h2, h1,\n  .h1 {\n    margin-top: 0;\n    margin-bottom: 0.5rem;\n    font-weight: 500;\n    line-height: 1.2;\n    color: var(--heading-color);\n  }\n  h1,\n  .h1 {\n    font-size: var(--font-size-3xl);\n  }\n  h2,\n  .h2 {\n    font-size: var(--font-size-2xl);\n  }\n  h3,\n  .h3 {\n    font-size: var(--font-size-xl);\n  }\n  h4,\n  .h4 {\n    font-size: var(--font-size-lg);\n  }\n  h5,\n  .h5 {\n    font-size: var(--font-size-md);\n  }\n  h6,\n  .h6 {\n    font-size: var(--font-size-sm);\n  }\n  p {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  abbr[title] {\n    text-decoration: underline dotted;\n    cursor: help;\n    text-decoration-skip-ink: none;\n  }\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n  dt {\n    font-weight: 700;\n  }\n  dd {\n    margin-inline-start: 0;\n    margin-bottom: 0.5rem;\n  }\n  blockquote {\n    margin: 0 0 1rem;\n  }\n  blockquote > * {\n    margin-block: 0;\n  }\n  b,\n  strong {\n    font-weight: bolder;\n  }\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n  mark,\n  .mark {\n    --mark-padding: 0.1875em;\n    --mark-color: var(--fg-body);\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900));\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, 0.75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n  sub {\n    bottom: -0.25em;\n  }\n  sup {\n    top: -0.5em;\n  }\n  a {\n    color: var(--theme-text, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: 0.2em;\n  }\n  a:hover {\n    color: var(--theme-text-emphasis, var(--link-hover-color));\n    text-decoration: var(--link-hover-decoration, var(--link-decoration));\n  }\n  a:not([href]):not([class]), a:not([href]):not([class]):hover {\n    color: inherit;\n    text-decoration: none;\n  }\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em;\n  }\n  pre {\n    display: block;\n    margin-top: 0;\n    margin-bottom: 1rem;\n    overflow: auto;\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n  }\n  pre code {\n    font-size: inherit;\n    color: inherit;\n    word-break: normal;\n  }\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n  }\n  a > code {\n    color: inherit;\n  }\n  kbd {\n    --kbd-padding-y: 0.125rem;\n    --kbd-padding-x: 0.25rem;\n    --kbd-font-size: var(--font-size-xs);\n    --kbd-color: var(--bg-body);\n    --kbd-bg: var(--fg-2);\n    --kbd-border-radius: var(--border-radius-sm);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    border-radius: var(--kbd-border-radius);\n  }\n  kbd kbd {\n    padding: 0;\n    font-size: 1em;\n    font-weight: inherit;\n  }\n  figure {\n    margin: 0 0 1rem;\n  }\n  img,\n  svg {\n    vertical-align: middle;\n  }\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n  caption {\n    padding-block: 0.5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n  th {\n    text-align: inherit;\n    text-align: -webkit-match-parent;\n  }\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n  label {\n    display: inline-block;\n  }\n  button {\n    border-radius: 0;\n  }\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0;\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n  button,\n  select {\n    text-transform: none;\n  }\n  [role=button] {\n    cursor: pointer;\n  }\n  select {\n    word-wrap: normal;\n  }\n  select:disabled {\n    opacity: 1;\n  }\n  [list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n  button,\n  [type=button],\n  [type=reset],\n  [type=submit] {\n    -webkit-appearance: button;\n  }\n  button:not(:disabled),\n  [type=button]:not(:disabled),\n  [type=reset]:not(:disabled),\n  [type=submit]:not(:disabled) {\n    cursor: pointer;\n  }\n  ::-moz-focus-inner {\n    padding: 0;\n    border-style: none;\n  }\n  textarea {\n    resize: vertical;\n  }\n  fieldset {\n    min-width: 0;\n    padding: 0;\n    margin: 0;\n    border: 0;\n  }\n  legend {\n    float: inline-start;\n    width: 100%;\n    padding: 0;\n    margin-bottom: 0.5rem;\n    font-size: 1.5rem;\n    line-height: inherit;\n  }\n  legend + * {\n    clear: inline-start;\n  }\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-ampm-field,\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n  ::-webkit-inner-spin-button {\n    height: auto;\n  }\n  [type=search] {\n    -webkit-appearance: textfield;\n    outline-offset: -2px;\n  }\n  [type=search]::-webkit-search-cancel-button {\n    cursor: pointer;\n    filter: grayscale(1);\n  }\n  [type=tel],\n  [type=url],\n  [type=email],\n  [type=number] {\n    direction: ltr;\n  }\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n  ::file-selector-button {\n    font: inherit;\n    -webkit-appearance: button;\n  }\n  output {\n    display: inline-block;\n  }\n  iframe {\n    border: 0;\n  }\n  summary {\n    display: list-item;\n    cursor: pointer;\n  }\n  progress {\n    vertical-align: baseline;\n  }\n  [hidden] {\n    display: none !important;\n  }\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */\n","$file: \"\" !default;\n\n/*!\n  * Bootstrap #{$file} v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n","// stylelint-disable hue-degree-notation, @stylistic/number-leading-zero\n\n@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// Easily convert colors to oklch() with https://oklch.com/\n\n$white: #fff !default;\n$black: #000 !default;\n\n// scss-docs-start colors-list\n$blue: oklch(60% 0.24 240) !default;\n$indigo: oklch(56% 0.26 288) !default;\n$violet: oklch(56% 0.24 300) !default;\n$purple: oklch(56% 0.24 320) !default;\n$pink: oklch(60% 0.22 4) !default;\n$red: oklch(60% 0.22 20) !default;\n$orange: oklch(70% 0.22 52) !default;\n$amber: oklch(79% 0.2 78) !default;\n$yellow: oklch(88% 0.24 88) !default;\n$lime: oklch(65% 0.24 135) !default;\n$green: oklch(64% 0.22 160) !default;\n$teal: oklch(68% 0.22 190) !default;\n$cyan: oklch(69% 0.22 220) !default;\n$brown: oklch(60% 0.12 54) !default;\n$gray: oklch(60% 0.02 245) !default;\n$pewter: oklch(65% 0.01 290) !default;\n// scss-docs-end colors-list\n\n// scss-docs-start colors-map\n$colors: () !default;\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$colors: defaults(\n  (\n    \"blue\": $blue,\n    \"indigo\": $indigo,\n    \"violet\": $violet,\n    \"purple\": $purple,\n    \"pink\": $pink,\n    \"red\": $red,\n    \"orange\": $orange,\n    \"amber\": $amber,\n    \"yellow\": $yellow,\n    \"lime\": $lime,\n    \"green\": $green,\n    \"teal\": $teal,\n    \"cyan\": $cyan,\n    \"brown\": $brown,\n    \"gray\": $gray,\n    \"pewter\": $pewter,\n  ),\n  $colors\n);\n// scss-docs-end colors-map\n\n// scss-docs-start color-mix-options\n$color-mix-space: lab !default;\n$tint-color: var(--white) !default;\n$shade-color: var(--black) !default;\n\n$color-tints: (\n  \"025\": 94%,\n  \"050\": 90%,\n  \"100\": 80%,\n  \"200\": 60%,\n  \"300\": 40%,\n  \"400\": 20%,\n) !default;\n\n$color-shades: (\n  \"600\": 16%,\n  \"700\": 32%,\n  \"800\": 48%,\n  \"900\": 64%,\n  \"950\": 76%,\n  \"975\": 88%,\n) !default;\n// scss-docs-end color-mix-options\n\n// scss-docs-start color-tokens\n$color-tokens: () !default;\n\n$-color-defaults: () !default;\n@each $color, $value in $colors {\n  @each $stop, $percent in $color-tints {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$tint-color} #{$percent}, #{$value}));\n  }\n  $-color-defaults: map.set($-color-defaults, --#{$color}-500, #{$value});\n  @each $stop, $percent in $color-shades {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$shade-color} #{$percent}, #{$value}));\n  }\n}\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$color-tokens: defaults($-color-defaults, $color-tokens);\n// scss-docs-end color-tokens\n\n:root {\n  @include tokens($color-tokens);\n}\n","// Mixin to output tokens as CSS custom properties\n\n// scss-docs-start mixin-tokens\n@mixin tokens($map) {\n  @each $prop, $value in $map {\n    #{$prop}: #{$value};\n  }\n}\n// scss-docs-end mixin-tokens\n","@use \"sass:map\";\n@use \"colors\" as *;\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"theme\" as *;\n@use \"mixins/tokens\" as *;\n@use \"forms/form-variables\" as *;\n\n// mdo-do: do we need theme?\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n\n$root-tokens: () !default;\n\n// scss-docs-start root-tokens\n// stylelint-disable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: defaults(\n  (\n    --black: #{$black},\n    --white: #{$white},\n\n    --gradient: #{$gradient},\n\n    // scss-docs-start root-font-size-variables\n    --font-size-base: 1rem,\n    --font-size-xs: .75rem,\n    --font-size-sm: .875rem,\n    --font-size-md: 1rem,\n    --font-size-lg: clamp(1.25rem, 1rem + .625vw, 1.5rem),\n    --font-size-xl: clamp(1.5rem, 1.1rem + .75vw, 1.75rem),\n    --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem),\n    --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem),\n    --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem),\n    --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem),\n    --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem),\n\n    --line-height-xs: 1.25,\n    --line-height-sm: 1.5,\n    --line-height-md: 1.5,\n    --line-height-lg: 1.5,\n    --line-height-xl: calc(2.5 / 1.75),\n    --line-height-2xl: calc(3 / 2.25),\n    --line-height-3xl: 1.2,\n    --line-height-4xl: 1.1,\n    --line-height-5xl: 1.1,\n    --line-height-6xl: 1,\n    // scss-docs-end root-font-size-variables\n\n    // scss-docs-start root-font-weight-variables\n    --font-weight-lighter: lighter,\n    --font-weight-light: 300,\n    --font-weight-normal: 400,\n    --font-weight-medium: 500,\n    --font-weight-semibold: 600,\n    --font-weight-bold: 700,\n    --font-weight-bolder: bolder,\n    // scss-docs-end root-font-weight-variables\n\n    // scss-docs-start root-body-variables\n    --body-font-family: system-ui,\n    --body-font-size: var(--font-size-base),\n    --body-font-weight: #{$font-weight-base},\n    --body-line-height: #{$line-height-base},\n\n    --heading-color: #{$headings-color},\n\n    --hr-border-color: var(--border-color),\n\n    --link-color: light-dark(var(--primary-base), var(--primary-text)),\n    --link-decoration: #{$link-decoration},\n    --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000),\n\n    --font-mono: \"SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace\",\n    --code-font-size: 95%,\n    --code-color: var(--fg-2),\n\n    // scss-docs-start root-border-var\n    --border-width: #{$border-width},\n    --border-style: #{$border-style},\n    --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700)),\n    --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    // scss-docs-end root-border-var\n\n    // scss-docs-start root-border-radius-var\n    --border-radius: .5rem,\n    --border-radius-xs: .375rem,\n    --border-radius-sm: .5rem,\n    --border-radius-lg: .75rem,\n    --border-radius-xl: 1rem,\n    --border-radius-2xl: 2rem,\n    --border-radius-pill: 50rem,\n    // scss-docs-end root-border-radius-var\n\n    // scss-docs-start root-box-shadow-variables\n    --box-shadow: 0 .5rem 1rem rgb(0 0 0 / 15%),\n    --box-shadow-sm: 0 .125rem .25rem rgb(0 0 0 / 7.5%),\n    --box-shadow-lg: 0 1rem 3rem rgb(0 0 0 / 17.5%),\n    --box-shadow-inset: inset 0 1px 2px rgb(0 0 0 / 7.5%),\n    // scss-docs-end root-box-shadow-variables\n\n    --spacer: 1rem,\n\n    // scss-docs-start root-focus-variables\n    --focus-ring-width: 3px,\n    --focus-ring-offset: 1px,\n    --focus-ring-color: var(--primary-focus-ring),\n    --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color),\n    // scss-docs-end root-focus-variables\n\n    // scss-docs-start root-form-variables\n    --control-checked-bg: var(--primary-base),\n    --control-checked-border-color: var(--control-checked-bg),\n    --control-active-bg: var(--primary-base),\n    --control-active-border-color: var(--control-active-bg),\n    --control-disabled-bg: var(--bg-3),\n    --control-disabled-opacity: .65,\n\n    --btn-input-fg: var(--fg-body),\n    --btn-input-bg: var(--bg-body),\n\n    --btn-input-min-height: 2.375rem,\n    --btn-input-padding-y: .375rem,\n    --btn-input-padding-x: .75rem,\n    --btn-input-font-size: var(--font-size-base),\n    --btn-input-line-height: var(--line-height-base),\n    --btn-input-border-radius: var(--border-radius),\n\n    --btn-input-xs-min-height: 1.5rem,\n    --btn-input-xs-padding-y: .125rem,\n    --btn-input-xs-padding-x: .5rem,\n    --btn-input-xs-font-size: var(--font-size-xs),\n    --btn-input-xs-line-height: 1.125,\n    --btn-input-xs-border-radius: var(--border-radius-xs),\n\n    --btn-input-sm-min-height: 2rem,\n    --btn-input-sm-padding-y: .25rem,\n    --btn-input-sm-padding-x: .625rem,\n    --btn-input-sm-font-size: var(--font-size-sm),\n    --btn-input-sm-line-height: var(--line-height-sm),\n    --btn-input-sm-border-radius: var(--border-radius-sm),\n\n    --btn-input-lg-min-height: 2.75rem,\n    --btn-input-lg-padding-y: .5rem,\n    --btn-input-lg-padding-x: 1rem,\n    --btn-input-lg-font-size: var(--font-size-md),\n    --btn-input-lg-line-height: var(--line-height-md),\n    --btn-input-lg-border-radius: var(--border-radius-lg),\n    // scss-docs-end root-form-variables\n\n    // scss-docs-start root-form-validation-variables\n    --form-valid-color: #{$form-valid-color},\n    --form-valid-border-color: #{$form-valid-border-color},\n    --form-invalid-color: #{$form-invalid-color},\n    --form-invalid-border-color: #{$form-invalid-border-color},\n    // scss-docs-end root-form-validation-variables\n  ),\n  $root-tokens\n);\n// stylelint-enable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// scss-docs-end root-tokens\n\n// scss-docs-start root-theme-tokens\n// Generate semantic theme colors\n@each $color-name, $color-map in $theme-colors {\n  @each $key, $value in $color-map {\n    $root-tokens: map.set($root-tokens, --#{$color-name}-#{$key}, $value);\n  }\n}\n\n// Generate background tokens\n@each $key, $value in $theme-bgs {\n  $root-tokens: map.set($root-tokens, --bg-#{$key}, $value);\n}\n\n// Generate foreground tokens\n@each $key, $value in $theme-fgs {\n  $root-tokens: map.set($root-tokens, --fg-#{$key}, $value);\n}\n\n// Generate border tokens\n@each $key, $value in $theme-borders {\n  $root-tokens: map.set($root-tokens, --border-#{$key}, $value);\n}\n// scss-docs-end root-theme-tokens\n\n// Generate breakpoint tokens\n@each $name, $value in $breakpoints {\n  $root-tokens: map.set($root-tokens, --breakpoint-#{$name}, $value);\n}\n\n:root {\n  @include tokens($root-tokens);\n\n  color-scheme: light dark;\n}\n\n[data-bs-theme=\"dark\"] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=\"light\"] {\n  color-scheme: light;\n}\n","@use \"../colors\" as *;\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../variables\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n$reboot-kbd-tokens: () !default;\n\n// scss-docs-start reboot-kbd-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-kbd-tokens: defaults(\n  (\n    --kbd-padding-y: .125rem,\n    --kbd-padding-x: .25rem,\n    --kbd-font-size: var(--font-size-xs),\n    --kbd-color: var(--bg-body),\n    --kbd-bg: var(--fg-2),\n    --kbd-border-radius: var(--border-radius-sm),\n  ),\n  $reboot-kbd-tokens\n);\n// scss-docs-end reboot-kbd-tokens\n\n$reboot-mark-tokens: () !default;\n\n// scss-docs-start reboot-mark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-mark-tokens: defaults(\n  (\n    --mark-padding: .1875em,\n    --mark-color: var(--fg-body),\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900)),\n  ),\n  $reboot-mark-tokens\n);\n// scss-docs-end reboot-mark-tokens\n\n@layer reboot {\n  // Reboot\n  //\n  // Normalization of HTML elements, manually forked from Normalize.css to remove\n  // styles targeting irrelevant browsers while applying new styles.\n  //\n  // Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n  // Document\n  //\n  // Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n\n  // Root\n  //\n  // Ability to the value of the root font sizes, affecting the value of `rem`.\n  // null by default, thus nothing is generated.\n\n  :root {\n    // Assume browser default font-size of 16px, or a user's preference\n    accent-color: var(--primary-base);\n\n    @if $enable-smooth-scroll {\n      @media (prefers-reduced-motion: no-preference) {\n        scroll-behavior: smooth;\n      }\n    }\n  }\n\n  // Body\n  //\n  // 1. Remove the margin in all browsers.\n  // 2. As a best practice, apply a default `background-color`.\n  // 3. Prevent adjustments of font size after orientation changes in iOS.\n  // 4. Change the default tap highlight to be completely transparent in iOS.\n\n  // scss-docs-start reboot-body-rules\n  body {\n    margin: 0; // 1\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body); // 2\n    -webkit-text-size-adjust: 100%; // 3\n    -webkit-tap-highlight-color: rgba($black, 0); // 4\n  }\n  // scss-docs-end reboot-body-rules\n\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n\n  // Typography\n  //\n  // 1. Remove top margins from headings\n  //    By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n  //    margin for easier control within type scales as it avoids margin collapsing.\n\n  %heading {\n    margin-top: 0; // 1\n    margin-bottom: $headings-margin-bottom;\n    font-family: $headings-font-family;\n    font-style: $headings-font-style;\n    font-weight: $headings-font-weight;\n    line-height: $headings-line-height;\n    color: var(--heading-color);\n  }\n\n  h1,\n  .h1 {\n    @extend %heading;\n    font-size: $h1-font-size;\n  }\n\n  h2,\n  .h2 {\n    @extend %heading;\n    font-size: $h2-font-size;\n  }\n\n  h3,\n  .h3 {\n    @extend %heading;\n    font-size: $h3-font-size;\n  }\n\n  h4,\n  .h4 {\n    @extend %heading;\n    font-size: $h4-font-size;\n  }\n\n  h5,\n  .h5 {\n    @extend %heading;\n    font-size: $h5-font-size;\n  }\n\n  h6,\n  .h6 {\n    @extend %heading;\n    font-size: $h6-font-size;\n  }\n\n  // Reset margins on paragraphs\n  //\n  // Similarly, the top margin on `<p>`s get reset. However, we also reset the\n  // bottom margin to use `rem` units instead of `em`.\n\n  p {\n    margin-top: 0;\n    margin-bottom: $paragraph-margin-bottom;\n  }\n\n  // Abbreviations\n  //\n  // 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n  // 2. Add explicit cursor to indicate changed behavior.\n  // 3. Prevent the text-decoration to be skipped.\n\n  abbr[title] {\n    text-decoration: underline dotted; // 1\n    cursor: help; // 2\n    text-decoration-skip-ink: none; // 3\n  }\n\n  // Address\n\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n\n  // Lists\n\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n\n  dt {\n    font-weight: $dt-font-weight;\n  }\n\n  // 1. Undo browser default\n\n  dd {\n    margin-inline-start: 0; // 1\n    margin-bottom: .5rem;\n  }\n\n  // Blockquote\n\n  blockquote {\n    margin: 0 0 1rem;\n    > * {\n      margin-block: 0;\n    }\n  }\n\n  // Strong\n  //\n  // Add the correct font weight in Chrome, Edge, and Safari\n\n  b,\n  strong {\n    font-weight: $font-weight-bolder;\n  }\n\n  // Small\n  //\n  // Add the correct font size in all browsers\n\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n\n  // Mark\n\n  mark,\n  .mark {\n    @include tokens($reboot-mark-tokens);\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n\n  // Sub and Sup\n  //\n  // Prevent `sub` and `sup` elements from affecting the line height in\n  // all browsers.\n\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, .75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n\n  sub { bottom: -.25em; }\n  sup { top: -.5em; }\n\n  // Links\n\n  a {\n    color: var(--theme-text, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: $link-underline-offset;\n\n    &:hover {\n      // --link-color: var(--link-hover-color);\n      // --link-decoration: var(--link-hover-decoration, var(--link-decoration));\n      color: var(--theme-text-emphasis, var(--link-hover-color));\n      text-decoration: var(--link-hover-decoration, var(--link-decoration));\n    }\n  }\n\n  // And undo these styles for placeholder links/named anchors (without href).\n  // It would be more straightforward to just use a[href] in previous block, but that\n  // causes specificity issues in many other styles that are too complex to fix.\n  // See https://github.com/twbs/bootstrap/issues/19402\n\n  a:not([href]):not([class]) {\n    &,\n    &:hover {\n      color: inherit;\n      text-decoration: none;\n    }\n  }\n\n  // Code\n\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n  }\n\n  // 1. Remove browser default top margin\n  // 2. Reset browser default of `1em` to use `rem`s\n  // 3. Don't allow content to break outside\n\n  pre {\n    display: block;\n    margin-top: 0; // 1\n    margin-bottom: 1rem; // 2\n    overflow: auto; // 3\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n\n    // Account for some code outputs that place code tags in pre tags\n    code {\n      font-size: inherit;\n      color: inherit;\n      word-break: normal;\n    }\n  }\n\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n\n    // Streamline the style when inside anchors to avoid broken underline and more\n    a > & {\n      color: inherit;\n    }\n  }\n\n  kbd {\n    @include tokens($reboot-kbd-tokens);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    @include border-radius(var(--kbd-border-radius));\n\n    kbd {\n      padding: 0;\n      font-size: 1em;\n      font-weight: inherit; // mdo-do: check if this is needed\n    }\n  }\n\n  // Figures\n  //\n  // Apply a consistent margin strategy (matches our type styles).\n\n  figure {\n    margin: 0 0 1rem;\n  }\n\n  // Images and content\n\n  img,\n  svg {\n    vertical-align: middle;\n  }\n\n  // Tables\n  //\n  // Prevent double borders\n\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n\n  caption {\n    // padding-top: $table-cell-padding-y;\n    // padding-bottom: $table-cell-padding-y;\n    // color: $table-caption-color;\n    padding-block: .5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n\n  // 1. Removes font-weight bold by inheriting\n  // 2. Matches default `<td>` alignment by inheriting `text-align`.\n  // 3. Fix alignment for Safari\n\n  th {\n    // font-weight: $table-th-font-weight; // 1 // mdo-do: it's null by default. maybe we remove?\n    text-align: inherit; // 2\n    text-align: -webkit-match-parent; // 3\n  }\n\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n\n  // Forms\n  //\n  // 1. Allow labels to use `margin` for spacing.\n\n  label {\n    display: inline-block; // 1\n  }\n\n  // Remove the default `border-radius` that macOS Chrome adds.\n  // See https://github.com/twbs/bootstrap/issues/24093\n\n  button {\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 0;\n  }\n\n  // Explicitly remove focus outline in Chromium when it shouldn't be\n  // visible (e.g. as result of mouse click or touch tap). It already\n  // should be doing this automatically, but seems to currently be\n  // confused and applies its very visible two-tone outline anyway.\n\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n\n  // 1. Remove the margin in Firefox and Safari\n\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0; // 1\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n\n  // Remove the inheritance of text transform in Firefox\n  button,\n  select {\n    text-transform: none;\n  }\n  // Set the cursor for non-`<button>` buttons\n  //\n  // Details at https://github.com/twbs/bootstrap/pull/30562\n  [role=\"button\"] {\n    cursor: pointer;\n  }\n\n  select {\n    // Remove the inheritance of word-wrap in Safari.\n    // See https://github.com/twbs/bootstrap/issues/24990\n    word-wrap: normal;\n\n    // Undo the opacity change from Chrome\n    &:disabled {\n      opacity: 1;\n    }\n  }\n\n  // Remove the dropdown arrow only from text type inputs built with datalists in Chrome.\n  // See https://stackoverflow.com/a/54997118\n\n  [list]:not([type=\"date\"]):not([type=\"datetime-local\"]):not([type=\"month\"]):not([type=\"week\"]):not([type=\"time\"])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n\n  // 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n  //    controls in Android 4.\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n  // 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\n  button,\n  [type=\"button\"], // 1\n  [type=\"reset\"],\n  [type=\"submit\"] {\n    -webkit-appearance: button; // 2\n\n    @if $enable-button-pointers {\n      &:not(:disabled) {\n        cursor: pointer; // 3\n      }\n    }\n  }\n\n  // Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\n\n  ::-moz-focus-inner {\n    padding: 0;\n    border-style: none;\n  }\n\n  // 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\n  textarea {\n    resize: vertical; // 1\n  }\n\n  // 1. Browsers set a default `min-width: min-content;` on fieldsets,\n  //    unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n  //    So we reset that to ensure fieldsets behave more like a standard block element.\n  //    See https://github.com/twbs/bootstrap/issues/12359\n  //    and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n  // 2. Reset the default outline behavior of fieldsets so they don't affect page layout.\n\n  fieldset {\n    min-width: 0; // 1\n    padding: 0; // 2\n    margin: 0; // 2\n    border: 0; // 2\n  }\n\n  // 1. By using `float: inline-start`, the legend will behave like a block element.\n  //    This way the border of a fieldset wraps around the legend if present.\n  // 2. Fix wrapping bug.\n  //    See https://github.com/twbs/bootstrap/issues/29712\n\n  legend {\n    float: inline-start; // 1\n    width: 100%;\n    padding: 0;\n    margin-bottom: $legend-margin-bottom;\n    font-size: $legend-font-size;\n    font-weight: $legend-font-weight;\n    line-height: inherit;\n\n    + * {\n      clear: inline-start; // 2\n    }\n  }\n\n  // Fix height of inputs with a type of datetime-local, date, month, week, or time\n  // See https://github.com/twbs/bootstrap/issues/18842\n\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-ampm-field,\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n\n  ::-webkit-inner-spin-button {\n    height: auto;\n  }\n\n  // 1. This overrides the extra rounded corners on search inputs in iOS so that our\n  //    `.form-control` class can properly style them. Note that this cannot simply\n  //    be added to `.form-control` as it's not specific enough. For details, see\n  //    https://github.com/twbs/bootstrap/issues/11586.\n  // 2. Correct the outline style in Safari.\n\n  [type=\"search\"] {\n    -webkit-appearance: textfield; // 1\n    outline-offset: -2px; // 2\n\n    // 3. Better affordance and consistent appearance for search cancel button\n    &::-webkit-search-cancel-button {\n      cursor: pointer;\n      filter: grayscale(1);\n    }\n  }\n\n  // A few input types should stay LTR regardless of document direction\n  // See https://rtlstyling.com/posts/rtl-styling#form-inputs\n\n  [type=\"tel\"],\n  [type=\"url\"],\n  [type=\"email\"],\n  [type=\"number\"] {\n    direction: ltr;\n  }\n\n  // Remove the inner padding in Chrome and Safari on macOS.\n\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n\n  // Remove padding around color pickers in webkit browsers\n\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n\n  // 1. Inherit font family and line height for file input buttons\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n\n  ::file-selector-button {\n    font: inherit; // 1\n    -webkit-appearance: button; // 2\n  }\n\n  // Correct element displays\n\n  output {\n    display: inline-block;\n  }\n\n  // Remove border from iframe\n\n  iframe {\n    border: 0;\n  }\n\n  // Summary\n  //\n  // 1. Add the correct display in all browsers\n\n  summary {\n    display: list-item; // 1\n    cursor: pointer;\n  }\n\n  // Progress\n  //\n  // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\n  progress {\n    vertical-align: baseline;\n  }\n\n  // Hidden attribute\n  //\n  // Always hide an element with the `hidden` HTML attribute.\n\n  [hidden] {\n    display: none !important;\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n\n// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $btn-padding-y-lg.\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `<body>` element.\n\n// $body-text-align:           null !default;\n\n// Links\n//\n// Style anchor elements.\n\n// $link-color:                              var !default;\n$link-decoration:                         underline !default;\n$link-underline-offset:                   .2em !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap:               .375rem !default;\n$icon-link-underline-offset:  .25em !default;\n$icon-link-icon-size:         1em !default;\n$icon-link-icon-transition:   .2s ease-in-out transform !default;\n$icon-link-icon-transform:    translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n$border-style:                solid !default;\n$border-color:                color-mix(in oklch, var(--gray-100), var(--gray-200)) !default;\n// scss-docs-end border-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"auto\": auto,\n  \"1x1\": #{\"1 / 1\"},\n  \"4x3\": #{\"4 / 3\"},\n  \"16x9\": #{\"16 / 9\"},\n  \"21x9\": #{\"21 / 9\"}\n) !default;\n// scss-docs-end aspect-ratios\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// $font-family-sans-serif:      system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n// $font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// $font-family-base:            var(--font-sans-serif) !default;\n// $font-family-code:            var(--font-monospace) !default;\n\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-medium:          500 !default;\n$font-weight-semibold:        600 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n\n$h1-font-size: var(--font-size-3xl) !default;\n$h2-font-size: var(--font-size-2xl) !default;\n$h3-font-size: var(--font-size-xl) !default;\n$h4-font-size: var(--font-size-lg) !default;\n$h5-font-size: var(--font-size-md) !default;\n$h6-font-size: var(--font-size-sm) !default;\n// scss-docs-end font-variables\n\n// Font sizes with line-height for utilities\n$font-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$font-sizes: defaults(\n  (\n    \"xs\": (\n      \"font-size\": var(--font-size-xs),\n      \"line-height\": var(--line-height-xs)\n    ),\n    \"sm\": (\n      \"font-size\": var(--font-size-sm),\n      \"line-height\": var(--line-height-sm)\n    ),\n    \"md\": (\n      \"font-size\": var(--font-size-md),\n      \"line-height\": var(--line-height-md)\n    ),\n    \"lg\": (\n      \"font-size\": var(--font-size-lg),\n      \"line-height\": var(--line-height-lg)\n    ),\n    \"xl\": (\n      \"font-size\": var(--font-size-xl),\n      \"line-height\": var(--line-height-xl)\n    ),\n    \"2xl\": (\n      \"font-size\": var(--font-size-2xl),\n      \"line-height\": var(--line-height-2xl)\n    ),\n    \"3xl\": (\n      \"font-size\": var(--font-size-3xl),\n      \"line-height\": var(--line-height-3xl)\n    ),\n    \"4xl\": (\n      \"font-size\": var(--font-size-4xl),\n      \"line-height\": var(--line-height-4xl)\n    ),\n    \"5xl\": (\n      \"font-size\": var(--font-size-5xl),\n      \"line-height\": var(--line-height-5xl)\n    ),\n    \"6xl\": (\n      \"font-size\": var(--font-size-6xl),\n      \"line-height\": var(--line-height-6xl)\n    ),\n  ),\n  $font-sizes\n);\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start type-variables\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n// $list-inline-padding:         .5rem !default;\n// scss-docs-end type-variables\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown:                   1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-dialog:                     1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n$zindex-toast:                      1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n  n1: -1,\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n","@use \"sass:list\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n  $return: ();\n  @each $value in $radius {\n    @if meta.type-of($value) == number {\n      $return: list.append($return, math.max($value, 0));\n    } @else {\n      $return: list.append($return, $value);\n    }\n  }\n  @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: var(--border-radius), $fallback-border-radius: false) {\n  @if $enable-rounded {\n    border-radius: valid-radius($radius);\n  }\n  @else if $fallback-border-radius != false {\n    border-radius: $fallback-border-radius;\n  }\n}\n\n@mixin border-top-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n// scss-docs-end border-radius-mixins\n"],"names":[]}
\ No newline at end of file
+{"version":3,"sourceRoot":null,"mappings":";;;;;AEmGA,oubE1FA,gCAAA,cCyCE,uCAWA,0CAKI,8CALJ,8BAmBA,sUAcA,oIAYA,yIAUA,yCAMA,yCAMA,wCAMA,wCAMA,wCAMA,wCAWA,kCAWA,uFAQA,iEAQA,gCAKA,yCAOA,wCAOA,mBAMA,6CAOA,2BAEE,4BASF,4BASA,uDAOA,uOAaA,4GAQA,kBACA,cAIA,yKAKE,mOAcA,+FASF,gEAYA,sIASE,2DAOF,wFAME,qBAKF,gZAQE,oDAWF,uBAMA,8BASA,mDAKA,kEAaA,sDAMA,kFAeA,2BAOA,uBAUA,2CAMA,yGAYA,kCAOA,6BAIA,wBAME,0BAQF,iKASA,0EAOI,2HAQJ,+CAOA,yBAWA,iDAYA,wGASE,4BAQF,iDAAA,uCAAA,oDAAA,+CAAA,+CAAA,6CAAA,6CAAA,4CAAA,6CAAA,8CAAA,6CAcA,wCAUA,+DAKE,8EASF,+DASA,oDAMA,yCAOA,8DAOA,4BAMA,gBAQA,yCASA,iCAQA,iCDrnBF,gEAoKA,0uUAMA,uCAIA","sources":["bootstrap-reboot.css","../../scss/_banner.scss","../../scss/_colors.scss","../../scss/mixins/_tokens.scss","../../scss/_root.scss","../../scss/content/_reboot.scss","../../scss/_config.scss","../../scss/mixins/_border-radius.scss"],"sourcesContent":["/*!\n  * Bootstrap Reboot v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n:root {\n  --blue-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.24 240deg));\n  --blue-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.24 240deg));\n  --blue-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.24 240deg));\n  --blue-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.24 240deg));\n  --blue-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.24 240deg));\n  --blue-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.24 240deg));\n  --blue-500: oklch(60% 0.24 240deg);\n  --blue-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.24 240deg));\n  --blue-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.24 240deg));\n  --blue-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.24 240deg));\n  --blue-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.24 240deg));\n  --blue-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.24 240deg));\n  --blue-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.24 240deg));\n  --indigo-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.26 288deg));\n  --indigo-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.26 288deg));\n  --indigo-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.26 288deg));\n  --indigo-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.26 288deg));\n  --indigo-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.26 288deg));\n  --indigo-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.26 288deg));\n  --indigo-500: oklch(56% 0.26 288deg);\n  --indigo-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.26 288deg));\n  --indigo-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.26 288deg));\n  --indigo-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.26 288deg));\n  --indigo-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.26 288deg));\n  --indigo-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.26 288deg));\n  --indigo-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.26 288deg));\n  --violet-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 300deg));\n  --violet-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 300deg));\n  --violet-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 300deg));\n  --violet-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 300deg));\n  --violet-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 300deg));\n  --violet-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 300deg));\n  --violet-500: oklch(56% 0.24 300deg);\n  --violet-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 300deg));\n  --violet-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 300deg));\n  --violet-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 300deg));\n  --violet-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 300deg));\n  --violet-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 300deg));\n  --violet-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 300deg));\n  --purple-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 320deg));\n  --purple-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 320deg));\n  --purple-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 320deg));\n  --purple-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 320deg));\n  --purple-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 320deg));\n  --purple-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 320deg));\n  --purple-500: oklch(56% 0.24 320deg);\n  --purple-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 320deg));\n  --purple-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 320deg));\n  --purple-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 320deg));\n  --purple-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 320deg));\n  --purple-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 320deg));\n  --purple-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 320deg));\n  --pink-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 4deg));\n  --pink-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 4deg));\n  --pink-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 4deg));\n  --pink-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 4deg));\n  --pink-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 4deg));\n  --pink-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 4deg));\n  --pink-500: oklch(60% 0.22 4deg);\n  --pink-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 4deg));\n  --pink-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 4deg));\n  --pink-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 4deg));\n  --pink-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 4deg));\n  --pink-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 4deg));\n  --pink-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 4deg));\n  --red-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 20deg));\n  --red-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 20deg));\n  --red-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 20deg));\n  --red-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 20deg));\n  --red-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 20deg));\n  --red-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 20deg));\n  --red-500: oklch(60% 0.22 20deg);\n  --red-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 20deg));\n  --red-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 20deg));\n  --red-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 20deg));\n  --red-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 20deg));\n  --red-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 20deg));\n  --red-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 20deg));\n  --orange-025: color-mix(in lab, var(--white) 94%, oklch(70% 0.22 52deg));\n  --orange-050: color-mix(in lab, var(--white) 90%, oklch(70% 0.22 52deg));\n  --orange-100: color-mix(in lab, var(--white) 80%, oklch(70% 0.22 52deg));\n  --orange-200: color-mix(in lab, var(--white) 60%, oklch(70% 0.22 52deg));\n  --orange-300: color-mix(in lab, var(--white) 40%, oklch(70% 0.22 52deg));\n  --orange-400: color-mix(in lab, var(--white) 20%, oklch(70% 0.22 52deg));\n  --orange-500: oklch(70% 0.22 52deg);\n  --orange-600: color-mix(in lab, var(--black) 16%, oklch(70% 0.22 52deg));\n  --orange-700: color-mix(in lab, var(--black) 32%, oklch(70% 0.22 52deg));\n  --orange-800: color-mix(in lab, var(--black) 48%, oklch(70% 0.22 52deg));\n  --orange-900: color-mix(in lab, var(--black) 64%, oklch(70% 0.22 52deg));\n  --orange-950: color-mix(in lab, var(--black) 76%, oklch(70% 0.22 52deg));\n  --orange-975: color-mix(in lab, var(--black) 88%, oklch(70% 0.22 52deg));\n  --amber-025: color-mix(in lab, var(--white) 94%, oklch(79% 0.2 78deg));\n  --amber-050: color-mix(in lab, var(--white) 90%, oklch(79% 0.2 78deg));\n  --amber-100: color-mix(in lab, var(--white) 80%, oklch(79% 0.2 78deg));\n  --amber-200: color-mix(in lab, var(--white) 60%, oklch(79% 0.2 78deg));\n  --amber-300: color-mix(in lab, var(--white) 40%, oklch(79% 0.2 78deg));\n  --amber-400: color-mix(in lab, var(--white) 20%, oklch(79% 0.2 78deg));\n  --amber-500: oklch(79% 0.2 78deg);\n  --amber-600: color-mix(in lab, var(--black) 16%, oklch(79% 0.2 78deg));\n  --amber-700: color-mix(in lab, var(--black) 32%, oklch(79% 0.2 78deg));\n  --amber-800: color-mix(in lab, var(--black) 48%, oklch(79% 0.2 78deg));\n  --amber-900: color-mix(in lab, var(--black) 64%, oklch(79% 0.2 78deg));\n  --amber-950: color-mix(in lab, var(--black) 76%, oklch(79% 0.2 78deg));\n  --amber-975: color-mix(in lab, var(--black) 88%, oklch(79% 0.2 78deg));\n  --yellow-025: color-mix(in lab, var(--white) 94%, oklch(88% 0.24 88deg));\n  --yellow-050: color-mix(in lab, var(--white) 90%, oklch(88% 0.24 88deg));\n  --yellow-100: color-mix(in lab, var(--white) 80%, oklch(88% 0.24 88deg));\n  --yellow-200: color-mix(in lab, var(--white) 60%, oklch(88% 0.24 88deg));\n  --yellow-300: color-mix(in lab, var(--white) 40%, oklch(88% 0.24 88deg));\n  --yellow-400: color-mix(in lab, var(--white) 20%, oklch(88% 0.24 88deg));\n  --yellow-500: oklch(88% 0.24 88deg);\n  --yellow-600: color-mix(in lab, var(--black) 16%, oklch(88% 0.24 88deg));\n  --yellow-700: color-mix(in lab, var(--black) 32%, oklch(88% 0.24 88deg));\n  --yellow-800: color-mix(in lab, var(--black) 48%, oklch(88% 0.24 88deg));\n  --yellow-900: color-mix(in lab, var(--black) 64%, oklch(88% 0.24 88deg));\n  --yellow-950: color-mix(in lab, var(--black) 76%, oklch(88% 0.24 88deg));\n  --yellow-975: color-mix(in lab, var(--black) 88%, oklch(88% 0.24 88deg));\n  --lime-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.24 135deg));\n  --lime-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.24 135deg));\n  --lime-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.24 135deg));\n  --lime-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.24 135deg));\n  --lime-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.24 135deg));\n  --lime-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.24 135deg));\n  --lime-500: oklch(65% 0.24 135deg);\n  --lime-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.24 135deg));\n  --lime-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.24 135deg));\n  --lime-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.24 135deg));\n  --lime-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.24 135deg));\n  --lime-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.24 135deg));\n  --lime-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.24 135deg));\n  --green-025: color-mix(in lab, var(--white) 94%, oklch(64% 0.22 160deg));\n  --green-050: color-mix(in lab, var(--white) 90%, oklch(64% 0.22 160deg));\n  --green-100: color-mix(in lab, var(--white) 80%, oklch(64% 0.22 160deg));\n  --green-200: color-mix(in lab, var(--white) 60%, oklch(64% 0.22 160deg));\n  --green-300: color-mix(in lab, var(--white) 40%, oklch(64% 0.22 160deg));\n  --green-400: color-mix(in lab, var(--white) 20%, oklch(64% 0.22 160deg));\n  --green-500: oklch(64% 0.22 160deg);\n  --green-600: color-mix(in lab, var(--black) 16%, oklch(64% 0.22 160deg));\n  --green-700: color-mix(in lab, var(--black) 32%, oklch(64% 0.22 160deg));\n  --green-800: color-mix(in lab, var(--black) 48%, oklch(64% 0.22 160deg));\n  --green-900: color-mix(in lab, var(--black) 64%, oklch(64% 0.22 160deg));\n  --green-950: color-mix(in lab, var(--black) 76%, oklch(64% 0.22 160deg));\n  --green-975: color-mix(in lab, var(--black) 88%, oklch(64% 0.22 160deg));\n  --teal-025: color-mix(in lab, var(--white) 94%, oklch(68% 0.22 190deg));\n  --teal-050: color-mix(in lab, var(--white) 90%, oklch(68% 0.22 190deg));\n  --teal-100: color-mix(in lab, var(--white) 80%, oklch(68% 0.22 190deg));\n  --teal-200: color-mix(in lab, var(--white) 60%, oklch(68% 0.22 190deg));\n  --teal-300: color-mix(in lab, var(--white) 40%, oklch(68% 0.22 190deg));\n  --teal-400: color-mix(in lab, var(--white) 20%, oklch(68% 0.22 190deg));\n  --teal-500: oklch(68% 0.22 190deg);\n  --teal-600: color-mix(in lab, var(--black) 16%, oklch(68% 0.22 190deg));\n  --teal-700: color-mix(in lab, var(--black) 32%, oklch(68% 0.22 190deg));\n  --teal-800: color-mix(in lab, var(--black) 48%, oklch(68% 0.22 190deg));\n  --teal-900: color-mix(in lab, var(--black) 64%, oklch(68% 0.22 190deg));\n  --teal-950: color-mix(in lab, var(--black) 76%, oklch(68% 0.22 190deg));\n  --teal-975: color-mix(in lab, var(--black) 88%, oklch(68% 0.22 190deg));\n  --cyan-025: color-mix(in lab, var(--white) 94%, oklch(69% 0.22 220deg));\n  --cyan-050: color-mix(in lab, var(--white) 90%, oklch(69% 0.22 220deg));\n  --cyan-100: color-mix(in lab, var(--white) 80%, oklch(69% 0.22 220deg));\n  --cyan-200: color-mix(in lab, var(--white) 60%, oklch(69% 0.22 220deg));\n  --cyan-300: color-mix(in lab, var(--white) 40%, oklch(69% 0.22 220deg));\n  --cyan-400: color-mix(in lab, var(--white) 20%, oklch(69% 0.22 220deg));\n  --cyan-500: oklch(69% 0.22 220deg);\n  --cyan-600: color-mix(in lab, var(--black) 16%, oklch(69% 0.22 220deg));\n  --cyan-700: color-mix(in lab, var(--black) 32%, oklch(69% 0.22 220deg));\n  --cyan-800: color-mix(in lab, var(--black) 48%, oklch(69% 0.22 220deg));\n  --cyan-900: color-mix(in lab, var(--black) 64%, oklch(69% 0.22 220deg));\n  --cyan-950: color-mix(in lab, var(--black) 76%, oklch(69% 0.22 220deg));\n  --cyan-975: color-mix(in lab, var(--black) 88%, oklch(69% 0.22 220deg));\n  --brown-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.12 54deg));\n  --brown-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.12 54deg));\n  --brown-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.12 54deg));\n  --brown-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.12 54deg));\n  --brown-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.12 54deg));\n  --brown-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.12 54deg));\n  --brown-500: oklch(60% 0.12 54deg);\n  --brown-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.12 54deg));\n  --brown-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.12 54deg));\n  --brown-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.12 54deg));\n  --brown-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.12 54deg));\n  --brown-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.12 54deg));\n  --brown-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.12 54deg));\n  --gray-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.02 245deg));\n  --gray-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.02 245deg));\n  --gray-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.02 245deg));\n  --gray-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.02 245deg));\n  --gray-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.02 245deg));\n  --gray-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.02 245deg));\n  --gray-500: oklch(60% 0.02 245deg);\n  --gray-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.02 245deg));\n  --gray-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.02 245deg));\n  --gray-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.02 245deg));\n  --gray-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.02 245deg));\n  --gray-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.02 245deg));\n  --gray-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.02 245deg));\n  --pewter-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.01 290deg));\n  --pewter-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.01 290deg));\n  --pewter-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.01 290deg));\n  --pewter-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.01 290deg));\n  --pewter-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.01 290deg));\n  --pewter-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.01 290deg));\n  --pewter-500: oklch(65% 0.01 290deg);\n  --pewter-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.01 290deg));\n  --pewter-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.01 290deg));\n  --pewter-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.01 290deg));\n  --pewter-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.01 290deg));\n  --pewter-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.01 290deg));\n  --pewter-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.01 290deg));\n}\n\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n:root {\n  --black: #000;\n  --white: #fff;\n  --gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent));\n  --font-weight-lighter: lighter;\n  --font-weight-light: 300;\n  --font-weight-normal: 400;\n  --font-weight-medium: 500;\n  --font-weight-semibold: 600;\n  --font-weight-bold: 700;\n  --font-weight-bolder: bolder;\n  --body-font-family: system-ui;\n  --body-font-size: var(--font-size-base);\n  --body-font-weight: 400;\n  --body-line-height: 1.5;\n  --heading-color: inherit;\n  --hr-border-color: var(--border-color);\n  --link-color: light-dark(var(--primary-base), var(--primary-text));\n  --link-decoration: underline;\n  --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000);\n  --font-mono: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;\n  --code-font-size: 95%;\n  --code-color: var(--fg-2);\n  --border-width: 1px;\n  --border-style: solid;\n  --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700));\n  --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent);\n  --border-radius: 0.5rem;\n  --border-radius-xs: 0.375rem;\n  --border-radius-sm: 0.5rem;\n  --border-radius-lg: 0.75rem;\n  --border-radius-xl: 1rem;\n  --border-radius-2xl: 2rem;\n  --border-radius-pill: 50rem;\n  --box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  --box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n  --box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n  --box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n  --spacer: 1rem;\n  --focus-ring-width: 3px;\n  --focus-ring-offset: 1px;\n  --focus-ring-color: var(--primary-focus-ring);\n  --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color);\n  --control-checked-bg: var(--primary-base);\n  --control-checked-border-color: var(--control-checked-bg);\n  --control-active-bg: var(--primary-base);\n  --control-active-border-color: var(--control-active-bg);\n  --control-disabled-bg: var(--bg-3);\n  --control-disabled-opacity: 0.65;\n  --btn-input-fg: var(--fg-body);\n  --btn-input-bg: var(--bg-body);\n  --btn-input-min-height: 2.375rem;\n  --btn-input-padding-y: 0.375rem;\n  --btn-input-padding-x: 0.75rem;\n  --btn-input-font-size: var(--font-size-base);\n  --btn-input-line-height: var(--line-height-base);\n  --btn-input-border-radius: var(--border-radius);\n  --btn-input-xs-min-height: 1.5rem;\n  --btn-input-xs-padding-y: 0.125rem;\n  --btn-input-xs-padding-x: 0.5rem;\n  --btn-input-xs-font-size: var(--font-size-xs);\n  --btn-input-xs-line-height: 1.125;\n  --btn-input-xs-border-radius: var(--border-radius-xs);\n  --btn-input-sm-min-height: 2rem;\n  --btn-input-sm-padding-y: 0.25rem;\n  --btn-input-sm-padding-x: 0.625rem;\n  --btn-input-sm-font-size: var(--font-size-sm);\n  --btn-input-sm-line-height: var(--line-height-sm);\n  --btn-input-sm-border-radius: var(--border-radius-sm);\n  --btn-input-lg-min-height: 2.75rem;\n  --btn-input-lg-padding-y: 0.5rem;\n  --btn-input-lg-padding-x: 1rem;\n  --btn-input-lg-font-size: var(--font-size-md);\n  --btn-input-lg-line-height: var(--line-height-md);\n  --btn-input-lg-border-radius: var(--border-radius-lg);\n  --form-valid-color: var(--success-text);\n  --form-valid-border-color: var(--success-text);\n  --form-invalid-color: var(--danger-text);\n  --form-invalid-border-color: var(--danger-text);\n  --font-size-xs: 0.75rem;\n  --line-height-xs: 1.25;\n  --font-size-sm: 0.875rem;\n  --line-height-sm: 1.5;\n  --font-size-md: 1rem;\n  --line-height-md: 1.5;\n  --font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  --line-height-lg: 1.5;\n  --font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  --line-height-xl: 1.4285714286;\n  --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  --line-height-2xl: 1.3333333333;\n  --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  --line-height-3xl: 1.2;\n  --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  --line-height-4xl: 1.1;\n  --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);\n  --line-height-5xl: 1.1;\n  --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  --line-height-6xl: 1;\n  --primary-base: var(--blue-500);\n  --primary-text: light-dark(var(--blue-600), var(--blue-400));\n  --primary-text-emphasis: light-dark(var(--blue-800), var(--blue-200));\n  --primary-bg: var(--blue-500);\n  --primary-bg-subtle: light-dark(var(--blue-100), var(--blue-900));\n  --primary-bg-muted: light-dark(var(--blue-200), var(--blue-800));\n  --primary-border: light-dark(var(--blue-300), var(--blue-600));\n  --primary-focus-ring: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  --primary-contrast: var(--white);\n  --accent-base: var(--indigo-500);\n  --accent-text: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  --accent-text-emphasis: light-dark(var(--indigo-800), var(--indigo-300));\n  --accent-bg: var(--indigo-500);\n  --accent-bg-subtle: light-dark(var(--indigo-100), var(--indigo-900));\n  --accent-bg-muted: light-dark(var(--indigo-200), var(--indigo-800));\n  --accent-border: light-dark(var(--indigo-300), var(--indigo-600));\n  --accent-focus-ring: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  --accent-contrast: var(--white);\n  --success-base: var(--green-500);\n  --success-text: light-dark(var(--green-600), var(--green-400));\n  --success-text-emphasis: light-dark(var(--green-800), var(--green-300));\n  --success-bg: var(--green-500);\n  --success-bg-subtle: light-dark(var(--green-100), var(--green-900));\n  --success-bg-muted: light-dark(var(--green-200), var(--green-800));\n  --success-border: light-dark(var(--green-300), var(--green-600));\n  --success-focus-ring: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  --success-contrast: var(--white);\n  --danger-base: var(--red-500);\n  --danger-text: light-dark(var(--red-600), var(--red-400));\n  --danger-text-emphasis: light-dark(var(--red-800), var(--red-300));\n  --danger-bg: var(--red-500);\n  --danger-bg-subtle: light-dark(var(--red-100), var(--red-900));\n  --danger-bg-muted: light-dark(var(--red-200), var(--red-800));\n  --danger-border: light-dark(var(--red-300), var(--red-600));\n  --danger-focus-ring: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  --danger-contrast: var(--white);\n  --warning-base: var(--yellow-500);\n  --warning-text: light-dark(var(--yellow-700), var(--yellow-400));\n  --warning-text-emphasis: light-dark(var(--yellow-800), var(--yellow-300));\n  --warning-bg: var(--yellow-500);\n  --warning-bg-subtle: light-dark(var(--yellow-100), var(--yellow-900));\n  --warning-bg-muted: light-dark(var(--yellow-200), var(--yellow-800));\n  --warning-border: light-dark(var(--yellow-300), var(--yellow-600));\n  --warning-focus-ring: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  --warning-contrast: var(--gray-900);\n  --info-base: var(--cyan-500);\n  --info-text: light-dark(var(--cyan-600), var(--cyan-400));\n  --info-text-emphasis: light-dark(var(--cyan-800), var(--cyan-300));\n  --info-bg: var(--cyan-500);\n  --info-bg-subtle: light-dark(var(--cyan-100), var(--cyan-900));\n  --info-bg-muted: light-dark(var(--cyan-200), var(--cyan-800));\n  --info-border: light-dark(var(--cyan-300), var(--cyan-600));\n  --info-focus-ring: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  --info-contrast: var(--gray-900);\n  --inverse-base: var(--gray-900);\n  --inverse-text: light-dark(var(--gray-900), var(--gray-200));\n  --inverse-text-emphasis: light-dark(var(--gray-975), var(--white));\n  --inverse-bg: light-dark(var(--gray-900), var(--gray-025));\n  --inverse-bg-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --inverse-bg-muted: light-dark(var(--gray-200), var(--gray-300));\n  --inverse-border: light-dark(var(--gray-400), var(--gray-100));\n  --inverse-focus-ring: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  --inverse-contrast: light-dark(var(--white), var(--gray-900));\n  --secondary-base: var(--gray-200);\n  --secondary-text: light-dark(var(--gray-600), var(--gray-400));\n  --secondary-text-emphasis: light-dark(var(--gray-800), var(--gray-200));\n  --secondary-bg: light-dark(var(--gray-100), var(--gray-600));\n  --secondary-bg-subtle: light-dark(var(--gray-050), var(--gray-800));\n  --secondary-bg-muted: light-dark(var(--gray-100), var(--gray-700));\n  --secondary-border: light-dark(var(--gray-300), var(--gray-600));\n  --secondary-focus-ring: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  --secondary-contrast: light-dark(var(--gray-900), var(--white));\n  --bg-body: light-dark(var(--white), var(--gray-975));\n  --bg-1: light-dark(var(--gray-025), var(--gray-950));\n  --bg-2: light-dark(var(--gray-050), var(--gray-900));\n  --bg-3: light-dark(var(--gray-100), var(--gray-800));\n  --bg-4: light-dark(var(--gray-200), var(--gray-700));\n  --bg-white: var(--white);\n  --bg-black: var(--black);\n  --bg-transparent: transparent;\n  --bg-inherit: inherit;\n  --fg-body: light-dark(var(--gray-900), var(--gray-050));\n  --fg-1: light-dark(var(--gray-800), var(--gray-200));\n  --fg-2: light-dark(var(--gray-700), var(--gray-300));\n  --fg-3: light-dark(var(--gray-600), var(--gray-500));\n  --fg-4: light-dark(var(--gray-500), var(--gray-600));\n  --fg-white: var(--white);\n  --fg-black: var(--black);\n  --fg-inherit: inherit;\n  --border-bg: var(--bg-body);\n  --border-body: light-dark(var(--gray-300), var(--gray-800));\n  --border-muted: light-dark(var(--gray-200), var(--gray-800));\n  --border-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --border-emphasized: light-dark(var(--gray-400), var(--gray-600));\n  --border-white: var(--white);\n  --border-black: var(--black);\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 1024px;\n  --breakpoint-xl: 1280px;\n  --breakpoint-2xl: 1536px;\n  color-scheme: light dark;\n}\n\n[data-bs-theme=dark] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=light] {\n  color-scheme: light;\n}\n\n@layer reboot {\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n  :root {\n    accent-color: var(--primary-base);\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    :root {\n      scroll-behavior: smooth;\n    }\n  }\n  body {\n    margin: 0;\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body);\n    -webkit-text-size-adjust: 100%;\n    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  }\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n  h6,\n  .h6, h5,\n  .h5, h4,\n  .h4, h3,\n  .h3, h2,\n  .h2, h1,\n  .h1 {\n    margin-top: 0;\n    margin-bottom: 0.5rem;\n    font-weight: 500;\n    line-height: 1.2;\n    color: var(--heading-color);\n  }\n  h1,\n  .h1 {\n    font-size: var(--font-size-3xl);\n  }\n  h2,\n  .h2 {\n    font-size: var(--font-size-2xl);\n  }\n  h3,\n  .h3 {\n    font-size: var(--font-size-xl);\n  }\n  h4,\n  .h4 {\n    font-size: var(--font-size-lg);\n  }\n  h5,\n  .h5 {\n    font-size: var(--font-size-md);\n  }\n  h6,\n  .h6 {\n    font-size: var(--font-size-sm);\n  }\n  p {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  abbr[title] {\n    text-decoration: underline dotted;\n    cursor: help;\n    text-decoration-skip-ink: none;\n  }\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n  dt {\n    font-weight: 700;\n  }\n  dd {\n    margin-inline-start: 0;\n    margin-bottom: 0.5rem;\n  }\n  blockquote {\n    margin: 0 0 1rem;\n  }\n  blockquote > * {\n    margin-block: 0;\n  }\n  b,\n  strong {\n    font-weight: bolder;\n  }\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n  mark,\n  .mark {\n    --mark-padding: 0.1875em;\n    --mark-color: var(--fg-body);\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900));\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, 0.75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n  sub {\n    bottom: -0.25em;\n  }\n  sup {\n    top: -0.5em;\n  }\n  a {\n    color: var(--theme-text, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: 0.2em;\n  }\n  a:hover {\n    color: var(--theme-text-emphasis, var(--link-hover-color));\n    text-decoration: var(--link-hover-decoration, var(--link-decoration));\n  }\n  a:not([href]):not([class]), a:not([href]):not([class]):hover {\n    color: inherit;\n    text-decoration: none;\n  }\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em;\n  }\n  pre {\n    display: block;\n    margin-top: 0;\n    margin-bottom: 1rem;\n    overflow: auto;\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n  }\n  pre code {\n    font-size: inherit;\n    color: inherit;\n    word-break: normal;\n  }\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n  }\n  a > code {\n    color: inherit;\n  }\n  kbd {\n    --kbd-padding-y: 0.125rem;\n    --kbd-padding-x: 0.25rem;\n    --kbd-font-size: var(--font-size-xs);\n    --kbd-color: var(--bg-body);\n    --kbd-bg: var(--fg-2);\n    --kbd-border-radius: var(--border-radius-sm);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    border-radius: var(--kbd-border-radius);\n  }\n  kbd kbd {\n    padding: 0;\n    font-size: 1em;\n    font-weight: inherit;\n  }\n  figure {\n    margin: 0 0 1rem;\n  }\n  img,\n  svg {\n    vertical-align: middle;\n  }\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n  caption {\n    padding-block: 0.5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n  th {\n    text-align: inherit;\n    text-align: -webkit-match-parent;\n  }\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n  label {\n    display: inline-block;\n  }\n  button {\n    border-radius: 0;\n  }\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0;\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n  button,\n  select {\n    text-transform: none;\n  }\n  [role=button] {\n    cursor: pointer;\n  }\n  select {\n    word-wrap: normal;\n  }\n  select:disabled {\n    opacity: 1;\n  }\n  [list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n  button,\n  [type=button],\n  [type=reset],\n  [type=submit] {\n    -webkit-appearance: button;\n  }\n  button:not(:disabled),\n  [type=button]:not(:disabled),\n  [type=reset]:not(:disabled),\n  [type=submit]:not(:disabled) {\n    cursor: pointer;\n  }\n  ::-moz-focus-inner {\n    padding: 0;\n    border-style: none;\n  }\n  textarea {\n    resize: vertical;\n  }\n  fieldset {\n    min-width: 0;\n    padding: 0;\n    margin: 0;\n    border: 0;\n  }\n  legend {\n    float: inline-start;\n    width: 100%;\n    padding: 0;\n    margin-bottom: 0.5rem;\n    font-size: 1.5rem;\n    line-height: inherit;\n  }\n  legend + * {\n    clear: inline-start;\n  }\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-ampm-field,\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n  ::-webkit-inner-spin-button {\n    height: auto;\n  }\n  [type=search] {\n    -webkit-appearance: textfield;\n    outline-offset: -2px;\n  }\n  [type=search]::-webkit-search-cancel-button {\n    cursor: pointer;\n    filter: grayscale(1);\n  }\n  [type=tel],\n  [type=url],\n  [type=email],\n  [type=number] {\n    direction: ltr;\n  }\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n  ::file-selector-button {\n    font: inherit;\n    -webkit-appearance: button;\n  }\n  output {\n    display: inline-block;\n  }\n  iframe {\n    border: 0;\n  }\n  summary {\n    display: list-item;\n    cursor: pointer;\n  }\n  progress {\n    vertical-align: baseline;\n  }\n  [hidden] {\n    display: none !important;\n  }\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */\n","$file: \"\" !default;\n\n/*!\n  * Bootstrap #{$file} v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n","// stylelint-disable hue-degree-notation, @stylistic/number-leading-zero\n\n@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// Easily convert colors to oklch() with https://oklch.com/\n\n$white: #fff !default;\n$black: #000 !default;\n\n// scss-docs-start colors-list\n$blue: oklch(60% 0.24 240) !default;\n$indigo: oklch(56% 0.26 288) !default;\n$violet: oklch(56% 0.24 300) !default;\n$purple: oklch(56% 0.24 320) !default;\n$pink: oklch(60% 0.22 4) !default;\n$red: oklch(60% 0.22 20) !default;\n$orange: oklch(70% 0.22 52) !default;\n$amber: oklch(79% 0.2 78) !default;\n$yellow: oklch(88% 0.24 88) !default;\n$lime: oklch(65% 0.24 135) !default;\n$green: oklch(64% 0.22 160) !default;\n$teal: oklch(68% 0.22 190) !default;\n$cyan: oklch(69% 0.22 220) !default;\n$brown: oklch(60% 0.12 54) !default;\n$gray: oklch(60% 0.02 245) !default;\n$pewter: oklch(65% 0.01 290) !default;\n// scss-docs-end colors-list\n\n// scss-docs-start colors-map\n$colors: () !default;\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$colors: defaults(\n  (\n    \"blue\": $blue,\n    \"indigo\": $indigo,\n    \"violet\": $violet,\n    \"purple\": $purple,\n    \"pink\": $pink,\n    \"red\": $red,\n    \"orange\": $orange,\n    \"amber\": $amber,\n    \"yellow\": $yellow,\n    \"lime\": $lime,\n    \"green\": $green,\n    \"teal\": $teal,\n    \"cyan\": $cyan,\n    \"brown\": $brown,\n    \"gray\": $gray,\n    \"pewter\": $pewter,\n  ),\n  $colors\n);\n// scss-docs-end colors-map\n\n// scss-docs-start color-mix-options\n$color-mix-space: lab !default;\n$tint-color: var(--white) !default;\n$shade-color: var(--black) !default;\n\n$color-tints: (\n  \"025\": 94%,\n  \"050\": 90%,\n  \"100\": 80%,\n  \"200\": 60%,\n  \"300\": 40%,\n  \"400\": 20%,\n) !default;\n\n$color-shades: (\n  \"600\": 16%,\n  \"700\": 32%,\n  \"800\": 48%,\n  \"900\": 64%,\n  \"950\": 76%,\n  \"975\": 88%,\n) !default;\n// scss-docs-end color-mix-options\n\n// scss-docs-start color-tokens\n$color-tokens: () !default;\n\n$-color-defaults: () !default;\n@each $color, $value in $colors {\n  @each $stop, $percent in $color-tints {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$tint-color} #{$percent}, #{$value}));\n  }\n  $-color-defaults: map.set($-color-defaults, --#{$color}-500, #{$value});\n  @each $stop, $percent in $color-shades {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$shade-color} #{$percent}, #{$value}));\n  }\n}\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$color-tokens: defaults($-color-defaults, $color-tokens);\n// scss-docs-end color-tokens\n\n:root {\n  @include tokens($color-tokens);\n}\n","// Mixin to output tokens as CSS custom properties\n\n// scss-docs-start mixin-tokens\n@mixin tokens($map) {\n  @each $prop, $value in $map {\n    #{$prop}: #{$value};\n  }\n}\n// scss-docs-end mixin-tokens\n","@use \"sass:map\";\n@use \"colors\" as *;\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"theme\" as *;\n@use \"mixins/tokens\" as *;\n@use \"forms/form-variables\" as *;\n\n// mdo-do: do we need theme?\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n\n$root-tokens: () !default;\n\n// scss-docs-start root-tokens\n// stylelint-disable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: defaults(\n  (\n    --black: #{$black},\n    --white: #{$white},\n\n    --gradient: #{$gradient},\n\n    // scss-docs-start root-font-weight-variables\n    --font-weight-lighter: lighter,\n    --font-weight-light: 300,\n    --font-weight-normal: 400,\n    --font-weight-medium: 500,\n    --font-weight-semibold: 600,\n    --font-weight-bold: 700,\n    --font-weight-bolder: bolder,\n    // scss-docs-end root-font-weight-variables\n\n    // scss-docs-start root-body-variables\n    --body-font-family: system-ui,\n    --body-font-size: var(--font-size-base),\n    --body-font-weight: #{$font-weight-base},\n    --body-line-height: #{$line-height-base},\n\n    --heading-color: #{$headings-color},\n\n    --hr-border-color: var(--border-color),\n\n    --link-color: light-dark(var(--primary-base), var(--primary-text)),\n    --link-decoration: #{$link-decoration},\n    --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000),\n\n    --font-mono: \"SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace\",\n    --code-font-size: 95%,\n    --code-color: var(--fg-2),\n\n    // scss-docs-start root-border-var\n    --border-width: #{$border-width},\n    --border-style: #{$border-style},\n    --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700)),\n    --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    // scss-docs-end root-border-var\n\n    // scss-docs-start root-border-radius-var\n    --border-radius: .5rem,\n    --border-radius-xs: .375rem,\n    --border-radius-sm: .5rem,\n    --border-radius-lg: .75rem,\n    --border-radius-xl: 1rem,\n    --border-radius-2xl: 2rem,\n    --border-radius-pill: 50rem,\n    // scss-docs-end root-border-radius-var\n\n    // scss-docs-start root-box-shadow-variables\n    --box-shadow: 0 .5rem 1rem rgb(0 0 0 / 15%),\n    --box-shadow-sm: 0 .125rem .25rem rgb(0 0 0 / 7.5%),\n    --box-shadow-lg: 0 1rem 3rem rgb(0 0 0 / 17.5%),\n    --box-shadow-inset: inset 0 1px 2px rgb(0 0 0 / 7.5%),\n    // scss-docs-end root-box-shadow-variables\n\n    --spacer: 1rem,\n\n    // scss-docs-start root-focus-variables\n    --focus-ring-width: 3px,\n    --focus-ring-offset: 1px,\n    --focus-ring-color: var(--primary-focus-ring),\n    --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color),\n    // scss-docs-end root-focus-variables\n\n    // scss-docs-start root-form-variables\n    --control-checked-bg: var(--primary-base),\n    --control-checked-border-color: var(--control-checked-bg),\n    --control-active-bg: var(--primary-base),\n    --control-active-border-color: var(--control-active-bg),\n    --control-disabled-bg: var(--bg-3),\n    --control-disabled-opacity: .65,\n\n    --btn-input-fg: var(--fg-body),\n    --btn-input-bg: var(--bg-body),\n\n    --btn-input-min-height: 2.375rem,\n    --btn-input-padding-y: .375rem,\n    --btn-input-padding-x: .75rem,\n    --btn-input-font-size: var(--font-size-base),\n    --btn-input-line-height: var(--line-height-base),\n    --btn-input-border-radius: var(--border-radius),\n\n    --btn-input-xs-min-height: 1.5rem,\n    --btn-input-xs-padding-y: .125rem,\n    --btn-input-xs-padding-x: .5rem,\n    --btn-input-xs-font-size: var(--font-size-xs),\n    --btn-input-xs-line-height: 1.125,\n    --btn-input-xs-border-radius: var(--border-radius-xs),\n\n    --btn-input-sm-min-height: 2rem,\n    --btn-input-sm-padding-y: .25rem,\n    --btn-input-sm-padding-x: .625rem,\n    --btn-input-sm-font-size: var(--font-size-sm),\n    --btn-input-sm-line-height: var(--line-height-sm),\n    --btn-input-sm-border-radius: var(--border-radius-sm),\n\n    --btn-input-lg-min-height: 2.75rem,\n    --btn-input-lg-padding-y: .5rem,\n    --btn-input-lg-padding-x: 1rem,\n    --btn-input-lg-font-size: var(--font-size-md),\n    --btn-input-lg-line-height: var(--line-height-md),\n    --btn-input-lg-border-radius: var(--border-radius-lg),\n    // scss-docs-end root-form-variables\n\n    // scss-docs-start root-form-validation-variables\n    --form-valid-color: #{$form-valid-color},\n    --form-valid-border-color: #{$form-valid-border-color},\n    --form-invalid-color: #{$form-invalid-color},\n    --form-invalid-border-color: #{$form-invalid-border-color},\n    // scss-docs-end root-form-validation-variables\n  ),\n  $root-tokens\n);\n// stylelint-enable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// scss-docs-end root-tokens\n\n// scss-docs-start root-font-size-loop\n// Generate font-size and line-height tokens\n@each $name, $props in $font-sizes {\n  $root-tokens: map.set($root-tokens, --font-size-#{$name}, map.get($props, \"font-size\"));\n  $root-tokens: map.set($root-tokens, --line-height-#{$name}, map.get($props, \"line-height\"));\n}\n// scss-docs-end root-font-size-loop\n\n// scss-docs-start root-theme-tokens\n// Generate semantic theme colors\n@each $color-name, $color-map in $theme-colors {\n  @each $key, $value in $color-map {\n    $root-tokens: map.set($root-tokens, --#{$color-name}-#{$key}, $value);\n  }\n}\n\n// Generate background tokens\n@each $key, $value in $theme-bgs {\n  $root-tokens: map.set($root-tokens, --bg-#{$key}, $value);\n}\n\n// Generate foreground tokens\n@each $key, $value in $theme-fgs {\n  $root-tokens: map.set($root-tokens, --fg-#{$key}, $value);\n}\n\n// Generate border tokens\n@each $key, $value in $theme-borders {\n  $root-tokens: map.set($root-tokens, --border-#{$key}, $value);\n}\n// scss-docs-end root-theme-tokens\n\n// Generate breakpoint tokens\n@each $name, $value in $breakpoints {\n  $root-tokens: map.set($root-tokens, --breakpoint-#{$name}, $value);\n}\n\n:root {\n  @include tokens($root-tokens);\n\n  color-scheme: light dark;\n}\n\n[data-bs-theme=\"dark\"] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=\"light\"] {\n  color-scheme: light;\n}\n","@use \"../colors\" as *;\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n$reboot-kbd-tokens: () !default;\n$reboot-mark-tokens: () !default;\n\n// scss-docs-start reboot-kbd-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-kbd-tokens: defaults(\n  (\n    --kbd-padding-y: .125rem,\n    --kbd-padding-x: .25rem,\n    --kbd-font-size: var(--font-size-xs),\n    --kbd-color: var(--bg-body),\n    --kbd-bg: var(--fg-2),\n    --kbd-border-radius: var(--border-radius-sm),\n  ),\n  $reboot-kbd-tokens\n);\n// scss-docs-end reboot-kbd-tokens\n\n// scss-docs-start reboot-mark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-mark-tokens: defaults(\n  (\n    --mark-padding: .1875em,\n    --mark-color: var(--fg-body),\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900)),\n  ),\n  $reboot-mark-tokens\n);\n// scss-docs-end reboot-mark-tokens\n\n@layer reboot {\n  // Reboot\n  //\n  // Normalization of HTML elements, manually forked from Normalize.css to remove\n  // styles targeting irrelevant browsers while applying new styles.\n  //\n  // Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n  // Document\n  //\n  // Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n\n  // Root\n  //\n  // Ability to the value of the root font sizes, affecting the value of `rem`.\n  // null by default, thus nothing is generated.\n\n  :root {\n    // Assume browser default font-size of 16px, or a user's preference\n    accent-color: var(--primary-base);\n\n    @if $enable-smooth-scroll {\n      @media (prefers-reduced-motion: no-preference) {\n        scroll-behavior: smooth;\n      }\n    }\n  }\n\n  // Body\n  //\n  // 1. Remove the margin in all browsers.\n  // 2. As a best practice, apply a default `background-color`.\n  // 3. Prevent adjustments of font size after orientation changes in iOS.\n  // 4. Change the default tap highlight to be completely transparent in iOS.\n\n  // scss-docs-start reboot-body-rules\n  body {\n    margin: 0; // 1\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body); // 2\n    -webkit-text-size-adjust: 100%; // 3\n    -webkit-tap-highlight-color: rgba($black, 0); // 4\n  }\n  // scss-docs-end reboot-body-rules\n\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n\n  // Typography\n  //\n  // 1. Remove top margins from headings\n  //    By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n  //    margin for easier control within type scales as it avoids margin collapsing.\n\n  %heading {\n    margin-top: 0; // 1\n    margin-bottom: $headings-margin-bottom;\n    font-family: $headings-font-family;\n    font-style: $headings-font-style;\n    font-weight: $headings-font-weight;\n    line-height: $headings-line-height;\n    color: var(--heading-color);\n  }\n\n  h1,\n  .h1 {\n    @extend %heading;\n    font-size: var(--font-size-3xl);\n  }\n\n  h2,\n  .h2 {\n    @extend %heading;\n    font-size: var(--font-size-2xl);\n  }\n\n  h3,\n  .h3 {\n    @extend %heading;\n    font-size: var(--font-size-xl);\n  }\n\n  h4,\n  .h4 {\n    @extend %heading;\n    font-size: var(--font-size-lg);\n  }\n\n  h5,\n  .h5 {\n    @extend %heading;\n    font-size: var(--font-size-md);\n  }\n\n  h6,\n  .h6 {\n    @extend %heading;\n    font-size: var(--font-size-sm);\n  }\n\n  // Reset margins on paragraphs\n  //\n  // Similarly, the top margin on `<p>`s get reset. However, we also reset the\n  // bottom margin to use `rem` units instead of `em`.\n\n  p {\n    margin-top: 0;\n    margin-bottom: $paragraph-margin-bottom;\n  }\n\n  // Abbreviations\n  //\n  // 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n  // 2. Add explicit cursor to indicate changed behavior.\n  // 3. Prevent the text-decoration to be skipped.\n\n  abbr[title] {\n    text-decoration: underline dotted; // 1\n    cursor: help; // 2\n    text-decoration-skip-ink: none; // 3\n  }\n\n  // Address\n\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n\n  // Lists\n\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n\n  dt {\n    font-weight: $dt-font-weight;\n  }\n\n  // 1. Undo browser default\n\n  dd {\n    margin-inline-start: 0; // 1\n    margin-bottom: .5rem;\n  }\n\n  // Blockquote\n\n  blockquote {\n    margin: 0 0 1rem;\n    > * {\n      margin-block: 0;\n    }\n  }\n\n  // Strong\n  //\n  // Add the correct font weight in Chrome, Edge, and Safari\n\n  b,\n  strong {\n    font-weight: $font-weight-bolder;\n  }\n\n  // Small\n  //\n  // Add the correct font size in all browsers\n\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n\n  // Mark\n\n  mark,\n  .mark {\n    @include tokens($reboot-mark-tokens);\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n\n  // Sub and Sup\n  //\n  // Prevent `sub` and `sup` elements from affecting the line height in\n  // all browsers.\n\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, .75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n\n  sub { bottom: -.25em; }\n  sup { top: -.5em; }\n\n  // Links\n\n  a {\n    color: var(--theme-text, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: $link-underline-offset;\n\n    &:hover {\n      // --link-color: var(--link-hover-color);\n      // --link-decoration: var(--link-hover-decoration, var(--link-decoration));\n      color: var(--theme-text-emphasis, var(--link-hover-color));\n      text-decoration: var(--link-hover-decoration, var(--link-decoration));\n    }\n  }\n\n  // And undo these styles for placeholder links/named anchors (without href).\n  // It would be more straightforward to just use a[href] in previous block, but that\n  // causes specificity issues in many other styles that are too complex to fix.\n  // See https://github.com/twbs/bootstrap/issues/19402\n\n  a:not([href]):not([class]) {\n    &,\n    &:hover {\n      color: inherit;\n      text-decoration: none;\n    }\n  }\n\n  // Code\n\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n  }\n\n  // 1. Remove browser default top margin\n  // 2. Reset browser default of `1em` to use `rem`s\n  // 3. Don't allow content to break outside\n\n  pre {\n    display: block;\n    margin-top: 0; // 1\n    margin-bottom: 1rem; // 2\n    overflow: auto; // 3\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n\n    // Account for some code outputs that place code tags in pre tags\n    code {\n      font-size: inherit;\n      color: inherit;\n      word-break: normal;\n    }\n  }\n\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n\n    // Streamline the style when inside anchors to avoid broken underline and more\n    a > & {\n      color: inherit;\n    }\n  }\n\n  kbd {\n    @include tokens($reboot-kbd-tokens);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    @include border-radius(var(--kbd-border-radius));\n\n    kbd {\n      padding: 0;\n      font-size: 1em;\n      font-weight: inherit; // mdo-do: check if this is needed\n    }\n  }\n\n  // Figures\n  //\n  // Apply a consistent margin strategy (matches our type styles).\n\n  figure {\n    margin: 0 0 1rem;\n  }\n\n  // Images and content\n\n  img,\n  svg {\n    vertical-align: middle;\n  }\n\n  // Tables\n  //\n  // Prevent double borders\n\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n\n  caption {\n    // padding-top: $table-cell-padding-y;\n    // padding-bottom: $table-cell-padding-y;\n    // color: $table-caption-color;\n    padding-block: .5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n\n  // 1. Removes font-weight bold by inheriting\n  // 2. Matches default `<td>` alignment by inheriting `text-align`.\n  // 3. Fix alignment for Safari\n\n  th {\n    // font-weight: $table-th-font-weight; // 1 // mdo-do: it's null by default. maybe we remove?\n    text-align: inherit; // 2\n    text-align: -webkit-match-parent; // 3\n  }\n\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n\n  // Forms\n  //\n  // 1. Allow labels to use `margin` for spacing.\n\n  label {\n    display: inline-block; // 1\n  }\n\n  // Remove the default `border-radius` that macOS Chrome adds.\n  // See https://github.com/twbs/bootstrap/issues/24093\n\n  button {\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 0;\n  }\n\n  // Explicitly remove focus outline in Chromium when it shouldn't be\n  // visible (e.g. as result of mouse click or touch tap). It already\n  // should be doing this automatically, but seems to currently be\n  // confused and applies its very visible two-tone outline anyway.\n\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n\n  // 1. Remove the margin in Firefox and Safari\n\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0; // 1\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n\n  // Remove the inheritance of text transform in Firefox\n  button,\n  select {\n    text-transform: none;\n  }\n  // Set the cursor for non-`<button>` buttons\n  //\n  // Details at https://github.com/twbs/bootstrap/pull/30562\n  [role=\"button\"] {\n    cursor: pointer;\n  }\n\n  select {\n    // Remove the inheritance of word-wrap in Safari.\n    // See https://github.com/twbs/bootstrap/issues/24990\n    word-wrap: normal;\n\n    // Undo the opacity change from Chrome\n    &:disabled {\n      opacity: 1;\n    }\n  }\n\n  // Remove the dropdown arrow only from text type inputs built with datalists in Chrome.\n  // See https://stackoverflow.com/a/54997118\n\n  [list]:not([type=\"date\"]):not([type=\"datetime-local\"]):not([type=\"month\"]):not([type=\"week\"]):not([type=\"time\"])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n\n  // 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n  //    controls in Android 4.\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n  // 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\n  button,\n  [type=\"button\"], // 1\n  [type=\"reset\"],\n  [type=\"submit\"] {\n    -webkit-appearance: button; // 2\n\n    @if $enable-button-pointers {\n      &:not(:disabled) {\n        cursor: pointer; // 3\n      }\n    }\n  }\n\n  // Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\n\n  ::-moz-focus-inner {\n    padding: 0;\n    border-style: none;\n  }\n\n  // 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\n  textarea {\n    resize: vertical; // 1\n  }\n\n  // 1. Browsers set a default `min-width: min-content;` on fieldsets,\n  //    unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n  //    So we reset that to ensure fieldsets behave more like a standard block element.\n  //    See https://github.com/twbs/bootstrap/issues/12359\n  //    and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n  // 2. Reset the default outline behavior of fieldsets so they don't affect page layout.\n\n  fieldset {\n    min-width: 0; // 1\n    padding: 0; // 2\n    margin: 0; // 2\n    border: 0; // 2\n  }\n\n  // 1. By using `float: inline-start`, the legend will behave like a block element.\n  //    This way the border of a fieldset wraps around the legend if present.\n  // 2. Fix wrapping bug.\n  //    See https://github.com/twbs/bootstrap/issues/29712\n\n  legend {\n    float: inline-start; // 1\n    width: 100%;\n    padding: 0;\n    margin-bottom: $legend-margin-bottom;\n    font-size: $legend-font-size;\n    font-weight: $legend-font-weight;\n    line-height: inherit;\n\n    + * {\n      clear: inline-start; // 2\n    }\n  }\n\n  // Fix height of inputs with a type of datetime-local, date, month, week, or time\n  // See https://github.com/twbs/bootstrap/issues/18842\n\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-ampm-field,\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n\n  ::-webkit-inner-spin-button {\n    height: auto;\n  }\n\n  // 1. This overrides the extra rounded corners on search inputs in iOS so that our\n  //    `.form-control` class can properly style them. Note that this cannot simply\n  //    be added to `.form-control` as it's not specific enough. For details, see\n  //    https://github.com/twbs/bootstrap/issues/11586.\n  // 2. Correct the outline style in Safari.\n\n  [type=\"search\"] {\n    -webkit-appearance: textfield; // 1\n    outline-offset: -2px; // 2\n\n    // 3. Better affordance and consistent appearance for search cancel button\n    &::-webkit-search-cancel-button {\n      cursor: pointer;\n      filter: grayscale(1);\n    }\n  }\n\n  // A few input types should stay LTR regardless of document direction\n  // See https://rtlstyling.com/posts/rtl-styling#form-inputs\n\n  [type=\"tel\"],\n  [type=\"url\"],\n  [type=\"email\"],\n  [type=\"number\"] {\n    direction: ltr;\n  }\n\n  // Remove the inner padding in Chrome and Safari on macOS.\n\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n\n  // Remove padding around color pickers in webkit browsers\n\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n\n  // 1. Inherit font family and line height for file input buttons\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n\n  ::file-selector-button {\n    font: inherit; // 1\n    -webkit-appearance: button; // 2\n  }\n\n  // Correct element displays\n\n  output {\n    display: inline-block;\n  }\n\n  // Remove border from iframe\n\n  iframe {\n    border: 0;\n  }\n\n  // Summary\n  //\n  // 1. Add the correct display in all browsers\n\n  summary {\n    display: list-item; // 1\n    cursor: pointer;\n  }\n\n  // Progress\n  //\n  // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\n  progress {\n    vertical-align: baseline;\n  }\n\n  // Hidden attribute\n  //\n  // Always hide an element with the `hidden` HTML attribute.\n\n  [hidden] {\n    display: none !important;\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n\n// Configuration\n//\n// Variables and settings not related to theme, components, and more go here. It does include layout.\n\n// Merge overrides on top of defaults, stripping null entries.\n// Null values let users remove map keys via @use ... with().\n// Accepts a list as $defaults (converted to a map with `true` values).\n@function defaults($defaults, $overrides) {\n  @if meta.type-of($defaults) == \"list\" {\n    $map: ();\n    @each $key in $defaults {\n      $map: map.merge($map, ($key: true));\n    }\n    $defaults: $map;\n  }\n  $merged: map.merge($defaults, $overrides);\n  @each $key, $value in $merged {\n    @if $value == null {\n      $merged: map.remove($merged, $key);\n    }\n  }\n  @return $merged;\n}\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              true !default;\n$enable-gradients:            false !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        true !default;\n$enable-grid-classes:         true !default;\n$enable-container-classes:    true !default;\n$enable-cssgrid:              true !default;\n$enable-button-pointers:      true !default;\n$enable-validation-icons:     true !default;\n// $enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n\n$enable-dark-mode:            true !default;\n\n$color-mode-type:          \"media-query\" !default;\n$color-contrast-dark:      #000 !default;\n$color-contrast-light:     #fff !default;\n$min-contrast-ratio:         4.5 !default;\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n\n$negative-spacers: (\n  \"-1\": $spacer * -.25,\n  \"-2\": $spacer * -.5,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n$sizes: (\n  1: $spacer,\n  2: calc($spacer * 2),\n  3: calc($spacer * 3),\n  4: calc($spacer * 4),\n  5: calc($spacer * 5),\n  6: calc($spacer * 6),\n  7: calc($spacer * 7),\n  8: calc($spacer * 8),\n  9: calc($spacer * 9),\n  10: calc($spacer * 10),\n  11: calc($spacer * 11),\n  12: calc($spacer * 12),\n) !default;\n\n// Breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start breakpoints\n$breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 1024px,\n  xl: 1280px,\n  2xl: 1536px\n) !default;\n// scss-docs-end breakpoints\n\n// @include _assert-ascending($breakpoints, \"$breakpoints\");\n// @include _assert-starts-at-zero($breakpoints, \"$breakpoints\");\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-x: 1.5rem !default;\n$grid-gutter-y: 0 !default;\n$grid-row-columns: 6 !default;\n\n$gutters: $spacers !default;\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1200px,\n  2xl: 1440px\n) !default;\n// scss-docs-end container-max-widths\n\n$container-padding-x: $grid-gutter-x !default;\n\n$utilities: () !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent)) !default;\n// scss-docs-end variable-gradient\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Links\n//\n// Style anchor elements.\n\n$link-decoration:                         underline !default;\n$link-underline-offset:                   .2em !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap:               .375rem !default;\n$icon-link-underline-offset:  .25em !default;\n$icon-link-icon-size:         1em !default;\n$icon-link-icon-transition:   .2s ease-in-out transform !default;\n$icon-link-icon-transform:    translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n$border-style:                solid !default;\n$border-color:                color-mix(in oklch, var(--gray-100), var(--gray-200)) !default;\n// scss-docs-end border-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"auto\": auto,\n  \"1x1\": #{\"1 / 1\"},\n  \"4x3\": #{\"4 / 3\"},\n  \"16x9\": #{\"16 / 9\"},\n  \"21x9\": #{\"21 / 9\"}\n) !default;\n// scss-docs-end aspect-ratios\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-medium:          500 !default;\n$font-weight-semibold:        600 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$font-sizes: defaults(\n  (\n    \"xs\": (\n      \"font-size\": .75rem,\n      \"line-height\": 1.25\n    ),\n    \"sm\": (\n      \"font-size\": .875rem,\n      \"line-height\": 1.5\n    ),\n    \"md\": (\n      \"font-size\": 1rem,\n      \"line-height\": 1.5\n    ),\n    \"lg\": (\n      \"font-size\": clamp(1.25rem, 1rem + .625vw, 1.5rem),\n      \"line-height\": 1.5\n    ),\n    \"xl\": (\n      \"font-size\": clamp(1.5rem, 1.1rem + .75vw, 1.75rem),\n      \"line-height\": calc(2.5 / 1.75)\n    ),\n    \"2xl\": (\n      \"font-size\": clamp(1.75rem, 1.3rem + 1vw, 2rem),\n      \"line-height\": calc(3 / 2.25)\n    ),\n    \"3xl\": (\n      \"font-size\": clamp(2rem, 1.5rem + 1.875vw, 2.5rem),\n      \"line-height\": 1.2\n    ),\n    \"4xl\": (\n      \"font-size\": clamp(2.25rem, 1.75rem + 2.5vw, 3rem),\n      \"line-height\": 1.1\n    ),\n    \"5xl\": (\n      \"font-size\": clamp(3rem, 2rem + 5vw, 4rem),\n      \"line-height\": 1.1\n    ),\n    \"6xl\": (\n      \"font-size\": clamp(3.75rem, 2.5rem + 6.25vw, 5rem),\n      \"line-height\": 1\n    ),\n  ),\n  $font-sizes\n);\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start type-variables\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n// scss-docs-end type-variables\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-menu:                       1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-dialog:                     1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n$zindex-toast:                      1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n  n1: -1,\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n","@use \"sass:list\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n  $return: ();\n  @each $value in $radius {\n    @if meta.type-of($value) == number {\n      $return: list.append($return, math.max($value, 0));\n    } @else {\n      $return: list.append($return, $value);\n    }\n  }\n  @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: var(--border-radius), $fallback-border-radius: false) {\n  @if $enable-rounded {\n    border-radius: valid-radius($radius);\n  }\n  @else if $fallback-border-radius != false {\n    border-radius: $fallback-border-radius;\n  }\n}\n\n@mixin border-top-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n// scss-docs-end border-radius-mixins\n"],"names":[]}
\ No newline at end of file
index eb9b4f59b0b7e3133405b02ba112af39c5f402da..63189fdd63a091ba48d78e3d1fa17d3a6d2c1276 100644 (file)
   --bs-black: #000;
   --bs-white: #fff;
   --bs-gradient: linear-gradient(180deg, color-mix(var(--bs-white) 15%, transparent), color-mix(var(--bs-white) 0%, transparent));
-  --bs-font-size-base: 1rem;
-  --bs-font-size-xs: 0.75rem;
-  --bs-font-size-sm: 0.875rem;
-  --bs-font-size-md: 1rem;
-  --bs-font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);
-  --bs-font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);
-  --bs-font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);
-  --bs-font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);
-  --bs-font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);
-  --bs-font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);
-  --bs-font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);
-  --bs-line-height-xs: 1.25;
-  --bs-line-height-sm: 1.5;
-  --bs-line-height-md: 1.5;
-  --bs-line-height-lg: 1.5;
-  --bs-line-height-xl: 1.4285714286;
-  --bs-line-height-2xl: 1.3333333333;
-  --bs-line-height-3xl: 1.2;
-  --bs-line-height-4xl: 1.1;
-  --bs-line-height-5xl: 1.1;
-  --bs-line-height-6xl: 1;
   --bs-font-weight-lighter: lighter;
   --bs-font-weight-light: 300;
   --bs-font-weight-normal: 400;
   --bs-form-valid-border-color: var(--bs-success-text);
   --bs-form-invalid-color: var(--bs-danger-text);
   --bs-form-invalid-border-color: var(--bs-danger-text);
+  --bs-font-size-xs: 0.75rem;
+  --bs-line-height-xs: 1.25;
+  --bs-font-size-sm: 0.875rem;
+  --bs-line-height-sm: 1.5;
+  --bs-font-size-md: 1rem;
+  --bs-line-height-md: 1.5;
+  --bs-font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);
+  --bs-line-height-lg: 1.5;
+  --bs-font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);
+  --bs-line-height-xl: 1.4285714286;
+  --bs-font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);
+  --bs-line-height-2xl: 1.3333333333;
+  --bs-font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);
+  --bs-line-height-3xl: 1.2;
+  --bs-font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);
+  --bs-line-height-4xl: 1.1;
+  --bs-font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);
+  --bs-line-height-5xl: 1.1;
+  --bs-font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);
+  --bs-line-height-6xl: 1;
   --bs-primary-base: var(--bs-blue-500);
   --bs-primary-text: light-dark(var(--bs-blue-600), var(--bs-blue-400));
   --bs-primary-text-emphasis: light-dark(var(--bs-blue-800), var(--bs-blue-200));
   .place-items-stretch {
     place-items: stretch;
   }
+  .grid-cols-2 {
+    grid-template-columns: repeat(2, 1fr);
+  }
   .grid-cols-3 {
-    --bs-columns: 3;
+    grid-template-columns: repeat(3, 1fr);
   }
   .grid-cols-4 {
-    --bs-columns: 4;
+    grid-template-columns: repeat(4, 1fr);
   }
   .grid-cols-6 {
-    --bs-columns: 6;
+    grid-template-columns: repeat(6, 1fr);
   }
   .grid-cols-fill {
     grid-column: 1 / -1;
   .order-last {
     order: 6;
   }
-  .m--2 {
-    margin: -0.5rem;
-  }
-  .m--1 {
-    margin: -0.25rem;
-  }
   .m-0 {
     margin: 0;
   }
   .m-auto {
     margin: auto;
   }
-  .mx--2 {
-    margin-inline: -0.5rem;
-  }
-  .mx--1 {
-    margin-inline: -0.25rem;
-  }
   .mx-0 {
     margin-inline: 0;
   }
   .mx-auto {
     margin-inline: auto;
   }
-  .my--2 {
-    margin-block: -0.5rem;
-  }
-  .my--1 {
-    margin-block: -0.25rem;
-  }
   .my-0 {
     margin-block: 0;
   }
   .my-auto {
     margin-block: auto;
   }
-  .mt--2 {
-    margin-block-start: -0.5rem;
-  }
-  .mt--1 {
-    margin-block-start: -0.25rem;
-  }
   .mt-0 {
     margin-block-start: 0;
   }
   .mt-auto {
     margin-block-start: auto;
   }
-  .me--2 {
-    margin-inline-end: -0.5rem;
-  }
-  .me--1 {
-    margin-inline-end: -0.25rem;
-  }
   .me-0 {
     margin-inline-end: 0;
   }
   .me-auto {
     margin-inline-end: auto;
   }
-  .mb--2 {
-    margin-block-end: -0.5rem;
-  }
-  .mb--1 {
-    margin-block-end: -0.25rem;
-  }
   .mb-0 {
     margin-block-end: 0;
   }
   .mb-auto {
     margin-block-end: auto;
   }
-  .ms--2 {
-    margin-inline-start: -0.5rem;
-  }
-  .ms--1 {
-    margin-inline-start: -0.25rem;
-  }
   .ms-0 {
     margin-inline-start: 0;
   }
   .ms-5 {
     margin-inline-start: 3rem;
   }
-  .ms-auto {
-    margin-inline-start: auto;
+  .ms--1 {
+    margin-inline-start: -0.25rem;
   }
-  .p--2 {
-    padding: -0.5rem;
+  .ms--2 {
+    margin-inline-start: -0.5rem;
   }
-  .p--1 {
-    padding: -0.25rem;
+  .ms-auto {
+    margin-inline-start: auto;
   }
   .p-0 {
     padding: 0;
   .p-5 {
     padding: 3rem;
   }
-  .px--2 {
-    padding-inline: -0.5rem;
-  }
-  .px--1 {
-    padding-inline: -0.25rem;
-  }
   .px-0 {
     padding-inline: 0;
   }
   .px-5 {
     padding-inline: 3rem;
   }
-  .py--2 {
-    padding-block: -0.5rem;
-  }
-  .py--1 {
-    padding-block: -0.25rem;
-  }
   .py-0 {
     padding-block: 0;
   }
   .py-5 {
     padding-block: 3rem;
   }
-  .pt--2 {
-    padding-block-start: -0.5rem;
-  }
-  .pt--1 {
-    padding-block-start: -0.25rem;
-  }
   .pt-0 {
     padding-block-start: 0;
   }
   .pt-5 {
     padding-block-start: 3rem;
   }
-  .pe--2 {
-    padding-inline-end: -0.5rem;
-  }
-  .pe--1 {
-    padding-inline-end: -0.25rem;
-  }
   .pe-0 {
     padding-inline-end: 0;
   }
   .pe-5 {
     padding-inline-end: 3rem;
   }
-  .pb--2 {
-    padding-block-end: -0.5rem;
-  }
-  .pb--1 {
-    padding-block-end: -0.25rem;
-  }
   .pb-0 {
     padding-block-end: 0;
   }
   .pb-5 {
     padding-block-end: 3rem;
   }
-  .ps--2 {
-    padding-inline-start: -0.5rem;
-  }
-  .ps--1 {
-    padding-inline-start: -0.25rem;
-  }
   .ps-0 {
     padding-inline-start: 0;
   }
   .ps-5 {
     padding-inline-start: 3rem;
   }
-  .gap--2 {
-    gap: -0.5rem;
-  }
-  .gap--1 {
-    gap: -0.25rem;
-  }
   .gap-0 {
     gap: 0;
   }
   .gap-5 {
     gap: 3rem;
   }
-  .row-gap--2 {
-    row-gap: -0.5rem;
-  }
-  .row-gap--1 {
-    row-gap: -0.25rem;
-  }
   .row-gap-0 {
     row-gap: 0;
   }
   .row-gap-5 {
     row-gap: 3rem;
   }
-  .column-gap--2 {
-    -moz-column-gap: -0.5rem;
-    column-gap: -0.5rem;
-  }
-  .column-gap--1 {
-    -moz-column-gap: -0.25rem;
-    column-gap: -0.25rem;
-  }
   .column-gap-0 {
     -moz-column-gap: 0;
     column-gap: 0;
     font-family: var(--bs-body-font-family);
   }
   .fs-xs {
-    font-size: var(--bs-font-size-xs);
+    font-size: 0.75rem;
   }
   .fs-sm {
-    font-size: var(--bs-font-size-sm);
+    font-size: 0.875rem;
   }
   .fs-md {
-    font-size: var(--bs-font-size-md);
+    font-size: 1rem;
   }
   .fs-lg {
-    font-size: var(--bs-font-size-lg);
+    font-size: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);
   }
   .fs-xl {
-    font-size: var(--bs-font-size-xl);
+    font-size: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);
   }
   .fs-2xl {
-    font-size: var(--bs-font-size-2xl);
+    font-size: clamp(1.75rem, 1.3rem + 1vw, 2rem);
   }
   .fs-3xl {
-    font-size: var(--bs-font-size-3xl);
+    font-size: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);
   }
   .fs-4xl {
-    font-size: var(--bs-font-size-4xl);
+    font-size: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);
   }
   .fs-5xl {
-    font-size: var(--bs-font-size-5xl);
+    font-size: clamp(3rem, 2rem + 5vw, 4rem);
   }
   .fs-6xl {
-    font-size: var(--bs-font-size-6xl);
+    font-size: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);
   }
   .text-xs {
-    font-size: var(--bs-font-size-xs);
-    line-height: var(--bs-line-height-xs);
+    font-size: 0.75rem;
+    line-height: 1.25;
   }
   .text-sm {
-    font-size: var(--bs-font-size-sm);
-    line-height: var(--bs-line-height-sm);
+    font-size: 0.875rem;
+    line-height: 1.5;
   }
   .text-md {
-    font-size: var(--bs-font-size-md);
-    line-height: var(--bs-line-height-md);
+    font-size: 1rem;
+    line-height: 1.5;
   }
   .text-lg {
-    font-size: var(--bs-font-size-lg);
-    line-height: var(--bs-line-height-lg);
+    font-size: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);
+    line-height: 1.5;
   }
   .text-xl {
-    font-size: var(--bs-font-size-xl);
-    line-height: var(--bs-line-height-xl);
+    font-size: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);
+    line-height: 1.4285714286;
   }
   .text-2xl {
-    font-size: var(--bs-font-size-2xl);
-    line-height: var(--bs-line-height-2xl);
+    font-size: clamp(1.75rem, 1.3rem + 1vw, 2rem);
+    line-height: 1.3333333333;
   }
   .text-3xl {
-    font-size: var(--bs-font-size-3xl);
-    line-height: var(--bs-line-height-3xl);
+    font-size: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);
+    line-height: 1.2;
   }
   .text-4xl {
-    font-size: var(--bs-font-size-4xl);
-    line-height: var(--bs-line-height-4xl);
+    font-size: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);
+    line-height: 1.1;
   }
   .text-5xl {
-    font-size: var(--bs-font-size-5xl);
-    line-height: var(--bs-line-height-5xl);
+    font-size: clamp(3rem, 2rem + 5vw, 4rem);
+    line-height: 1.1;
   }
   .text-6xl {
-    font-size: var(--bs-font-size-6xl);
-    line-height: var(--bs-line-height-6xl);
+    font-size: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);
+    line-height: 1;
   }
   .fst-italic {
     font-style: italic;
     -webkit-user-select: auto;
     user-select: auto;
   }
+  .user-select-text {
+    -webkit-user-select: text;
+    user-select: text;
+  }
   .user-select-none {
     -webkit-user-select: none;
     user-select: none;
     .place-items-sm-stretch {
       place-items: stretch;
     }
+    .grid-cols-sm-2 {
+      grid-template-columns: repeat(2, 1fr);
+    }
     .grid-cols-sm-3 {
-      --bs-columns: 3;
+      grid-template-columns: repeat(3, 1fr);
     }
     .grid-cols-sm-4 {
-      --bs-columns: 4;
+      grid-template-columns: repeat(4, 1fr);
     }
     .grid-cols-sm-6 {
-      --bs-columns: 6;
+      grid-template-columns: repeat(6, 1fr);
     }
     .grid-cols-sm-fill {
       grid-column: 1 / -1;
     .order-sm-last {
       order: 6;
     }
-    .m-sm--2 {
-      margin: -0.5rem;
-    }
-    .m-sm--1 {
-      margin: -0.25rem;
-    }
     .m-sm-0 {
       margin: 0;
     }
     .m-sm-auto {
       margin: auto;
     }
-    .mx-sm--2 {
-      margin-inline: -0.5rem;
-    }
-    .mx-sm--1 {
-      margin-inline: -0.25rem;
-    }
     .mx-sm-0 {
       margin-inline: 0;
     }
     .mx-sm-auto {
       margin-inline: auto;
     }
-    .my-sm--2 {
-      margin-block: -0.5rem;
-    }
-    .my-sm--1 {
-      margin-block: -0.25rem;
-    }
     .my-sm-0 {
       margin-block: 0;
     }
     .my-sm-auto {
       margin-block: auto;
     }
-    .mt-sm--2 {
-      margin-block-start: -0.5rem;
-    }
-    .mt-sm--1 {
-      margin-block-start: -0.25rem;
-    }
     .mt-sm-0 {
       margin-block-start: 0;
     }
     .mt-sm-auto {
       margin-block-start: auto;
     }
-    .me-sm--2 {
-      margin-inline-end: -0.5rem;
-    }
-    .me-sm--1 {
-      margin-inline-end: -0.25rem;
-    }
     .me-sm-0 {
       margin-inline-end: 0;
     }
     .me-sm-auto {
       margin-inline-end: auto;
     }
-    .mb-sm--2 {
-      margin-block-end: -0.5rem;
-    }
-    .mb-sm--1 {
-      margin-block-end: -0.25rem;
-    }
     .mb-sm-0 {
       margin-block-end: 0;
     }
     .mb-sm-auto {
       margin-block-end: auto;
     }
-    .ms-sm--2 {
-      margin-inline-start: -0.5rem;
-    }
-    .ms-sm--1 {
-      margin-inline-start: -0.25rem;
-    }
     .ms-sm-0 {
       margin-inline-start: 0;
     }
     .ms-sm-5 {
       margin-inline-start: 3rem;
     }
-    .ms-sm-auto {
-      margin-inline-start: auto;
+    .ms-sm--1 {
+      margin-inline-start: -0.25rem;
     }
-    .p-sm--2 {
-      padding: -0.5rem;
+    .ms-sm--2 {
+      margin-inline-start: -0.5rem;
     }
-    .p-sm--1 {
-      padding: -0.25rem;
+    .ms-sm-auto {
+      margin-inline-start: auto;
     }
     .p-sm-0 {
       padding: 0;
     .p-sm-5 {
       padding: 3rem;
     }
-    .px-sm--2 {
-      padding-inline: -0.5rem;
-    }
-    .px-sm--1 {
-      padding-inline: -0.25rem;
-    }
     .px-sm-0 {
       padding-inline: 0;
     }
     .px-sm-5 {
       padding-inline: 3rem;
     }
-    .py-sm--2 {
-      padding-block: -0.5rem;
-    }
-    .py-sm--1 {
-      padding-block: -0.25rem;
-    }
     .py-sm-0 {
       padding-block: 0;
     }
     .py-sm-5 {
       padding-block: 3rem;
     }
-    .pt-sm--2 {
-      padding-block-start: -0.5rem;
-    }
-    .pt-sm--1 {
-      padding-block-start: -0.25rem;
-    }
     .pt-sm-0 {
       padding-block-start: 0;
     }
     .pt-sm-5 {
       padding-block-start: 3rem;
     }
-    .pe-sm--2 {
-      padding-inline-end: -0.5rem;
-    }
-    .pe-sm--1 {
-      padding-inline-end: -0.25rem;
-    }
     .pe-sm-0 {
       padding-inline-end: 0;
     }
     .pe-sm-5 {
       padding-inline-end: 3rem;
     }
-    .pb-sm--2 {
-      padding-block-end: -0.5rem;
-    }
-    .pb-sm--1 {
-      padding-block-end: -0.25rem;
-    }
     .pb-sm-0 {
       padding-block-end: 0;
     }
     .pb-sm-5 {
       padding-block-end: 3rem;
     }
-    .ps-sm--2 {
-      padding-inline-start: -0.5rem;
-    }
-    .ps-sm--1 {
-      padding-inline-start: -0.25rem;
-    }
     .ps-sm-0 {
       padding-inline-start: 0;
     }
     .ps-sm-5 {
       padding-inline-start: 3rem;
     }
-    .gap-sm--2 {
-      gap: -0.5rem;
-    }
-    .gap-sm--1 {
-      gap: -0.25rem;
-    }
     .gap-sm-0 {
       gap: 0;
     }
     .gap-sm-5 {
       gap: 3rem;
     }
-    .row-gap-sm--2 {
-      row-gap: -0.5rem;
-    }
-    .row-gap-sm--1 {
-      row-gap: -0.25rem;
-    }
     .row-gap-sm-0 {
       row-gap: 0;
     }
     .row-gap-sm-5 {
       row-gap: 3rem;
     }
-    .column-gap-sm--2 {
-      -moz-column-gap: -0.5rem;
-      column-gap: -0.5rem;
-    }
-    .column-gap-sm--1 {
-      -moz-column-gap: -0.25rem;
-      column-gap: -0.25rem;
-    }
     .column-gap-sm-0 {
       -moz-column-gap: 0;
       column-gap: 0;
     .place-items-md-stretch {
       place-items: stretch;
     }
+    .grid-cols-md-2 {
+      grid-template-columns: repeat(2, 1fr);
+    }
     .grid-cols-md-3 {
-      --bs-columns: 3;
+      grid-template-columns: repeat(3, 1fr);
     }
     .grid-cols-md-4 {
-      --bs-columns: 4;
+      grid-template-columns: repeat(4, 1fr);
     }
     .grid-cols-md-6 {
-      --bs-columns: 6;
+      grid-template-columns: repeat(6, 1fr);
     }
     .grid-cols-md-fill {
       grid-column: 1 / -1;
     .order-md-last {
       order: 6;
     }
-    .m-md--2 {
-      margin: -0.5rem;
-    }
-    .m-md--1 {
-      margin: -0.25rem;
-    }
     .m-md-0 {
       margin: 0;
     }
     .m-md-auto {
       margin: auto;
     }
-    .mx-md--2 {
-      margin-inline: -0.5rem;
-    }
-    .mx-md--1 {
-      margin-inline: -0.25rem;
-    }
     .mx-md-0 {
       margin-inline: 0;
     }
     .mx-md-auto {
       margin-inline: auto;
     }
-    .my-md--2 {
-      margin-block: -0.5rem;
-    }
-    .my-md--1 {
-      margin-block: -0.25rem;
-    }
     .my-md-0 {
       margin-block: 0;
     }
     .my-md-auto {
       margin-block: auto;
     }
-    .mt-md--2 {
-      margin-block-start: -0.5rem;
-    }
-    .mt-md--1 {
-      margin-block-start: -0.25rem;
-    }
     .mt-md-0 {
       margin-block-start: 0;
     }
     .mt-md-auto {
       margin-block-start: auto;
     }
-    .me-md--2 {
-      margin-inline-end: -0.5rem;
-    }
-    .me-md--1 {
-      margin-inline-end: -0.25rem;
-    }
     .me-md-0 {
       margin-inline-end: 0;
     }
     .me-md-auto {
       margin-inline-end: auto;
     }
-    .mb-md--2 {
-      margin-block-end: -0.5rem;
-    }
-    .mb-md--1 {
-      margin-block-end: -0.25rem;
-    }
     .mb-md-0 {
       margin-block-end: 0;
     }
     .mb-md-auto {
       margin-block-end: auto;
     }
-    .ms-md--2 {
-      margin-inline-start: -0.5rem;
-    }
-    .ms-md--1 {
-      margin-inline-start: -0.25rem;
-    }
     .ms-md-0 {
       margin-inline-start: 0;
     }
     .ms-md-5 {
       margin-inline-start: 3rem;
     }
-    .ms-md-auto {
-      margin-inline-start: auto;
+    .ms-md--1 {
+      margin-inline-start: -0.25rem;
     }
-    .p-md--2 {
-      padding: -0.5rem;
+    .ms-md--2 {
+      margin-inline-start: -0.5rem;
     }
-    .p-md--1 {
-      padding: -0.25rem;
+    .ms-md-auto {
+      margin-inline-start: auto;
     }
     .p-md-0 {
       padding: 0;
     .p-md-5 {
       padding: 3rem;
     }
-    .px-md--2 {
-      padding-inline: -0.5rem;
-    }
-    .px-md--1 {
-      padding-inline: -0.25rem;
-    }
     .px-md-0 {
       padding-inline: 0;
     }
     .px-md-5 {
       padding-inline: 3rem;
     }
-    .py-md--2 {
-      padding-block: -0.5rem;
-    }
-    .py-md--1 {
-      padding-block: -0.25rem;
-    }
     .py-md-0 {
       padding-block: 0;
     }
     .py-md-5 {
       padding-block: 3rem;
     }
-    .pt-md--2 {
-      padding-block-start: -0.5rem;
-    }
-    .pt-md--1 {
-      padding-block-start: -0.25rem;
-    }
     .pt-md-0 {
       padding-block-start: 0;
     }
     .pt-md-5 {
       padding-block-start: 3rem;
     }
-    .pe-md--2 {
-      padding-inline-end: -0.5rem;
-    }
-    .pe-md--1 {
-      padding-inline-end: -0.25rem;
-    }
     .pe-md-0 {
       padding-inline-end: 0;
     }
     .pe-md-5 {
       padding-inline-end: 3rem;
     }
-    .pb-md--2 {
-      padding-block-end: -0.5rem;
-    }
-    .pb-md--1 {
-      padding-block-end: -0.25rem;
-    }
     .pb-md-0 {
       padding-block-end: 0;
     }
     .pb-md-5 {
       padding-block-end: 3rem;
     }
-    .ps-md--2 {
-      padding-inline-start: -0.5rem;
-    }
-    .ps-md--1 {
-      padding-inline-start: -0.25rem;
-    }
     .ps-md-0 {
       padding-inline-start: 0;
     }
     .ps-md-5 {
       padding-inline-start: 3rem;
     }
-    .gap-md--2 {
-      gap: -0.5rem;
-    }
-    .gap-md--1 {
-      gap: -0.25rem;
-    }
     .gap-md-0 {
       gap: 0;
     }
     .gap-md-5 {
       gap: 3rem;
     }
-    .row-gap-md--2 {
-      row-gap: -0.5rem;
-    }
-    .row-gap-md--1 {
-      row-gap: -0.25rem;
-    }
     .row-gap-md-0 {
       row-gap: 0;
     }
     .row-gap-md-5 {
       row-gap: 3rem;
     }
-    .column-gap-md--2 {
-      -moz-column-gap: -0.5rem;
-      column-gap: -0.5rem;
-    }
-    .column-gap-md--1 {
-      -moz-column-gap: -0.25rem;
-      column-gap: -0.25rem;
-    }
     .column-gap-md-0 {
       -moz-column-gap: 0;
       column-gap: 0;
     .place-items-lg-stretch {
       place-items: stretch;
     }
+    .grid-cols-lg-2 {
+      grid-template-columns: repeat(2, 1fr);
+    }
     .grid-cols-lg-3 {
-      --bs-columns: 3;
+      grid-template-columns: repeat(3, 1fr);
     }
     .grid-cols-lg-4 {
-      --bs-columns: 4;
+      grid-template-columns: repeat(4, 1fr);
     }
     .grid-cols-lg-6 {
-      --bs-columns: 6;
+      grid-template-columns: repeat(6, 1fr);
     }
     .grid-cols-lg-fill {
       grid-column: 1 / -1;
     .order-lg-last {
       order: 6;
     }
-    .m-lg--2 {
-      margin: -0.5rem;
-    }
-    .m-lg--1 {
-      margin: -0.25rem;
-    }
     .m-lg-0 {
       margin: 0;
     }
     .m-lg-auto {
       margin: auto;
     }
-    .mx-lg--2 {
-      margin-inline: -0.5rem;
-    }
-    .mx-lg--1 {
-      margin-inline: -0.25rem;
-    }
     .mx-lg-0 {
       margin-inline: 0;
     }
     .mx-lg-auto {
       margin-inline: auto;
     }
-    .my-lg--2 {
-      margin-block: -0.5rem;
-    }
-    .my-lg--1 {
-      margin-block: -0.25rem;
-    }
     .my-lg-0 {
       margin-block: 0;
     }
     .my-lg-auto {
       margin-block: auto;
     }
-    .mt-lg--2 {
-      margin-block-start: -0.5rem;
-    }
-    .mt-lg--1 {
-      margin-block-start: -0.25rem;
-    }
     .mt-lg-0 {
       margin-block-start: 0;
     }
     .mt-lg-auto {
       margin-block-start: auto;
     }
-    .me-lg--2 {
-      margin-inline-end: -0.5rem;
-    }
-    .me-lg--1 {
-      margin-inline-end: -0.25rem;
-    }
     .me-lg-0 {
       margin-inline-end: 0;
     }
     .me-lg-auto {
       margin-inline-end: auto;
     }
-    .mb-lg--2 {
-      margin-block-end: -0.5rem;
-    }
-    .mb-lg--1 {
-      margin-block-end: -0.25rem;
-    }
     .mb-lg-0 {
       margin-block-end: 0;
     }
     .mb-lg-auto {
       margin-block-end: auto;
     }
-    .ms-lg--2 {
-      margin-inline-start: -0.5rem;
-    }
-    .ms-lg--1 {
-      margin-inline-start: -0.25rem;
-    }
     .ms-lg-0 {
       margin-inline-start: 0;
     }
     .ms-lg-5 {
       margin-inline-start: 3rem;
     }
-    .ms-lg-auto {
-      margin-inline-start: auto;
+    .ms-lg--1 {
+      margin-inline-start: -0.25rem;
     }
-    .p-lg--2 {
-      padding: -0.5rem;
+    .ms-lg--2 {
+      margin-inline-start: -0.5rem;
     }
-    .p-lg--1 {
-      padding: -0.25rem;
+    .ms-lg-auto {
+      margin-inline-start: auto;
     }
     .p-lg-0 {
       padding: 0;
     .p-lg-5 {
       padding: 3rem;
     }
-    .px-lg--2 {
-      padding-inline: -0.5rem;
-    }
-    .px-lg--1 {
-      padding-inline: -0.25rem;
-    }
     .px-lg-0 {
       padding-inline: 0;
     }
     .px-lg-5 {
       padding-inline: 3rem;
     }
-    .py-lg--2 {
-      padding-block: -0.5rem;
-    }
-    .py-lg--1 {
-      padding-block: -0.25rem;
-    }
     .py-lg-0 {
       padding-block: 0;
     }
     .py-lg-5 {
       padding-block: 3rem;
     }
-    .pt-lg--2 {
-      padding-block-start: -0.5rem;
-    }
-    .pt-lg--1 {
-      padding-block-start: -0.25rem;
-    }
     .pt-lg-0 {
       padding-block-start: 0;
     }
     .pt-lg-5 {
       padding-block-start: 3rem;
     }
-    .pe-lg--2 {
-      padding-inline-end: -0.5rem;
-    }
-    .pe-lg--1 {
-      padding-inline-end: -0.25rem;
-    }
     .pe-lg-0 {
       padding-inline-end: 0;
     }
     .pe-lg-5 {
       padding-inline-end: 3rem;
     }
-    .pb-lg--2 {
-      padding-block-end: -0.5rem;
-    }
-    .pb-lg--1 {
-      padding-block-end: -0.25rem;
-    }
     .pb-lg-0 {
       padding-block-end: 0;
     }
     .pb-lg-5 {
       padding-block-end: 3rem;
     }
-    .ps-lg--2 {
-      padding-inline-start: -0.5rem;
-    }
-    .ps-lg--1 {
-      padding-inline-start: -0.25rem;
-    }
     .ps-lg-0 {
       padding-inline-start: 0;
     }
     .ps-lg-5 {
       padding-inline-start: 3rem;
     }
-    .gap-lg--2 {
-      gap: -0.5rem;
-    }
-    .gap-lg--1 {
-      gap: -0.25rem;
-    }
     .gap-lg-0 {
       gap: 0;
     }
     .gap-lg-5 {
       gap: 3rem;
     }
-    .row-gap-lg--2 {
-      row-gap: -0.5rem;
-    }
-    .row-gap-lg--1 {
-      row-gap: -0.25rem;
-    }
     .row-gap-lg-0 {
       row-gap: 0;
     }
     .row-gap-lg-5 {
       row-gap: 3rem;
     }
-    .column-gap-lg--2 {
-      -moz-column-gap: -0.5rem;
-      column-gap: -0.5rem;
-    }
-    .column-gap-lg--1 {
-      -moz-column-gap: -0.25rem;
-      column-gap: -0.25rem;
-    }
     .column-gap-lg-0 {
       -moz-column-gap: 0;
       column-gap: 0;
     .place-items-xl-stretch {
       place-items: stretch;
     }
+    .grid-cols-xl-2 {
+      grid-template-columns: repeat(2, 1fr);
+    }
     .grid-cols-xl-3 {
-      --bs-columns: 3;
+      grid-template-columns: repeat(3, 1fr);
     }
     .grid-cols-xl-4 {
-      --bs-columns: 4;
+      grid-template-columns: repeat(4, 1fr);
     }
     .grid-cols-xl-6 {
-      --bs-columns: 6;
+      grid-template-columns: repeat(6, 1fr);
     }
     .grid-cols-xl-fill {
       grid-column: 1 / -1;
     .order-xl-last {
       order: 6;
     }
-    .m-xl--2 {
-      margin: -0.5rem;
-    }
-    .m-xl--1 {
-      margin: -0.25rem;
-    }
     .m-xl-0 {
       margin: 0;
     }
     .m-xl-auto {
       margin: auto;
     }
-    .mx-xl--2 {
-      margin-inline: -0.5rem;
-    }
-    .mx-xl--1 {
-      margin-inline: -0.25rem;
-    }
     .mx-xl-0 {
       margin-inline: 0;
     }
     .mx-xl-auto {
       margin-inline: auto;
     }
-    .my-xl--2 {
-      margin-block: -0.5rem;
-    }
-    .my-xl--1 {
-      margin-block: -0.25rem;
-    }
     .my-xl-0 {
       margin-block: 0;
     }
     .my-xl-auto {
       margin-block: auto;
     }
-    .mt-xl--2 {
-      margin-block-start: -0.5rem;
-    }
-    .mt-xl--1 {
-      margin-block-start: -0.25rem;
-    }
     .mt-xl-0 {
       margin-block-start: 0;
     }
     .mt-xl-auto {
       margin-block-start: auto;
     }
-    .me-xl--2 {
-      margin-inline-end: -0.5rem;
-    }
-    .me-xl--1 {
-      margin-inline-end: -0.25rem;
-    }
     .me-xl-0 {
       margin-inline-end: 0;
     }
     .me-xl-auto {
       margin-inline-end: auto;
     }
-    .mb-xl--2 {
-      margin-block-end: -0.5rem;
-    }
-    .mb-xl--1 {
-      margin-block-end: -0.25rem;
-    }
     .mb-xl-0 {
       margin-block-end: 0;
     }
     .mb-xl-auto {
       margin-block-end: auto;
     }
-    .ms-xl--2 {
-      margin-inline-start: -0.5rem;
-    }
-    .ms-xl--1 {
-      margin-inline-start: -0.25rem;
-    }
     .ms-xl-0 {
       margin-inline-start: 0;
     }
     .ms-xl-5 {
       margin-inline-start: 3rem;
     }
-    .ms-xl-auto {
-      margin-inline-start: auto;
+    .ms-xl--1 {
+      margin-inline-start: -0.25rem;
     }
-    .p-xl--2 {
-      padding: -0.5rem;
+    .ms-xl--2 {
+      margin-inline-start: -0.5rem;
     }
-    .p-xl--1 {
-      padding: -0.25rem;
+    .ms-xl-auto {
+      margin-inline-start: auto;
     }
     .p-xl-0 {
       padding: 0;
     .p-xl-5 {
       padding: 3rem;
     }
-    .px-xl--2 {
-      padding-inline: -0.5rem;
-    }
-    .px-xl--1 {
-      padding-inline: -0.25rem;
-    }
     .px-xl-0 {
       padding-inline: 0;
     }
     .px-xl-5 {
       padding-inline: 3rem;
     }
-    .py-xl--2 {
-      padding-block: -0.5rem;
-    }
-    .py-xl--1 {
-      padding-block: -0.25rem;
-    }
     .py-xl-0 {
       padding-block: 0;
     }
     .py-xl-5 {
       padding-block: 3rem;
     }
-    .pt-xl--2 {
-      padding-block-start: -0.5rem;
-    }
-    .pt-xl--1 {
-      padding-block-start: -0.25rem;
-    }
     .pt-xl-0 {
       padding-block-start: 0;
     }
     .pt-xl-5 {
       padding-block-start: 3rem;
     }
-    .pe-xl--2 {
-      padding-inline-end: -0.5rem;
-    }
-    .pe-xl--1 {
-      padding-inline-end: -0.25rem;
-    }
     .pe-xl-0 {
       padding-inline-end: 0;
     }
     .pe-xl-5 {
       padding-inline-end: 3rem;
     }
-    .pb-xl--2 {
-      padding-block-end: -0.5rem;
-    }
-    .pb-xl--1 {
-      padding-block-end: -0.25rem;
-    }
     .pb-xl-0 {
       padding-block-end: 0;
     }
     .pb-xl-5 {
       padding-block-end: 3rem;
     }
-    .ps-xl--2 {
-      padding-inline-start: -0.5rem;
-    }
-    .ps-xl--1 {
-      padding-inline-start: -0.25rem;
-    }
     .ps-xl-0 {
       padding-inline-start: 0;
     }
     .ps-xl-5 {
       padding-inline-start: 3rem;
     }
-    .gap-xl--2 {
-      gap: -0.5rem;
-    }
-    .gap-xl--1 {
-      gap: -0.25rem;
-    }
     .gap-xl-0 {
       gap: 0;
     }
     .gap-xl-5 {
       gap: 3rem;
     }
-    .row-gap-xl--2 {
-      row-gap: -0.5rem;
-    }
-    .row-gap-xl--1 {
-      row-gap: -0.25rem;
-    }
     .row-gap-xl-0 {
       row-gap: 0;
     }
     .row-gap-xl-5 {
       row-gap: 3rem;
     }
-    .column-gap-xl--2 {
-      -moz-column-gap: -0.5rem;
-      column-gap: -0.5rem;
-    }
-    .column-gap-xl--1 {
-      -moz-column-gap: -0.25rem;
-      column-gap: -0.25rem;
-    }
     .column-gap-xl-0 {
       -moz-column-gap: 0;
       column-gap: 0;
     .place-items-2xl-stretch {
       place-items: stretch;
     }
+    .grid-cols-2xl-2 {
+      grid-template-columns: repeat(2, 1fr);
+    }
     .grid-cols-2xl-3 {
-      --bs-columns: 3;
+      grid-template-columns: repeat(3, 1fr);
     }
     .grid-cols-2xl-4 {
-      --bs-columns: 4;
+      grid-template-columns: repeat(4, 1fr);
     }
     .grid-cols-2xl-6 {
-      --bs-columns: 6;
+      grid-template-columns: repeat(6, 1fr);
     }
     .grid-cols-2xl-fill {
       grid-column: 1 / -1;
     .order-2xl-last {
       order: 6;
     }
-    .m-2xl--2 {
-      margin: -0.5rem;
-    }
-    .m-2xl--1 {
-      margin: -0.25rem;
-    }
     .m-2xl-0 {
       margin: 0;
     }
     .m-2xl-auto {
       margin: auto;
     }
-    .mx-2xl--2 {
-      margin-inline: -0.5rem;
-    }
-    .mx-2xl--1 {
-      margin-inline: -0.25rem;
-    }
     .mx-2xl-0 {
       margin-inline: 0;
     }
     .mx-2xl-auto {
       margin-inline: auto;
     }
-    .my-2xl--2 {
-      margin-block: -0.5rem;
-    }
-    .my-2xl--1 {
-      margin-block: -0.25rem;
-    }
     .my-2xl-0 {
       margin-block: 0;
     }
     .my-2xl-auto {
       margin-block: auto;
     }
-    .mt-2xl--2 {
-      margin-block-start: -0.5rem;
-    }
-    .mt-2xl--1 {
-      margin-block-start: -0.25rem;
-    }
     .mt-2xl-0 {
       margin-block-start: 0;
     }
     .mt-2xl-auto {
       margin-block-start: auto;
     }
-    .me-2xl--2 {
-      margin-inline-end: -0.5rem;
-    }
-    .me-2xl--1 {
-      margin-inline-end: -0.25rem;
-    }
     .me-2xl-0 {
       margin-inline-end: 0;
     }
     .me-2xl-auto {
       margin-inline-end: auto;
     }
-    .mb-2xl--2 {
-      margin-block-end: -0.5rem;
-    }
-    .mb-2xl--1 {
-      margin-block-end: -0.25rem;
-    }
     .mb-2xl-0 {
       margin-block-end: 0;
     }
     .mb-2xl-auto {
       margin-block-end: auto;
     }
-    .ms-2xl--2 {
-      margin-inline-start: -0.5rem;
-    }
-    .ms-2xl--1 {
-      margin-inline-start: -0.25rem;
-    }
     .ms-2xl-0 {
       margin-inline-start: 0;
     }
     .ms-2xl-5 {
       margin-inline-start: 3rem;
     }
-    .ms-2xl-auto {
-      margin-inline-start: auto;
+    .ms-2xl--1 {
+      margin-inline-start: -0.25rem;
     }
-    .p-2xl--2 {
-      padding: -0.5rem;
+    .ms-2xl--2 {
+      margin-inline-start: -0.5rem;
     }
-    .p-2xl--1 {
-      padding: -0.25rem;
+    .ms-2xl-auto {
+      margin-inline-start: auto;
     }
     .p-2xl-0 {
       padding: 0;
     .p-2xl-5 {
       padding: 3rem;
     }
-    .px-2xl--2 {
-      padding-inline: -0.5rem;
-    }
-    .px-2xl--1 {
-      padding-inline: -0.25rem;
-    }
     .px-2xl-0 {
       padding-inline: 0;
     }
     .px-2xl-5 {
       padding-inline: 3rem;
     }
-    .py-2xl--2 {
-      padding-block: -0.5rem;
-    }
-    .py-2xl--1 {
-      padding-block: -0.25rem;
-    }
     .py-2xl-0 {
       padding-block: 0;
     }
     .py-2xl-5 {
       padding-block: 3rem;
     }
-    .pt-2xl--2 {
-      padding-block-start: -0.5rem;
-    }
-    .pt-2xl--1 {
-      padding-block-start: -0.25rem;
-    }
     .pt-2xl-0 {
       padding-block-start: 0;
     }
     .pt-2xl-5 {
       padding-block-start: 3rem;
     }
-    .pe-2xl--2 {
-      padding-inline-end: -0.5rem;
-    }
-    .pe-2xl--1 {
-      padding-inline-end: -0.25rem;
-    }
     .pe-2xl-0 {
       padding-inline-end: 0;
     }
     .pe-2xl-5 {
       padding-inline-end: 3rem;
     }
-    .pb-2xl--2 {
-      padding-block-end: -0.5rem;
-    }
-    .pb-2xl--1 {
-      padding-block-end: -0.25rem;
-    }
     .pb-2xl-0 {
       padding-block-end: 0;
     }
     .pb-2xl-5 {
       padding-block-end: 3rem;
     }
-    .ps-2xl--2 {
-      padding-inline-start: -0.5rem;
-    }
-    .ps-2xl--1 {
-      padding-inline-start: -0.25rem;
-    }
     .ps-2xl-0 {
       padding-inline-start: 0;
     }
     .ps-2xl-5 {
       padding-inline-start: 3rem;
     }
-    .gap-2xl--2 {
-      gap: -0.5rem;
-    }
-    .gap-2xl--1 {
-      gap: -0.25rem;
-    }
     .gap-2xl-0 {
       gap: 0;
     }
     .gap-2xl-5 {
       gap: 3rem;
     }
-    .row-gap-2xl--2 {
-      row-gap: -0.5rem;
-    }
-    .row-gap-2xl--1 {
-      row-gap: -0.25rem;
-    }
     .row-gap-2xl-0 {
       row-gap: 0;
     }
     .row-gap-2xl-5 {
       row-gap: 3rem;
     }
-    .column-gap-2xl--2 {
-      -moz-column-gap: -0.5rem;
-      column-gap: -0.5rem;
-    }
-    .column-gap-2xl--1 {
-      -moz-column-gap: -0.25rem;
-      column-gap: -0.25rem;
-    }
     .column-gap-2xl-0 {
       -moz-column-gap: 0;
       column-gap: 0;
index 35d742cd7563e04f86a67da5ed4a7053586c9271..d4388a8b37f2ac0a9f679823599eaa6659d81e43 100644 (file)
@@ -1 +1 @@
-{"version":3,"sources":["../../scss/_banner.scss","../../scss/_colors.scss","../../scss/mixins/_tokens.scss","bootstrap-utilities.css","../../scss/_root.scss","../../scss/helpers/_focus-ring.scss","../../scss/helpers/_icon-link.scss","../../scss/_variables.scss","../../scss/mixins/_transition.scss","../../scss/helpers/_position.scss","../../scss/layout/_breakpoints.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_theme-colors.scss","../../scss/_theme.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/utilities/_api.scss","../../scss/mixins/_utilities.scss"],"names":[],"mappings":"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b;EkB7nBE;IApII,gBA+CO;ElBqtBb;EkBhoBE;IApII,kBA+CO;ElBwtBb;EkBnoBE;IApII,mBA+CO;ElB2tBb;EkBtoBE;IApII,kBA+CO;ElB8tBb;EkBzoBE;IApII,gBA+CO;ElBiuBb;EkB5oBE;IApII,kBA+CO;ElBouBb;EkB/oBE;IApII,mBA+CO;ElBuuBb;EkBlpBE;IApII,kBA+CO;ElB0uBb;EkBrpBE;IApII,eA+CO;ElB6uBb;EkBxpBE;IApII,qBA+CO;ElBgvBb;EkB3pBE;IApII,cA+CO;ElBmvBb;EkB9pBE;IApII,aA+CO;ElBsvBb;EkBjqBE;IApII,oBA+CO;ElByvBb;EkBpqBE;IApII,cA+CO;ElB4vBb;EkBvqBE;IApII,kBA+CO;ElB+vBb;EkB1qBE;IApII,mBA+CO;ElBkwBb;EkB7qBE;IApII,aA+CO;ElBqwBb;EkBhrBE;IApII,oBA+CO;ElBwwBb;EkBnrBE;IApII,iBA+CO;ElB2wBb;EkBtrBE;IApII,kBA+CO;ElB8wBb;EkBzrBE;IApII,aA+CO;ElBixBb;EkB5rBE;IApII,gCA0CG;ElByxBT;EkB/rBE;IApII,mCA0CG;ElB4xBT;EkBlsBE;IApII,mCA0CG;ElB+xBT;EkBrsBE;IApII,gBA0CG;ElBkyBT;EkBxsBE;IApII,iKA0CG;ElBqyBT;EkB3sBE;IApII,qKA0CG;ElBwyBT;EkB9sBE;IApII,mKA0CG;ElB2yBT;EkBjtBE;IApII,+JA0CG;ElB8yBT;EkBptBE;IApII,qKA0CG;ElBizBT;EkBvtBE;IApII,iKA0CG;ElBozBT;EkB1tBE;IApII,qHA0CG;ElBuzBT;EkB7tBE;IApII,qHA0CG;ElB0zBT;EkBhuBE;IApII,gBA+CO;ElBwzBb;EkBnuBE;IApII,kBA+CO;ElB2zBb;EkBtuBE;IApII,kBA+CO;ElB8zBb;EkBzuBE;IApII,eA+CO;ElBi0Bb;EkB5uBE;IApII,gBA+CO;ElBo0Bb;EkB/uBE;IApII,MA0CG;ElB40BT;EkBlvBE;IApII,QA0CG;ElB+0BT;EkBrvBE;IApII,SA0CG;ElBk1BT;EkBxvBE;IApII,SA0CG;ElBq1BT;EkB3vBE;IApII,WA0CG;ElBw1BT;EkB9vBE;IApII,YA0CG;ElB21BT;EkBjwBE;IApII,OA0CG;ElB81BT;EkBpwBE;IApII,SA0CG;ElBi2BT;EkBvwBE;IApII,UA0CG;ElBo2BT;EkB1wBE;IApII,QA0CG;ElBu2BT;EkB7wBE;IApII,UA0CG;ElB02BT;EkBhxBE;IApII,WA0CG;ElB62BT;EkBnxBE;IApII,gCA0CG;ElBg3BT;EkBtxBE;IApII,2BA0CG;ElBm3BT;EkBzxBE;IApII,2BA0CG;ElBs3BT;EkB5xBE;IApII,4EA0CG;ElBy3BT;EkB/xBE;IApII,SA0CG;ElB43BT;EkBlyBE;IApII,wFA0CG;ElB+3BT;EkBryBE;IApII,qBA0CG;ElBk4BT;EkBxyBE;IApII,uFA0CG;ElBq4BT;EkB3yBE;IApII,oBA0CG;ElBw4BT;EkB9yBE;IApII,sFA0CG;ElB24BT;EkBjzBE;IApII,mBA0CG;ElB84BT;EkBpzBE;IApII,yFA0CG;ElBi5BT;EkBvzBE;IApII,sBA0CG;ElBo5BT;EkB1zBE;IApII,kFA0CG;ElBu5BT;EkB7zBE;IApII,eA0CG;ElB05BT;EkBh0BE;IApII,mFA0CG;ElB65BT;EkBn0BE;IApII,gBA0CG;ElBg6BT;EkBt0BE;IA7II,qCAmDG;IAnDH,oCAqES;ElBk5Bf;EkB10BE;IA7II,uCAmDG;IAnDH,oCAqES;ElBs5Bf;EkB90BE;IA7II,sCAmDG;IAnDH,oCAqES;ElB05Bf;EkBl1BE;IA7II,oCAmDG;IAnDH,oCAqES;ElB85Bf;EkBt1BE;IA7II,uCAmDG;IAnDH,oCAqES;ElBk6Bf;EkB11BE;IA7II,qCAmDG;IAnDH,oCAqES;ElBs6Bf;EkB91BE;IA7II,qEAmDG;IAnDH,oCAqES;ElB06Bf;EkBl2BE;IA7II,qEAmDG;IAnDH,oCAqES;ElB86Bf;EkBt2BE;IA7II,oCAmDG;IAnDH,oCAqES;ElBk7Bf;EkB12BE;IA7II,qEAmDG;IAnDH,oCAqES;ElBs7Bf;EkB92BE;IA7II,qEAmDG;IAnDH,oCAqES;ElB07Bf;EkBl3BE;IA7II,qEAmDG;IAnDH,oCAqES;ElB87Bf;EkBt3BE;IA7II,qEAmDG;IAnDH,oCAqES;ElBk8Bf;EkB13BE;IA7II,kCAmDG;IAnDH,oCAqES;ElBs8Bf;EkB93BE;IA7II,kCAmDG;IAnDH,oCAqES;ElB08Bf;EkBl4BE;IA7II,qEAmDG;IAnDH,oCAqES;ElB88Bf;EkBt4BE;IA7II,yEAmDG;IAnDH,oCAqES;ElBk9Bf;EkB14BE;IA7II,uEAmDG;IAnDH,oCAqES;ElBs9Bf;EkB94BE;IA7II,mEAmDG;IAnDH,oCAqES;ElB09Bf;EkBl5BE;IA7II,yEAmDG;IAnDH,oCAqES;ElB89Bf;EkBt5BE;IA7II,qEAmDG;IAnDH,oCAqES;ElBk+Bf;EkB15BE;IA7II,qEAmDG;IAnDH,oCAqES;ElBs+Bf;EkB95BE;IA7II,qEAmDG;IAnDH,oCAqES;ElB0+Bf;EkBl6BE;IApII,iBA0CG;ElB+/BT;EkBr6BE;IApII,iBA0CG;ElBkgCT;EkBx6BE;IApII,iBA0CG;ElBqgCT;EkB36BE;IApII,iBA0CG;ElBwgCT;EkB96BE;IApII,iBA0CG;ElB2gCT;EkBj7BE;IApII,0EA0CG;ElB8gCT;EkBp7BE;IApII,0EA0CG;ElBihCT;EkBv7BE;IApII,0EA0CG;ElBohCT;EkB17BE;IApII,0EA0CG;ElBuhCT;EkB77BE;IApII,0EA0CG;ElB0hCT;EkBh8BE;IApII,0EA0CG;ElB6hCT;EkBn8BE;IApII,0EA0CG;ElBgiCT;EkBt8BE;IApII,0EA0CG;ElBmiCT;EkBz8BE;IApII,0EA0CG;ElBsiCT;EkB58BE;IApII,oCA0CG;ElByiCT;EkB/8BE;IApII,WA0CG;ElB4iCT;EkBl9BE;IApII,WA0CG;ElB+iCT;EkBr9BE;IApII,WA0CG;ElBkjCT;EkBx9BE;IApII,WA0CG;ElBqjCT;EkB39BE;IApII,WA0CG;ElBwjCT;EkB99BE;IApII,WA0CG;ElB2jCT;EkBj+BE;IApII,WA0CG;ElB8jCT;EkBp+BE;IApII,WA0CG;ElBikCT;EkBv+BE;IApII,WA0CG;ElBokCT;EkB1+BE;IApII,YA0CG;ElBukCT;EkB7+BE;IApII,YA0CG;ElB0kCT;EkBh/BE;IApII,YA0CG;ElB6kCT;EkBn/BE;IApII,UA0CG;ElBglCT;EkBt/BE;IApII,UA0CG;ElBmlCT;EkBz/BE;IApII,UA0CG;ElBslCT;EkB5/BE;IApII,WA0CG;ElBylCT;EkB//BE;IApII,WA0CG;ElB4lCT;EkBlgCE;IApII,kBA0CG;ElB+lCT;EkBrgCE;IApII,kBA0CG;ElBkmCT;EkBxgCE;IApII,uBA0CG;IA1CH,kBA0CG;ElBqmCT;EkB3gCE;IApII,eA0CG;ElBwmCT;EkB9gCE;IApII,YA0CG;ElB2mCT;EkBjhCE;IApII,eA0CG;ElB8mCT;EkBphCE;IApII,YA0CG;ElBinCT;EkBvhCE;IApII,gBA0CG;ElBonCT;EkB1hCE;IApII,WA0CG;ElBunCT;EkB7hCE;IApII,WA0CG;ElB0nCT;EkBhiCE;IApII,WA0CG;ElB6nCT;EkBniCE;IApII,YA0CG;ElBgoCT;EkBtiCE;IApII,YA0CG;ElBmoCT;EkBziCE;IApII,mBA0CG;ElBsoCT;EkB5iCE;IApII,mBA0CG;ElByoCT;EkB/iCE;IApII,wBA0CG;IA1CH,mBA0CG;ElB4oCT;EkBljCE;IApII,gBA0CG;ElB+oCT;EkBrjCE;IApII,aA0CG;ElBkpCT;EkBxjCE;IApII,gBA0CG;ElBqpCT;EkB3jCE;IApII,aA0CG;ElBwpCT;EkB9jCE;IApII,iBA0CG;ElB2pCT;EkBjkCE;IApII,cA0CG;ElB8pCT;EkBpkCE;IApII,mBA+CO;ElB4pCb;EkBvkCE;IApII,sBA+CO;ElB+pCb;EkB1kCE;IApII,2BA+CO;ElBkqCb;EkB7kCE;IApII,8BA+CO;ElBqqCb;EkBhlCE;IApII,YA0CG;ElB6qCT;EkBnlCE;IApII,YA0CG;ElBgrCT;EkBtlCE;IApII,cA0CG;ElBmrCT;EkBzlCE;IApII,cA0CG;ElBsrCT;EkB5lCE;IApII,eA+CO;ElBorCb;EkB/lCE;IApII,iBA+CO;ElBurCb;EkBlmCE;IApII,uBA+CO;ElB0rCb;EkBrmCE;IApII,2BA0CG;ElBksCT;EkBxmCE;IApII,yBA0CG;ElBqsCT;EkB3mCE;IApII,uBA0CG;ElBwsCT;EkB9mCE;IApII,8BA0CG;ElB2sCT;EkBjnCE;IApII,6BA0CG;ElB8sCT;EkBpnCE;IApII,6BA0CG;ElBitCT;EkBvnCE;IApII,oBA0CG;ElBotCT;EkB1nCE;IApII,kBA0CG;ElButCT;EkB7nCE;IApII,qBA0CG;ElB0tCT;EkBhoCE;IApII,sBA0CG;ElB6tCT;EkBnoCE;IApII,wBA0CG;ElBguCT;EkBtoCE;IApII,sBA0CG;ElBmuCT;EkBzoCE;IApII,oBA0CG;ElBsuCT;EkB5oCE;IApII,uBA0CG;ElByuCT;EkB/oCE;IApII,qBA0CG;ElB4uCT;EkBlpCE;IApII,mBA0CG;ElB+uCT;EkBrpCE;IApII,qBA0CG;ElBkvCT;EkBxpCE;IApII,oBA0CG;ElBqvCT;EkB3pCE;IApII,yBA0CG;ElBwvCT;EkB9pCE;IApII,uBA0CG;ElB2vCT;EkBjqCE;IApII,qBA0CG;ElB8vCT;EkBpqCE;IApII,4BA0CG;ElBiwCT;EkBvqCE;IApII,2BA0CG;ElBowCT;EkB1qCE;IApII,sBA0CG;ElBuwCT;EkB7qCE;IApII,gBA0CG;ElB0wCT;EkBhrCE;IApII,sBA0CG;ElB6wCT;EkBnrCE;IApII,oBA0CG;ElBgxCT;EkBtrCE;IApII,kBA0CG;ElBmxCT;EkBzrCE;IApII,oBA0CG;ElBsxCT;EkB5rCE;IApII,mBA0CG;ElByxCT;EkB/rCE;IApII,kBA0CG;ElB4xCT;EkBlsCE;IApII,gBA0CG;ElB+xCT;EkBrsCE;IApII,mBA0CG;ElBkyCT;EkBxsCE;IApII,oBA0CG;ElBqyCT;EkB3sCE;IApII,eA+CO;ElBmyCb;EkB9sCE;IApII,eA+CO;ElBsyCb;EkBjtCE;IApII,eA+CO;ElByyCb;EkBptCE;IApII,mBA0CG;ElBizCT;EkBvtCE;IApII,mBA+CO;ElB+yCb;EkB1tCE;IApII,sBA+CO;ElBkzCb;EkB7tCE;IApII,qBA+CO;ElBqzCb;EkBhuCE;IApII,SA0CG;ElB6zCT;EkBnuCE;IApII,QA0CG;ElBg0CT;EkBtuCE;IApII,QA0CG;ElBm0CT;EkBzuCE;IApII,QA0CG;ElBs0CT;EkB5uCE;IApII,QA0CG;ElBy0CT;EkB/uCE;IApII,QA0CG;ElB40CT;EkBlvCE;IApII,QA0CG;ElB+0CT;EkBrvCE;IApII,QA0CG;ElBk1CT;EkBxvCE;IApII,eA0CG;ElBq1CT;EkB3vCE;IApII,gBA0CG;ElBw1CT;EkB9vCE;IApII,SA0CG;ElB21CT;EkBjwCE;IApII,eA0CG;ElB81CT;EkBpwCE;IApII,cA0CG;ElBi2CT;EkBvwCE;IApII,YA0CG;ElBo2CT;EkB1wCE;IApII,cA0CG;ElBu2CT;EkB7wCE;IApII,YA0CG;ElB02CT;EkBhxCE;IApII,YA0CG;ElB62CT;EkBnxCE;IApII,sBA0CG;ElBg3CT;EkBtxCE;IApII,uBA0CG;ElBm3CT;EkBzxCE;IApII,gBA0CG;ElBs3CT;EkB5xCE;IApII,sBA0CG;ElBy3CT;EkB/xCE;IApII,qBA0CG;ElB43CT;EkBlyCE;IApII,mBA0CG;ElB+3CT;EkBryCE;IApII,qBA0CG;ElBk4CT;EkBxyCE;IApII,mBA0CG;ElBq4CT;EkB3yCE;IApII,mBA0CG;ElBw4CT;EkB9yCE;IApII,qBA0CG;ElB24CT;EkBjzCE;IApII,sBA0CG;ElB84CT;EkBpzCE;IApII,eA0CG;ElBi5CT;EkBvzCE;IApII,qBA0CG;ElBo5CT;EkB1zCE;IApII,oBA0CG;ElBu5CT;EkB7zCE;IApII,kBA0CG;ElB05CT;EkBh0CE;IApII,oBA0CG;ElB65CT;EkBn0CE;IApII,kBA0CG;ElBg6CT;EkBt0CE;IApII,kBA0CG;ElBm6CT;EkBz0CE;IApII,2BA0CG;ElBs6CT;EkB50CE;IApII,4BA0CG;ElBy6CT;EkB/0CE;IApII,qBA0CG;ElB46CT;EkBl1CE;IApII,2BA0CG;ElB+6CT;EkBr1CE;IApII,0BA0CG;ElBk7CT;EkBx1CE;IApII,wBA0CG;ElBq7CT;EkB31CE;IApII,0BA0CG;ElBw7CT;EkB91CE;IApII,wBA0CG;ElB27CT;EkBj2CE;IApII,wBA0CG;ElB87CT;EkBp2CE;IApII,0BA0CG;ElBi8CT;EkBv2CE;IApII,2BA0CG;ElBo8CT;EkB12CE;IApII,oBA0CG;ElBu8CT;EkB72CE;IApII,0BA0CG;ElB08CT;EkBh3CE;IApII,yBA0CG;ElB68CT;EkBn3CE;IApII,uBA0CG;ElBg9CT;EkBt3CE;IApII,yBA0CG;ElBm9CT;EkBz3CE;IApII,uBA0CG;ElBs9CT;EkB53CE;IApII,uBA0CG;ElBy9CT;EkB/3CE;IApII,yBA0CG;ElB49CT;EkBl4CE;IApII,0BA0CG;ElB+9CT;EkBr4CE;IApII,mBA0CG;ElBk+CT;EkBx4CE;IApII,yBA0CG;ElBq+CT;EkB34CE;IApII,wBA0CG;ElBw+CT;EkB94CE;IApII,sBA0CG;ElB2+CT;EkBj5CE;IApII,wBA0CG;ElB8+CT;EkBp5CE;IApII,sBA0CG;ElBi/CT;EkBv5CE;IApII,sBA0CG;ElBo/CT;EkB15CE;IApII,4BA0CG;ElBu/CT;EkB75CE;IApII,6BA0CG;ElB0/CT;EkBh6CE;IApII,sBA0CG;ElB6/CT;EkBn6CE;IApII,4BA0CG;ElBggDT;EkBt6CE;IApII,2BA0CG;ElBmgDT;EkBz6CE;IApII,yBA0CG;ElBsgDT;EkB56CE;IApII,2BA0CG;ElBygDT;EkB/6CE;IApII,yBA0CG;ElB4gDT;EkBl7CE;IApII,yBA0CG;ElB+gDT;EkBr7CE;IApII,gBA0CG;ElBkhDT;EkBx7CE;IApII,iBA0CG;ElBqhDT;EkB37CE;IApII,UA0CG;ElBwhDT;EkB97CE;IApII,gBA0CG;ElB2hDT;EkBj8CE;IApII,eA0CG;ElB8hDT;EkBp8CE;IApII,aA0CG;ElBiiDT;EkBv8CE;IApII,eA0CG;ElBoiDT;EkB18CE;IApII,aA0CG;ElBuiDT;EkB78CE;IApII,uBA0CG;ElB0iDT;EkBh9CE;IApII,wBA0CG;ElB6iDT;EkBn9CE;IApII,iBA0CG;ElBgjDT;EkBt9CE;IApII,uBA0CG;ElBmjDT;EkBz9CE;IApII,sBA0CG;ElBsjDT;EkB59CE;IApII,oBA0CG;ElByjDT;EkB/9CE;IApII,sBA0CG;ElB4jDT;EkBl+CE;IApII,oBA0CG;ElB+jDT;EkBr+CE;IApII,sBA0CG;ElBkkDT;EkBx+CE;IApII,uBA0CG;ElBqkDT;EkB3+CE;IApII,gBA0CG;ElBwkDT;EkB9+CE;IApII,sBA0CG;ElB2kDT;EkBj/CE;IApII,qBA0CG;ElB8kDT;EkBp/CE;IApII,mBA0CG;ElBilDT;EkBv/CE;IApII,qBA0CG;ElBolDT;EkB1/CE;IApII,mBA0CG;ElBulDT;EkB7/CE;IApII,4BA0CG;ElB0lDT;EkBhgDE;IApII,6BA0CG;ElB6lDT;EkBngDE;IApII,sBA0CG;ElBgmDT;EkBtgDE;IApII,4BA0CG;ElBmmDT;EkBzgDE;IApII,2BA0CG;ElBsmDT;EkB5gDE;IApII,yBA0CG;ElBymDT;EkB/gDE;IApII,2BA0CG;ElB4mDT;EkBlhDE;IApII,yBA0CG;ElB+mDT;EkBrhDE;IApII,2BA0CG;ElBknDT;EkBxhDE;IApII,4BA0CG;ElBqnDT;EkB3hDE;IApII,qBA0CG;ElBwnDT;EkB9hDE;IApII,2BA0CG;ElB2nDT;EkBjiDE;IApII,0BA0CG;ElB8nDT;EkBpiDE;IApII,wBA0CG;ElBioDT;EkBviDE;IApII,0BA0CG;ElBooDT;EkB1iDE;IApII,wBA0CG;ElBuoDT;EkB7iDE;IApII,0BA0CG;ElB0oDT;EkBhjDE;IApII,2BA0CG;ElB6oDT;EkBnjDE;IApII,oBA0CG;ElBgpDT;EkBtjDE;IApII,0BA0CG;ElBmpDT;EkBzjDE;IApII,yBA0CG;ElBspDT;EkB5jDE;IApII,uBA0CG;ElBypDT;EkB/jDE;IApII,yBA0CG;ElB4pDT;EkBlkDE;IApII,uBA0CG;ElB+pDT;EkBrkDE;IApII,6BA0CG;ElBkqDT;EkBxkDE;IApII,8BA0CG;ElBqqDT;EkB3kDE;IApII,uBA0CG;ElBwqDT;EkB9kDE;IApII,6BA0CG;ElB2qDT;EkBjlDE;IApII,4BA0CG;ElB8qDT;EkBplDE;IApII,0BA0CG;ElBirDT;EkBvlDE;IApII,4BA0CG;ElBorDT;EkB1lDE;IApII,0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;EkB37DE;IA7II,wDAmDG;IAnDH,mBAqES;ElBugEf;EkB/7DE;IA7II,wDAmDG;IAnDH,mBAqES;ElB2gEf;EkBn8DE;IApII,yDA0CG;ElBgiET;EkBt8DE;IApII,yDA0CG;ElBmiET;EkBz8DE;IApII,yDA0CG;ElBsiET;EkB58DE;IApII,yDA0CG;ElByiET;EkB/8DE;IApII,yDA0CG;ElB4iET;EkBl9DE;IApII,yDA0CG;ElB+iET;EkBr9DE;IApII,yDA0CG;ElBkjET;EkBx9DE;IApII,yDA0CG;ElBqjET;EkB39DE;IApII,yDA0CG;ElBwjET;EkB99DE;IApII,mBA0CG;ElB2jET;EkBj+DE;IApII,iEA0CG;ElB8jET;EkB78DM;IA3JA,iEA0CG;ElBikET;EkBv+DE;IApII,iEA0CG;ElBokET;EkBn9DM;IA3JA,iEA0CG;ElBukET;EkB7+DE;IApII,iEA0CG;ElB0kET;EkBz9DM;IA3JA,iEA0CG;ElB6kET;EkBn/DE;IApII,iEA0CG;ElBglET;EkB/9DM;IA3JA,iEA0CG;ElBmlET;EkBz/DE;IApII,iEA0CG;ElBslET;EkBr+DM;IA3JA,iEA0CG;ElBylET;EkB//DE;IApII,iEA0CG;ElB4lET;EkB3+DM;IA3JA,iEA0CG;ElB+lET;EkBrgEE;IApII,iEA0CG;ElBkmET;EkBj/DM;IA3JA,iEA0CG;ElBqmET;EkB3gEE;IApII,iEA0CG;ElBwmET;EkBv/DM;IA3JA,iEA0CG;ElB2mET;EkBjhEE;IApII,iEA0CG;ElB8mET;EkB7/DM;IA3JA,iEA0CG;ElBinET;EkBvhEE;IApII,2BA0CG;ElBonET;EkBngEM;IA3JA,2BA0CG;ElBunET;EkB7hEE;IApII,8BA0CG;ElB0nET;EkBzgEM;IA3JA,8BA0CG;ElB6nET;EkBniEE;IApII,6BA0CG;ElBgoET;EkB/gEM;IA3JA,6BA0CG;ElBmoET;EkBziEE;IApII,8BA0CG;ElBsoET;EkBrhEM;IA3JA,8BA0CG;ElByoET;EkB/iEE;IApII,yEA0CG;ElB4oET;EkBljEE;IApII,wHA0CG;ElB+oET;EkBrjEE;IApII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X;IkBloFA;MApII,iBA+CO;IlB0tFX;IkBroFA;MApII,uBA+CO;IlB6tFX;IkBxoFA;MApII,2BA0CG;IlBquFP;IkB3oFA;MApII,yBA0CG;IlBwuFP;IkB9oFA;MApII,uBA0CG;IlB2uFP;IkBjpFA;MApII,8BA0CG;IlB8uFP;IkBppFA;MApII,6BA0CG;IlBivFP;IkBvpFA;MApII,6BA0CG;IlBovFP;IkB1pFA;MApII,oBA0CG;IlBuvFP;IkB7pFA;MApII,kBA0CG;IlB0vFP;IkBhqFA;MApII,qBA0CG;IlB6vFP;IkBnqFA;MApII,sBA0CG;IlBgwFP;IkBtqFA;MApII,wBA0CG;IlBmwFP;IkBzqFA;MApII,sBA0CG;IlBswFP;IkB5qFA;MApII,oBA0CG;IlBywFP;IkB/qFA;MApII,uBA0CG;IlB4wFP;IkBlrFA;MApII,qBA0CG;IlB+wFP;IkBrrFA;MApII,mBA0CG;IlBkxFP;IkBxrFA;MApII,qBA0CG;IlBqxFP;IkB3rFA;MApII,oBA0CG;IlBwxFP;IkB9rFA;MApII,yBA0CG;IlB2xFP;IkBjsFA;MApII,uBA0CG;IlB8xFP;IkBpsFA;MApII,qBA0CG;IlBiyFP;IkBvsFA;MApII,4BA0CG;IlBoyFP;IkB1sFA;MApII,2BA0CG;IlBuyFP;IkB7sFA;MApII,sBA0CG;IlB0yFP;IkBhtFA;MApII,gBA0CG;IlB6yFP;IkBntFA;MApII,sBA0CG;IlBgzFP;IkBttFA;MApII,oBA0CG;IlBmzFP;IkBztFA;MApII,kBA0CG;IlBszFP;IkB5tFA;MApII,oBA0CG;IlByzFP;IkB/tFA;MApII,mBA0CG;IlB4zFP;IkBluFA;MApII,kBA0CG;IlB+zFP;IkBruFA;MApII,gBA0CG;IlBk0FP;IkBxuFA;MApII,mBA0CG;IlBq0FP;IkB3uFA;MApII,oBA0CG;IlBw0FP;IkB9uFA;MApII,eA+CO;IlBs0FX;IkBjvFA;MApII,eA+CO;IlBy0FX;IkBpvFA;MApII,eA+CO;IlB40FX;IkBvvFA;MApII,mBA0CG;IlBo1FP;IkB1vFA;MApII,mBA+CO;IlBk1FX;IkB7vFA;MApII,sBA+CO;IlBq1FX;IkBhwFA;MApII,qBA+CO;IlBw1FX;IkBnwFA;MApII,SA0CG;IlBg2FP;IkBtwFA;MApII,QA0CG;IlBm2FP;IkBzwFA;MApII,QA0CG;IlBs2FP;IkB5wFA;MApII,QA0CG;IlBy2FP;IkB/wFA;MApII,QA0CG;IlB42FP;IkBlxFA;MApII,QA0CG;IlB+2FP;IkBrxFA;MApII,QA0CG;IlBk3FP;IkBxxFA;MApII,QA0CG;IlBq3FP;IkB3xFA;MApII,eA0CG;IlBw3FP;IkB9xFA;MApII,gBA0CG;IlB23FP;IkBjyFA;MApII,SA0CG;IlB83FP;IkBpyFA;MApII,eA0CG;IlBi4FP;IkBvyFA;MApII,cA0CG;IlBo4FP;IkB1yFA;MApII,YA0CG;IlBu4FP;IkB7yFA;MApII,cA0CG;IlB04FP;IkBhzFA;MApII,YA0CG;IlB64FP;IkBnzFA;MApII,YA0CG;IlBg5FP;IkBtzFA;MApII,sBA0CG;IlBm5FP;IkBzzFA;MApII,uBA0CG;IlBs5FP;IkB5zFA;MApII,gBA0CG;IlBy5FP;IkB/zFA;MApII,sBA0CG;IlB45FP;IkBl0FA;MApII,qBA0CG;IlB+5FP;IkBr0FA;MApII,mBA0CG;IlBk6FP;IkBx0FA;MApII,qBA0CG;IlBq6FP;IkB30FA;MApII,mBA0CG;IlBw6FP;IkB90FA;MApII,mBA0CG;IlB26FP;IkBj1FA;MApII,qBA0CG;IlB86FP;IkBp1FA;MApII,sBA0CG;IlBi7FP;IkBv1FA;MApII,eA0CG;IlBo7FP;IkB11FA;MApII,qBA0CG;IlBu7FP;IkB71FA;MApII,oBA0CG;IlB07FP;IkBh2FA;MApII,kBA0CG;IlB67FP;IkBn2FA;MApII,oBA0CG;IlBg8FP;IkBt2FA;MApII,kBA0CG;IlBm8FP;IkBz2FA;MApII,kBA0CG;IlBs8FP;IkB52FA;MApII,2BA0CG;IlBy8FP;IkB/2FA;MApII,4BA0CG;IlB48FP;IkBl3FA;MApII,qBA0CG;IlB+8FP;IkBr3FA;MApII,2BA0CG;IlBk9FP;IkBx3FA;MApII,0BA0CG;IlBq9FP;IkB33FA;MApII,wBA0CG;IlBw9FP;IkB93FA;MApII,0BA0CG;IlB29FP;IkBj4FA;MApII,wBA0CG;IlB89FP;IkBp4FA;MApII,wBA0CG;IlBi+FP;IkBv4FA;MApII,0BA0CG;IlBo+FP;IkB14FA;MApII,2BA0CG;IlBu+FP;IkB74FA;MApII,oBA0CG;IlB0+FP;IkBh5FA;MApII,0BA0CG;IlB6+FP;IkBn5FA;MApII,yBA0CG;IlBg/FP;IkBt5FA;MApII,uBA0CG;IlBm/FP;IkBz5FA;MApII,yBA0CG;IlBs/FP;IkB55FA;MApII,uBA0CG;IlBy/FP;IkB/5FA;MApII,uBA0CG;IlB4/FP;IkBl6FA;MApII,yBA0CG;IlB+/FP;IkBr6FA;MApII,0BA0CG;IlBkgGP;IkBx6FA;MApII,mBA0CG;IlBqgGP;IkB36FA;MApII,yBA0CG;IlBwgGP;IkB96FA;MApII,wBA0CG;IlB2gGP;IkBj7FA;MApII,sBA0CG;IlB8gGP;IkBp7FA;MApII,wBA0CG;IlBihGP;IkBv7FA;MApII,sBA0CG;IlBohGP;IkB17FA;MApII,sBA0CG;IlBuhGP;IkB77FA;MApII,4BA0CG;IlB0hGP;IkBh8FA;MApII,6BA0CG;IlB6hGP;IkBn8FA;MApII,sBA0CG;IlBgiGP;IkBt8FA;MApII,4BA0CG;IlBmiGP;IkBz8FA;MApII,2BA0CG;IlBsiGP;IkB58FA;MApII,yBA0CG;IlByiGP;IkB/8FA;MApII,2BA0CG;IlB4iGP;IkBl9FA;MApII,yBA0CG;IlB+iGP;IkBr9FA;MApII,yBA0CG;IlBkjGP;IkBx9FA;MApII,gBA0CG;IlBqjGP;IkB39FA;MApII,iBA0CG;IlBwjGP;IkB99FA;MApII,UA0CG;IlB2jGP;IkBj+FA;MApII,gBA0CG;IlB8jGP;IkBp+FA;MApII,eA0CG;IlBikGP;IkBv+FA;MApII,aA0CG;IlBokGP;IkB1+FA;MApII,eA0CG;IlBukGP;IkB7+FA;MApII,aA0CG;IlB0kGP;IkBh/FA;MApII,uBA0CG;IlB6kGP;IkBn/FA;MApII,wBA0CG;IlBglGP;IkBt/FA;MApII,iBA0CG;IlBmlGP;IkBz/FA;MApII,uBA0CG;IlBslGP;IkB5/FA;MApII,sBA0CG;IlBylGP;IkB//FA;MApII,oBA0CG;IlB4lGP;IkBlgGA;MApII,sBA0CG;IlB+lGP;IkBrgGA;MApII,oBA0CG;IlBkmGP;IkBxgGA;MApII,sBA0CG;IlBqmGP;IkB3gGA;MApII,uBA0CG;IlBwmGP;IkB9gGA;MApII,gBA0CG;IlB2mGP;IkBjhGA;MApII,sBA0CG;IlB8mGP;IkBphGA;MApII,qBA0CG;IlBinGP;IkBvhGA;MApII,mBA0CG;IlBonGP;IkB1hGA;MApII,qBA0CG;IlBunGP;IkB7hGA;MApII,mBA0CG;IlB0nGP;IkBhiGA;MApII,4BA0CG;IlB6nGP;IkBniGA;MApII,6BA0CG;IlBgoGP;IkBtiGA;MApII,sBA0CG;IlBmoGP;IkBziGA;MApII,4BA0CG;IlBsoGP;IkB5iGA;MApII,2BA0CG;IlByoGP;IkB/iGA;MApII,yBA0CG;IlB4oGP;IkBljGA;MApII,2BA0CG;IlB+oGP;IkBrjGA;MApII,yBA0CG;IlBkpGP;IkBxjGA;MApII,2BA0CG;IlBqpGP;IkB3jGA;MApII,4BA0CG;IlBwpGP;IkB9jGA;MApII,qBA0CG;IlB2pGP;IkBjkGA;MApII,2BA0CG;IlB8pGP;IkBpkGA;MApII,0BA0CG;IlBiqGP;IkBvkGA;MApII,wBA0CG;IlBoqGP;IkB1kGA;MApII,0BA0CG;IlBuqGP;IkB7kGA;MApII,wBA0CG;IlB0qGP;IkBhlGA;MApII,0BA0CG;IlB6qGP;IkBnlGA;MApII,2BA0CG;IlBgrGP;IkBtlGA;MApII,oBA0CG;IlBmrGP;IkBzlGA;MApII,0BA0CG;IlBsrGP;IkB5lGA;MApII,yBA0CG;IlByrGP;IkB/lGA;MApII,uBA0CG;IlB4rGP;IkBlmGA;MApII,yBA0CG;IlB+rGP;IkBrmGA;MApII,uBA0CG;IlBksGP;IkBxmGA;MApII,6BA0CG;IlBqsGP;IkB3mGA;MApII,8BA0CG;IlBwsGP;IkB9mGA;MApII,uBA0CG;IlB2sGP;IkBjnGA;MApII,6BA0CG;IlB8sGP;IkBpnGA;M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7GP;IkBh2GA;MApII,qBA0CG;IlB67GP;IkBn2GA;MApII,mBA0CG;IlBg8GP;IkBt2GA;MApII,qBA0CG;IlBm8GP;IkBz2GA;MApII,oBA0CG;IlBs8GP;IkB52GA;MApII,yBA0CG;IlBy8GP;IkB/2GA;MApII,uBA0CG;IlB48GP;IkBl3GA;MApII,qBA0CG;IlB+8GP;IkBr3GA;MApII,4BA0CG;IlBk9GP;IkBx3GA;MApII,2BA0CG;IlBq9GP;IkB33GA;MApII,sBA0CG;IlBw9GP;IkB93GA;MApII,gBA0CG;IlB29GP;IkBj4GA;MApII,sBA0CG;IlB89GP;IkBp4GA;MApII,oBA0CG;IlBi+GP;IkBv4GA;MApII,kBA0CG;IlBo+GP;IkB14GA;MApII,oBA0CG;IlBu+GP;IkB74GA;MApII,mBA0CG;IlB0+GP;IkBh5GA;MApII,kBA0CG;IlB6+GP;IkBn5GA;MApII,gBA0CG;IlBg/GP;IkBt5GA;MApII,mBA0CG;IlBm/GP;IkBz5GA;MApII,oBA0CG;IlBs/GP;IkB55GA;MApII,eA+CO;IlBo/GX;IkB/5GA;MApII,eA+CO;IlBu/GX;IkBl6GA;MApII,eA+CO;IlB0/GX;IkBr6GA;MApII,mBA0CG;IlBkgHP;IkBx6GA;MApII,mBA+CO;IlBggHX;IkB36GA;MApII,sBA+CO;IlBmgHX;IkB96GA;MApII,qBA+CO;IlBsgHX;IkBj7GA;MApII,SA0CG;IlB8gHP;IkBp7GA;MApII,QA0CG;IlBihHP;IkBv7GA;MApII,QA0CG;IlBohHP;IkB17GA;MApII,QA0CG;IlBuhHP;IkB77GA;MApII,QA0CG;IlB0hHP;IkBh8GA;MApII,QA0CG;IlB6hHP;IkBn8GA;MApII,QA0CG;IlBgiHP;IkBt8GA;MApII,QA0CG;IlBmiHP;IkBz8GA;MApII,eA0CG;IlBsiHP;IkB58GA;MApII,gBA0CG;IlByiHP;IkB/8GA;MApII,SA0CG;IlB4iHP;IkBl9GA;MApII,eA0CG;IlB+iHP;IkBr9GA;MApII,cA0CG;IlBkjHP;IkBx9GA;MApII,YA0CG;IlBqjHP;IkB39GA;MApII,cA0CG;IlBwjHP;IkB99GA;MApII,YA0CG;IlB2jHP;IkBj+GA;MApII,YA0CG;IlB8jHP;IkBp+GA;MApII,sBA0CG;IlBikHP;IkBv+GA;MApII,uBA0CG;IlBokHP;IkB1+GA;MApII,gBA0CG;IlBukHP;IkB7+GA;MApII,sBA0CG;IlB0kHP;IkBh/GA;MApII,qBA0CG;IlB6kHP;IkBn/GA;MApII,mBA0CG;IlBglHP;IkBt/GA;MApII,qBA0CG;IlBmlHP;IkBz/GA;MApII,mBA0CG;IlBslHP;IkB5/GA;MApII,mBA0CG;IlBylHP;IkB//GA;MApII,qBA0CG;IlB4lHP;IkBlgHA;MApII,sBA0CG;IlB+lHP;IkBrgHA;MApII,eA0CG;IlBkmHP;IkBxgHA;MApII,qBA0CG;IlBqmHP;IkB3gHA;MApII,oBA0CG;IlBwmHP;IkB9gHA;MApII,kBA0CG;IlB2mHP;IkBjhHA;MApII,oBA0CG;IlB8mHP;IkBphHA;MApII,kBA0CG;IlBinHP;IkBvhHA;MApII,kBA0CG;IlBonHP;IkB1hHA;MApII,2BA0CG;IlBunHP;IkB7hHA;MApII,4BA0CG;IlB0nHP;IkBhiHA;MApII,qBA0CG;IlB6nHP;IkBniHA;MApII,2BA0CG;IlBgoHP;IkBtiHA;MApII,0BA0CG;IlBmoHP;IkBziHA;MApII,wBA0CG;IlBsoHP;IkB5iHA;MApII,0BA0CG;IlByoHP;IkB/iHA;MApII,wBA0CG;IlB4oHP;IkBljHA;MApII,wBA0CG;IlB+oHP;IkBrjHA;MApII,0BA0CG;IlBkpHP;IkBxjHA;MApII,2BA0CG;IlBqpHP;IkB3jHA;MApII,oBA0CG;IlBwpHP;IkB9jHA;MApII,0BA0CG;IlB2pHP;IkBjkHA;MApII,yBA0CG;IlB8pHP;IkBpkHA;MApII,uBA0CG;IlBiqHP;IkBvkHA;MApII,yBA0CG;IlBoqHP;IkB1kHA;MApII,uBA0CG;IlBuqHP;IkB7kHA;MApII,uBA0CG;IlB0qHP;IkBhlHA;MApII,yBA0CG;IlB6qHP;IkBnlHA;MApII,0BA0CG;IlBgrHP;IkBtlHA;MApII,mBA0CG;IlBmrHP;IkBzlHA;MApII,yBA0CG;IlBsrHP;IkB5lHA;MApII,wBA0CG;IlByrHP;IkB/lHA;MApII,sBA0CG;IlB4rHP;IkBlmHA;MApII,wBA0CG;IlB+rHP;IkBrmHA;MApII,sBA0CG;IlBksHP;IkBxmHA;MApII,sBA0CG;IlBqsHP;IkB3mHA;MApII,4BA0CG;IlBwsHP;IkB9mHA;MApII,6BA0CG;IlB2sHP;IkBjnHA;MApII,sBA0CG;IlB8sHP;IkBpnHA;MApII,4BA0CG;IlBitHP;IkBvnHA;MApII,2BA0CG;IlBotHP;IkB1nHA;MApII,yBA0CG;IlButHP;IkB7nHA;MApII,2BA0CG;IlB0tHP;IkBhoHA;MApII,yBA0CG;IlB6tHP;IkBnoHA;MApII,yBA0CG;IlBguHP;IkBtoHA;MApII,gBA0CG;IlBmuHP;IkBzoHA;MApII,iBA0CG;IlBsuHP;IkB5oHA;MApII,UA0CG;IlByuHP;IkB/oHA;MApII,gBA0CG;IlB4uHP;IkBlpHA;MApII,eA0CG;IlB+uHP;IkBrpHA;MApII,aA0CG;IlBkvHP;IkBxpHA;MApII,eA0CG;IlBqvHP;IkB3pHA;MApII,aA0CG;IlBwvHP;IkB9pHA;MApII,uBA0CG;IlB2vHP;IkBjqHA;MApII,wBA0CG;IlB8vHP;IkBpqHA;MApII,iBA0CG;IlBiwHP;IkBvqHA;MApII,uBA0CG;IlBowHP;IkB1qHA;MApII,sBA0CG;IlBuwHP;IkB7qHA;MApII,oBA0CG;IlB0wHP;IkBhrHA;MApII,sBA0CG;IlB6wHP;IkBnrHA;MApII,oBA0CG;IlBgxHP;IkBtrHA;MApII,sBA0CG;IlBmxHP;IkBzrHA;MApII,uBA0CG;IlBsxHP;IkB5rHA;MApII,gBA0CG;IlByxHP;IkB/rHA;MApII,sBA0CG;IlB4xHP;IkBlsHA;MApII,qBA0CG;IlB+xHP;IkBrsHA;MApII,mBA0CG;IlBkyHP;IkBxsHA;MApII,qBA0CG;IlBqyHP;IkB3sHA;MApII,mBA0CG;IlBwyHP;IkB9sHA;MApII,4BA0CG;IlB2yHP;IkBjtHA;MApII,6BA0CG;IlB8yHP;IkBptHA;MApII,sBA0CG;IlBizHP;IkBvtHA;MApII,4BA0CG;IlBozHP;IkB1tHA;MApII,2BA0CG;IlBuzHP;IkB7tHA;MApII,yBA0CG;IlB0zHP;IkBhuHA;MApII,2BA0CG;IlB6zHP;IkBnuHA;MApII,yBA0CG;IlBg0HP;IkBtuHA;MApII,2BA0CG;IlBm0HP;IkBzuHA;MApII,4BA0CG;IlBs0HP;IkB5uHA;MApII,qBA0CG;IlBy0HP;IkB/uHA;MApII,2BA0CG;IlB40HP;IkBlvHA;MApII,0BA0CG;IlB+0HP;IkBrvHA;MApII,wBA0CG;IlBk1HP;IkBxvHA;MApII,0BA0CG;IlBq1HP;IkB3vHA;MApII,wBA0CG;IlBw1HP;IkB9vHA;MApII,0BA0CG;IlB21HP;IkBjwHA;MApII,2BA0CG;IlB81HP;IkBpwHA;MApII,oBA0CG;IlBi2HP;IkBvwHA;MApII,0BA0CG;IlBo2HP;IkB1wHA;MApII,yBA0CG;IlBu2HP;IkB7wHA;MApII,uBA0CG;IlB02HP;IkBhxHA;MApII,yBA0CG;IlB62HP;IkBnxHA;MApII,uBA0CG;IlBg3HP;IkBtxHA;MApII,6BA0CG;IlBm3HP;IkBzxHA;MApII,8BA0CG;IlBs3HP;IkB5xHA;MApII,uBA0CG;IlBy3HP;IkB/xHA;MApII,6BA0CG;IlB43HP;IkBlyHA;MApII,4BA0CG;IlB+3HP;IkBryHA;MApII,0BA0CG;IlBk4HP;IkBxyHA;MApII,4BA0CG;IlBq4HP;IkB3yHA;MApII,0BA0CG;IlBw4HP;IkB9yHA;MApII,YA0CG;IlB24HP;IkBjzHA;MApII,aA0CG;IlB84HP;IkBpzHA;MApII,MA0CG;IlBi5HP;IkBvzHA;MApII,YA0CG;IlBo5HP;IkB1zHA;MApII,WA0CG;IlBu5HP;IkB7zHA;MApII,SA0CG;IlB05HP;IkBh0HA;MApII,WA0CG;IlB65HP;IkBn0HA;MApII,SA0CG;IlBg6HP;IkBt0HA;MApII,gBA0CG;IlBm6HP;IkBz0HA;MApII,iBA0CG;IlBs6HP;IkB50HA;MApII,UA0CG;IlBy6HP;IkB/0HA;MApII,gBA0CG;IlB46HP;IkBl1HA;MApII,eA0CG;IlB+6HP;IkBr1HA;MApII,aA0CG;IlBk7HP;IkBx1HA;MApII,eA0CG;IlBq7HP;IkB31HA;MApII,aA0CG;IlBw7HP;IkB91HA;MApII,wBA0CG;MA1CH,mBA0CG;IlB27HP;IkBj2HA;MApII,yBA0CG;MA1CH,oBA0CG;IlB87HP;IkBp2HA;MApII,kBA0CG;MA1CH,aA0CG;IlBi8HP;IkBv2HA;MApII,wBA0CG;MA1CH,mBA0CG;IlBo8HP;IkB12HA;MApII,uBA0CG;MA1CH,kBA0CG;IlBu8HP;IkB72HA;MApII,qBA0CG;MA1CH,gBA0CG;IlB08HP;IkBh3HA;MApII,uBA0CG;MA1CH,kBA0CG;IlB68HP;IkBn3HA;MApII,qBA0CG;MA1CH,gBA0CG;IlBg9HP;IkBt3HA;MApII,iBA0CG;IlBm9HP;IkBz3HA;MApII,eA0CG;IlBs9HP;IkB53HA;MApII,kBA0CG;IlBy9HP;EACF;EOv+HE;IWuGA;MApII,mBA0CG;IlB89HP;IkBp4HA;MApII,iBA0CG;IlBi+HP;IkBv4HA;MApII,WA0CG;IlBo+HP;IkB14HA;MApII,sBA0CG;MA1CH,mBA0CG;IlBu+HP;IkB74HA;MApII,oBA0CG;MA1CH,iBA0CG;IlB0+HP;IkBh5HA;MApII,mBA0CG;MA1CH,gBA0CG;IlB6+HP;IkBn5HA;MApII,yBA0CG;MA1CH,sBA0CG;IlBg/HP;IkBt5HA;MApII,mBA0CG;MA1CH,gBA0CG;IlBm/HP;IkBz5HA;MApII,eA+CO;IlBi/HX;IkB55HA;MApII,qBA+CO;IlBo/HX;IkB/5HA;MApII,cA+CO;IlBu/HX;IkBl6HA;MApII,aA+CO;IlB0/HX;IkBr6HA;MApII,oBA+CO;IlB6/HX;IkBx6HA;MApII,cA+CO;IlBggIX;IkB36HA;MApII,kBA+CO;IlBmgIX;IkB96HA;MApII,mBA+CO;IlBsgIX;IkBj7HA;MApII,aA+CO;IlBygIX;IkBp7HA;MApII,oBA+CO;IlB4gIX;IkBv7HA;MApII,iBA+CO;IlB+gIX;IkB17HA;MApII,kBA+CO;IlBkhIX;IkB77HA;MApII,aA+CO;IlBqhIX;IkBh8HA;MApII,cA0CG;IlB6hIP;IkBn8HA;MApII,mBA+CO;IlB2hIX;IkBt8HA;MApII,sBA+CO;IlB8hIX;IkBz8HA;MApII,2BA+CO;IlBiiIX;IkB58HA;MApII,8BA+CO;IlBoiIX;IkB/8HA;MApII,YA0CG;IlB4iIP;IkBl9HA;MApII,YA0CG;IlB+iIP;IkBr9HA;MApII,cA0CG;IlBkjIP;IkBx9HA;MApII,cA0CG;IlBqjIP;IkB39HA;MApII,eA+CO;IlBmjIX;IkB99HA;MApII,iBA+CO;IlBsjIX;IkBj+HA;MApII,uBA+CO;IlByjIX;IkBp+HA;MApII,2BA0CG;IlBikIP;IkBv+HA;MApII,yBA0CG;IlBokIP;IkB1+HA;MApII,uBA0CG;IlBukIP;IkB7+HA;MApII,8BA0CG;IlB0kIP;IkBh/HA;MApII,6BA0CG;IlB6kIP;IkBn/HA;MApII,6BA0CG;IlBglIP;IkBt/HA;MApII,oBA0CG;IlBmlIP;IkBz/HA;MApII,kBA0CG;IlBslIP;IkB5/HA;MApII,qBA0CG;IlBylIP;IkB//HA;MApII,sBA0CG;IlB4lIP;IkBlgIA;MApII,wBA0CG;IlB+lIP;IkBrgIA;MApII,sBA0CG;IlBkmIP;IkBxgIA;MApII,oBA0CG;IlBqmIP;IkB3gIA;MApII,uBA0CG;IlBwmIP;IkB9gIA;MApII,qBA0CG;IlB2mIP;IkBjhIA;MApII,mBA0CG;IlB8mIP;IkBphIA;MApII,qBA0CG;IlBinIP;IkBvhIA;MApII,oBA0CG;IlBonIP;IkB1hIA;MApII,yBA0CG;IlBunIP;IkB7hIA;MApII,uBA0CG;IlB0nIP;IkBhiIA;MApII,qBA0CG;IlB6nIP;IkBniIA;MApII,4BA0CG;IlBgoIP;IkBtiIA;MApII,2BA0CG;IlBmoIP;IkBziIA;MApII,sBA0CG;IlBsoIP;IkB5iIA;MApII,gBA0CG;IlByoIP;IkB/iIA;MApII,sBA0CG;IlB4oIP;IkBljIA;MApII,oBA0CG;IlB+oIP;IkBrjIA;MApII,kBA0CG;IlBkpIP;IkBxjIA;MApII,oBA0CG;IlBqpIP;IkB3jIA;MApII,mBA0CG;IlBwpIP;IkB9jIA;MApII,kBA0CG;IlB2pIP;IkBjkIA;MApII,gBA0CG;IlB8pIP;IkBpkIA;MApII,mBA0CG;IlBiqIP;IkBvkIA;MApII,oBA0CG;IlBoqIP;IkB1kIA;MApII,eA+CO;IlBkqIX;IkB7kIA;MApII,eA+CO;IlBqqIX;IkBhlIA;MApII,eA+CO;IlBwqIX;IkBnlIA;MApII,mBA0CG;IlBgrIP;IkBtlIA;MApII,mBA+CO;IlB8qIX;IkBzlIA;MApII,sBA+CO;IlBirIX;IkB5lIA;MApII,qBA+CO;IlBorIX;IkB/lIA;MApII,SA0CG;IlB4rIP;IkBlmIA;MApII,QA0CG;IlB+rIP;IkBrmIA;MApII,QA0CG;IlBksIP;IkBxmIA;MApII,QA0CG;IlBqsIP;IkB3mIA;MApII,QA0CG;IlBwsIP;IkB9mIA;MApII,QA0CG;IlB2sIP;IkBjnIA;MApII,QA0CG;IlB8sIP;IkBpnIA;MApII,QA0CG;IlBitIP;IkBvnIA;MApII,eA0CG;IlBotIP;IkB1nIA;MApII,gBA0CG;IlButIP;IkB7nIA;MApII,SA0CG;IlB0tIP;IkBhoIA;MApII,eA0CG;IlB6tIP;IkBnoIA;MApII,cA0CG;IlBguIP;IkBtoIA;MApII,YA0CG;IlBmuIP;IkBzoIA;MApII,cA0CG;IlBsuIP;IkB5oIA;MApII,YA0CG;IlByuIP;IkB/oIA;MApII,YA0CG;IlB4uIP;IkBlpIA;MApII,sBA0CG;IlB+uIP;IkBrpIA;MApII,uBA0CG;IlBkvIP;IkBxpIA;MApII,gBA0CG;IlBqvIP;IkB3pIA;MApII,sBA0CG;IlBwvIP;IkB9pIA;MApII,qBA0CG;IlB2vIP;IkBjqIA;MApII,mBA0CG;IlB8vIP;IkBpqIA;MApII,qBA0CG;IlBiwIP;IkBvqIA;MApII,mBA0CG;IlBowIP;IkB1qIA;MApII,mBA0CG;IlBuwIP;IkB7qIA;MApII,qBA0CG;IlB0wIP;IkBhrIA;MApII,sBA0CG;IlB6wIP;IkBnrIA;MApII,eA0CG;IlBgxIP;IkBtrIA;MApII,qBA0CG;IlBmxIP;IkBzrIA;MApII,oBA0CG;IlBsxIP;IkB5rIA;MApII,kBA0CG;IlByxIP;IkB/rIA;MApII,oBA0CG;IlB4xIP;IkBlsIA;MApII,kBA0CG;IlB+xIP;IkBrsIA;MApII,kBA0CG;IlBkyIP;IkBxsIA;MApII,2BA0CG;IlBqyIP;IkB3sIA;MApII,4BA0CG;IlBwyIP;IkB9sIA;MApII,qBA0CG;IlB2yIP;IkBjtIA;MApII,2BA0CG;IlB8yIP;IkBptIA;MApII,0BA0CG;IlBizIP;IkBvtIA;MApII,wBA0CG;IlBozIP;IkB1tIA;MApII,0BA0CG;IlBuzIP;IkB7tIA;MApII,wBA0CG;IlB0zIP;IkBhuIA;MApII,wBA0CG;IlB6zIP;IkBnuIA;MApII,0BA0CG;IlBg0IP;IkBtuIA;MApII,2BA0CG;IlBm0IP;IkBzuIA;MApII,oBA0CG;IlBs0IP;IkB5uIA;MApII,0BA0CG;IlBy0IP;IkB/uIA;MApII,yBA0CG;IlB40IP;IkBlvIA;MApII,uBA0CG;IlB+0IP;IkBrvIA;MApII,yBA0CG;IlBk1IP;IkBxvIA;MApII,uBA0CG;IlBq1IP;IkB3vIA;MApII,uBA0CG;IlBw1IP;IkB9vIA;MApII,yBA0CG;IlB21IP;IkBjwIA;MApII,0BA0CG;IlB81IP;IkBpwIA;MApII,mBA0CG;IlBi2IP;IkBvwIA;MApII,yBA0CG;IlBo2IP;IkB1wIA;MApII,wBA0CG;IlBu2IP;IkB7wIA;MApII,sBA0CG;IlB02IP;IkBhxIA;MApII,wBA0CG;IlB62IP;IkBnxIA;MApII,sBA0CG;IlBg3IP;IkBtxIA;MApII,sBA0CG;IlBm3IP;IkBzxIA;MApII,4BA0CG;IlBs3IP;IkB5xIA;MApII,6BA0CG;IlBy3IP;IkB/xIA;MApII,sBA0CG;IlB43IP;IkBlyIA;MApII,4BA0CG;IlB+3IP;IkBryIA;MApII,2BA0CG;IlBk4IP;IkBxyIA;MApII,yBA0CG;IlBq4IP;IkB3yIA;MApII,2BA0CG;IlBw4IP;IkB9yIA;MApII,yBA0CG;IlB24IP;IkBjzIA;MApII,yBA0CG;IlB84IP;IkBpzIA;MApII,gBA0CG;IlBi5IP;IkBvzIA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pII,6BA0CG;IlB2vJP;IkBjqJA;MApII,6BA0CG;IlB8vJP;IkBpqJA;MApII,oBA0CG;IlBiwJP;IkBvqJA;MApII,kBA0CG;IlBowJP;IkB1qJA;MApII,qBA0CG;IlBuwJP;IkB7qJA;MApII,sBA0CG;IlB0wJP;IkBhrJA;MApII,wBA0CG;IlB6wJP;IkBnrJA;MApII,sBA0CG;IlBgxJP;IkBtrJA;MApII,oBA0CG;IlBmxJP;IkBzrJA;MApII,uBA0CG;IlBsxJP;IkB5rJA;MApII,qBA0CG;IlByxJP;IkB/rJA;MApII,mBA0CG;IlB4xJP;IkBlsJA;MApII,qBA0CG;IlB+xJP;IkBrsJA;MApII,oBA0CG;IlBkyJP;IkBxsJA;MApII,yBA0CG;IlBqyJP;IkB3sJA;MApII,uBA0CG;IlBwyJP;IkB9sJA;MApII,qBA0CG;IlB2yJP;IkBjtJA;MApII,4BA0CG;IlB8yJP;IkBptJA;MApII,2BA0CG;IlBizJP;IkBvtJA;MApII,sBA0CG;IlBozJP;IkB1tJA;MApII,gBA0CG;IlBuzJP;IkB7tJA;MApII,sBA0CG;IlB0zJP;IkBhuJA;MApII,oBA0CG;IlB6zJP;IkBnuJA;MApII,kBA0CG;IlBg0JP;IkBtuJA;MApII,oBA0CG;IlBm0JP;IkBzuJA;MApII,mBA0CG;IlBs0JP;IkB5uJA;MApII,kBA0CG;IlBy0JP;IkB/uJA;MApII,gBA0CG;IlB40JP;IkBlvJA;MApII,mBA0CG;IlB+0JP;IkBrvJA;MApII,oBA0CG;IlBk1JP;IkBxvJA;MApII,eA+CO;IlBg1JX;IkB3vJA;MApII,eA+CO;IlBm1JX;IkB9vJA;MApII,eA+CO;IlBs1JX;IkBjwJA;MApII,mBA0CG;IlB81JP;IkBpwJA;MApII,mBA+CO;IlB41JX;IkBvwJA;MApII,sBA+CO;IlB+1JX;IkB1wJA;MApII,qBA+CO;IlBk2JX;IkB7wJA;MApII,SA0CG;IlB02JP;IkBhxJA;MApII,QA0CG;IlB62JP;IkBnxJA;MApII,QA0CG;IlBg3JP;IkBtxJA;MApII,QA0CG;IlBm3JP;IkBzxJA;MApII,QA0CG;IlBs3JP;IkB5xJA;MApII,QA0CG;IlBy3JP;IkB/xJA;MApII,QA0CG;IlB43JP;IkBlyJA;MApII,QA0CG;IlB+3JP;IkBryJA;MApII,eA0CG;IlBk4JP;IkBxyJA;MApII,gBA0CG;IlBq4JP;IkB3yJA;MApII,SA0CG;IlBw4JP;IkB9yJA;MApII,eA0CG;IlB24JP;IkBjzJA;MApII,cA0CG;IlB84JP;IkBpzJA;MApII,YA0CG;IlBi5JP;IkBvzJA;MApII,cA0CG;IlBo5JP;IkB1zJA;MApII,YA0CG;IlBu5JP;IkB7zJA;MApII,YA0CG;IlB05JP;IkBh0JA;MApII,sBA0CG;IlB65JP;IkBn0JA;MApII,uBA0CG;IlBg6JP;IkBt0JA;MApII,gBA0CG;IlBm6JP;IkBz0JA;MApII,sBA0CG;IlBs6JP;IkB50JA;MApII,qBA0CG;IlBy6JP;IkB/0JA;MApII,mBA0CG;IlB46JP;IkBl1JA;MApII,qBA0CG;IlB+6JP;IkBr1JA;MApII,mBA0CG;IlBk7JP;IkBx1JA;MApII,mBA0CG;IlBq7JP;IkB31JA;MApII,qBA0CG;IlBw7JP;IkB91JA;MApII,sBA0CG;IlB27JP;IkBj2JA;MApII,eA0CG;IlB87JP;IkBp2JA;MApII,qBA0CG;IlBi8JP;IkBv2JA;MApII,oBA0CG;IlBo8JP;IkB12JA;MApII,kBA0CG;IlBu8JP;IkB72JA;MApII,oBA0CG;IlB08JP;IkBh3JA;MApII,kBA0CG;IlB68JP;IkBn3JA;MApII,kBA0CG;IlBg9JP;IkBt3JA;MApII,2BA0CG;IlBm9JP;IkBz3JA;MApII,4BA0CG;IlBs9JP;IkB53JA;MApII,qBA0CG;IlBy9JP;IkB/3JA;MApII,2BA0CG;IlB49JP;IkBl4JA;MApII,0BA0CG;IlB+9JP;IkBr4JA;MApII,wBA0CG;IlBk+JP;IkBx4JA;MApII,0BA0CG;IlBq+JP;IkB34JA;MApII,wBA0CG;IlBw+JP;IkB94JA;MApII,wBA0CG;IlB2+JP;IkBj5JA;MApII,0BA0CG;IlB8+JP;IkBp5JA;MApII,2BA0CG;IlBi/JP;IkBv5JA;MApII,oBA0CG;IlBo/JP;IkB15JA;MApII,0BA0CG;IlBu/JP;IkB75JA;MApII,yBA0CG;IlB0/JP;IkBh6JA;MApII,uBA0CG;IlB6/JP;IkBn6JA;MApII,yBA0CG;IlBggKP;IkBt6JA;MApII,uBA0CG;IlBmgKP;IkBz6JA;MApII,uBA0CG;IlBsgKP;IkB56JA;MApII,yBA0CG;IlBygKP;IkB/6JA;MApII,0BA0CG;IlB4gKP;IkBl7JA;MApII,mBA0CG;IlB+gKP;IkBr7JA;MApII,yBA0CG;IlBkhKP;IkBx7JA;MApII,wBA0CG;IlBqhKP;IkB37JA;MApII,sBA0CG;IlBwhKP;IkB97JA;MApII,wBA0CG;IlB2hKP;IkBj8JA;MApII,sBA0CG;IlB8hKP;IkBp8JA;MApII,sBA0CG;IlBiiKP;IkBv8JA;MApII,4BA0CG;IlBoiKP;IkB18JA;MApII,6BA0CG;IlBuiKP;IkB78JA;MApII,sBA0CG;IlB0iKP;IkBh9JA;MApII,4BA0CG;IlB6iKP;IkBn9JA;MApII,2BA0CG;IlBgjKP;IkBt9JA;MApII,yBA0CG;IlBmjKP;IkBz9JA;MApII,2BA0CG;IlBsjKP;IkB59JA;MApII,yBA0CG;IlByjKP;IkB/9JA;MApII,yBA0CG;IlB4jKP;IkBl+JA;MApII,gBA0CG;IlB+jKP;IkBr+JA;MApII,iBA0CG;IlBkkKP;IkBx+JA;MApII,UA0CG;IlBqkKP;IkB3+JA;MApII,gBA0CG;IlBwkKP;IkB9+JA;MApII,eA0CG;IlB2kKP;IkBj/JA;MApII,aA0CG;IlB8kKP;IkBp/JA;MApII,eA0CG;IlBilKP;IkBv/JA;MApII,aA0CG;IlBolKP;IkB1/JA;MApII,uBA0CG;IlBulKP;IkB7/JA;MApII,wBA0CG;IlB0lKP;IkBhgKA;MApII,iBA0CG;IlB6lKP;IkBngKA;MApII,uBA0CG;IlBgmKP;IkBtgKA;MApII,sBA0CG;IlBmmKP;IkBzgKA;MApII,oBA0CG;IlBsmKP;IkB5gKA;MApII,sBA0CG;IlBymKP;IkB/gKA;MApII,oBA0CG;IlB4mKP;IkBlhKA;MApII,sBA0CG;IlB+mKP;IkBrhKA;MApII,uBA0CG;IlBknKP;IkBxhKA;MApII,gBA0CG;IlBqnKP;IkB3hKA;MApII,sBA0CG;IlBwnKP;IkB9hKA;MApII,qBA0CG;IlB2nKP;IkBjiKA;MApII,mBA0CG;IlB8nKP;IkBpiKA;MApII,qBA0CG;IlBioKP;IkBviKA;MApII,mBA0CG;IlBooKP;IkB1iKA;MApII,4BA0CG;IlBuoKP;IkB7iKA;MApII,6BA0CG;IlB0oKP;IkBhjKA;MApII,sBA0CG;IlB6oKP;IkBnjKA;MApII,4BA0CG;IlBgpKP;IkBtjKA;MApII,2BA0CG;IlBmpKP;IkBzjKA;MApII,yBA0CG;IlBspKP;IkB5jKA;MApII,2BA0CG;IlBypKP;IkB/jKA;MApII,yBA0CG;IlB4pKP;IkBlkKA;MApII,2BA0CG;IlB+pKP;IkBrkKA;MApII,4BA0CG;IlBkqKP;IkBxkKA;MApII,qBA0CG;IlBqqKP;IkB3kKA;MApII,2BA0CG;IlBwqKP;IkB9kKA;MApII,0BA0CG;IlB2qKP;IkBjlKA;MApII,wBA0CG;IlB8qKP;IkBplKA;MApII,0BA0CG;IlBirKP;IkBvlKA;MApII,wBA0CG;IlBorKP;IkB1lKA;MApII,0BA0CG;IlBurKP;IkB7lKA;MApII,2BA0CG;IlB0rKP;IkBhmKA;MApII,oBA0CG;IlB6rKP;IkBnmKA;MApII,0BA0CG;IlBgsKP;IkBtmKA;MApII,yBA0CG;IlBmsKP;IkBzmKA;MApII,uBA0CG;IlBssKP;IkB5mKA;MApII,yBA0CG;IlBysKP;IkB/mKA;MApII,uBA0CG;IlB4sKP;IkBlnKA;MApII,6BA0CG;IlB+sKP;IkBrnKA;MApII,8BA0CG;IlBktKP;IkBxnKA;MApII,uBA0CG;IlBqtKP;IkB3nKA;MApII,6BA0CG;IlBwtKP;IkB9nKA;MApII,4BA0CG;IlB2tKP;IkBjoKA;MApII,0BA0CG;IlB8tKP;IkBpoKA;MApII,4BA0CG;IlBiuKP;IkBvoKA;MApII,0BA0CG;IlBouKP;IkB1oKA;MApII,YA0CG;IlBuuKP;IkB7oKA;MApII,aA0CG;IlB0uKP;IkBhpKA;MApII,MA0CG;IlB6uKP;IkBnpKA;MApII,YA0CG;IlBgvKP;IkBtpKA;MApII,WA0CG;IlBmvKP;IkBzpKA;MApII,SA0CG;IlBsvKP;IkB5pKA;MApII,WA0CG;IlByvKP;IkB/pKA;MApII,SA0CG;IlB4vKP;IkBlqKA;MApII,gBA0CG;IlB+vKP;IkBrqKA;MApII,iBA0CG;IlBkwKP;IkBxqKA;MApII,UA0CG;IlBqwKP;IkB3qKA;MApII,gBA0CG;IlBwwKP;IkB9qKA;MApII,eA0CG;IlB2wKP;IkBjrKA;MApII,aA0CG;IlB8wKP;IkBprKA;MApII,eA0CG;IlBixKP;IkBvrKA;MApII,aA0CG;IlBoxKP;IkB1rKA;MApII,wBA0CG;MA1CH,mBA0CG;IlBuxKP;IkB7rKA;MApII,yBA0CG;MA1CH,oBA0CG;IlB0xKP;IkBhsKA;MApII,kBA0CG;MA1CH,aA0CG;IlB6xKP;IkBnsKA;MApII,wBA0CG;MA1CH,mBA0CG;IlBgyKP;IkBtsKA;MApII,uBA0CG;MA1CH,kBA0CG;IlBmyKP;IkBzsKA;MApII,qBA0CG;MA1CH,gBA0CG;IlBsyKP;IkB5sKA;MApII,uBA0CG;MA1CH,kBA0CG;IlByyKP;IkB/sKA;MApII,qBA0CG;MA1CH,gBA0CG;IlB4yKP;IkBltKA;MApII,iBA0CG;IlB+yKP;IkBrtKA;MApII,eA0CG;IlBkzKP;IkBxtKA;MApII,kBA0CG;IlBqzKP;EACF;EOn0KE;IWuGA;MApII,mBA0CG;IlB0zKP;IkBhuKA;MApII,iBA0CG;IlB6zKP;IkBnuKA;MApII,WA0CG;IlBg0KP;IkBtuKA;MApII,sBA0CG;MA1CH,mBA0CG;IlBm0KP;IkBzuKA;MApII,oBA0CG;MA1CH,iBA0CG;IlBs0KP;IkB5uKA;MApII,mBA0CG;MA1CH,gBA0CG;IlBy0KP;IkB/uKA;MApII,yBA0CG;MA1CH,sBA0CG;IlB40KP;IkBlvKA;MApII,mBA0CG;MA1CH,gBA0CG;IlB+0KP;IkBrvKA;MApII,eA+CO;IlB60KX;IkBxvKA;MApII,qBA+CO;IlBg1KX;IkB3vKA;MApII,cA+CO;IlBm1KX;IkB9vKA;MApII,aA+CO;IlBs1KX;IkBjwKA;MApII,oBA+CO;IlBy1KX;IkBpwKA;MApII,cA+CO;IlB41KX;IkBvwKA;MApII,kBA+CO;IlB+1KX;IkB1wKA;MApII,mBA+CO;IlBk2KX;IkB7wKA;MApII,aA+CO;IlBq2KX;IkBhxKA;MApII,oBA+CO;IlBw2KX;IkBnxKA;MApII,iBA+CO;IlB22KX;IkBtxKA;MApII,kBA+CO;IlB82KX;IkBzxKA;MApII,aA+CO;IlBi3KX;IkB5xKA;MApII,cA0CG;IlBy3KP;IkB/xKA;MApII,mBA+CO;IlBu3KX;IkBlyKA;MApII,sBA+CO;IlB03KX;IkBryKA;MApII,2BA+CO;IlB63KX;IkBxyKA;MApII,8BA+CO;IlBg4KX;IkB3yKA;MApII,YA0CG;IlBw4KP;IkB9yKA;MApII,YA0CG;IlB24KP;IkBjzKA;MApII,cA0CG;IlB84KP;IkBpzKA;MApII,cA0CG;IlBi5KP;IkBvzKA;MApII,eA+CO;IlB+4KX;IkB1zKA;MApII,iBA+CO;IlBk5KX;IkB7zKA;MApII,uBA+CO;IlBq5KX;IkBh0KA;MApII,2BA0CG;IlB65KP;IkBn0KA;MApII,yBA0CG;IlBg6KP;IkBt0KA;MApII,uBA0CG;IlBm6KP;IkBz0KA;MApII,8BA0CG;IlBs6KP;IkB50KA;MApII,6BA0CG;IlBy6KP;IkB/0KA;MApII,6BA0CG;IlB46KP;IkBl1KA;MApII,oBA0CG;IlB+6KP;IkBr1KA;MApII,kBA0CG;IlBk7KP;IkBx1KA;MApII,qBA0CG;IlBq7KP;IkB31KA;MApII,sBA0CG;IlBw7KP;IkB91KA;MApII,wBA0CG;IlB27KP;IkBj2KA;MApII,sBA0CG;IlB87KP;IkBp2KA;MApII,oBA0CG;IlBi8KP;IkBv2KA;MApII,uBA0CG;IlBo8KP;IkB12KA;MApII,qBA0CG;IlBu8KP;IkB72KA;MApII,mBA0CG;IlB08KP;IkBh3KA;MApII,qBA0CG;IlB68KP;IkBn3KA;MApII,oBA0CG;IlBg9KP;IkBt3KA;MApII,yBA0CG;IlBm9KP;IkBz3KA;MApII,uBA0CG;IlBs9KP;IkB53KA;MApII,qBA0CG;IlBy9KP;IkB/3KA;MApII,4BA0CG;IlB49KP;IkBl4KA;MApII,2BA0CG;IlB+9KP;IkBr4KA;MApII,sBA0CG;IlBk+KP;IkBx4KA;MApII,gBA0CG;IlBq+KP;IkB34KA;MApII,sBA0CG;IlBw+KP;IkB94KA;MApII,oBA0CG;IlB2+KP;IkBj5KA;MApII,kBA0CG;IlB8+KP;IkBp5KA;MApII,oBA0CG;IlBi/KP;IkBv5KA;MApII,mBA0CG;IlBo/KP;IkB15KA;MApII,kBA0CG;IlBu/KP;IkB75KA;MApII,gBA0CG;IlB0/KP;IkBh6KA;MApII,mBA0CG;IlB6/KP;IkBn6KA;MApII,oBA0CG;IlBggLP;IkBt6KA;MApII,eA+CO;IlB8/KX;IkBz6KA;MApII,eA+CO;IlBigLX;IkB56KA;MApII,eA+CO;IlBogLX;IkB/6KA;MApII,mBA0CG;IlB4gLP;IkBl7KA;MApII,mBA+CO;IlB0gLX;IkBr7KA;MApII,sBA+CO;IlB6gLX;IkBx7KA;MApII,qBA+CO;IlBghLX;IkB37KA;MApII,SA0CG;IlBwhLP;IkB97KA;MApII,QA0CG;IlB2hLP;IkBj8KA;MApII,QA0CG;IlB8hLP;IkBp8KA;MApII,QA0CG;IlBiiLP;IkBv8KA;MApII,QA0CG;IlBoiLP;IkB18KA;MApII,QA0CG;IlBuiLP;IkB78KA;MApII,QA0CG;IlB0iLP;IkBh9KA;MApII,QA0CG;IlB6iLP;IkBn9KA;MApII,eA0CG;IlBgjLP;IkBt9KA;MApII,gBA0CG;IlBmjLP;IkBz9KA;MApII,SA0CG;IlBsjLP;IkB59KA;MApII,eA0CG;IlByjLP;IkB/9KA;MApII,cA0CG;IlB4jLP;IkBl+KA;MApII,YA0CG;IlB+jLP;IkBr+KA;MApII,cA0CG;IlBkkLP;IkBx+KA;MApII,YA0CG;IlBqkLP;IkB3+KA;MApII,YA0CG;IlBwkLP;IkB9+KA;MApII,sBA0CG;IlB2kLP;IkBj/KA;MApII,uBA0CG;IlB8kLP;IkBp/KA;MApII,gBA0CG;IlBilLP;IkBv/KA;MApII,sBA0CG;IlBolLP;IkB1/KA;MApII,qBA0CG;IlBulLP;IkB7/KA;MApII,mBA0CG;IlB0lLP;IkBhgLA;MApII,qBA0CG;IlB6lLP;IkBngLA;MApII,mBA0CG;IlBgmLP;IkBtgLA;MApII,mBA0CG;IlBmmLP;IkBzgLA;MApII,qBA0CG;IlBsmLP;IkB5gLA;MApII,sBA0CG;IlBymLP;IkB/gLA;MApII,eA0CG;IlB4mLP;IkBlhLA;MApII,qBA0CG;IlB+mLP;IkBrhLA;MApII,oBA0CG;IlBknLP;IkBxhLA;MApII,kBA0CG;IlBqnLP;IkB3hLA;MApII,oBA0CG;IlBwnLP;IkB9hLA;MApII,kBA0CG;IlB2nLP;IkBjiLA;MApII,kBA0CG;IlB8nLP;IkBpiLA;MApII,2BA0CG;IlBioLP;IkBviLA;MApII,4BA0CG;IlBooLP;IkB1iLA;MApII,qBA0CG;IlBuoLP;IkB7iLA;MApII,2BA0CG;IlB0oLP;IkBhjLA;MApII,0BA0CG;IlB6oLP;IkBnjLA;MApII,wBA0CG;IlBgpLP;IkBtjLA;MApII,0BA0CG;IlBmpLP;IkBzjLA;MApII,wBA0CG;IlBspLP;IkB5jLA;MApII,wBA0CG;IlBypLP;IkB/jLA;MApII,0BA0CG;IlB4pLP;IkBlkLA;MApII,2BA0CG;IlB+pLP;IkBrkLA;MApII,oBA0CG;IlBkqLP;IkBxkLA;MApII,0BA0CG;IlBqqLP;IkB3kLA;MApII,yBA0CG;IlBwqLP;IkB9kLA;MApII,uBA0CG;IlB2qLP;IkBjlLA;MApII,yBA0CG;IlB8qLP;IkBplLA;MApII,uBA0CG;IlBirLP;IkBvlLA;MApII,uBA0CG;IlBorLP;IkB1lLA;MApII,yBA0CG;IlBurLP;IkB7lLA;MApII,0BA0CG;IlB0rLP;IkBhmLA;MApII,mBA0CG;IlB6rLP;IkBnmLA;MApII,yBA0CG;IlBgsLP;IkBtmLA;MApII,wBA0CG;IlBmsLP;IkBzmLA;MApII,sBA0CG;IlBssLP;IkB5mLA;MApII,wBA0CG;IlBysLP;IkB/mLA;MApII,sBA0CG;IlB4sLP;IkBlnLA;MApII,sBA0CG;IlB+sLP;IkBrnLA;MApII,4BA0CG;IlBktLP;IkBxnLA;MApII,6BA0CG;IlBqtLP;IkB3nLA;MApII,sBA0CG;IlBwtLP;IkB9nLA;MApII,4BA0CG;IlB2tLP;IkBjoLA;MApII,2BA0CG;IlB8tLP;IkBpoLA;MApII,yBA0CG;IlBiuLP;IkBvoLA;MApII,2BA0CG;IlBouLP;IkB1oLA;MApII,yBA0CG;IlBuuLP;IkB7oLA;MApII,yBA0CG;IlB0uLP;IkBhpLA;MApII,gBA0CG;IlB6uLP;IkBnpLA;MApII,iBA0CG;IlBgvLP;IkBtpLA;MApII,UA0CG;IlBmvLP;IkBzpLA;MApII,gBA0CG;IlBsvLP;IkB5pLA;MApII,eA0CG;IlByvLP;IkB/pLA;MApII,aA0CG;IlB4vLP;IkBlqLA;MApII,eA0CG;IlB+vLP;IkBrqLA;MApII,aA0CG;IlBkwLP;IkBxqLA;MApII,uBA0CG;IlBqwLP;IkB3qLA;MApII,wBA0CG;IlBwwLP;IkB9qLA;MApII,iBA0CG;IlB2wLP;IkBjrLA;MApII,uBA0CG;IlB8wLP;IkBprLA;MApII,sBA0CG;IlBixLP;IkBvrLA;MApII,oBA0CG;IlBoxLP;IkB1rLA;MApII,sBA0CG;IlBuxLP;IkB7rLA;MApII,oBA0CG;IlB0xLP;IkBhsLA;MApII,sBA0CG;IlB6xLP;IkBnsLA;MApII,uBA0CG;IlBgyLP;IkBtsLA;MApII,gBA0CG;IlBmyLP;IkBzsLA;MApII,sBA0CG;IlBsyLP;IkB5sLA;MApII,qBA0CG;IlByyLP;IkB/sLA;MApII,mBA0CG;IlB4yLP;IkBltLA;MApII,qBA0CG;IlB+yLP;IkBrtLA;MApII,mBA0CG;IlBkzLP;IkBxtLA;MApII,4BA0CG;IlBqzLP;IkB3tLA;MApII,6BA0CG;IlBwzLP;IkB9tLA;MApII,sBA0CG;IlB2zLP;IkBjuLA;MApII,4BA0CG;IlB8zLP;IkBpuLA;MApII,2BA0CG;IlBi0LP;IkBvuLA;MApII,yBA0CG;IlBo0LP;IkB1uLA;MApII,2BA0CG;IlBu0LP;IkB7uLA;MApII,yBA0CG;IlB00LP;IkBhvLA;MApII,2BA0CG;IlB60LP;IkBnvLA;MApII,4BA0CG;IlBg1LP;IkBtvLA;MApII,qBA0CG;IlBm1LP;IkBzvLA;MApII,2BA0CG;IlBs1LP;IkB5vLA;MApII,0BA0CG;IlBy1LP;IkB/vLA;MApII,wBA0CG;IlB41LP;IkBlwLA;MApII,0BA0CG;IlB+1LP;IkBrwLA;MApII,wBA0CG;IlBk2LP;IkBxwLA;MApII,0BA0CG;IlBq2LP;IkB3wLA;MApII,2BA0CG;IlBw2LP;IkB9wLA;MApII,oBA0CG;IlB22LP;IkBjxLA;MApII,0BA0CG;IlB82LP;IkBpxLA;MApII,yBA0CG;IlBi3LP;IkBvxLA;MApII,uBA0CG;IlBo3LP;IkB1xLA;MApII,yBA0CG;IlBu3LP;IkB7xLA;MApII,uBA0CG;IlB03LP;IkBhyLA;MApII,6BA0CG;IlB63LP;IkBnyLA;MApII,8BA0CG;IlBg4LP;IkBtyLA;MApII,uBA0CG;IlBm4LP;IkBzyLA;MApII,6BA0CG;IlBs4LP;IkB5yLA;MApII,4BA0CG;IlBy4LP;IkB/yLA;MApII,0BA0CG;IlB44LP;IkBlzLA;MApII,4BA0CG;IlB+4LP;IkBrzLA;MApII,0BA0CG;IlBk5LP;IkBxzLA;MApII,YA0CG;IlBq5LP;IkB3zLA;MApII,aA0CG;IlBw5LP;IkB9zLA;MApII,MA0CG;IlB25LP;IkBj0LA;MApII,YA0CG;IlB85LP;IkBp0LA;MApII,WA0CG;IlBi6LP;IkBv0LA;MApII,SA0CG;IlBo6LP;IkB10LA;MApII,WA0CG;IlBu6LP;IkB70LA;MApII,SA0CG;IlB06LP;IkBh1LA;MApII,gBA0CG;IlB66LP;IkBn1LA;MApII,iBA0CG;IlBg7LP;IkBt1LA;MApII,UA0CG;IlBm7LP;IkBz1LA;MApII,gBA0CG;IlBs7LP;IkB51LA;MApII,eA0CG;IlBy7LP;IkB/1LA;MApII,aA0CG;IlB47LP;IkBl2LA;MApII,eA0CG;IlB+7LP;IkBr2LA;MApII,aA0CG;IlBk8LP;IkBx2LA;MApII,wBA0CG;MA1CH,mBA0CG;IlBq8LP;IkB32LA;MApII,yBA0CG;MA1CH,oBA0CG;IlBw8LP;IkB92LA;MApII,kBA0CG;MA1CH,aA0CG;IlB28LP;IkBj3LA;MApII,wBA0CG;MA1CH,mBA0CG;IlB88LP;IkBp3LA;MApII,uBA0CG;MA1CH,kBA0CG;IlBi9LP;IkBv3LA;MApII,qBA0CG;MA1CH,gBA0CG;IlBo9LP;IkB13LA;MApII,uBA0CG;MA1CH,kBA0CG;IlBu9LP;IkB73LA;MApII,qBA0CG;MA1CH,gBA0CG;IlB09LP;IkBh4LA;MApII,iBA0CG;IlB69LP;IkBn4LA;MApII,eA0CG;IlBg+LP;IkBt4LA;MApII,kBA0CG;IlBm+LP;EACF;AACF","file":"bootstrap-utilities.css","sourcesContent":["$file: \"\" !default;\n\n/*!\n  * Bootstrap #{$file} v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n","// stylelint-disable hue-degree-notation, @stylistic/number-leading-zero\n\n@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// Easily convert colors to oklch() with https://oklch.com/\n\n$white: #fff !default;\n$black: #000 !default;\n\n// scss-docs-start colors-list\n$blue: oklch(60% 0.24 240) !default;\n$indigo: oklch(56% 0.26 288) !default;\n$violet: oklch(56% 0.24 300) !default;\n$purple: oklch(56% 0.24 320) !default;\n$pink: oklch(60% 0.22 4) !default;\n$red: oklch(60% 0.22 20) !default;\n$orange: oklch(70% 0.22 52) !default;\n$amber: oklch(79% 0.2 78) !default;\n$yellow: oklch(88% 0.24 88) !default;\n$lime: oklch(65% 0.24 135) !default;\n$green: oklch(64% 0.22 160) !default;\n$teal: oklch(68% 0.22 190) !default;\n$cyan: oklch(69% 0.22 220) !default;\n$brown: oklch(60% 0.12 54) !default;\n$gray: oklch(60% 0.02 245) !default;\n$pewter: oklch(65% 0.01 290) !default;\n// scss-docs-end colors-list\n\n// scss-docs-start colors-map\n$colors: () !default;\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$colors: defaults(\n  (\n    \"blue\": $blue,\n    \"indigo\": $indigo,\n    \"violet\": $violet,\n    \"purple\": $purple,\n    \"pink\": $pink,\n    \"red\": $red,\n    \"orange\": $orange,\n    \"amber\": $amber,\n    \"yellow\": $yellow,\n    \"lime\": $lime,\n    \"green\": $green,\n    \"teal\": $teal,\n    \"cyan\": $cyan,\n    \"brown\": $brown,\n    \"gray\": $gray,\n    \"pewter\": $pewter,\n  ),\n  $colors\n);\n// scss-docs-end colors-map\n\n// scss-docs-start color-mix-options\n$color-mix-space: lab !default;\n$tint-color: var(--white) !default;\n$shade-color: var(--black) !default;\n\n$color-tints: (\n  \"025\": 94%,\n  \"050\": 90%,\n  \"100\": 80%,\n  \"200\": 60%,\n  \"300\": 40%,\n  \"400\": 20%,\n) !default;\n\n$color-shades: (\n  \"600\": 16%,\n  \"700\": 32%,\n  \"800\": 48%,\n  \"900\": 64%,\n  \"950\": 76%,\n  \"975\": 88%,\n) !default;\n// scss-docs-end color-mix-options\n\n// scss-docs-start color-tokens\n$color-tokens: () !default;\n\n$-color-defaults: () !default;\n@each $color, $value in $colors {\n  @each $stop, $percent in $color-tints {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$tint-color} #{$percent}, #{$value}));\n  }\n  $-color-defaults: map.set($-color-defaults, --#{$color}-500, #{$value});\n  @each $stop, $percent in $color-shades {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$shade-color} #{$percent}, #{$value}));\n  }\n}\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$color-tokens: defaults($-color-defaults, $color-tokens);\n// scss-docs-end color-tokens\n\n:root {\n  @include tokens($color-tokens);\n}\n","// Mixin to output tokens as CSS custom properties\n\n// scss-docs-start mixin-tokens\n@mixin tokens($map) {\n  @each $prop, $value in $map {\n    #{$prop}: #{$value};\n  }\n}\n// scss-docs-end mixin-tokens\n","/*!\n  * Bootstrap Utilities v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n:root {\n  --blue-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.24 240deg));\n  --blue-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.24 240deg));\n  --blue-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.24 240deg));\n  --blue-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.24 240deg));\n  --blue-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.24 240deg));\n  --blue-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.24 240deg));\n  --blue-500: oklch(60% 0.24 240deg);\n  --blue-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.24 240deg));\n  --blue-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.24 240deg));\n  --blue-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.24 240deg));\n  --blue-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.24 240deg));\n  --blue-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.24 240deg));\n  --blue-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.24 240deg));\n  --indigo-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.26 288deg));\n  --indigo-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.26 288deg));\n  --indigo-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.26 288deg));\n  --indigo-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.26 288deg));\n  --indigo-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.26 288deg));\n  --indigo-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.26 288deg));\n  --indigo-500: oklch(56% 0.26 288deg);\n  --indigo-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.26 288deg));\n  --indigo-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.26 288deg));\n  --indigo-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.26 288deg));\n  --indigo-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.26 288deg));\n  --indigo-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.26 288deg));\n  --indigo-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.26 288deg));\n  --violet-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 300deg));\n  --violet-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 300deg));\n  --violet-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 300deg));\n  --violet-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 300deg));\n  --violet-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 300deg));\n  --violet-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 300deg));\n  --violet-500: oklch(56% 0.24 300deg);\n  --violet-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 300deg));\n  --violet-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 300deg));\n  --violet-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 300deg));\n  --violet-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 300deg));\n  --violet-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 300deg));\n  --violet-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 300deg));\n  --purple-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 320deg));\n  --purple-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 320deg));\n  --purple-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 320deg));\n  --purple-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 320deg));\n  --purple-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 320deg));\n  --purple-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 320deg));\n  --purple-500: oklch(56% 0.24 320deg);\n  --purple-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 320deg));\n  --purple-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 320deg));\n  --purple-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 320deg));\n  --purple-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 320deg));\n  --purple-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 320deg));\n  --purple-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 320deg));\n  --pink-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 4deg));\n  --pink-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 4deg));\n  --pink-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 4deg));\n  --pink-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 4deg));\n  --pink-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 4deg));\n  --pink-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 4deg));\n  --pink-500: oklch(60% 0.22 4deg);\n  --pink-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 4deg));\n  --pink-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 4deg));\n  --pink-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 4deg));\n  --pink-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 4deg));\n  --pink-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 4deg));\n  --pink-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 4deg));\n  --red-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 20deg));\n  --red-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 20deg));\n  --red-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 20deg));\n  --red-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 20deg));\n  --red-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 20deg));\n  --red-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 20deg));\n  --red-500: oklch(60% 0.22 20deg);\n  --red-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 20deg));\n  --red-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 20deg));\n  --red-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 20deg));\n  --red-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 20deg));\n  --red-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 20deg));\n  --red-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 20deg));\n  --orange-025: color-mix(in lab, var(--white) 94%, oklch(70% 0.22 52deg));\n  --orange-050: color-mix(in lab, var(--white) 90%, oklch(70% 0.22 52deg));\n  --orange-100: color-mix(in lab, var(--white) 80%, oklch(70% 0.22 52deg));\n  --orange-200: color-mix(in lab, var(--white) 60%, oklch(70% 0.22 52deg));\n  --orange-300: color-mix(in lab, var(--white) 40%, oklch(70% 0.22 52deg));\n  --orange-400: color-mix(in lab, var(--white) 20%, oklch(70% 0.22 52deg));\n  --orange-500: oklch(70% 0.22 52deg);\n  --orange-600: color-mix(in lab, var(--black) 16%, oklch(70% 0.22 52deg));\n  --orange-700: color-mix(in lab, var(--black) 32%, oklch(70% 0.22 52deg));\n  --orange-800: color-mix(in lab, var(--black) 48%, oklch(70% 0.22 52deg));\n  --orange-900: color-mix(in lab, var(--black) 64%, oklch(70% 0.22 52deg));\n  --orange-950: color-mix(in lab, var(--black) 76%, oklch(70% 0.22 52deg));\n  --orange-975: color-mix(in lab, var(--black) 88%, oklch(70% 0.22 52deg));\n  --amber-025: color-mix(in lab, var(--white) 94%, oklch(79% 0.2 78deg));\n  --amber-050: color-mix(in lab, var(--white) 90%, oklch(79% 0.2 78deg));\n  --amber-100: color-mix(in lab, var(--white) 80%, oklch(79% 0.2 78deg));\n  --amber-200: color-mix(in lab, var(--white) 60%, oklch(79% 0.2 78deg));\n  --amber-300: color-mix(in lab, var(--white) 40%, oklch(79% 0.2 78deg));\n  --amber-400: color-mix(in lab, var(--white) 20%, oklch(79% 0.2 78deg));\n  --amber-500: oklch(79% 0.2 78deg);\n  --amber-600: color-mix(in lab, var(--black) 16%, oklch(79% 0.2 78deg));\n  --amber-700: color-mix(in lab, var(--black) 32%, oklch(79% 0.2 78deg));\n  --amber-800: color-mix(in lab, var(--black) 48%, oklch(79% 0.2 78deg));\n  --amber-900: color-mix(in lab, var(--black) 64%, oklch(79% 0.2 78deg));\n  --amber-950: color-mix(in lab, var(--black) 76%, oklch(79% 0.2 78deg));\n  --amber-975: color-mix(in lab, var(--black) 88%, oklch(79% 0.2 78deg));\n  --yellow-025: color-mix(in lab, var(--white) 94%, oklch(88% 0.24 88deg));\n  --yellow-050: color-mix(in lab, var(--white) 90%, oklch(88% 0.24 88deg));\n  --yellow-100: color-mix(in lab, var(--white) 80%, oklch(88% 0.24 88deg));\n  --yellow-200: color-mix(in lab, var(--white) 60%, oklch(88% 0.24 88deg));\n  --yellow-300: color-mix(in lab, var(--white) 40%, oklch(88% 0.24 88deg));\n  --yellow-400: color-mix(in lab, var(--white) 20%, oklch(88% 0.24 88deg));\n  --yellow-500: oklch(88% 0.24 88deg);\n  --yellow-600: color-mix(in lab, var(--black) 16%, oklch(88% 0.24 88deg));\n  --yellow-700: color-mix(in lab, var(--black) 32%, oklch(88% 0.24 88deg));\n  --yellow-800: color-mix(in lab, var(--black) 48%, oklch(88% 0.24 88deg));\n  --yellow-900: color-mix(in lab, var(--black) 64%, oklch(88% 0.24 88deg));\n  --yellow-950: color-mix(in lab, var(--black) 76%, oklch(88% 0.24 88deg));\n  --yellow-975: color-mix(in lab, var(--black) 88%, oklch(88% 0.24 88deg));\n  --lime-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.24 135deg));\n  --lime-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.24 135deg));\n  --lime-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.24 135deg));\n  --lime-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.24 135deg));\n  --lime-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.24 135deg));\n  --lime-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.24 135deg));\n  --lime-500: oklch(65% 0.24 135deg);\n  --lime-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.24 135deg));\n  --lime-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.24 135deg));\n  --lime-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.24 135deg));\n  --lime-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.24 135deg));\n  --lime-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.24 135deg));\n  --lime-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.24 135deg));\n  --green-025: color-mix(in lab, var(--white) 94%, oklch(64% 0.22 160deg));\n  --green-050: color-mix(in lab, var(--white) 90%, oklch(64% 0.22 160deg));\n  --green-100: color-mix(in lab, var(--white) 80%, oklch(64% 0.22 160deg));\n  --green-200: color-mix(in lab, var(--white) 60%, oklch(64% 0.22 160deg));\n  --green-300: color-mix(in lab, var(--white) 40%, oklch(64% 0.22 160deg));\n  --green-400: color-mix(in lab, var(--white) 20%, oklch(64% 0.22 160deg));\n  --green-500: oklch(64% 0.22 160deg);\n  --green-600: color-mix(in lab, var(--black) 16%, oklch(64% 0.22 160deg));\n  --green-700: color-mix(in lab, var(--black) 32%, oklch(64% 0.22 160deg));\n  --green-800: color-mix(in lab, var(--black) 48%, oklch(64% 0.22 160deg));\n  --green-900: color-mix(in lab, var(--black) 64%, oklch(64% 0.22 160deg));\n  --green-950: color-mix(in lab, var(--black) 76%, oklch(64% 0.22 160deg));\n  --green-975: color-mix(in lab, var(--black) 88%, oklch(64% 0.22 160deg));\n  --teal-025: color-mix(in lab, var(--white) 94%, oklch(68% 0.22 190deg));\n  --teal-050: color-mix(in lab, var(--white) 90%, oklch(68% 0.22 190deg));\n  --teal-100: color-mix(in lab, var(--white) 80%, oklch(68% 0.22 190deg));\n  --teal-200: color-mix(in lab, var(--white) 60%, oklch(68% 0.22 190deg));\n  --teal-300: color-mix(in lab, var(--white) 40%, oklch(68% 0.22 190deg));\n  --teal-400: color-mix(in lab, var(--white) 20%, oklch(68% 0.22 190deg));\n  --teal-500: oklch(68% 0.22 190deg);\n  --teal-600: color-mix(in lab, var(--black) 16%, oklch(68% 0.22 190deg));\n  --teal-700: color-mix(in lab, var(--black) 32%, oklch(68% 0.22 190deg));\n  --teal-800: color-mix(in lab, var(--black) 48%, oklch(68% 0.22 190deg));\n  --teal-900: color-mix(in lab, var(--black) 64%, oklch(68% 0.22 190deg));\n  --teal-950: color-mix(in lab, var(--black) 76%, oklch(68% 0.22 190deg));\n  --teal-975: color-mix(in lab, var(--black) 88%, oklch(68% 0.22 190deg));\n  --cyan-025: color-mix(in lab, var(--white) 94%, oklch(69% 0.22 220deg));\n  --cyan-050: color-mix(in lab, var(--white) 90%, oklch(69% 0.22 220deg));\n  --cyan-100: color-mix(in lab, var(--white) 80%, oklch(69% 0.22 220deg));\n  --cyan-200: color-mix(in lab, var(--white) 60%, oklch(69% 0.22 220deg));\n  --cyan-300: color-mix(in lab, var(--white) 40%, oklch(69% 0.22 220deg));\n  --cyan-400: color-mix(in lab, var(--white) 20%, oklch(69% 0.22 220deg));\n  --cyan-500: oklch(69% 0.22 220deg);\n  --cyan-600: color-mix(in lab, var(--black) 16%, oklch(69% 0.22 220deg));\n  --cyan-700: color-mix(in lab, var(--black) 32%, oklch(69% 0.22 220deg));\n  --cyan-800: color-mix(in lab, var(--black) 48%, oklch(69% 0.22 220deg));\n  --cyan-900: color-mix(in lab, var(--black) 64%, oklch(69% 0.22 220deg));\n  --cyan-950: color-mix(in lab, var(--black) 76%, oklch(69% 0.22 220deg));\n  --cyan-975: color-mix(in lab, var(--black) 88%, oklch(69% 0.22 220deg));\n  --brown-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.12 54deg));\n  --brown-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.12 54deg));\n  --brown-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.12 54deg));\n  --brown-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.12 54deg));\n  --brown-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.12 54deg));\n  --brown-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.12 54deg));\n  --brown-500: oklch(60% 0.12 54deg);\n  --brown-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.12 54deg));\n  --brown-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.12 54deg));\n  --brown-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.12 54deg));\n  --brown-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.12 54deg));\n  --brown-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.12 54deg));\n  --brown-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.12 54deg));\n  --gray-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.02 245deg));\n  --gray-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.02 245deg));\n  --gray-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.02 245deg));\n  --gray-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.02 245deg));\n  --gray-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.02 245deg));\n  --gray-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.02 245deg));\n  --gray-500: oklch(60% 0.02 245deg);\n  --gray-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.02 245deg));\n  --gray-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.02 245deg));\n  --gray-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.02 245deg));\n  --gray-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.02 245deg));\n  --gray-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.02 245deg));\n  --gray-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.02 245deg));\n  --pewter-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.01 290deg));\n  --pewter-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.01 290deg));\n  --pewter-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.01 290deg));\n  --pewter-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.01 290deg));\n  --pewter-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.01 290deg));\n  --pewter-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.01 290deg));\n  --pewter-500: oklch(65% 0.01 290deg);\n  --pewter-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.01 290deg));\n  --pewter-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.01 290deg));\n  --pewter-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.01 290deg));\n  --pewter-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.01 290deg));\n  --pewter-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.01 290deg));\n  --pewter-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.01 290deg));\n}\n\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n:root {\n  --black: #000;\n  --white: #fff;\n  --gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent));\n  --font-size-base: 1rem;\n  --font-size-xs: 0.75rem;\n  --font-size-sm: 0.875rem;\n  --font-size-md: 1rem;\n  --font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  --font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);\n  --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  --line-height-xs: 1.25;\n  --line-height-sm: 1.5;\n  --line-height-md: 1.5;\n  --line-height-lg: 1.5;\n  --line-height-xl: 1.4285714286;\n  --line-height-2xl: 1.3333333333;\n  --line-height-3xl: 1.2;\n  --line-height-4xl: 1.1;\n  --line-height-5xl: 1.1;\n  --line-height-6xl: 1;\n  --font-weight-lighter: lighter;\n  --font-weight-light: 300;\n  --font-weight-normal: 400;\n  --font-weight-medium: 500;\n  --font-weight-semibold: 600;\n  --font-weight-bold: 700;\n  --font-weight-bolder: bolder;\n  --body-font-family: system-ui;\n  --body-font-size: var(--font-size-base);\n  --body-font-weight: 400;\n  --body-line-height: 1.5;\n  --heading-color: inherit;\n  --hr-border-color: var(--border-color);\n  --link-color: light-dark(var(--primary-base), var(--primary-text));\n  --link-decoration: underline;\n  --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000);\n  --font-mono: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;\n  --code-font-size: 95%;\n  --code-color: var(--fg-2);\n  --border-width: 1px;\n  --border-style: solid;\n  --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700));\n  --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent);\n  --border-radius: 0.5rem;\n  --border-radius-xs: 0.375rem;\n  --border-radius-sm: 0.5rem;\n  --border-radius-lg: 0.75rem;\n  --border-radius-xl: 1rem;\n  --border-radius-2xl: 2rem;\n  --border-radius-pill: 50rem;\n  --box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  --box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n  --box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n  --box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n  --spacer: 1rem;\n  --focus-ring-width: 3px;\n  --focus-ring-offset: 1px;\n  --focus-ring-color: var(--primary-focus-ring);\n  --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color);\n  --control-checked-bg: var(--primary-base);\n  --control-checked-border-color: var(--control-checked-bg);\n  --control-active-bg: var(--primary-base);\n  --control-active-border-color: var(--control-active-bg);\n  --control-disabled-bg: var(--bg-3);\n  --control-disabled-opacity: 0.65;\n  --btn-input-fg: var(--fg-body);\n  --btn-input-bg: var(--bg-body);\n  --btn-input-min-height: 2.375rem;\n  --btn-input-padding-y: 0.375rem;\n  --btn-input-padding-x: 0.75rem;\n  --btn-input-font-size: var(--font-size-base);\n  --btn-input-line-height: var(--line-height-base);\n  --btn-input-border-radius: var(--border-radius);\n  --btn-input-xs-min-height: 1.5rem;\n  --btn-input-xs-padding-y: 0.125rem;\n  --btn-input-xs-padding-x: 0.5rem;\n  --btn-input-xs-font-size: var(--font-size-xs);\n  --btn-input-xs-line-height: 1.125;\n  --btn-input-xs-border-radius: var(--border-radius-xs);\n  --btn-input-sm-min-height: 2rem;\n  --btn-input-sm-padding-y: 0.25rem;\n  --btn-input-sm-padding-x: 0.625rem;\n  --btn-input-sm-font-size: var(--font-size-sm);\n  --btn-input-sm-line-height: var(--line-height-sm);\n  --btn-input-sm-border-radius: var(--border-radius-sm);\n  --btn-input-lg-min-height: 2.75rem;\n  --btn-input-lg-padding-y: 0.5rem;\n  --btn-input-lg-padding-x: 1rem;\n  --btn-input-lg-font-size: var(--font-size-md);\n  --btn-input-lg-line-height: var(--line-height-md);\n  --btn-input-lg-border-radius: var(--border-radius-lg);\n  --form-valid-color: var(--success-text);\n  --form-valid-border-color: var(--success-text);\n  --form-invalid-color: var(--danger-text);\n  --form-invalid-border-color: var(--danger-text);\n  --primary-base: var(--blue-500);\n  --primary-text: light-dark(var(--blue-600), var(--blue-400));\n  --primary-text-emphasis: light-dark(var(--blue-800), var(--blue-200));\n  --primary-bg: var(--blue-500);\n  --primary-bg-subtle: light-dark(var(--blue-100), var(--blue-900));\n  --primary-bg-muted: light-dark(var(--blue-200), var(--blue-800));\n  --primary-border: light-dark(var(--blue-300), var(--blue-600));\n  --primary-focus-ring: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  --primary-contrast: var(--white);\n  --accent-base: var(--indigo-500);\n  --accent-text: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  --accent-text-emphasis: light-dark(var(--indigo-800), var(--indigo-300));\n  --accent-bg: var(--indigo-500);\n  --accent-bg-subtle: light-dark(var(--indigo-100), var(--indigo-900));\n  --accent-bg-muted: light-dark(var(--indigo-200), var(--indigo-800));\n  --accent-border: light-dark(var(--indigo-300), var(--indigo-600));\n  --accent-focus-ring: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  --accent-contrast: var(--white);\n  --success-base: var(--green-500);\n  --success-text: light-dark(var(--green-600), var(--green-400));\n  --success-text-emphasis: light-dark(var(--green-800), var(--green-300));\n  --success-bg: var(--green-500);\n  --success-bg-subtle: light-dark(var(--green-100), var(--green-900));\n  --success-bg-muted: light-dark(var(--green-200), var(--green-800));\n  --success-border: light-dark(var(--green-300), var(--green-600));\n  --success-focus-ring: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  --success-contrast: var(--white);\n  --danger-base: var(--red-500);\n  --danger-text: light-dark(var(--red-600), var(--red-400));\n  --danger-text-emphasis: light-dark(var(--red-800), var(--red-300));\n  --danger-bg: var(--red-500);\n  --danger-bg-subtle: light-dark(var(--red-100), var(--red-900));\n  --danger-bg-muted: light-dark(var(--red-200), var(--red-800));\n  --danger-border: light-dark(var(--red-300), var(--red-600));\n  --danger-focus-ring: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  --danger-contrast: var(--white);\n  --warning-base: var(--yellow-500);\n  --warning-text: light-dark(var(--yellow-700), var(--yellow-400));\n  --warning-text-emphasis: light-dark(var(--yellow-800), var(--yellow-300));\n  --warning-bg: var(--yellow-500);\n  --warning-bg-subtle: light-dark(var(--yellow-100), var(--yellow-900));\n  --warning-bg-muted: light-dark(var(--yellow-200), var(--yellow-800));\n  --warning-border: light-dark(var(--yellow-300), var(--yellow-600));\n  --warning-focus-ring: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  --warning-contrast: var(--gray-900);\n  --info-base: var(--cyan-500);\n  --info-text: light-dark(var(--cyan-600), var(--cyan-400));\n  --info-text-emphasis: light-dark(var(--cyan-800), var(--cyan-300));\n  --info-bg: var(--cyan-500);\n  --info-bg-subtle: light-dark(var(--cyan-100), var(--cyan-900));\n  --info-bg-muted: light-dark(var(--cyan-200), var(--cyan-800));\n  --info-border: light-dark(var(--cyan-300), var(--cyan-600));\n  --info-focus-ring: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  --info-contrast: var(--gray-900);\n  --inverse-base: var(--gray-900);\n  --inverse-text: light-dark(var(--gray-900), var(--gray-200));\n  --inverse-text-emphasis: light-dark(var(--gray-975), var(--white));\n  --inverse-bg: light-dark(var(--gray-900), var(--gray-025));\n  --inverse-bg-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --inverse-bg-muted: light-dark(var(--gray-200), var(--gray-300));\n  --inverse-border: light-dark(var(--gray-400), var(--gray-100));\n  --inverse-focus-ring: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  --inverse-contrast: light-dark(var(--white), var(--gray-900));\n  --secondary-base: var(--gray-200);\n  --secondary-text: light-dark(var(--gray-600), var(--gray-400));\n  --secondary-text-emphasis: light-dark(var(--gray-800), var(--gray-200));\n  --secondary-bg: light-dark(var(--gray-100), var(--gray-600));\n  --secondary-bg-subtle: light-dark(var(--gray-050), var(--gray-800));\n  --secondary-bg-muted: light-dark(var(--gray-100), var(--gray-700));\n  --secondary-border: light-dark(var(--gray-300), var(--gray-600));\n  --secondary-focus-ring: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  --secondary-contrast: light-dark(var(--gray-900), var(--white));\n  --bg-body: light-dark(var(--white), var(--gray-975));\n  --bg-1: light-dark(var(--gray-025), var(--gray-950));\n  --bg-2: light-dark(var(--gray-050), var(--gray-900));\n  --bg-3: light-dark(var(--gray-100), var(--gray-800));\n  --bg-4: light-dark(var(--gray-200), var(--gray-700));\n  --bg-white: var(--white);\n  --bg-black: var(--black);\n  --bg-transparent: transparent;\n  --bg-inherit: inherit;\n  --fg-body: light-dark(var(--gray-900), var(--gray-050));\n  --fg-1: light-dark(var(--gray-800), var(--gray-200));\n  --fg-2: light-dark(var(--gray-700), var(--gray-300));\n  --fg-3: light-dark(var(--gray-600), var(--gray-500));\n  --fg-4: light-dark(var(--gray-500), var(--gray-600));\n  --fg-white: var(--white);\n  --fg-black: var(--black);\n  --fg-inherit: inherit;\n  --border-bg: var(--bg-body);\n  --border-body: light-dark(var(--gray-300), var(--gray-800));\n  --border-muted: light-dark(var(--gray-200), var(--gray-800));\n  --border-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --border-emphasized: light-dark(var(--gray-400), var(--gray-600));\n  --border-white: var(--white);\n  --border-black: var(--black);\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 1024px;\n  --breakpoint-xl: 1280px;\n  --breakpoint-2xl: 1536px;\n  color-scheme: light dark;\n}\n\n[data-bs-theme=dark] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=light] {\n  color-scheme: light;\n}\n\n@layer helpers {\n  .focus-ring:focus-visible {\n    outline: var(--focus-ring);\n  }\n}\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: 0.375rem;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, 0.5));\n    text-underline-offset: 0.25em;\n    backface-visibility: hidden;\n  }\n  .icon-link > .bi {\n    flex-shrink: 0;\n    width: 1em;\n    height: 1em;\n    fill: currentcolor;\n    transition: 0.2s ease-in-out transform;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .icon-link > .bi {\n      transition: none;\n    }\n  }\n  .icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {\n    transform: var(--icon-link-transform, translate3d(0.25em, 0, 0));\n  }\n}\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: 1030;\n  }\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: 1030;\n  }\n  .sticky-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n  .sticky-bottom {\n    position: sticky;\n    bottom: 0;\n    z-index: 1020;\n  }\n  @media (width >= 576px) {\n    .sticky-sm-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-sm-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 768px) {\n    .sticky-md-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-md-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1024px) {\n    .sticky-lg-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-lg-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1280px) {\n    .sticky-xl-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-xl-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1536px) {\n    .sticky-2xl-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-2xl-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n}\n@layer helpers {\n  .stack-container {\n    container-type: inline-size;\n  }\n  [class*=hstack],\n  [class*=vstack] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n  .vstack {\n    --stack-direction: column;\n    --stack-align-items: stretch;\n  }\n  .hstack {\n    --stack-direction: row;\n    --stack-align-items: flex-start;\n  }\n  @container (width >= 576px) {\n    .vstack-sm {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 576px) {\n    .hstack-sm {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 768px) {\n    .vstack-md {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 768px) {\n    .hstack-md {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1024px) {\n    .vstack-lg {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1024px) {\n    .hstack-lg {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1280px) {\n    .vstack-xl {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1280px) {\n    .hstack-xl {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1536px) {\n    .vstack-2xl {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1536px) {\n    .hstack-2xl {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n}\n@layer helpers {\n  .theme-primary {\n    --theme-base: var(--primary-base);\n    --theme-text: var(--primary-text);\n    --theme-text-emphasis: var(--primary-text-emphasis);\n    --theme-bg: var(--primary-bg);\n    --theme-bg-subtle: var(--primary-bg-subtle);\n    --theme-bg-muted: var(--primary-bg-muted);\n    --theme-border: var(--primary-border);\n    --theme-focus-ring: var(--primary-focus-ring);\n    --theme-contrast: var(--primary-contrast);\n  }\n  .theme-accent {\n    --theme-base: var(--accent-base);\n    --theme-text: var(--accent-text);\n    --theme-text-emphasis: var(--accent-text-emphasis);\n    --theme-bg: var(--accent-bg);\n    --theme-bg-subtle: var(--accent-bg-subtle);\n    --theme-bg-muted: var(--accent-bg-muted);\n    --theme-border: var(--accent-border);\n    --theme-focus-ring: var(--accent-focus-ring);\n    --theme-contrast: var(--accent-contrast);\n  }\n  .theme-success {\n    --theme-base: var(--success-base);\n    --theme-text: var(--success-text);\n    --theme-text-emphasis: var(--success-text-emphasis);\n    --theme-bg: var(--success-bg);\n    --theme-bg-subtle: var(--success-bg-subtle);\n    --theme-bg-muted: var(--success-bg-muted);\n    --theme-border: var(--success-border);\n    --theme-focus-ring: var(--success-focus-ring);\n    --theme-contrast: var(--success-contrast);\n  }\n  .theme-danger {\n    --theme-base: var(--danger-base);\n    --theme-text: var(--danger-text);\n    --theme-text-emphasis: var(--danger-text-emphasis);\n    --theme-bg: var(--danger-bg);\n    --theme-bg-subtle: var(--danger-bg-subtle);\n    --theme-bg-muted: var(--danger-bg-muted);\n    --theme-border: var(--danger-border);\n    --theme-focus-ring: var(--danger-focus-ring);\n    --theme-contrast: var(--danger-contrast);\n  }\n  .theme-warning {\n    --theme-base: var(--warning-base);\n    --theme-text: var(--warning-text);\n    --theme-text-emphasis: var(--warning-text-emphasis);\n    --theme-bg: var(--warning-bg);\n    --theme-bg-subtle: var(--warning-bg-subtle);\n    --theme-bg-muted: var(--warning-bg-muted);\n    --theme-border: var(--warning-border);\n    --theme-focus-ring: var(--warning-focus-ring);\n    --theme-contrast: var(--warning-contrast);\n  }\n  .theme-info {\n    --theme-base: var(--info-base);\n    --theme-text: var(--info-text);\n    --theme-text-emphasis: var(--info-text-emphasis);\n    --theme-bg: var(--info-bg);\n    --theme-bg-subtle: var(--info-bg-subtle);\n    --theme-bg-muted: var(--info-bg-muted);\n    --theme-border: var(--info-border);\n    --theme-focus-ring: var(--info-focus-ring);\n    --theme-contrast: var(--info-contrast);\n  }\n  .theme-inverse {\n    --theme-base: var(--inverse-base);\n    --theme-text: var(--inverse-text);\n    --theme-text-emphasis: var(--inverse-text-emphasis);\n    --theme-bg: var(--inverse-bg);\n    --theme-bg-subtle: var(--inverse-bg-subtle);\n    --theme-bg-muted: var(--inverse-bg-muted);\n    --theme-border: var(--inverse-border);\n    --theme-focus-ring: var(--inverse-focus-ring);\n    --theme-contrast: var(--inverse-contrast);\n  }\n  .theme-secondary {\n    --theme-base: var(--secondary-base);\n    --theme-text: var(--secondary-text);\n    --theme-text-emphasis: var(--secondary-text-emphasis);\n    --theme-bg: var(--secondary-bg);\n    --theme-bg-subtle: var(--secondary-bg-subtle);\n    --theme-bg-muted: var(--secondary-bg-muted);\n    --theme-border: var(--secondary-border);\n    --theme-focus-ring: var(--secondary-focus-ring);\n    --theme-contrast: var(--secondary-contrast);\n  }\n}\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) {\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border: 0 !important;\n  }\n  .visually-hidden:not(caption),\n  .visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {\n    position: absolute !important;\n  }\n  .visually-hidden *,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) * {\n    overflow: hidden !important;\n  }\n}\n@layer helpers {\n  .stretched-link::after {\n    position: absolute;\n    inset: 0;\n    z-index: 1;\n    content: \"\";\n  }\n}\n@layer helpers {\n  .text-truncate {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n@layer utilities {\n  .align-baseline {\n    vertical-align: baseline;\n  }\n  .align-top {\n    vertical-align: top;\n  }\n  .align-middle {\n    vertical-align: middle;\n  }\n  .align-bottom {\n    vertical-align: bottom;\n  }\n  .align-text-bottom {\n    vertical-align: text-bottom;\n  }\n  .align-text-top {\n    vertical-align: text-top;\n  }\n  [class*=ratio-] {\n    aspect-ratio: var(--ratio);\n  }\n  .ratio-auto {\n    --ratio: auto;\n  }\n  .ratio-1x1 {\n    --ratio: 1 / 1;\n  }\n  .ratio-4x3 {\n    --ratio: 4 / 3;\n  }\n  .ratio-16x9 {\n    --ratio: 16 / 9;\n  }\n  .ratio-21x9 {\n    --ratio: 21 / 9;\n  }\n  .float-start {\n    float: inline-start;\n  }\n  .float-end {\n    float: inline-end;\n  }\n  .float-none {\n    float: none;\n  }\n  .object-fit-contain {\n    object-fit: contain;\n  }\n  .object-fit-cover {\n    object-fit: cover;\n  }\n  .object-fit-fill {\n    object-fit: fill;\n  }\n  .object-fit-scale {\n    object-fit: scale-down;\n  }\n  .object-fit-none {\n    object-fit: none;\n  }\n  .opacity-0 {\n    opacity: 0;\n  }\n  .opacity-25 {\n    opacity: 0.25;\n  }\n  .opacity-50 {\n    opacity: 0.5;\n  }\n  .opacity-75 {\n    opacity: 0.75;\n  }\n  .opacity-100 {\n    opacity: 1;\n  }\n  .overflow-auto {\n    overflow: auto;\n  }\n  .overflow-hidden {\n    overflow: hidden;\n  }\n  .overflow-visible {\n    overflow: visible;\n  }\n  .overflow-scroll {\n    overflow: scroll;\n  }\n  .overflow-x-auto {\n    overflow-x: auto;\n  }\n  .overflow-x-hidden {\n    overflow-x: hidden;\n  }\n  .overflow-x-visible {\n    overflow-x: visible;\n  }\n  .overflow-x-scroll {\n    overflow-x: scroll;\n  }\n  .overflow-y-auto {\n    overflow-y: auto;\n  }\n  .overflow-y-hidden {\n    overflow-y: hidden;\n  }\n  .overflow-y-visible {\n    overflow-y: visible;\n  }\n  .overflow-y-scroll {\n    overflow-y: scroll;\n  }\n  .d-inline {\n    display: inline;\n  }\n  .d-inline-block {\n    display: inline-block;\n  }\n  .d-block {\n    display: block;\n  }\n  .d-grid {\n    display: grid;\n  }\n  .d-inline-grid {\n    display: inline-grid;\n  }\n  .d-table {\n    display: table;\n  }\n  .d-table-row {\n    display: table-row;\n  }\n  .d-table-cell {\n    display: table-cell;\n  }\n  .d-flex {\n    display: flex;\n  }\n  .d-inline-flex {\n    display: inline-flex;\n  }\n  .d-contents {\n    display: contents;\n  }\n  .d-flow-root {\n    display: flow-root;\n  }\n  .d-none {\n    display: none;\n  }\n  .shadow {\n    box-shadow: var(--box-shadow);\n  }\n  .shadow-sm {\n    box-shadow: var(--box-shadow-sm);\n  }\n  .shadow-lg {\n    box-shadow: var(--box-shadow-lg);\n  }\n  .shadow-none {\n    box-shadow: none;\n  }\n  .focus-ring-primary {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-accent {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-success {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-danger {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-warning {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  }\n  .focus-ring-info {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-inverse {\n    --focus-ring-color: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  }\n  .focus-ring-secondary {\n    --focus-ring-color: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  }\n  .position-static {\n    position: static;\n  }\n  .position-relative {\n    position: relative;\n  }\n  .position-absolute {\n    position: absolute;\n  }\n  .position-fixed {\n    position: fixed;\n  }\n  .position-sticky {\n    position: sticky;\n  }\n  .top-0 {\n    top: 0;\n  }\n  .top-50 {\n    top: 50%;\n  }\n  .top-100 {\n    top: 100%;\n  }\n  .bottom-0 {\n    bottom: 0;\n  }\n  .bottom-50 {\n    bottom: 50%;\n  }\n  .bottom-100 {\n    bottom: 100%;\n  }\n  .start-0 {\n    left: 0;\n  }\n  .start-50 {\n    left: 50%;\n  }\n  .start-100 {\n    left: 100%;\n  }\n  .end-0 {\n    right: 0;\n  }\n  .end-50 {\n    right: 50%;\n  }\n  .end-100 {\n    right: 100%;\n  }\n  .translate-middle {\n    transform: translate(-50%, -50%);\n  }\n  .translate-middle-x {\n    transform: translateX(-50%);\n  }\n  .translate-middle-y {\n    transform: translateY(-50%);\n  }\n  .border {\n    border: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-0 {\n    border: 0;\n  }\n  .border-top {\n    border-block-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-top-0 {\n    border-block-start: 0;\n  }\n  .border-end {\n    border-inline-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-end-0 {\n    border-inline-end: 0;\n  }\n  .border-bottom {\n    border-block-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-bottom-0 {\n    border-block-end: 0;\n  }\n  .border-start {\n    border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-start-0 {\n    border-inline-start: 0;\n  }\n  .border-block {\n    border-block: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-block-0 {\n    border-block: 0;\n  }\n  .border-inline {\n    border-inline: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-inline-0 {\n    border-inline: 0;\n  }\n  .border-primary {\n    --border-color: var(--blue-500);\n    border-color: var(--border-color);\n  }\n  .border-accent {\n    --border-color: var(--indigo-500);\n    border-color: var(--border-color);\n  }\n  .border-success {\n    --border-color: var(--green-500);\n    border-color: var(--border-color);\n  }\n  .border-danger {\n    --border-color: var(--red-500);\n    border-color: var(--border-color);\n  }\n  .border-warning {\n    --border-color: var(--yellow-500);\n    border-color: var(--border-color);\n  }\n  .border-info {\n    --border-color: var(--cyan-500);\n    border-color: var(--border-color);\n  }\n  .border-inverse {\n    --border-color: light-dark(var(--gray-900), var(--gray-025));\n    border-color: var(--border-color);\n  }\n  .border-secondary {\n    --border-color: light-dark(var(--gray-100), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-bg {\n    --border-color: var(--bg-body);\n    border-color: var(--border-color);\n  }\n  .border-body {\n    --border-color: light-dark(var(--gray-300), var(--gray-800));\n    border-color: var(--border-color);\n  }\n  .border-muted {\n    --border-color: light-dark(var(--gray-200), var(--gray-800));\n    border-color: var(--border-color);\n  }\n  .border-subtle {\n    --border-color: light-dark(var(--gray-100), var(--gray-900));\n    border-color: var(--border-color);\n  }\n  .border-emphasized {\n    --border-color: light-dark(var(--gray-400), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-white {\n    --border-color: var(--white);\n    border-color: var(--border-color);\n  }\n  .border-black {\n    --border-color: var(--black);\n    border-color: var(--border-color);\n  }\n  .border-subtle-primary {\n    --border-color: light-dark(var(--blue-300), var(--blue-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-accent {\n    --border-color: light-dark(var(--indigo-300), var(--indigo-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-success {\n    --border-color: light-dark(var(--green-300), var(--green-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-danger {\n    --border-color: light-dark(var(--red-300), var(--red-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-warning {\n    --border-color: light-dark(var(--yellow-300), var(--yellow-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-info {\n    --border-color: light-dark(var(--cyan-300), var(--cyan-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-inverse {\n    --border-color: light-dark(var(--gray-400), var(--gray-100));\n    border-color: var(--border-color);\n  }\n  .border-subtle-secondary {\n    --border-color: light-dark(var(--gray-300), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-1 {\n    border-width: 1px;\n  }\n  .border-2 {\n    border-width: 2px;\n  }\n  .border-3 {\n    border-width: 3px;\n  }\n  .border-4 {\n    border-width: 4px;\n  }\n  .border-5 {\n    border-width: 5px;\n  }\n  .border-10 {\n    border-color: color-mix(in oklch, var(--border-color) 10%, transparent);\n  }\n  .border-20 {\n    border-color: color-mix(in oklch, var(--border-color) 20%, transparent);\n  }\n  .border-30 {\n    border-color: color-mix(in oklch, var(--border-color) 30%, transparent);\n  }\n  .border-40 {\n    border-color: color-mix(in oklch, var(--border-color) 40%, transparent);\n  }\n  .border-50 {\n    border-color: color-mix(in oklch, var(--border-color) 50%, transparent);\n  }\n  .border-60 {\n    border-color: color-mix(in oklch, var(--border-color) 60%, transparent);\n  }\n  .border-70 {\n    border-color: color-mix(in oklch, var(--border-color) 70%, transparent);\n  }\n  .border-80 {\n    border-color: color-mix(in oklch, var(--border-color) 80%, transparent);\n  }\n  .border-90 {\n    border-color: color-mix(in oklch, var(--border-color) 90%, transparent);\n  }\n  .border-100 {\n    border-color: var(--border-color);\n  }\n  .w-1 {\n    width: 1rem;\n  }\n  .w-2 {\n    width: 2rem;\n  }\n  .w-3 {\n    width: 3rem;\n  }\n  .w-4 {\n    width: 4rem;\n  }\n  .w-5 {\n    width: 5rem;\n  }\n  .w-6 {\n    width: 6rem;\n  }\n  .w-7 {\n    width: 7rem;\n  }\n  .w-8 {\n    width: 8rem;\n  }\n  .w-9 {\n    width: 9rem;\n  }\n  .w-10 {\n    width: 10rem;\n  }\n  .w-11 {\n    width: 11rem;\n  }\n  .w-12 {\n    width: 12rem;\n  }\n  .w-25 {\n    width: 25%;\n  }\n  .w-50 {\n    width: 50%;\n  }\n  .w-75 {\n    width: 75%;\n  }\n  .w-100 {\n    width: 100%;\n  }\n  .w-auto {\n    width: auto;\n  }\n  .w-min {\n    width: min-content;\n  }\n  .w-max {\n    width: max-content;\n  }\n  .w-fit {\n    width: fit-content;\n  }\n  .max-w-100 {\n    max-width: 100%;\n  }\n  .min-w-0 {\n    min-width: 0;\n  }\n  .min-w-100 {\n    min-width: 100%;\n  }\n  .vw-100 {\n    width: 100vw;\n  }\n  .min-vw-100 {\n    min-width: 100vw;\n  }\n  .h-25 {\n    height: 25%;\n  }\n  .h-50 {\n    height: 50%;\n  }\n  .h-75 {\n    height: 75%;\n  }\n  .h-100 {\n    height: 100%;\n  }\n  .h-auto {\n    height: auto;\n  }\n  .h-min {\n    height: min-content;\n  }\n  .h-max {\n    height: max-content;\n  }\n  .h-fit {\n    height: fit-content;\n  }\n  .max-h-100 {\n    max-height: 100%;\n  }\n  .min-h-0 {\n    min-height: 0;\n  }\n  .min-h-100 {\n    min-height: 100%;\n  }\n  .vh-100 {\n    height: 100vh;\n  }\n  .min-vh-100 {\n    min-height: 100vh;\n  }\n  .flex-fill {\n    flex: 1 1 auto;\n  }\n  .flex-row {\n    flex-direction: row;\n  }\n  .flex-column {\n    flex-direction: column;\n  }\n  .flex-row-reverse {\n    flex-direction: row-reverse;\n  }\n  .flex-column-reverse {\n    flex-direction: column-reverse;\n  }\n  .flex-grow-0 {\n    flex-grow: 0;\n  }\n  .flex-grow-1 {\n    flex-grow: 1;\n  }\n  .flex-shrink-0 {\n    flex-shrink: 0;\n  }\n  .flex-shrink-1 {\n    flex-shrink: 1;\n  }\n  .flex-wrap {\n    flex-wrap: wrap;\n  }\n  .flex-nowrap {\n    flex-wrap: nowrap;\n  }\n  .flex-wrap-reverse {\n    flex-wrap: wrap-reverse;\n  }\n  .justify-content-start {\n    justify-content: flex-start;\n  }\n  .justify-content-end {\n    justify-content: flex-end;\n  }\n  .justify-content-center {\n    justify-content: center;\n  }\n  .justify-content-between {\n    justify-content: space-between;\n  }\n  .justify-content-around {\n    justify-content: space-around;\n  }\n  .justify-content-evenly {\n    justify-content: space-evenly;\n  }\n  .justify-items-start {\n    justify-items: start;\n  }\n  .justify-items-end {\n    justify-items: end;\n  }\n  .justify-items-center {\n    justify-items: center;\n  }\n  .justify-items-stretch {\n    justify-items: stretch;\n  }\n  .justify-self-start {\n    justify-self: flex-start;\n  }\n  .justify-self-end {\n    justify-self: flex-end;\n  }\n  .justify-self-center {\n    justify-self: center;\n  }\n  .align-items-start {\n    align-items: flex-start;\n  }\n  .align-items-end {\n    align-items: flex-end;\n  }\n  .align-items-center {\n    align-items: center;\n  }\n  .align-items-baseline {\n    align-items: baseline;\n  }\n  .align-items-stretch {\n    align-items: stretch;\n  }\n  .align-content-start {\n    align-content: flex-start;\n  }\n  .align-content-end {\n    align-content: flex-end;\n  }\n  .align-content-center {\n    align-content: center;\n  }\n  .align-content-between {\n    align-content: space-between;\n  }\n  .align-content-around {\n    align-content: space-around;\n  }\n  .align-content-stretch {\n    align-content: stretch;\n  }\n  .align-self-auto {\n    align-self: auto;\n  }\n  .align-self-start {\n    align-self: flex-start;\n  }\n  .align-self-end {\n    align-self: flex-end;\n  }\n  .align-self-center {\n    align-self: center;\n  }\n  .align-self-baseline {\n    align-self: baseline;\n  }\n  .align-self-stretch {\n    align-self: stretch;\n  }\n  .place-items-start {\n    place-items: start;\n  }\n  .place-items-end {\n    place-items: end;\n  }\n  .place-items-center {\n    place-items: center;\n  }\n  .place-items-stretch {\n    place-items: stretch;\n  }\n  .grid-cols-3 {\n    --columns: 3;\n  }\n  .grid-cols-4 {\n    --columns: 4;\n  }\n  .grid-cols-6 {\n    --columns: 6;\n  }\n  .grid-cols-fill {\n    grid-column: 1 / -1;\n  }\n  .grid-auto-flow-row {\n    grid-auto-flow: row;\n  }\n  .grid-auto-flow-column {\n    grid-auto-flow: column;\n  }\n  .grid-auto-flow-dense {\n    grid-auto-flow: dense;\n  }\n  .order-first {\n    order: -1;\n  }\n  .order-0 {\n    order: 0;\n  }\n  .order-1 {\n    order: 1;\n  }\n  .order-2 {\n    order: 2;\n  }\n  .order-3 {\n    order: 3;\n  }\n  .order-4 {\n    order: 4;\n  }\n  .order-5 {\n    order: 5;\n  }\n  .order-last {\n    order: 6;\n  }\n  .m--2 {\n    margin: -0.5rem;\n  }\n  .m--1 {\n    margin: -0.25rem;\n  }\n  .m-0 {\n    margin: 0;\n  }\n  .m-1 {\n    margin: 0.25rem;\n  }\n  .m-2 {\n    margin: 0.5rem;\n  }\n  .m-3 {\n    margin: 1rem;\n  }\n  .m-4 {\n    margin: 1.5rem;\n  }\n  .m-5 {\n    margin: 3rem;\n  }\n  .m-auto {\n    margin: auto;\n  }\n  .mx--2 {\n    margin-inline: -0.5rem;\n  }\n  .mx--1 {\n    margin-inline: -0.25rem;\n  }\n  .mx-0 {\n    margin-inline: 0;\n  }\n  .mx-1 {\n    margin-inline: 0.25rem;\n  }\n  .mx-2 {\n    margin-inline: 0.5rem;\n  }\n  .mx-3 {\n    margin-inline: 1rem;\n  }\n  .mx-4 {\n    margin-inline: 1.5rem;\n  }\n  .mx-5 {\n    margin-inline: 3rem;\n  }\n  .mx-auto {\n    margin-inline: auto;\n  }\n  .my--2 {\n    margin-block: -0.5rem;\n  }\n  .my--1 {\n    margin-block: -0.25rem;\n  }\n  .my-0 {\n    margin-block: 0;\n  }\n  .my-1 {\n    margin-block: 0.25rem;\n  }\n  .my-2 {\n    margin-block: 0.5rem;\n  }\n  .my-3 {\n    margin-block: 1rem;\n  }\n  .my-4 {\n    margin-block: 1.5rem;\n  }\n  .my-5 {\n    margin-block: 3rem;\n  }\n  .my-auto {\n    margin-block: auto;\n  }\n  .mt--2 {\n    margin-block-start: -0.5rem;\n  }\n  .mt--1 {\n    margin-block-start: -0.25rem;\n  }\n  .mt-0 {\n    margin-block-start: 0;\n  }\n  .mt-1 {\n    margin-block-start: 0.25rem;\n  }\n  .mt-2 {\n    margin-block-start: 0.5rem;\n  }\n  .mt-3 {\n    margin-block-start: 1rem;\n  }\n  .mt-4 {\n    margin-block-start: 1.5rem;\n  }\n  .mt-5 {\n    margin-block-start: 3rem;\n  }\n  .mt-auto {\n    margin-block-start: auto;\n  }\n  .me--2 {\n    margin-inline-end: -0.5rem;\n  }\n  .me--1 {\n    margin-inline-end: -0.25rem;\n  }\n  .me-0 {\n    margin-inline-end: 0;\n  }\n  .me-1 {\n    margin-inline-end: 0.25rem;\n  }\n  .me-2 {\n    margin-inline-end: 0.5rem;\n  }\n  .me-3 {\n    margin-inline-end: 1rem;\n  }\n  .me-4 {\n    margin-inline-end: 1.5rem;\n  }\n  .me-5 {\n    margin-inline-end: 3rem;\n  }\n  .me-auto {\n    margin-inline-end: auto;\n  }\n  .mb--2 {\n    margin-block-end: -0.5rem;\n  }\n  .mb--1 {\n    margin-block-end: -0.25rem;\n  }\n  .mb-0 {\n    margin-block-end: 0;\n  }\n  .mb-1 {\n    margin-block-end: 0.25rem;\n  }\n  .mb-2 {\n    margin-block-end: 0.5rem;\n  }\n  .mb-3 {\n    margin-block-end: 1rem;\n  }\n  .mb-4 {\n    margin-block-end: 1.5rem;\n  }\n  .mb-5 {\n    margin-block-end: 3rem;\n  }\n  .mb-auto {\n    margin-block-end: auto;\n  }\n  .ms--2 {\n    margin-inline-start: -0.5rem;\n  }\n  .ms--1 {\n    margin-inline-start: -0.25rem;\n  }\n  .ms-0 {\n    margin-inline-start: 0;\n  }\n  .ms-1 {\n    margin-inline-start: 0.25rem;\n  }\n  .ms-2 {\n    margin-inline-start: 0.5rem;\n  }\n  .ms-3 {\n    margin-inline-start: 1rem;\n  }\n  .ms-4 {\n    margin-inline-start: 1.5rem;\n  }\n  .ms-5 {\n    margin-inline-start: 3rem;\n  }\n  .ms-auto {\n    margin-inline-start: auto;\n  }\n  .p--2 {\n    padding: -0.5rem;\n  }\n  .p--1 {\n    padding: -0.25rem;\n  }\n  .p-0 {\n    padding: 0;\n  }\n  .p-1 {\n    padding: 0.25rem;\n  }\n  .p-2 {\n    padding: 0.5rem;\n  }\n  .p-3 {\n    padding: 1rem;\n  }\n  .p-4 {\n    padding: 1.5rem;\n  }\n  .p-5 {\n    padding: 3rem;\n  }\n  .px--2 {\n    padding-inline: -0.5rem;\n  }\n  .px--1 {\n    padding-inline: -0.25rem;\n  }\n  .px-0 {\n    padding-inline: 0;\n  }\n  .px-1 {\n    padding-inline: 0.25rem;\n  }\n  .px-2 {\n    padding-inline: 0.5rem;\n  }\n  .px-3 {\n    padding-inline: 1rem;\n  }\n  .px-4 {\n    padding-inline: 1.5rem;\n  }\n  .px-5 {\n    padding-inline: 3rem;\n  }\n  .py--2 {\n    padding-block: -0.5rem;\n  }\n  .py--1 {\n    padding-block: -0.25rem;\n  }\n  .py-0 {\n    padding-block: 0;\n  }\n  .py-1 {\n    padding-block: 0.25rem;\n  }\n  .py-2 {\n    padding-block: 0.5rem;\n  }\n  .py-3 {\n    padding-block: 1rem;\n  }\n  .py-4 {\n    padding-block: 1.5rem;\n  }\n  .py-5 {\n    padding-block: 3rem;\n  }\n  .pt--2 {\n    padding-block-start: -0.5rem;\n  }\n  .pt--1 {\n    padding-block-start: -0.25rem;\n  }\n  .pt-0 {\n    padding-block-start: 0;\n  }\n  .pt-1 {\n    padding-block-start: 0.25rem;\n  }\n  .pt-2 {\n    padding-block-start: 0.5rem;\n  }\n  .pt-3 {\n    padding-block-start: 1rem;\n  }\n  .pt-4 {\n    padding-block-start: 1.5rem;\n  }\n  .pt-5 {\n    padding-block-start: 3rem;\n  }\n  .pe--2 {\n    padding-inline-end: -0.5rem;\n  }\n  .pe--1 {\n    padding-inline-end: -0.25rem;\n  }\n  .pe-0 {\n    padding-inline-end: 0;\n  }\n  .pe-1 {\n    padding-inline-end: 0.25rem;\n  }\n  .pe-2 {\n    padding-inline-end: 0.5rem;\n  }\n  .pe-3 {\n    padding-inline-end: 1rem;\n  }\n  .pe-4 {\n    padding-inline-end: 1.5rem;\n  }\n  .pe-5 {\n    padding-inline-end: 3rem;\n  }\n  .pb--2 {\n    padding-block-end: -0.5rem;\n  }\n  .pb--1 {\n    padding-block-end: -0.25rem;\n  }\n  .pb-0 {\n    padding-block-end: 0;\n  }\n  .pb-1 {\n    padding-block-end: 0.25rem;\n  }\n  .pb-2 {\n    padding-block-end: 0.5rem;\n  }\n  .pb-3 {\n    padding-block-end: 1rem;\n  }\n  .pb-4 {\n    padding-block-end: 1.5rem;\n  }\n  .pb-5 {\n    padding-block-end: 3rem;\n  }\n  .ps--2 {\n    padding-inline-start: -0.5rem;\n  }\n  .ps--1 {\n    padding-inline-start: -0.25rem;\n  }\n  .ps-0 {\n    padding-inline-start: 0;\n  }\n  .ps-1 {\n    padding-inline-start: 0.25rem;\n  }\n  .ps-2 {\n    padding-inline-start: 0.5rem;\n  }\n  .ps-3 {\n    padding-inline-start: 1rem;\n  }\n  .ps-4 {\n    padding-inline-start: 1.5rem;\n  }\n  .ps-5 {\n    padding-inline-start: 3rem;\n  }\n  .gap--2 {\n    gap: -0.5rem;\n  }\n  .gap--1 {\n    gap: -0.25rem;\n  }\n  .gap-0 {\n    gap: 0;\n  }\n  .gap-1 {\n    gap: 0.25rem;\n  }\n  .gap-2 {\n    gap: 0.5rem;\n  }\n  .gap-3 {\n    gap: 1rem;\n  }\n  .gap-4 {\n    gap: 1.5rem;\n  }\n  .gap-5 {\n    gap: 3rem;\n  }\n  .row-gap--2 {\n    row-gap: -0.5rem;\n  }\n  .row-gap--1 {\n    row-gap: -0.25rem;\n  }\n  .row-gap-0 {\n    row-gap: 0;\n  }\n  .row-gap-1 {\n    row-gap: 0.25rem;\n  }\n  .row-gap-2 {\n    row-gap: 0.5rem;\n  }\n  .row-gap-3 {\n    row-gap: 1rem;\n  }\n  .row-gap-4 {\n    row-gap: 1.5rem;\n  }\n  .row-gap-5 {\n    row-gap: 3rem;\n  }\n  .column-gap--2 {\n    column-gap: -0.5rem;\n  }\n  .column-gap--1 {\n    column-gap: -0.25rem;\n  }\n  .column-gap-0 {\n    column-gap: 0;\n  }\n  .column-gap-1 {\n    column-gap: 0.25rem;\n  }\n  .column-gap-2 {\n    column-gap: 0.5rem;\n  }\n  .column-gap-3 {\n    column-gap: 1rem;\n  }\n  .column-gap-4 {\n    column-gap: 1.5rem;\n  }\n  .column-gap-5 {\n    column-gap: 3rem;\n  }\n  .font-monospace {\n    font-family: var(--font-mono);\n  }\n  .font-body {\n    font-family: var(--body-font-family);\n  }\n  .fs-xs {\n    font-size: var(--font-size-xs);\n  }\n  .fs-sm {\n    font-size: var(--font-size-sm);\n  }\n  .fs-md {\n    font-size: var(--font-size-md);\n  }\n  .fs-lg {\n    font-size: var(--font-size-lg);\n  }\n  .fs-xl {\n    font-size: var(--font-size-xl);\n  }\n  .fs-2xl {\n    font-size: var(--font-size-2xl);\n  }\n  .fs-3xl {\n    font-size: var(--font-size-3xl);\n  }\n  .fs-4xl {\n    font-size: var(--font-size-4xl);\n  }\n  .fs-5xl {\n    font-size: var(--font-size-5xl);\n  }\n  .fs-6xl {\n    font-size: var(--font-size-6xl);\n  }\n  .text-xs {\n    font-size: var(--font-size-xs);\n    line-height: var(--line-height-xs);\n  }\n  .text-sm {\n    font-size: var(--font-size-sm);\n    line-height: var(--line-height-sm);\n  }\n  .text-md {\n    font-size: var(--font-size-md);\n    line-height: var(--line-height-md);\n  }\n  .text-lg {\n    font-size: var(--font-size-lg);\n    line-height: var(--line-height-lg);\n  }\n  .text-xl {\n    font-size: var(--font-size-xl);\n    line-height: var(--line-height-xl);\n  }\n  .text-2xl {\n    font-size: var(--font-size-2xl);\n    line-height: var(--line-height-2xl);\n  }\n  .text-3xl {\n    font-size: var(--font-size-3xl);\n    line-height: var(--line-height-3xl);\n  }\n  .text-4xl {\n    font-size: var(--font-size-4xl);\n    line-height: var(--line-height-4xl);\n  }\n  .text-5xl {\n    font-size: var(--font-size-5xl);\n    line-height: var(--line-height-5xl);\n  }\n  .text-6xl {\n    font-size: var(--font-size-6xl);\n    line-height: var(--line-height-6xl);\n  }\n  .fst-italic {\n    font-style: italic;\n  }\n  .fst-normal {\n    font-style: normal;\n  }\n  .fw-lighter {\n    font-weight: lighter;\n  }\n  .fw-light {\n    font-weight: 300;\n  }\n  .fw-normal {\n    font-weight: 400;\n  }\n  .fw-medium {\n    font-weight: 500;\n  }\n  .fw-semibold {\n    font-weight: 600;\n  }\n  .fw-bold {\n    font-weight: 700;\n  }\n  .fw-bolder {\n    font-weight: bolder;\n  }\n  .lh-1 {\n    line-height: 1;\n  }\n  .lh-sm {\n    line-height: 1.25;\n  }\n  .lh-base {\n    line-height: 1.5;\n  }\n  .lh-lg {\n    line-height: 2;\n  }\n  .text-start {\n    text-align: start;\n  }\n  .text-end {\n    text-align: end;\n  }\n  .text-center {\n    text-align: center;\n  }\n  .text-decoration-none {\n    text-decoration: none;\n  }\n  .text-decoration-underline {\n    text-decoration: underline;\n  }\n  .text-decoration-line-through {\n    text-decoration: line-through;\n  }\n  .text-lowercase {\n    text-transform: lowercase;\n  }\n  .text-uppercase {\n    text-transform: uppercase;\n  }\n  .text-capitalize {\n    text-transform: capitalize;\n  }\n  .text-wrap {\n    white-space: wrap;\n  }\n  .text-nowrap {\n    white-space: nowrap;\n  }\n  .text-balance {\n    white-space: balance;\n  }\n  .text-pretty {\n    white-space: pretty;\n  }\n  .text-break {\n    word-wrap: break-word;\n    word-break: break-word;\n  }\n  .fg-primary {\n    --fg: light-dark(var(--blue-600), var(--blue-400));\n    color: var(--fg);\n  }\n  .fg-accent {\n    --fg: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n    color: var(--fg);\n  }\n  .fg-success {\n    --fg: light-dark(var(--green-600), var(--green-400));\n    color: var(--fg);\n  }\n  .fg-danger {\n    --fg: light-dark(var(--red-600), var(--red-400));\n    color: var(--fg);\n  }\n  .fg-warning {\n    --fg: light-dark(var(--yellow-700), var(--yellow-400));\n    color: var(--fg);\n  }\n  .fg-info {\n    --fg: light-dark(var(--cyan-600), var(--cyan-400));\n    color: var(--fg);\n  }\n  .fg-inverse {\n    --fg: light-dark(var(--gray-900), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-secondary {\n    --fg: light-dark(var(--gray-600), var(--gray-400));\n    color: var(--fg);\n  }\n  .fg-body {\n    --fg: light-dark(var(--gray-900), var(--gray-050));\n    color: var(--fg);\n  }\n  .fg-1 {\n    --fg: light-dark(var(--gray-800), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-2 {\n    --fg: light-dark(var(--gray-700), var(--gray-300));\n    color: var(--fg);\n  }\n  .fg-3 {\n    --fg: light-dark(var(--gray-600), var(--gray-500));\n    color: var(--fg);\n  }\n  .fg-4 {\n    --fg: light-dark(var(--gray-500), var(--gray-600));\n    color: var(--fg);\n  }\n  .fg-white {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-black {\n    --fg: var(--black);\n    color: var(--fg);\n  }\n  .fg-inherit {\n    --fg: inherit;\n    color: var(--fg);\n  }\n  .fg-emphasis-primary {\n    --fg: light-dark(var(--blue-800), var(--blue-200));\n    color: var(--fg);\n  }\n  .fg-emphasis-accent {\n    --fg: light-dark(var(--indigo-800), var(--indigo-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-success {\n    --fg: light-dark(var(--green-800), var(--green-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-danger {\n    --fg: light-dark(var(--red-800), var(--red-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-warning {\n    --fg: light-dark(var(--yellow-800), var(--yellow-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-info {\n    --fg: light-dark(var(--cyan-800), var(--cyan-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-inverse {\n    --fg: light-dark(var(--gray-975), var(--white));\n    color: var(--fg);\n  }\n  .fg-emphasis-secondary {\n    --fg: light-dark(var(--gray-800), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-contrast-primary {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-accent {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-success {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-danger {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-warning {\n    --fg: var(--gray-900);\n    color: var(--fg);\n  }\n  .fg-contrast-info {\n    --fg: var(--gray-900);\n    color: var(--fg);\n  }\n  .fg-contrast-inverse {\n    --fg: light-dark(var(--white), var(--gray-900));\n    color: var(--fg);\n  }\n  .fg-contrast-secondary {\n    --fg: light-dark(var(--gray-900), var(--white));\n    color: var(--fg);\n  }\n  .fg-10 {\n    color: color-mix(in oklch, var(--fg) 10%, transparent);\n  }\n  .fg-20 {\n    color: color-mix(in oklch, var(--fg) 20%, transparent);\n  }\n  .fg-30 {\n    color: color-mix(in oklch, var(--fg) 30%, transparent);\n  }\n  .fg-40 {\n    color: color-mix(in oklch, var(--fg) 40%, transparent);\n  }\n  .fg-50 {\n    color: color-mix(in oklch, var(--fg) 50%, transparent);\n  }\n  .fg-60 {\n    color: color-mix(in oklch, var(--fg) 60%, transparent);\n  }\n  .fg-70 {\n    color: color-mix(in oklch, var(--fg) 70%, transparent);\n  }\n  .fg-80 {\n    color: color-mix(in oklch, var(--fg) 80%, transparent);\n  }\n  .fg-90 {\n    color: color-mix(in oklch, var(--fg) 90%, transparent);\n  }\n  .fg-100 {\n    color: var(--fg);\n  }\n  .link-10 {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .link-10-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .link-20 {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .link-20-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .link-30 {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .link-30-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .link-40 {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .link-40-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .link-50 {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .link-50-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .link-60 {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .link-60-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .link-70 {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .link-70-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .link-80 {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .link-80-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .link-90 {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-90-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-100 {\n    color: var(--link-color);\n  }\n  .link-100-hover:hover {\n    color: var(--link-color);\n  }\n  .underline-offset-1 {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-1-hover:hover {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-2 {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-2-hover:hover {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-3 {\n    text-underline-offset: 0.375em;\n  }\n  .underline-offset-3-hover:hover {\n    text-underline-offset: 0.375em;\n  }\n  .underline-primary {\n    text-decoration-color: light-dark(var(--blue-600), var(--blue-400));\n  }\n  .underline-accent {\n    text-decoration-color: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  }\n  .underline-success {\n    text-decoration-color: light-dark(var(--green-600), var(--green-400));\n  }\n  .underline-danger {\n    text-decoration-color: light-dark(var(--red-600), var(--red-400));\n  }\n  .underline-warning {\n    text-decoration-color: light-dark(var(--yellow-700), var(--yellow-400));\n  }\n  .underline-info {\n    text-decoration-color: light-dark(var(--cyan-600), var(--cyan-400));\n  }\n  .underline-inverse {\n    text-decoration-color: light-dark(var(--gray-900), var(--gray-200));\n  }\n  .underline-secondary {\n    text-decoration-color: light-dark(var(--gray-600), var(--gray-400));\n  }\n  .underline-10 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .underline-10-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .underline-20 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .underline-20-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .underline-30 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .underline-30-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .underline-40 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .underline-40-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .underline-50 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .underline-50-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .underline-60 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .underline-60-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .underline-70 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .underline-70-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .underline-80 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .underline-80-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .underline-90 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .underline-90-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .underline-100 {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-100-hover:hover {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-thickness-1 {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-1-hover:hover {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-2 {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-2-hover:hover {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-3 {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-3-hover:hover {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-4 {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-4-hover:hover {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-5 {\n    text-decoration-thickness: 5px;\n  }\n  .underline-thickness-5-hover:hover {\n    text-decoration-thickness: 5px;\n  }\n  .bg-primary {\n    --bg: var(--blue-500);\n    background-color: var(--bg);\n  }\n  .bg-accent {\n    --bg: var(--indigo-500);\n    background-color: var(--bg);\n  }\n  .bg-success {\n    --bg: var(--green-500);\n    background-color: var(--bg);\n  }\n  .bg-danger {\n    --bg: var(--red-500);\n    background-color: var(--bg);\n  }\n  .bg-warning {\n    --bg: var(--yellow-500);\n    background-color: var(--bg);\n  }\n  .bg-info {\n    --bg: var(--cyan-500);\n    background-color: var(--bg);\n  }\n  .bg-inverse {\n    --bg: light-dark(var(--gray-900), var(--gray-025));\n    background-color: var(--bg);\n  }\n  .bg-secondary {\n    --bg: light-dark(var(--gray-100), var(--gray-600));\n    background-color: var(--bg);\n  }\n  .bg-body {\n    --bg: light-dark(var(--white), var(--gray-975));\n    background-color: var(--bg);\n  }\n  .bg-1 {\n    --bg: light-dark(var(--gray-025), var(--gray-950));\n    background-color: var(--bg);\n  }\n  .bg-2 {\n    --bg: light-dark(var(--gray-050), var(--gray-900));\n    background-color: var(--bg);\n  }\n  .bg-3 {\n    --bg: light-dark(var(--gray-100), var(--gray-800));\n    background-color: var(--bg);\n  }\n  .bg-4 {\n    --bg: light-dark(var(--gray-200), var(--gray-700));\n    background-color: var(--bg);\n  }\n  .bg-white {\n    --bg: var(--white);\n    background-color: var(--bg);\n  }\n  .bg-black {\n    --bg: var(--black);\n    background-color: var(--bg);\n  }\n  .bg-transparent {\n    --bg: transparent;\n    background-color: var(--bg);\n  }\n  .bg-inherit {\n    --bg: inherit;\n    background-color: var(--bg);\n  }\n  .bg-subtle-primary {\n    --bg: light-dark(var(--blue-100), var(--blue-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-accent {\n    --bg: light-dark(var(--indigo-100), var(--indigo-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-success {\n    --bg: light-dark(var(--green-100), var(--green-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-danger {\n    --bg: light-dark(var(--red-100), var(--red-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-warning {\n    --bg: light-dark(var(--yellow-100), var(--yellow-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-info {\n    --bg: light-dark(var(--cyan-100), var(--cyan-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-inverse {\n    --bg: light-dark(var(--gray-100), var(--gray-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-secondary {\n    --bg: light-dark(var(--gray-050), var(--gray-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-primary {\n    --bg: light-dark(var(--blue-200), var(--blue-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-accent {\n    --bg: light-dark(var(--indigo-200), var(--indigo-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-success {\n    --bg: light-dark(var(--green-200), var(--green-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-danger {\n    --bg: light-dark(var(--red-200), var(--red-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-warning {\n    --bg: light-dark(var(--yellow-200), var(--yellow-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-info {\n    --bg: light-dark(var(--cyan-200), var(--cyan-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-inverse {\n    --bg: light-dark(var(--gray-200), var(--gray-300));\n    background-color: var(--bg);\n  }\n  .bg-muted-secondary {\n    --bg: light-dark(var(--gray-100), var(--gray-700));\n    background-color: var(--bg);\n  }\n  .bg-10 {\n    background-color: color-mix(in oklch, var(--bg) 10%, transparent);\n  }\n  .bg-20 {\n    background-color: color-mix(in oklch, var(--bg) 20%, transparent);\n  }\n  .bg-30 {\n    background-color: color-mix(in oklch, var(--bg) 30%, transparent);\n  }\n  .bg-40 {\n    background-color: color-mix(in oklch, var(--bg) 40%, transparent);\n  }\n  .bg-50 {\n    background-color: color-mix(in oklch, var(--bg) 50%, transparent);\n  }\n  .bg-60 {\n    background-color: color-mix(in oklch, var(--bg) 60%, transparent);\n  }\n  .bg-70 {\n    background-color: color-mix(in oklch, var(--bg) 70%, transparent);\n  }\n  .bg-80 {\n    background-color: color-mix(in oklch, var(--bg) 80%, transparent);\n  }\n  .bg-90 {\n    background-color: color-mix(in oklch, var(--bg) 90%, transparent);\n  }\n  .bg-100 {\n    background-color: var(--bg);\n  }\n  .theme-contrast {\n    background-color: var(--theme-bg);\n    color: var(--theme-contrast);\n  }\n  .theme-subtle {\n    background-color: var(--theme-bg-subtle);\n    color: var(--theme-text);\n  }\n  .theme-muted {\n    background-color: var(--theme-bg-muted);\n    color: var(--theme-text-emphasis);\n  }\n  .theme-border {\n    border: var(--border-width) solid var(--theme-border);\n  }\n  .bg-gradient {\n    background-image: var(--gradient);\n  }\n  .user-select-all {\n    user-select: all;\n  }\n  .user-select-auto {\n    user-select: auto;\n  }\n  .user-select-none {\n    user-select: none;\n  }\n  .pe-none {\n    pointer-events: none;\n  }\n  .pe-auto {\n    pointer-events: auto;\n  }\n  .rounded {\n    border-radius: var(--border-radius);\n  }\n  .rounded-0 {\n    border-radius: 0;\n  }\n  .rounded-1 {\n    border-radius: var(--border-radius-sm);\n  }\n  .rounded-2 {\n    border-radius: var(--border-radius);\n  }\n  .rounded-3 {\n    border-radius: var(--border-radius-lg);\n  }\n  .rounded-4 {\n    border-radius: var(--border-radius-xl);\n  }\n  .rounded-5 {\n    border-radius: var(--border-radius-2xl);\n  }\n  .rounded-circle {\n    border-radius: 50%;\n  }\n  .rounded-pill {\n    border-radius: var(--border-radius-pill);\n  }\n  .rounded-top {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-top-0 {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .rounded-top-1 {\n    border-start-start-radius: var(--border-radius-sm);\n    border-start-end-radius: var(--border-radius-sm);\n  }\n  .rounded-top-2 {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-top-3 {\n    border-start-start-radius: var(--border-radius-lg);\n    border-start-end-radius: var(--border-radius-lg);\n  }\n  .rounded-top-4 {\n    border-start-start-radius: var(--border-radius-xl);\n    border-start-end-radius: var(--border-radius-xl);\n  }\n  .rounded-top-5 {\n    border-start-start-radius: var(--border-radius-2xl);\n    border-start-end-radius: var(--border-radius-2xl);\n  }\n  .rounded-top-circle {\n    border-start-start-radius: 50%;\n    border-start-end-radius: 50%;\n  }\n  .rounded-top-pill {\n    border-start-start-radius: var(--border-radius-pill);\n    border-start-end-radius: var(--border-radius-pill);\n  }\n  .rounded-end {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-end-0 {\n    border-end-end-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-end-1 {\n    border-end-end-radius: var(--border-radius-sm);\n    border-end-start-radius: var(--border-radius-sm);\n  }\n  .rounded-end-2 {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-end-3 {\n    border-end-end-radius: var(--border-radius-lg);\n    border-end-start-radius: var(--border-radius-lg);\n  }\n  .rounded-end-4 {\n    border-end-end-radius: var(--border-radius-xl);\n    border-end-start-radius: var(--border-radius-xl);\n  }\n  .rounded-end-5 {\n    border-end-end-radius: var(--border-radius-2xl);\n    border-end-start-radius: var(--border-radius-2xl);\n  }\n  .rounded-end-circle {\n    border-end-end-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-end-pill {\n    border-end-end-radius: var(--border-radius-pill);\n    border-end-start-radius: var(--border-radius-pill);\n  }\n  .rounded-bottom {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-bottom-0 {\n    border-end-end-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-bottom-1 {\n    border-end-end-radius: var(--border-radius-sm);\n    border-end-start-radius: var(--border-radius-sm);\n  }\n  .rounded-bottom-2 {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-bottom-3 {\n    border-end-end-radius: var(--border-radius-lg);\n    border-end-start-radius: var(--border-radius-lg);\n  }\n  .rounded-bottom-4 {\n    border-end-end-radius: var(--border-radius-xl);\n    border-end-start-radius: var(--border-radius-xl);\n  }\n  .rounded-bottom-5 {\n    border-end-end-radius: var(--border-radius-2xl);\n    border-end-start-radius: var(--border-radius-2xl);\n  }\n  .rounded-bottom-circle {\n    border-end-end-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-bottom-pill {\n    border-end-end-radius: var(--border-radius-pill);\n    border-end-start-radius: var(--border-radius-pill);\n  }\n  .rounded-start {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-start-0 {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .rounded-start-1 {\n    border-start-start-radius: var(--border-radius-sm);\n    border-start-end-radius: var(--border-radius-sm);\n  }\n  .rounded-start-2 {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-start-3 {\n    border-start-start-radius: var(--border-radius-lg);\n    border-start-end-radius: var(--border-radius-lg);\n  }\n  .rounded-start-4 {\n    border-start-start-radius: var(--border-radius-xl);\n    border-start-end-radius: var(--border-radius-xl);\n  }\n  .rounded-start-5 {\n    border-start-start-radius: var(--border-radius-2xl);\n    border-start-end-radius: var(--border-radius-2xl);\n  }\n  .rounded-start-circle {\n    border-start-start-radius: 50%;\n    border-start-end-radius: 50%;\n  }\n  .rounded-start-pill {\n    border-start-start-radius: var(--border-radius-pill);\n    border-start-end-radius: var(--border-radius-pill);\n  }\n  .visible {\n    visibility: visible;\n  }\n  .invisible {\n    visibility: hidden;\n  }\n  .z-n1 {\n    z-index: -1;\n  }\n  .z-0 {\n    z-index: 0;\n  }\n  .z-1 {\n    z-index: 1;\n  }\n  .z-2 {\n    z-index: 2;\n  }\n  .z-3 {\n    z-index: 3;\n  }\n  @media (width >= 576px) {\n    .float-sm-start {\n      float: inline-start;\n    }\n    .float-sm-end {\n      float: inline-end;\n    }\n    .float-sm-none {\n      float: none;\n    }\n    .object-fit-sm-contain {\n      object-fit: contain;\n    }\n    .object-fit-sm-cover {\n      object-fit: cover;\n    }\n    .object-fit-sm-fill {\n      object-fit: fill;\n    }\n    .object-fit-sm-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-sm-none {\n      object-fit: none;\n    }\n    .d-sm-inline {\n      display: inline;\n    }\n    .d-sm-inline-block {\n      display: inline-block;\n    }\n    .d-sm-block {\n      display: block;\n    }\n    .d-sm-grid {\n      display: grid;\n    }\n    .d-sm-inline-grid {\n      display: inline-grid;\n    }\n    .d-sm-table {\n      display: table;\n    }\n    .d-sm-table-row {\n      display: table-row;\n    }\n    .d-sm-table-cell {\n      display: table-cell;\n    }\n    .d-sm-flex {\n      display: flex;\n    }\n    .d-sm-inline-flex {\n      display: inline-flex;\n    }\n    .d-sm-contents {\n      display: contents;\n    }\n    .d-sm-flow-root {\n      display: flow-root;\n    }\n    .d-sm-none {\n      display: none;\n    }\n    .flex-sm-fill {\n      flex: 1 1 auto;\n    }\n    .flex-sm-row {\n      flex-direction: row;\n    }\n    .flex-sm-column {\n      flex-direction: column;\n    }\n    .flex-sm-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-sm-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-sm-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-sm-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-sm-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-sm-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-sm-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-sm-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-sm-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-sm-start {\n      justify-content: flex-start;\n    }\n    .justify-content-sm-end {\n      justify-content: flex-end;\n    }\n    .justify-content-sm-center {\n      justify-content: center;\n    }\n    .justify-content-sm-between {\n      justify-content: space-between;\n    }\n    .justify-content-sm-around {\n      justify-content: space-around;\n    }\n    .justify-content-sm-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-sm-start {\n      justify-items: start;\n    }\n    .justify-items-sm-end {\n      justify-items: end;\n    }\n    .justify-items-sm-center {\n      justify-items: center;\n    }\n    .justify-items-sm-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-sm-start {\n      justify-self: flex-start;\n    }\n    .justify-self-sm-end {\n      justify-self: flex-end;\n    }\n    .justify-self-sm-center {\n      justify-self: center;\n    }\n    .align-items-sm-start {\n      align-items: flex-start;\n    }\n    .align-items-sm-end {\n      align-items: flex-end;\n    }\n    .align-items-sm-center {\n      align-items: center;\n    }\n    .align-items-sm-baseline {\n      align-items: baseline;\n    }\n    .align-items-sm-stretch {\n      align-items: stretch;\n    }\n    .align-content-sm-start {\n      align-content: flex-start;\n    }\n    .align-content-sm-end {\n      align-content: flex-end;\n    }\n    .align-content-sm-center {\n      align-content: center;\n    }\n    .align-content-sm-between {\n      align-content: space-between;\n    }\n    .align-content-sm-around {\n      align-content: space-around;\n    }\n    .align-content-sm-stretch {\n      align-content: stretch;\n    }\n    .align-self-sm-auto {\n      align-self: auto;\n    }\n    .align-self-sm-start {\n      align-self: flex-start;\n    }\n    .align-self-sm-end {\n      align-self: flex-end;\n    }\n    .align-self-sm-center {\n      align-self: center;\n    }\n    .align-self-sm-baseline {\n      align-self: baseline;\n    }\n    .align-self-sm-stretch {\n      align-self: stretch;\n    }\n    .place-items-sm-start {\n      place-items: start;\n    }\n    .place-items-sm-end {\n      place-items: end;\n    }\n    .place-items-sm-center {\n      place-items: center;\n    }\n    .place-items-sm-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-sm-3 {\n      --columns: 3;\n    }\n    .grid-cols-sm-4 {\n      --columns: 4;\n    }\n    .grid-cols-sm-6 {\n      --columns: 6;\n    }\n    .grid-cols-sm-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-sm-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-sm-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-sm-dense {\n      grid-auto-flow: dense;\n    }\n    .order-sm-first {\n      order: -1;\n    }\n    .order-sm-0 {\n      order: 0;\n    }\n    .order-sm-1 {\n      order: 1;\n    }\n    .order-sm-2 {\n      order: 2;\n    }\n    .order-sm-3 {\n      order: 3;\n    }\n    .order-sm-4 {\n      order: 4;\n    }\n    .order-sm-5 {\n      order: 5;\n    }\n    .order-sm-last {\n      order: 6;\n    }\n    .m-sm--2 {\n      margin: -0.5rem;\n    }\n    .m-sm--1 {\n      margin: -0.25rem;\n    }\n    .m-sm-0 {\n      margin: 0;\n    }\n    .m-sm-1 {\n      margin: 0.25rem;\n    }\n    .m-sm-2 {\n      margin: 0.5rem;\n    }\n    .m-sm-3 {\n      margin: 1rem;\n    }\n    .m-sm-4 {\n      margin: 1.5rem;\n    }\n    .m-sm-5 {\n      margin: 3rem;\n    }\n    .m-sm-auto {\n      margin: auto;\n    }\n    .mx-sm--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-sm--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-sm-0 {\n      margin-inline: 0;\n    }\n    .mx-sm-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-sm-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-sm-3 {\n      margin-inline: 1rem;\n    }\n    .mx-sm-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-sm-5 {\n      margin-inline: 3rem;\n    }\n    .mx-sm-auto {\n      margin-inline: auto;\n    }\n    .my-sm--2 {\n      margin-block: -0.5rem;\n    }\n    .my-sm--1 {\n      margin-block: -0.25rem;\n    }\n    .my-sm-0 {\n      margin-block: 0;\n    }\n    .my-sm-1 {\n      margin-block: 0.25rem;\n    }\n    .my-sm-2 {\n      margin-block: 0.5rem;\n    }\n    .my-sm-3 {\n      margin-block: 1rem;\n    }\n    .my-sm-4 {\n      margin-block: 1.5rem;\n    }\n    .my-sm-5 {\n      margin-block: 3rem;\n    }\n    .my-sm-auto {\n      margin-block: auto;\n    }\n    .mt-sm--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-sm--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-sm-0 {\n      margin-block-start: 0;\n    }\n    .mt-sm-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-sm-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-sm-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-sm-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-sm-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-sm-auto {\n      margin-block-start: auto;\n    }\n    .me-sm--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-sm--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-sm-0 {\n      margin-inline-end: 0;\n    }\n    .me-sm-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-sm-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-sm-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-sm-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-sm-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-sm-auto {\n      margin-inline-end: auto;\n    }\n    .mb-sm--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-sm--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-sm-0 {\n      margin-block-end: 0;\n    }\n    .mb-sm-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-sm-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-sm-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-sm-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-sm-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-sm-auto {\n      margin-block-end: auto;\n    }\n    .ms-sm--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-sm--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-sm-0 {\n      margin-inline-start: 0;\n    }\n    .ms-sm-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-sm-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-sm-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-sm-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-sm-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-sm-auto {\n      margin-inline-start: auto;\n    }\n    .p-sm--2 {\n      padding: -0.5rem;\n    }\n    .p-sm--1 {\n      padding: -0.25rem;\n    }\n    .p-sm-0 {\n      padding: 0;\n    }\n    .p-sm-1 {\n      padding: 0.25rem;\n    }\n    .p-sm-2 {\n      padding: 0.5rem;\n    }\n    .p-sm-3 {\n      padding: 1rem;\n    }\n    .p-sm-4 {\n      padding: 1.5rem;\n    }\n    .p-sm-5 {\n      padding: 3rem;\n    }\n    .px-sm--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-sm--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-sm-0 {\n      padding-inline: 0;\n    }\n    .px-sm-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-sm-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-sm-3 {\n      padding-inline: 1rem;\n    }\n    .px-sm-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-sm-5 {\n      padding-inline: 3rem;\n    }\n    .py-sm--2 {\n      padding-block: -0.5rem;\n    }\n    .py-sm--1 {\n      padding-block: -0.25rem;\n    }\n    .py-sm-0 {\n      padding-block: 0;\n    }\n    .py-sm-1 {\n      padding-block: 0.25rem;\n    }\n    .py-sm-2 {\n      padding-block: 0.5rem;\n    }\n    .py-sm-3 {\n      padding-block: 1rem;\n    }\n    .py-sm-4 {\n      padding-block: 1.5rem;\n    }\n    .py-sm-5 {\n      padding-block: 3rem;\n    }\n    .pt-sm--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-sm--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-sm-0 {\n      padding-block-start: 0;\n    }\n    .pt-sm-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-sm-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-sm-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-sm-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-sm-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-sm--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-sm--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-sm-0 {\n      padding-inline-end: 0;\n    }\n    .pe-sm-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-sm-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-sm-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-sm-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-sm-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-sm--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-sm--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-sm-0 {\n      padding-block-end: 0;\n    }\n    .pb-sm-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-sm-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-sm-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-sm-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-sm-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-sm--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-sm--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-sm-0 {\n      padding-inline-start: 0;\n    }\n    .ps-sm-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-sm-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-sm-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-sm-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-sm-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-sm--2 {\n      gap: -0.5rem;\n    }\n    .gap-sm--1 {\n      gap: -0.25rem;\n    }\n    .gap-sm-0 {\n      gap: 0;\n    }\n    .gap-sm-1 {\n      gap: 0.25rem;\n    }\n    .gap-sm-2 {\n      gap: 0.5rem;\n    }\n    .gap-sm-3 {\n      gap: 1rem;\n    }\n    .gap-sm-4 {\n      gap: 1.5rem;\n    }\n    .gap-sm-5 {\n      gap: 3rem;\n    }\n    .row-gap-sm--2 {\n      row-gap: -0.5rem;\n    }\n    .row-gap-sm--1 {\n      row-gap: -0.25rem;\n    }\n    .row-gap-sm-0 {\n      row-gap: 0;\n    }\n    .row-gap-sm-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-sm-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-sm-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-sm-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-sm-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-sm--2 {\n      column-gap: -0.5rem;\n    }\n    .column-gap-sm--1 {\n      column-gap: -0.25rem;\n    }\n    .column-gap-sm-0 {\n      column-gap: 0;\n    }\n    .column-gap-sm-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-sm-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-sm-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-sm-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-sm-5 {\n      column-gap: 3rem;\n    }\n    .text-sm-start {\n      text-align: start;\n    }\n    .text-sm-end {\n      text-align: end;\n    }\n    .text-sm-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 768px) {\n    .float-md-start {\n      float: inline-start;\n    }\n    .float-md-end {\n      float: inline-end;\n    }\n    .float-md-none {\n      float: none;\n    }\n    .object-fit-md-contain {\n      object-fit: contain;\n    }\n    .object-fit-md-cover {\n      object-fit: cover;\n    }\n    .object-fit-md-fill {\n      object-fit: fill;\n    }\n    .object-fit-md-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-md-none {\n      object-fit: none;\n    }\n    .d-md-inline {\n      display: inline;\n    }\n    .d-md-inline-block {\n      display: inline-block;\n    }\n    .d-md-block {\n      display: block;\n    }\n    .d-md-grid {\n      display: grid;\n    }\n    .d-md-inline-grid {\n      display: inline-grid;\n    }\n    .d-md-table {\n      display: table;\n    }\n    .d-md-table-row {\n      display: table-row;\n    }\n    .d-md-table-cell {\n      display: table-cell;\n    }\n    .d-md-flex {\n      display: flex;\n    }\n    .d-md-inline-flex {\n      display: inline-flex;\n    }\n    .d-md-contents {\n      display: contents;\n    }\n    .d-md-flow-root {\n      display: flow-root;\n    }\n    .d-md-none {\n      display: none;\n    }\n    .flex-md-fill {\n      flex: 1 1 auto;\n    }\n    .flex-md-row {\n      flex-direction: row;\n    }\n    .flex-md-column {\n      flex-direction: column;\n    }\n    .flex-md-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-md-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-md-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-md-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-md-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-md-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-md-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-md-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-md-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-md-start {\n      justify-content: flex-start;\n    }\n    .justify-content-md-end {\n      justify-content: flex-end;\n    }\n    .justify-content-md-center {\n      justify-content: center;\n    }\n    .justify-content-md-between {\n      justify-content: space-between;\n    }\n    .justify-content-md-around {\n      justify-content: space-around;\n    }\n    .justify-content-md-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-md-start {\n      justify-items: start;\n    }\n    .justify-items-md-end {\n      justify-items: end;\n    }\n    .justify-items-md-center {\n      justify-items: center;\n    }\n    .justify-items-md-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-md-start {\n      justify-self: flex-start;\n    }\n    .justify-self-md-end {\n      justify-self: flex-end;\n    }\n    .justify-self-md-center {\n      justify-self: center;\n    }\n    .align-items-md-start {\n      align-items: flex-start;\n    }\n    .align-items-md-end {\n      align-items: flex-end;\n    }\n    .align-items-md-center {\n      align-items: center;\n    }\n    .align-items-md-baseline {\n      align-items: baseline;\n    }\n    .align-items-md-stretch {\n      align-items: stretch;\n    }\n    .align-content-md-start {\n      align-content: flex-start;\n    }\n    .align-content-md-end {\n      align-content: flex-end;\n    }\n    .align-content-md-center {\n      align-content: center;\n    }\n    .align-content-md-between {\n      align-content: space-between;\n    }\n    .align-content-md-around {\n      align-content: space-around;\n    }\n    .align-content-md-stretch {\n      align-content: stretch;\n    }\n    .align-self-md-auto {\n      align-self: auto;\n    }\n    .align-self-md-start {\n      align-self: flex-start;\n    }\n    .align-self-md-end {\n      align-self: flex-end;\n    }\n    .align-self-md-center {\n      align-self: center;\n    }\n    .align-self-md-baseline {\n      align-self: baseline;\n    }\n    .align-self-md-stretch {\n      align-self: stretch;\n    }\n    .place-items-md-start {\n      place-items: start;\n    }\n    .place-items-md-end {\n      place-items: end;\n    }\n    .place-items-md-center {\n      place-items: center;\n    }\n    .place-items-md-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-md-3 {\n      --columns: 3;\n    }\n    .grid-cols-md-4 {\n      --columns: 4;\n    }\n    .grid-cols-md-6 {\n      --columns: 6;\n    }\n    .grid-cols-md-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-md-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-md-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-md-dense {\n      grid-auto-flow: dense;\n    }\n    .order-md-first {\n      order: -1;\n    }\n    .order-md-0 {\n      order: 0;\n    }\n    .order-md-1 {\n      order: 1;\n    }\n    .order-md-2 {\n      order: 2;\n    }\n    .order-md-3 {\n      order: 3;\n    }\n    .order-md-4 {\n      order: 4;\n    }\n    .order-md-5 {\n      order: 5;\n    }\n    .order-md-last {\n      order: 6;\n    }\n    .m-md--2 {\n      margin: -0.5rem;\n    }\n    .m-md--1 {\n      margin: -0.25rem;\n    }\n    .m-md-0 {\n      margin: 0;\n    }\n    .m-md-1 {\n      margin: 0.25rem;\n    }\n    .m-md-2 {\n      margin: 0.5rem;\n    }\n    .m-md-3 {\n      margin: 1rem;\n    }\n    .m-md-4 {\n      margin: 1.5rem;\n    }\n    .m-md-5 {\n      margin: 3rem;\n    }\n    .m-md-auto {\n      margin: auto;\n    }\n    .mx-md--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-md--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-md-0 {\n      margin-inline: 0;\n    }\n    .mx-md-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-md-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-md-3 {\n      margin-inline: 1rem;\n    }\n    .mx-md-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-md-5 {\n      margin-inline: 3rem;\n    }\n    .mx-md-auto {\n      margin-inline: auto;\n    }\n    .my-md--2 {\n      margin-block: -0.5rem;\n    }\n    .my-md--1 {\n      margin-block: -0.25rem;\n    }\n    .my-md-0 {\n      margin-block: 0;\n    }\n    .my-md-1 {\n      margin-block: 0.25rem;\n    }\n    .my-md-2 {\n      margin-block: 0.5rem;\n    }\n    .my-md-3 {\n      margin-block: 1rem;\n    }\n    .my-md-4 {\n      margin-block: 1.5rem;\n    }\n    .my-md-5 {\n      margin-block: 3rem;\n    }\n    .my-md-auto {\n      margin-block: auto;\n    }\n    .mt-md--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-md--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-md-0 {\n      margin-block-start: 0;\n    }\n    .mt-md-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-md-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-md-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-md-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-md-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-md-auto {\n      margin-block-start: auto;\n    }\n    .me-md--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-md--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-md-0 {\n      margin-inline-end: 0;\n    }\n    .me-md-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-md-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-md-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-md-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-md-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-md-auto {\n      margin-inline-end: auto;\n    }\n    .mb-md--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-md--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-md-0 {\n      margin-block-end: 0;\n    }\n    .mb-md-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-md-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-md-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-md-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-md-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-md-auto {\n      margin-block-end: auto;\n    }\n    .ms-md--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-md--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-md-0 {\n      margin-inline-start: 0;\n    }\n    .ms-md-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-md-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-md-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-md-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-md-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-md-auto {\n      margin-inline-start: auto;\n    }\n    .p-md--2 {\n      padding: -0.5rem;\n    }\n    .p-md--1 {\n      padding: -0.25rem;\n    }\n    .p-md-0 {\n      padding: 0;\n    }\n    .p-md-1 {\n      padding: 0.25rem;\n    }\n    .p-md-2 {\n      padding: 0.5rem;\n    }\n    .p-md-3 {\n      padding: 1rem;\n    }\n    .p-md-4 {\n      padding: 1.5rem;\n    }\n    .p-md-5 {\n      padding: 3rem;\n    }\n    .px-md--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-md--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-md-0 {\n      padding-inline: 0;\n    }\n    .px-md-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-md-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-md-3 {\n      padding-inline: 1rem;\n    }\n    .px-md-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-md-5 {\n      padding-inline: 3rem;\n    }\n    .py-md--2 {\n      padding-block: -0.5rem;\n    }\n    .py-md--1 {\n      padding-block: -0.25rem;\n    }\n    .py-md-0 {\n      padding-block: 0;\n    }\n    .py-md-1 {\n      padding-block: 0.25rem;\n    }\n    .py-md-2 {\n      padding-block: 0.5rem;\n    }\n    .py-md-3 {\n      padding-block: 1rem;\n    }\n    .py-md-4 {\n      padding-block: 1.5rem;\n    }\n    .py-md-5 {\n      padding-block: 3rem;\n    }\n    .pt-md--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-md--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-md-0 {\n      padding-block-start: 0;\n    }\n    .pt-md-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-md-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-md-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-md-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-md-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-md--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-md--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-md-0 {\n      padding-inline-end: 0;\n    }\n    .pe-md-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-md-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-md-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-md-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-md-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-md--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-md--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-md-0 {\n      padding-block-end: 0;\n    }\n    .pb-md-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-md-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-md-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-md-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-md-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-md--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-md--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-md-0 {\n      padding-inline-start: 0;\n    }\n    .ps-md-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-md-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-md-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-md-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-md-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-md--2 {\n      gap: -0.5rem;\n    }\n    .gap-md--1 {\n      gap: -0.25rem;\n    }\n    .gap-md-0 {\n      gap: 0;\n    }\n    .gap-md-1 {\n      gap: 0.25rem;\n    }\n    .gap-md-2 {\n      gap: 0.5rem;\n    }\n    .gap-md-3 {\n      gap: 1rem;\n    }\n    .gap-md-4 {\n      gap: 1.5rem;\n    }\n    .gap-md-5 {\n      gap: 3rem;\n    }\n    .row-gap-md--2 {\n      row-gap: -0.5rem;\n    }\n    .row-gap-md--1 {\n      row-gap: -0.25rem;\n    }\n    .row-gap-md-0 {\n      row-gap: 0;\n    }\n    .row-gap-md-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-md-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-md-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-md-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-md-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-md--2 {\n      column-gap: -0.5rem;\n    }\n    .column-gap-md--1 {\n      column-gap: -0.25rem;\n    }\n    .column-gap-md-0 {\n      column-gap: 0;\n    }\n    .column-gap-md-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-md-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-md-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-md-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-md-5 {\n      column-gap: 3rem;\n    }\n    .text-md-start {\n      text-align: start;\n    }\n    .text-md-end {\n      text-align: end;\n    }\n    .text-md-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1024px) {\n    .float-lg-start {\n      float: inline-start;\n    }\n    .float-lg-end {\n      float: inline-end;\n    }\n    .float-lg-none {\n      float: none;\n    }\n    .object-fit-lg-contain {\n      object-fit: contain;\n    }\n    .object-fit-lg-cover {\n      object-fit: cover;\n    }\n    .object-fit-lg-fill {\n      object-fit: fill;\n    }\n    .object-fit-lg-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-lg-none {\n      object-fit: none;\n    }\n    .d-lg-inline {\n      display: inline;\n    }\n    .d-lg-inline-block {\n      display: inline-block;\n    }\n    .d-lg-block {\n      display: block;\n    }\n    .d-lg-grid {\n      display: grid;\n    }\n    .d-lg-inline-grid {\n      display: inline-grid;\n    }\n    .d-lg-table {\n      display: table;\n    }\n    .d-lg-table-row {\n      display: table-row;\n    }\n    .d-lg-table-cell {\n      display: table-cell;\n    }\n    .d-lg-flex {\n      display: flex;\n    }\n    .d-lg-inline-flex {\n      display: inline-flex;\n    }\n    .d-lg-contents {\n      display: contents;\n    }\n    .d-lg-flow-root {\n      display: flow-root;\n    }\n    .d-lg-none {\n      display: none;\n    }\n    .flex-lg-fill {\n      flex: 1 1 auto;\n    }\n    .flex-lg-row {\n      flex-direction: row;\n    }\n    .flex-lg-column {\n      flex-direction: column;\n    }\n    .flex-lg-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-lg-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-lg-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-lg-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-lg-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-lg-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-lg-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-lg-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-lg-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-lg-start {\n      justify-content: flex-start;\n    }\n    .justify-content-lg-end {\n      justify-content: flex-end;\n    }\n    .justify-content-lg-center {\n      justify-content: center;\n    }\n    .justify-content-lg-between {\n      justify-content: space-between;\n    }\n    .justify-content-lg-around {\n      justify-content: space-around;\n    }\n    .justify-content-lg-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-lg-start {\n      justify-items: start;\n    }\n    .justify-items-lg-end {\n      justify-items: end;\n    }\n    .justify-items-lg-center {\n      justify-items: center;\n    }\n    .justify-items-lg-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-lg-start {\n      justify-self: flex-start;\n    }\n    .justify-self-lg-end {\n      justify-self: flex-end;\n    }\n    .justify-self-lg-center {\n      justify-self: center;\n    }\n    .align-items-lg-start {\n      align-items: flex-start;\n    }\n    .align-items-lg-end {\n      align-items: flex-end;\n    }\n    .align-items-lg-center {\n      align-items: center;\n    }\n    .align-items-lg-baseline {\n      align-items: baseline;\n    }\n    .align-items-lg-stretch {\n      align-items: stretch;\n    }\n    .align-content-lg-start {\n      align-content: flex-start;\n    }\n    .align-content-lg-end {\n      align-content: flex-end;\n    }\n    .align-content-lg-center {\n      align-content: center;\n    }\n    .align-content-lg-between {\n      align-content: space-between;\n    }\n    .align-content-lg-around {\n      align-content: space-around;\n    }\n    .align-content-lg-stretch {\n      align-content: stretch;\n    }\n    .align-self-lg-auto {\n      align-self: auto;\n    }\n    .align-self-lg-start {\n      align-self: flex-start;\n    }\n    .align-self-lg-end {\n      align-self: flex-end;\n    }\n    .align-self-lg-center {\n      align-self: center;\n    }\n    .align-self-lg-baseline {\n      align-self: baseline;\n    }\n    .align-self-lg-stretch {\n      align-self: stretch;\n    }\n    .place-items-lg-start {\n      place-items: start;\n    }\n    .place-items-lg-end {\n      place-items: end;\n    }\n    .place-items-lg-center {\n      place-items: center;\n    }\n    .place-items-lg-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-lg-3 {\n      --columns: 3;\n    }\n    .grid-cols-lg-4 {\n      --columns: 4;\n    }\n    .grid-cols-lg-6 {\n      --columns: 6;\n    }\n    .grid-cols-lg-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-lg-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-lg-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-lg-dense {\n      grid-auto-flow: dense;\n    }\n    .order-lg-first {\n      order: -1;\n    }\n    .order-lg-0 {\n      order: 0;\n    }\n    .order-lg-1 {\n      order: 1;\n    }\n    .order-lg-2 {\n      order: 2;\n    }\n    .order-lg-3 {\n      order: 3;\n    }\n    .order-lg-4 {\n      order: 4;\n    }\n    .order-lg-5 {\n      order: 5;\n    }\n    .order-lg-last {\n      order: 6;\n    }\n    .m-lg--2 {\n      margin: -0.5rem;\n    }\n    .m-lg--1 {\n      margin: -0.25rem;\n    }\n    .m-lg-0 {\n      margin: 0;\n    }\n    .m-lg-1 {\n      margin: 0.25rem;\n    }\n    .m-lg-2 {\n      margin: 0.5rem;\n    }\n    .m-lg-3 {\n      margin: 1rem;\n    }\n    .m-lg-4 {\n      margin: 1.5rem;\n    }\n    .m-lg-5 {\n      margin: 3rem;\n    }\n    .m-lg-auto {\n      margin: auto;\n    }\n    .mx-lg--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-lg--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-lg-0 {\n      margin-inline: 0;\n    }\n    .mx-lg-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-lg-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-lg-3 {\n      margin-inline: 1rem;\n    }\n    .mx-lg-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-lg-5 {\n      margin-inline: 3rem;\n    }\n    .mx-lg-auto {\n      margin-inline: auto;\n    }\n    .my-lg--2 {\n      margin-block: -0.5rem;\n    }\n    .my-lg--1 {\n      margin-block: -0.25rem;\n    }\n    .my-lg-0 {\n      margin-block: 0;\n    }\n    .my-lg-1 {\n      margin-block: 0.25rem;\n    }\n    .my-lg-2 {\n      margin-block: 0.5rem;\n    }\n    .my-lg-3 {\n      margin-block: 1rem;\n    }\n    .my-lg-4 {\n      margin-block: 1.5rem;\n    }\n    .my-lg-5 {\n      margin-block: 3rem;\n    }\n    .my-lg-auto {\n      margin-block: auto;\n    }\n    .mt-lg--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-lg--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-lg-0 {\n      margin-block-start: 0;\n    }\n    .mt-lg-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-lg-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-lg-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-lg-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-lg-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-lg-auto {\n      margin-block-start: auto;\n    }\n    .me-lg--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-lg--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-lg-0 {\n      margin-inline-end: 0;\n    }\n    .me-lg-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-lg-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-lg-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-lg-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-lg-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-lg-auto {\n      margin-inline-end: auto;\n    }\n    .mb-lg--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-lg--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-lg-0 {\n      margin-block-end: 0;\n    }\n    .mb-lg-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-lg-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-lg-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-lg-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-lg-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-lg-auto {\n      margin-block-end: auto;\n    }\n    .ms-lg--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-lg--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-lg-0 {\n      margin-inline-start: 0;\n    }\n    .ms-lg-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-lg-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-lg-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-lg-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-lg-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-lg-auto {\n      margin-inline-start: auto;\n    }\n    .p-lg--2 {\n      padding: -0.5rem;\n    }\n    .p-lg--1 {\n      padding: -0.25rem;\n    }\n    .p-lg-0 {\n      padding: 0;\n    }\n    .p-lg-1 {\n      padding: 0.25rem;\n    }\n    .p-lg-2 {\n      padding: 0.5rem;\n    }\n    .p-lg-3 {\n      padding: 1rem;\n    }\n    .p-lg-4 {\n      padding: 1.5rem;\n    }\n    .p-lg-5 {\n      padding: 3rem;\n    }\n    .px-lg--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-lg--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-lg-0 {\n      padding-inline: 0;\n    }\n    .px-lg-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-lg-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-lg-3 {\n      padding-inline: 1rem;\n    }\n    .px-lg-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-lg-5 {\n      padding-inline: 3rem;\n    }\n    .py-lg--2 {\n      padding-block: -0.5rem;\n    }\n    .py-lg--1 {\n      padding-block: -0.25rem;\n    }\n    .py-lg-0 {\n      padding-block: 0;\n    }\n    .py-lg-1 {\n      padding-block: 0.25rem;\n    }\n    .py-lg-2 {\n      padding-block: 0.5rem;\n    }\n    .py-lg-3 {\n      padding-block: 1rem;\n    }\n    .py-lg-4 {\n      padding-block: 1.5rem;\n    }\n    .py-lg-5 {\n      padding-block: 3rem;\n    }\n    .pt-lg--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-lg--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-lg-0 {\n      padding-block-start: 0;\n    }\n    .pt-lg-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-lg-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-lg-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-lg-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-lg-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-lg--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-lg--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-lg-0 {\n      padding-inline-end: 0;\n    }\n    .pe-lg-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-lg-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-lg-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-lg-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-lg-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-lg--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-lg--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-lg-0 {\n      padding-block-end: 0;\n    }\n    .pb-lg-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-lg-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-lg-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-lg-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-lg-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-lg--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-lg--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-lg-0 {\n      padding-inline-start: 0;\n    }\n    .ps-lg-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-lg-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-lg-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-lg-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-lg-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-lg--2 {\n      gap: -0.5rem;\n    }\n    .gap-lg--1 {\n      gap: -0.25rem;\n    }\n    .gap-lg-0 {\n      gap: 0;\n    }\n    .gap-lg-1 {\n      gap: 0.25rem;\n    }\n    .gap-lg-2 {\n      gap: 0.5rem;\n    }\n    .gap-lg-3 {\n      gap: 1rem;\n    }\n    .gap-lg-4 {\n      gap: 1.5rem;\n    }\n    .gap-lg-5 {\n      gap: 3rem;\n    }\n    .row-gap-lg--2 {\n      row-gap: -0.5rem;\n    }\n    .row-gap-lg--1 {\n      row-gap: -0.25rem;\n    }\n    .row-gap-lg-0 {\n      row-gap: 0;\n    }\n    .row-gap-lg-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-lg-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-lg-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-lg-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-lg-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-lg--2 {\n      column-gap: -0.5rem;\n    }\n    .column-gap-lg--1 {\n      column-gap: -0.25rem;\n    }\n    .column-gap-lg-0 {\n      column-gap: 0;\n    }\n    .column-gap-lg-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-lg-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-lg-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-lg-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-lg-5 {\n      column-gap: 3rem;\n    }\n    .text-lg-start {\n      text-align: start;\n    }\n    .text-lg-end {\n      text-align: end;\n    }\n    .text-lg-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1280px) {\n    .float-xl-start {\n      float: inline-start;\n    }\n    .float-xl-end {\n      float: inline-end;\n    }\n    .float-xl-none {\n      float: none;\n    }\n    .object-fit-xl-contain {\n      object-fit: contain;\n    }\n    .object-fit-xl-cover {\n      object-fit: cover;\n    }\n    .object-fit-xl-fill {\n      object-fit: fill;\n    }\n    .object-fit-xl-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-xl-none {\n      object-fit: none;\n    }\n    .d-xl-inline {\n      display: inline;\n    }\n    .d-xl-inline-block {\n      display: inline-block;\n    }\n    .d-xl-block {\n      display: block;\n    }\n    .d-xl-grid {\n      display: grid;\n    }\n    .d-xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-xl-table {\n      display: table;\n    }\n    .d-xl-table-row {\n      display: table-row;\n    }\n    .d-xl-table-cell {\n      display: table-cell;\n    }\n    .d-xl-flex {\n      display: flex;\n    }\n    .d-xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-xl-contents {\n      display: contents;\n    }\n    .d-xl-flow-root {\n      display: flow-root;\n    }\n    .d-xl-none {\n      display: none;\n    }\n    .flex-xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-xl-row {\n      flex-direction: row;\n    }\n    .flex-xl-column {\n      flex-direction: column;\n    }\n    .flex-xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-xl-center {\n      justify-content: center;\n    }\n    .justify-content-xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-xl-start {\n      justify-items: start;\n    }\n    .justify-items-xl-end {\n      justify-items: end;\n    }\n    .justify-items-xl-center {\n      justify-items: center;\n    }\n    .justify-items-xl-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-xl-start {\n      justify-self: flex-start;\n    }\n    .justify-self-xl-end {\n      justify-self: flex-end;\n    }\n    .justify-self-xl-center {\n      justify-self: center;\n    }\n    .align-items-xl-start {\n      align-items: flex-start;\n    }\n    .align-items-xl-end {\n      align-items: flex-end;\n    }\n    .align-items-xl-center {\n      align-items: center;\n    }\n    .align-items-xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-xl-start {\n      align-content: flex-start;\n    }\n    .align-content-xl-end {\n      align-content: flex-end;\n    }\n    .align-content-xl-center {\n      align-content: center;\n    }\n    .align-content-xl-between {\n      align-content: space-between;\n    }\n    .align-content-xl-around {\n      align-content: space-around;\n    }\n    .align-content-xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-xl-auto {\n      align-self: auto;\n    }\n    .align-self-xl-start {\n      align-self: flex-start;\n    }\n    .align-self-xl-end {\n      align-self: flex-end;\n    }\n    .align-self-xl-center {\n      align-self: center;\n    }\n    .align-self-xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-xl-start {\n      place-items: start;\n    }\n    .place-items-xl-end {\n      place-items: end;\n    }\n    .place-items-xl-center {\n      place-items: center;\n    }\n    .place-items-xl-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-xl-3 {\n      --columns: 3;\n    }\n    .grid-cols-xl-4 {\n      --columns: 4;\n    }\n    .grid-cols-xl-6 {\n      --columns: 6;\n    }\n    .grid-cols-xl-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-xl-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-xl-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-xl-dense {\n      grid-auto-flow: dense;\n    }\n    .order-xl-first {\n      order: -1;\n    }\n    .order-xl-0 {\n      order: 0;\n    }\n    .order-xl-1 {\n      order: 1;\n    }\n    .order-xl-2 {\n      order: 2;\n    }\n    .order-xl-3 {\n      order: 3;\n    }\n    .order-xl-4 {\n      order: 4;\n    }\n    .order-xl-5 {\n      order: 5;\n    }\n    .order-xl-last {\n      order: 6;\n    }\n    .m-xl--2 {\n      margin: -0.5rem;\n    }\n    .m-xl--1 {\n      margin: -0.25rem;\n    }\n    .m-xl-0 {\n      margin: 0;\n    }\n    .m-xl-1 {\n      margin: 0.25rem;\n    }\n    .m-xl-2 {\n      margin: 0.5rem;\n    }\n    .m-xl-3 {\n      margin: 1rem;\n    }\n    .m-xl-4 {\n      margin: 1.5rem;\n    }\n    .m-xl-5 {\n      margin: 3rem;\n    }\n    .m-xl-auto {\n      margin: auto;\n    }\n    .mx-xl--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-xl--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-xl-0 {\n      margin-inline: 0;\n    }\n    .mx-xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-xl-auto {\n      margin-inline: auto;\n    }\n    .my-xl--2 {\n      margin-block: -0.5rem;\n    }\n    .my-xl--1 {\n      margin-block: -0.25rem;\n    }\n    .my-xl-0 {\n      margin-block: 0;\n    }\n    .my-xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-xl-3 {\n      margin-block: 1rem;\n    }\n    .my-xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-xl-5 {\n      margin-block: 3rem;\n    }\n    .my-xl-auto {\n      margin-block: auto;\n    }\n    .mt-xl--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-xl--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-xl-auto {\n      margin-block-start: auto;\n    }\n    .me-xl--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-xl--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-xl--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-xl--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-xl--2 {\n      padding: -0.5rem;\n    }\n    .p-xl--1 {\n      padding: -0.25rem;\n    }\n    .p-xl-0 {\n      padding: 0;\n    }\n    .p-xl-1 {\n      padding: 0.25rem;\n    }\n    .p-xl-2 {\n      padding: 0.5rem;\n    }\n    .p-xl-3 {\n      padding: 1rem;\n    }\n    .p-xl-4 {\n      padding: 1.5rem;\n    }\n    .p-xl-5 {\n      padding: 3rem;\n    }\n    .px-xl--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-xl--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-xl-0 {\n      padding-inline: 0;\n    }\n    .px-xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-xl--2 {\n      padding-block: -0.5rem;\n    }\n    .py-xl--1 {\n      padding-block: -0.25rem;\n    }\n    .py-xl-0 {\n      padding-block: 0;\n    }\n    .py-xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-xl-3 {\n      padding-block: 1rem;\n    }\n    .py-xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-xl--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-xl--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-xl--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-xl--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-xl--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-xl--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-xl--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-xl--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-xl-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-xl--2 {\n      gap: -0.5rem;\n    }\n    .gap-xl--1 {\n      gap: -0.25rem;\n    }\n    .gap-xl-0 {\n      gap: 0;\n    }\n    .gap-xl-1 {\n      gap: 0.25rem;\n    }\n    .gap-xl-2 {\n      gap: 0.5rem;\n    }\n    .gap-xl-3 {\n      gap: 1rem;\n    }\n    .gap-xl-4 {\n      gap: 1.5rem;\n    }\n    .gap-xl-5 {\n      gap: 3rem;\n    }\n    .row-gap-xl--2 {\n      row-gap: -0.5rem;\n    }\n    .row-gap-xl--1 {\n      row-gap: -0.25rem;\n    }\n    .row-gap-xl-0 {\n      row-gap: 0;\n    }\n    .row-gap-xl-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-xl-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-xl-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-xl-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-xl-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-xl--2 {\n      column-gap: -0.5rem;\n    }\n    .column-gap-xl--1 {\n      column-gap: -0.25rem;\n    }\n    .column-gap-xl-0 {\n      column-gap: 0;\n    }\n    .column-gap-xl-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-xl-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-xl-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-xl-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-xl-5 {\n      column-gap: 3rem;\n    }\n    .text-xl-start {\n      text-align: start;\n    }\n    .text-xl-end {\n      text-align: end;\n    }\n    .text-xl-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1536px) {\n    .float-2xl-start {\n      float: inline-start;\n    }\n    .float-2xl-end {\n      float: inline-end;\n    }\n    .float-2xl-none {\n      float: none;\n    }\n    .object-fit-2xl-contain {\n      object-fit: contain;\n    }\n    .object-fit-2xl-cover {\n      object-fit: cover;\n    }\n    .object-fit-2xl-fill {\n      object-fit: fill;\n    }\n    .object-fit-2xl-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-2xl-none {\n      object-fit: none;\n    }\n    .d-2xl-inline {\n      display: inline;\n    }\n    .d-2xl-inline-block {\n      display: inline-block;\n    }\n    .d-2xl-block {\n      display: block;\n    }\n    .d-2xl-grid {\n      display: grid;\n    }\n    .d-2xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-2xl-table {\n      display: table;\n    }\n    .d-2xl-table-row {\n      display: table-row;\n    }\n    .d-2xl-table-cell {\n      display: table-cell;\n    }\n    .d-2xl-flex {\n      display: flex;\n    }\n    .d-2xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-2xl-contents {\n      display: contents;\n    }\n    .d-2xl-flow-root {\n      display: flow-root;\n    }\n    .d-2xl-none {\n      display: none;\n    }\n    .flex-2xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-2xl-row {\n      flex-direction: row;\n    }\n    .flex-2xl-column {\n      flex-direction: column;\n    }\n    .flex-2xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-2xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-2xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-2xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-2xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-2xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-2xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-2xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-2xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-2xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-2xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-2xl-center {\n      justify-content: center;\n    }\n    .justify-content-2xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-2xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-2xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-2xl-start {\n      justify-items: start;\n    }\n    .justify-items-2xl-end {\n      justify-items: end;\n    }\n    .justify-items-2xl-center {\n      justify-items: center;\n    }\n    .justify-items-2xl-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-2xl-start {\n      justify-self: flex-start;\n    }\n    .justify-self-2xl-end {\n      justify-self: flex-end;\n    }\n    .justify-self-2xl-center {\n      justify-self: center;\n    }\n    .align-items-2xl-start {\n      align-items: flex-start;\n    }\n    .align-items-2xl-end {\n      align-items: flex-end;\n    }\n    .align-items-2xl-center {\n      align-items: center;\n    }\n    .align-items-2xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-2xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-2xl-start {\n      align-content: flex-start;\n    }\n    .align-content-2xl-end {\n      align-content: flex-end;\n    }\n    .align-content-2xl-center {\n      align-content: center;\n    }\n    .align-content-2xl-between {\n      align-content: space-between;\n    }\n    .align-content-2xl-around {\n      align-content: space-around;\n    }\n    .align-content-2xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-2xl-auto {\n      align-self: auto;\n    }\n    .align-self-2xl-start {\n      align-self: flex-start;\n    }\n    .align-self-2xl-end {\n      align-self: flex-end;\n    }\n    .align-self-2xl-center {\n      align-self: center;\n    }\n    .align-self-2xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-2xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-2xl-start {\n      place-items: start;\n    }\n    .place-items-2xl-end {\n      place-items: end;\n    }\n    .place-items-2xl-center {\n      place-items: center;\n    }\n    .place-items-2xl-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-2xl-3 {\n      --columns: 3;\n    }\n    .grid-cols-2xl-4 {\n      --columns: 4;\n    }\n    .grid-cols-2xl-6 {\n      --columns: 6;\n    }\n    .grid-cols-2xl-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-2xl-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-2xl-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-2xl-dense {\n      grid-auto-flow: dense;\n    }\n    .order-2xl-first {\n      order: -1;\n    }\n    .order-2xl-0 {\n      order: 0;\n    }\n    .order-2xl-1 {\n      order: 1;\n    }\n    .order-2xl-2 {\n      order: 2;\n    }\n    .order-2xl-3 {\n      order: 3;\n    }\n    .order-2xl-4 {\n      order: 4;\n    }\n    .order-2xl-5 {\n      order: 5;\n    }\n    .order-2xl-last {\n      order: 6;\n    }\n    .m-2xl--2 {\n      margin: -0.5rem;\n    }\n    .m-2xl--1 {\n      margin: -0.25rem;\n    }\n    .m-2xl-0 {\n      margin: 0;\n    }\n    .m-2xl-1 {\n      margin: 0.25rem;\n    }\n    .m-2xl-2 {\n      margin: 0.5rem;\n    }\n    .m-2xl-3 {\n      margin: 1rem;\n    }\n    .m-2xl-4 {\n      margin: 1.5rem;\n    }\n    .m-2xl-5 {\n      margin: 3rem;\n    }\n    .m-2xl-auto {\n      margin: auto;\n    }\n    .mx-2xl--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-2xl--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-2xl-0 {\n      margin-inline: 0;\n    }\n    .mx-2xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-2xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-2xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-2xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-2xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-2xl-auto {\n      margin-inline: auto;\n    }\n    .my-2xl--2 {\n      margin-block: -0.5rem;\n    }\n    .my-2xl--1 {\n      margin-block: -0.25rem;\n    }\n    .my-2xl-0 {\n      margin-block: 0;\n    }\n    .my-2xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-2xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-2xl-3 {\n      margin-block: 1rem;\n    }\n    .my-2xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-2xl-5 {\n      margin-block: 3rem;\n    }\n    .my-2xl-auto {\n      margin-block: auto;\n    }\n    .mt-2xl--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-2xl--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-2xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-2xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-2xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-2xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-2xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-2xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-2xl-auto {\n      margin-block-start: auto;\n    }\n    .me-2xl--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-2xl--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-2xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-2xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-2xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-2xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-2xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-2xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-2xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-2xl--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-2xl--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-2xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-2xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-2xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-2xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-2xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-2xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-2xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-2xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-2xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-2xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-2xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-2xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-2xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-2xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-2xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-2xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-2xl--2 {\n      padding: -0.5rem;\n    }\n    .p-2xl--1 {\n      padding: -0.25rem;\n    }\n    .p-2xl-0 {\n      padding: 0;\n    }\n    .p-2xl-1 {\n      padding: 0.25rem;\n    }\n    .p-2xl-2 {\n      padding: 0.5rem;\n    }\n    .p-2xl-3 {\n      padding: 1rem;\n    }\n    .p-2xl-4 {\n      padding: 1.5rem;\n    }\n    .p-2xl-5 {\n      padding: 3rem;\n    }\n    .px-2xl--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-2xl--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-2xl-0 {\n      padding-inline: 0;\n    }\n    .px-2xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-2xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-2xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-2xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-2xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-2xl--2 {\n      padding-block: -0.5rem;\n    }\n    .py-2xl--1 {\n      padding-block: -0.25rem;\n    }\n    .py-2xl-0 {\n      padding-block: 0;\n    }\n    .py-2xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-2xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-2xl-3 {\n      padding-block: 1rem;\n    }\n    .py-2xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-2xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-2xl--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-2xl--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-2xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-2xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-2xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-2xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-2xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-2xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-2xl--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-2xl--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-2xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-2xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-2xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-2xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-2xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-2xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-2xl--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-2xl--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-2xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-2xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-2xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-2xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-2xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-2xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-2xl--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-2xl--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-2xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-2xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-2xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-2xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-2xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-2xl-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-2xl--2 {\n      gap: -0.5rem;\n    }\n    .gap-2xl--1 {\n      gap: -0.25rem;\n    }\n    .gap-2xl-0 {\n      gap: 0;\n    }\n    .gap-2xl-1 {\n      gap: 0.25rem;\n    }\n    .gap-2xl-2 {\n      gap: 0.5rem;\n    }\n    .gap-2xl-3 {\n      gap: 1rem;\n    }\n    .gap-2xl-4 {\n      gap: 1.5rem;\n    }\n    .gap-2xl-5 {\n      gap: 3rem;\n    }\n    .row-gap-2xl--2 {\n      row-gap: -0.5rem;\n    }\n    .row-gap-2xl--1 {\n      row-gap: -0.25rem;\n    }\n    .row-gap-2xl-0 {\n      row-gap: 0;\n    }\n    .row-gap-2xl-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-2xl-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-2xl-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-2xl-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-2xl-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-2xl--2 {\n      column-gap: -0.5rem;\n    }\n    .column-gap-2xl--1 {\n      column-gap: -0.25rem;\n    }\n    .column-gap-2xl-0 {\n      column-gap: 0;\n    }\n    .column-gap-2xl-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-2xl-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-2xl-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-2xl-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-2xl-5 {\n      column-gap: 3rem;\n    }\n    .text-2xl-start {\n      text-align: start;\n    }\n    .text-2xl-end {\n      text-align: end;\n    }\n    .text-2xl-center {\n      text-align: center;\n    }\n  }\n}\n\n/*# sourceMappingURL=bootstrap-utilities.css.map */\n","@use \"sass:map\";\n@use \"colors\" as *;\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"theme\" as *;\n@use \"mixins/tokens\" as *;\n@use \"forms/form-variables\" as *;\n\n// mdo-do: do we need theme?\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n\n$root-tokens: () !default;\n\n// scss-docs-start root-tokens\n// stylelint-disable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: defaults(\n  (\n    --black: #{$black},\n    --white: #{$white},\n\n    --gradient: #{$gradient},\n\n    // scss-docs-start root-font-size-variables\n    --font-size-base: 1rem,\n    --font-size-xs: .75rem,\n    --font-size-sm: .875rem,\n    --font-size-md: 1rem,\n    --font-size-lg: clamp(1.25rem, 1rem + .625vw, 1.5rem),\n    --font-size-xl: clamp(1.5rem, 1.1rem + .75vw, 1.75rem),\n    --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem),\n    --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem),\n    --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem),\n    --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem),\n    --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem),\n\n    --line-height-xs: 1.25,\n    --line-height-sm: 1.5,\n    --line-height-md: 1.5,\n    --line-height-lg: 1.5,\n    --line-height-xl: calc(2.5 / 1.75),\n    --line-height-2xl: calc(3 / 2.25),\n    --line-height-3xl: 1.2,\n    --line-height-4xl: 1.1,\n    --line-height-5xl: 1.1,\n    --line-height-6xl: 1,\n    // scss-docs-end root-font-size-variables\n\n    // scss-docs-start root-font-weight-variables\n    --font-weight-lighter: lighter,\n    --font-weight-light: 300,\n    --font-weight-normal: 400,\n    --font-weight-medium: 500,\n    --font-weight-semibold: 600,\n    --font-weight-bold: 700,\n    --font-weight-bolder: bolder,\n    // scss-docs-end root-font-weight-variables\n\n    // scss-docs-start root-body-variables\n    --body-font-family: system-ui,\n    --body-font-size: var(--font-size-base),\n    --body-font-weight: #{$font-weight-base},\n    --body-line-height: #{$line-height-base},\n\n    --heading-color: #{$headings-color},\n\n    --hr-border-color: var(--border-color),\n\n    --link-color: light-dark(var(--primary-base), var(--primary-text)),\n    --link-decoration: #{$link-decoration},\n    --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000),\n\n    --font-mono: \"SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace\",\n    --code-font-size: 95%,\n    --code-color: var(--fg-2),\n\n    // scss-docs-start root-border-var\n    --border-width: #{$border-width},\n    --border-style: #{$border-style},\n    --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700)),\n    --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    // scss-docs-end root-border-var\n\n    // scss-docs-start root-border-radius-var\n    --border-radius: .5rem,\n    --border-radius-xs: .375rem,\n    --border-radius-sm: .5rem,\n    --border-radius-lg: .75rem,\n    --border-radius-xl: 1rem,\n    --border-radius-2xl: 2rem,\n    --border-radius-pill: 50rem,\n    // scss-docs-end root-border-radius-var\n\n    // scss-docs-start root-box-shadow-variables\n    --box-shadow: 0 .5rem 1rem rgb(0 0 0 / 15%),\n    --box-shadow-sm: 0 .125rem .25rem rgb(0 0 0 / 7.5%),\n    --box-shadow-lg: 0 1rem 3rem rgb(0 0 0 / 17.5%),\n    --box-shadow-inset: inset 0 1px 2px rgb(0 0 0 / 7.5%),\n    // scss-docs-end root-box-shadow-variables\n\n    --spacer: 1rem,\n\n    // scss-docs-start root-focus-variables\n    --focus-ring-width: 3px,\n    --focus-ring-offset: 1px,\n    --focus-ring-color: var(--primary-focus-ring),\n    --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color),\n    // scss-docs-end root-focus-variables\n\n    // scss-docs-start root-form-variables\n    --control-checked-bg: var(--primary-base),\n    --control-checked-border-color: var(--control-checked-bg),\n    --control-active-bg: var(--primary-base),\n    --control-active-border-color: var(--control-active-bg),\n    --control-disabled-bg: var(--bg-3),\n    --control-disabled-opacity: .65,\n\n    --btn-input-fg: var(--fg-body),\n    --btn-input-bg: var(--bg-body),\n\n    --btn-input-min-height: 2.375rem,\n    --btn-input-padding-y: .375rem,\n    --btn-input-padding-x: .75rem,\n    --btn-input-font-size: var(--font-size-base),\n    --btn-input-line-height: var(--line-height-base),\n    --btn-input-border-radius: var(--border-radius),\n\n    --btn-input-xs-min-height: 1.5rem,\n    --btn-input-xs-padding-y: .125rem,\n    --btn-input-xs-padding-x: .5rem,\n    --btn-input-xs-font-size: var(--font-size-xs),\n    --btn-input-xs-line-height: 1.125,\n    --btn-input-xs-border-radius: var(--border-radius-xs),\n\n    --btn-input-sm-min-height: 2rem,\n    --btn-input-sm-padding-y: .25rem,\n    --btn-input-sm-padding-x: .625rem,\n    --btn-input-sm-font-size: var(--font-size-sm),\n    --btn-input-sm-line-height: var(--line-height-sm),\n    --btn-input-sm-border-radius: var(--border-radius-sm),\n\n    --btn-input-lg-min-height: 2.75rem,\n    --btn-input-lg-padding-y: .5rem,\n    --btn-input-lg-padding-x: 1rem,\n    --btn-input-lg-font-size: var(--font-size-md),\n    --btn-input-lg-line-height: var(--line-height-md),\n    --btn-input-lg-border-radius: var(--border-radius-lg),\n    // scss-docs-end root-form-variables\n\n    // scss-docs-start root-form-validation-variables\n    --form-valid-color: #{$form-valid-color},\n    --form-valid-border-color: #{$form-valid-border-color},\n    --form-invalid-color: #{$form-invalid-color},\n    --form-invalid-border-color: #{$form-invalid-border-color},\n    // scss-docs-end root-form-validation-variables\n  ),\n  $root-tokens\n);\n// stylelint-enable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// scss-docs-end root-tokens\n\n// scss-docs-start root-theme-tokens\n// Generate semantic theme colors\n@each $color-name, $color-map in $theme-colors {\n  @each $key, $value in $color-map {\n    $root-tokens: map.set($root-tokens, --#{$color-name}-#{$key}, $value);\n  }\n}\n\n// Generate background tokens\n@each $key, $value in $theme-bgs {\n  $root-tokens: map.set($root-tokens, --bg-#{$key}, $value);\n}\n\n// Generate foreground tokens\n@each $key, $value in $theme-fgs {\n  $root-tokens: map.set($root-tokens, --fg-#{$key}, $value);\n}\n\n// Generate border tokens\n@each $key, $value in $theme-borders {\n  $root-tokens: map.set($root-tokens, --border-#{$key}, $value);\n}\n// scss-docs-end root-theme-tokens\n\n// Generate breakpoint tokens\n@each $name, $value in $breakpoints {\n  $root-tokens: map.set($root-tokens, --breakpoint-#{$name}, $value);\n}\n\n:root {\n  @include tokens($root-tokens);\n\n  color-scheme: light dark;\n}\n\n[data-bs-theme=\"dark\"] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=\"light\"] {\n  color-scheme: light;\n}\n","@layer helpers {\n  .focus-ring:focus-visible {\n    outline: var(--focus-ring);\n  }\n}\n","@use \"../variables\" as *;\n@use \"../mixins/transition\" as *;\n\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: $icon-link-gap;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, .5));\n    text-underline-offset: $icon-link-underline-offset;\n    backface-visibility: hidden;\n\n    > .bi {\n      flex-shrink: 0;\n      width: $icon-link-icon-size;\n      height: $icon-link-icon-size;\n      fill: currentcolor;\n      @include transition($icon-link-icon-transition);\n    }\n  }\n\n  .icon-link-hover {\n    &:hover,\n    &:focus-visible {\n      > .bi {\n        transform: var(--icon-link-transform, $icon-link-icon-transform);\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n\n// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $btn-padding-y-lg.\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `<body>` element.\n\n// $body-text-align:           null !default;\n\n// Links\n//\n// Style anchor elements.\n\n// $link-color:                              var !default;\n$link-decoration:                         underline !default;\n$link-underline-offset:                   .2em !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap:               .375rem !default;\n$icon-link-underline-offset:  .25em !default;\n$icon-link-icon-size:         1em !default;\n$icon-link-icon-transition:   .2s ease-in-out transform !default;\n$icon-link-icon-transform:    translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n$border-style:                solid !default;\n$border-color:                color-mix(in oklch, var(--gray-100), var(--gray-200)) !default;\n// scss-docs-end border-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"auto\": auto,\n  \"1x1\": #{\"1 / 1\"},\n  \"4x3\": #{\"4 / 3\"},\n  \"16x9\": #{\"16 / 9\"},\n  \"21x9\": #{\"21 / 9\"}\n) !default;\n// scss-docs-end aspect-ratios\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// $font-family-sans-serif:      system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n// $font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// $font-family-base:            var(--font-sans-serif) !default;\n// $font-family-code:            var(--font-monospace) !default;\n\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-medium:          500 !default;\n$font-weight-semibold:        600 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n\n$h1-font-size: var(--font-size-3xl) !default;\n$h2-font-size: var(--font-size-2xl) !default;\n$h3-font-size: var(--font-size-xl) !default;\n$h4-font-size: var(--font-size-lg) !default;\n$h5-font-size: var(--font-size-md) !default;\n$h6-font-size: var(--font-size-sm) !default;\n// scss-docs-end font-variables\n\n// Font sizes with line-height for utilities\n$font-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$font-sizes: defaults(\n  (\n    \"xs\": (\n      \"font-size\": var(--font-size-xs),\n      \"line-height\": var(--line-height-xs)\n    ),\n    \"sm\": (\n      \"font-size\": var(--font-size-sm),\n      \"line-height\": var(--line-height-sm)\n    ),\n    \"md\": (\n      \"font-size\": var(--font-size-md),\n      \"line-height\": var(--line-height-md)\n    ),\n    \"lg\": (\n      \"font-size\": var(--font-size-lg),\n      \"line-height\": var(--line-height-lg)\n    ),\n    \"xl\": (\n      \"font-size\": var(--font-size-xl),\n      \"line-height\": var(--line-height-xl)\n    ),\n    \"2xl\": (\n      \"font-size\": var(--font-size-2xl),\n      \"line-height\": var(--line-height-2xl)\n    ),\n    \"3xl\": (\n      \"font-size\": var(--font-size-3xl),\n      \"line-height\": var(--line-height-3xl)\n    ),\n    \"4xl\": (\n      \"font-size\": var(--font-size-4xl),\n      \"line-height\": var(--line-height-4xl)\n    ),\n    \"5xl\": (\n      \"font-size\": var(--font-size-5xl),\n      \"line-height\": var(--line-height-5xl)\n    ),\n    \"6xl\": (\n      \"font-size\": var(--font-size-6xl),\n      \"line-height\": var(--line-height-6xl)\n    ),\n  ),\n  $font-sizes\n);\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start type-variables\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n// $list-inline-padding:         .5rem !default;\n// scss-docs-end type-variables\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown:                   1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-dialog:                     1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n$zindex-toast:                      1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n  n1: -1,\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n","@use \"sass:list\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n@mixin transition($transition...) {\n  @if list.length($transition) == 0 {\n    $transition: $transition-base;\n  }\n\n  @if list.length($transition) > 1 {\n    @each $value in $transition {\n      @if $value == null or $value == none {\n        @warn \"The keyword 'none' or 'null' must be used as a single argument.\";\n      }\n    }\n  }\n\n  @if $enable-transitions {\n    @if list.nth($transition, 1) != null {\n      transition: $transition;\n    }\n\n    @if $enable-reduced-motion and list.nth($transition, 1) != null and list.nth($transition, 1) != none {\n      @media (prefers-reduced-motion: reduce) {\n        transition: none;\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"../config\" as *;\n@use \"../variables\" as *;\n@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: $zindex-fixed;\n  }\n\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: $zindex-fixed;\n  }\n\n  // Responsive sticky top and bottom\n  @each $breakpoint in map.keys($breakpoints) {\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      .sticky#{$infix}-top {\n        position: sticky;\n        top: 0;\n        z-index: $zindex-sticky;\n      }\n\n      .sticky#{$infix}-bottom {\n        position: sticky;\n        bottom: 0;\n        z-index: $zindex-sticky;\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"../config\" as *;\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px)\n//\n// The map defined in the `$breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl 2xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $breakpoints, $breakpoint-names: map.keys($breakpoints)) {\n  $n: list.index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoint-names}`\";\n  }\n  // Use @if/@else because list.nth would error if evaluated when $n equals list length\n  @if $n < list.length($breakpoint-names) {\n    @return list.nth($breakpoint-names, $n + 1);\n  } @else {\n    @return null;\n  }\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $breakpoints) {\n  $min: map.get($breakpoints, $name);\n  @return if(sass($min != 0): $min; else: null);\n}\n\n// Maximum breakpoint width for range media queries.\n// Returns the breakpoint value to use as an upper bound in range queries.\n//\n//    >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n//    >> breakpoint-max(xxl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    null\n@function breakpoint-max($name, $breakpoints: $breakpoints) {\n  @if $name == null {\n    @return null;\n  }\n  $max: map.get($breakpoints, $name);\n  @return if(sass($max and $max > 0): $max; else: null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $breakpoints) {\n  @return if(sass(breakpoint-min($name, $breakpoints) == null): \"\"; else: \"-#{$name}\");\n}\n\n// Iterate all breakpoints and provide the current name and infix.\n//\n//    @include loop-breakpoints-up() using ($breakpoint, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-up($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n    @content($breakpoint, $infix);\n  }\n}\n\n// Iterate all breakpoints and provide the current name, next name, and next infix.\n//\n//    @include loop-breakpoints-down() using ($breakpoint, $next, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-down($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $next: breakpoint-next($breakpoint, $breakpoints);\n    $infix: breakpoint-infix($next, $breakpoints);\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Backwards-compatible alias for next/down breakpoint loops.\n@mixin loop-breakpoints($breakpoints: $breakpoints) {\n  @include loop-breakpoints-down($breakpoints) using ($breakpoint, $next, $infix) {\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (width >= $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (width < $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n\n// Container queries\n//\n// Container queries allow elements to respond to the size of a containing element\n// rather than the viewport. These mixins mirror the media-breakpoint-* mixins above.\n//\n// scss-docs-start container-query-mixins\n\n// Set an element as a query container.\n//\n//    @include set-container();                    // container-type: inline-size\n//    @include set-container(size);                // container-type: size\n//    @include set-container(inline-size, sidebar); // container: sidebar / inline-size\n//\n@mixin set-container($type: inline-size, $name: null) {\n  @if $name {\n    container: #{$name} / #{$type};\n  } @else {\n    container-type: #{$type};\n  }\n}\n\n// Container query of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider within the container.\n//\n//    @include container-breakpoint-up(md) { ... }\n//    @include container-breakpoint-up(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-up($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower within the container.\n//\n//    @include container-breakpoint-down(lg) { ... }\n//    @include container-breakpoint-down(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-down($name, $container-name: null, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @if $container-name {\n      @container #{$container-name} (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints within the container.\n//\n//    @include container-breakpoint-between(md, xl) { ... }\n//    @include container-breakpoint-between(md, xl, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-between($lower, $upper, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($lower, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($upper, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Container query between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint within the container.\n//\n//    @include container-breakpoint-only(md) { ... }\n//    @include container-breakpoint-only(md, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-only($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($name, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($next, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n// scss-docs-end container-query-mixins\n","@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  // scss-docs-start stacks\n  .stack-container {\n    @include set-container();\n  }\n\n  [class*=\"hstack\"],\n  [class*=\"vstack\"] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n\n  @include loop-breakpoints-up() using ($breakpoint, $infix) {\n    .vstack#{$infix} {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: column;\n        --stack-align-items: stretch;\n      }\n    }\n    .hstack#{$infix} {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: row;\n        --stack-align-items: flex-start;\n      }\n    }\n  }\n  // scss-docs-end stacks\n}\n","@use \"../theme\" as *;\n\n// Generate theme modifier classes (e.g., .theme-primary, .theme-accent, etc.)\n@layer helpers {\n  @include generate-theme-classes();\n}\n","@use \"sass:meta\";\n@use \"sass:map\";\n\n@function theme-color-values($key) {\n  $result: ();\n\n  @each $color-name, $color-map in $theme-colors {\n    @if map.has-key($color-map, $key) {\n      $result: map.merge($result, ($color-name: map.get($color-map, $key)));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate opacity values using color-mix()\n@function theme-opacity-values($color-var, $opacities: $util-opacity) {\n  $result: ();\n\n  @each $key, $value in $opacities {\n    @if $key == 100 {\n      // For 100%, use direct variable reference (more efficient)\n      $result: map.merge($result, ($key: var($color-var)));\n    } @else {\n      // For other values, use color-mix()\n      $percentage: $key * 1%;\n      $result: map.merge($result, ($key: color-mix(in oklch, var($color-var) $percentage, transparent)));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate theme classes dynamically based on the keys in each theme color map\n@mixin generate-theme-classes() {\n  @each $color-name, $color-map in $theme-colors {\n    .theme-#{$color-name} {\n      @each $key, $value in $color-map {\n        --theme-#{$key}: var(--#{$color-name}-#{$key});\n      }\n    }\n  }\n}\n\n// Recursive mixin to handle nested maps\n@mixin create-css-vars($map, $parent-key: \"\") {\n  @each $key, $value in $map {\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    $current-key: if(sass($parent-key == \"\"): $key; else: \"#{$parent-key}-#{$key}\");\n\n    @if meta.type-of($value) == \"map\" {\n      @include create-css-vars($value, $current-key);\n    } @else {\n      --#{$current-key}: #{$value};\n    }\n  }\n}\n\n// scss-docs-start theme-colors\n$theme-colors: (\n  \"primary\": (\n    \"base\": var(--blue-500),\n    \"text\": light-dark(var(--blue-600), var(--blue-400)),\n    \"text-emphasis\": light-dark(var(--blue-800), var(--blue-200)),\n    \"bg\": var(--blue-500),\n    \"bg-subtle\": light-dark(var(--blue-100), var(--blue-900)),\n    \"bg-muted\": light-dark(var(--blue-200), var(--blue-800)),\n    \"border\": light-dark(var(--blue-300), var(--blue-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"accent\": (\n    \"base\": var(--indigo-500),\n    \"text\": light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300))),\n    \"text-emphasis\": light-dark(var(--indigo-800), var(--indigo-300)),\n    \"bg\": var(--indigo-500),\n    \"bg-subtle\": light-dark(var(--indigo-100), var(--indigo-900)),\n    \"bg-muted\": light-dark(var(--indigo-200), var(--indigo-800)),\n    \"border\": light-dark(var(--indigo-300), var(--indigo-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"success\": (\n    \"base\": var(--green-500),\n    \"text\": light-dark(var(--green-600), var(--green-400)),\n    \"text-emphasis\": light-dark(var(--green-800), var(--green-300)),\n    \"bg\": var(--green-500),\n    \"bg-subtle\": light-dark(var(--green-100), var(--green-900)),\n    \"bg-muted\": light-dark(var(--green-200), var(--green-800)),\n    \"border\": light-dark(var(--green-300), var(--green-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"danger\": (\n    \"base\": var(--red-500),\n    \"text\": light-dark(var(--red-600), var(--red-400)),\n    \"text-emphasis\": light-dark(var(--red-800), var(--red-300)),\n    \"bg\": var(--red-500),\n    \"bg-subtle\": light-dark(var(--red-100), var(--red-900)),\n    \"bg-muted\": light-dark(var(--red-200), var(--red-800)),\n    \"border\": light-dark(var(--red-300), var(--red-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"warning\": (\n    \"base\": var(--yellow-500),\n    \"text\": light-dark(var(--yellow-700), var(--yellow-400)),\n    \"text-emphasis\": light-dark(var(--yellow-800), var(--yellow-300)),\n    \"bg\": var(--yellow-500),\n    \"bg-subtle\": light-dark(var(--yellow-100), var(--yellow-900)),\n    \"bg-muted\": light-dark(var(--yellow-200), var(--yellow-800)),\n    \"border\": light-dark(var(--yellow-300), var(--yellow-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"info\": (\n    \"base\": var(--cyan-500),\n    \"text\": light-dark(var(--cyan-600), var(--cyan-400)),\n    \"text-emphasis\": light-dark(var(--cyan-800), var(--cyan-300)),\n    \"bg\": var(--cyan-500),\n    \"bg-subtle\": light-dark(var(--cyan-100), var(--cyan-900)),\n    \"bg-muted\": light-dark(var(--cyan-200), var(--cyan-800)),\n    \"border\": light-dark(var(--cyan-300), var(--cyan-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"inverse\": (\n    \"base\": var(--gray-900),\n    \"text\": light-dark(var(--gray-900), var(--gray-200)),\n    \"text-emphasis\": light-dark(var(--gray-975), var(--white)),\n    \"bg\": light-dark(var(--gray-900), var(--gray-025)),\n    \"bg-subtle\": light-dark(var(--gray-100), var(--gray-900)),\n    \"bg-muted\": light-dark(var(--gray-200), var(--gray-300)),\n    \"border\": light-dark(var(--gray-400), var(--gray-100)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--white), var(--gray-900))\n  ),\n  \"secondary\": (\n    \"base\": var(--gray-200),\n    \"text\": light-dark(var(--gray-600), var(--gray-400)),\n    \"text-emphasis\": light-dark(var(--gray-800), var(--gray-200)),\n    \"bg\": light-dark(var(--gray-100), var(--gray-600)),\n    \"bg-subtle\": light-dark(var(--gray-050), var(--gray-800)),\n    \"bg-muted\": light-dark(var(--gray-100), var(--gray-700)),\n    \"border\": light-dark(var(--gray-300), var(--gray-600)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--gray-900), var(--white))\n  )\n) !default;\n// scss-docs-end theme-colors\n\n// mdo-do: consider using muted, subtle, ghost or something instead of linear scale?\n$theme-bgs: (\n  \"body\": light-dark(var(--white), var(--gray-975)),\n  \"1\": light-dark(var(--gray-025), var(--gray-950)),\n  \"2\": light-dark(var(--gray-050), var(--gray-900)),\n  \"3\": light-dark(var(--gray-100), var(--gray-800)),\n  \"4\": light-dark(var(--gray-200), var(--gray-700)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"transparent\": transparent,\n  \"inherit\": inherit,\n) !default;\n\n$theme-fgs: (\n  \"body\": light-dark(var(--gray-900), var(--gray-050)),\n  \"1\": light-dark(var(--gray-800), var(--gray-200)),\n  \"2\": light-dark(var(--gray-700), var(--gray-300)),\n  \"3\": light-dark(var(--gray-600), var(--gray-500)),\n  \"4\": light-dark(var(--gray-500), var(--gray-600)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"inherit\": inherit,\n) !default;\n\n$theme-borders: (\n  \"bg\": var(--bg-body),\n  \"body\": light-dark(var(--gray-300), var(--gray-800)),\n  \"muted\": light-dark(var(--gray-200), var(--gray-800)),\n  \"subtle\": light-dark(var(--gray-100), var(--gray-900)),\n  \"emphasized\": light-dark(var(--gray-400), var(--gray-600)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n) !default;\n\n$util-opacity: (\n  10: .1,\n  20: .2,\n  30: .3,\n  40: .4,\n  50: .5,\n  60: .6,\n  70: .7,\n  80: .8,\n  90: .9,\n  100: 1\n) !default;\n","@use \"../mixins/visually-hidden\" as *;\n\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","// stylelint-disable declaration-no-important\n\n// Hide content visually while keeping it accessible to assistive technologies\n//\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin visually-hidden() {\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n\n  // Fix for positioned table caption that could become anonymous cells\n  &:not(caption) {\n    position: absolute !important;\n  }\n\n  // Fix to prevent overflowing children to become focusable\n  * {\n    overflow: hidden !important;\n  }\n}\n\n// Use to only display content when it's focused, or one of its child elements is focused\n// (i.e. when focus is within the element/container that the class was applied to)\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/WAI/WCAG22/Techniques/general/G1.html\n\n@mixin visually-hidden-focusable() {\n  &:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","@use \"../variables\" as *;\n\n@layer helpers {\n  .stretched-link {\n    &::#{$stretched-link-pseudo-element} {\n      position: absolute;\n      inset: 0;\n      z-index: $stretched-link-z-index;\n      content: \"\";\n    }\n  }\n}\n","@use \"../mixins/text-truncate\" as *;\n\n@layer helpers {\n  .text-truncate {\n    @include text-truncate();\n  }\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n","@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n@use \"../mixins/utilities\" as *;\n@use \"../utilities\" as *;\n\n@layer utilities {\n  // Loop over each breakpoint\n  @each $breakpoint in map.keys($breakpoints) {\n\n    // Generate media query if needed\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if meta.type-of($utility) == \"map\" and (map.get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix);\n        }\n      }\n    }\n  }\n\n  // Print utilities\n  @media print {\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Then check if the utility needs print styles\n      @if meta.type-of($utility) == \"map\" and map.get($utility, print) == true {\n        @include generate-utility($utility, \"-print\");\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n\n// stylelint-disable scss/dollar-variable-pattern\n\n// Utility generator\n\n// - Utilities can use three different types of selectors:\n//   - class: .class\n//   - attr-starts: [class^=\"class\"]\n//   - attr-includes: [class*=\"class\"]\n// - Utilities can generate regular CSS properties and CSS custom properties\n// - Utilities can be responsive or not\n// - Utilities can have state variants (e.g., hover, focus, active)\n// - Utilities can define local CSS variables\n//\n// CSS custom properties can be generated in two ways:\n//\n// 1. Property map with null values (CSS var receives the utility value):\n// \"bg-color\": (\n//   property: (\n//     \"--bg\": null,\n//     \"background-color\": var(--bg)\n//   ),\n//   class: bg,\n//   values: (\n//     primary: var(--blue-500),\n//   )\n// )\n// Generates:\n// .bg-primary {\n//   --bs-bg: var(--bs-blue-500);\n//   background-color: var(--bs-bg);\n// }\n//\n// 2. Variables map (static CSS custom properties on every class):\n// \"link-underline\": (\n//   property: text-decoration-color,\n//   class: link-underline,\n//   variables: (\n//     \"link-underline-opacity\": 1\n//   ),\n//   values: (...)\n// )\n// Generates:\n// .link-underline {\n//   --bs-link-underline-opacity: 1;\n//   text-decoration-color: ...;\n// }\n\n// Helper mixin to generate CSS properties for both legacy and property map approaches\n@mixin generate-properties($utility, $propertyMap, $properties, $value) {\n  @if $propertyMap != null {\n    // New Property-Value Mapping approach\n    @each $property, $defaultValue in $propertyMap {\n      // If value is a map, check if it has a key for this property\n      // Otherwise, use defaultValue (or $value if defaultValue is null)\n      $actualValue: $defaultValue;\n      @if meta.type-of($value) == \"map\" and map.has-key($value, $property) {\n        $actualValue: map.get($value, $property);\n      } @else if $defaultValue == null {\n        $actualValue: $value;\n      }\n      @if map.get($utility, important) {\n        #{$property}: $actualValue !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $actualValue;\n      }\n    }\n  } @else {\n    // Legacy approach\n    @each $property in $properties {\n      @if map.get($utility, important) {\n        #{$property}: $value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $value;\n      }\n    }\n  }\n}\n\n@mixin generate-utility($utility, $infix: \"\") {\n  // Validate required keys\n  @if not map.has-key($utility, property) {\n    @error \"Utility is missing required `property` key: #{$utility}\";\n  }\n  @if not map.has-key($utility, values) {\n    @error \"Utility is missing required `values` key: #{$utility}\";\n  }\n\n  // Warn on unknown keys (likely typos)\n  $valid-keys: property, values, class, selector, responsive, print, important, state, variables;\n  @each $key in map.keys($utility) {\n    @if not list.index($valid-keys, $key) {\n      @warn \"Unknown utility key `#{$key}` found. Valid keys are: #{$valid-keys}\";\n    }\n  }\n\n  // Determine if we're generating a class, or an attribute selector\n  $selectorType: \"class\";\n  @if map.has-key($utility, selector) {\n    $selectorType: map.get($utility, selector);\n    // Validate selector type\n    $valid-selectors: \"class\", \"attr-starts\", \"attr-includes\";\n    @if not list.index($valid-selectors, $selectorType) {\n      @error \"Invalid `selector` value `#{$selectorType}`. Must be one of: #{$valid-selectors}\";\n    }\n  }\n  // Then get the class name to use in a class (e.g., .class) or in a attribute selector (e.g., [class^=\"class\"])\n  $selectorClass: map.get($utility, class);\n\n  // Attribute selectors require a `class` key\n  @if $selectorType != \"class\" and not map.has-key($utility, class) {\n    @error \"Utility with `selector: #{$selectorType}` requires a `class` key.\";\n  }\n\n  // Get the list or map of values and ensure it's a map\n  $values: map.get($utility, values);\n  @if meta.type-of($values) != \"map\" {\n    @if meta.type-of($values) == \"list\" {\n      $list: ();\n      @each $value in $values {\n        $list: map.merge($list, ($value: $value));\n      }\n      $values: $list;\n    } @else {\n      $values: (null: $values);\n    }\n  }\n\n  // Calculate infix once, before the loop\n  // Note: $infix already includes the leading dash from breakpoint-infix()\n  // $infix: if($infix == \"\", \"\", \"-\" + $infix);\n\n  @each $key, $value in $values {\n    $properties: map.get($utility, property);\n    $propertyMap: null;\n    $customClass: \"\";\n\n    // Check if property is a map (new Property-Value Mapping approach)\n    // @debug \"Properties type: #{meta.type-of($properties)}\";\n    // @debug \"Properties: #{$properties}\";\n    @if meta.type-of($properties) == \"map\" {\n      $propertyMap: $properties;\n      // For property maps, we need to determine the class from the utility definition\n      $customClass: \"\";\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      }\n    } @else {\n      // Legacy approach: Multiple properties are possible, for example with vertical or horizontal margins or paddings\n      @if meta.type-of($properties) == \"string\" {\n        $properties: list.append((), $properties);\n      }\n      // Use custom class if present, otherwise use the first value from the list of properties\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      } @else {\n        $customClass: list.nth($properties, 1);\n      }\n      @if $customClass == null {\n        $customClass: \"\";\n      }\n    }\n\n    // Use custom CSS variable name if present, otherwise default to `class`\n    // mdo-do: restore?\n    // $css-variable-name: if(map.has-key($utility, css-variable-name), map.get($utility, css-variable-name), map.get($utility, class));\n\n    // State params to generate state variants\n    $state: ();\n    @if map.has-key($utility, state) {\n      $state: map.get($utility, state);\n    }\n\n    // $infix: if($customClass == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (e.g. with shadow class)\n    $customClassModifier: \"\";\n    @if $key {\n      @if $customClass == \"\" and $infix == \"\" {\n        $customClassModifier: $key;\n      } @else {\n        $customClassModifier: \"-\" + $key;\n      }\n    }\n\n    $selector: \"\";\n    @if $selectorType == \"class\" {\n      // Use the fallback of the first property if no `class` key is used\n      @if $customClass != \"\" {\n        $selector: \".#{$customClass + $infix + $customClassModifier}\";\n      } @else {\n        $selector: \".#{$selectorClass + $infix + $customClassModifier}\";\n      }\n    } @else if $selectorType == \"attr-starts\" {\n      $selector: \"[class^=\\\"#{$selectorClass}\\\"]\";\n    } @else if $selectorType == \"attr-includes\" {\n      $selector: \"[class*=\\\"#{$selectorClass}\\\"]\";\n    }\n\n    // @debug $utility;\n    // @debug $selectorType;\n    // @debug $selector;\n    // @debug $properties;\n    // @debug $values;\n\n    #{$selector} {\n      // Generate CSS custom properties (variables) if provided\n      // Variables receive the current utility value, then properties reference them\n      @if map.has-key($utility, variables) {\n        $variables: map.get($utility, variables);\n        @if meta.type-of($variables) == \"list\" {\n          // If variables is a list, each variable gets the utility value\n          @each $var-name in $variables {\n            --#{$var-name}: #{$value};\n          }\n        } @else if meta.type-of($variables) == \"map\" {\n          // If variables is a map, use the provided values (for static variables)\n          @each $var-key, $var-value in $variables {\n            --#{$var-key}: #{$var-value};\n          }\n        }\n      }\n      @include generate-properties($utility, $propertyMap, $properties, $value);\n    }\n\n    // Generate state variants\n    @if $state != () {\n      @each $state-variant in $state {\n        #{$selector}-#{$state-variant}:#{$state-variant} {\n          // Generate CSS custom properties (variables) if provided\n          @if map.has-key($utility, variables) {\n            $variables: map.get($utility, variables);\n            @if meta.type-of($variables) == \"list\" {\n              // If variables is a list, each variable gets the utility value\n              @each $var-name in $variables {\n                --#{$var-name}: #{$value};\n              }\n            } @else if meta.type-of($variables) == \"map\" {\n              // If variables is a map, use the provided values (for static variables)\n              @each $var-key, $var-value in $variables {\n                --#{$var-key}: #{$var-value};\n              }\n            }\n          }\n          @include generate-properties($utility, $propertyMap, $properties, $value);\n        }\n      }\n    }\n  }\n}\n"]}
\ No newline at end of file
+{"version":3,"sources":["../../scss/_banner.scss","../../scss/_colors.scss","../../scss/mixins/_tokens.scss","bootstrap-utilities.css","../../scss/_root.scss","../../scss/helpers/_focus-ring.scss","../../scss/helpers/_icon-link.scss","../../scss/_config.scss","../../scss/mixins/_transition.scss","../../scss/helpers/_position.scss","../../scss/layout/_breakpoints.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_theme-colors.scss","../../scss/_theme.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/utilities/_api.scss","../../scss/mixins/_utilities.scss"],"names":[],"mappings":"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ApII,gBA+CO;ElBotBb;EkB/nBE;IApII,kBA+CO;ElButBb;EkBloBE;IApII,mBA+CO;ElB0tBb;EkBroBE;IApII,kBA+CO;ElB6tBb;EkBxoBE;IApII,gBA+CO;ElBguBb;EkB3oBE;IApII,kBA+CO;ElBmuBb;EkB9oBE;IApII,mBA+CO;ElBsuBb;EkBjpBE;IApII,kBA+CO;ElByuBb;EkBppBE;IApII,eA+CO;ElB4uBb;EkBvpBE;IApII,qBA+CO;ElB+uBb;EkB1pBE;IApII,cA+CO;ElBkvBb;EkB7pBE;IApII,aA+CO;ElBqvBb;EkBhqBE;IApII,oBA+CO;ElBwvBb;EkBnqBE;IApII,cA+CO;ElB2vBb;EkBtqBE;IApII,kBA+CO;ElB8vBb;EkBzqBE;IApII,mBA+CO;ElBiwBb;EkB5qBE;IApII,aA+CO;ElBowBb;EkB/qBE;IApII,oBA+CO;ElBuwBb;EkBlrBE;IApII,iBA+CO;ElB0wBb;EkBrrBE;IApII,kBA+CO;ElB6wBb;EkBxrBE;IApII,aA+CO;ElBgxBb;EkB3rBE;IApII,gCA0CG;ElBwxBT;EkB9rBE;IApII,mCA0CG;ElB2xBT;EkBjsBE;IApII,mCA0CG;ElB8xBT;EkBpsBE;IApII,gBA0CG;ElBiyBT;EkBvsBE;IApII,iKA0CG;ElBoyBT;EkB1sBE;IApII,qKA0CG;ElBuyBT;EkB7sBE;IApII,mKA0CG;ElB0yBT;EkBhtBE;IApII,+JA0CG;ElB6yBT;EkBntBE;IApII,qKA0CG;ElBgzBT;EkBttBE;IApII,iKA0CG;ElBmzBT;EkBztBE;IApII,qHA0CG;ElBszBT;EkB5tBE;IApII,qHA0CG;ElByzBT;EkB/tBE;IApII,gBA+CO;ElBuzBb;EkBluBE;IApII,kBA+CO;ElB0zBb;EkBruBE;IApII,kBA+CO;ElB6zBb;EkBxuBE;IApII,eA+CO;ElBg0Bb;EkB3uBE;IApII,gBA+CO;ElBm0Bb;EkB9uBE;IApII,MA0CG;ElB20BT;EkBjvBE;IApII,QA0CG;ElB80BT;EkBpvBE;IApII,SA0CG;ElBi1BT;EkBvvBE;IApII,SA0CG;ElBo1BT;EkB1vBE;IApII,WA0CG;ElBu1BT;EkB7vBE;IApII,YA0CG;ElB01BT;EkBhwBE;IApII,OA0CG;ElB61BT;EkBnwBE;IApII,SA0CG;ElBg2BT;EkBtwBE;IApII,UA0CG;ElBm2BT;EkBzwBE;IApII,QA0CG;ElBs2BT;EkB5wBE;IApII,UA0CG;ElBy2BT;EkB/wBE;IApII,WA0CG;ElB42BT;EkBlxBE;IApII,gCA0CG;ElB+2BT;EkBrxBE;IApII,2BA0CG;ElBk3BT;EkBxxBE;IApII,2BA0CG;ElBq3BT;EkB3xBE;IApII,4EA0CG;ElBw3BT;EkB9xBE;IApII,SA0CG;ElB23BT;EkBjyBE;IApII,wFA0CG;ElB83BT;EkBpyBE;IApII,qBA0CG;ElBi4BT;EkBvyBE;IApII,uFA0CG;ElBo4BT;EkB1yBE;IApII,oBA0CG;ElBu4BT;EkB7yBE;IApII,sFA0CG;ElB04BT;EkBhzBE;IApII,mBA0CG;ElB64BT;EkBnzBE;IApII,yFA0CG;ElBg5BT;EkBtzBE;IApII,sBA0CG;ElBm5BT;EkBzzBE;IApII,kFA0CG;ElBs5BT;EkB5zBE;IApII,eA0CG;ElBy5BT;EkB/zBE;IApII,mFA0CG;ElB45BT;EkBl0BE;IApII,gBA0CG;ElB+5BT;EkBr0BE;IA7II,qCAmDG;IAnDH,oCAqES;ElBi5Bf;EkBz0BE;IA7II,uCAmDG;IAnDH,oCAqES;ElBq5Bf;EkB70BE;IA7II,sCAmDG;IAnDH,oCAqES;ElBy5Bf;EkBj1BE;IA7II,oCAmDG;IAnDH,oCAqES;ElB65Bf;EkBr1BE;IA7II,uCAmDG;IAnDH,oCAqES;ElBi6Bf;EkBz1BE;IA7II,qCAmDG;IAnDH,oCAqES;ElBq6Bf;EkB71BE;IA7II,qEAmDG;IAnDH,oCAqES;ElBy6Bf;EkBj2BE;IA7II,qEAmDG;IAnDH,oCAqES;ElB66Bf;EkBr2BE;IA7II,oCAmDG;IAnDH,oCAqES;ElBi7Bf;EkBz2BE;IA7II,qEAmDG;IAnDH,oCAqES;ElBq7Bf;EkB72BE;IA7II,qEAmDG;IAnDH,oCAqES;ElBy7Bf;EkBj3BE;IA7II,qEAmDG;IAnDH,oCAqES;ElB67Bf;EkBr3BE;IA7II,qEAmDG;IAnDH,oCAqES;ElBi8Bf;EkBz3BE;IA7II,kCAmDG;IAnDH,oCAqES;ElBq8Bf;EkB73BE;IA7II,kCAmDG;IAnDH,oCAqES;ElBy8Bf;EkBj4BE;IA7II,qEAmDG;IAnDH,oCAqES;ElB68Bf;EkBr4BE;IA7II,yEAmDG;IAnDH,oCAqES;ElBi9Bf;EkBz4BE;IA7II,uEAmDG;IAnDH,oCAqES;ElBq9Bf;EkB74BE;IA7II,mEAmDG;IAnDH,oCAqES;ElBy9Bf;EkBj5BE;IA7II,yEAmDG;IAnDH,oCAqES;ElB69Bf;EkBr5BE;IA7II,qEAmDG;IAnDH,oCAqES;ElBi+Bf;EkBz5BE;IA7II,qEAmDG;IAnDH,oCAqES;ElBq+Bf;EkB75BE;IA7II,qEAmDG;IAnDH,oCAqES;ElBy+Bf;EkBj6BE;IApII,iBA0CG;ElB8/BT;EkBp6BE;IApII,iBA0CG;ElBigCT;EkBv6BE;IApII,iBA0CG;ElBogCT;EkB16BE;IApII,iBA0CG;ElBugCT;EkB76BE;IApII,iBA0CG;ElB0gCT;EkBh7BE;IApII,0EA0CG;ElB6gCT;EkBn7BE;IApII,0EA0CG;ElBghCT;EkBt7BE;IApII,0EA0CG;ElBmhCT;EkBz7BE;IApII,0EA0CG;ElBshCT;EkB57BE;IApII,0EA0CG;ElByhCT;EkB/7BE;IApII,0EA0CG;ElB4hCT;EkBl8BE;IApII,0EA0CG;ElB+hCT;EkBr8BE;IApII,0EA0CG;ElBkiCT;EkBx8BE;IApII,0EA0CG;ElBqiCT;EkB38BE;IApII,oCA0CG;ElBwiCT;EkB98BE;IApII,WA0CG;ElB2iCT;EkBj9BE;IApII,WA0CG;ElB8iCT;EkBp9BE;IApII,WA0CG;ElBijCT;EkBv9BE;IApII,WA0CG;ElBojCT;EkB19BE;IApII,WA0CG;ElBujCT;EkB79BE;IApII,WA0CG;ElB0jCT;EkBh+BE;IApII,WA0CG;ElB6jCT;EkBn+BE;IApII,WA0CG;ElBgkCT;EkBt+BE;IApII,WA0CG;ElBmkCT;EkBz+BE;IApII,YA0CG;ElBskCT;EkB5+BE;IApII,YA0CG;ElBykCT;EkB/+BE;IApII,YA0CG;ElB4kCT;EkBl/BE;IApII,UA0CG;ElB+kCT;EkBr/BE;IApII,UA0CG;ElBklCT;EkBx/BE;IApII,UA0CG;ElBqlCT;EkB3/BE;IApII,WA0CG;ElBwlCT;EkB9/BE;IApII,WA0CG;ElB2lCT;EkBjgCE;IApII,kBA0CG;ElB8lCT;EkBpgCE;IApII,kBA0CG;ElBimCT;EkBvgCE;IApII,uBA0CG;IA1CH,kBA0CG;ElBomCT;EkB1gCE;IApII,eA0CG;ElBumCT;EkB7gCE;IApII,YA0CG;ElB0mCT;EkBhhCE;IApII,eA0CG;ElB6mCT;EkBnhCE;IApII,YA0CG;ElBgnCT;EkBthCE;IApII,gBA0CG;ElBmnCT;EkBzhCE;IApII,WA0CG;ElBsnCT;EkB5hCE;IApII,WA0CG;ElBynCT;EkB/hCE;IApII,WA0CG;ElB4nCT;EkBliCE;IApII,YA0CG;ElB+nCT;EkBriCE;IApII,YA0CG;ElBkoCT;EkBxiCE;IApII,mBA0CG;ElBqoCT;EkB3iCE;IApII,mBA0CG;ElBwoCT;EkB9iCE;IApII,wBA0CG;IA1CH,mBA0CG;ElB2oCT;EkBjjCE;IApII,gBA0CG;ElB8oCT;EkBpjCE;IApII,aA0CG;ElBipCT;EkBvjCE;IApII,gBA0CG;ElBopCT;EkB1jCE;IApII,aA0CG;ElBupCT;EkB7jCE;IApII,iBA0CG;ElB0pCT;EkBhkCE;IApII,cA0CG;ElB6pCT;EkBnkCE;IApII,mBA+CO;ElB2pCb;EkBtkCE;IApII,sBA+CO;ElB8pCb;EkBzkCE;IApII,2BA+CO;ElBiqCb;EkB5kCE;IApII,8BA+CO;ElBoqCb;EkB/kCE;IApII,YA0CG;ElB4qCT;EkBllCE;IApII,YA0CG;ElB+qCT;EkBrlCE;IApII,cA0CG;ElBkrCT;EkBxlCE;IApII,cA0CG;ElBqrCT;EkB3lCE;IApII,eA+CO;ElBmrCb;EkB9lCE;IApII,iBA+CO;ElBsrCb;EkBjmCE;IApII,uBA+CO;ElByrCb;EkBpmCE;IApII,2BA0CG;ElBisCT;EkBvmCE;IApII,yBA0CG;ElBosCT;EkB1mCE;IApII,uBA0CG;ElBusCT;EkB7mCE;IApII,8BA0CG;ElB0sCT;EkBhnCE;IApII,6BA0CG;ElB6sCT;EkBnnCE;IApII,6BA0CG;ElBgtCT;EkBtnCE;IApII,oBA0CG;ElBmtCT;EkBznCE;IApII,kBA0CG;ElBstCT;EkB5nCE;IApII,qBA0CG;ElBytCT;EkB/nCE;IApII,sBA0CG;ElB4tCT;EkBloCE;IApII,wBA0CG;ElB+tCT;EkBroCE;IApII,sBA0CG;ElBkuCT;EkBxoCE;IApII,oBA0CG;ElBquCT;EkB3oCE;IApII,uBA0CG;ElBwuCT;EkB9oCE;IApII,qBA0CG;ElB2uCT;EkBjpCE;IApII,mBA0CG;ElB8uCT;EkBppCE;IApII,qBA0CG;ElBivCT;EkBvpCE;IApII,oBA0CG;ElBovCT;EkB1pCE;IApII,yBA0CG;ElBuvCT;EkB7pCE;IApII,uBA0CG;ElB0vCT;EkBhqCE;IApII,qBA0CG;ElB6vCT;EkBnqCE;IApII,4BA0CG;ElBgwCT;EkBtqCE;IApII,2BA0CG;ElBmwCT;EkBzqCE;IApII,sBA0CG;ElBswCT;EkB5qCE;IApII,gBA0CG;ElBywCT;EkB/qCE;IApII,sBA0CG;ElB4wCT;EkBlrCE;IApII,oBA0CG;ElB+wCT;EkBrrCE;IApII,kBA0CG;ElBkxCT;EkBxrCE;IApII,oBA0CG;ElBqxCT;EkB3rCE;IApII,mBA0CG;ElBwxCT;EkB9rCE;IApII,kBA0CG;ElB2xCT;EkBjsCE;IApII,gBA0CG;ElB8xCT;EkBpsCE;IApII,mBA0CG;ElBiyCT;EkBvsCE;IApII,oBA0CG;ElBoyCT;EkB1sCE;IApII,qCA0CG;ElBuyCT;EkB7sCE;IApII,qCA0CG;ElB0yCT;EkBhtCE;IApII,qCA0CG;ElB6yCT;EkBntCE;IApII,qCA0CG;ElBgzCT;EkBttCE;IApII,mBA0CG;ElBmzCT;EkBztCE;IApII,mBA+CO;ElBizCb;EkB5tCE;IApII,sBA+CO;ElBozCb;EkB/tCE;IApII,qBA+CO;ElBuzCb;EkBluCE;IApII,SA0CG;ElB+zCT;EkBruCE;IApII,QA0CG;ElBk0CT;EkBxuCE;IApII,QA0CG;ElBq0CT;EkB3uCE;IApII,QA0CG;ElBw0CT;EkB9uCE;IApII,QA0CG;ElB20CT;EkBjvCE;IApII,QA0CG;ElB80CT;EkBpvCE;IApII,QA0CG;ElBi1CT;EkBvvCE;IApII,QA0CG;ElBo1CT;EkB1vCE;IApII,SA0CG;ElBu1CT;EkB7vCE;IApII,eA0CG;ElB01CT;EkBhwCE;IApII,cA0CG;ElB61CT;EkBnwCE;IApII,YA0CG;ElBg2CT;EkBtwCE;IApII,cA0CG;ElBm2CT;EkBzwCE;IApII,YA0CG;ElBs2CT;EkB5wCE;IApII,YA0CG;ElBy2CT;EkB/wCE;IApII,gBA0CG;ElB42CT;EkBlxCE;IApII,sBA0CG;ElB+2CT;EkBrxCE;IApII,qBA0CG;ElBk3CT;EkBxxCE;IApII,mBA0CG;ElBq3CT;EkB3xCE;IApII,qBA0CG;ElBw3CT;EkB9xCE;IApII,mBA0CG;ElB23CT;EkBjyCE;IApII,mBA0CG;ElB83CT;EkBpyCE;IApII,eA0CG;ElBi4CT;EkBvyCE;IApII,qBA0CG;ElBo4CT;EkB1yCE;IApII,oBA0CG;ElBu4CT;EkB7yCE;IApII,kBA0CG;ElB04CT;EkBhzCE;IApII,oBA0CG;ElB64CT;EkBnzCE;IApII,kBA0CG;ElBg5CT;EkBtzCE;IApII,kBA0CG;ElBm5CT;EkBzzCE;IApII,qBA0CG;ElBs5CT;EkB5zCE;IApII,2BA0CG;ElBy5CT;EkB/zCE;IApII,0BA0CG;ElB45CT;EkBl0CE;IApII,wBA0CG;ElB+5CT;EkBr0CE;IApII,0BA0CG;ElBk6CT;EkBx0CE;IApII,wBA0CG;ElBq6CT;EkB30CE;IApII,wBA0CG;ElBw6CT;EkB90CE;IApII,oBA0CG;ElB26CT;EkBj1CE;IApII,0BA0CG;ElB86CT;EkBp1CE;IApII,yBA0CG;ElBi7CT;EkBv1CE;IApII,uBA0CG;ElBo7CT;EkB11CE;IApII,yBA0CG;ElBu7CT;EkB71CE;IApII,uBA0CG;ElB07CT;EkBh2CE;IApII,uBA0CG;ElB67CT;EkBn2CE;IApII,mBA0CG;ElBg8CT;EkBt2CE;IApII,yBA0CG;ElBm8CT;EkBz2CE;IApII,wBA0CG;ElBs8CT;EkB52CE;IApII,sBA0CG;ElBy8CT;EkB/2CE;IApII,wBA0CG;ElB48CT;EkBl3CE;IApII,sBA0CG;ElB+8CT;EkBr3CE;IApII,sBA0CG;ElBk9CT;EkBx3CE;IApII,sBA0CG;ElBq9CT;EkB33CE;IApII,4BA0CG;ElBw9CT;EkB93CE;IApII,2BA0CG;ElB29CT;EkBj4CE;IApII,yBA0CG;ElB89CT;EkBp4CE;IApII,2BA0CG;ElBi+CT;EkBv4CE;IApII,yBA0CG;ElBo+CT;EkB14CE;IApII,6BA0CG;ElBu+CT;EkB74CE;IApII,4BA0CG;ElB0+CT;EkBh5CE;IApII,yBA0CG;ElB6+CT;EkBn5CE;IApII,UA0CG;ElBg/CT;EkBt5CE;IApII,gBA0CG;ElBm/CT;EkBz5CE;IApII,eA0CG;ElBs/CT;EkB55CE;IApII,aA0CG;ElBy/CT;EkB/5CE;IApII,eA0CG;ElB4/CT;EkBl6CE;IApII,aA0CG;ElB+/CT;EkBr6CE;IApII,iBA0CG;ElBkgDT;EkBx6CE;IApII,uBA0CG;ElBqgDT;EkB36CE;IApII,sBA0CG;ElBwgDT;EkB96CE;IApII,oBA0CG;ElB2gDT;EkBj7CE;IApII,sBA0CG;ElB8gDT;EkBp7CE;IApII,oBA0CG;ElBihDT;EkBv7CE;IApII,gBA0CG;ElBohDT;EkB17CE;IApII,sBA0CG;ElBuhDT;EkB77CE;IApII,qBA0CG;ElB0hDT;EkBh8CE;IApII,mBA0CG;ElB6hDT;EkBn8CE;IApII,qBA0CG;ElBgiDT;EkBt8CE;IApII,mBA0CG;ElBmiDT;EkBz8CE;IApII,sBA0CG;ElBsiDT;EkB58CE;IApII,4BA0CG;ElByiDT;EkB/8CE;IApII,2BA0CG;ElB4iDT;EkBl9CE;IApII,yBA0CG;ElB+iDT;EkBr9CE;IApII,2BA0CG;ElBkjDT;EkBx9CE;IApII,yBA0CG;ElBqjDT;EkB39CE;IApII,qBA0CG;ElBwjDT;EkB99CE;IAp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;IA3JA,2BA0CG;ElByhET;EkB/7DE;IApII,8BA0CG;ElB4hET;EkB36DM;IA3JA,8BA0CG;ElB+hET;EkBr8DE;IApII,6BA0CG;ElBkiET;EkBj7DM;IA3JA,6BA0CG;ElBqiET;EkB38DE;IApII,8BA0CG;ElBwiET;EkBv7DM;IA3JA,8BA0CG;ElB2iET;EkBj9DE;IApII,yEA0CG;ElB8iET;EkBp9DE;IApII,wHA0CG;ElBijET;EkBv9DE;IApII,2EA0CG;ElBojET;EkB19DE;IApII,uEA0CG;ElBujET;EkB79DE;IApII,6EA0CG;ElB0jET;EkBh+DE;IApII,yEA0CG;ElB6jET;EkBn+DE;IApII,yEA0CG;ElBgkET;EkBt+DE;IApII,yEA0CG;ElBmkET;EkBz+DE;IApII,iFA0CG;ElBskET;EkBr9DM;IA3JA,iFA0CG;ElBykET;EkB/+DE;IApII,iFA0CG;ElB4kET;EkB39DM;IA3JA,iFA0CG;ElB+kET;EkBr/DE;IApII,iFA0CG;ElBklET;EkBj+DM;IA3JA,iFA0CG;ElBqlET;EkB3/DE;IApII,iFA0CG;ElBwlET;EkBv+DM;IA3JA,iFA0CG;ElB2lET;EkBjgEE;IApII,iFA0CG;ElB8lET;EkB7+DM;IA3JA,iFA0CG;ElBimET;EkBvgEE;IApII,iFA0CG;ElBomET;EkBn/DM;IA3JA,iFA0CG;ElBumET;EkB7gEE;IApII,iFA0CG;ElB0mET;EkBz/DM;IA3JA,iFA0CG;ElB6mET;EkBnhEE;IApII,iFA0CG;ElBgnET;EkB//DM;IA3JA,iFA0CG;ElBmnET;EkBzhEE;IApII,iFA0CG;ElBsnET;EkBrgEM;IA3JA,iFA0CG;ElBynET;EkB/hEE;IApII,2CA0CG;ElB4nET;EkB3gEM;IA3JA,2CA0CG;ElB+nET;EkBriEE;IApII,8BA0CG;ElBkoET;EkBjhEM;IA3JA,8BA0CG;ElBqoET;EkB3iEE;IApII,8BA0CG;ElBwoET;EkBvhEM;IA3JA,8BA0CG;ElB2oET;EkBjjEE;IApII,8BA0CG;ElB8oET;EkB7hEM;IA3JA,8BA0CG;ElBipET;EkBvjEE;IApII,8BA0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kBtgFA;MApII,aA+CO;IlB8lFX;IkBzgFA;MApII,cA0CG;IlBsmFP;IkB5gFA;MApII,mBA+CO;IlBomFX;IkB/gFA;MApII,sBA+CO;IlBumFX;IkBlhFA;MApII,2BA+CO;IlB0mFX;IkBrhFA;MApII,8BA+CO;IlB6mFX;IkBxhFA;MApII,YA0CG;IlBqnFP;IkB3hFA;MApII,YA0CG;IlBwnFP;IkB9hFA;MApII,cA0CG;IlB2nFP;IkBjiFA;MApII,cA0CG;IlB8nFP;IkBpiFA;MApII,eA+CO;IlB4nFX;IkBviFA;MApII,iBA+CO;IlB+nFX;IkB1iFA;MApII,uBA+CO;IlBkoFX;IkB7iFA;MApII,2BA0CG;IlB0oFP;IkBhjFA;MApII,yBA0CG;IlB6oFP;IkBnjFA;MApII,uBA0CG;IlBgpFP;IkBtjFA;MApII,8BA0CG;IlBmpFP;IkBzjFA;MApII,6BA0CG;IlBspFP;IkB5jFA;MApII,6BA0CG;IlBypFP;IkB/jFA;MApII,oBA0CG;IlB4pFP;IkBlkFA;MApII,kBA0CG;IlB+pFP;IkBrkFA;MApII,qBA0CG;IlBkqFP;IkBxkFA;MApII,sBA0CG;IlBqqFP;IkB3kFA;MApII,wBA0CG;IlBwqFP;IkB9kFA;MApII,sBA0CG;IlB2qFP;IkBjlFA;MApII,oBA0CG;IlB8qFP;IkBplFA;MApII,uBA0CG;IlBirFP;IkBvlFA;MApII,qBA0CG;IlBorFP;IkB1lFA;MApII,mBA0CG;IlBurFP;IkB7lFA;MApII,qBA0CG;IlB0rFP;IkBhmFA;MApII,oBA0CG;IlB6rFP;IkBnmFA;MApII,yBA0CG;IlBgsFP;IkBtmFA;MApII,uBA0CG;IlBmsFP;IkBzmFA;MApII,qBA0CG;IlBssFP;IkB5mFA;MApII,4BA0CG;IlBysFP;IkB/mFA;MApII,2BA0CG;IlB4sFP;IkBlnFA;MApII,sBA0CG;IlB+sFP;IkBrnFA;MApII,gBA0CG;IlBktFP;IkBxnFA;MApII,sBA0CG;IlBqtFP;IkB3nFA;MApII,oBA0CG;IlBwtFP;IkB9nFA;MApII,kBA0CG;IlB2tFP;IkBjoFA;MApII,oBA0CG;IlB8tFP;IkBpoFA;MApII,mBA0CG;IlBiuFP;IkBvoFA;MApII,kBA0CG;IlBouFP;IkB1oFA;MApII,gBA0CG;IlBuuFP;IkB7oFA;MApII,mBA0CG;IlB0uFP;IkBhpFA;MApII,oBA0CG;IlB6uFP;IkBnpFA;MApII,qCA0CG;IlBgvFP;IkBtpFA;MApII,qCA0CG;IlBmvFP;IkBzpFA;MApII,qCA0CG;IlBsvFP;IkB5pFA;MApII,qCA0CG;IlByvFP;IkB/pFA;MApII,mBA0CG;IlB4vFP;IkBlqFA;MApII,mBA+CO;IlB0vFX;IkBrqFA;MApII,sBA+CO;IlB6vFX;IkBxqFA;MApII,qBA+CO;IlBgwFX;IkB3qFA;MApII,SA0CG;IlBwwFP;IkB9qFA;MApII,QA0CG;IlB2wFP;IkBjrFA;MApII,QA0CG;IlB8wFP;IkBprFA;MApII,QA0CG;IlBixFP;IkBvrFA;MApII,QA0CG;IlBoxFP;IkB1rFA;MApII,QA0CG;IlBuxFP;IkB7rFA;MApII,QA0CG;IlB0xFP;IkBhsFA;MApII,QA0CG;IlB6xFP;IkBnsFA;MApII,SA0CG;IlBgyFP;IkBtsFA;MApII,eA0CG;IlBmyFP;IkBzsFA;MApII,cA0CG;IlBsyFP;IkB5sFA;MApII,YA0CG;IlByyFP;IkB/sFA;MApII,cA0CG;IlB4yFP;IkBltFA;MApII,YA0CG;IlB+yFP;IkBrtFA;MApII,YA0CG;IlBkzFP;IkBxtFA;MApII,gBA0CG;IlBqzFP;IkB3tFA;MApII,sBA0CG;IlBwzFP;IkB9tFA;MApII,qBA0CG;IlB2zFP;IkBjuFA;MApII,mBA0CG;IlB8zFP;IkBpuFA;MApII,qBA0CG;IlBi0FP;IkBvuFA;MApII,mBA0CG;IlBo0FP;IkB1uFA;MApII,mBA0CG;IlBu0FP;IkB7uFA;MApII,eA0CG;IlB00FP;IkBhvFA;MApII,qBA0CG;IlB60FP;IkBnvFA;MApII,oBA0CG;IlBg1FP;IkBtvFA;MApII,kBA0CG;IlBm1FP;IkBzvFA;MApII,oBA0CG;IlBs1FP;IkB5vFA;MApII,kBA0CG;IlBy1FP;IkB/vFA;MApII,kBA0CG;IlB41FP;IkBlwFA;MApII,qBA0CG;IlB+1FP;IkBrwFA;MApII,2BA0CG;IlBk2FP;IkBxwFA;MApII,0BA0CG;IlBq2FP;IkB3wFA;MApII,wBA0CG;IlBw2FP;IkB9wFA;MApII,0BA0CG;IlB22FP;IkBjxFA;MApII,wBA0CG;IlB82FP;IkBpxFA;MApII,wBA0CG;IlBi3FP;IkBvxFA;MApII,oBA0CG;IlBo3FP;IkB1xFA;MApII,0BA0CG;IlBu3FP;IkB7xFA;MApII,yBA0CG;IlB03FP;IkBhyFA;MApII,uBA0CG;IlB63FP;IkBnyFA;MApII,yBA0CG;IlBg4FP;IkBtyFA;MApII,uBA0CG;IlBm4FP;IkBzyFA;MApII,uBA0CG;IlBs4FP;IkB5yFA;MApII,mBA0CG;IlBy4FP;IkB/yFA;MApII,yBA0CG;IlB44FP;IkBlzFA;MApII,wBA0CG;IlB+4FP;IkBrzFA;MApII,sBA0CG;IlBk5FP;IkBxzFA;MApII,wBA0CG;IlBq5FP;IkB3zFA;MApII,sBA0CG;IlBw5FP;IkB9zFA;MApII,sBA0CG;IlB25FP;IkBj0FA;MApII,sBA0CG;IlB85FP;IkBp0FA;MApII,4BA0CG;IlBi6FP;IkBv0FA;MApII,2BA0CG;IlBo6FP;IkB10FA;MApII,yBA0CG;IlBu6FP;IkB70FA;MApII,2BA0CG;IlB06FP;IkBh1FA;MApII,yBA0CG;IlB66FP;IkBn1FA;MApII,6BA0CG;IlBg7FP;IkBt1FA;MApII,4BA0CG;IlBm7FP;IkBz1FA;MApII,yBA0CG;IlBs7FP;IkB51FA;MApII,UA0CG;IlBy7FP;IkB/1FA;MApII,gBA0CG;IlB47FP;IkBl2FA;MApII,eA0CG;IlB+7FP;IkBr2FA;MApII,aA0CG;IlBk8FP;IkBx2FA;MApII,eA0CG;IlBq8FP;IkB32FA;MApII,aA0CG;IlBw8FP;IkB92FA;MApII,iBA0CG;IlB28FP;IkBj3FA;MApII,uBA0CG;IlB88FP;IkBp3FA;MApII,sBA0CG;IlBi9FP;IkBv3FA;MApII,oBA0CG;IlBo9FP;IkB13FA;MApII,sBA0CG;IlBu9FP;IkB73FA;MApII,oBA0CG;IlB09FP;IkBh4FA;MApII,gBA0CG;IlB69FP;IkBn4FA;MApII,sBA0CG;IlBg+FP;IkBt4FA;MApII,qBA0CG;IlBm+FP;IkBz4FA;MApII,mBA0CG;IlBs+FP;IkB54FA;MApII,qBA0CG;IlBy+FP;IkB/4FA;MApII,mBA0CG;IlB4+FP;IkBl5FA;MApII,sBA0CG;IlB++FP;IkBr5FA;MApII,4BA0CG;IlBk/FP;IkBx5FA;MApII,2BA0CG;IlBq/FP;IkB35FA;MApII,yBA0CG;IlBw/FP;IkB95FA;MApII,2BA0CG;IlB2/FP;IkBj6FA;MApII,yBA0CG;IlB8/FP;IkBp6FA;MApII,qBA0CG;IlBigGP;IkBv6FA;MApII,2BA0CG;IlBogGP;IkB16FA;MApII,0BA0CG;IlBugGP;IkB76FA;MApII,wBA0CG;IlB0gGP;IkBh7FA;MApII,0BA0CG;IlB6gGP;IkBn7FA;MApII,wBA0CG;IlBghGP;IkBt7FA;MApII,oBA0CG;IlBmhGP;IkBz7FA;MApII,0BA0CG;IlBshGP;IkB57FA;MApII,yBA0CG;IlByhGP;IkB/7FA;MApII,uBA0CG;IlB4hGP;IkBl8FA;MApII,yBA0CG;IlB+hGP;IkBr8FA;MApII,uBA0CG;IlBkiGP;IkBx8FA;MApII,uBA0CG;IlBqiGP;IkB38FA;MApII,6BA0CG;IlBwiGP;IkB98FA;MApII,4BA0CG;IlB2iGP;IkBj9FA;MApII,0BA0CG;IlB8iGP;IkBp9FA;MApII,4BA0CG;IlBijGP;IkBv9FA;MApII,0BA0CG;IlBojGP;IkB19FA;MApII,MA0CG;IlBujGP;IkB79FA;MApII,YA0CG;IlB0jGP;IkBh+FA;MApII,WA0CG;IlB6jGP;IkBn+FA;MApII,SA0CG;IlBgkGP;IkBt+FA;MApII,WA0CG;IlBmkGP;IkBz+FA;MApII,SA0CG;IlBskGP;IkB5+FA;MApII,UA0CG;IlBykGP;IkB/+FA;MApII,gBA0CG;IlB4kGP;IkBl/FA;MApII,eA0CG;IlB+kGP;IkBr/FA;MApII,aA0CG;IlBklGP;IkBx/FA;MApII,eA0CG;IlBqlGP;IkB3/FA;MApII,aA0CG;IlBwlGP;IkB9/FA;MApII,kBA0CG;MA1CH,aA0CG;IlB2lGP;IkBjgGA;MApII,wBA0CG;MA1CH,mBA0CG;IlB8lGP;IkBpgGA;MApII,uBA0CG;MA1CH,kBA0CG;IlBimGP;IkBvgGA;MApII,qBA0CG;MA1CH,gBA0CG;IlBomGP;IkB1gGA;MApII,uBA0CG;MA1CH,kBA0CG;IlBumGP;IkB7gGA;MApII,qBA0CG;MA1CH,gBA0CG;IlB0mGP;IkBhhGA;MApII,iBA0CG;IlB6mGP;IkBnhGA;MApII,eA0CG;IlBgnGP;IkBthGA;MApII,kBA0CG;IlBmnGP;EACF;EOjoGE;IWuGA;MApII,mBA0CG;IlBwnGP;IkB9hGA;MApII,iBA0CG;IlB2nGP;IkBjiGA;MApII,WA0CG;IlB8nGP;IkBpiGA;MApII,sBA0CG;MA1CH,mBA0CG;IlBioGP;IkBviGA;MApII,oBA0CG;MA1CH,iBA0CG;IlBooGP;IkB1iGA;MApII,mBA0CG;MA1CH,gBA0CG;IlBuoGP;IkB7iGA;MApII,yBA0CG;MA1CH,sBA0CG;IlB0oGP;IkBhjGA;MApII,mBA0CG;MA1CH,gBA0CG;IlB6oGP;IkBnjGA;MApII,eA+CO;IlB2oGX;IkBtjGA;MApII,qBA+CO;IlB8oGX;IkBzjGA;MApII,cA+CO;IlBipGX;IkB5jGA;MApII,aA+CO;IlBopGX;IkB/jGA;MApII,oBA+CO;IlBupGX;IkBlkGA;MApII,cA+CO;IlB0pGX;IkBrkGA;MApII,kBA+CO;IlB6pGX;IkBxkGA;MApII,mBA+CO;IlBgqGX;IkB3kGA;MApII,aA+CO;IlBmqGX;IkB9kGA;MApII,oBA+CO;IlBsqGX;IkBjlGA;MApII,iBA+CO;IlByqGX;IkBplGA;MApII,kBA+CO;IlB4qGX;IkBvlGA;MApII,aA+CO;IlB+qGX;IkB1lGA;MApII,cA0CG;IlBurGP;IkB7lGA;MApII,mBA+CO;IlBqrGX;IkBhmGA;MApII,sBA+CO;IlBwrGX;IkBnmGA;MApII,2BA+CO;IlB2rGX;IkBtmGA;MApII,8BA+CO;IlB8rGX;IkBzmGA;MApII,YA0CG;IlBssGP;IkB5mGA;MApII,YA0CG;IlBysGP;IkB/mGA;MApII,cA0CG;IlB4sGP;IkBlnGA;MApII,cA0CG;IlB+sGP;IkBrnGA;MApII,eA+CO;IlB6sGX;IkBxnGA;MApII,iBA+CO;IlBgtGX;IkB3nGA;MApII,uBA+CO;IlBmtGX;IkB9nGA;MApII,2BA0CG;IlB2tGP;IkBjoGA;MApII,yBA0CG;IlB8tGP;IkBpoGA;MApII,uBA0CG;IlBiuGP;IkBvoGA;MApII,8BA0CG;IlBouGP;IkB1oGA;MApII,6BA0CG;IlBuuGP;IkB7oGA;MApII,6BA0CG;IlB0uGP;IkBhpGA;MApII,oBA0CG;IlB6uGP;IkBnpGA;MApII,kBA0CG;IlBgvGP;IkBtpGA;MApII,qBA0CG;IlBmvGP;IkBzpGA;MApII,sBA0CG;IlBsvGP;IkB5pGA;MApII,wBA0CG;IlByvGP;IkB/pGA;MApII,sBA0CG;IlB4vGP;IkBlqGA;MApII,oBA0CG;IlB+vGP;IkBrqGA;MApII,uBA0CG;IlBkwGP;IkBxqGA;MApII,qBA0CG;IlBqwGP;IkB3qGA;MApII,mBA0CG;IlBwwGP;IkB9qGA;MApII,qBA0CG;IlB2wGP;IkBjrGA;MApII,oBA0CG;IlB8wGP;IkBprGA;MApII,yBA0CG;IlBixGP;IkBvrGA;MApII,uBA0CG;IlBoxGP;IkB1rGA;MApII,qBA0CG;IlBuxGP;IkB7rGA;MApII,4BA0CG;IlB0xGP;IkBhsGA;MApII,2BA0CG;IlB6xGP;IkBnsGA;MApII,sBA0CG;IlBgyGP;IkBtsGA;MApII,gBA0CG;IlBmyGP;IkBzsGA;MApII,sBA0CG;IlBsyGP;IkB5sGA;MApII,oBA0CG;IlByyGP;IkB/sGA;MApII,kBA0CG;IlB4yGP;IkBltGA;MApII,oBA0CG;IlB+yGP;IkBrtGA;MApII,mBA0CG;IlBkzGP;IkBxtGA;MApII,kBA0CG;IlBqzGP;IkB3tGA;MApII,gBA0CG;IlBwzGP;IkB9tGA;MApII,mBA0CG;IlB2zGP;IkBjuGA;MApII,oBA0CG;IlB8zGP;IkBpuGA;MApII,qCA0CG;IlBi0GP;IkBvuGA;MApII,qCA0CG;IlBo0GP;IkB1uGA;MApII,qCA0CG;IlBu0GP;IkB7uGA;MApII,qCA0CG;IlB00GP;IkBhvGA;MApII,mBA0CG;IlB60GP;IkBnvGA;MApII,mBA+CO;IlB20GX;IkBtvGA;MApII,sBA+CO;IlB80GX;IkBzvGA;MApII,qBA+CO;IlBi1GX;IkB5vGA;MApII,SA0CG;IlBy1GP;IkB/vGA;MApII,QA0CG;IlB41GP;IkBlwGA;MApII,QA0CG;IlB+1GP;IkBrwGA;MApII,QA0CG;IlBk2GP;IkBxwGA;MApII,QA0CG;IlBq2GP;IkB3wGA;MApII,QA0CG;IlBw2GP;IkB9wGA;MApII,QA0CG;IlB22GP;IkBjxGA;MApII,QA0CG;IlB82GP;IkBpxGA;MApII,SA0CG;IlBi3GP;IkBvxGA;MApII,eA0CG;IlBo3GP;IkB1xGA;MApII,cA0CG;IlBu3GP;IkB7xGA;MApII,YA0CG;IlB03GP;IkBhyGA;MApII,cA0CG;IlB63GP;IkBnyGA;MApII,YA0CG;IlBg4GP;IkBtyGA;MApII,YA0CG;IlBm4GP;IkBzyGA;MApII,gBA0CG;IlBs4GP;IkB5yGA;MApII,sBA0CG;IlBy4GP;IkB/yGA;MApII,qBA0CG;IlB44GP;IkBlzGA;MApII,mBA0CG;IlB+4GP;IkBrzGA;MApII,qBA0CG;IlBk5GP;IkBxzGA;MApII,mBA0CG;IlBq5GP;IkB3zGA;MApII,mBA0CG;IlBw5GP;IkB9zGA;MApII,eA0CG;IlB25GP;IkBj0GA;MApII,qBA0CG;IlB85GP;IkBp0GA;MApII,oBA0CG;IlBi6GP;IkBv0GA;MApII,kBA0CG;IlBo6GP;IkB10GA;MApII,oBA0CG;IlBu6GP;IkB70GA;MApII,kBA0CG;IlB06GP;IkBh1GA;MApII,kBA0CG;IlB66GP;IkBn1GA;MApII,qBA0CG;IlBg7GP;IkBt1GA;MApII,2BA0CG;IlBm7GP;IkBz1GA;MApII,0BA0CG;IlBs7GP;IkB51GA;MApII,wBA0CG;IlBy7GP;IkB/1GA;MApII,0BA0CG;IlB47GP;IkBl2GA;MApII,wBA0CG;IlB+7GP;IkBr2GA;MApII,wBA0CG;IlBk8GP;IkBx2GA;MApII,oBA0CG;IlBq8GP;IkB32GA;MApII,0BA0CG;IlBw8GP;IkB92GA;MApII,yBA0CG;IlB28GP;IkBj3GA;MApII,uBA0CG;IlB88GP;IkBp3GA;MApII,yBA0CG;IlBi9GP;IkBv3GA;MApII,uBA0CG;IlBo9GP;IkB13GA;MApII,uBA0CG;IlBu9GP;IkB73GA;MApII,mBA0CG;IlB09GP;IkBh4GA;MApII,yBA0CG;IlB69GP;IkBn4GA;MApII,wBA0CG;IlBg+GP;IkBt4GA;MApII,sBA0CG;IlBm+GP;IkBz4GA;MApII,wBA0CG;IlBs+GP;IkB54GA;MApII,sBA0CG;IlBy+GP;IkB/4GA;MApII,sBA0CG;IlB4+GP;IkBl5GA;MApII,sBA0CG;IlB++GP;IkBr5GA;MApII,4BA0CG;IlBk/GP;IkBx5GA;MApII,2BA0CG;IlBq/GP;IkB35GA;MApII,yBA0CG;IlBw/GP;IkB95GA;MApII,2BA0CG;IlB2/GP;IkBj6GA;MApII,yBA0CG;IlB8/GP;IkBp6GA;MApII,6BA0CG;IlBigHP;IkBv6GA;MApII,4BA0CG;IlBogHP;IkB16GA;MApII,yBA0CG;IlBugHP;IkB76GA;MApII,UA0CG;IlB0gHP;IkBh7GA;MApII,gBA0CG;IlB6gHP;IkBn7GA;MApII,eA0CG;IlBghHP;IkBt7GA;MApII,aA0CG;IlBmhHP;IkBz7GA;MApII,eA0CG;IlBshHP;IkB57GA;MApII,aA0CG;IlByhHP;IkB/7GA;MApII,iBA0CG;IlB4hHP;IkBl8GA;MApII,uBA0CG;IlB+hHP;IkBr8GA;MApII,sBA0CG;IlBkiHP;IkBx8GA;MApII,oBA0CG;IlBqiHP;IkB38GA;MApII,sBA0CG;IlBwiHP;IkB98GA;MApII,oBA0CG;IlB2iHP;IkBj9GA;MApII,gBA0CG;IlB8iHP;IkBp9GA;MApII,sBA0CG;IlBijHP;IkBv9GA;MApII,qBA0CG;IlBojHP;IkB19GA;MApII,mBA0CG;IlBujHP;IkB79GA;MApII,qBA0CG;IlB0jHP;IkBh+GA;MAp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lBoyHX;IkB/sHA;MApII,2BA0CG;IlB4yHP;IkBltHA;MApII,yBA0CG;IlB+yHP;IkBrtHA;MApII,uBA0CG;IlBkzHP;IkBxtHA;MApII,8BA0CG;IlBqzHP;IkB3tHA;MApII,6BA0CG;IlBwzHP;IkB9tHA;MApII,6BA0CG;IlB2zHP;IkBjuHA;MApII,oBA0CG;IlB8zHP;IkBpuHA;MApII,kBA0CG;IlBi0HP;IkBvuHA;MApII,qBA0CG;IlBo0HP;IkB1uHA;MApII,sBA0CG;IlBu0HP;IkB7uHA;MApII,wBA0CG;IlB00HP;IkBhvHA;MApII,sBA0CG;IlB60HP;IkBnvHA;MApII,oBA0CG;IlBg1HP;IkBtvHA;MApII,uBA0CG;IlBm1HP;IkBzvHA;MApII,qBA0CG;IlBs1HP;IkB5vHA;MApII,mBA0CG;IlBy1HP;IkB/vHA;MApII,qBA0CG;IlB41HP;IkBlwHA;MApII,oBA0CG;IlB+1HP;IkBrwHA;MApII,yBA0CG;IlBk2HP;IkBxwHA;MApII,uBA0CG;IlBq2HP;IkB3wHA;MApII,qBA0CG;IlBw2HP;IkB9wHA;MApII,4BA0CG;IlB22HP;IkBjxHA;MApII,2BA0CG;IlB82HP;IkBpxHA;MApII,sBA0CG;IlBi3HP;IkBvxHA;MApII,gBA0CG;IlBo3HP;IkB1xHA;MApII,sBA0CG;IlBu3HP;IkB7xHA;MApII,oBA0CG;IlB03HP;IkBhyHA;MApII,kBA0CG;IlB63HP;IkBnyHA;MApII,oBA0CG;IlBg4HP;IkBtyHA;MApII,mBA0CG;IlBm4HP;IkBzyHA;MApII,kBA0CG;IlBs4HP;IkB5yHA;MApII,gBA0CG;IlBy4HP;IkB/yHA;MApII,mBA0CG;IlB44HP;IkBlzHA;MApII,oBA0CG;IlB+4HP;IkBrzHA;MApII,qCA0CG;IlBk5HP;IkBxzHA;MApII,qCA0CG;IlBq5HP;IkB3zHA;MApII,qCA0CG;IlBw5HP;IkB9zHA;MApII,qCA0CG;IlB25HP;IkBj0HA;MApII,mBA0CG;IlB85HP;IkBp0HA;MApII,mBA+CO;IlB45HX;IkBv0HA;MApII,sBA+CO;IlB+5HX;IkB10HA;MApII,qBA+CO;IlBk6HX;IkB70HA;MApII,SA0CG;IlB06HP;IkBh1HA;MApII,QA0CG;IlB66HP;IkBn1HA;MApII,QA0CG;IlBg7HP;IkBt1HA;MApII,QA0CG;IlBm7HP;IkBz1HA;MApII,QA0CG;IlBs7HP;IkB51HA;MApII,QA0CG;IlBy7HP;IkB/1HA;MApII,QA0CG;IlB47HP;IkBl2HA;MApII,QA0CG;IlB+7HP;IkBr2HA;MApII,SA0CG;IlBk8HP;IkBx2HA;MApII,eA0CG;IlBq8HP;IkB32HA;MApII,cA0CG;IlBw8HP;IkB92HA;MApII,YA0CG;IlB28HP;IkBj3HA;MApII,cA0CG;IlB88HP;IkBp3HA;MApII,YA0CG;IlBi9HP;IkBv3HA;MApII,YA0CG;IlBo9HP;IkB13HA;MApII,gBA0CG;IlBu9HP;IkB73HA;MApII,sBA0CG;IlB09HP;IkBh4HA;MApII,qBA0CG;IlB69HP;IkBn4HA;MApII,mBA0CG;IlBg+HP;IkBt4HA;MApII,qBA0CG;IlBm+HP;IkBz4HA;MApII,mBA0CG;IlBs+HP;IkB54HA;MApII,mBA0CG;IlBy+HP;IkB/4HA;MApII,eA0CG;IlB4+HP;IkBl5HA;MApII,qBA0CG;IlB++HP;IkBr5HA;MApII,oBA0CG;IlBk/HP;IkBx5HA;MApII,kBA0CG;IlBq/HP;IkB35HA;MApII,oBA0CG;IlBw/HP;IkB95HA;MApII,kBA0CG;IlB2/HP;IkBj6HA;MApII,kBA0CG;IlB8/HP;IkBp6HA;MApII,qBA0CG;IlBigIP;IkBv6HA;MApII,2BA0CG;IlBogIP;IkB16HA;MApII,0BA0CG;IlBugIP;IkB76HA;MApII,wBA0CG;IlB0gIP;IkBh7HA;MApII,0BA0CG;IlB6gIP;IkBn7HA;MApII,wBA0CG;IlBghIP;IkBt7HA;MApII,wBA0CG;IlBmhIP;IkBz7HA;MApII,oBA0CG;IlBshIP;IkB57HA;MApII,0BA0CG;IlByhIP;IkB/7HA;MApII,yBA0CG;IlB4hIP;IkBl8HA;MApII,uBA0CG;IlB+hIP;IkBr8HA;MApII,yBA0CG;IlBkiIP;IkBx8HA;MApII,uBA0CG;IlBqiIP;IkB38HA;MApII,uBA0CG;IlBwiIP;IkB98HA;MApII,mBA0CG;IlB2iIP;IkBj9HA;MApII,yBA0CG;IlB8iIP;IkBp9HA;MApII,wBA0CG;IlBijIP;IkBv9HA;MApII,sBA0CG;IlBojIP;IkB19HA;MApII,wBA0CG;IlBujIP;IkB79HA;MApII,sBA0CG;IlB0jIP;IkBh+HA;MApII,sBA0CG;IlB6jIP;IkBn+HA;MApII,sBA0CG;IlBgkIP;IkBt+HA;MApII,4BA0CG;IlBmkIP;IkBz+HA;MApII,2BA0CG;IlBskIP;IkB5+HA;MApII,yBA0CG;IlBykIP;IkB/+HA;MApII,2BA0CG;IlB4kIP;IkBl/HA;MApII,yBA0CG;IlB+kIP;IkBr/HA;MApII,6BA0CG;IlBklIP;IkBx/HA;MApII,4BA0CG;IlBqlIP;IkB3/HA;MApII,yBA0CG;IlBwlIP;IkB9/HA;MApII,UA0CG;IlB2lIP;IkBjgIA;MApII,gBA0CG;IlB8lIP;IkBpgIA;MApII,eA0CG;IlBimIP;IkBvgIA;MApII,aA0CG;IlBomIP;IkB1gIA;MApII,eA0CG;IlBumIP;IkB7gIA;MApII,aA0CG;IlB0mIP;IkBhhIA;MApII,iBA0CG;IlB6mIP;IkBnhIA;MApII,uBA0CG;IlBgnIP;IkBthIA;MApII,sBA0CG;IlBmnIP;IkBzhIA;MApII,oBA0CG;IlBsnIP;IkB5hIA;MApII,sBA0CG;IlBynIP;IkB/hIA;MApII,oBA0CG;IlB4nIP;IkBliIA;MApII,gBA0CG;IlB+nIP;IkBriIA;MApII,sBA0CG;IlBkoIP;IkBxiIA;MApII,qBA0CG;IlBqoIP;IkB3iIA;MApII,mBA0CG;IlBwoIP;IkB9iIA;MApII,qBA0CG;IlB2oIP;IkBjjIA;MApII,mBA0CG;IlB8oIP;IkBpjIA;MApII,sBA0CG;IlBipIP;IkBvjIA;MApII,4BA0CG;IlBopIP;IkB1jIA;MApII,2BA0CG;IlBupIP;IkB7jIA;MApII,yBA0CG;IlB0pIP;IkBhkIA;MApII,2BA0CG;IlB6pIP;IkBnkIA;MApII,yBA0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IkBlzIA;MApII,oBA0CG;IlB+4IP;IkBrzIA;MApII,kBA0CG;IlBk5IP;IkBxzIA;MApII,qBA0CG;IlBq5IP;IkB3zIA;MApII,sBA0CG;IlBw5IP;IkB9zIA;MApII,wBA0CG;IlB25IP;IkBj0IA;MApII,sBA0CG;IlB85IP;IkBp0IA;MApII,oBA0CG;IlBi6IP;IkBv0IA;MApII,uBA0CG;IlBo6IP;IkB10IA;MApII,qBA0CG;IlBu6IP;IkB70IA;MApII,mBA0CG;IlB06IP;IkBh1IA;MApII,qBA0CG;IlB66IP;IkBn1IA;MApII,oBA0CG;IlBg7IP;IkBt1IA;MApII,yBA0CG;IlBm7IP;IkBz1IA;MApII,uBA0CG;IlBs7IP;IkB51IA;MApII,qBA0CG;IlBy7IP;IkB/1IA;MApII,4BA0CG;IlB47IP;IkBl2IA;MApII,2BA0CG;IlB+7IP;IkBr2IA;MApII,sBA0CG;IlBk8IP;IkBx2IA;MApII,gBA0CG;IlBq8IP;IkB32IA;MApII,sBA0CG;IlBw8IP;IkB92IA;MApII,oBA0CG;IlB28IP;IkBj3IA;MApII,kBA0CG;IlB88IP;IkBp3IA;MApII,oBA0CG;IlBi9IP;IkBv3IA;MApII,mBA0CG;IlBo9IP;IkB13IA;MApII,kBA0CG;IlBu9IP;IkB73IA;MApII,gBA0CG;IlB09IP;IkBh4IA;MApII,mBA0CG;IlB69IP;IkBn4IA;MApII,oBA0CG;IlBg+IP;IkBt4IA;MApII,qCA0CG;IlBm+IP;IkBz4IA;MApII,qCA0CG;IlBs+IP;IkB54IA;MApII,qCA0CG;IlBy+IP;IkB/4IA;MApII,qCA0CG;IlB4+IP;IkBl5IA;MApII,mBA0CG;IlB++IP;IkBr5IA;MApII,mBA+CO;IlB6+IX;IkBx5IA;MApII,sBA+CO;IlBg/IX;IkB35IA;MApII,qBA+CO;IlBm/IX;IkB95IA;MApII,SA0CG;IlB2/IP;IkBj6IA;MApII,QA0CG;IlB8/IP;IkBp6IA;MApII,QA0CG;IlBigJP;IkBv6IA;MApII,QA0CG;IlBogJP;IkB16IA;MApII,QA0CG;IlBugJP;IkB76IA;MApII,QA0CG;IlB0gJP;IkBh7IA;MApII,QA0CG;IlB6gJP;IkBn7IA;MApII,QA0CG;IlBghJP;IkBt7IA;MApII,SA0CG;IlBmhJP;IkBz7IA;MApII,eA0CG;IlBshJP;IkB57IA;MApII,cA0CG;IlByhJP;IkB/7IA;MApII,YA0CG;IlB4hJP;IkBl8IA;MApII,cA0CG;IlB+hJP;IkBr8IA;MApII,YA0CG;IlBkiJP;IkBx8IA;MApII,YA0CG;IlBqiJP;IkB38IA;MApII,gBA0CG;IlBwiJP;IkB98IA;MApII,sBA0CG;IlB2iJP;IkBj9IA;MApII,qBA0CG;IlB8iJP;IkBp9IA;MApII,mBA0CG;IlBijJP;IkBv9IA;MApII,qBA0CG;IlBojJP;IkB19IA;MApII,mBA0CG;IlBujJP;IkB79IA;MApII,mBA0CG;IlB0jJP;IkBh+IA;MApII,eA0CG;IlB6jJP;IkBn+IA;MApII,qBA0CG;IlBgkJP;IkBt+IA;MApII,oBA0CG;IlBmkJP;IkBz+IA;MApII,kBA0CG;IlBskJP;IkB5+IA;MApII,oBA0CG;IlBykJP;IkB/+IA;MApII,kBA0CG;IlB4kJP;IkBl/IA;MApII,kBA0CG;IlB+kJP;IkBr/IA;MApII,qBA0CG;IlBklJP;IkBx/IA;MApII,2BA0CG;IlBqlJP;IkB3/IA;MApII,0BA0CG;IlBwlJP;IkB9/IA;MApII,wBA0CG;IlB2lJP;IkBjgJA;MApII,0BA0CG;IlB8lJP;IkBpgJA;MApII,wBA0CG;IlBimJP;IkBvgJA;MApII,wBA0CG;IlBomJP;IkB1gJA;MApII,oBA0CG;IlBumJP;IkB7gJA;MApII,0BA0CG;IlB0mJP;IkBhhJA;MApII,yBA0CG;IlB6mJP;IkBnhJA;MApII,uBA0CG;IlBgnJP;IkBthJA;MApII,yBA0CG;IlBmnJP;IkBzhJA;MApII,uBA0CG;IlBsnJP;IkB5hJA;MApII,uBA0CG;IlBynJP;IkB/hJA;MApII,mBA0CG;IlB4nJP;IkBliJA;MApII,yBA0CG;IlB+nJP;IkBriJA;MApII,wBA0CG;IlBkoJP;IkBxiJA;MApII,sBA0CG;IlBqoJP;IkB3iJA;MApII,wBA0CG;IlBwoJP;IkB9iJA;MApII,sBA0CG;IlB2oJP;IkBjjJA;MApII,sBA0CG;IlB8oJP;IkBpjJA;MApII,sBA0CG;IlBipJP;IkBvjJA;MApII,4BA0CG;IlBopJP;IkB1jJA;MApII,2BA0CG;IlBupJP;IkB7jJA;MApII,yBA0CG;IlB0pJP;IkBhkJA;MApII,2BA0CG;IlB6pJP;IkBnkJA;MApII,yBA0CG;IlBgqJP;IkBtkJA;MApII,6BA0CG;IlBmqJP;IkBzkJA;MApII,4BA0CG;IlBsqJP;IkB5kJA;MApII,yBA0CG;IlByqJP;IkB/kJA;MApII,UA0CG;IlB4qJP;IkBllJA;MApII,gBA0CG;IlB+qJP;IkBrlJA;MApII,eA0CG;IlBkrJP;IkBxlJA;MApII,aA0CG;IlBqrJP;IkB3lJA;MApII,eA0CG;IlBwrJP;IkB9lJA;MApII,aA0CG;IlB2rJP;IkBjmJA;MApII,iBA0CG;IlB8rJP;IkBpmJA;MApII,uBA0CG;IlBisJP;IkBvmJA;MApII,sBA0CG;IlBosJP;IkB1mJA;MApII,oBA0CG;IlBusJP;IkB7mJA;MApII,sBA0CG;IlB0sJP;IkBhnJA;MApII,oBA0CG;IlB6sJP;IkBnnJA;MApII,gBA0CG;IlBgtJP;IkBtnJA;MApII,sBA0CG;IlBmtJP;IkBznJA;MApII,qBA0CG;IlBstJP;IkB5nJA;MApII,mBA0CG;IlBytJP;IkB/nJA;MApII,qBA0CG;IlB4tJP;IkBloJA;MApII,mBA0CG;IlB+tJP;IkBroJA;MApII,sBA0CG;IlBkuJP;IkBxoJA;MApII,4BA0CG;IlBquJP;IkB3oJA;MApII,2BA0CG;IlBwuJP;IkB9oJA;MApII,yBA0CG;IlB2uJP;IkBjpJA;MApII,2BA0CG;IlB8uJP;IkBppJA;MApII,yBA0CG;IlBivJP;IkBvpJA;MApII,qBA0CG;IlBovJP;IkB1pJA;MApII,2BA0CG;IlBuvJP;IkB7pJA;MApII,0BA0CG;IlB0vJP;IkBhqJA;MApII,wBA0CG;IlB6vJP;IkBnqJA;MApII,0BA0CG;IlBgwJP;IkBtqJA;MApII,wBA0CG;IlBm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;MApII,oBA0CG;IlBk/JP;IkBx5JA;MApII,uBA0CG;IlBq/JP;IkB35JA;MApII,qBA0CG;IlBw/JP;IkB95JA;MApII,mBA0CG;IlB2/JP;IkBj6JA;MApII,qBA0CG;IlB8/JP;IkBp6JA;MApII,oBA0CG;IlBigKP;IkBv6JA;MApII,yBA0CG;IlBogKP;IkB16JA;MApII,uBA0CG;IlBugKP;IkB76JA;MApII,qBA0CG;IlB0gKP;IkBh7JA;MApII,4BA0CG;IlB6gKP;IkBn7JA;MApII,2BA0CG;IlBghKP;IkBt7JA;MApII,sBA0CG;IlBmhKP;IkBz7JA;MApII,gBA0CG;IlBshKP;IkB57JA;MApII,sBA0CG;IlByhKP;IkB/7JA;MApII,oBA0CG;IlB4hKP;IkBl8JA;MApII,kBA0CG;IlB+hKP;IkBr8JA;MApII,oBA0CG;IlBkiKP;IkBx8JA;MApII,mBA0CG;IlBqiKP;IkB38JA;MApII,kBA0CG;IlBwiKP;IkB98JA;MApII,gBA0CG;IlB2iKP;IkBj9JA;MApII,mBA0CG;IlB8iKP;IkBp9JA;MApII,oBA0CG;IlBijKP;IkBv9JA;MApII,qCA0CG;IlBojKP;IkB19JA;MApII,qCA0CG;IlBujKP;IkB79JA;MApII,qCA0CG;IlB0jKP;IkBh+JA;MApII,qCA0CG;IlB6jKP;IkBn+JA;MApII,mBA0CG;IlBgkKP;IkBt+JA;MApII,mBA+CO;IlB8jKX;IkBz+JA;MApII,sBA+CO;IlBikKX;IkB5+JA;MApII,qBA+CO;IlBokKX;IkB/+JA;MApII,SA0CG;IlB4kKP;IkBl/JA;MApII,QA0CG;IlB+kKP;IkBr/JA;MApII,QA0CG;IlBklKP;IkBx/JA;MApII,QA0CG;IlBqlKP;IkB3/JA;MApII,QA0CG;IlBwlKP;IkB9/JA;MApII,QA0CG;IlB2lKP;IkBjgKA;MApII,QA0CG;IlB8lKP;IkBpgKA;MApII,QA0CG;IlBimKP;IkBvgKA;MApII,SA0CG;IlBomKP;IkB1gKA;MApII,eA0CG;IlBumKP;IkB7gKA;MApII,cA0CG;IlB0mKP;IkBhhKA;MApII,YA0CG;IlB6mKP;IkBnhKA;MApII,cA0CG;IlBgnKP;IkBthKA;MApII,YA0CG;IlBmnKP;IkBzhKA;MApII,YA0CG;IlBsnKP;IkB5hKA;MApII,gBA0CG;IlBynKP;IkB/hKA;MApII,sBA0CG;IlB4nKP;IkBliKA;MApII,qBA0CG;IlB+nKP;IkBriKA;MApII,mBA0CG;IlBkoKP;IkBxiKA;MApII,qBA0CG;IlBqoKP;IkB3iKA;MApII,mBA0CG;IlBwoKP;IkB9iKA;MApII,mBA0CG;IlB2oKP;IkBjjKA;MApII,eA0CG;IlB8oKP;IkBpjKA;MApII,qBA0CG;IlBipKP;IkBvjKA;MApII,oBA0CG;IlBopKP;IkB1jKA;MApII,kBA0CG;IlBupKP;IkB7jKA;MApII,oBA0CG;IlB0pKP;IkBhkKA;MApII,kBA0CG;IlB6pKP;IkBnkKA;MApII,kBA0CG;IlBgqKP;IkBtkKA;MApII,qBA0CG;IlBmqKP;IkBzkKA;MApII,2BA0CG;IlBsqKP;IkB5kKA;MApII,0BA0CG;IlByqKP;IkB/kKA;MApII,wBA0CG;IlB4qKP;IkBllKA;MApII,0BA0CG;IlB+qKP;IkBrlKA;MApII,wBA0CG;IlBkrKP;IkBxlKA;MApII,wBA0CG;IlBqrKP;IkB3lKA;MApII,oBA0CG;IlBwrKP;IkB9lKA;MApII,0BA0CG;IlB2rKP;IkBjmKA;MApII,yBA0CG;IlB8rKP;IkBpmKA;MApII,uBA0CG;IlBisKP;IkBvmKA;MApII,yBA0CG;IlBosKP;IkB1mKA;MApII,uBA0CG;IlBusKP;IkB7mKA;MApII,uBA0CG;IlB0sKP;IkBhnKA;MApII,mBA0CG;IlB6sKP;IkBnnKA;MApII,yBA0CG;IlBgtKP;IkBtnKA;MApII,wBA0CG;IlBmtKP;IkBznKA;MApII,sBA0CG;IlBstKP;IkB5nKA;MApII,wBA0CG;IlBytKP;IkB/nKA;MApII,sBA0CG;IlB4tKP;IkBloKA;MApII,sBA0CG;IlB+tKP;IkBroKA;MApII,sBA0CG;IlBkuKP;IkBxoKA;MApII,4BA0CG;IlBquKP;IkB3oKA;MApII,2BA0CG;IlBwuKP;IkB9oKA;MApII,yBA0CG;IlB2uKP;IkBjpKA;MApII,2BA0CG;IlB8uKP;IkBppKA;MApII,yBA0CG;IlBivKP;IkBvpKA;MApII,6BA0CG;IlBovKP;IkB1pKA;MApII,4BA0CG;IlBuvKP;IkB7pKA;MApII,yBA0CG;IlB0vKP;IkBhqKA;MApII,UA0CG;IlB6vKP;IkBnqKA;MApII,gBA0CG;IlBgwKP;IkBtqKA;MApII,eA0CG;IlBmwKP;IkBzqKA;MApII,aA0CG;IlBswKP;IkB5qKA;MApII,eA0CG;IlBywKP;IkB/qKA;MApII,aA0CG;IlB4wKP;IkBlrKA;MApII,iBA0CG;IlB+wKP;IkBrrKA;MApII,uBA0CG;IlBkxKP;IkBxrKA;MApII,sBA0CG;IlBqxKP;IkB3rKA;MApII,oBA0CG;IlBwxKP;IkB9rKA;MApII,sBA0CG;IlB2xKP;IkBjsKA;MApII,oBA0CG;IlB8xKP;IkBpsKA;MApII,gBA0CG;IlBiyKP;IkBvsKA;MApII,sBA0CG;IlBoyKP;IkB1sKA;MApII,qBA0CG;IlBuyKP;IkB7sKA;MApII,mBA0CG;IlB0yKP;IkBhtKA;MApII,qBA0CG;IlB6yKP;IkBntKA;MApII,mBA0CG;IlBgzKP;IkBttKA;MApII,sBA0CG;IlBmzKP;IkBztKA;MApII,4BA0CG;IlBszKP;IkB5tKA;MApII,2BA0CG;IlByzKP;IkB/tKA;MApII,yBA0CG;IlB4zKP;IkBluKA;MApII,2BA0CG;IlB+zKP;IkBruKA;MApII,yBA0CG;IlBk0KP;IkBxuKA;MApII,qBA0CG;IlBq0KP;IkB3uKA;MApII,2BA0CG;IlBw0KP;IkB9uKA;MApII,0BA0CG;IlB20KP;IkBjvKA;MApII,wBA0CG;IlB80KP;IkBpvKA;MApII,0BA0CG;IlBi1KP;IkBvvKA;MApII,wBA0CG;IlBo1KP;IkB1vKA;MApII,oBA0CG;IlBu1KP;IkB7vKA;MApII,0BA0CG;IlB01KP;IkBhwKA;MApII,yBA0CG;IlB61KP;IkBnwKA;MApII,uBA0CG;IlBg2KP;IkBtwKA;MApII,yBA0CG;IlBm2KP;IkBzwKA;MApII,uBA0CG;IlBs2KP;IkB5wKA;MApII,uBA0CG;IlBy2KP;IkB/wKA;MApII,6BA0CG;IlB42KP;IkBlxKA;MApII,4BA0CG;IlB+2KP;IkBrxKA;MApII,0BA0CG;IlBk3KP;IkBxxKA;MApII,4BA0CG;IlBq3KP;IkB3xKA;MApII,0BA0CG;IlBw3KP;IkB9xKA;MApII,MA0CG;IlB23KP;IkBjyKA;MApII,YA0CG;IlB83KP;IkBpyKA;MApII,WA0CG;IlBi4KP;IkBvyKA;MApII,SA0CG;IlBo4KP;IkB1yKA;MApII,WA0CG;IlBu4KP;IkB7yKA;MApII,SA0CG;IlB04KP;IkBhzKA;MApII,UA0CG;IlB64KP;IkBnzKA;MApII,gBA0CG;IlBg5KP;IkBtzKA;MApII,eA0CG;IlBm5KP;IkBzzKA;MApII,aA0CG;IlBs5KP;IkB5zKA;MApII,eA0CG;IlBy5KP;IkB/zKA;MApII,aA0CG;IlB45KP;IkBl0KA;MApII,kBA0CG;MA1CH,aA0CG;IlB+5KP;IkBr0KA;MApII,wBA0CG;MA1CH,mBA0CG;IlBk6KP;IkBx0KA;MApII,uBA0CG;MA1CH,kBA0CG;IlBq6KP;IkB30KA;MApII,qBA0CG;MA1CH,gBA0CG;IlBw6KP;IkB90KA;MApII,uBA0CG;MA1CH,kBA0CG;IlB26KP;IkBj1KA;MApII,qBA0CG;MA1CH,gBA0CG;IlB86KP;IkBp1KA;MApII,iBA0CG;IlBi7KP;IkBv1KA;MApII,eA0CG;IlBo7KP;IkB11KA;MApII,kBA0CG;IlBu7KP;EACF;AACF","file":"bootstrap-utilities.css","sourcesContent":["$file: \"\" !default;\n\n/*!\n  * Bootstrap #{$file} v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n","// stylelint-disable hue-degree-notation, @stylistic/number-leading-zero\n\n@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// Easily convert colors to oklch() with https://oklch.com/\n\n$white: #fff !default;\n$black: #000 !default;\n\n// scss-docs-start colors-list\n$blue: oklch(60% 0.24 240) !default;\n$indigo: oklch(56% 0.26 288) !default;\n$violet: oklch(56% 0.24 300) !default;\n$purple: oklch(56% 0.24 320) !default;\n$pink: oklch(60% 0.22 4) !default;\n$red: oklch(60% 0.22 20) !default;\n$orange: oklch(70% 0.22 52) !default;\n$amber: oklch(79% 0.2 78) !default;\n$yellow: oklch(88% 0.24 88) !default;\n$lime: oklch(65% 0.24 135) !default;\n$green: oklch(64% 0.22 160) !default;\n$teal: oklch(68% 0.22 190) !default;\n$cyan: oklch(69% 0.22 220) !default;\n$brown: oklch(60% 0.12 54) !default;\n$gray: oklch(60% 0.02 245) !default;\n$pewter: oklch(65% 0.01 290) !default;\n// scss-docs-end colors-list\n\n// scss-docs-start colors-map\n$colors: () !default;\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$colors: defaults(\n  (\n    \"blue\": $blue,\n    \"indigo\": $indigo,\n    \"violet\": $violet,\n    \"purple\": $purple,\n    \"pink\": $pink,\n    \"red\": $red,\n    \"orange\": $orange,\n    \"amber\": $amber,\n    \"yellow\": $yellow,\n    \"lime\": $lime,\n    \"green\": $green,\n    \"teal\": $teal,\n    \"cyan\": $cyan,\n    \"brown\": $brown,\n    \"gray\": $gray,\n    \"pewter\": $pewter,\n  ),\n  $colors\n);\n// scss-docs-end colors-map\n\n// scss-docs-start color-mix-options\n$color-mix-space: lab !default;\n$tint-color: var(--white) !default;\n$shade-color: var(--black) !default;\n\n$color-tints: (\n  \"025\": 94%,\n  \"050\": 90%,\n  \"100\": 80%,\n  \"200\": 60%,\n  \"300\": 40%,\n  \"400\": 20%,\n) !default;\n\n$color-shades: (\n  \"600\": 16%,\n  \"700\": 32%,\n  \"800\": 48%,\n  \"900\": 64%,\n  \"950\": 76%,\n  \"975\": 88%,\n) !default;\n// scss-docs-end color-mix-options\n\n// scss-docs-start color-tokens\n$color-tokens: () !default;\n\n$-color-defaults: () !default;\n@each $color, $value in $colors {\n  @each $stop, $percent in $color-tints {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$tint-color} #{$percent}, #{$value}));\n  }\n  $-color-defaults: map.set($-color-defaults, --#{$color}-500, #{$value});\n  @each $stop, $percent in $color-shades {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$shade-color} #{$percent}, #{$value}));\n  }\n}\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$color-tokens: defaults($-color-defaults, $color-tokens);\n// scss-docs-end color-tokens\n\n:root {\n  @include tokens($color-tokens);\n}\n","// Mixin to output tokens as CSS custom properties\n\n// scss-docs-start mixin-tokens\n@mixin tokens($map) {\n  @each $prop, $value in $map {\n    #{$prop}: #{$value};\n  }\n}\n// scss-docs-end mixin-tokens\n","/*!\n  * Bootstrap Utilities v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n:root {\n  --blue-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.24 240deg));\n  --blue-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.24 240deg));\n  --blue-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.24 240deg));\n  --blue-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.24 240deg));\n  --blue-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.24 240deg));\n  --blue-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.24 240deg));\n  --blue-500: oklch(60% 0.24 240deg);\n  --blue-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.24 240deg));\n  --blue-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.24 240deg));\n  --blue-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.24 240deg));\n  --blue-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.24 240deg));\n  --blue-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.24 240deg));\n  --blue-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.24 240deg));\n  --indigo-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.26 288deg));\n  --indigo-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.26 288deg));\n  --indigo-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.26 288deg));\n  --indigo-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.26 288deg));\n  --indigo-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.26 288deg));\n  --indigo-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.26 288deg));\n  --indigo-500: oklch(56% 0.26 288deg);\n  --indigo-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.26 288deg));\n  --indigo-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.26 288deg));\n  --indigo-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.26 288deg));\n  --indigo-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.26 288deg));\n  --indigo-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.26 288deg));\n  --indigo-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.26 288deg));\n  --violet-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 300deg));\n  --violet-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 300deg));\n  --violet-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 300deg));\n  --violet-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 300deg));\n  --violet-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 300deg));\n  --violet-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 300deg));\n  --violet-500: oklch(56% 0.24 300deg);\n  --violet-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 300deg));\n  --violet-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 300deg));\n  --violet-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 300deg));\n  --violet-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 300deg));\n  --violet-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 300deg));\n  --violet-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 300deg));\n  --purple-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 320deg));\n  --purple-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 320deg));\n  --purple-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 320deg));\n  --purple-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 320deg));\n  --purple-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 320deg));\n  --purple-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 320deg));\n  --purple-500: oklch(56% 0.24 320deg);\n  --purple-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 320deg));\n  --purple-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 320deg));\n  --purple-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 320deg));\n  --purple-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 320deg));\n  --purple-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 320deg));\n  --purple-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 320deg));\n  --pink-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 4deg));\n  --pink-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 4deg));\n  --pink-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 4deg));\n  --pink-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 4deg));\n  --pink-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 4deg));\n  --pink-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 4deg));\n  --pink-500: oklch(60% 0.22 4deg);\n  --pink-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 4deg));\n  --pink-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 4deg));\n  --pink-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 4deg));\n  --pink-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 4deg));\n  --pink-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 4deg));\n  --pink-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 4deg));\n  --red-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 20deg));\n  --red-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 20deg));\n  --red-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 20deg));\n  --red-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 20deg));\n  --red-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 20deg));\n  --red-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 20deg));\n  --red-500: oklch(60% 0.22 20deg);\n  --red-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 20deg));\n  --red-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 20deg));\n  --red-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 20deg));\n  --red-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 20deg));\n  --red-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 20deg));\n  --red-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 20deg));\n  --orange-025: color-mix(in lab, var(--white) 94%, oklch(70% 0.22 52deg));\n  --orange-050: color-mix(in lab, var(--white) 90%, oklch(70% 0.22 52deg));\n  --orange-100: color-mix(in lab, var(--white) 80%, oklch(70% 0.22 52deg));\n  --orange-200: color-mix(in lab, var(--white) 60%, oklch(70% 0.22 52deg));\n  --orange-300: color-mix(in lab, var(--white) 40%, oklch(70% 0.22 52deg));\n  --orange-400: color-mix(in lab, var(--white) 20%, oklch(70% 0.22 52deg));\n  --orange-500: oklch(70% 0.22 52deg);\n  --orange-600: color-mix(in lab, var(--black) 16%, oklch(70% 0.22 52deg));\n  --orange-700: color-mix(in lab, var(--black) 32%, oklch(70% 0.22 52deg));\n  --orange-800: color-mix(in lab, var(--black) 48%, oklch(70% 0.22 52deg));\n  --orange-900: color-mix(in lab, var(--black) 64%, oklch(70% 0.22 52deg));\n  --orange-950: color-mix(in lab, var(--black) 76%, oklch(70% 0.22 52deg));\n  --orange-975: color-mix(in lab, var(--black) 88%, oklch(70% 0.22 52deg));\n  --amber-025: color-mix(in lab, var(--white) 94%, oklch(79% 0.2 78deg));\n  --amber-050: color-mix(in lab, var(--white) 90%, oklch(79% 0.2 78deg));\n  --amber-100: color-mix(in lab, var(--white) 80%, oklch(79% 0.2 78deg));\n  --amber-200: color-mix(in lab, var(--white) 60%, oklch(79% 0.2 78deg));\n  --amber-300: color-mix(in lab, var(--white) 40%, oklch(79% 0.2 78deg));\n  --amber-400: color-mix(in lab, var(--white) 20%, oklch(79% 0.2 78deg));\n  --amber-500: oklch(79% 0.2 78deg);\n  --amber-600: color-mix(in lab, var(--black) 16%, oklch(79% 0.2 78deg));\n  --amber-700: color-mix(in lab, var(--black) 32%, oklch(79% 0.2 78deg));\n  --amber-800: color-mix(in lab, var(--black) 48%, oklch(79% 0.2 78deg));\n  --amber-900: color-mix(in lab, var(--black) 64%, oklch(79% 0.2 78deg));\n  --amber-950: color-mix(in lab, var(--black) 76%, oklch(79% 0.2 78deg));\n  --amber-975: color-mix(in lab, var(--black) 88%, oklch(79% 0.2 78deg));\n  --yellow-025: color-mix(in lab, var(--white) 94%, oklch(88% 0.24 88deg));\n  --yellow-050: color-mix(in lab, var(--white) 90%, oklch(88% 0.24 88deg));\n  --yellow-100: color-mix(in lab, var(--white) 80%, oklch(88% 0.24 88deg));\n  --yellow-200: color-mix(in lab, var(--white) 60%, oklch(88% 0.24 88deg));\n  --yellow-300: color-mix(in lab, var(--white) 40%, oklch(88% 0.24 88deg));\n  --yellow-400: color-mix(in lab, var(--white) 20%, oklch(88% 0.24 88deg));\n  --yellow-500: oklch(88% 0.24 88deg);\n  --yellow-600: color-mix(in lab, var(--black) 16%, oklch(88% 0.24 88deg));\n  --yellow-700: color-mix(in lab, var(--black) 32%, oklch(88% 0.24 88deg));\n  --yellow-800: color-mix(in lab, var(--black) 48%, oklch(88% 0.24 88deg));\n  --yellow-900: color-mix(in lab, var(--black) 64%, oklch(88% 0.24 88deg));\n  --yellow-950: color-mix(in lab, var(--black) 76%, oklch(88% 0.24 88deg));\n  --yellow-975: color-mix(in lab, var(--black) 88%, oklch(88% 0.24 88deg));\n  --lime-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.24 135deg));\n  --lime-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.24 135deg));\n  --lime-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.24 135deg));\n  --lime-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.24 135deg));\n  --lime-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.24 135deg));\n  --lime-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.24 135deg));\n  --lime-500: oklch(65% 0.24 135deg);\n  --lime-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.24 135deg));\n  --lime-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.24 135deg));\n  --lime-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.24 135deg));\n  --lime-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.24 135deg));\n  --lime-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.24 135deg));\n  --lime-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.24 135deg));\n  --green-025: color-mix(in lab, var(--white) 94%, oklch(64% 0.22 160deg));\n  --green-050: color-mix(in lab, var(--white) 90%, oklch(64% 0.22 160deg));\n  --green-100: color-mix(in lab, var(--white) 80%, oklch(64% 0.22 160deg));\n  --green-200: color-mix(in lab, var(--white) 60%, oklch(64% 0.22 160deg));\n  --green-300: color-mix(in lab, var(--white) 40%, oklch(64% 0.22 160deg));\n  --green-400: color-mix(in lab, var(--white) 20%, oklch(64% 0.22 160deg));\n  --green-500: oklch(64% 0.22 160deg);\n  --green-600: color-mix(in lab, var(--black) 16%, oklch(64% 0.22 160deg));\n  --green-700: color-mix(in lab, var(--black) 32%, oklch(64% 0.22 160deg));\n  --green-800: color-mix(in lab, var(--black) 48%, oklch(64% 0.22 160deg));\n  --green-900: color-mix(in lab, var(--black) 64%, oklch(64% 0.22 160deg));\n  --green-950: color-mix(in lab, var(--black) 76%, oklch(64% 0.22 160deg));\n  --green-975: color-mix(in lab, var(--black) 88%, oklch(64% 0.22 160deg));\n  --teal-025: color-mix(in lab, var(--white) 94%, oklch(68% 0.22 190deg));\n  --teal-050: color-mix(in lab, var(--white) 90%, oklch(68% 0.22 190deg));\n  --teal-100: color-mix(in lab, var(--white) 80%, oklch(68% 0.22 190deg));\n  --teal-200: color-mix(in lab, var(--white) 60%, oklch(68% 0.22 190deg));\n  --teal-300: color-mix(in lab, var(--white) 40%, oklch(68% 0.22 190deg));\n  --teal-400: color-mix(in lab, var(--white) 20%, oklch(68% 0.22 190deg));\n  --teal-500: oklch(68% 0.22 190deg);\n  --teal-600: color-mix(in lab, var(--black) 16%, oklch(68% 0.22 190deg));\n  --teal-700: color-mix(in lab, var(--black) 32%, oklch(68% 0.22 190deg));\n  --teal-800: color-mix(in lab, var(--black) 48%, oklch(68% 0.22 190deg));\n  --teal-900: color-mix(in lab, var(--black) 64%, oklch(68% 0.22 190deg));\n  --teal-950: color-mix(in lab, var(--black) 76%, oklch(68% 0.22 190deg));\n  --teal-975: color-mix(in lab, var(--black) 88%, oklch(68% 0.22 190deg));\n  --cyan-025: color-mix(in lab, var(--white) 94%, oklch(69% 0.22 220deg));\n  --cyan-050: color-mix(in lab, var(--white) 90%, oklch(69% 0.22 220deg));\n  --cyan-100: color-mix(in lab, var(--white) 80%, oklch(69% 0.22 220deg));\n  --cyan-200: color-mix(in lab, var(--white) 60%, oklch(69% 0.22 220deg));\n  --cyan-300: color-mix(in lab, var(--white) 40%, oklch(69% 0.22 220deg));\n  --cyan-400: color-mix(in lab, var(--white) 20%, oklch(69% 0.22 220deg));\n  --cyan-500: oklch(69% 0.22 220deg);\n  --cyan-600: color-mix(in lab, var(--black) 16%, oklch(69% 0.22 220deg));\n  --cyan-700: color-mix(in lab, var(--black) 32%, oklch(69% 0.22 220deg));\n  --cyan-800: color-mix(in lab, var(--black) 48%, oklch(69% 0.22 220deg));\n  --cyan-900: color-mix(in lab, var(--black) 64%, oklch(69% 0.22 220deg));\n  --cyan-950: color-mix(in lab, var(--black) 76%, oklch(69% 0.22 220deg));\n  --cyan-975: color-mix(in lab, var(--black) 88%, oklch(69% 0.22 220deg));\n  --brown-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.12 54deg));\n  --brown-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.12 54deg));\n  --brown-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.12 54deg));\n  --brown-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.12 54deg));\n  --brown-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.12 54deg));\n  --brown-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.12 54deg));\n  --brown-500: oklch(60% 0.12 54deg);\n  --brown-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.12 54deg));\n  --brown-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.12 54deg));\n  --brown-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.12 54deg));\n  --brown-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.12 54deg));\n  --brown-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.12 54deg));\n  --brown-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.12 54deg));\n  --gray-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.02 245deg));\n  --gray-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.02 245deg));\n  --gray-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.02 245deg));\n  --gray-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.02 245deg));\n  --gray-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.02 245deg));\n  --gray-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.02 245deg));\n  --gray-500: oklch(60% 0.02 245deg);\n  --gray-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.02 245deg));\n  --gray-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.02 245deg));\n  --gray-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.02 245deg));\n  --gray-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.02 245deg));\n  --gray-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.02 245deg));\n  --gray-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.02 245deg));\n  --pewter-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.01 290deg));\n  --pewter-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.01 290deg));\n  --pewter-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.01 290deg));\n  --pewter-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.01 290deg));\n  --pewter-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.01 290deg));\n  --pewter-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.01 290deg));\n  --pewter-500: oklch(65% 0.01 290deg);\n  --pewter-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.01 290deg));\n  --pewter-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.01 290deg));\n  --pewter-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.01 290deg));\n  --pewter-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.01 290deg));\n  --pewter-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.01 290deg));\n  --pewter-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.01 290deg));\n}\n\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n:root {\n  --black: #000;\n  --white: #fff;\n  --gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent));\n  --font-weight-lighter: lighter;\n  --font-weight-light: 300;\n  --font-weight-normal: 400;\n  --font-weight-medium: 500;\n  --font-weight-semibold: 600;\n  --font-weight-bold: 700;\n  --font-weight-bolder: bolder;\n  --body-font-family: system-ui;\n  --body-font-size: var(--font-size-base);\n  --body-font-weight: 400;\n  --body-line-height: 1.5;\n  --heading-color: inherit;\n  --hr-border-color: var(--border-color);\n  --link-color: light-dark(var(--primary-base), var(--primary-text));\n  --link-decoration: underline;\n  --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000);\n  --font-mono: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;\n  --code-font-size: 95%;\n  --code-color: var(--fg-2);\n  --border-width: 1px;\n  --border-style: solid;\n  --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700));\n  --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent);\n  --border-radius: 0.5rem;\n  --border-radius-xs: 0.375rem;\n  --border-radius-sm: 0.5rem;\n  --border-radius-lg: 0.75rem;\n  --border-radius-xl: 1rem;\n  --border-radius-2xl: 2rem;\n  --border-radius-pill: 50rem;\n  --box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  --box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n  --box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n  --box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n  --spacer: 1rem;\n  --focus-ring-width: 3px;\n  --focus-ring-offset: 1px;\n  --focus-ring-color: var(--primary-focus-ring);\n  --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color);\n  --control-checked-bg: var(--primary-base);\n  --control-checked-border-color: var(--control-checked-bg);\n  --control-active-bg: var(--primary-base);\n  --control-active-border-color: var(--control-active-bg);\n  --control-disabled-bg: var(--bg-3);\n  --control-disabled-opacity: 0.65;\n  --btn-input-fg: var(--fg-body);\n  --btn-input-bg: var(--bg-body);\n  --btn-input-min-height: 2.375rem;\n  --btn-input-padding-y: 0.375rem;\n  --btn-input-padding-x: 0.75rem;\n  --btn-input-font-size: var(--font-size-base);\n  --btn-input-line-height: var(--line-height-base);\n  --btn-input-border-radius: var(--border-radius);\n  --btn-input-xs-min-height: 1.5rem;\n  --btn-input-xs-padding-y: 0.125rem;\n  --btn-input-xs-padding-x: 0.5rem;\n  --btn-input-xs-font-size: var(--font-size-xs);\n  --btn-input-xs-line-height: 1.125;\n  --btn-input-xs-border-radius: var(--border-radius-xs);\n  --btn-input-sm-min-height: 2rem;\n  --btn-input-sm-padding-y: 0.25rem;\n  --btn-input-sm-padding-x: 0.625rem;\n  --btn-input-sm-font-size: var(--font-size-sm);\n  --btn-input-sm-line-height: var(--line-height-sm);\n  --btn-input-sm-border-radius: var(--border-radius-sm);\n  --btn-input-lg-min-height: 2.75rem;\n  --btn-input-lg-padding-y: 0.5rem;\n  --btn-input-lg-padding-x: 1rem;\n  --btn-input-lg-font-size: var(--font-size-md);\n  --btn-input-lg-line-height: var(--line-height-md);\n  --btn-input-lg-border-radius: var(--border-radius-lg);\n  --form-valid-color: var(--success-text);\n  --form-valid-border-color: var(--success-text);\n  --form-invalid-color: var(--danger-text);\n  --form-invalid-border-color: var(--danger-text);\n  --font-size-xs: 0.75rem;\n  --line-height-xs: 1.25;\n  --font-size-sm: 0.875rem;\n  --line-height-sm: 1.5;\n  --font-size-md: 1rem;\n  --line-height-md: 1.5;\n  --font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  --line-height-lg: 1.5;\n  --font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  --line-height-xl: 1.4285714286;\n  --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  --line-height-2xl: 1.3333333333;\n  --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  --line-height-3xl: 1.2;\n  --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  --line-height-4xl: 1.1;\n  --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);\n  --line-height-5xl: 1.1;\n  --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  --line-height-6xl: 1;\n  --primary-base: var(--blue-500);\n  --primary-text: light-dark(var(--blue-600), var(--blue-400));\n  --primary-text-emphasis: light-dark(var(--blue-800), var(--blue-200));\n  --primary-bg: var(--blue-500);\n  --primary-bg-subtle: light-dark(var(--blue-100), var(--blue-900));\n  --primary-bg-muted: light-dark(var(--blue-200), var(--blue-800));\n  --primary-border: light-dark(var(--blue-300), var(--blue-600));\n  --primary-focus-ring: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  --primary-contrast: var(--white);\n  --accent-base: var(--indigo-500);\n  --accent-text: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  --accent-text-emphasis: light-dark(var(--indigo-800), var(--indigo-300));\n  --accent-bg: var(--indigo-500);\n  --accent-bg-subtle: light-dark(var(--indigo-100), var(--indigo-900));\n  --accent-bg-muted: light-dark(var(--indigo-200), var(--indigo-800));\n  --accent-border: light-dark(var(--indigo-300), var(--indigo-600));\n  --accent-focus-ring: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  --accent-contrast: var(--white);\n  --success-base: var(--green-500);\n  --success-text: light-dark(var(--green-600), var(--green-400));\n  --success-text-emphasis: light-dark(var(--green-800), var(--green-300));\n  --success-bg: var(--green-500);\n  --success-bg-subtle: light-dark(var(--green-100), var(--green-900));\n  --success-bg-muted: light-dark(var(--green-200), var(--green-800));\n  --success-border: light-dark(var(--green-300), var(--green-600));\n  --success-focus-ring: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  --success-contrast: var(--white);\n  --danger-base: var(--red-500);\n  --danger-text: light-dark(var(--red-600), var(--red-400));\n  --danger-text-emphasis: light-dark(var(--red-800), var(--red-300));\n  --danger-bg: var(--red-500);\n  --danger-bg-subtle: light-dark(var(--red-100), var(--red-900));\n  --danger-bg-muted: light-dark(var(--red-200), var(--red-800));\n  --danger-border: light-dark(var(--red-300), var(--red-600));\n  --danger-focus-ring: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  --danger-contrast: var(--white);\n  --warning-base: var(--yellow-500);\n  --warning-text: light-dark(var(--yellow-700), var(--yellow-400));\n  --warning-text-emphasis: light-dark(var(--yellow-800), var(--yellow-300));\n  --warning-bg: var(--yellow-500);\n  --warning-bg-subtle: light-dark(var(--yellow-100), var(--yellow-900));\n  --warning-bg-muted: light-dark(var(--yellow-200), var(--yellow-800));\n  --warning-border: light-dark(var(--yellow-300), var(--yellow-600));\n  --warning-focus-ring: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  --warning-contrast: var(--gray-900);\n  --info-base: var(--cyan-500);\n  --info-text: light-dark(var(--cyan-600), var(--cyan-400));\n  --info-text-emphasis: light-dark(var(--cyan-800), var(--cyan-300));\n  --info-bg: var(--cyan-500);\n  --info-bg-subtle: light-dark(var(--cyan-100), var(--cyan-900));\n  --info-bg-muted: light-dark(var(--cyan-200), var(--cyan-800));\n  --info-border: light-dark(var(--cyan-300), var(--cyan-600));\n  --info-focus-ring: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  --info-contrast: var(--gray-900);\n  --inverse-base: var(--gray-900);\n  --inverse-text: light-dark(var(--gray-900), var(--gray-200));\n  --inverse-text-emphasis: light-dark(var(--gray-975), var(--white));\n  --inverse-bg: light-dark(var(--gray-900), var(--gray-025));\n  --inverse-bg-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --inverse-bg-muted: light-dark(var(--gray-200), var(--gray-300));\n  --inverse-border: light-dark(var(--gray-400), var(--gray-100));\n  --inverse-focus-ring: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  --inverse-contrast: light-dark(var(--white), var(--gray-900));\n  --secondary-base: var(--gray-200);\n  --secondary-text: light-dark(var(--gray-600), var(--gray-400));\n  --secondary-text-emphasis: light-dark(var(--gray-800), var(--gray-200));\n  --secondary-bg: light-dark(var(--gray-100), var(--gray-600));\n  --secondary-bg-subtle: light-dark(var(--gray-050), var(--gray-800));\n  --secondary-bg-muted: light-dark(var(--gray-100), var(--gray-700));\n  --secondary-border: light-dark(var(--gray-300), var(--gray-600));\n  --secondary-focus-ring: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  --secondary-contrast: light-dark(var(--gray-900), var(--white));\n  --bg-body: light-dark(var(--white), var(--gray-975));\n  --bg-1: light-dark(var(--gray-025), var(--gray-950));\n  --bg-2: light-dark(var(--gray-050), var(--gray-900));\n  --bg-3: light-dark(var(--gray-100), var(--gray-800));\n  --bg-4: light-dark(var(--gray-200), var(--gray-700));\n  --bg-white: var(--white);\n  --bg-black: var(--black);\n  --bg-transparent: transparent;\n  --bg-inherit: inherit;\n  --fg-body: light-dark(var(--gray-900), var(--gray-050));\n  --fg-1: light-dark(var(--gray-800), var(--gray-200));\n  --fg-2: light-dark(var(--gray-700), var(--gray-300));\n  --fg-3: light-dark(var(--gray-600), var(--gray-500));\n  --fg-4: light-dark(var(--gray-500), var(--gray-600));\n  --fg-white: var(--white);\n  --fg-black: var(--black);\n  --fg-inherit: inherit;\n  --border-bg: var(--bg-body);\n  --border-body: light-dark(var(--gray-300), var(--gray-800));\n  --border-muted: light-dark(var(--gray-200), var(--gray-800));\n  --border-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --border-emphasized: light-dark(var(--gray-400), var(--gray-600));\n  --border-white: var(--white);\n  --border-black: var(--black);\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 1024px;\n  --breakpoint-xl: 1280px;\n  --breakpoint-2xl: 1536px;\n  color-scheme: light dark;\n}\n\n[data-bs-theme=dark] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=light] {\n  color-scheme: light;\n}\n\n@layer helpers {\n  .focus-ring:focus-visible {\n    outline: var(--focus-ring);\n  }\n}\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: 0.375rem;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, 0.5));\n    text-underline-offset: 0.25em;\n    backface-visibility: hidden;\n  }\n  .icon-link > .bi {\n    flex-shrink: 0;\n    width: 1em;\n    height: 1em;\n    fill: currentcolor;\n    transition: 0.2s ease-in-out transform;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .icon-link > .bi {\n      transition: none;\n    }\n  }\n  .icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {\n    transform: var(--icon-link-transform, translate3d(0.25em, 0, 0));\n  }\n}\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: 1030;\n  }\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: 1030;\n  }\n  .sticky-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n  .sticky-bottom {\n    position: sticky;\n    bottom: 0;\n    z-index: 1020;\n  }\n  @media (width >= 576px) {\n    .sticky-sm-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-sm-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 768px) {\n    .sticky-md-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-md-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1024px) {\n    .sticky-lg-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-lg-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1280px) {\n    .sticky-xl-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-xl-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1536px) {\n    .sticky-2xl-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-2xl-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n}\n@layer helpers {\n  .stack-container {\n    container-type: inline-size;\n  }\n  [class*=hstack],\n  [class*=vstack] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n  .vstack {\n    --stack-direction: column;\n    --stack-align-items: stretch;\n  }\n  .hstack {\n    --stack-direction: row;\n    --stack-align-items: flex-start;\n  }\n  @container (width >= 576px) {\n    .vstack-sm {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 576px) {\n    .hstack-sm {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 768px) {\n    .vstack-md {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 768px) {\n    .hstack-md {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1024px) {\n    .vstack-lg {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1024px) {\n    .hstack-lg {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1280px) {\n    .vstack-xl {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1280px) {\n    .hstack-xl {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1536px) {\n    .vstack-2xl {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1536px) {\n    .hstack-2xl {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n}\n@layer helpers {\n  .theme-primary {\n    --theme-base: var(--primary-base);\n    --theme-text: var(--primary-text);\n    --theme-text-emphasis: var(--primary-text-emphasis);\n    --theme-bg: var(--primary-bg);\n    --theme-bg-subtle: var(--primary-bg-subtle);\n    --theme-bg-muted: var(--primary-bg-muted);\n    --theme-border: var(--primary-border);\n    --theme-focus-ring: var(--primary-focus-ring);\n    --theme-contrast: var(--primary-contrast);\n  }\n  .theme-accent {\n    --theme-base: var(--accent-base);\n    --theme-text: var(--accent-text);\n    --theme-text-emphasis: var(--accent-text-emphasis);\n    --theme-bg: var(--accent-bg);\n    --theme-bg-subtle: var(--accent-bg-subtle);\n    --theme-bg-muted: var(--accent-bg-muted);\n    --theme-border: var(--accent-border);\n    --theme-focus-ring: var(--accent-focus-ring);\n    --theme-contrast: var(--accent-contrast);\n  }\n  .theme-success {\n    --theme-base: var(--success-base);\n    --theme-text: var(--success-text);\n    --theme-text-emphasis: var(--success-text-emphasis);\n    --theme-bg: var(--success-bg);\n    --theme-bg-subtle: var(--success-bg-subtle);\n    --theme-bg-muted: var(--success-bg-muted);\n    --theme-border: var(--success-border);\n    --theme-focus-ring: var(--success-focus-ring);\n    --theme-contrast: var(--success-contrast);\n  }\n  .theme-danger {\n    --theme-base: var(--danger-base);\n    --theme-text: var(--danger-text);\n    --theme-text-emphasis: var(--danger-text-emphasis);\n    --theme-bg: var(--danger-bg);\n    --theme-bg-subtle: var(--danger-bg-subtle);\n    --theme-bg-muted: var(--danger-bg-muted);\n    --theme-border: var(--danger-border);\n    --theme-focus-ring: var(--danger-focus-ring);\n    --theme-contrast: var(--danger-contrast);\n  }\n  .theme-warning {\n    --theme-base: var(--warning-base);\n    --theme-text: var(--warning-text);\n    --theme-text-emphasis: var(--warning-text-emphasis);\n    --theme-bg: var(--warning-bg);\n    --theme-bg-subtle: var(--warning-bg-subtle);\n    --theme-bg-muted: var(--warning-bg-muted);\n    --theme-border: var(--warning-border);\n    --theme-focus-ring: var(--warning-focus-ring);\n    --theme-contrast: var(--warning-contrast);\n  }\n  .theme-info {\n    --theme-base: var(--info-base);\n    --theme-text: var(--info-text);\n    --theme-text-emphasis: var(--info-text-emphasis);\n    --theme-bg: var(--info-bg);\n    --theme-bg-subtle: var(--info-bg-subtle);\n    --theme-bg-muted: var(--info-bg-muted);\n    --theme-border: var(--info-border);\n    --theme-focus-ring: var(--info-focus-ring);\n    --theme-contrast: var(--info-contrast);\n  }\n  .theme-inverse {\n    --theme-base: var(--inverse-base);\n    --theme-text: var(--inverse-text);\n    --theme-text-emphasis: var(--inverse-text-emphasis);\n    --theme-bg: var(--inverse-bg);\n    --theme-bg-subtle: var(--inverse-bg-subtle);\n    --theme-bg-muted: var(--inverse-bg-muted);\n    --theme-border: var(--inverse-border);\n    --theme-focus-ring: var(--inverse-focus-ring);\n    --theme-contrast: var(--inverse-contrast);\n  }\n  .theme-secondary {\n    --theme-base: var(--secondary-base);\n    --theme-text: var(--secondary-text);\n    --theme-text-emphasis: var(--secondary-text-emphasis);\n    --theme-bg: var(--secondary-bg);\n    --theme-bg-subtle: var(--secondary-bg-subtle);\n    --theme-bg-muted: var(--secondary-bg-muted);\n    --theme-border: var(--secondary-border);\n    --theme-focus-ring: var(--secondary-focus-ring);\n    --theme-contrast: var(--secondary-contrast);\n  }\n}\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) {\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border: 0 !important;\n  }\n  .visually-hidden:not(caption),\n  .visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {\n    position: absolute !important;\n  }\n  .visually-hidden *,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) * {\n    overflow: hidden !important;\n  }\n}\n@layer helpers {\n  .stretched-link::after {\n    position: absolute;\n    inset: 0;\n    z-index: 1;\n    content: \"\";\n  }\n}\n@layer helpers {\n  .text-truncate {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n@layer utilities {\n  .align-baseline {\n    vertical-align: baseline;\n  }\n  .align-top {\n    vertical-align: top;\n  }\n  .align-middle {\n    vertical-align: middle;\n  }\n  .align-bottom {\n    vertical-align: bottom;\n  }\n  .align-text-bottom {\n    vertical-align: text-bottom;\n  }\n  .align-text-top {\n    vertical-align: text-top;\n  }\n  [class*=ratio-] {\n    aspect-ratio: var(--ratio);\n  }\n  .ratio-auto {\n    --ratio: auto;\n  }\n  .ratio-1x1 {\n    --ratio: 1 / 1;\n  }\n  .ratio-4x3 {\n    --ratio: 4 / 3;\n  }\n  .ratio-16x9 {\n    --ratio: 16 / 9;\n  }\n  .ratio-21x9 {\n    --ratio: 21 / 9;\n  }\n  .float-start {\n    float: inline-start;\n  }\n  .float-end {\n    float: inline-end;\n  }\n  .float-none {\n    float: none;\n  }\n  .object-fit-contain {\n    object-fit: contain;\n  }\n  .object-fit-cover {\n    object-fit: cover;\n  }\n  .object-fit-fill {\n    object-fit: fill;\n  }\n  .object-fit-scale {\n    object-fit: scale-down;\n  }\n  .object-fit-none {\n    object-fit: none;\n  }\n  .opacity-0 {\n    opacity: 0;\n  }\n  .opacity-25 {\n    opacity: 0.25;\n  }\n  .opacity-50 {\n    opacity: 0.5;\n  }\n  .opacity-75 {\n    opacity: 0.75;\n  }\n  .opacity-100 {\n    opacity: 1;\n  }\n  .overflow-auto {\n    overflow: auto;\n  }\n  .overflow-hidden {\n    overflow: hidden;\n  }\n  .overflow-visible {\n    overflow: visible;\n  }\n  .overflow-scroll {\n    overflow: scroll;\n  }\n  .overflow-x-auto {\n    overflow-x: auto;\n  }\n  .overflow-x-hidden {\n    overflow-x: hidden;\n  }\n  .overflow-x-visible {\n    overflow-x: visible;\n  }\n  .overflow-x-scroll {\n    overflow-x: scroll;\n  }\n  .overflow-y-auto {\n    overflow-y: auto;\n  }\n  .overflow-y-hidden {\n    overflow-y: hidden;\n  }\n  .overflow-y-visible {\n    overflow-y: visible;\n  }\n  .overflow-y-scroll {\n    overflow-y: scroll;\n  }\n  .d-inline {\n    display: inline;\n  }\n  .d-inline-block {\n    display: inline-block;\n  }\n  .d-block {\n    display: block;\n  }\n  .d-grid {\n    display: grid;\n  }\n  .d-inline-grid {\n    display: inline-grid;\n  }\n  .d-table {\n    display: table;\n  }\n  .d-table-row {\n    display: table-row;\n  }\n  .d-table-cell {\n    display: table-cell;\n  }\n  .d-flex {\n    display: flex;\n  }\n  .d-inline-flex {\n    display: inline-flex;\n  }\n  .d-contents {\n    display: contents;\n  }\n  .d-flow-root {\n    display: flow-root;\n  }\n  .d-none {\n    display: none;\n  }\n  .shadow {\n    box-shadow: var(--box-shadow);\n  }\n  .shadow-sm {\n    box-shadow: var(--box-shadow-sm);\n  }\n  .shadow-lg {\n    box-shadow: var(--box-shadow-lg);\n  }\n  .shadow-none {\n    box-shadow: none;\n  }\n  .focus-ring-primary {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-accent {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-success {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-danger {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-warning {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  }\n  .focus-ring-info {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-inverse {\n    --focus-ring-color: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  }\n  .focus-ring-secondary {\n    --focus-ring-color: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  }\n  .position-static {\n    position: static;\n  }\n  .position-relative {\n    position: relative;\n  }\n  .position-absolute {\n    position: absolute;\n  }\n  .position-fixed {\n    position: fixed;\n  }\n  .position-sticky {\n    position: sticky;\n  }\n  .top-0 {\n    top: 0;\n  }\n  .top-50 {\n    top: 50%;\n  }\n  .top-100 {\n    top: 100%;\n  }\n  .bottom-0 {\n    bottom: 0;\n  }\n  .bottom-50 {\n    bottom: 50%;\n  }\n  .bottom-100 {\n    bottom: 100%;\n  }\n  .start-0 {\n    left: 0;\n  }\n  .start-50 {\n    left: 50%;\n  }\n  .start-100 {\n    left: 100%;\n  }\n  .end-0 {\n    right: 0;\n  }\n  .end-50 {\n    right: 50%;\n  }\n  .end-100 {\n    right: 100%;\n  }\n  .translate-middle {\n    transform: translate(-50%, -50%);\n  }\n  .translate-middle-x {\n    transform: translateX(-50%);\n  }\n  .translate-middle-y {\n    transform: translateY(-50%);\n  }\n  .border {\n    border: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-0 {\n    border: 0;\n  }\n  .border-top {\n    border-block-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-top-0 {\n    border-block-start: 0;\n  }\n  .border-end {\n    border-inline-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-end-0 {\n    border-inline-end: 0;\n  }\n  .border-bottom {\n    border-block-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-bottom-0 {\n    border-block-end: 0;\n  }\n  .border-start {\n    border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-start-0 {\n    border-inline-start: 0;\n  }\n  .border-block {\n    border-block: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-block-0 {\n    border-block: 0;\n  }\n  .border-inline {\n    border-inline: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-inline-0 {\n    border-inline: 0;\n  }\n  .border-primary {\n    --border-color: var(--blue-500);\n    border-color: var(--border-color);\n  }\n  .border-accent {\n    --border-color: var(--indigo-500);\n    border-color: var(--border-color);\n  }\n  .border-success {\n    --border-color: var(--green-500);\n    border-color: var(--border-color);\n  }\n  .border-danger {\n    --border-color: var(--red-500);\n    border-color: var(--border-color);\n  }\n  .border-warning {\n    --border-color: var(--yellow-500);\n    border-color: var(--border-color);\n  }\n  .border-info {\n    --border-color: var(--cyan-500);\n    border-color: var(--border-color);\n  }\n  .border-inverse {\n    --border-color: light-dark(var(--gray-900), var(--gray-025));\n    border-color: var(--border-color);\n  }\n  .border-secondary {\n    --border-color: light-dark(var(--gray-100), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-bg {\n    --border-color: var(--bg-body);\n    border-color: var(--border-color);\n  }\n  .border-body {\n    --border-color: light-dark(var(--gray-300), var(--gray-800));\n    border-color: var(--border-color);\n  }\n  .border-muted {\n    --border-color: light-dark(var(--gray-200), var(--gray-800));\n    border-color: var(--border-color);\n  }\n  .border-subtle {\n    --border-color: light-dark(var(--gray-100), var(--gray-900));\n    border-color: var(--border-color);\n  }\n  .border-emphasized {\n    --border-color: light-dark(var(--gray-400), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-white {\n    --border-color: var(--white);\n    border-color: var(--border-color);\n  }\n  .border-black {\n    --border-color: var(--black);\n    border-color: var(--border-color);\n  }\n  .border-subtle-primary {\n    --border-color: light-dark(var(--blue-300), var(--blue-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-accent {\n    --border-color: light-dark(var(--indigo-300), var(--indigo-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-success {\n    --border-color: light-dark(var(--green-300), var(--green-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-danger {\n    --border-color: light-dark(var(--red-300), var(--red-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-warning {\n    --border-color: light-dark(var(--yellow-300), var(--yellow-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-info {\n    --border-color: light-dark(var(--cyan-300), var(--cyan-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-inverse {\n    --border-color: light-dark(var(--gray-400), var(--gray-100));\n    border-color: var(--border-color);\n  }\n  .border-subtle-secondary {\n    --border-color: light-dark(var(--gray-300), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-1 {\n    border-width: 1px;\n  }\n  .border-2 {\n    border-width: 2px;\n  }\n  .border-3 {\n    border-width: 3px;\n  }\n  .border-4 {\n    border-width: 4px;\n  }\n  .border-5 {\n    border-width: 5px;\n  }\n  .border-10 {\n    border-color: color-mix(in oklch, var(--border-color) 10%, transparent);\n  }\n  .border-20 {\n    border-color: color-mix(in oklch, var(--border-color) 20%, transparent);\n  }\n  .border-30 {\n    border-color: color-mix(in oklch, var(--border-color) 30%, transparent);\n  }\n  .border-40 {\n    border-color: color-mix(in oklch, var(--border-color) 40%, transparent);\n  }\n  .border-50 {\n    border-color: color-mix(in oklch, var(--border-color) 50%, transparent);\n  }\n  .border-60 {\n    border-color: color-mix(in oklch, var(--border-color) 60%, transparent);\n  }\n  .border-70 {\n    border-color: color-mix(in oklch, var(--border-color) 70%, transparent);\n  }\n  .border-80 {\n    border-color: color-mix(in oklch, var(--border-color) 80%, transparent);\n  }\n  .border-90 {\n    border-color: color-mix(in oklch, var(--border-color) 90%, transparent);\n  }\n  .border-100 {\n    border-color: var(--border-color);\n  }\n  .w-1 {\n    width: 1rem;\n  }\n  .w-2 {\n    width: 2rem;\n  }\n  .w-3 {\n    width: 3rem;\n  }\n  .w-4 {\n    width: 4rem;\n  }\n  .w-5 {\n    width: 5rem;\n  }\n  .w-6 {\n    width: 6rem;\n  }\n  .w-7 {\n    width: 7rem;\n  }\n  .w-8 {\n    width: 8rem;\n  }\n  .w-9 {\n    width: 9rem;\n  }\n  .w-10 {\n    width: 10rem;\n  }\n  .w-11 {\n    width: 11rem;\n  }\n  .w-12 {\n    width: 12rem;\n  }\n  .w-25 {\n    width: 25%;\n  }\n  .w-50 {\n    width: 50%;\n  }\n  .w-75 {\n    width: 75%;\n  }\n  .w-100 {\n    width: 100%;\n  }\n  .w-auto {\n    width: auto;\n  }\n  .w-min {\n    width: min-content;\n  }\n  .w-max {\n    width: max-content;\n  }\n  .w-fit {\n    width: fit-content;\n  }\n  .max-w-100 {\n    max-width: 100%;\n  }\n  .min-w-0 {\n    min-width: 0;\n  }\n  .min-w-100 {\n    min-width: 100%;\n  }\n  .vw-100 {\n    width: 100vw;\n  }\n  .min-vw-100 {\n    min-width: 100vw;\n  }\n  .h-25 {\n    height: 25%;\n  }\n  .h-50 {\n    height: 50%;\n  }\n  .h-75 {\n    height: 75%;\n  }\n  .h-100 {\n    height: 100%;\n  }\n  .h-auto {\n    height: auto;\n  }\n  .h-min {\n    height: min-content;\n  }\n  .h-max {\n    height: max-content;\n  }\n  .h-fit {\n    height: fit-content;\n  }\n  .max-h-100 {\n    max-height: 100%;\n  }\n  .min-h-0 {\n    min-height: 0;\n  }\n  .min-h-100 {\n    min-height: 100%;\n  }\n  .vh-100 {\n    height: 100vh;\n  }\n  .min-vh-100 {\n    min-height: 100vh;\n  }\n  .flex-fill {\n    flex: 1 1 auto;\n  }\n  .flex-row {\n    flex-direction: row;\n  }\n  .flex-column {\n    flex-direction: column;\n  }\n  .flex-row-reverse {\n    flex-direction: row-reverse;\n  }\n  .flex-column-reverse {\n    flex-direction: column-reverse;\n  }\n  .flex-grow-0 {\n    flex-grow: 0;\n  }\n  .flex-grow-1 {\n    flex-grow: 1;\n  }\n  .flex-shrink-0 {\n    flex-shrink: 0;\n  }\n  .flex-shrink-1 {\n    flex-shrink: 1;\n  }\n  .flex-wrap {\n    flex-wrap: wrap;\n  }\n  .flex-nowrap {\n    flex-wrap: nowrap;\n  }\n  .flex-wrap-reverse {\n    flex-wrap: wrap-reverse;\n  }\n  .justify-content-start {\n    justify-content: flex-start;\n  }\n  .justify-content-end {\n    justify-content: flex-end;\n  }\n  .justify-content-center {\n    justify-content: center;\n  }\n  .justify-content-between {\n    justify-content: space-between;\n  }\n  .justify-content-around {\n    justify-content: space-around;\n  }\n  .justify-content-evenly {\n    justify-content: space-evenly;\n  }\n  .justify-items-start {\n    justify-items: start;\n  }\n  .justify-items-end {\n    justify-items: end;\n  }\n  .justify-items-center {\n    justify-items: center;\n  }\n  .justify-items-stretch {\n    justify-items: stretch;\n  }\n  .justify-self-start {\n    justify-self: flex-start;\n  }\n  .justify-self-end {\n    justify-self: flex-end;\n  }\n  .justify-self-center {\n    justify-self: center;\n  }\n  .align-items-start {\n    align-items: flex-start;\n  }\n  .align-items-end {\n    align-items: flex-end;\n  }\n  .align-items-center {\n    align-items: center;\n  }\n  .align-items-baseline {\n    align-items: baseline;\n  }\n  .align-items-stretch {\n    align-items: stretch;\n  }\n  .align-content-start {\n    align-content: flex-start;\n  }\n  .align-content-end {\n    align-content: flex-end;\n  }\n  .align-content-center {\n    align-content: center;\n  }\n  .align-content-between {\n    align-content: space-between;\n  }\n  .align-content-around {\n    align-content: space-around;\n  }\n  .align-content-stretch {\n    align-content: stretch;\n  }\n  .align-self-auto {\n    align-self: auto;\n  }\n  .align-self-start {\n    align-self: flex-start;\n  }\n  .align-self-end {\n    align-self: flex-end;\n  }\n  .align-self-center {\n    align-self: center;\n  }\n  .align-self-baseline {\n    align-self: baseline;\n  }\n  .align-self-stretch {\n    align-self: stretch;\n  }\n  .place-items-start {\n    place-items: start;\n  }\n  .place-items-end {\n    place-items: end;\n  }\n  .place-items-center {\n    place-items: center;\n  }\n  .place-items-stretch {\n    place-items: stretch;\n  }\n  .grid-cols-2 {\n    grid-template-columns: repeat(2, 1fr);\n  }\n  .grid-cols-3 {\n    grid-template-columns: repeat(3, 1fr);\n  }\n  .grid-cols-4 {\n    grid-template-columns: repeat(4, 1fr);\n  }\n  .grid-cols-6 {\n    grid-template-columns: repeat(6, 1fr);\n  }\n  .grid-cols-fill {\n    grid-column: 1 / -1;\n  }\n  .grid-auto-flow-row {\n    grid-auto-flow: row;\n  }\n  .grid-auto-flow-column {\n    grid-auto-flow: column;\n  }\n  .grid-auto-flow-dense {\n    grid-auto-flow: dense;\n  }\n  .order-first {\n    order: -1;\n  }\n  .order-0 {\n    order: 0;\n  }\n  .order-1 {\n    order: 1;\n  }\n  .order-2 {\n    order: 2;\n  }\n  .order-3 {\n    order: 3;\n  }\n  .order-4 {\n    order: 4;\n  }\n  .order-5 {\n    order: 5;\n  }\n  .order-last {\n    order: 6;\n  }\n  .m-0 {\n    margin: 0;\n  }\n  .m-1 {\n    margin: 0.25rem;\n  }\n  .m-2 {\n    margin: 0.5rem;\n  }\n  .m-3 {\n    margin: 1rem;\n  }\n  .m-4 {\n    margin: 1.5rem;\n  }\n  .m-5 {\n    margin: 3rem;\n  }\n  .m-auto {\n    margin: auto;\n  }\n  .mx-0 {\n    margin-inline: 0;\n  }\n  .mx-1 {\n    margin-inline: 0.25rem;\n  }\n  .mx-2 {\n    margin-inline: 0.5rem;\n  }\n  .mx-3 {\n    margin-inline: 1rem;\n  }\n  .mx-4 {\n    margin-inline: 1.5rem;\n  }\n  .mx-5 {\n    margin-inline: 3rem;\n  }\n  .mx-auto {\n    margin-inline: auto;\n  }\n  .my-0 {\n    margin-block: 0;\n  }\n  .my-1 {\n    margin-block: 0.25rem;\n  }\n  .my-2 {\n    margin-block: 0.5rem;\n  }\n  .my-3 {\n    margin-block: 1rem;\n  }\n  .my-4 {\n    margin-block: 1.5rem;\n  }\n  .my-5 {\n    margin-block: 3rem;\n  }\n  .my-auto {\n    margin-block: auto;\n  }\n  .mt-0 {\n    margin-block-start: 0;\n  }\n  .mt-1 {\n    margin-block-start: 0.25rem;\n  }\n  .mt-2 {\n    margin-block-start: 0.5rem;\n  }\n  .mt-3 {\n    margin-block-start: 1rem;\n  }\n  .mt-4 {\n    margin-block-start: 1.5rem;\n  }\n  .mt-5 {\n    margin-block-start: 3rem;\n  }\n  .mt-auto {\n    margin-block-start: auto;\n  }\n  .me-0 {\n    margin-inline-end: 0;\n  }\n  .me-1 {\n    margin-inline-end: 0.25rem;\n  }\n  .me-2 {\n    margin-inline-end: 0.5rem;\n  }\n  .me-3 {\n    margin-inline-end: 1rem;\n  }\n  .me-4 {\n    margin-inline-end: 1.5rem;\n  }\n  .me-5 {\n    margin-inline-end: 3rem;\n  }\n  .me-auto {\n    margin-inline-end: auto;\n  }\n  .mb-0 {\n    margin-block-end: 0;\n  }\n  .mb-1 {\n    margin-block-end: 0.25rem;\n  }\n  .mb-2 {\n    margin-block-end: 0.5rem;\n  }\n  .mb-3 {\n    margin-block-end: 1rem;\n  }\n  .mb-4 {\n    margin-block-end: 1.5rem;\n  }\n  .mb-5 {\n    margin-block-end: 3rem;\n  }\n  .mb-auto {\n    margin-block-end: auto;\n  }\n  .ms-0 {\n    margin-inline-start: 0;\n  }\n  .ms-1 {\n    margin-inline-start: 0.25rem;\n  }\n  .ms-2 {\n    margin-inline-start: 0.5rem;\n  }\n  .ms-3 {\n    margin-inline-start: 1rem;\n  }\n  .ms-4 {\n    margin-inline-start: 1.5rem;\n  }\n  .ms-5 {\n    margin-inline-start: 3rem;\n  }\n  .ms--1 {\n    margin-inline-start: -0.25rem;\n  }\n  .ms--2 {\n    margin-inline-start: -0.5rem;\n  }\n  .ms-auto {\n    margin-inline-start: auto;\n  }\n  .p-0 {\n    padding: 0;\n  }\n  .p-1 {\n    padding: 0.25rem;\n  }\n  .p-2 {\n    padding: 0.5rem;\n  }\n  .p-3 {\n    padding: 1rem;\n  }\n  .p-4 {\n    padding: 1.5rem;\n  }\n  .p-5 {\n    padding: 3rem;\n  }\n  .px-0 {\n    padding-inline: 0;\n  }\n  .px-1 {\n    padding-inline: 0.25rem;\n  }\n  .px-2 {\n    padding-inline: 0.5rem;\n  }\n  .px-3 {\n    padding-inline: 1rem;\n  }\n  .px-4 {\n    padding-inline: 1.5rem;\n  }\n  .px-5 {\n    padding-inline: 3rem;\n  }\n  .py-0 {\n    padding-block: 0;\n  }\n  .py-1 {\n    padding-block: 0.25rem;\n  }\n  .py-2 {\n    padding-block: 0.5rem;\n  }\n  .py-3 {\n    padding-block: 1rem;\n  }\n  .py-4 {\n    padding-block: 1.5rem;\n  }\n  .py-5 {\n    padding-block: 3rem;\n  }\n  .pt-0 {\n    padding-block-start: 0;\n  }\n  .pt-1 {\n    padding-block-start: 0.25rem;\n  }\n  .pt-2 {\n    padding-block-start: 0.5rem;\n  }\n  .pt-3 {\n    padding-block-start: 1rem;\n  }\n  .pt-4 {\n    padding-block-start: 1.5rem;\n  }\n  .pt-5 {\n    padding-block-start: 3rem;\n  }\n  .pe-0 {\n    padding-inline-end: 0;\n  }\n  .pe-1 {\n    padding-inline-end: 0.25rem;\n  }\n  .pe-2 {\n    padding-inline-end: 0.5rem;\n  }\n  .pe-3 {\n    padding-inline-end: 1rem;\n  }\n  .pe-4 {\n    padding-inline-end: 1.5rem;\n  }\n  .pe-5 {\n    padding-inline-end: 3rem;\n  }\n  .pb-0 {\n    padding-block-end: 0;\n  }\n  .pb-1 {\n    padding-block-end: 0.25rem;\n  }\n  .pb-2 {\n    padding-block-end: 0.5rem;\n  }\n  .pb-3 {\n    padding-block-end: 1rem;\n  }\n  .pb-4 {\n    padding-block-end: 1.5rem;\n  }\n  .pb-5 {\n    padding-block-end: 3rem;\n  }\n  .ps-0 {\n    padding-inline-start: 0;\n  }\n  .ps-1 {\n    padding-inline-start: 0.25rem;\n  }\n  .ps-2 {\n    padding-inline-start: 0.5rem;\n  }\n  .ps-3 {\n    padding-inline-start: 1rem;\n  }\n  .ps-4 {\n    padding-inline-start: 1.5rem;\n  }\n  .ps-5 {\n    padding-inline-start: 3rem;\n  }\n  .gap-0 {\n    gap: 0;\n  }\n  .gap-1 {\n    gap: 0.25rem;\n  }\n  .gap-2 {\n    gap: 0.5rem;\n  }\n  .gap-3 {\n    gap: 1rem;\n  }\n  .gap-4 {\n    gap: 1.5rem;\n  }\n  .gap-5 {\n    gap: 3rem;\n  }\n  .row-gap-0 {\n    row-gap: 0;\n  }\n  .row-gap-1 {\n    row-gap: 0.25rem;\n  }\n  .row-gap-2 {\n    row-gap: 0.5rem;\n  }\n  .row-gap-3 {\n    row-gap: 1rem;\n  }\n  .row-gap-4 {\n    row-gap: 1.5rem;\n  }\n  .row-gap-5 {\n    row-gap: 3rem;\n  }\n  .column-gap-0 {\n    column-gap: 0;\n  }\n  .column-gap-1 {\n    column-gap: 0.25rem;\n  }\n  .column-gap-2 {\n    column-gap: 0.5rem;\n  }\n  .column-gap-3 {\n    column-gap: 1rem;\n  }\n  .column-gap-4 {\n    column-gap: 1.5rem;\n  }\n  .column-gap-5 {\n    column-gap: 3rem;\n  }\n  .font-monospace {\n    font-family: var(--font-mono);\n  }\n  .font-body {\n    font-family: var(--body-font-family);\n  }\n  .fs-xs {\n    font-size: 0.75rem;\n  }\n  .fs-sm {\n    font-size: 0.875rem;\n  }\n  .fs-md {\n    font-size: 1rem;\n  }\n  .fs-lg {\n    font-size: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  }\n  .fs-xl {\n    font-size: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  }\n  .fs-2xl {\n    font-size: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  }\n  .fs-3xl {\n    font-size: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  }\n  .fs-4xl {\n    font-size: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  }\n  .fs-5xl {\n    font-size: clamp(3rem, 2rem + 5vw, 4rem);\n  }\n  .fs-6xl {\n    font-size: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  }\n  .text-xs {\n    font-size: 0.75rem;\n    line-height: 1.25;\n  }\n  .text-sm {\n    font-size: 0.875rem;\n    line-height: 1.5;\n  }\n  .text-md {\n    font-size: 1rem;\n    line-height: 1.5;\n  }\n  .text-lg {\n    font-size: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n    line-height: 1.5;\n  }\n  .text-xl {\n    font-size: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n    line-height: 1.4285714286;\n  }\n  .text-2xl {\n    font-size: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n    line-height: 1.3333333333;\n  }\n  .text-3xl {\n    font-size: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n    line-height: 1.2;\n  }\n  .text-4xl {\n    font-size: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n    line-height: 1.1;\n  }\n  .text-5xl {\n    font-size: clamp(3rem, 2rem + 5vw, 4rem);\n    line-height: 1.1;\n  }\n  .text-6xl {\n    font-size: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n    line-height: 1;\n  }\n  .fst-italic {\n    font-style: italic;\n  }\n  .fst-normal {\n    font-style: normal;\n  }\n  .fw-lighter {\n    font-weight: lighter;\n  }\n  .fw-light {\n    font-weight: 300;\n  }\n  .fw-normal {\n    font-weight: 400;\n  }\n  .fw-medium {\n    font-weight: 500;\n  }\n  .fw-semibold {\n    font-weight: 600;\n  }\n  .fw-bold {\n    font-weight: 700;\n  }\n  .fw-bolder {\n    font-weight: bolder;\n  }\n  .lh-1 {\n    line-height: 1;\n  }\n  .lh-sm {\n    line-height: 1.25;\n  }\n  .lh-base {\n    line-height: 1.5;\n  }\n  .lh-lg {\n    line-height: 2;\n  }\n  .text-start {\n    text-align: start;\n  }\n  .text-end {\n    text-align: end;\n  }\n  .text-center {\n    text-align: center;\n  }\n  .text-decoration-none {\n    text-decoration: none;\n  }\n  .text-decoration-underline {\n    text-decoration: underline;\n  }\n  .text-decoration-line-through {\n    text-decoration: line-through;\n  }\n  .text-lowercase {\n    text-transform: lowercase;\n  }\n  .text-uppercase {\n    text-transform: uppercase;\n  }\n  .text-capitalize {\n    text-transform: capitalize;\n  }\n  .text-wrap {\n    white-space: wrap;\n  }\n  .text-nowrap {\n    white-space: nowrap;\n  }\n  .text-balance {\n    white-space: balance;\n  }\n  .text-pretty {\n    white-space: pretty;\n  }\n  .text-break {\n    word-wrap: break-word;\n    word-break: break-word;\n  }\n  .fg-primary {\n    --fg: light-dark(var(--blue-600), var(--blue-400));\n    color: var(--fg);\n  }\n  .fg-accent {\n    --fg: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n    color: var(--fg);\n  }\n  .fg-success {\n    --fg: light-dark(var(--green-600), var(--green-400));\n    color: var(--fg);\n  }\n  .fg-danger {\n    --fg: light-dark(var(--red-600), var(--red-400));\n    color: var(--fg);\n  }\n  .fg-warning {\n    --fg: light-dark(var(--yellow-700), var(--yellow-400));\n    color: var(--fg);\n  }\n  .fg-info {\n    --fg: light-dark(var(--cyan-600), var(--cyan-400));\n    color: var(--fg);\n  }\n  .fg-inverse {\n    --fg: light-dark(var(--gray-900), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-secondary {\n    --fg: light-dark(var(--gray-600), var(--gray-400));\n    color: var(--fg);\n  }\n  .fg-body {\n    --fg: light-dark(var(--gray-900), var(--gray-050));\n    color: var(--fg);\n  }\n  .fg-1 {\n    --fg: light-dark(var(--gray-800), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-2 {\n    --fg: light-dark(var(--gray-700), var(--gray-300));\n    color: var(--fg);\n  }\n  .fg-3 {\n    --fg: light-dark(var(--gray-600), var(--gray-500));\n    color: var(--fg);\n  }\n  .fg-4 {\n    --fg: light-dark(var(--gray-500), var(--gray-600));\n    color: var(--fg);\n  }\n  .fg-white {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-black {\n    --fg: var(--black);\n    color: var(--fg);\n  }\n  .fg-inherit {\n    --fg: inherit;\n    color: var(--fg);\n  }\n  .fg-emphasis-primary {\n    --fg: light-dark(var(--blue-800), var(--blue-200));\n    color: var(--fg);\n  }\n  .fg-emphasis-accent {\n    --fg: light-dark(var(--indigo-800), var(--indigo-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-success {\n    --fg: light-dark(var(--green-800), var(--green-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-danger {\n    --fg: light-dark(var(--red-800), var(--red-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-warning {\n    --fg: light-dark(var(--yellow-800), var(--yellow-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-info {\n    --fg: light-dark(var(--cyan-800), var(--cyan-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-inverse {\n    --fg: light-dark(var(--gray-975), var(--white));\n    color: var(--fg);\n  }\n  .fg-emphasis-secondary {\n    --fg: light-dark(var(--gray-800), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-contrast-primary {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-accent {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-success {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-danger {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-warning {\n    --fg: var(--gray-900);\n    color: var(--fg);\n  }\n  .fg-contrast-info {\n    --fg: var(--gray-900);\n    color: var(--fg);\n  }\n  .fg-contrast-inverse {\n    --fg: light-dark(var(--white), var(--gray-900));\n    color: var(--fg);\n  }\n  .fg-contrast-secondary {\n    --fg: light-dark(var(--gray-900), var(--white));\n    color: var(--fg);\n  }\n  .fg-10 {\n    color: color-mix(in oklch, var(--fg) 10%, transparent);\n  }\n  .fg-20 {\n    color: color-mix(in oklch, var(--fg) 20%, transparent);\n  }\n  .fg-30 {\n    color: color-mix(in oklch, var(--fg) 30%, transparent);\n  }\n  .fg-40 {\n    color: color-mix(in oklch, var(--fg) 40%, transparent);\n  }\n  .fg-50 {\n    color: color-mix(in oklch, var(--fg) 50%, transparent);\n  }\n  .fg-60 {\n    color: color-mix(in oklch, var(--fg) 60%, transparent);\n  }\n  .fg-70 {\n    color: color-mix(in oklch, var(--fg) 70%, transparent);\n  }\n  .fg-80 {\n    color: color-mix(in oklch, var(--fg) 80%, transparent);\n  }\n  .fg-90 {\n    color: color-mix(in oklch, var(--fg) 90%, transparent);\n  }\n  .fg-100 {\n    color: var(--fg);\n  }\n  .link-10 {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .link-10-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .link-20 {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .link-20-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .link-30 {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .link-30-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .link-40 {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .link-40-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .link-50 {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .link-50-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .link-60 {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .link-60-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .link-70 {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .link-70-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .link-80 {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .link-80-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .link-90 {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-90-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-100 {\n    color: var(--link-color);\n  }\n  .link-100-hover:hover {\n    color: var(--link-color);\n  }\n  .underline-offset-1 {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-1-hover:hover {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-2 {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-2-hover:hover {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-3 {\n    text-underline-offset: 0.375em;\n  }\n  .underline-offset-3-hover:hover {\n    text-underline-offset: 0.375em;\n  }\n  .underline-primary {\n    text-decoration-color: light-dark(var(--blue-600), var(--blue-400));\n  }\n  .underline-accent {\n    text-decoration-color: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  }\n  .underline-success {\n    text-decoration-color: light-dark(var(--green-600), var(--green-400));\n  }\n  .underline-danger {\n    text-decoration-color: light-dark(var(--red-600), var(--red-400));\n  }\n  .underline-warning {\n    text-decoration-color: light-dark(var(--yellow-700), var(--yellow-400));\n  }\n  .underline-info {\n    text-decoration-color: light-dark(var(--cyan-600), var(--cyan-400));\n  }\n  .underline-inverse {\n    text-decoration-color: light-dark(var(--gray-900), var(--gray-200));\n  }\n  .underline-secondary {\n    text-decoration-color: light-dark(var(--gray-600), var(--gray-400));\n  }\n  .underline-10 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .underline-10-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .underline-20 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .underline-20-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .underline-30 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .underline-30-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .underline-40 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .underline-40-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .underline-50 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .underline-50-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .underline-60 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .underline-60-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .underline-70 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .underline-70-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .underline-80 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .underline-80-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .underline-90 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .underline-90-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .underline-100 {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-100-hover:hover {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-thickness-1 {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-1-hover:hover {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-2 {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-2-hover:hover {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-3 {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-3-hover:hover {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-4 {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-4-hover:hover {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-5 {\n    text-decoration-thickness: 5px;\n  }\n  .underline-thickness-5-hover:hover {\n    text-decoration-thickness: 5px;\n  }\n  .bg-primary {\n    --bg: var(--blue-500);\n    background-color: var(--bg);\n  }\n  .bg-accent {\n    --bg: var(--indigo-500);\n    background-color: var(--bg);\n  }\n  .bg-success {\n    --bg: var(--green-500);\n    background-color: var(--bg);\n  }\n  .bg-danger {\n    --bg: var(--red-500);\n    background-color: var(--bg);\n  }\n  .bg-warning {\n    --bg: var(--yellow-500);\n    background-color: var(--bg);\n  }\n  .bg-info {\n    --bg: var(--cyan-500);\n    background-color: var(--bg);\n  }\n  .bg-inverse {\n    --bg: light-dark(var(--gray-900), var(--gray-025));\n    background-color: var(--bg);\n  }\n  .bg-secondary {\n    --bg: light-dark(var(--gray-100), var(--gray-600));\n    background-color: var(--bg);\n  }\n  .bg-body {\n    --bg: light-dark(var(--white), var(--gray-975));\n    background-color: var(--bg);\n  }\n  .bg-1 {\n    --bg: light-dark(var(--gray-025), var(--gray-950));\n    background-color: var(--bg);\n  }\n  .bg-2 {\n    --bg: light-dark(var(--gray-050), var(--gray-900));\n    background-color: var(--bg);\n  }\n  .bg-3 {\n    --bg: light-dark(var(--gray-100), var(--gray-800));\n    background-color: var(--bg);\n  }\n  .bg-4 {\n    --bg: light-dark(var(--gray-200), var(--gray-700));\n    background-color: var(--bg);\n  }\n  .bg-white {\n    --bg: var(--white);\n    background-color: var(--bg);\n  }\n  .bg-black {\n    --bg: var(--black);\n    background-color: var(--bg);\n  }\n  .bg-transparent {\n    --bg: transparent;\n    background-color: var(--bg);\n  }\n  .bg-inherit {\n    --bg: inherit;\n    background-color: var(--bg);\n  }\n  .bg-subtle-primary {\n    --bg: light-dark(var(--blue-100), var(--blue-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-accent {\n    --bg: light-dark(var(--indigo-100), var(--indigo-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-success {\n    --bg: light-dark(var(--green-100), var(--green-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-danger {\n    --bg: light-dark(var(--red-100), var(--red-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-warning {\n    --bg: light-dark(var(--yellow-100), var(--yellow-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-info {\n    --bg: light-dark(var(--cyan-100), var(--cyan-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-inverse {\n    --bg: light-dark(var(--gray-100), var(--gray-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-secondary {\n    --bg: light-dark(var(--gray-050), var(--gray-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-primary {\n    --bg: light-dark(var(--blue-200), var(--blue-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-accent {\n    --bg: light-dark(var(--indigo-200), var(--indigo-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-success {\n    --bg: light-dark(var(--green-200), var(--green-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-danger {\n    --bg: light-dark(var(--red-200), var(--red-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-warning {\n    --bg: light-dark(var(--yellow-200), var(--yellow-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-info {\n    --bg: light-dark(var(--cyan-200), var(--cyan-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-inverse {\n    --bg: light-dark(var(--gray-200), var(--gray-300));\n    background-color: var(--bg);\n  }\n  .bg-muted-secondary {\n    --bg: light-dark(var(--gray-100), var(--gray-700));\n    background-color: var(--bg);\n  }\n  .bg-10 {\n    background-color: color-mix(in oklch, var(--bg) 10%, transparent);\n  }\n  .bg-20 {\n    background-color: color-mix(in oklch, var(--bg) 20%, transparent);\n  }\n  .bg-30 {\n    background-color: color-mix(in oklch, var(--bg) 30%, transparent);\n  }\n  .bg-40 {\n    background-color: color-mix(in oklch, var(--bg) 40%, transparent);\n  }\n  .bg-50 {\n    background-color: color-mix(in oklch, var(--bg) 50%, transparent);\n  }\n  .bg-60 {\n    background-color: color-mix(in oklch, var(--bg) 60%, transparent);\n  }\n  .bg-70 {\n    background-color: color-mix(in oklch, var(--bg) 70%, transparent);\n  }\n  .bg-80 {\n    background-color: color-mix(in oklch, var(--bg) 80%, transparent);\n  }\n  .bg-90 {\n    background-color: color-mix(in oklch, var(--bg) 90%, transparent);\n  }\n  .bg-100 {\n    background-color: var(--bg);\n  }\n  .theme-contrast {\n    background-color: var(--theme-bg);\n    color: var(--theme-contrast);\n  }\n  .theme-subtle {\n    background-color: var(--theme-bg-subtle);\n    color: var(--theme-text);\n  }\n  .theme-muted {\n    background-color: var(--theme-bg-muted);\n    color: var(--theme-text-emphasis);\n  }\n  .theme-border {\n    border: var(--border-width) solid var(--theme-border);\n  }\n  .bg-gradient {\n    background-image: var(--gradient);\n  }\n  .user-select-all {\n    user-select: all;\n  }\n  .user-select-auto {\n    user-select: auto;\n  }\n  .user-select-text {\n    user-select: text;\n  }\n  .user-select-none {\n    user-select: none;\n  }\n  .pe-none {\n    pointer-events: none;\n  }\n  .pe-auto {\n    pointer-events: auto;\n  }\n  .rounded {\n    border-radius: var(--border-radius);\n  }\n  .rounded-0 {\n    border-radius: 0;\n  }\n  .rounded-1 {\n    border-radius: var(--border-radius-sm);\n  }\n  .rounded-2 {\n    border-radius: var(--border-radius);\n  }\n  .rounded-3 {\n    border-radius: var(--border-radius-lg);\n  }\n  .rounded-4 {\n    border-radius: var(--border-radius-xl);\n  }\n  .rounded-5 {\n    border-radius: var(--border-radius-2xl);\n  }\n  .rounded-circle {\n    border-radius: 50%;\n  }\n  .rounded-pill {\n    border-radius: var(--border-radius-pill);\n  }\n  .rounded-top {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-top-0 {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .rounded-top-1 {\n    border-start-start-radius: var(--border-radius-sm);\n    border-start-end-radius: var(--border-radius-sm);\n  }\n  .rounded-top-2 {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-top-3 {\n    border-start-start-radius: var(--border-radius-lg);\n    border-start-end-radius: var(--border-radius-lg);\n  }\n  .rounded-top-4 {\n    border-start-start-radius: var(--border-radius-xl);\n    border-start-end-radius: var(--border-radius-xl);\n  }\n  .rounded-top-5 {\n    border-start-start-radius: var(--border-radius-2xl);\n    border-start-end-radius: var(--border-radius-2xl);\n  }\n  .rounded-top-circle {\n    border-start-start-radius: 50%;\n    border-start-end-radius: 50%;\n  }\n  .rounded-top-pill {\n    border-start-start-radius: var(--border-radius-pill);\n    border-start-end-radius: var(--border-radius-pill);\n  }\n  .rounded-end {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-end-0 {\n    border-end-end-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-end-1 {\n    border-end-end-radius: var(--border-radius-sm);\n    border-end-start-radius: var(--border-radius-sm);\n  }\n  .rounded-end-2 {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-end-3 {\n    border-end-end-radius: var(--border-radius-lg);\n    border-end-start-radius: var(--border-radius-lg);\n  }\n  .rounded-end-4 {\n    border-end-end-radius: var(--border-radius-xl);\n    border-end-start-radius: var(--border-radius-xl);\n  }\n  .rounded-end-5 {\n    border-end-end-radius: var(--border-radius-2xl);\n    border-end-start-radius: var(--border-radius-2xl);\n  }\n  .rounded-end-circle {\n    border-end-end-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-end-pill {\n    border-end-end-radius: var(--border-radius-pill);\n    border-end-start-radius: var(--border-radius-pill);\n  }\n  .rounded-bottom {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-bottom-0 {\n    border-end-end-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-bottom-1 {\n    border-end-end-radius: var(--border-radius-sm);\n    border-end-start-radius: var(--border-radius-sm);\n  }\n  .rounded-bottom-2 {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-bottom-3 {\n    border-end-end-radius: var(--border-radius-lg);\n    border-end-start-radius: var(--border-radius-lg);\n  }\n  .rounded-bottom-4 {\n    border-end-end-radius: var(--border-radius-xl);\n    border-end-start-radius: var(--border-radius-xl);\n  }\n  .rounded-bottom-5 {\n    border-end-end-radius: var(--border-radius-2xl);\n    border-end-start-radius: var(--border-radius-2xl);\n  }\n  .rounded-bottom-circle {\n    border-end-end-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-bottom-pill {\n    border-end-end-radius: var(--border-radius-pill);\n    border-end-start-radius: var(--border-radius-pill);\n  }\n  .rounded-start {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-start-0 {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .rounded-start-1 {\n    border-start-start-radius: var(--border-radius-sm);\n    border-start-end-radius: var(--border-radius-sm);\n  }\n  .rounded-start-2 {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-start-3 {\n    border-start-start-radius: var(--border-radius-lg);\n    border-start-end-radius: var(--border-radius-lg);\n  }\n  .rounded-start-4 {\n    border-start-start-radius: var(--border-radius-xl);\n    border-start-end-radius: var(--border-radius-xl);\n  }\n  .rounded-start-5 {\n    border-start-start-radius: var(--border-radius-2xl);\n    border-start-end-radius: var(--border-radius-2xl);\n  }\n  .rounded-start-circle {\n    border-start-start-radius: 50%;\n    border-start-end-radius: 50%;\n  }\n  .rounded-start-pill {\n    border-start-start-radius: var(--border-radius-pill);\n    border-start-end-radius: var(--border-radius-pill);\n  }\n  .visible {\n    visibility: visible;\n  }\n  .invisible {\n    visibility: hidden;\n  }\n  .z-n1 {\n    z-index: -1;\n  }\n  .z-0 {\n    z-index: 0;\n  }\n  .z-1 {\n    z-index: 1;\n  }\n  .z-2 {\n    z-index: 2;\n  }\n  .z-3 {\n    z-index: 3;\n  }\n  @media (width >= 576px) {\n    .float-sm-start {\n      float: inline-start;\n    }\n    .float-sm-end {\n      float: inline-end;\n    }\n    .float-sm-none {\n      float: none;\n    }\n    .object-fit-sm-contain {\n      object-fit: contain;\n    }\n    .object-fit-sm-cover {\n      object-fit: cover;\n    }\n    .object-fit-sm-fill {\n      object-fit: fill;\n    }\n    .object-fit-sm-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-sm-none {\n      object-fit: none;\n    }\n    .d-sm-inline {\n      display: inline;\n    }\n    .d-sm-inline-block {\n      display: inline-block;\n    }\n    .d-sm-block {\n      display: block;\n    }\n    .d-sm-grid {\n      display: grid;\n    }\n    .d-sm-inline-grid {\n      display: inline-grid;\n    }\n    .d-sm-table {\n      display: table;\n    }\n    .d-sm-table-row {\n      display: table-row;\n    }\n    .d-sm-table-cell {\n      display: table-cell;\n    }\n    .d-sm-flex {\n      display: flex;\n    }\n    .d-sm-inline-flex {\n      display: inline-flex;\n    }\n    .d-sm-contents {\n      display: contents;\n    }\n    .d-sm-flow-root {\n      display: flow-root;\n    }\n    .d-sm-none {\n      display: none;\n    }\n    .flex-sm-fill {\n      flex: 1 1 auto;\n    }\n    .flex-sm-row {\n      flex-direction: row;\n    }\n    .flex-sm-column {\n      flex-direction: column;\n    }\n    .flex-sm-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-sm-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-sm-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-sm-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-sm-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-sm-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-sm-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-sm-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-sm-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-sm-start {\n      justify-content: flex-start;\n    }\n    .justify-content-sm-end {\n      justify-content: flex-end;\n    }\n    .justify-content-sm-center {\n      justify-content: center;\n    }\n    .justify-content-sm-between {\n      justify-content: space-between;\n    }\n    .justify-content-sm-around {\n      justify-content: space-around;\n    }\n    .justify-content-sm-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-sm-start {\n      justify-items: start;\n    }\n    .justify-items-sm-end {\n      justify-items: end;\n    }\n    .justify-items-sm-center {\n      justify-items: center;\n    }\n    .justify-items-sm-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-sm-start {\n      justify-self: flex-start;\n    }\n    .justify-self-sm-end {\n      justify-self: flex-end;\n    }\n    .justify-self-sm-center {\n      justify-self: center;\n    }\n    .align-items-sm-start {\n      align-items: flex-start;\n    }\n    .align-items-sm-end {\n      align-items: flex-end;\n    }\n    .align-items-sm-center {\n      align-items: center;\n    }\n    .align-items-sm-baseline {\n      align-items: baseline;\n    }\n    .align-items-sm-stretch {\n      align-items: stretch;\n    }\n    .align-content-sm-start {\n      align-content: flex-start;\n    }\n    .align-content-sm-end {\n      align-content: flex-end;\n    }\n    .align-content-sm-center {\n      align-content: center;\n    }\n    .align-content-sm-between {\n      align-content: space-between;\n    }\n    .align-content-sm-around {\n      align-content: space-around;\n    }\n    .align-content-sm-stretch {\n      align-content: stretch;\n    }\n    .align-self-sm-auto {\n      align-self: auto;\n    }\n    .align-self-sm-start {\n      align-self: flex-start;\n    }\n    .align-self-sm-end {\n      align-self: flex-end;\n    }\n    .align-self-sm-center {\n      align-self: center;\n    }\n    .align-self-sm-baseline {\n      align-self: baseline;\n    }\n    .align-self-sm-stretch {\n      align-self: stretch;\n    }\n    .place-items-sm-start {\n      place-items: start;\n    }\n    .place-items-sm-end {\n      place-items: end;\n    }\n    .place-items-sm-center {\n      place-items: center;\n    }\n    .place-items-sm-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-sm-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .grid-cols-sm-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .grid-cols-sm-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .grid-cols-sm-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .grid-cols-sm-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-sm-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-sm-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-sm-dense {\n      grid-auto-flow: dense;\n    }\n    .order-sm-first {\n      order: -1;\n    }\n    .order-sm-0 {\n      order: 0;\n    }\n    .order-sm-1 {\n      order: 1;\n    }\n    .order-sm-2 {\n      order: 2;\n    }\n    .order-sm-3 {\n      order: 3;\n    }\n    .order-sm-4 {\n      order: 4;\n    }\n    .order-sm-5 {\n      order: 5;\n    }\n    .order-sm-last {\n      order: 6;\n    }\n    .m-sm-0 {\n      margin: 0;\n    }\n    .m-sm-1 {\n      margin: 0.25rem;\n    }\n    .m-sm-2 {\n      margin: 0.5rem;\n    }\n    .m-sm-3 {\n      margin: 1rem;\n    }\n    .m-sm-4 {\n      margin: 1.5rem;\n    }\n    .m-sm-5 {\n      margin: 3rem;\n    }\n    .m-sm-auto {\n      margin: auto;\n    }\n    .mx-sm-0 {\n      margin-inline: 0;\n    }\n    .mx-sm-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-sm-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-sm-3 {\n      margin-inline: 1rem;\n    }\n    .mx-sm-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-sm-5 {\n      margin-inline: 3rem;\n    }\n    .mx-sm-auto {\n      margin-inline: auto;\n    }\n    .my-sm-0 {\n      margin-block: 0;\n    }\n    .my-sm-1 {\n      margin-block: 0.25rem;\n    }\n    .my-sm-2 {\n      margin-block: 0.5rem;\n    }\n    .my-sm-3 {\n      margin-block: 1rem;\n    }\n    .my-sm-4 {\n      margin-block: 1.5rem;\n    }\n    .my-sm-5 {\n      margin-block: 3rem;\n    }\n    .my-sm-auto {\n      margin-block: auto;\n    }\n    .mt-sm-0 {\n      margin-block-start: 0;\n    }\n    .mt-sm-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-sm-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-sm-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-sm-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-sm-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-sm-auto {\n      margin-block-start: auto;\n    }\n    .me-sm-0 {\n      margin-inline-end: 0;\n    }\n    .me-sm-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-sm-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-sm-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-sm-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-sm-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-sm-auto {\n      margin-inline-end: auto;\n    }\n    .mb-sm-0 {\n      margin-block-end: 0;\n    }\n    .mb-sm-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-sm-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-sm-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-sm-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-sm-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-sm-auto {\n      margin-block-end: auto;\n    }\n    .ms-sm-0 {\n      margin-inline-start: 0;\n    }\n    .ms-sm-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-sm-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-sm-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-sm-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-sm-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-sm--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-sm--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-sm-auto {\n      margin-inline-start: auto;\n    }\n    .p-sm-0 {\n      padding: 0;\n    }\n    .p-sm-1 {\n      padding: 0.25rem;\n    }\n    .p-sm-2 {\n      padding: 0.5rem;\n    }\n    .p-sm-3 {\n      padding: 1rem;\n    }\n    .p-sm-4 {\n      padding: 1.5rem;\n    }\n    .p-sm-5 {\n      padding: 3rem;\n    }\n    .px-sm-0 {\n      padding-inline: 0;\n    }\n    .px-sm-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-sm-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-sm-3 {\n      padding-inline: 1rem;\n    }\n    .px-sm-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-sm-5 {\n      padding-inline: 3rem;\n    }\n    .py-sm-0 {\n      padding-block: 0;\n    }\n    .py-sm-1 {\n      padding-block: 0.25rem;\n    }\n    .py-sm-2 {\n      padding-block: 0.5rem;\n    }\n    .py-sm-3 {\n      padding-block: 1rem;\n    }\n    .py-sm-4 {\n      padding-block: 1.5rem;\n    }\n    .py-sm-5 {\n      padding-block: 3rem;\n    }\n    .pt-sm-0 {\n      padding-block-start: 0;\n    }\n    .pt-sm-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-sm-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-sm-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-sm-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-sm-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-sm-0 {\n      padding-inline-end: 0;\n    }\n    .pe-sm-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-sm-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-sm-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-sm-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-sm-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-sm-0 {\n      padding-block-end: 0;\n    }\n    .pb-sm-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-sm-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-sm-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-sm-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-sm-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-sm-0 {\n      padding-inline-start: 0;\n    }\n    .ps-sm-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-sm-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-sm-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-sm-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-sm-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-sm-0 {\n      gap: 0;\n    }\n    .gap-sm-1 {\n      gap: 0.25rem;\n    }\n    .gap-sm-2 {\n      gap: 0.5rem;\n    }\n    .gap-sm-3 {\n      gap: 1rem;\n    }\n    .gap-sm-4 {\n      gap: 1.5rem;\n    }\n    .gap-sm-5 {\n      gap: 3rem;\n    }\n    .row-gap-sm-0 {\n      row-gap: 0;\n    }\n    .row-gap-sm-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-sm-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-sm-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-sm-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-sm-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-sm-0 {\n      column-gap: 0;\n    }\n    .column-gap-sm-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-sm-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-sm-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-sm-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-sm-5 {\n      column-gap: 3rem;\n    }\n    .text-sm-start {\n      text-align: start;\n    }\n    .text-sm-end {\n      text-align: end;\n    }\n    .text-sm-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 768px) {\n    .float-md-start {\n      float: inline-start;\n    }\n    .float-md-end {\n      float: inline-end;\n    }\n    .float-md-none {\n      float: none;\n    }\n    .object-fit-md-contain {\n      object-fit: contain;\n    }\n    .object-fit-md-cover {\n      object-fit: cover;\n    }\n    .object-fit-md-fill {\n      object-fit: fill;\n    }\n    .object-fit-md-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-md-none {\n      object-fit: none;\n    }\n    .d-md-inline {\n      display: inline;\n    }\n    .d-md-inline-block {\n      display: inline-block;\n    }\n    .d-md-block {\n      display: block;\n    }\n    .d-md-grid {\n      display: grid;\n    }\n    .d-md-inline-grid {\n      display: inline-grid;\n    }\n    .d-md-table {\n      display: table;\n    }\n    .d-md-table-row {\n      display: table-row;\n    }\n    .d-md-table-cell {\n      display: table-cell;\n    }\n    .d-md-flex {\n      display: flex;\n    }\n    .d-md-inline-flex {\n      display: inline-flex;\n    }\n    .d-md-contents {\n      display: contents;\n    }\n    .d-md-flow-root {\n      display: flow-root;\n    }\n    .d-md-none {\n      display: none;\n    }\n    .flex-md-fill {\n      flex: 1 1 auto;\n    }\n    .flex-md-row {\n      flex-direction: row;\n    }\n    .flex-md-column {\n      flex-direction: column;\n    }\n    .flex-md-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-md-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-md-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-md-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-md-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-md-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-md-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-md-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-md-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-md-start {\n      justify-content: flex-start;\n    }\n    .justify-content-md-end {\n      justify-content: flex-end;\n    }\n    .justify-content-md-center {\n      justify-content: center;\n    }\n    .justify-content-md-between {\n      justify-content: space-between;\n    }\n    .justify-content-md-around {\n      justify-content: space-around;\n    }\n    .justify-content-md-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-md-start {\n      justify-items: start;\n    }\n    .justify-items-md-end {\n      justify-items: end;\n    }\n    .justify-items-md-center {\n      justify-items: center;\n    }\n    .justify-items-md-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-md-start {\n      justify-self: flex-start;\n    }\n    .justify-self-md-end {\n      justify-self: flex-end;\n    }\n    .justify-self-md-center {\n      justify-self: center;\n    }\n    .align-items-md-start {\n      align-items: flex-start;\n    }\n    .align-items-md-end {\n      align-items: flex-end;\n    }\n    .align-items-md-center {\n      align-items: center;\n    }\n    .align-items-md-baseline {\n      align-items: baseline;\n    }\n    .align-items-md-stretch {\n      align-items: stretch;\n    }\n    .align-content-md-start {\n      align-content: flex-start;\n    }\n    .align-content-md-end {\n      align-content: flex-end;\n    }\n    .align-content-md-center {\n      align-content: center;\n    }\n    .align-content-md-between {\n      align-content: space-between;\n    }\n    .align-content-md-around {\n      align-content: space-around;\n    }\n    .align-content-md-stretch {\n      align-content: stretch;\n    }\n    .align-self-md-auto {\n      align-self: auto;\n    }\n    .align-self-md-start {\n      align-self: flex-start;\n    }\n    .align-self-md-end {\n      align-self: flex-end;\n    }\n    .align-self-md-center {\n      align-self: center;\n    }\n    .align-self-md-baseline {\n      align-self: baseline;\n    }\n    .align-self-md-stretch {\n      align-self: stretch;\n    }\n    .place-items-md-start {\n      place-items: start;\n    }\n    .place-items-md-end {\n      place-items: end;\n    }\n    .place-items-md-center {\n      place-items: center;\n    }\n    .place-items-md-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-md-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .grid-cols-md-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .grid-cols-md-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .grid-cols-md-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .grid-cols-md-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-md-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-md-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-md-dense {\n      grid-auto-flow: dense;\n    }\n    .order-md-first {\n      order: -1;\n    }\n    .order-md-0 {\n      order: 0;\n    }\n    .order-md-1 {\n      order: 1;\n    }\n    .order-md-2 {\n      order: 2;\n    }\n    .order-md-3 {\n      order: 3;\n    }\n    .order-md-4 {\n      order: 4;\n    }\n    .order-md-5 {\n      order: 5;\n    }\n    .order-md-last {\n      order: 6;\n    }\n    .m-md-0 {\n      margin: 0;\n    }\n    .m-md-1 {\n      margin: 0.25rem;\n    }\n    .m-md-2 {\n      margin: 0.5rem;\n    }\n    .m-md-3 {\n      margin: 1rem;\n    }\n    .m-md-4 {\n      margin: 1.5rem;\n    }\n    .m-md-5 {\n      margin: 3rem;\n    }\n    .m-md-auto {\n      margin: auto;\n    }\n    .mx-md-0 {\n      margin-inline: 0;\n    }\n    .mx-md-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-md-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-md-3 {\n      margin-inline: 1rem;\n    }\n    .mx-md-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-md-5 {\n      margin-inline: 3rem;\n    }\n    .mx-md-auto {\n      margin-inline: auto;\n    }\n    .my-md-0 {\n      margin-block: 0;\n    }\n    .my-md-1 {\n      margin-block: 0.25rem;\n    }\n    .my-md-2 {\n      margin-block: 0.5rem;\n    }\n    .my-md-3 {\n      margin-block: 1rem;\n    }\n    .my-md-4 {\n      margin-block: 1.5rem;\n    }\n    .my-md-5 {\n      margin-block: 3rem;\n    }\n    .my-md-auto {\n      margin-block: auto;\n    }\n    .mt-md-0 {\n      margin-block-start: 0;\n    }\n    .mt-md-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-md-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-md-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-md-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-md-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-md-auto {\n      margin-block-start: auto;\n    }\n    .me-md-0 {\n      margin-inline-end: 0;\n    }\n    .me-md-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-md-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-md-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-md-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-md-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-md-auto {\n      margin-inline-end: auto;\n    }\n    .mb-md-0 {\n      margin-block-end: 0;\n    }\n    .mb-md-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-md-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-md-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-md-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-md-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-md-auto {\n      margin-block-end: auto;\n    }\n    .ms-md-0 {\n      margin-inline-start: 0;\n    }\n    .ms-md-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-md-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-md-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-md-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-md-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-md--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-md--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-md-auto {\n      margin-inline-start: auto;\n    }\n    .p-md-0 {\n      padding: 0;\n    }\n    .p-md-1 {\n      padding: 0.25rem;\n    }\n    .p-md-2 {\n      padding: 0.5rem;\n    }\n    .p-md-3 {\n      padding: 1rem;\n    }\n    .p-md-4 {\n      padding: 1.5rem;\n    }\n    .p-md-5 {\n      padding: 3rem;\n    }\n    .px-md-0 {\n      padding-inline: 0;\n    }\n    .px-md-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-md-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-md-3 {\n      padding-inline: 1rem;\n    }\n    .px-md-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-md-5 {\n      padding-inline: 3rem;\n    }\n    .py-md-0 {\n      padding-block: 0;\n    }\n    .py-md-1 {\n      padding-block: 0.25rem;\n    }\n    .py-md-2 {\n      padding-block: 0.5rem;\n    }\n    .py-md-3 {\n      padding-block: 1rem;\n    }\n    .py-md-4 {\n      padding-block: 1.5rem;\n    }\n    .py-md-5 {\n      padding-block: 3rem;\n    }\n    .pt-md-0 {\n      padding-block-start: 0;\n    }\n    .pt-md-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-md-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-md-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-md-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-md-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-md-0 {\n      padding-inline-end: 0;\n    }\n    .pe-md-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-md-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-md-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-md-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-md-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-md-0 {\n      padding-block-end: 0;\n    }\n    .pb-md-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-md-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-md-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-md-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-md-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-md-0 {\n      padding-inline-start: 0;\n    }\n    .ps-md-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-md-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-md-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-md-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-md-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-md-0 {\n      gap: 0;\n    }\n    .gap-md-1 {\n      gap: 0.25rem;\n    }\n    .gap-md-2 {\n      gap: 0.5rem;\n    }\n    .gap-md-3 {\n      gap: 1rem;\n    }\n    .gap-md-4 {\n      gap: 1.5rem;\n    }\n    .gap-md-5 {\n      gap: 3rem;\n    }\n    .row-gap-md-0 {\n      row-gap: 0;\n    }\n    .row-gap-md-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-md-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-md-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-md-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-md-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-md-0 {\n      column-gap: 0;\n    }\n    .column-gap-md-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-md-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-md-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-md-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-md-5 {\n      column-gap: 3rem;\n    }\n    .text-md-start {\n      text-align: start;\n    }\n    .text-md-end {\n      text-align: end;\n    }\n    .text-md-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1024px) {\n    .float-lg-start {\n      float: inline-start;\n    }\n    .float-lg-end {\n      float: inline-end;\n    }\n    .float-lg-none {\n      float: none;\n    }\n    .object-fit-lg-contain {\n      object-fit: contain;\n    }\n    .object-fit-lg-cover {\n      object-fit: cover;\n    }\n    .object-fit-lg-fill {\n      object-fit: fill;\n    }\n    .object-fit-lg-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-lg-none {\n      object-fit: none;\n    }\n    .d-lg-inline {\n      display: inline;\n    }\n    .d-lg-inline-block {\n      display: inline-block;\n    }\n    .d-lg-block {\n      display: block;\n    }\n    .d-lg-grid {\n      display: grid;\n    }\n    .d-lg-inline-grid {\n      display: inline-grid;\n    }\n    .d-lg-table {\n      display: table;\n    }\n    .d-lg-table-row {\n      display: table-row;\n    }\n    .d-lg-table-cell {\n      display: table-cell;\n    }\n    .d-lg-flex {\n      display: flex;\n    }\n    .d-lg-inline-flex {\n      display: inline-flex;\n    }\n    .d-lg-contents {\n      display: contents;\n    }\n    .d-lg-flow-root {\n      display: flow-root;\n    }\n    .d-lg-none {\n      display: none;\n    }\n    .flex-lg-fill {\n      flex: 1 1 auto;\n    }\n    .flex-lg-row {\n      flex-direction: row;\n    }\n    .flex-lg-column {\n      flex-direction: column;\n    }\n    .flex-lg-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-lg-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-lg-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-lg-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-lg-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-lg-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-lg-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-lg-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-lg-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-lg-start {\n      justify-content: flex-start;\n    }\n    .justify-content-lg-end {\n      justify-content: flex-end;\n    }\n    .justify-content-lg-center {\n      justify-content: center;\n    }\n    .justify-content-lg-between {\n      justify-content: space-between;\n    }\n    .justify-content-lg-around {\n      justify-content: space-around;\n    }\n    .justify-content-lg-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-lg-start {\n      justify-items: start;\n    }\n    .justify-items-lg-end {\n      justify-items: end;\n    }\n    .justify-items-lg-center {\n      justify-items: center;\n    }\n    .justify-items-lg-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-lg-start {\n      justify-self: flex-start;\n    }\n    .justify-self-lg-end {\n      justify-self: flex-end;\n    }\n    .justify-self-lg-center {\n      justify-self: center;\n    }\n    .align-items-lg-start {\n      align-items: flex-start;\n    }\n    .align-items-lg-end {\n      align-items: flex-end;\n    }\n    .align-items-lg-center {\n      align-items: center;\n    }\n    .align-items-lg-baseline {\n      align-items: baseline;\n    }\n    .align-items-lg-stretch {\n      align-items: stretch;\n    }\n    .align-content-lg-start {\n      align-content: flex-start;\n    }\n    .align-content-lg-end {\n      align-content: flex-end;\n    }\n    .align-content-lg-center {\n      align-content: center;\n    }\n    .align-content-lg-between {\n      align-content: space-between;\n    }\n    .align-content-lg-around {\n      align-content: space-around;\n    }\n    .align-content-lg-stretch {\n      align-content: stretch;\n    }\n    .align-self-lg-auto {\n      align-self: auto;\n    }\n    .align-self-lg-start {\n      align-self: flex-start;\n    }\n    .align-self-lg-end {\n      align-self: flex-end;\n    }\n    .align-self-lg-center {\n      align-self: center;\n    }\n    .align-self-lg-baseline {\n      align-self: baseline;\n    }\n    .align-self-lg-stretch {\n      align-self: stretch;\n    }\n    .place-items-lg-start {\n      place-items: start;\n    }\n    .place-items-lg-end {\n      place-items: end;\n    }\n    .place-items-lg-center {\n      place-items: center;\n    }\n    .place-items-lg-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-lg-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .grid-cols-lg-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .grid-cols-lg-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .grid-cols-lg-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .grid-cols-lg-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-lg-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-lg-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-lg-dense {\n      grid-auto-flow: dense;\n    }\n    .order-lg-first {\n      order: -1;\n    }\n    .order-lg-0 {\n      order: 0;\n    }\n    .order-lg-1 {\n      order: 1;\n    }\n    .order-lg-2 {\n      order: 2;\n    }\n    .order-lg-3 {\n      order: 3;\n    }\n    .order-lg-4 {\n      order: 4;\n    }\n    .order-lg-5 {\n      order: 5;\n    }\n    .order-lg-last {\n      order: 6;\n    }\n    .m-lg-0 {\n      margin: 0;\n    }\n    .m-lg-1 {\n      margin: 0.25rem;\n    }\n    .m-lg-2 {\n      margin: 0.5rem;\n    }\n    .m-lg-3 {\n      margin: 1rem;\n    }\n    .m-lg-4 {\n      margin: 1.5rem;\n    }\n    .m-lg-5 {\n      margin: 3rem;\n    }\n    .m-lg-auto {\n      margin: auto;\n    }\n    .mx-lg-0 {\n      margin-inline: 0;\n    }\n    .mx-lg-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-lg-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-lg-3 {\n      margin-inline: 1rem;\n    }\n    .mx-lg-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-lg-5 {\n      margin-inline: 3rem;\n    }\n    .mx-lg-auto {\n      margin-inline: auto;\n    }\n    .my-lg-0 {\n      margin-block: 0;\n    }\n    .my-lg-1 {\n      margin-block: 0.25rem;\n    }\n    .my-lg-2 {\n      margin-block: 0.5rem;\n    }\n    .my-lg-3 {\n      margin-block: 1rem;\n    }\n    .my-lg-4 {\n      margin-block: 1.5rem;\n    }\n    .my-lg-5 {\n      margin-block: 3rem;\n    }\n    .my-lg-auto {\n      margin-block: auto;\n    }\n    .mt-lg-0 {\n      margin-block-start: 0;\n    }\n    .mt-lg-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-lg-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-lg-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-lg-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-lg-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-lg-auto {\n      margin-block-start: auto;\n    }\n    .me-lg-0 {\n      margin-inline-end: 0;\n    }\n    .me-lg-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-lg-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-lg-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-lg-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-lg-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-lg-auto {\n      margin-inline-end: auto;\n    }\n    .mb-lg-0 {\n      margin-block-end: 0;\n    }\n    .mb-lg-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-lg-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-lg-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-lg-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-lg-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-lg-auto {\n      margin-block-end: auto;\n    }\n    .ms-lg-0 {\n      margin-inline-start: 0;\n    }\n    .ms-lg-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-lg-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-lg-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-lg-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-lg-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-lg--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-lg--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-lg-auto {\n      margin-inline-start: auto;\n    }\n    .p-lg-0 {\n      padding: 0;\n    }\n    .p-lg-1 {\n      padding: 0.25rem;\n    }\n    .p-lg-2 {\n      padding: 0.5rem;\n    }\n    .p-lg-3 {\n      padding: 1rem;\n    }\n    .p-lg-4 {\n      padding: 1.5rem;\n    }\n    .p-lg-5 {\n      padding: 3rem;\n    }\n    .px-lg-0 {\n      padding-inline: 0;\n    }\n    .px-lg-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-lg-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-lg-3 {\n      padding-inline: 1rem;\n    }\n    .px-lg-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-lg-5 {\n      padding-inline: 3rem;\n    }\n    .py-lg-0 {\n      padding-block: 0;\n    }\n    .py-lg-1 {\n      padding-block: 0.25rem;\n    }\n    .py-lg-2 {\n      padding-block: 0.5rem;\n    }\n    .py-lg-3 {\n      padding-block: 1rem;\n    }\n    .py-lg-4 {\n      padding-block: 1.5rem;\n    }\n    .py-lg-5 {\n      padding-block: 3rem;\n    }\n    .pt-lg-0 {\n      padding-block-start: 0;\n    }\n    .pt-lg-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-lg-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-lg-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-lg-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-lg-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-lg-0 {\n      padding-inline-end: 0;\n    }\n    .pe-lg-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-lg-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-lg-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-lg-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-lg-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-lg-0 {\n      padding-block-end: 0;\n    }\n    .pb-lg-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-lg-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-lg-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-lg-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-lg-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-lg-0 {\n      padding-inline-start: 0;\n    }\n    .ps-lg-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-lg-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-lg-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-lg-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-lg-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-lg-0 {\n      gap: 0;\n    }\n    .gap-lg-1 {\n      gap: 0.25rem;\n    }\n    .gap-lg-2 {\n      gap: 0.5rem;\n    }\n    .gap-lg-3 {\n      gap: 1rem;\n    }\n    .gap-lg-4 {\n      gap: 1.5rem;\n    }\n    .gap-lg-5 {\n      gap: 3rem;\n    }\n    .row-gap-lg-0 {\n      row-gap: 0;\n    }\n    .row-gap-lg-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-lg-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-lg-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-lg-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-lg-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-lg-0 {\n      column-gap: 0;\n    }\n    .column-gap-lg-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-lg-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-lg-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-lg-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-lg-5 {\n      column-gap: 3rem;\n    }\n    .text-lg-start {\n      text-align: start;\n    }\n    .text-lg-end {\n      text-align: end;\n    }\n    .text-lg-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1280px) {\n    .float-xl-start {\n      float: inline-start;\n    }\n    .float-xl-end {\n      float: inline-end;\n    }\n    .float-xl-none {\n      float: none;\n    }\n    .object-fit-xl-contain {\n      object-fit: contain;\n    }\n    .object-fit-xl-cover {\n      object-fit: cover;\n    }\n    .object-fit-xl-fill {\n      object-fit: fill;\n    }\n    .object-fit-xl-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-xl-none {\n      object-fit: none;\n    }\n    .d-xl-inline {\n      display: inline;\n    }\n    .d-xl-inline-block {\n      display: inline-block;\n    }\n    .d-xl-block {\n      display: block;\n    }\n    .d-xl-grid {\n      display: grid;\n    }\n    .d-xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-xl-table {\n      display: table;\n    }\n    .d-xl-table-row {\n      display: table-row;\n    }\n    .d-xl-table-cell {\n      display: table-cell;\n    }\n    .d-xl-flex {\n      display: flex;\n    }\n    .d-xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-xl-contents {\n      display: contents;\n    }\n    .d-xl-flow-root {\n      display: flow-root;\n    }\n    .d-xl-none {\n      display: none;\n    }\n    .flex-xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-xl-row {\n      flex-direction: row;\n    }\n    .flex-xl-column {\n      flex-direction: column;\n    }\n    .flex-xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-xl-center {\n      justify-content: center;\n    }\n    .justify-content-xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-xl-start {\n      justify-items: start;\n    }\n    .justify-items-xl-end {\n      justify-items: end;\n    }\n    .justify-items-xl-center {\n      justify-items: center;\n    }\n    .justify-items-xl-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-xl-start {\n      justify-self: flex-start;\n    }\n    .justify-self-xl-end {\n      justify-self: flex-end;\n    }\n    .justify-self-xl-center {\n      justify-self: center;\n    }\n    .align-items-xl-start {\n      align-items: flex-start;\n    }\n    .align-items-xl-end {\n      align-items: flex-end;\n    }\n    .align-items-xl-center {\n      align-items: center;\n    }\n    .align-items-xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-xl-start {\n      align-content: flex-start;\n    }\n    .align-content-xl-end {\n      align-content: flex-end;\n    }\n    .align-content-xl-center {\n      align-content: center;\n    }\n    .align-content-xl-between {\n      align-content: space-between;\n    }\n    .align-content-xl-around {\n      align-content: space-around;\n    }\n    .align-content-xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-xl-auto {\n      align-self: auto;\n    }\n    .align-self-xl-start {\n      align-self: flex-start;\n    }\n    .align-self-xl-end {\n      align-self: flex-end;\n    }\n    .align-self-xl-center {\n      align-self: center;\n    }\n    .align-self-xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-xl-start {\n      place-items: start;\n    }\n    .place-items-xl-end {\n      place-items: end;\n    }\n    .place-items-xl-center {\n      place-items: center;\n    }\n    .place-items-xl-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-xl-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .grid-cols-xl-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .grid-cols-xl-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .grid-cols-xl-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .grid-cols-xl-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-xl-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-xl-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-xl-dense {\n      grid-auto-flow: dense;\n    }\n    .order-xl-first {\n      order: -1;\n    }\n    .order-xl-0 {\n      order: 0;\n    }\n    .order-xl-1 {\n      order: 1;\n    }\n    .order-xl-2 {\n      order: 2;\n    }\n    .order-xl-3 {\n      order: 3;\n    }\n    .order-xl-4 {\n      order: 4;\n    }\n    .order-xl-5 {\n      order: 5;\n    }\n    .order-xl-last {\n      order: 6;\n    }\n    .m-xl-0 {\n      margin: 0;\n    }\n    .m-xl-1 {\n      margin: 0.25rem;\n    }\n    .m-xl-2 {\n      margin: 0.5rem;\n    }\n    .m-xl-3 {\n      margin: 1rem;\n    }\n    .m-xl-4 {\n      margin: 1.5rem;\n    }\n    .m-xl-5 {\n      margin: 3rem;\n    }\n    .m-xl-auto {\n      margin: auto;\n    }\n    .mx-xl-0 {\n      margin-inline: 0;\n    }\n    .mx-xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-xl-auto {\n      margin-inline: auto;\n    }\n    .my-xl-0 {\n      margin-block: 0;\n    }\n    .my-xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-xl-3 {\n      margin-block: 1rem;\n    }\n    .my-xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-xl-5 {\n      margin-block: 3rem;\n    }\n    .my-xl-auto {\n      margin-block: auto;\n    }\n    .mt-xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-xl-auto {\n      margin-block-start: auto;\n    }\n    .me-xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-xl-0 {\n      padding: 0;\n    }\n    .p-xl-1 {\n      padding: 0.25rem;\n    }\n    .p-xl-2 {\n      padding: 0.5rem;\n    }\n    .p-xl-3 {\n      padding: 1rem;\n    }\n    .p-xl-4 {\n      padding: 1.5rem;\n    }\n    .p-xl-5 {\n      padding: 3rem;\n    }\n    .px-xl-0 {\n      padding-inline: 0;\n    }\n    .px-xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-xl-0 {\n      padding-block: 0;\n    }\n    .py-xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-xl-3 {\n      padding-block: 1rem;\n    }\n    .py-xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-xl-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-xl-0 {\n      gap: 0;\n    }\n    .gap-xl-1 {\n      gap: 0.25rem;\n    }\n    .gap-xl-2 {\n      gap: 0.5rem;\n    }\n    .gap-xl-3 {\n      gap: 1rem;\n    }\n    .gap-xl-4 {\n      gap: 1.5rem;\n    }\n    .gap-xl-5 {\n      gap: 3rem;\n    }\n    .row-gap-xl-0 {\n      row-gap: 0;\n    }\n    .row-gap-xl-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-xl-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-xl-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-xl-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-xl-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-xl-0 {\n      column-gap: 0;\n    }\n    .column-gap-xl-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-xl-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-xl-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-xl-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-xl-5 {\n      column-gap: 3rem;\n    }\n    .text-xl-start {\n      text-align: start;\n    }\n    .text-xl-end {\n      text-align: end;\n    }\n    .text-xl-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1536px) {\n    .float-2xl-start {\n      float: inline-start;\n    }\n    .float-2xl-end {\n      float: inline-end;\n    }\n    .float-2xl-none {\n      float: none;\n    }\n    .object-fit-2xl-contain {\n      object-fit: contain;\n    }\n    .object-fit-2xl-cover {\n      object-fit: cover;\n    }\n    .object-fit-2xl-fill {\n      object-fit: fill;\n    }\n    .object-fit-2xl-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-2xl-none {\n      object-fit: none;\n    }\n    .d-2xl-inline {\n      display: inline;\n    }\n    .d-2xl-inline-block {\n      display: inline-block;\n    }\n    .d-2xl-block {\n      display: block;\n    }\n    .d-2xl-grid {\n      display: grid;\n    }\n    .d-2xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-2xl-table {\n      display: table;\n    }\n    .d-2xl-table-row {\n      display: table-row;\n    }\n    .d-2xl-table-cell {\n      display: table-cell;\n    }\n    .d-2xl-flex {\n      display: flex;\n    }\n    .d-2xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-2xl-contents {\n      display: contents;\n    }\n    .d-2xl-flow-root {\n      display: flow-root;\n    }\n    .d-2xl-none {\n      display: none;\n    }\n    .flex-2xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-2xl-row {\n      flex-direction: row;\n    }\n    .flex-2xl-column {\n      flex-direction: column;\n    }\n    .flex-2xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-2xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-2xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-2xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-2xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-2xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-2xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-2xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-2xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-2xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-2xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-2xl-center {\n      justify-content: center;\n    }\n    .justify-content-2xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-2xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-2xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-2xl-start {\n      justify-items: start;\n    }\n    .justify-items-2xl-end {\n      justify-items: end;\n    }\n    .justify-items-2xl-center {\n      justify-items: center;\n    }\n    .justify-items-2xl-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-2xl-start {\n      justify-self: flex-start;\n    }\n    .justify-self-2xl-end {\n      justify-self: flex-end;\n    }\n    .justify-self-2xl-center {\n      justify-self: center;\n    }\n    .align-items-2xl-start {\n      align-items: flex-start;\n    }\n    .align-items-2xl-end {\n      align-items: flex-end;\n    }\n    .align-items-2xl-center {\n      align-items: center;\n    }\n    .align-items-2xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-2xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-2xl-start {\n      align-content: flex-start;\n    }\n    .align-content-2xl-end {\n      align-content: flex-end;\n    }\n    .align-content-2xl-center {\n      align-content: center;\n    }\n    .align-content-2xl-between {\n      align-content: space-between;\n    }\n    .align-content-2xl-around {\n      align-content: space-around;\n    }\n    .align-content-2xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-2xl-auto {\n      align-self: auto;\n    }\n    .align-self-2xl-start {\n      align-self: flex-start;\n    }\n    .align-self-2xl-end {\n      align-self: flex-end;\n    }\n    .align-self-2xl-center {\n      align-self: center;\n    }\n    .align-self-2xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-2xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-2xl-start {\n      place-items: start;\n    }\n    .place-items-2xl-end {\n      place-items: end;\n    }\n    .place-items-2xl-center {\n      place-items: center;\n    }\n    .place-items-2xl-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-2xl-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .grid-cols-2xl-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .grid-cols-2xl-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .grid-cols-2xl-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .grid-cols-2xl-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-2xl-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-2xl-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-2xl-dense {\n      grid-auto-flow: dense;\n    }\n    .order-2xl-first {\n      order: -1;\n    }\n    .order-2xl-0 {\n      order: 0;\n    }\n    .order-2xl-1 {\n      order: 1;\n    }\n    .order-2xl-2 {\n      order: 2;\n    }\n    .order-2xl-3 {\n      order: 3;\n    }\n    .order-2xl-4 {\n      order: 4;\n    }\n    .order-2xl-5 {\n      order: 5;\n    }\n    .order-2xl-last {\n      order: 6;\n    }\n    .m-2xl-0 {\n      margin: 0;\n    }\n    .m-2xl-1 {\n      margin: 0.25rem;\n    }\n    .m-2xl-2 {\n      margin: 0.5rem;\n    }\n    .m-2xl-3 {\n      margin: 1rem;\n    }\n    .m-2xl-4 {\n      margin: 1.5rem;\n    }\n    .m-2xl-5 {\n      margin: 3rem;\n    }\n    .m-2xl-auto {\n      margin: auto;\n    }\n    .mx-2xl-0 {\n      margin-inline: 0;\n    }\n    .mx-2xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-2xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-2xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-2xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-2xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-2xl-auto {\n      margin-inline: auto;\n    }\n    .my-2xl-0 {\n      margin-block: 0;\n    }\n    .my-2xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-2xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-2xl-3 {\n      margin-block: 1rem;\n    }\n    .my-2xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-2xl-5 {\n      margin-block: 3rem;\n    }\n    .my-2xl-auto {\n      margin-block: auto;\n    }\n    .mt-2xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-2xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-2xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-2xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-2xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-2xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-2xl-auto {\n      margin-block-start: auto;\n    }\n    .me-2xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-2xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-2xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-2xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-2xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-2xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-2xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-2xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-2xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-2xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-2xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-2xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-2xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-2xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-2xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-2xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-2xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-2xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-2xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-2xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-2xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-2xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-2xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-2xl-0 {\n      padding: 0;\n    }\n    .p-2xl-1 {\n      padding: 0.25rem;\n    }\n    .p-2xl-2 {\n      padding: 0.5rem;\n    }\n    .p-2xl-3 {\n      padding: 1rem;\n    }\n    .p-2xl-4 {\n      padding: 1.5rem;\n    }\n    .p-2xl-5 {\n      padding: 3rem;\n    }\n    .px-2xl-0 {\n      padding-inline: 0;\n    }\n    .px-2xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-2xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-2xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-2xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-2xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-2xl-0 {\n      padding-block: 0;\n    }\n    .py-2xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-2xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-2xl-3 {\n      padding-block: 1rem;\n    }\n    .py-2xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-2xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-2xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-2xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-2xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-2xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-2xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-2xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-2xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-2xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-2xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-2xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-2xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-2xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-2xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-2xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-2xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-2xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-2xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-2xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-2xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-2xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-2xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-2xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-2xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-2xl-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-2xl-0 {\n      gap: 0;\n    }\n    .gap-2xl-1 {\n      gap: 0.25rem;\n    }\n    .gap-2xl-2 {\n      gap: 0.5rem;\n    }\n    .gap-2xl-3 {\n      gap: 1rem;\n    }\n    .gap-2xl-4 {\n      gap: 1.5rem;\n    }\n    .gap-2xl-5 {\n      gap: 3rem;\n    }\n    .row-gap-2xl-0 {\n      row-gap: 0;\n    }\n    .row-gap-2xl-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-2xl-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-2xl-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-2xl-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-2xl-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-2xl-0 {\n      column-gap: 0;\n    }\n    .column-gap-2xl-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-2xl-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-2xl-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-2xl-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-2xl-5 {\n      column-gap: 3rem;\n    }\n    .text-2xl-start {\n      text-align: start;\n    }\n    .text-2xl-end {\n      text-align: end;\n    }\n    .text-2xl-center {\n      text-align: center;\n    }\n  }\n}\n\n/*# sourceMappingURL=bootstrap-utilities.css.map */\n","@use \"sass:map\";\n@use \"colors\" as *;\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"theme\" as *;\n@use \"mixins/tokens\" as *;\n@use \"forms/form-variables\" as *;\n\n// mdo-do: do we need theme?\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n\n$root-tokens: () !default;\n\n// scss-docs-start root-tokens\n// stylelint-disable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: defaults(\n  (\n    --black: #{$black},\n    --white: #{$white},\n\n    --gradient: #{$gradient},\n\n    // scss-docs-start root-font-weight-variables\n    --font-weight-lighter: lighter,\n    --font-weight-light: 300,\n    --font-weight-normal: 400,\n    --font-weight-medium: 500,\n    --font-weight-semibold: 600,\n    --font-weight-bold: 700,\n    --font-weight-bolder: bolder,\n    // scss-docs-end root-font-weight-variables\n\n    // scss-docs-start root-body-variables\n    --body-font-family: system-ui,\n    --body-font-size: var(--font-size-base),\n    --body-font-weight: #{$font-weight-base},\n    --body-line-height: #{$line-height-base},\n\n    --heading-color: #{$headings-color},\n\n    --hr-border-color: var(--border-color),\n\n    --link-color: light-dark(var(--primary-base), var(--primary-text)),\n    --link-decoration: #{$link-decoration},\n    --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000),\n\n    --font-mono: \"SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace\",\n    --code-font-size: 95%,\n    --code-color: var(--fg-2),\n\n    // scss-docs-start root-border-var\n    --border-width: #{$border-width},\n    --border-style: #{$border-style},\n    --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700)),\n    --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    // scss-docs-end root-border-var\n\n    // scss-docs-start root-border-radius-var\n    --border-radius: .5rem,\n    --border-radius-xs: .375rem,\n    --border-radius-sm: .5rem,\n    --border-radius-lg: .75rem,\n    --border-radius-xl: 1rem,\n    --border-radius-2xl: 2rem,\n    --border-radius-pill: 50rem,\n    // scss-docs-end root-border-radius-var\n\n    // scss-docs-start root-box-shadow-variables\n    --box-shadow: 0 .5rem 1rem rgb(0 0 0 / 15%),\n    --box-shadow-sm: 0 .125rem .25rem rgb(0 0 0 / 7.5%),\n    --box-shadow-lg: 0 1rem 3rem rgb(0 0 0 / 17.5%),\n    --box-shadow-inset: inset 0 1px 2px rgb(0 0 0 / 7.5%),\n    // scss-docs-end root-box-shadow-variables\n\n    --spacer: 1rem,\n\n    // scss-docs-start root-focus-variables\n    --focus-ring-width: 3px,\n    --focus-ring-offset: 1px,\n    --focus-ring-color: var(--primary-focus-ring),\n    --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color),\n    // scss-docs-end root-focus-variables\n\n    // scss-docs-start root-form-variables\n    --control-checked-bg: var(--primary-base),\n    --control-checked-border-color: var(--control-checked-bg),\n    --control-active-bg: var(--primary-base),\n    --control-active-border-color: var(--control-active-bg),\n    --control-disabled-bg: var(--bg-3),\n    --control-disabled-opacity: .65,\n\n    --btn-input-fg: var(--fg-body),\n    --btn-input-bg: var(--bg-body),\n\n    --btn-input-min-height: 2.375rem,\n    --btn-input-padding-y: .375rem,\n    --btn-input-padding-x: .75rem,\n    --btn-input-font-size: var(--font-size-base),\n    --btn-input-line-height: var(--line-height-base),\n    --btn-input-border-radius: var(--border-radius),\n\n    --btn-input-xs-min-height: 1.5rem,\n    --btn-input-xs-padding-y: .125rem,\n    --btn-input-xs-padding-x: .5rem,\n    --btn-input-xs-font-size: var(--font-size-xs),\n    --btn-input-xs-line-height: 1.125,\n    --btn-input-xs-border-radius: var(--border-radius-xs),\n\n    --btn-input-sm-min-height: 2rem,\n    --btn-input-sm-padding-y: .25rem,\n    --btn-input-sm-padding-x: .625rem,\n    --btn-input-sm-font-size: var(--font-size-sm),\n    --btn-input-sm-line-height: var(--line-height-sm),\n    --btn-input-sm-border-radius: var(--border-radius-sm),\n\n    --btn-input-lg-min-height: 2.75rem,\n    --btn-input-lg-padding-y: .5rem,\n    --btn-input-lg-padding-x: 1rem,\n    --btn-input-lg-font-size: var(--font-size-md),\n    --btn-input-lg-line-height: var(--line-height-md),\n    --btn-input-lg-border-radius: var(--border-radius-lg),\n    // scss-docs-end root-form-variables\n\n    // scss-docs-start root-form-validation-variables\n    --form-valid-color: #{$form-valid-color},\n    --form-valid-border-color: #{$form-valid-border-color},\n    --form-invalid-color: #{$form-invalid-color},\n    --form-invalid-border-color: #{$form-invalid-border-color},\n    // scss-docs-end root-form-validation-variables\n  ),\n  $root-tokens\n);\n// stylelint-enable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// scss-docs-end root-tokens\n\n// scss-docs-start root-font-size-loop\n// Generate font-size and line-height tokens\n@each $name, $props in $font-sizes {\n  $root-tokens: map.set($root-tokens, --font-size-#{$name}, map.get($props, \"font-size\"));\n  $root-tokens: map.set($root-tokens, --line-height-#{$name}, map.get($props, \"line-height\"));\n}\n// scss-docs-end root-font-size-loop\n\n// scss-docs-start root-theme-tokens\n// Generate semantic theme colors\n@each $color-name, $color-map in $theme-colors {\n  @each $key, $value in $color-map {\n    $root-tokens: map.set($root-tokens, --#{$color-name}-#{$key}, $value);\n  }\n}\n\n// Generate background tokens\n@each $key, $value in $theme-bgs {\n  $root-tokens: map.set($root-tokens, --bg-#{$key}, $value);\n}\n\n// Generate foreground tokens\n@each $key, $value in $theme-fgs {\n  $root-tokens: map.set($root-tokens, --fg-#{$key}, $value);\n}\n\n// Generate border tokens\n@each $key, $value in $theme-borders {\n  $root-tokens: map.set($root-tokens, --border-#{$key}, $value);\n}\n// scss-docs-end root-theme-tokens\n\n// Generate breakpoint tokens\n@each $name, $value in $breakpoints {\n  $root-tokens: map.set($root-tokens, --breakpoint-#{$name}, $value);\n}\n\n:root {\n  @include tokens($root-tokens);\n\n  color-scheme: light dark;\n}\n\n[data-bs-theme=\"dark\"] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=\"light\"] {\n  color-scheme: light;\n}\n","@layer helpers {\n  .focus-ring:focus-visible {\n    outline: var(--focus-ring);\n  }\n}\n","@use \"../config\" as *;\n@use \"../mixins/transition\" as *;\n\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: $icon-link-gap;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, .5));\n    text-underline-offset: $icon-link-underline-offset;\n    backface-visibility: hidden;\n\n    > .bi {\n      flex-shrink: 0;\n      width: $icon-link-icon-size;\n      height: $icon-link-icon-size;\n      fill: currentcolor;\n      @include transition($icon-link-icon-transition);\n    }\n  }\n\n  .icon-link-hover {\n    &:hover,\n    &:focus-visible {\n      > .bi {\n        transform: var(--icon-link-transform, $icon-link-icon-transform);\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n\n// Configuration\n//\n// Variables and settings not related to theme, components, and more go here. It does include layout.\n\n// Merge overrides on top of defaults, stripping null entries.\n// Null values let users remove map keys via @use ... with().\n// Accepts a list as $defaults (converted to a map with `true` values).\n@function defaults($defaults, $overrides) {\n  @if meta.type-of($defaults) == \"list\" {\n    $map: ();\n    @each $key in $defaults {\n      $map: map.merge($map, ($key: true));\n    }\n    $defaults: $map;\n  }\n  $merged: map.merge($defaults, $overrides);\n  @each $key, $value in $merged {\n    @if $value == null {\n      $merged: map.remove($merged, $key);\n    }\n  }\n  @return $merged;\n}\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              true !default;\n$enable-gradients:            false !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        true !default;\n$enable-grid-classes:         true !default;\n$enable-container-classes:    true !default;\n$enable-cssgrid:              true !default;\n$enable-button-pointers:      true !default;\n$enable-validation-icons:     true !default;\n// $enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n\n$enable-dark-mode:            true !default;\n\n$color-mode-type:          \"media-query\" !default;\n$color-contrast-dark:      #000 !default;\n$color-contrast-light:     #fff !default;\n$min-contrast-ratio:         4.5 !default;\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n\n$negative-spacers: (\n  \"-1\": $spacer * -.25,\n  \"-2\": $spacer * -.5,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n$sizes: (\n  1: $spacer,\n  2: calc($spacer * 2),\n  3: calc($spacer * 3),\n  4: calc($spacer * 4),\n  5: calc($spacer * 5),\n  6: calc($spacer * 6),\n  7: calc($spacer * 7),\n  8: calc($spacer * 8),\n  9: calc($spacer * 9),\n  10: calc($spacer * 10),\n  11: calc($spacer * 11),\n  12: calc($spacer * 12),\n) !default;\n\n// Breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start breakpoints\n$breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 1024px,\n  xl: 1280px,\n  2xl: 1536px\n) !default;\n// scss-docs-end breakpoints\n\n// @include _assert-ascending($breakpoints, \"$breakpoints\");\n// @include _assert-starts-at-zero($breakpoints, \"$breakpoints\");\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-x: 1.5rem !default;\n$grid-gutter-y: 0 !default;\n$grid-row-columns: 6 !default;\n\n$gutters: $spacers !default;\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1200px,\n  2xl: 1440px\n) !default;\n// scss-docs-end container-max-widths\n\n$container-padding-x: $grid-gutter-x !default;\n\n$utilities: () !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent)) !default;\n// scss-docs-end variable-gradient\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Links\n//\n// Style anchor elements.\n\n$link-decoration:                         underline !default;\n$link-underline-offset:                   .2em !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap:               .375rem !default;\n$icon-link-underline-offset:  .25em !default;\n$icon-link-icon-size:         1em !default;\n$icon-link-icon-transition:   .2s ease-in-out transform !default;\n$icon-link-icon-transform:    translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n$border-style:                solid !default;\n$border-color:                color-mix(in oklch, var(--gray-100), var(--gray-200)) !default;\n// scss-docs-end border-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"auto\": auto,\n  \"1x1\": #{\"1 / 1\"},\n  \"4x3\": #{\"4 / 3\"},\n  \"16x9\": #{\"16 / 9\"},\n  \"21x9\": #{\"21 / 9\"}\n) !default;\n// scss-docs-end aspect-ratios\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-medium:          500 !default;\n$font-weight-semibold:        600 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$font-sizes: defaults(\n  (\n    \"xs\": (\n      \"font-size\": .75rem,\n      \"line-height\": 1.25\n    ),\n    \"sm\": (\n      \"font-size\": .875rem,\n      \"line-height\": 1.5\n    ),\n    \"md\": (\n      \"font-size\": 1rem,\n      \"line-height\": 1.5\n    ),\n    \"lg\": (\n      \"font-size\": clamp(1.25rem, 1rem + .625vw, 1.5rem),\n      \"line-height\": 1.5\n    ),\n    \"xl\": (\n      \"font-size\": clamp(1.5rem, 1.1rem + .75vw, 1.75rem),\n      \"line-height\": calc(2.5 / 1.75)\n    ),\n    \"2xl\": (\n      \"font-size\": clamp(1.75rem, 1.3rem + 1vw, 2rem),\n      \"line-height\": calc(3 / 2.25)\n    ),\n    \"3xl\": (\n      \"font-size\": clamp(2rem, 1.5rem + 1.875vw, 2.5rem),\n      \"line-height\": 1.2\n    ),\n    \"4xl\": (\n      \"font-size\": clamp(2.25rem, 1.75rem + 2.5vw, 3rem),\n      \"line-height\": 1.1\n    ),\n    \"5xl\": (\n      \"font-size\": clamp(3rem, 2rem + 5vw, 4rem),\n      \"line-height\": 1.1\n    ),\n    \"6xl\": (\n      \"font-size\": clamp(3.75rem, 2.5rem + 6.25vw, 5rem),\n      \"line-height\": 1\n    ),\n  ),\n  $font-sizes\n);\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start type-variables\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n// scss-docs-end type-variables\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-menu:                       1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-dialog:                     1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n$zindex-toast:                      1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n  n1: -1,\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n","@use \"sass:list\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n@mixin transition($transition...) {\n  @if list.length($transition) == 0 {\n    $transition: $transition-base;\n  }\n\n  @if list.length($transition) > 1 {\n    @each $value in $transition {\n      @if $value == null or $value == none {\n        @warn \"The keyword 'none' or 'null' must be used as a single argument.\";\n      }\n    }\n  }\n\n  @if $enable-transitions {\n    @if list.nth($transition, 1) != null {\n      transition: $transition;\n    }\n\n    @if $enable-reduced-motion and list.nth($transition, 1) != null and list.nth($transition, 1) != none {\n      @media (prefers-reduced-motion: reduce) {\n        transition: none;\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: $zindex-fixed;\n  }\n\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: $zindex-fixed;\n  }\n\n  // Responsive sticky top and bottom\n  @each $breakpoint in map.keys($breakpoints) {\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      .sticky#{$infix}-top {\n        position: sticky;\n        top: 0;\n        z-index: $zindex-sticky;\n      }\n\n      .sticky#{$infix}-bottom {\n        position: sticky;\n        bottom: 0;\n        z-index: $zindex-sticky;\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"../config\" as *;\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px)\n//\n// The map defined in the `$breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl 2xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $breakpoints, $breakpoint-names: map.keys($breakpoints)) {\n  $n: list.index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoint-names}`\";\n  }\n  // Use @if/@else because list.nth would error if evaluated when $n equals list length\n  @if $n < list.length($breakpoint-names) {\n    @return list.nth($breakpoint-names, $n + 1);\n  } @else {\n    @return null;\n  }\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $breakpoints) {\n  $min: map.get($breakpoints, $name);\n  @return if(sass($min != 0): $min; else: null);\n}\n\n// Maximum breakpoint width for range media queries.\n// Returns the breakpoint value to use as an upper bound in range queries.\n//\n//    >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n//    >> breakpoint-max(xxl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    null\n@function breakpoint-max($name, $breakpoints: $breakpoints) {\n  @if $name == null {\n    @return null;\n  }\n  $max: map.get($breakpoints, $name);\n  @return if(sass($max and $max > 0): $max; else: null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $breakpoints) {\n  @return if(sass(breakpoint-min($name, $breakpoints) == null): \"\"; else: \"-#{$name}\");\n}\n\n// Iterate all breakpoints and provide the current name and infix.\n//\n//    @include loop-breakpoints-up() using ($breakpoint, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-up($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n    @content($breakpoint, $infix);\n  }\n}\n\n// Iterate all breakpoints and provide the current name, next name, and next infix.\n//\n//    @include loop-breakpoints-down() using ($breakpoint, $next, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-down($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $next: breakpoint-next($breakpoint, $breakpoints);\n    $infix: breakpoint-infix($next, $breakpoints);\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Backwards-compatible alias for next/down breakpoint loops.\n@mixin loop-breakpoints($breakpoints: $breakpoints) {\n  @include loop-breakpoints-down($breakpoints) using ($breakpoint, $next, $infix) {\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (width >= $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (width < $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n\n// Container queries\n//\n// Container queries allow elements to respond to the size of a containing element\n// rather than the viewport. These mixins mirror the media-breakpoint-* mixins above.\n//\n// scss-docs-start container-query-mixins\n\n// Set an element as a query container.\n//\n//    @include set-container();                    // container-type: inline-size\n//    @include set-container(size);                // container-type: size\n//    @include set-container(inline-size, sidebar); // container: sidebar / inline-size\n//\n@mixin set-container($type: inline-size, $name: null) {\n  @if $name {\n    container: #{$name} / #{$type};\n  } @else {\n    container-type: #{$type};\n  }\n}\n\n// Container query of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider within the container.\n//\n//    @include container-breakpoint-up(md) { ... }\n//    @include container-breakpoint-up(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-up($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower within the container.\n//\n//    @include container-breakpoint-down(lg) { ... }\n//    @include container-breakpoint-down(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-down($name, $container-name: null, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @if $container-name {\n      @container #{$container-name} (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints within the container.\n//\n//    @include container-breakpoint-between(md, xl) { ... }\n//    @include container-breakpoint-between(md, xl, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-between($lower, $upper, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($lower, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($upper, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Container query between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint within the container.\n//\n//    @include container-breakpoint-only(md) { ... }\n//    @include container-breakpoint-only(md, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-only($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($name, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($next, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n// scss-docs-end container-query-mixins\n","@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  // scss-docs-start stacks\n  .stack-container {\n    @include set-container();\n  }\n\n  [class*=\"hstack\"],\n  [class*=\"vstack\"] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n\n  @include loop-breakpoints-up() using ($breakpoint, $infix) {\n    .vstack#{$infix} {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: column;\n        --stack-align-items: stretch;\n      }\n    }\n    .hstack#{$infix} {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: row;\n        --stack-align-items: flex-start;\n      }\n    }\n  }\n  // scss-docs-end stacks\n}\n","@use \"../theme\" as *;\n\n// Generate theme modifier classes (e.g., .theme-primary, .theme-accent, etc.)\n@layer helpers {\n  @include generate-theme-classes();\n}\n","@use \"sass:meta\";\n@use \"sass:map\";\n\n@function theme-color-values($key) {\n  $result: ();\n\n  @each $color-name, $color-map in $theme-colors {\n    @if map.has-key($color-map, $key) {\n      $result: map.merge($result, ($color-name: map.get($color-map, $key)));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate opacity values using color-mix()\n@function theme-opacity-values($color-var, $opacities: $util-opacity) {\n  $result: ();\n\n  @each $key, $value in $opacities {\n    @if $key == 100 {\n      // For 100%, use direct variable reference (more efficient)\n      $result: map.merge($result, ($key: var($color-var)));\n    } @else {\n      // For other values, use color-mix()\n      $percentage: $key * 1%;\n      $result: map.merge($result, ($key: color-mix(in oklch, var($color-var) $percentage, transparent)));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate theme classes dynamically based on the keys in each theme color map\n@mixin generate-theme-classes() {\n  @each $color-name, $color-map in $theme-colors {\n    .theme-#{$color-name} {\n      @each $key, $value in $color-map {\n        --theme-#{$key}: var(--#{$color-name}-#{$key});\n      }\n    }\n  }\n}\n\n// Recursive mixin to handle nested maps\n@mixin create-css-vars($map, $parent-key: \"\") {\n  @each $key, $value in $map {\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    $current-key: if(sass($parent-key == \"\"): $key; else: \"#{$parent-key}-#{$key}\");\n\n    @if meta.type-of($value) == \"map\" {\n      @include create-css-vars($value, $current-key);\n    } @else {\n      --#{$current-key}: #{$value};\n    }\n  }\n}\n\n// scss-docs-start theme-colors\n$theme-colors: (\n  \"primary\": (\n    \"base\": var(--blue-500),\n    \"text\": light-dark(var(--blue-600), var(--blue-400)),\n    \"text-emphasis\": light-dark(var(--blue-800), var(--blue-200)),\n    \"bg\": var(--blue-500),\n    \"bg-subtle\": light-dark(var(--blue-100), var(--blue-900)),\n    \"bg-muted\": light-dark(var(--blue-200), var(--blue-800)),\n    \"border\": light-dark(var(--blue-300), var(--blue-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"accent\": (\n    \"base\": var(--indigo-500),\n    \"text\": light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300))),\n    \"text-emphasis\": light-dark(var(--indigo-800), var(--indigo-300)),\n    \"bg\": var(--indigo-500),\n    \"bg-subtle\": light-dark(var(--indigo-100), var(--indigo-900)),\n    \"bg-muted\": light-dark(var(--indigo-200), var(--indigo-800)),\n    \"border\": light-dark(var(--indigo-300), var(--indigo-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"success\": (\n    \"base\": var(--green-500),\n    \"text\": light-dark(var(--green-600), var(--green-400)),\n    \"text-emphasis\": light-dark(var(--green-800), var(--green-300)),\n    \"bg\": var(--green-500),\n    \"bg-subtle\": light-dark(var(--green-100), var(--green-900)),\n    \"bg-muted\": light-dark(var(--green-200), var(--green-800)),\n    \"border\": light-dark(var(--green-300), var(--green-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"danger\": (\n    \"base\": var(--red-500),\n    \"text\": light-dark(var(--red-600), var(--red-400)),\n    \"text-emphasis\": light-dark(var(--red-800), var(--red-300)),\n    \"bg\": var(--red-500),\n    \"bg-subtle\": light-dark(var(--red-100), var(--red-900)),\n    \"bg-muted\": light-dark(var(--red-200), var(--red-800)),\n    \"border\": light-dark(var(--red-300), var(--red-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"warning\": (\n    \"base\": var(--yellow-500),\n    \"text\": light-dark(var(--yellow-700), var(--yellow-400)),\n    \"text-emphasis\": light-dark(var(--yellow-800), var(--yellow-300)),\n    \"bg\": var(--yellow-500),\n    \"bg-subtle\": light-dark(var(--yellow-100), var(--yellow-900)),\n    \"bg-muted\": light-dark(var(--yellow-200), var(--yellow-800)),\n    \"border\": light-dark(var(--yellow-300), var(--yellow-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"info\": (\n    \"base\": var(--cyan-500),\n    \"text\": light-dark(var(--cyan-600), var(--cyan-400)),\n    \"text-emphasis\": light-dark(var(--cyan-800), var(--cyan-300)),\n    \"bg\": var(--cyan-500),\n    \"bg-subtle\": light-dark(var(--cyan-100), var(--cyan-900)),\n    \"bg-muted\": light-dark(var(--cyan-200), var(--cyan-800)),\n    \"border\": light-dark(var(--cyan-300), var(--cyan-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"inverse\": (\n    \"base\": var(--gray-900),\n    \"text\": light-dark(var(--gray-900), var(--gray-200)),\n    \"text-emphasis\": light-dark(var(--gray-975), var(--white)),\n    \"bg\": light-dark(var(--gray-900), var(--gray-025)),\n    \"bg-subtle\": light-dark(var(--gray-100), var(--gray-900)),\n    \"bg-muted\": light-dark(var(--gray-200), var(--gray-300)),\n    \"border\": light-dark(var(--gray-400), var(--gray-100)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--white), var(--gray-900))\n  ),\n  \"secondary\": (\n    \"base\": var(--gray-200),\n    \"text\": light-dark(var(--gray-600), var(--gray-400)),\n    \"text-emphasis\": light-dark(var(--gray-800), var(--gray-200)),\n    \"bg\": light-dark(var(--gray-100), var(--gray-600)),\n    \"bg-subtle\": light-dark(var(--gray-050), var(--gray-800)),\n    \"bg-muted\": light-dark(var(--gray-100), var(--gray-700)),\n    \"border\": light-dark(var(--gray-300), var(--gray-600)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--gray-900), var(--white))\n  )\n) !default;\n// scss-docs-end theme-colors\n\n// mdo-do: consider using muted, subtle, ghost or something instead of linear scale?\n$theme-bgs: (\n  \"body\": light-dark(var(--white), var(--gray-975)),\n  \"1\": light-dark(var(--gray-025), var(--gray-950)),\n  \"2\": light-dark(var(--gray-050), var(--gray-900)),\n  \"3\": light-dark(var(--gray-100), var(--gray-800)),\n  \"4\": light-dark(var(--gray-200), var(--gray-700)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"transparent\": transparent,\n  \"inherit\": inherit,\n) !default;\n\n$theme-fgs: (\n  \"body\": light-dark(var(--gray-900), var(--gray-050)),\n  \"1\": light-dark(var(--gray-800), var(--gray-200)),\n  \"2\": light-dark(var(--gray-700), var(--gray-300)),\n  \"3\": light-dark(var(--gray-600), var(--gray-500)),\n  \"4\": light-dark(var(--gray-500), var(--gray-600)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"inherit\": inherit,\n) !default;\n\n$theme-borders: (\n  \"bg\": var(--bg-body),\n  \"body\": light-dark(var(--gray-300), var(--gray-800)),\n  \"muted\": light-dark(var(--gray-200), var(--gray-800)),\n  \"subtle\": light-dark(var(--gray-100), var(--gray-900)),\n  \"emphasized\": light-dark(var(--gray-400), var(--gray-600)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n) !default;\n\n$util-opacity: (\n  10: .1,\n  20: .2,\n  30: .3,\n  40: .4,\n  50: .5,\n  60: .6,\n  70: .7,\n  80: .8,\n  90: .9,\n  100: 1\n) !default;\n","@use \"../mixins/visually-hidden\" as *;\n\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","// stylelint-disable declaration-no-important\n\n// Hide content visually while keeping it accessible to assistive technologies\n//\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin visually-hidden() {\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n\n  // Fix for positioned table caption that could become anonymous cells\n  &:not(caption) {\n    position: absolute !important;\n  }\n\n  // Fix to prevent overflowing children to become focusable\n  * {\n    overflow: hidden !important;\n  }\n}\n\n// Use to only display content when it's focused, or one of its child elements is focused\n// (i.e. when focus is within the element/container that the class was applied to)\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/WAI/WCAG22/Techniques/general/G1.html\n\n@mixin visually-hidden-focusable() {\n  &:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","@use \"../config\" as *;\n\n@layer helpers {\n  .stretched-link {\n    &::#{$stretched-link-pseudo-element} {\n      position: absolute;\n      inset: 0;\n      z-index: $stretched-link-z-index;\n      content: \"\";\n    }\n  }\n}\n","@use \"../mixins/text-truncate\" as *;\n\n@layer helpers {\n  .text-truncate {\n    @include text-truncate();\n  }\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n","@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n@use \"../mixins/utilities\" as *;\n@use \"../utilities\" as *;\n\n@layer utilities {\n  // Loop over each breakpoint\n  @each $breakpoint in map.keys($breakpoints) {\n\n    // Generate media query if needed\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if meta.type-of($utility) == \"map\" and (map.get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix);\n        }\n      }\n    }\n  }\n\n  // Print utilities\n  @media print {\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Then check if the utility needs print styles\n      @if meta.type-of($utility) == \"map\" and map.get($utility, print) == true {\n        @include generate-utility($utility, \"-print\");\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n\n// stylelint-disable scss/dollar-variable-pattern\n\n// Utility generator\n\n// - Utilities can use three different types of selectors:\n//   - class: .class\n//   - attr-starts: [class^=\"class\"]\n//   - attr-includes: [class*=\"class\"]\n// - Utilities can generate regular CSS properties and CSS custom properties\n// - Utilities can be responsive or not\n// - Utilities can have state variants (e.g., hover, focus, active)\n// - Utilities can define local CSS variables\n//\n// CSS custom properties can be generated in two ways:\n//\n// 1. Property map with null values (CSS var receives the utility value):\n// \"bg-color\": (\n//   property: (\n//     \"--bg\": null,\n//     \"background-color\": var(--bg)\n//   ),\n//   class: bg,\n//   values: (\n//     primary: var(--blue-500),\n//   )\n// )\n// Generates:\n// .bg-primary {\n//   --bs-bg: var(--bs-blue-500);\n//   background-color: var(--bs-bg);\n// }\n//\n// 2. Variables map (static CSS custom properties on every class):\n// \"link-underline\": (\n//   property: text-decoration-color,\n//   class: link-underline,\n//   variables: (\n//     \"link-underline-opacity\": 1\n//   ),\n//   values: (...)\n// )\n// Generates:\n// .link-underline {\n//   --bs-link-underline-opacity: 1;\n//   text-decoration-color: ...;\n// }\n\n// Helper mixin to generate CSS properties for both legacy and property map approaches\n@mixin generate-properties($utility, $propertyMap, $properties, $value) {\n  @if $propertyMap != null {\n    // New Property-Value Mapping approach\n    @each $property, $defaultValue in $propertyMap {\n      // If value is a map, check if it has a key for this property\n      // Otherwise, use defaultValue (or $value if defaultValue is null)\n      $actualValue: $defaultValue;\n      @if meta.type-of($value) == \"map\" and map.has-key($value, $property) {\n        $actualValue: map.get($value, $property);\n      } @else if $defaultValue == null {\n        $actualValue: $value;\n      }\n      @if map.get($utility, important) {\n        #{$property}: $actualValue !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $actualValue;\n      }\n    }\n  } @else {\n    // Legacy approach\n    @each $property in $properties {\n      @if map.get($utility, important) {\n        #{$property}: $value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $value;\n      }\n    }\n  }\n}\n\n@mixin generate-utility($utility, $infix: \"\") {\n  // Validate required keys\n  @if not map.has-key($utility, property) {\n    @error \"Utility is missing required `property` key: #{$utility}\";\n  }\n  @if not map.has-key($utility, values) {\n    @error \"Utility is missing required `values` key: #{$utility}\";\n  }\n\n  // Warn on unknown keys (likely typos)\n  $valid-keys: property, values, class, selector, responsive, print, important, state, variables;\n  @each $key in map.keys($utility) {\n    @if not list.index($valid-keys, $key) {\n      @warn \"Unknown utility key `#{$key}` found. Valid keys are: #{$valid-keys}\";\n    }\n  }\n\n  // Determine if we're generating a class, or an attribute selector\n  $selectorType: \"class\";\n  @if map.has-key($utility, selector) {\n    $selectorType: map.get($utility, selector);\n    // Validate selector type\n    $valid-selectors: \"class\", \"attr-starts\", \"attr-includes\";\n    @if not list.index($valid-selectors, $selectorType) {\n      @error \"Invalid `selector` value `#{$selectorType}`. Must be one of: #{$valid-selectors}\";\n    }\n  }\n  // Then get the class name to use in a class (e.g., .class) or in a attribute selector (e.g., [class^=\"class\"])\n  $selectorClass: map.get($utility, class);\n\n  // Attribute selectors require a `class` key\n  @if $selectorType != \"class\" and not map.has-key($utility, class) {\n    @error \"Utility with `selector: #{$selectorType}` requires a `class` key.\";\n  }\n\n  // Get the list or map of values and ensure it's a map\n  $values: map.get($utility, values);\n  @if meta.type-of($values) != \"map\" {\n    @if meta.type-of($values) == \"list\" {\n      $list: ();\n      @each $value in $values {\n        $list: map.merge($list, ($value: $value));\n      }\n      $values: $list;\n    } @else {\n      $values: (null: $values);\n    }\n  }\n\n  // Calculate infix once, before the loop\n  // Note: $infix already includes the leading dash from breakpoint-infix()\n  // $infix: if($infix == \"\", \"\", \"-\" + $infix);\n\n  @each $key, $value in $values {\n    $properties: map.get($utility, property);\n    $propertyMap: null;\n    $customClass: \"\";\n\n    // Check if property is a map (new Property-Value Mapping approach)\n    // @debug \"Properties type: #{meta.type-of($properties)}\";\n    // @debug \"Properties: #{$properties}\";\n    @if meta.type-of($properties) == \"map\" {\n      $propertyMap: $properties;\n      // For property maps, we need to determine the class from the utility definition\n      $customClass: \"\";\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      }\n    } @else {\n      // Legacy approach: Multiple properties are possible, for example with vertical or horizontal margins or paddings\n      @if meta.type-of($properties) == \"string\" {\n        $properties: list.append((), $properties);\n      }\n      // Use custom class if present, otherwise use the first value from the list of properties\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      } @else {\n        $customClass: list.nth($properties, 1);\n      }\n      @if $customClass == null {\n        $customClass: \"\";\n      }\n    }\n\n    // Use custom CSS variable name if present, otherwise default to `class`\n    // mdo-do: restore?\n    // $css-variable-name: if(map.has-key($utility, css-variable-name), map.get($utility, css-variable-name), map.get($utility, class));\n\n    // State params to generate state variants\n    $state: ();\n    @if map.has-key($utility, state) {\n      $state: map.get($utility, state);\n    }\n\n    // $infix: if($customClass == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (e.g. with shadow class)\n    $customClassModifier: \"\";\n    @if $key {\n      @if $customClass == \"\" and $infix == \"\" {\n        $customClassModifier: $key;\n      } @else {\n        $customClassModifier: \"-\" + $key;\n      }\n    }\n\n    $selector: \"\";\n    @if $selectorType == \"class\" {\n      // Use the fallback of the first property if no `class` key is used\n      @if $customClass != \"\" {\n        $selector: \".#{$customClass + $infix + $customClassModifier}\";\n      } @else {\n        $selector: \".#{$selectorClass + $infix + $customClassModifier}\";\n      }\n    } @else if $selectorType == \"attr-starts\" {\n      $selector: \"[class^=\\\"#{$selectorClass}\\\"]\";\n    } @else if $selectorType == \"attr-includes\" {\n      $selector: \"[class*=\\\"#{$selectorClass}\\\"]\";\n    }\n\n    // @debug $utility;\n    // @debug $selectorType;\n    // @debug $selector;\n    // @debug $properties;\n    // @debug $values;\n\n    #{$selector} {\n      // Generate CSS custom properties (variables) if provided\n      // Variables receive the current utility value, then properties reference them\n      @if map.has-key($utility, variables) {\n        $variables: map.get($utility, variables);\n        @if meta.type-of($variables) == \"list\" {\n          // If variables is a list, each variable gets the utility value\n          @each $var-name in $variables {\n            --#{$var-name}: #{$value};\n          }\n        } @else if meta.type-of($variables) == \"map\" {\n          // If variables is a map, use the provided values (for static variables)\n          @each $var-key, $var-value in $variables {\n            --#{$var-key}: #{$var-value};\n          }\n        }\n      }\n      @include generate-properties($utility, $propertyMap, $properties, $value);\n    }\n\n    // Generate state variants\n    @if $state != () {\n      @each $state-variant in $state {\n        #{$selector}-#{$state-variant}:#{$state-variant} {\n          // Generate CSS custom properties (variables) if provided\n          @if map.has-key($utility, variables) {\n            $variables: map.get($utility, variables);\n            @if meta.type-of($variables) == \"list\" {\n              // If variables is a list, each variable gets the utility value\n              @each $var-name in $variables {\n                --#{$var-name}: #{$value};\n              }\n            } @else if meta.type-of($variables) == \"map\" {\n              // If variables is a map, use the provided values (for static variables)\n              @each $var-key, $var-value in $variables {\n                --#{$var-key}: #{$var-value};\n              }\n            }\n          }\n          @include generate-properties($utility, $propertyMap, $properties, $value);\n        }\n      }\n    }\n  }\n}\n"]}
\ No newline at end of file
index 76cc7f99fe660220cbc204ad3d6c126f1fe8a3bd..90c35673537776a2f9183b1de8cf23da6ae4af02 100644 (file)
       "class": "m",
       "property": "margin",
       "classes": [
-        "m--2",
-        "m--1",
         "m-0",
         "m-1",
         "m-2",
       "class": "mx",
       "property": "margin-inline",
       "classes": [
-        "mx--2",
-        "mx--1",
         "mx-0",
         "mx-1",
         "mx-2",
       "class": "my",
       "property": "margin-block",
       "classes": [
-        "my--2",
-        "my--1",
         "my-0",
         "my-1",
         "my-2",
       "class": "mt",
       "property": "margin-block-start",
       "classes": [
-        "mt--2",
-        "mt--1",
         "mt-0",
         "mt-1",
         "mt-2",
       "class": "me",
       "property": "margin-inline-end",
       "classes": [
-        "me--2",
-        "me--1",
         "me-0",
         "me-1",
         "me-2",
       "class": "mb",
       "property": "margin-block-end",
       "classes": [
-        "mb--2",
-        "mb--1",
         "mb-0",
         "mb-1",
         "mb-2",
       "class": "ms",
       "property": "margin-inline-start",
       "classes": [
-        "ms--2",
-        "ms--1",
         "ms-0",
         "ms-1",
         "ms-2",
         "ms-3",
         "ms-4",
         "ms-5",
+        "ms--1",
+        "ms--2",
         "ms-auto"
       ]
     },
       "class": "p",
       "property": "padding",
       "classes": [
-        "p--2",
-        "p--1",
         "p-0",
         "p-1",
         "p-2",
       "class": "px",
       "property": "padding-inline",
       "classes": [
-        "px--2",
-        "px--1",
         "px-0",
         "px-1",
         "px-2",
       "class": "py",
       "property": "padding-block",
       "classes": [
-        "py--2",
-        "py--1",
         "py-0",
         "py-1",
         "py-2",
       "class": "pt",
       "property": "padding-block-start",
       "classes": [
-        "pt--2",
-        "pt--1",
         "pt-0",
         "pt-1",
         "pt-2",
       "class": "pe",
       "property": "padding-inline-end",
       "classes": [
-        "pe--2",
-        "pe--1",
         "pe-0",
         "pe-1",
         "pe-2",
       "class": "pb",
       "property": "padding-block-end",
       "classes": [
-        "pb--2",
-        "pb--1",
         "pb-0",
         "pb-1",
         "pb-2",
       "class": "ps",
       "property": "padding-inline-start",
       "classes": [
-        "ps--2",
-        "ps--1",
         "ps-0",
         "ps-1",
         "ps-2",
       "class": "gap",
       "property": "gap",
       "classes": [
-        "gap--2",
-        "gap--1",
         "gap-0",
         "gap-1",
         "gap-2",
       "class": "row-gap",
       "property": "row-gap",
       "classes": [
-        "row-gap--2",
-        "row-gap--1",
         "row-gap-0",
         "row-gap-1",
         "row-gap-2",
       "class": "column-gap",
       "property": "column-gap",
       "classes": [
-        "column-gap--2",
-        "column-gap--1",
         "column-gap-0",
         "column-gap-1",
         "column-gap-2",
       "classes": [
         "user-select-all",
         "user-select-auto",
+        "user-select-text",
         "user-select-none"
       ]
     },
index 870298ca9503e4b5e423e2d9f6e43ebfd3d180ae..c254e62120b4eb2322238acdba5104f3e640ba32 100644 (file)
@@ -3,5 +3,5 @@
   * Copyright 2011-2026 The Bootstrap Authors
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   */
-:root{--bs-blue-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .24 240));--bs-blue-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .24 240));--bs-blue-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .24 240));--bs-blue-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .24 240));--bs-blue-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .24 240));--bs-blue-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .24 240));--bs-blue-500:oklch(60% .24 240);--bs-blue-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .24 240));--bs-blue-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .24 240));--bs-blue-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .24 240));--bs-blue-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .24 240));--bs-blue-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .24 240));--bs-blue-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .24 240));--bs-indigo-025:color-mix(in lab,var(--bs-white)94%,oklch(56% .26 288));--bs-indigo-050:color-mix(in lab,var(--bs-white)90%,oklch(56% .26 288));--bs-indigo-100:color-mix(in lab,var(--bs-white)80%,oklch(56% .26 288));--bs-indigo-200:color-mix(in lab,var(--bs-white)60%,oklch(56% .26 288));--bs-indigo-300:color-mix(in lab,var(--bs-white)40%,oklch(56% .26 288));--bs-indigo-400:color-mix(in lab,var(--bs-white)20%,oklch(56% .26 288));--bs-indigo-500:oklch(56% .26 288);--bs-indigo-600:color-mix(in lab,var(--bs-black)16%,oklch(56% .26 288));--bs-indigo-700:color-mix(in lab,var(--bs-black)32%,oklch(56% .26 288));--bs-indigo-800:color-mix(in lab,var(--bs-black)48%,oklch(56% .26 288));--bs-indigo-900:color-mix(in lab,var(--bs-black)64%,oklch(56% .26 288));--bs-indigo-950:color-mix(in lab,var(--bs-black)76%,oklch(56% .26 288));--bs-indigo-975:color-mix(in lab,var(--bs-black)88%,oklch(56% .26 288));--bs-violet-025:color-mix(in lab,var(--bs-white)94%,oklch(56% .24 300));--bs-violet-050:color-mix(in lab,var(--bs-white)90%,oklch(56% .24 300));--bs-violet-100:color-mix(in lab,var(--bs-white)80%,oklch(56% .24 300));--bs-violet-200:color-mix(in lab,var(--bs-white)60%,oklch(56% .24 300));--bs-violet-300:color-mix(in lab,var(--bs-white)40%,oklch(56% .24 300));--bs-violet-400:color-mix(in lab,var(--bs-white)20%,oklch(56% .24 300));--bs-violet-500:oklch(56% .24 300);--bs-violet-600:color-mix(in lab,var(--bs-black)16%,oklch(56% .24 300));--bs-violet-700:color-mix(in lab,var(--bs-black)32%,oklch(56% .24 300));--bs-violet-800:color-mix(in lab,var(--bs-black)48%,oklch(56% .24 300));--bs-violet-900:color-mix(in lab,var(--bs-black)64%,oklch(56% .24 300));--bs-violet-950:color-mix(in lab,var(--bs-black)76%,oklch(56% .24 300));--bs-violet-975:color-mix(in lab,var(--bs-black)88%,oklch(56% .24 300));--bs-purple-025:color-mix(in lab,var(--bs-white)94%,oklch(56% .24 320));--bs-purple-050:color-mix(in lab,var(--bs-white)90%,oklch(56% .24 320));--bs-purple-100:color-mix(in lab,var(--bs-white)80%,oklch(56% .24 320));--bs-purple-200:color-mix(in lab,var(--bs-white)60%,oklch(56% .24 320));--bs-purple-300:color-mix(in lab,var(--bs-white)40%,oklch(56% .24 320));--bs-purple-400:color-mix(in lab,var(--bs-white)20%,oklch(56% .24 320));--bs-purple-500:oklch(56% .24 320);--bs-purple-600:color-mix(in lab,var(--bs-black)16%,oklch(56% .24 320));--bs-purple-700:color-mix(in lab,var(--bs-black)32%,oklch(56% .24 320));--bs-purple-800:color-mix(in lab,var(--bs-black)48%,oklch(56% .24 320));--bs-purple-900:color-mix(in lab,var(--bs-black)64%,oklch(56% .24 320));--bs-purple-950:color-mix(in lab,var(--bs-black)76%,oklch(56% .24 320));--bs-purple-975:color-mix(in lab,var(--bs-black)88%,oklch(56% .24 320));--bs-pink-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .22 4));--bs-pink-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .22 4));--bs-pink-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .22 4));--bs-pink-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .22 4));--bs-pink-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .22 4));--bs-pink-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .22 4));--bs-pink-500:oklch(60% .22 4);--bs-pink-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .22 4));--bs-pink-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .22 4));--bs-pink-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .22 4));--bs-pink-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .22 4));--bs-pink-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .22 4));--bs-pink-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .22 4));--bs-red-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .22 20));--bs-red-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .22 20));--bs-red-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .22 20));--bs-red-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .22 20));--bs-red-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .22 20));--bs-red-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .22 20));--bs-red-500:oklch(60% .22 20);--bs-red-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .22 20));--bs-red-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .22 20));--bs-red-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .22 20));--bs-red-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .22 20));--bs-red-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .22 20));--bs-red-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .22 20));--bs-orange-025:color-mix(in lab,var(--bs-white)94%,oklch(70% .22 52));--bs-orange-050:color-mix(in lab,var(--bs-white)90%,oklch(70% .22 52));--bs-orange-100:color-mix(in lab,var(--bs-white)80%,oklch(70% .22 52));--bs-orange-200:color-mix(in lab,var(--bs-white)60%,oklch(70% .22 52));--bs-orange-300:color-mix(in lab,var(--bs-white)40%,oklch(70% .22 52));--bs-orange-400:color-mix(in lab,var(--bs-white)20%,oklch(70% .22 52));--bs-orange-500:oklch(70% .22 52);--bs-orange-600:color-mix(in lab,var(--bs-black)16%,oklch(70% .22 52));--bs-orange-700:color-mix(in lab,var(--bs-black)32%,oklch(70% .22 52));--bs-orange-800:color-mix(in lab,var(--bs-black)48%,oklch(70% .22 52));--bs-orange-900:color-mix(in lab,var(--bs-black)64%,oklch(70% .22 52));--bs-orange-950:color-mix(in lab,var(--bs-black)76%,oklch(70% .22 52));--bs-orange-975:color-mix(in lab,var(--bs-black)88%,oklch(70% .22 52));--bs-amber-025:color-mix(in lab,var(--bs-white)94%,oklch(79% .2 78));--bs-amber-050:color-mix(in lab,var(--bs-white)90%,oklch(79% .2 78));--bs-amber-100:color-mix(in lab,var(--bs-white)80%,oklch(79% .2 78));--bs-amber-200:color-mix(in lab,var(--bs-white)60%,oklch(79% .2 78));--bs-amber-300:color-mix(in lab,var(--bs-white)40%,oklch(79% .2 78));--bs-amber-400:color-mix(in lab,var(--bs-white)20%,oklch(79% .2 78));--bs-amber-500:oklch(79% .2 78);--bs-amber-600:color-mix(in lab,var(--bs-black)16%,oklch(79% .2 78));--bs-amber-700:color-mix(in lab,var(--bs-black)32%,oklch(79% .2 78));--bs-amber-800:color-mix(in lab,var(--bs-black)48%,oklch(79% .2 78));--bs-amber-900:color-mix(in lab,var(--bs-black)64%,oklch(79% .2 78));--bs-amber-950:color-mix(in lab,var(--bs-black)76%,oklch(79% .2 78));--bs-amber-975:color-mix(in lab,var(--bs-black)88%,oklch(79% .2 78));--bs-yellow-025:color-mix(in lab,var(--bs-white)94%,oklch(88% .24 88));--bs-yellow-050:color-mix(in lab,var(--bs-white)90%,oklch(88% .24 88));--bs-yellow-100:color-mix(in lab,var(--bs-white)80%,oklch(88% .24 88));--bs-yellow-200:color-mix(in lab,var(--bs-white)60%,oklch(88% .24 88));--bs-yellow-300:color-mix(in lab,var(--bs-white)40%,oklch(88% .24 88));--bs-yellow-400:color-mix(in lab,var(--bs-white)20%,oklch(88% .24 88));--bs-yellow-500:oklch(88% .24 88);--bs-yellow-600:color-mix(in lab,var(--bs-black)16%,oklch(88% .24 88));--bs-yellow-700:color-mix(in lab,var(--bs-black)32%,oklch(88% .24 88));--bs-yellow-800:color-mix(in lab,var(--bs-black)48%,oklch(88% .24 88));--bs-yellow-900:color-mix(in lab,var(--bs-black)64%,oklch(88% .24 88));--bs-yellow-950:color-mix(in lab,var(--bs-black)76%,oklch(88% .24 88));--bs-yellow-975:color-mix(in lab,var(--bs-black)88%,oklch(88% .24 88));--bs-lime-025:color-mix(in lab,var(--bs-white)94%,oklch(65% .24 135));--bs-lime-050:color-mix(in lab,var(--bs-white)90%,oklch(65% .24 135));--bs-lime-100:color-mix(in lab,var(--bs-white)80%,oklch(65% .24 135));--bs-lime-200:color-mix(in lab,var(--bs-white)60%,oklch(65% .24 135));--bs-lime-300:color-mix(in lab,var(--bs-white)40%,oklch(65% .24 135));--bs-lime-400:color-mix(in lab,var(--bs-white)20%,oklch(65% .24 135));--bs-lime-500:oklch(65% .24 135);--bs-lime-600:color-mix(in lab,var(--bs-black)16%,oklch(65% .24 135));--bs-lime-700:color-mix(in lab,var(--bs-black)32%,oklch(65% .24 135));--bs-lime-800:color-mix(in lab,var(--bs-black)48%,oklch(65% .24 135));--bs-lime-900:color-mix(in lab,var(--bs-black)64%,oklch(65% .24 135));--bs-lime-950:color-mix(in lab,var(--bs-black)76%,oklch(65% .24 135));--bs-lime-975:color-mix(in lab,var(--bs-black)88%,oklch(65% .24 135));--bs-green-025:color-mix(in lab,var(--bs-white)94%,oklch(64% .22 160));--bs-green-050:color-mix(in lab,var(--bs-white)90%,oklch(64% .22 160));--bs-green-100:color-mix(in lab,var(--bs-white)80%,oklch(64% .22 160));--bs-green-200:color-mix(in lab,var(--bs-white)60%,oklch(64% .22 160));--bs-green-300:color-mix(in lab,var(--bs-white)40%,oklch(64% .22 160));--bs-green-400:color-mix(in lab,var(--bs-white)20%,oklch(64% .22 160));--bs-green-500:oklch(64% .22 160);--bs-green-600:color-mix(in lab,var(--bs-black)16%,oklch(64% .22 160));--bs-green-700:color-mix(in lab,var(--bs-black)32%,oklch(64% .22 160));--bs-green-800:color-mix(in lab,var(--bs-black)48%,oklch(64% .22 160));--bs-green-900:color-mix(in lab,var(--bs-black)64%,oklch(64% .22 160));--bs-green-950:color-mix(in lab,var(--bs-black)76%,oklch(64% .22 160));--bs-green-975:color-mix(in lab,var(--bs-black)88%,oklch(64% .22 160));--bs-teal-025:color-mix(in lab,var(--bs-white)94%,oklch(68% .22 190));--bs-teal-050:color-mix(in lab,var(--bs-white)90%,oklch(68% .22 190));--bs-teal-100:color-mix(in lab,var(--bs-white)80%,oklch(68% .22 190));--bs-teal-200:color-mix(in lab,var(--bs-white)60%,oklch(68% .22 190));--bs-teal-300:color-mix(in lab,var(--bs-white)40%,oklch(68% .22 190));--bs-teal-400:color-mix(in lab,var(--bs-white)20%,oklch(68% .22 190));--bs-teal-500:oklch(68% .22 190);--bs-teal-600:color-mix(in lab,var(--bs-black)16%,oklch(68% .22 190));--bs-teal-700:color-mix(in lab,var(--bs-black)32%,oklch(68% .22 190));--bs-teal-800:color-mix(in lab,var(--bs-black)48%,oklch(68% .22 190));--bs-teal-900:color-mix(in lab,var(--bs-black)64%,oklch(68% .22 190));--bs-teal-950:color-mix(in lab,var(--bs-black)76%,oklch(68% .22 190));--bs-teal-975:color-mix(in lab,var(--bs-black)88%,oklch(68% .22 190));--bs-cyan-025:color-mix(in lab,var(--bs-white)94%,oklch(69% .22 220));--bs-cyan-050:color-mix(in lab,var(--bs-white)90%,oklch(69% .22 220));--bs-cyan-100:color-mix(in lab,var(--bs-white)80%,oklch(69% .22 220));--bs-cyan-200:color-mix(in lab,var(--bs-white)60%,oklch(69% .22 220));--bs-cyan-300:color-mix(in lab,var(--bs-white)40%,oklch(69% .22 220));--bs-cyan-400:color-mix(in lab,var(--bs-white)20%,oklch(69% .22 220));--bs-cyan-500:oklch(69% .22 220);--bs-cyan-600:color-mix(in lab,var(--bs-black)16%,oklch(69% .22 220));--bs-cyan-700:color-mix(in lab,var(--bs-black)32%,oklch(69% .22 220));--bs-cyan-800:color-mix(in lab,var(--bs-black)48%,oklch(69% .22 220));--bs-cyan-900:color-mix(in lab,var(--bs-black)64%,oklch(69% .22 220));--bs-cyan-950:color-mix(in lab,var(--bs-black)76%,oklch(69% .22 220));--bs-cyan-975:color-mix(in lab,var(--bs-black)88%,oklch(69% .22 220));--bs-brown-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .12 54));--bs-brown-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .12 54));--bs-brown-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .12 54));--bs-brown-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .12 54));--bs-brown-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .12 54));--bs-brown-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .12 54));--bs-brown-500:oklch(60% .12 54);--bs-brown-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .12 54));--bs-brown-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .12 54));--bs-brown-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .12 54));--bs-brown-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .12 54));--bs-brown-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .12 54));--bs-brown-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .12 54));--bs-gray-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .02 245));--bs-gray-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .02 245));--bs-gray-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .02 245));--bs-gray-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .02 245));--bs-gray-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .02 245));--bs-gray-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .02 245));--bs-gray-500:oklch(60% .02 245);--bs-gray-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .02 245));--bs-gray-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .02 245));--bs-gray-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .02 245));--bs-gray-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .02 245));--bs-gray-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .02 245));--bs-gray-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .02 245));--bs-pewter-025:color-mix(in lab,var(--bs-white)94%,oklch(65% .01 290));--bs-pewter-050:color-mix(in lab,var(--bs-white)90%,oklch(65% .01 290));--bs-pewter-100:color-mix(in lab,var(--bs-white)80%,oklch(65% .01 290));--bs-pewter-200:color-mix(in lab,var(--bs-white)60%,oklch(65% .01 290));--bs-pewter-300:color-mix(in lab,var(--bs-white)40%,oklch(65% .01 290));--bs-pewter-400:color-mix(in lab,var(--bs-white)20%,oklch(65% .01 290));--bs-pewter-500:oklch(65% .01 290);--bs-pewter-600:color-mix(in lab,var(--bs-black)16%,oklch(65% .01 290));--bs-pewter-700:color-mix(in lab,var(--bs-black)32%,oklch(65% .01 290));--bs-pewter-800:color-mix(in lab,var(--bs-black)48%,oklch(65% .01 290));--bs-pewter-900:color-mix(in lab,var(--bs-black)64%,oklch(65% .01 290));--bs-pewter-950:color-mix(in lab,var(--bs-black)76%,oklch(65% .01 290));--bs-pewter-975:color-mix(in lab,var(--bs-black)88%,oklch(65% .01 290))}@layer colors,theme,config,root,reboot,layout,content,forms,components,custom;@layer helpers{.focus-ring:focus-visible{outline:var(--bs-focus-ring)}.icon-link{text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,.5));text-underline-offset:.25em;backface-visibility:hidden;align-items:center;gap:.375rem;display:inline-flex}.icon-link>.bi{fill:currentColor;flex-shrink:0;width:1em;height:1em;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em,0,0))}.fixed-top{z-index:1030;position:fixed;inset:0 0 auto}.fixed-bottom{z-index:1030;position:fixed;inset:auto 0 0}.sticky-top{z-index:1020;position:sticky;top:0}.sticky-bottom{z-index:1020;position:sticky;bottom:0}@media (width>=576px){.sticky-sm-top{z-index:1020;position:sticky;top:0}.sticky-sm-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=768px){.sticky-md-top{z-index:1020;position:sticky;top:0}.sticky-md-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1024px){.sticky-lg-top{z-index:1020;position:sticky;top:0}.sticky-lg-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1280px){.sticky-xl-top{z-index:1020;position:sticky;top:0}.sticky-xl-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1536px){.sticky-2xl-top{z-index:1020;position:sticky;top:0}.sticky-2xl-bottom{z-index:1020;position:sticky;bottom:0}}.stack-container{container-type:inline-size}[class*=hstack],[class*=vstack]{flex:var(--bs-stack-flex,1 1 auto);flex-direction:var(--bs-stack-direction,row);align-items:var(--bs-stack-align-items,center);align-self:var(--bs-stack-align-self,stretch);display:flex}.vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}@container (width>=576px){.vstack-sm{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack-sm{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=768px){.vstack-md{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack-md{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1024px){.vstack-lg{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack-lg{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1280px){.vstack-xl{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack-xl{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1536px){.vstack-2xl{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack-2xl{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}.theme-primary{--bs-theme-base:var(--bs-primary-base);--bs-theme-text:var(--bs-primary-text);--bs-theme-text-emphasis:var(--bs-primary-text-emphasis);--bs-theme-bg:var(--bs-primary-bg);--bs-theme-bg-subtle:var(--bs-primary-bg-subtle);--bs-theme-bg-muted:var(--bs-primary-bg-muted);--bs-theme-border:var(--bs-primary-border);--bs-theme-focus-ring:var(--bs-primary-focus-ring);--bs-theme-contrast:var(--bs-primary-contrast)}.theme-accent{--bs-theme-base:var(--bs-accent-base);--bs-theme-text:var(--bs-accent-text);--bs-theme-text-emphasis:var(--bs-accent-text-emphasis);--bs-theme-bg:var(--bs-accent-bg);--bs-theme-bg-subtle:var(--bs-accent-bg-subtle);--bs-theme-bg-muted:var(--bs-accent-bg-muted);--bs-theme-border:var(--bs-accent-border);--bs-theme-focus-ring:var(--bs-accent-focus-ring);--bs-theme-contrast:var(--bs-accent-contrast)}.theme-success{--bs-theme-base:var(--bs-success-base);--bs-theme-text:var(--bs-success-text);--bs-theme-text-emphasis:var(--bs-success-text-emphasis);--bs-theme-bg:var(--bs-success-bg);--bs-theme-bg-subtle:var(--bs-success-bg-subtle);--bs-theme-bg-muted:var(--bs-success-bg-muted);--bs-theme-border:var(--bs-success-border);--bs-theme-focus-ring:var(--bs-success-focus-ring);--bs-theme-contrast:var(--bs-success-contrast)}.theme-danger{--bs-theme-base:var(--bs-danger-base);--bs-theme-text:var(--bs-danger-text);--bs-theme-text-emphasis:var(--bs-danger-text-emphasis);--bs-theme-bg:var(--bs-danger-bg);--bs-theme-bg-subtle:var(--bs-danger-bg-subtle);--bs-theme-bg-muted:var(--bs-danger-bg-muted);--bs-theme-border:var(--bs-danger-border);--bs-theme-focus-ring:var(--bs-danger-focus-ring);--bs-theme-contrast:var(--bs-danger-contrast)}.theme-warning{--bs-theme-base:var(--bs-warning-base);--bs-theme-text:var(--bs-warning-text);--bs-theme-text-emphasis:var(--bs-warning-text-emphasis);--bs-theme-bg:var(--bs-warning-bg);--bs-theme-bg-subtle:var(--bs-warning-bg-subtle);--bs-theme-bg-muted:var(--bs-warning-bg-muted);--bs-theme-border:var(--bs-warning-border);--bs-theme-focus-ring:var(--bs-warning-focus-ring);--bs-theme-contrast:var(--bs-warning-contrast)}.theme-info{--bs-theme-base:var(--bs-info-base);--bs-theme-text:var(--bs-info-text);--bs-theme-text-emphasis:var(--bs-info-text-emphasis);--bs-theme-bg:var(--bs-info-bg);--bs-theme-bg-subtle:var(--bs-info-bg-subtle);--bs-theme-bg-muted:var(--bs-info-bg-muted);--bs-theme-border:var(--bs-info-border);--bs-theme-focus-ring:var(--bs-info-focus-ring);--bs-theme-contrast:var(--bs-info-contrast)}.theme-inverse{--bs-theme-base:var(--bs-inverse-base);--bs-theme-text:var(--bs-inverse-text);--bs-theme-text-emphasis:var(--bs-inverse-text-emphasis);--bs-theme-bg:var(--bs-inverse-bg);--bs-theme-bg-subtle:var(--bs-inverse-bg-subtle);--bs-theme-bg-muted:var(--bs-inverse-bg-muted);--bs-theme-border:var(--bs-inverse-border);--bs-theme-focus-ring:var(--bs-inverse-focus-ring);--bs-theme-contrast:var(--bs-inverse-contrast)}.theme-secondary{--bs-theme-base:var(--bs-secondary-base);--bs-theme-text:var(--bs-secondary-text);--bs-theme-text-emphasis:var(--bs-secondary-text-emphasis);--bs-theme-bg:var(--bs-secondary-bg);--bs-theme-bg-subtle:var(--bs-secondary-bg-subtle);--bs-theme-bg-muted:var(--bs-secondary-bg-muted);--bs-theme-border:var(--bs-secondary-border);--bs-theme-focus-ring:var(--bs-secondary-focus-ring);--bs-theme-contrast:var(--bs-secondary-contrast)}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute!important}.visually-hidden *,.visually-hidden-focusable:not(:focus):not(:focus-within) *{overflow:hidden!important}.stretched-link:after{z-index:1;content:"";position:absolute;inset:0}.text-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vr{width:var(--bs-vr-border-width,var(--bs-border-width));background-color:var(--bs-border-color);align-self:stretch;min-height:1em;display:inline-block}}@layer utilities{.align-baseline{vertical-align:baseline}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.align-text-bottom{vertical-align:text-bottom}.align-text-top{vertical-align:text-top}[class*=ratio-]{aspect-ratio:var(--bs-ratio)}.ratio-auto{--bs-ratio:auto}.ratio-1x1{--bs-ratio:1/1}.ratio-4x3{--bs-ratio:4/3}.ratio-16x9{--bs-ratio:16/9}.ratio-21x9{--bs-ratio:21/9}.float-start{float:inline-start}.float-end{float:inline-end}.float-none{float:none}.object-fit-contain{-o-object-fit:contain;object-fit:contain}.object-fit-cover{-o-object-fit:cover;object-fit:cover}.object-fit-fill{-o-object-fit:fill;object-fit:fill}.object-fit-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-none{-o-object-fit:none;object-fit:none}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-100{opacity:1}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-visible{overflow-x:visible}.overflow-x-scroll{overflow-x:scroll}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overflow-y-visible{overflow-y:visible}.overflow-y-scroll{overflow-y:scroll}.d-inline{display:inline}.d-inline-block{display:inline-block}.d-block{display:block}.d-grid{display:grid}.d-inline-grid{display:inline-grid}.d-table{display:table}.d-table-row{display:table-row}.d-table-cell{display:table-cell}.d-flex{display:flex}.d-inline-flex{display:inline-flex}.d-contents{display:contents}.d-flow-root{display:flow-root}.d-none{display:none}.shadow{box-shadow:var(--bs-box-shadow)}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)}.shadow-none{box-shadow:none}.focus-ring-primary{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-blue-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-blue-500)75%,var(--bs-bg-body)))}.focus-ring-accent{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-indigo-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-indigo-500)75%,var(--bs-bg-body)))}.focus-ring-success{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-green-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-green-500)75%,var(--bs-bg-body)))}.focus-ring-danger{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-red-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-red-500)75%,var(--bs-bg-body)))}.focus-ring-warning{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-yellow-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-yellow-400)85%,var(--bs-bg-body)))}.focus-ring-info{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-cyan-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-cyan-500)75%,var(--bs-bg-body)))}.focus-ring-inverse{--bs-focus-ring-color:color-mix(in oklch,light-dark(var(--bs-gray-900),var(--bs-gray-100))50%,var(--bs-bg-body))}.focus-ring-secondary{--bs-focus-ring-color:color-mix(in oklch,light-dark(var(--bs-gray-500),var(--bs-gray-300))50%,var(--bs-bg-body))}.position-static{position:static}.position-relative{position:relative}.position-absolute{position:absolute}.position-fixed{position:fixed}.position-sticky{position:sticky}.top-0{top:0}.top-50{top:50%}.top-100{top:100%}.bottom-0{bottom:0}.bottom-50{bottom:50%}.bottom-100{bottom:100%}.start-0{left:0}.start-50{left:50%}.start-100{left:100%}.end-0{right:0}.end-50{right:50%}.end-100{right:100%}.translate-middle{transform:translate(-50%,-50%)}.translate-middle-x{transform:translate(-50%)}.translate-middle-y{transform:translateY(-50%)}.border{border:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-0{border:0}.border-top{border-block-start:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-top-0{border-block-start:0}.border-end{border-inline-end:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-end-0{border-inline-end:0}.border-bottom{border-block-end:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-bottom-0{border-block-end:0}.border-start{border-inline-start:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-start-0{border-inline-start:0}.border-block{border-block:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-block-0{border-block:0}.border-inline{border-inline:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-inline-0{border-inline:0}.border-primary{--bs-border-color:var(--bs-blue-500);border-color:var(--bs-border-color)}.border-accent{--bs-border-color:var(--bs-indigo-500);border-color:var(--bs-border-color)}.border-success{--bs-border-color:var(--bs-green-500);border-color:var(--bs-border-color)}.border-danger{--bs-border-color:var(--bs-red-500);border-color:var(--bs-border-color)}.border-warning{--bs-border-color:var(--bs-yellow-500);border-color:var(--bs-border-color)}.border-info{--bs-border-color:var(--bs-cyan-500);border-color:var(--bs-border-color)}.border-inverse{--bs-border-color:light-dark(var(--bs-gray-900),var(--bs-gray-025));border-color:var(--bs-border-color)}.border-secondary{--bs-border-color:light-dark(var(--bs-gray-100),var(--bs-gray-600));border-color:var(--bs-border-color)}.border-bg{--bs-border-color:var(--bs-bg-body);border-color:var(--bs-border-color)}.border-body{--bs-border-color:light-dark(var(--bs-gray-300),var(--bs-gray-800));border-color:var(--bs-border-color)}.border-muted{--bs-border-color:light-dark(var(--bs-gray-200),var(--bs-gray-800));border-color:var(--bs-border-color)}.border-subtle{--bs-border-color:light-dark(var(--bs-gray-100),var(--bs-gray-900));border-color:var(--bs-border-color)}.border-emphasized{--bs-border-color:light-dark(var(--bs-gray-400),var(--bs-gray-600));border-color:var(--bs-border-color)}.border-white{--bs-border-color:var(--bs-white);border-color:var(--bs-border-color)}.border-black{--bs-border-color:var(--bs-black);border-color:var(--bs-border-color)}.border-subtle-primary{--bs-border-color:light-dark(var(--bs-blue-300),var(--bs-blue-600));border-color:var(--bs-border-color)}.border-subtle-accent{--bs-border-color:light-dark(var(--bs-indigo-300),var(--bs-indigo-600));border-color:var(--bs-border-color)}.border-subtle-success{--bs-border-color:light-dark(var(--bs-green-300),var(--bs-green-600));border-color:var(--bs-border-color)}.border-subtle-danger{--bs-border-color:light-dark(var(--bs-red-300),var(--bs-red-600));border-color:var(--bs-border-color)}.border-subtle-warning{--bs-border-color:light-dark(var(--bs-yellow-300),var(--bs-yellow-600));border-color:var(--bs-border-color)}.border-subtle-info{--bs-border-color:light-dark(var(--bs-cyan-300),var(--bs-cyan-600));border-color:var(--bs-border-color)}.border-subtle-inverse{--bs-border-color:light-dark(var(--bs-gray-400),var(--bs-gray-100));border-color:var(--bs-border-color)}.border-subtle-secondary{--bs-border-color:light-dark(var(--bs-gray-300),var(--bs-gray-600));border-color:var(--bs-border-color)}.border-1{border-width:1px}.border-2{border-width:2px}.border-3{border-width:3px}.border-4{border-width:4px}.border-5{border-width:5px}.border-10{border-color:color-mix(in oklch,var(--bs-border-color)10%,transparent)}.border-20{border-color:color-mix(in oklch,var(--bs-border-color)20%,transparent)}.border-30{border-color:color-mix(in oklch,var(--bs-border-color)30%,transparent)}.border-40{border-color:color-mix(in oklch,var(--bs-border-color)40%,transparent)}.border-50{border-color:color-mix(in oklch,var(--bs-border-color)50%,transparent)}.border-60{border-color:color-mix(in oklch,var(--bs-border-color)60%,transparent)}.border-70{border-color:color-mix(in oklch,var(--bs-border-color)70%,transparent)}.border-80{border-color:color-mix(in oklch,var(--bs-border-color)80%,transparent)}.border-90{border-color:color-mix(in oklch,var(--bs-border-color)90%,transparent)}.border-100{border-color:var(--bs-border-color)}.w-1{width:1rem}.w-2{width:2rem}.w-3{width:3rem}.w-4{width:4rem}.w-5{width:5rem}.w-6{width:6rem}.w-7{width:7rem}.w-8{width:8rem}.w-9{width:9rem}.w-10{width:10rem}.w-11{width:11rem}.w-12{width:12rem}.w-25{width:25%}.w-50{width:50%}.w-75{width:75%}.w-100{width:100%}.w-auto{width:auto}.w-min{width:min-content}.w-max{width:max-content}.w-fit{width:fit-content}.max-w-100{max-width:100%}.min-w-0{min-width:0}.min-w-100{min-width:100%}.vw-100{width:100vw}.min-vw-100{min-width:100vw}.h-25{height:25%}.h-50{height:50%}.h-75{height:75%}.h-100{height:100%}.h-auto{height:auto}.h-min{height:min-content}.h-max{height:max-content}.h-fit{height:fit-content}.max-h-100{max-height:100%}.min-h-0{min-height:0}.min-h-100{min-height:100%}.vh-100{height:100vh}.min-vh-100{min-height:100vh}.flex-fill{flex:auto}.flex-row{flex-direction:row}.flex-column{flex-direction:column}.flex-row-reverse{flex-direction:row-reverse}.flex-column-reverse{flex-direction:column-reverse}.flex-grow-0{flex-grow:0}.flex-grow-1{flex-grow:1}.flex-shrink-0{flex-shrink:0}.flex-shrink-1{flex-shrink:1}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-start{justify-content:flex-start}.justify-content-end{justify-content:flex-end}.justify-content-center{justify-content:center}.justify-content-between{justify-content:space-between}.justify-content-around{justify-content:space-around}.justify-content-evenly{justify-content:space-evenly}.justify-items-start{justify-items:start}.justify-items-end{justify-items:end}.justify-items-center{justify-items:center}.justify-items-stretch{justify-items:stretch}.justify-self-start{justify-self:flex-start}.justify-self-end{justify-self:flex-end}.justify-self-center{justify-self:center}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.align-items-center{align-items:center}.align-items-baseline{align-items:baseline}.align-items-stretch{align-items:stretch}.align-content-start{align-content:flex-start}.align-content-end{align-content:flex-end}.align-content-center{align-content:center}.align-content-between{align-content:space-between}.align-content-around{align-content:space-around}.align-content-stretch{align-content:stretch}.align-self-auto{align-self:auto}.align-self-start{align-self:flex-start}.align-self-end{align-self:flex-end}.align-self-center{align-self:center}.align-self-baseline{align-self:baseline}.align-self-stretch{align-self:stretch}.place-items-start{place-items:start}.place-items-end{place-items:end}.place-items-center{place-items:center}.place-items-stretch{place-items:stretch stretch}.grid-cols-3{--bs-columns:3}.grid-cols-4{--bs-columns:4}.grid-cols-6{--bs-columns:6}.grid-cols-fill{grid-column:1/-1}.grid-auto-flow-row{grid-auto-flow:row}.grid-auto-flow-column{grid-auto-flow:column}.grid-auto-flow-dense{grid-auto-flow:dense}.order-first{order:-1}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-last{order:6}.m--2{margin:-.5rem}.m--1{margin:-.25rem}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-3{margin:1rem}.m-4{margin:1.5rem}.m-5{margin:3rem}.m-auto{margin:auto}.mx--2{margin-inline:-.5rem}.mx--1{margin-inline:-.25rem}.mx-0{margin-inline:0}.mx-1{margin-inline:.25rem}.mx-2{margin-inline:.5rem}.mx-3{margin-inline:1rem}.mx-4{margin-inline:1.5rem}.mx-5{margin-inline:3rem}.mx-auto{margin-inline:auto}.my--2{margin-block:-.5rem}.my--1{margin-block:-.25rem}.my-0{margin-block:0}.my-1{margin-block:.25rem}.my-2{margin-block:.5rem}.my-3{margin-block:1rem}.my-4{margin-block:1.5rem}.my-5{margin-block:3rem}.my-auto{margin-block:auto}.mt--2{margin-block-start:-.5rem}.mt--1{margin-block-start:-.25rem}.mt-0{margin-block-start:0}.mt-1{margin-block-start:.25rem}.mt-2{margin-block-start:.5rem}.mt-3{margin-block-start:1rem}.mt-4{margin-block-start:1.5rem}.mt-5{margin-block-start:3rem}.mt-auto{margin-block-start:auto}.me--2{margin-inline-end:-.5rem}.me--1{margin-inline-end:-.25rem}.me-0{margin-inline-end:0}.me-1{margin-inline-end:.25rem}.me-2{margin-inline-end:.5rem}.me-3{margin-inline-end:1rem}.me-4{margin-inline-end:1.5rem}.me-5{margin-inline-end:3rem}.me-auto{margin-inline-end:auto}.mb--2{margin-block-end:-.5rem}.mb--1{margin-block-end:-.25rem}.mb-0{margin-block-end:0}.mb-1{margin-block-end:.25rem}.mb-2{margin-block-end:.5rem}.mb-3{margin-block-end:1rem}.mb-4{margin-block-end:1.5rem}.mb-5{margin-block-end:3rem}.mb-auto{margin-block-end:auto}.ms--2{margin-inline-start:-.5rem}.ms--1{margin-inline-start:-.25rem}.ms-0{margin-inline-start:0}.ms-1{margin-inline-start:.25rem}.ms-2{margin-inline-start:.5rem}.ms-3{margin-inline-start:1rem}.ms-4{margin-inline-start:1.5rem}.ms-5{margin-inline-start:3rem}.ms-auto{margin-inline-start:auto}.p--2{padding:-.5rem}.p--1{padding:-.25rem}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:1rem}.p-4{padding:1.5rem}.p-5{padding:3rem}.px--2{padding-inline:-.5rem}.px--1{padding-inline:-.25rem}.px-0{padding-inline:0}.px-1{padding-inline:.25rem}.px-2{padding-inline:.5rem}.px-3{padding-inline:1rem}.px-4{padding-inline:1.5rem}.px-5{padding-inline:3rem}.py--2{padding-block:-.5rem}.py--1{padding-block:-.25rem}.py-0{padding-block:0}.py-1{padding-block:.25rem}.py-2{padding-block:.5rem}.py-3{padding-block:1rem}.py-4{padding-block:1.5rem}.py-5{padding-block:3rem}.pt--2{padding-block-start:-.5rem}.pt--1{padding-block-start:-.25rem}.pt-0{padding-block-start:0}.pt-1{padding-block-start:.25rem}.pt-2{padding-block-start:.5rem}.pt-3{padding-block-start:1rem}.pt-4{padding-block-start:1.5rem}.pt-5{padding-block-start:3rem}.pe--2{padding-inline-end:-.5rem}.pe--1{padding-inline-end:-.25rem}.pe-0{padding-inline-end:0}.pe-1{padding-inline-end:.25rem}.pe-2{padding-inline-end:.5rem}.pe-3{padding-inline-end:1rem}.pe-4{padding-inline-end:1.5rem}.pe-5{padding-inline-end:3rem}.pb--2{padding-block-end:-.5rem}.pb--1{padding-block-end:-.25rem}.pb-0{padding-block-end:0}.pb-1{padding-block-end:.25rem}.pb-2{padding-block-end:.5rem}.pb-3{padding-block-end:1rem}.pb-4{padding-block-end:1.5rem}.pb-5{padding-block-end:3rem}.ps--2{padding-inline-start:-.5rem}.ps--1{padding-inline-start:-.25rem}.ps-0{padding-inline-start:0}.ps-1{padding-inline-start:.25rem}.ps-2{padding-inline-start:.5rem}.ps-3{padding-inline-start:1rem}.ps-4{padding-inline-start:1.5rem}.ps-5{padding-inline-start:3rem}.gap--2{gap:-.5rem}.gap--1{gap:-.25rem}.gap-0{gap:0}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:1rem}.gap-4{gap:1.5rem}.gap-5{gap:3rem}.row-gap--2{row-gap:-.5rem}.row-gap--1{row-gap:-.25rem}.row-gap-0{row-gap:0}.row-gap-1{row-gap:.25rem}.row-gap-2{row-gap:.5rem}.row-gap-3{row-gap:1rem}.row-gap-4{row-gap:1.5rem}.row-gap-5{row-gap:3rem}.column-gap--2{-moz-column-gap:-.5rem;column-gap:-.5rem}.column-gap--1{-moz-column-gap:-.25rem;column-gap:-.25rem}.column-gap-0{-moz-column-gap:0;column-gap:0}.column-gap-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-5{-moz-column-gap:3rem;column-gap:3rem}.font-monospace{font-family:var(--bs-font-mono)}.font-body{font-family:var(--bs-body-font-family)}.fs-xs{font-size:var(--bs-font-size-xs)}.fs-sm{font-size:var(--bs-font-size-sm)}.fs-md{font-size:var(--bs-font-size-md)}.fs-lg{font-size:var(--bs-font-size-lg)}.fs-xl{font-size:var(--bs-font-size-xl)}.fs-2xl{font-size:var(--bs-font-size-2xl)}.fs-3xl{font-size:var(--bs-font-size-3xl)}.fs-4xl{font-size:var(--bs-font-size-4xl)}.fs-5xl{font-size:var(--bs-font-size-5xl)}.fs-6xl{font-size:var(--bs-font-size-6xl)}.text-xs{font-size:var(--bs-font-size-xs);line-height:var(--bs-line-height-xs)}.text-sm{font-size:var(--bs-font-size-sm);line-height:var(--bs-line-height-sm)}.text-md{font-size:var(--bs-font-size-md);line-height:var(--bs-line-height-md)}.text-lg{font-size:var(--bs-font-size-lg);line-height:var(--bs-line-height-lg)}.text-xl{font-size:var(--bs-font-size-xl);line-height:var(--bs-line-height-xl)}.text-2xl{font-size:var(--bs-font-size-2xl);line-height:var(--bs-line-height-2xl)}.text-3xl{font-size:var(--bs-font-size-3xl);line-height:var(--bs-line-height-3xl)}.text-4xl{font-size:var(--bs-font-size-4xl);line-height:var(--bs-line-height-4xl)}.text-5xl{font-size:var(--bs-font-size-5xl);line-height:var(--bs-line-height-5xl)}.text-6xl{font-size:var(--bs-font-size-6xl);line-height:var(--bs-line-height-6xl)}.fst-italic{font-style:italic}.fst-normal{font-style:normal}.fw-lighter{font-weight:lighter}.fw-light{font-weight:300}.fw-normal{font-weight:400}.fw-medium{font-weight:500}.fw-semibold{font-weight:600}.fw-bold{font-weight:700}.fw-bolder{font-weight:bolder}.lh-1{line-height:1}.lh-sm{line-height:1.25}.lh-base{line-height:1.5}.lh-lg{line-height:2}.text-start{text-align:start}.text-end{text-align:end}.text-center{text-align:center}.text-decoration-none{text-decoration:none}.text-decoration-underline{text-decoration:underline}.text-decoration-line-through{text-decoration:line-through}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-wrap{white-space:wrap}.text-nowrap{white-space:nowrap}.text-balance{white-space:balance}.text-pretty{white-space:pretty}.text-break{word-wrap:break-word;word-break:break-word}.fg-primary{--bs-fg:light-dark(var(--bs-blue-600),var(--bs-blue-400));color:var(--bs-fg)}.fg-accent{--bs-fg:light-dark(var(--bs-indigo-600),color-mix(in oklch,var(--bs-indigo-400),var(--bs-indigo-300)));color:var(--bs-fg)}.fg-success{--bs-fg:light-dark(var(--bs-green-600),var(--bs-green-400));color:var(--bs-fg)}.fg-danger{--bs-fg:light-dark(var(--bs-red-600),var(--bs-red-400));color:var(--bs-fg)}.fg-warning{--bs-fg:light-dark(var(--bs-yellow-700),var(--bs-yellow-400));color:var(--bs-fg)}.fg-info{--bs-fg:light-dark(var(--bs-cyan-600),var(--bs-cyan-400));color:var(--bs-fg)}.fg-inverse{--bs-fg:light-dark(var(--bs-gray-900),var(--bs-gray-200));color:var(--bs-fg)}.fg-secondary{--bs-fg:light-dark(var(--bs-gray-600),var(--bs-gray-400));color:var(--bs-fg)}.fg-body{--bs-fg:light-dark(var(--bs-gray-900),var(--bs-gray-050));color:var(--bs-fg)}.fg-1{--bs-fg:light-dark(var(--bs-gray-800),var(--bs-gray-200));color:var(--bs-fg)}.fg-2{--bs-fg:light-dark(var(--bs-gray-700),var(--bs-gray-300));color:var(--bs-fg)}.fg-3{--bs-fg:light-dark(var(--bs-gray-600),var(--bs-gray-500));color:var(--bs-fg)}.fg-4{--bs-fg:light-dark(var(--bs-gray-500),var(--bs-gray-600));color:var(--bs-fg)}.fg-white{--bs-fg:var(--bs-white);color:var(--bs-fg)}.fg-black{--bs-fg:var(--bs-black);color:var(--bs-fg)}.fg-inherit{--bs-fg:inherit;color:var(--bs-fg)}.fg-emphasis-primary{--bs-fg:light-dark(var(--bs-blue-800),var(--bs-blue-200));color:var(--bs-fg)}.fg-emphasis-accent{--bs-fg:light-dark(var(--bs-indigo-800),var(--bs-indigo-300));color:var(--bs-fg)}.fg-emphasis-success{--bs-fg:light-dark(var(--bs-green-800),var(--bs-green-300));color:var(--bs-fg)}.fg-emphasis-danger{--bs-fg:light-dark(var(--bs-red-800),var(--bs-red-300));color:var(--bs-fg)}.fg-emphasis-warning{--bs-fg:light-dark(var(--bs-yellow-800),var(--bs-yellow-300));color:var(--bs-fg)}.fg-emphasis-info{--bs-fg:light-dark(var(--bs-cyan-800),var(--bs-cyan-300));color:var(--bs-fg)}.fg-emphasis-inverse{--bs-fg:light-dark(var(--bs-gray-975),var(--bs-white));color:var(--bs-fg)}.fg-emphasis-secondary{--bs-fg:light-dark(var(--bs-gray-800),var(--bs-gray-200));color:var(--bs-fg)}.fg-contrast-primary,.fg-contrast-accent,.fg-contrast-success,.fg-contrast-danger{--bs-fg:var(--bs-white);color:var(--bs-fg)}.fg-contrast-warning,.fg-contrast-info{--bs-fg:var(--bs-gray-900);color:var(--bs-fg)}.fg-contrast-inverse{--bs-fg:light-dark(var(--bs-white),var(--bs-gray-900));color:var(--bs-fg)}.fg-contrast-secondary{--bs-fg:light-dark(var(--bs-gray-900),var(--bs-white));color:var(--bs-fg)}.fg-10{color:color-mix(in oklch,var(--bs-fg)10%,transparent)}.fg-20{color:color-mix(in oklch,var(--bs-fg)20%,transparent)}.fg-30{color:color-mix(in oklch,var(--bs-fg)30%,transparent)}.fg-40{color:color-mix(in oklch,var(--bs-fg)40%,transparent)}.fg-50{color:color-mix(in oklch,var(--bs-fg)50%,transparent)}.fg-60{color:color-mix(in oklch,var(--bs-fg)60%,transparent)}.fg-70{color:color-mix(in oklch,var(--bs-fg)70%,transparent)}.fg-80{color:color-mix(in oklch,var(--bs-fg)80%,transparent)}.fg-90{color:color-mix(in oklch,var(--bs-fg)90%,transparent)}.fg-100{color:var(--bs-fg)}.link-10,.link-10-hover:hover{color:color-mix(in oklch,var(--bs-link-color)10%,transparent)}.link-20,.link-20-hover:hover{color:color-mix(in oklch,var(--bs-link-color)20%,transparent)}.link-30,.link-30-hover:hover{color:color-mix(in oklch,var(--bs-link-color)30%,transparent)}.link-40,.link-40-hover:hover{color:color-mix(in oklch,var(--bs-link-color)40%,transparent)}.link-50,.link-50-hover:hover{color:color-mix(in oklch,var(--bs-link-color)50%,transparent)}.link-60,.link-60-hover:hover{color:color-mix(in oklch,var(--bs-link-color)60%,transparent)}.link-70,.link-70-hover:hover{color:color-mix(in oklch,var(--bs-link-color)70%,transparent)}.link-80,.link-80-hover:hover{color:color-mix(in oklch,var(--bs-link-color)80%,transparent)}.link-90,.link-90-hover:hover{color:color-mix(in oklch,var(--bs-link-color)90%,transparent)}.link-100,.link-100-hover:hover{color:var(--bs-link-color)}.underline-offset-1,.underline-offset-1-hover:hover{text-underline-offset:.125em}.underline-offset-2,.underline-offset-2-hover:hover{text-underline-offset:.25em}.underline-offset-3,.underline-offset-3-hover:hover{text-underline-offset:.375em}.underline-primary{text-decoration-color:light-dark(var(--bs-blue-600),var(--bs-blue-400))}.underline-accent{text-decoration-color:light-dark(var(--bs-indigo-600),color-mix(in oklch,var(--bs-indigo-400),var(--bs-indigo-300)))}.underline-success{text-decoration-color:light-dark(var(--bs-green-600),var(--bs-green-400))}.underline-danger{text-decoration-color:light-dark(var(--bs-red-600),var(--bs-red-400))}.underline-warning{text-decoration-color:light-dark(var(--bs-yellow-700),var(--bs-yellow-400))}.underline-info{text-decoration-color:light-dark(var(--bs-cyan-600),var(--bs-cyan-400))}.underline-inverse{text-decoration-color:light-dark(var(--bs-gray-900),var(--bs-gray-200))}.underline-secondary{text-decoration-color:light-dark(var(--bs-gray-600),var(--bs-gray-400))}.underline-10,.underline-10-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)10%,transparent)}.underline-20,.underline-20-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)20%,transparent)}.underline-30,.underline-30-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)30%,transparent)}.underline-40,.underline-40-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)40%,transparent)}.underline-50,.underline-50-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)50%,transparent)}.underline-60,.underline-60-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)60%,transparent)}.underline-70,.underline-70-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)70%,transparent)}.underline-80,.underline-80-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)80%,transparent)}.underline-90,.underline-90-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)90%,transparent)}.underline-100,.underline-100-hover:hover{text-decoration-color:var(--bs-link-color)}.underline-thickness-1,.underline-thickness-1-hover:hover{text-decoration-thickness:1px}.underline-thickness-2,.underline-thickness-2-hover:hover{text-decoration-thickness:2px}.underline-thickness-3,.underline-thickness-3-hover:hover{text-decoration-thickness:3px}.underline-thickness-4,.underline-thickness-4-hover:hover{text-decoration-thickness:4px}.underline-thickness-5,.underline-thickness-5-hover:hover{text-decoration-thickness:5px}.bg-primary{--bs-bg:var(--bs-blue-500);background-color:var(--bs-bg)}.bg-accent{--bs-bg:var(--bs-indigo-500);background-color:var(--bs-bg)}.bg-success{--bs-bg:var(--bs-green-500);background-color:var(--bs-bg)}.bg-danger{--bs-bg:var(--bs-red-500);background-color:var(--bs-bg)}.bg-warning{--bs-bg:var(--bs-yellow-500);background-color:var(--bs-bg)}.bg-info{--bs-bg:var(--bs-cyan-500);background-color:var(--bs-bg)}.bg-inverse{--bs-bg:light-dark(var(--bs-gray-900),var(--bs-gray-025));background-color:var(--bs-bg)}.bg-secondary{--bs-bg:light-dark(var(--bs-gray-100),var(--bs-gray-600));background-color:var(--bs-bg)}.bg-body{--bs-bg:light-dark(var(--bs-white),var(--bs-gray-975));background-color:var(--bs-bg)}.bg-1{--bs-bg:light-dark(var(--bs-gray-025),var(--bs-gray-950));background-color:var(--bs-bg)}.bg-2{--bs-bg:light-dark(var(--bs-gray-050),var(--bs-gray-900));background-color:var(--bs-bg)}.bg-3{--bs-bg:light-dark(var(--bs-gray-100),var(--bs-gray-800));background-color:var(--bs-bg)}.bg-4{--bs-bg:light-dark(var(--bs-gray-200),var(--bs-gray-700));background-color:var(--bs-bg)}.bg-white{--bs-bg:var(--bs-white);background-color:var(--bs-bg)}.bg-black{--bs-bg:var(--bs-black);background-color:var(--bs-bg)}.bg-transparent{--bs-bg:transparent;background-color:var(--bs-bg)}.bg-inherit{--bs-bg:inherit;background-color:var(--bs-bg)}.bg-subtle-primary{--bs-bg:light-dark(var(--bs-blue-100),var(--bs-blue-900));background-color:var(--bs-bg)}.bg-subtle-accent{--bs-bg:light-dark(var(--bs-indigo-100),var(--bs-indigo-900));background-color:var(--bs-bg)}.bg-subtle-success{--bs-bg:light-dark(var(--bs-green-100),var(--bs-green-900));background-color:var(--bs-bg)}.bg-subtle-danger{--bs-bg:light-dark(var(--bs-red-100),var(--bs-red-900));background-color:var(--bs-bg)}.bg-subtle-warning{--bs-bg:light-dark(var(--bs-yellow-100),var(--bs-yellow-900));background-color:var(--bs-bg)}.bg-subtle-info{--bs-bg:light-dark(var(--bs-cyan-100),var(--bs-cyan-900));background-color:var(--bs-bg)}.bg-subtle-inverse{--bs-bg:light-dark(var(--bs-gray-100),var(--bs-gray-900));background-color:var(--bs-bg)}.bg-subtle-secondary{--bs-bg:light-dark(var(--bs-gray-050),var(--bs-gray-800));background-color:var(--bs-bg)}.bg-muted-primary{--bs-bg:light-dark(var(--bs-blue-200),var(--bs-blue-800));background-color:var(--bs-bg)}.bg-muted-accent{--bs-bg:light-dark(var(--bs-indigo-200),var(--bs-indigo-800));background-color:var(--bs-bg)}.bg-muted-success{--bs-bg:light-dark(var(--bs-green-200),var(--bs-green-800));background-color:var(--bs-bg)}.bg-muted-danger{--bs-bg:light-dark(var(--bs-red-200),var(--bs-red-800));background-color:var(--bs-bg)}.bg-muted-warning{--bs-bg:light-dark(var(--bs-yellow-200),var(--bs-yellow-800));background-color:var(--bs-bg)}.bg-muted-info{--bs-bg:light-dark(var(--bs-cyan-200),var(--bs-cyan-800));background-color:var(--bs-bg)}.bg-muted-inverse{--bs-bg:light-dark(var(--bs-gray-200),var(--bs-gray-300));background-color:var(--bs-bg)}.bg-muted-secondary{--bs-bg:light-dark(var(--bs-gray-100),var(--bs-gray-700));background-color:var(--bs-bg)}.bg-10{background-color:color-mix(in oklch,var(--bs-bg)10%,transparent)}.bg-20{background-color:color-mix(in oklch,var(--bs-bg)20%,transparent)}.bg-30{background-color:color-mix(in oklch,var(--bs-bg)30%,transparent)}.bg-40{background-color:color-mix(in oklch,var(--bs-bg)40%,transparent)}.bg-50{background-color:color-mix(in oklch,var(--bs-bg)50%,transparent)}.bg-60{background-color:color-mix(in oklch,var(--bs-bg)60%,transparent)}.bg-70{background-color:color-mix(in oklch,var(--bs-bg)70%,transparent)}.bg-80{background-color:color-mix(in oklch,var(--bs-bg)80%,transparent)}.bg-90{background-color:color-mix(in oklch,var(--bs-bg)90%,transparent)}.bg-100{background-color:var(--bs-bg)}.theme-contrast{background-color:var(--bs-theme-bg);color:var(--bs-theme-contrast)}.theme-subtle{background-color:var(--bs-theme-bg-subtle);color:var(--bs-theme-text)}.theme-muted{background-color:var(--bs-theme-bg-muted);color:var(--bs-theme-text-emphasis)}.theme-border{border:var(--bs-border-width)solid var(--bs-theme-border)}.bg-gradient{background-image:var(--bs-gradient)}.user-select-all{user-select:all}.user-select-auto{user-select:auto}.user-select-none{user-select:none}.pe-none{pointer-events:none}.pe-auto{pointer-events:auto}.rounded{border-radius:var(--bs-border-radius)}.rounded-0{border-radius:0}.rounded-1{border-radius:var(--bs-border-radius-sm)}.rounded-2{border-radius:var(--bs-border-radius)}.rounded-3{border-radius:var(--bs-border-radius-lg)}.rounded-4{border-radius:var(--bs-border-radius-xl)}.rounded-5{border-radius:var(--bs-border-radius-2xl)}.rounded-circle{border-radius:50%}.rounded-pill{border-radius:var(--bs-border-radius-pill)}.rounded-top{border-start-start-radius:var(--bs-border-radius);border-start-end-radius:var(--bs-border-radius)}.rounded-top-0{border-start-start-radius:0;border-start-end-radius:0}.rounded-top-1{border-start-start-radius:var(--bs-border-radius-sm);border-start-end-radius:var(--bs-border-radius-sm)}.rounded-top-2{border-start-start-radius:var(--bs-border-radius);border-start-end-radius:var(--bs-border-radius)}.rounded-top-3{border-start-start-radius:var(--bs-border-radius-lg);border-start-end-radius:var(--bs-border-radius-lg)}.rounded-top-4{border-start-start-radius:var(--bs-border-radius-xl);border-start-end-radius:var(--bs-border-radius-xl)}.rounded-top-5{border-start-start-radius:var(--bs-border-radius-2xl);border-start-end-radius:var(--bs-border-radius-2xl)}.rounded-top-circle{border-start-start-radius:50%;border-start-end-radius:50%}.rounded-top-pill{border-start-start-radius:var(--bs-border-radius-pill);border-start-end-radius:var(--bs-border-radius-pill)}.rounded-end{border-end-end-radius:var(--bs-border-radius);border-end-start-radius:var(--bs-border-radius)}.rounded-end-0{border-end-end-radius:0;border-end-start-radius:0}.rounded-end-1{border-end-end-radius:var(--bs-border-radius-sm);border-end-start-radius:var(--bs-border-radius-sm)}.rounded-end-2{border-end-end-radius:var(--bs-border-radius);border-end-start-radius:var(--bs-border-radius)}.rounded-end-3{border-end-end-radius:var(--bs-border-radius-lg);border-end-start-radius:var(--bs-border-radius-lg)}.rounded-end-4{border-end-end-radius:var(--bs-border-radius-xl);border-end-start-radius:var(--bs-border-radius-xl)}.rounded-end-5{border-end-end-radius:var(--bs-border-radius-2xl);border-end-start-radius:var(--bs-border-radius-2xl)}.rounded-end-circle{border-end-end-radius:50%;border-end-start-radius:50%}.rounded-end-pill{border-end-end-radius:var(--bs-border-radius-pill);border-end-start-radius:var(--bs-border-radius-pill)}.rounded-bottom{border-end-end-radius:var(--bs-border-radius);border-end-start-radius:var(--bs-border-radius)}.rounded-bottom-0{border-end-end-radius:0;border-end-start-radius:0}.rounded-bottom-1{border-end-end-radius:var(--bs-border-radius-sm);border-end-start-radius:var(--bs-border-radius-sm)}.rounded-bottom-2{border-end-end-radius:var(--bs-border-radius);border-end-start-radius:var(--bs-border-radius)}.rounded-bottom-3{border-end-end-radius:var(--bs-border-radius-lg);border-end-start-radius:var(--bs-border-radius-lg)}.rounded-bottom-4{border-end-end-radius:var(--bs-border-radius-xl);border-end-start-radius:var(--bs-border-radius-xl)}.rounded-bottom-5{border-end-end-radius:var(--bs-border-radius-2xl);border-end-start-radius:var(--bs-border-radius-2xl)}.rounded-bottom-circle{border-end-end-radius:50%;border-end-start-radius:50%}.rounded-bottom-pill{border-end-end-radius:var(--bs-border-radius-pill);border-end-start-radius:var(--bs-border-radius-pill)}.rounded-start{border-start-start-radius:var(--bs-border-radius);border-start-end-radius:var(--bs-border-radius)}.rounded-start-0{border-start-start-radius:0;border-start-end-radius:0}.rounded-start-1{border-start-start-radius:var(--bs-border-radius-sm);border-start-end-radius:var(--bs-border-radius-sm)}.rounded-start-2{border-start-start-radius:var(--bs-border-radius);border-start-end-radius:var(--bs-border-radius)}.rounded-start-3{border-start-start-radius:var(--bs-border-radius-lg);border-start-end-radius:var(--bs-border-radius-lg)}.rounded-start-4{border-start-start-radius:var(--bs-border-radius-xl);border-start-end-radius:var(--bs-border-radius-xl)}.rounded-start-5{border-start-start-radius:var(--bs-border-radius-2xl);border-start-end-radius:var(--bs-border-radius-2xl)}.rounded-start-circle{border-start-start-radius:50%;border-start-end-radius:50%}.rounded-start-pill{border-start-start-radius:var(--bs-border-radius-pill);border-start-end-radius:var(--bs-border-radius-pill)}.visible{visibility:visible}.invisible{visibility:hidden}.z-n1{z-index:-1}.z-0{z-index:0}.z-1{z-index:1}.z-2{z-index:2}.z-3{z-index:3}@media (width>=576px){.float-sm-start{float:inline-start}.float-sm-end{float:inline-end}.float-sm-none{float:none}.object-fit-sm-contain{-o-object-fit:contain;object-fit:contain}.object-fit-sm-cover{-o-object-fit:cover;object-fit:cover}.object-fit-sm-fill{-o-object-fit:fill;object-fit:fill}.object-fit-sm-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-sm-none{-o-object-fit:none;object-fit:none}.d-sm-inline{display:inline}.d-sm-inline-block{display:inline-block}.d-sm-block{display:block}.d-sm-grid{display:grid}.d-sm-inline-grid{display:inline-grid}.d-sm-table{display:table}.d-sm-table-row{display:table-row}.d-sm-table-cell{display:table-cell}.d-sm-flex{display:flex}.d-sm-inline-flex{display:inline-flex}.d-sm-contents{display:contents}.d-sm-flow-root{display:flow-root}.d-sm-none{display:none}.flex-sm-fill{flex:auto}.flex-sm-row{flex-direction:row}.flex-sm-column{flex-direction:column}.flex-sm-row-reverse{flex-direction:row-reverse}.flex-sm-column-reverse{flex-direction:column-reverse}.flex-sm-grow-0{flex-grow:0}.flex-sm-grow-1{flex-grow:1}.flex-sm-shrink-0{flex-shrink:0}.flex-sm-shrink-1{flex-shrink:1}.flex-sm-wrap{flex-wrap:wrap}.flex-sm-nowrap{flex-wrap:nowrap}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-sm-start{justify-content:flex-start}.justify-content-sm-end{justify-content:flex-end}.justify-content-sm-center{justify-content:center}.justify-content-sm-between{justify-content:space-between}.justify-content-sm-around{justify-content:space-around}.justify-content-sm-evenly{justify-content:space-evenly}.justify-items-sm-start{justify-items:start}.justify-items-sm-end{justify-items:end}.justify-items-sm-center{justify-items:center}.justify-items-sm-stretch{justify-items:stretch}.justify-self-sm-start{justify-self:flex-start}.justify-self-sm-end{justify-self:flex-end}.justify-self-sm-center{justify-self:center}.align-items-sm-start{align-items:flex-start}.align-items-sm-end{align-items:flex-end}.align-items-sm-center{align-items:center}.align-items-sm-baseline{align-items:baseline}.align-items-sm-stretch{align-items:stretch}.align-content-sm-start{align-content:flex-start}.align-content-sm-end{align-content:flex-end}.align-content-sm-center{align-content:center}.align-content-sm-between{align-content:space-between}.align-content-sm-around{align-content:space-around}.align-content-sm-stretch{align-content:stretch}.align-self-sm-auto{align-self:auto}.align-self-sm-start{align-self:flex-start}.align-self-sm-end{align-self:flex-end}.align-self-sm-center{align-self:center}.align-self-sm-baseline{align-self:baseline}.align-self-sm-stretch{align-self:stretch}.place-items-sm-start{place-items:start}.place-items-sm-end{place-items:end}.place-items-sm-center{place-items:center}.place-items-sm-stretch{place-items:stretch stretch}.grid-cols-sm-3{--bs-columns:3}.grid-cols-sm-4{--bs-columns:4}.grid-cols-sm-6{--bs-columns:6}.grid-cols-sm-fill{grid-column:1/-1}.grid-auto-flow-sm-row{grid-auto-flow:row}.grid-auto-flow-sm-column{grid-auto-flow:column}.grid-auto-flow-sm-dense{grid-auto-flow:dense}.order-sm-first{order:-1}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-last{order:6}.m-sm--2{margin:-.5rem}.m-sm--1{margin:-.25rem}.m-sm-0{margin:0}.m-sm-1{margin:.25rem}.m-sm-2{margin:.5rem}.m-sm-3{margin:1rem}.m-sm-4{margin:1.5rem}.m-sm-5{margin:3rem}.m-sm-auto{margin:auto}.mx-sm--2{margin-inline:-.5rem}.mx-sm--1{margin-inline:-.25rem}.mx-sm-0{margin-inline:0}.mx-sm-1{margin-inline:.25rem}.mx-sm-2{margin-inline:.5rem}.mx-sm-3{margin-inline:1rem}.mx-sm-4{margin-inline:1.5rem}.mx-sm-5{margin-inline:3rem}.mx-sm-auto{margin-inline:auto}.my-sm--2{margin-block:-.5rem}.my-sm--1{margin-block:-.25rem}.my-sm-0{margin-block:0}.my-sm-1{margin-block:.25rem}.my-sm-2{margin-block:.5rem}.my-sm-3{margin-block:1rem}.my-sm-4{margin-block:1.5rem}.my-sm-5{margin-block:3rem}.my-sm-auto{margin-block:auto}.mt-sm--2{margin-block-start:-.5rem}.mt-sm--1{margin-block-start:-.25rem}.mt-sm-0{margin-block-start:0}.mt-sm-1{margin-block-start:.25rem}.mt-sm-2{margin-block-start:.5rem}.mt-sm-3{margin-block-start:1rem}.mt-sm-4{margin-block-start:1.5rem}.mt-sm-5{margin-block-start:3rem}.mt-sm-auto{margin-block-start:auto}.me-sm--2{margin-inline-end:-.5rem}.me-sm--1{margin-inline-end:-.25rem}.me-sm-0{margin-inline-end:0}.me-sm-1{margin-inline-end:.25rem}.me-sm-2{margin-inline-end:.5rem}.me-sm-3{margin-inline-end:1rem}.me-sm-4{margin-inline-end:1.5rem}.me-sm-5{margin-inline-end:3rem}.me-sm-auto{margin-inline-end:auto}.mb-sm--2{margin-block-end:-.5rem}.mb-sm--1{margin-block-end:-.25rem}.mb-sm-0{margin-block-end:0}.mb-sm-1{margin-block-end:.25rem}.mb-sm-2{margin-block-end:.5rem}.mb-sm-3{margin-block-end:1rem}.mb-sm-4{margin-block-end:1.5rem}.mb-sm-5{margin-block-end:3rem}.mb-sm-auto{margin-block-end:auto}.ms-sm--2{margin-inline-start:-.5rem}.ms-sm--1{margin-inline-start:-.25rem}.ms-sm-0{margin-inline-start:0}.ms-sm-1{margin-inline-start:.25rem}.ms-sm-2{margin-inline-start:.5rem}.ms-sm-3{margin-inline-start:1rem}.ms-sm-4{margin-inline-start:1.5rem}.ms-sm-5{margin-inline-start:3rem}.ms-sm-auto{margin-inline-start:auto}.p-sm--2{padding:-.5rem}.p-sm--1{padding:-.25rem}.p-sm-0{padding:0}.p-sm-1{padding:.25rem}.p-sm-2{padding:.5rem}.p-sm-3{padding:1rem}.p-sm-4{padding:1.5rem}.p-sm-5{padding:3rem}.px-sm--2{padding-inline:-.5rem}.px-sm--1{padding-inline:-.25rem}.px-sm-0{padding-inline:0}.px-sm-1{padding-inline:.25rem}.px-sm-2{padding-inline:.5rem}.px-sm-3{padding-inline:1rem}.px-sm-4{padding-inline:1.5rem}.px-sm-5{padding-inline:3rem}.py-sm--2{padding-block:-.5rem}.py-sm--1{padding-block:-.25rem}.py-sm-0{padding-block:0}.py-sm-1{padding-block:.25rem}.py-sm-2{padding-block:.5rem}.py-sm-3{padding-block:1rem}.py-sm-4{padding-block:1.5rem}.py-sm-5{padding-block:3rem}.pt-sm--2{padding-block-start:-.5rem}.pt-sm--1{padding-block-start:-.25rem}.pt-sm-0{padding-block-start:0}.pt-sm-1{padding-block-start:.25rem}.pt-sm-2{padding-block-start:.5rem}.pt-sm-3{padding-block-start:1rem}.pt-sm-4{padding-block-start:1.5rem}.pt-sm-5{padding-block-start:3rem}.pe-sm--2{padding-inline-end:-.5rem}.pe-sm--1{padding-inline-end:-.25rem}.pe-sm-0{padding-inline-end:0}.pe-sm-1{padding-inline-end:.25rem}.pe-sm-2{padding-inline-end:.5rem}.pe-sm-3{padding-inline-end:1rem}.pe-sm-4{padding-inline-end:1.5rem}.pe-sm-5{padding-inline-end:3rem}.pb-sm--2{padding-block-end:-.5rem}.pb-sm--1{padding-block-end:-.25rem}.pb-sm-0{padding-block-end:0}.pb-sm-1{padding-block-end:.25rem}.pb-sm-2{padding-block-end:.5rem}.pb-sm-3{padding-block-end:1rem}.pb-sm-4{padding-block-end:1.5rem}.pb-sm-5{padding-block-end:3rem}.ps-sm--2{padding-inline-start:-.5rem}.ps-sm--1{padding-inline-start:-.25rem}.ps-sm-0{padding-inline-start:0}.ps-sm-1{padding-inline-start:.25rem}.ps-sm-2{padding-inline-start:.5rem}.ps-sm-3{padding-inline-start:1rem}.ps-sm-4{padding-inline-start:1.5rem}.ps-sm-5{padding-inline-start:3rem}.gap-sm--2{gap:-.5rem}.gap-sm--1{gap:-.25rem}.gap-sm-0{gap:0}.gap-sm-1{gap:.25rem}.gap-sm-2{gap:.5rem}.gap-sm-3{gap:1rem}.gap-sm-4{gap:1.5rem}.gap-sm-5{gap:3rem}.row-gap-sm--2{row-gap:-.5rem}.row-gap-sm--1{row-gap:-.25rem}.row-gap-sm-0{row-gap:0}.row-gap-sm-1{row-gap:.25rem}.row-gap-sm-2{row-gap:.5rem}.row-gap-sm-3{row-gap:1rem}.row-gap-sm-4{row-gap:1.5rem}.row-gap-sm-5{row-gap:3rem}.column-gap-sm--2{-moz-column-gap:-.5rem;column-gap:-.5rem}.column-gap-sm--1{-moz-column-gap:-.25rem;column-gap:-.25rem}.column-gap-sm-0{-moz-column-gap:0;column-gap:0}.column-gap-sm-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-sm-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-sm-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-sm-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-sm-5{-moz-column-gap:3rem;column-gap:3rem}.text-sm-start{text-align:start}.text-sm-end{text-align:end}.text-sm-center{text-align:center}}@media (width>=768px){.float-md-start{float:inline-start}.float-md-end{float:inline-end}.float-md-none{float:none}.object-fit-md-contain{-o-object-fit:contain;object-fit:contain}.object-fit-md-cover{-o-object-fit:cover;object-fit:cover}.object-fit-md-fill{-o-object-fit:fill;object-fit:fill}.object-fit-md-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-md-none{-o-object-fit:none;object-fit:none}.d-md-inline{display:inline}.d-md-inline-block{display:inline-block}.d-md-block{display:block}.d-md-grid{display:grid}.d-md-inline-grid{display:inline-grid}.d-md-table{display:table}.d-md-table-row{display:table-row}.d-md-table-cell{display:table-cell}.d-md-flex{display:flex}.d-md-inline-flex{display:inline-flex}.d-md-contents{display:contents}.d-md-flow-root{display:flow-root}.d-md-none{display:none}.flex-md-fill{flex:auto}.flex-md-row{flex-direction:row}.flex-md-column{flex-direction:column}.flex-md-row-reverse{flex-direction:row-reverse}.flex-md-column-reverse{flex-direction:column-reverse}.flex-md-grow-0{flex-grow:0}.flex-md-grow-1{flex-grow:1}.flex-md-shrink-0{flex-shrink:0}.flex-md-shrink-1{flex-shrink:1}.flex-md-wrap{flex-wrap:wrap}.flex-md-nowrap{flex-wrap:nowrap}.flex-md-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-md-start{justify-content:flex-start}.justify-content-md-end{justify-content:flex-end}.justify-content-md-center{justify-content:center}.justify-content-md-between{justify-content:space-between}.justify-content-md-around{justify-content:space-around}.justify-content-md-evenly{justify-content:space-evenly}.justify-items-md-start{justify-items:start}.justify-items-md-end{justify-items:end}.justify-items-md-center{justify-items:center}.justify-items-md-stretch{justify-items:stretch}.justify-self-md-start{justify-self:flex-start}.justify-self-md-end{justify-self:flex-end}.justify-self-md-center{justify-self:center}.align-items-md-start{align-items:flex-start}.align-items-md-end{align-items:flex-end}.align-items-md-center{align-items:center}.align-items-md-baseline{align-items:baseline}.align-items-md-stretch{align-items:stretch}.align-content-md-start{align-content:flex-start}.align-content-md-end{align-content:flex-end}.align-content-md-center{align-content:center}.align-content-md-between{align-content:space-between}.align-content-md-around{align-content:space-around}.align-content-md-stretch{align-content:stretch}.align-self-md-auto{align-self:auto}.align-self-md-start{align-self:flex-start}.align-self-md-end{align-self:flex-end}.align-self-md-center{align-self:center}.align-self-md-baseline{align-self:baseline}.align-self-md-stretch{align-self:stretch}.place-items-md-start{place-items:start}.place-items-md-end{place-items:end}.place-items-md-center{place-items:center}.place-items-md-stretch{place-items:stretch stretch}.grid-cols-md-3{--bs-columns:3}.grid-cols-md-4{--bs-columns:4}.grid-cols-md-6{--bs-columns:6}.grid-cols-md-fill{grid-column:1/-1}.grid-auto-flow-md-row{grid-auto-flow:row}.grid-auto-flow-md-column{grid-auto-flow:column}.grid-auto-flow-md-dense{grid-auto-flow:dense}.order-md-first{order:-1}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-last{order:6}.m-md--2{margin:-.5rem}.m-md--1{margin:-.25rem}.m-md-0{margin:0}.m-md-1{margin:.25rem}.m-md-2{margin:.5rem}.m-md-3{margin:1rem}.m-md-4{margin:1.5rem}.m-md-5{margin:3rem}.m-md-auto{margin:auto}.mx-md--2{margin-inline:-.5rem}.mx-md--1{margin-inline:-.25rem}.mx-md-0{margin-inline:0}.mx-md-1{margin-inline:.25rem}.mx-md-2{margin-inline:.5rem}.mx-md-3{margin-inline:1rem}.mx-md-4{margin-inline:1.5rem}.mx-md-5{margin-inline:3rem}.mx-md-auto{margin-inline:auto}.my-md--2{margin-block:-.5rem}.my-md--1{margin-block:-.25rem}.my-md-0{margin-block:0}.my-md-1{margin-block:.25rem}.my-md-2{margin-block:.5rem}.my-md-3{margin-block:1rem}.my-md-4{margin-block:1.5rem}.my-md-5{margin-block:3rem}.my-md-auto{margin-block:auto}.mt-md--2{margin-block-start:-.5rem}.mt-md--1{margin-block-start:-.25rem}.mt-md-0{margin-block-start:0}.mt-md-1{margin-block-start:.25rem}.mt-md-2{margin-block-start:.5rem}.mt-md-3{margin-block-start:1rem}.mt-md-4{margin-block-start:1.5rem}.mt-md-5{margin-block-start:3rem}.mt-md-auto{margin-block-start:auto}.me-md--2{margin-inline-end:-.5rem}.me-md--1{margin-inline-end:-.25rem}.me-md-0{margin-inline-end:0}.me-md-1{margin-inline-end:.25rem}.me-md-2{margin-inline-end:.5rem}.me-md-3{margin-inline-end:1rem}.me-md-4{margin-inline-end:1.5rem}.me-md-5{margin-inline-end:3rem}.me-md-auto{margin-inline-end:auto}.mb-md--2{margin-block-end:-.5rem}.mb-md--1{margin-block-end:-.25rem}.mb-md-0{margin-block-end:0}.mb-md-1{margin-block-end:.25rem}.mb-md-2{margin-block-end:.5rem}.mb-md-3{margin-block-end:1rem}.mb-md-4{margin-block-end:1.5rem}.mb-md-5{margin-block-end:3rem}.mb-md-auto{margin-block-end:auto}.ms-md--2{margin-inline-start:-.5rem}.ms-md--1{margin-inline-start:-.25rem}.ms-md-0{margin-inline-start:0}.ms-md-1{margin-inline-start:.25rem}.ms-md-2{margin-inline-start:.5rem}.ms-md-3{margin-inline-start:1rem}.ms-md-4{margin-inline-start:1.5rem}.ms-md-5{margin-inline-start:3rem}.ms-md-auto{margin-inline-start:auto}.p-md--2{padding:-.5rem}.p-md--1{padding:-.25rem}.p-md-0{padding:0}.p-md-1{padding:.25rem}.p-md-2{padding:.5rem}.p-md-3{padding:1rem}.p-md-4{padding:1.5rem}.p-md-5{padding:3rem}.px-md--2{padding-inline:-.5rem}.px-md--1{padding-inline:-.25rem}.px-md-0{padding-inline:0}.px-md-1{padding-inline:.25rem}.px-md-2{padding-inline:.5rem}.px-md-3{padding-inline:1rem}.px-md-4{padding-inline:1.5rem}.px-md-5{padding-inline:3rem}.py-md--2{padding-block:-.5rem}.py-md--1{padding-block:-.25rem}.py-md-0{padding-block:0}.py-md-1{padding-block:.25rem}.py-md-2{padding-block:.5rem}.py-md-3{padding-block:1rem}.py-md-4{padding-block:1.5rem}.py-md-5{padding-block:3rem}.pt-md--2{padding-block-start:-.5rem}.pt-md--1{padding-block-start:-.25rem}.pt-md-0{padding-block-start:0}.pt-md-1{padding-block-start:.25rem}.pt-md-2{padding-block-start:.5rem}.pt-md-3{padding-block-start:1rem}.pt-md-4{padding-block-start:1.5rem}.pt-md-5{padding-block-start:3rem}.pe-md--2{padding-inline-end:-.5rem}.pe-md--1{padding-inline-end:-.25rem}.pe-md-0{padding-inline-end:0}.pe-md-1{padding-inline-end:.25rem}.pe-md-2{padding-inline-end:.5rem}.pe-md-3{padding-inline-end:1rem}.pe-md-4{padding-inline-end:1.5rem}.pe-md-5{padding-inline-end:3rem}.pb-md--2{padding-block-end:-.5rem}.pb-md--1{padding-block-end:-.25rem}.pb-md-0{padding-block-end:0}.pb-md-1{padding-block-end:.25rem}.pb-md-2{padding-block-end:.5rem}.pb-md-3{padding-block-end:1rem}.pb-md-4{padding-block-end:1.5rem}.pb-md-5{padding-block-end:3rem}.ps-md--2{padding-inline-start:-.5rem}.ps-md--1{padding-inline-start:-.25rem}.ps-md-0{padding-inline-start:0}.ps-md-1{padding-inline-start:.25rem}.ps-md-2{padding-inline-start:.5rem}.ps-md-3{padding-inline-start:1rem}.ps-md-4{padding-inline-start:1.5rem}.ps-md-5{padding-inline-start:3rem}.gap-md--2{gap:-.5rem}.gap-md--1{gap:-.25rem}.gap-md-0{gap:0}.gap-md-1{gap:.25rem}.gap-md-2{gap:.5rem}.gap-md-3{gap:1rem}.gap-md-4{gap:1.5rem}.gap-md-5{gap:3rem}.row-gap-md--2{row-gap:-.5rem}.row-gap-md--1{row-gap:-.25rem}.row-gap-md-0{row-gap:0}.row-gap-md-1{row-gap:.25rem}.row-gap-md-2{row-gap:.5rem}.row-gap-md-3{row-gap:1rem}.row-gap-md-4{row-gap:1.5rem}.row-gap-md-5{row-gap:3rem}.column-gap-md--2{-moz-column-gap:-.5rem;column-gap:-.5rem}.column-gap-md--1{-moz-column-gap:-.25rem;column-gap:-.25rem}.column-gap-md-0{-moz-column-gap:0;column-gap:0}.column-gap-md-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-md-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-md-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-md-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-md-5{-moz-column-gap:3rem;column-gap:3rem}.text-md-start{text-align:start}.text-md-end{text-align:end}.text-md-center{text-align:center}}@media (width>=1024px){.float-lg-start{float:inline-start}.float-lg-end{float:inline-end}.float-lg-none{float:none}.object-fit-lg-contain{-o-object-fit:contain;object-fit:contain}.object-fit-lg-cover{-o-object-fit:cover;object-fit:cover}.object-fit-lg-fill{-o-object-fit:fill;object-fit:fill}.object-fit-lg-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-lg-none{-o-object-fit:none;object-fit:none}.d-lg-inline{display:inline}.d-lg-inline-block{display:inline-block}.d-lg-block{display:block}.d-lg-grid{display:grid}.d-lg-inline-grid{display:inline-grid}.d-lg-table{display:table}.d-lg-table-row{display:table-row}.d-lg-table-cell{display:table-cell}.d-lg-flex{display:flex}.d-lg-inline-flex{display:inline-flex}.d-lg-contents{display:contents}.d-lg-flow-root{display:flow-root}.d-lg-none{display:none}.flex-lg-fill{flex:auto}.flex-lg-row{flex-direction:row}.flex-lg-column{flex-direction:column}.flex-lg-row-reverse{flex-direction:row-reverse}.flex-lg-column-reverse{flex-direction:column-reverse}.flex-lg-grow-0{flex-grow:0}.flex-lg-grow-1{flex-grow:1}.flex-lg-shrink-0{flex-shrink:0}.flex-lg-shrink-1{flex-shrink:1}.flex-lg-wrap{flex-wrap:wrap}.flex-lg-nowrap{flex-wrap:nowrap}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-lg-start{justify-content:flex-start}.justify-content-lg-end{justify-content:flex-end}.justify-content-lg-center{justify-content:center}.justify-content-lg-between{justify-content:space-between}.justify-content-lg-around{justify-content:space-around}.justify-content-lg-evenly{justify-content:space-evenly}.justify-items-lg-start{justify-items:start}.justify-items-lg-end{justify-items:end}.justify-items-lg-center{justify-items:center}.justify-items-lg-stretch{justify-items:stretch}.justify-self-lg-start{justify-self:flex-start}.justify-self-lg-end{justify-self:flex-end}.justify-self-lg-center{justify-self:center}.align-items-lg-start{align-items:flex-start}.align-items-lg-end{align-items:flex-end}.align-items-lg-center{align-items:center}.align-items-lg-baseline{align-items:baseline}.align-items-lg-stretch{align-items:stretch}.align-content-lg-start{align-content:flex-start}.align-content-lg-end{align-content:flex-end}.align-content-lg-center{align-content:center}.align-content-lg-between{align-content:space-between}.align-content-lg-around{align-content:space-around}.align-content-lg-stretch{align-content:stretch}.align-self-lg-auto{align-self:auto}.align-self-lg-start{align-self:flex-start}.align-self-lg-end{align-self:flex-end}.align-self-lg-center{align-self:center}.align-self-lg-baseline{align-self:baseline}.align-self-lg-stretch{align-self:stretch}.place-items-lg-start{place-items:start}.place-items-lg-end{place-items:end}.place-items-lg-center{place-items:center}.place-items-lg-stretch{place-items:stretch stretch}.grid-cols-lg-3{--bs-columns:3}.grid-cols-lg-4{--bs-columns:4}.grid-cols-lg-6{--bs-columns:6}.grid-cols-lg-fill{grid-column:1/-1}.grid-auto-flow-lg-row{grid-auto-flow:row}.grid-auto-flow-lg-column{grid-auto-flow:column}.grid-auto-flow-lg-dense{grid-auto-flow:dense}.order-lg-first{order:-1}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-last{order:6}.m-lg--2{margin:-.5rem}.m-lg--1{margin:-.25rem}.m-lg-0{margin:0}.m-lg-1{margin:.25rem}.m-lg-2{margin:.5rem}.m-lg-3{margin:1rem}.m-lg-4{margin:1.5rem}.m-lg-5{margin:3rem}.m-lg-auto{margin:auto}.mx-lg--2{margin-inline:-.5rem}.mx-lg--1{margin-inline:-.25rem}.mx-lg-0{margin-inline:0}.mx-lg-1{margin-inline:.25rem}.mx-lg-2{margin-inline:.5rem}.mx-lg-3{margin-inline:1rem}.mx-lg-4{margin-inline:1.5rem}.mx-lg-5{margin-inline:3rem}.mx-lg-auto{margin-inline:auto}.my-lg--2{margin-block:-.5rem}.my-lg--1{margin-block:-.25rem}.my-lg-0{margin-block:0}.my-lg-1{margin-block:.25rem}.my-lg-2{margin-block:.5rem}.my-lg-3{margin-block:1rem}.my-lg-4{margin-block:1.5rem}.my-lg-5{margin-block:3rem}.my-lg-auto{margin-block:auto}.mt-lg--2{margin-block-start:-.5rem}.mt-lg--1{margin-block-start:-.25rem}.mt-lg-0{margin-block-start:0}.mt-lg-1{margin-block-start:.25rem}.mt-lg-2{margin-block-start:.5rem}.mt-lg-3{margin-block-start:1rem}.mt-lg-4{margin-block-start:1.5rem}.mt-lg-5{margin-block-start:3rem}.mt-lg-auto{margin-block-start:auto}.me-lg--2{margin-inline-end:-.5rem}.me-lg--1{margin-inline-end:-.25rem}.me-lg-0{margin-inline-end:0}.me-lg-1{margin-inline-end:.25rem}.me-lg-2{margin-inline-end:.5rem}.me-lg-3{margin-inline-end:1rem}.me-lg-4{margin-inline-end:1.5rem}.me-lg-5{margin-inline-end:3rem}.me-lg-auto{margin-inline-end:auto}.mb-lg--2{margin-block-end:-.5rem}.mb-lg--1{margin-block-end:-.25rem}.mb-lg-0{margin-block-end:0}.mb-lg-1{margin-block-end:.25rem}.mb-lg-2{margin-block-end:.5rem}.mb-lg-3{margin-block-end:1rem}.mb-lg-4{margin-block-end:1.5rem}.mb-lg-5{margin-block-end:3rem}.mb-lg-auto{margin-block-end:auto}.ms-lg--2{margin-inline-start:-.5rem}.ms-lg--1{margin-inline-start:-.25rem}.ms-lg-0{margin-inline-start:0}.ms-lg-1{margin-inline-start:.25rem}.ms-lg-2{margin-inline-start:.5rem}.ms-lg-3{margin-inline-start:1rem}.ms-lg-4{margin-inline-start:1.5rem}.ms-lg-5{margin-inline-start:3rem}.ms-lg-auto{margin-inline-start:auto}.p-lg--2{padding:-.5rem}.p-lg--1{padding:-.25rem}.p-lg-0{padding:0}.p-lg-1{padding:.25rem}.p-lg-2{padding:.5rem}.p-lg-3{padding:1rem}.p-lg-4{padding:1.5rem}.p-lg-5{padding:3rem}.px-lg--2{padding-inline:-.5rem}.px-lg--1{padding-inline:-.25rem}.px-lg-0{padding-inline:0}.px-lg-1{padding-inline:.25rem}.px-lg-2{padding-inline:.5rem}.px-lg-3{padding-inline:1rem}.px-lg-4{padding-inline:1.5rem}.px-lg-5{padding-inline:3rem}.py-lg--2{padding-block:-.5rem}.py-lg--1{padding-block:-.25rem}.py-lg-0{padding-block:0}.py-lg-1{padding-block:.25rem}.py-lg-2{padding-block:.5rem}.py-lg-3{padding-block:1rem}.py-lg-4{padding-block:1.5rem}.py-lg-5{padding-block:3rem}.pt-lg--2{padding-block-start:-.5rem}.pt-lg--1{padding-block-start:-.25rem}.pt-lg-0{padding-block-start:0}.pt-lg-1{padding-block-start:.25rem}.pt-lg-2{padding-block-start:.5rem}.pt-lg-3{padding-block-start:1rem}.pt-lg-4{padding-block-start:1.5rem}.pt-lg-5{padding-block-start:3rem}.pe-lg--2{padding-inline-end:-.5rem}.pe-lg--1{padding-inline-end:-.25rem}.pe-lg-0{padding-inline-end:0}.pe-lg-1{padding-inline-end:.25rem}.pe-lg-2{padding-inline-end:.5rem}.pe-lg-3{padding-inline-end:1rem}.pe-lg-4{padding-inline-end:1.5rem}.pe-lg-5{padding-inline-end:3rem}.pb-lg--2{padding-block-end:-.5rem}.pb-lg--1{padding-block-end:-.25rem}.pb-lg-0{padding-block-end:0}.pb-lg-1{padding-block-end:.25rem}.pb-lg-2{padding-block-end:.5rem}.pb-lg-3{padding-block-end:1rem}.pb-lg-4{padding-block-end:1.5rem}.pb-lg-5{padding-block-end:3rem}.ps-lg--2{padding-inline-start:-.5rem}.ps-lg--1{padding-inline-start:-.25rem}.ps-lg-0{padding-inline-start:0}.ps-lg-1{padding-inline-start:.25rem}.ps-lg-2{padding-inline-start:.5rem}.ps-lg-3{padding-inline-start:1rem}.ps-lg-4{padding-inline-start:1.5rem}.ps-lg-5{padding-inline-start:3rem}.gap-lg--2{gap:-.5rem}.gap-lg--1{gap:-.25rem}.gap-lg-0{gap:0}.gap-lg-1{gap:.25rem}.gap-lg-2{gap:.5rem}.gap-lg-3{gap:1rem}.gap-lg-4{gap:1.5rem}.gap-lg-5{gap:3rem}.row-gap-lg--2{row-gap:-.5rem}.row-gap-lg--1{row-gap:-.25rem}.row-gap-lg-0{row-gap:0}.row-gap-lg-1{row-gap:.25rem}.row-gap-lg-2{row-gap:.5rem}.row-gap-lg-3{row-gap:1rem}.row-gap-lg-4{row-gap:1.5rem}.row-gap-lg-5{row-gap:3rem}.column-gap-lg--2{-moz-column-gap:-.5rem;column-gap:-.5rem}.column-gap-lg--1{-moz-column-gap:-.25rem;column-gap:-.25rem}.column-gap-lg-0{-moz-column-gap:0;column-gap:0}.column-gap-lg-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-lg-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-lg-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-lg-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-lg-5{-moz-column-gap:3rem;column-gap:3rem}.text-lg-start{text-align:start}.text-lg-end{text-align:end}.text-lg-center{text-align:center}}@media (width>=1280px){.float-xl-start{float:inline-start}.float-xl-end{float:inline-end}.float-xl-none{float:none}.object-fit-xl-contain{-o-object-fit:contain;object-fit:contain}.object-fit-xl-cover{-o-object-fit:cover;object-fit:cover}.object-fit-xl-fill{-o-object-fit:fill;object-fit:fill}.object-fit-xl-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-xl-none{-o-object-fit:none;object-fit:none}.d-xl-inline{display:inline}.d-xl-inline-block{display:inline-block}.d-xl-block{display:block}.d-xl-grid{display:grid}.d-xl-inline-grid{display:inline-grid}.d-xl-table{display:table}.d-xl-table-row{display:table-row}.d-xl-table-cell{display:table-cell}.d-xl-flex{display:flex}.d-xl-inline-flex{display:inline-flex}.d-xl-contents{display:contents}.d-xl-flow-root{display:flow-root}.d-xl-none{display:none}.flex-xl-fill{flex:auto}.flex-xl-row{flex-direction:row}.flex-xl-column{flex-direction:column}.flex-xl-row-reverse{flex-direction:row-reverse}.flex-xl-column-reverse{flex-direction:column-reverse}.flex-xl-grow-0{flex-grow:0}.flex-xl-grow-1{flex-grow:1}.flex-xl-shrink-0{flex-shrink:0}.flex-xl-shrink-1{flex-shrink:1}.flex-xl-wrap{flex-wrap:wrap}.flex-xl-nowrap{flex-wrap:nowrap}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-xl-start{justify-content:flex-start}.justify-content-xl-end{justify-content:flex-end}.justify-content-xl-center{justify-content:center}.justify-content-xl-between{justify-content:space-between}.justify-content-xl-around{justify-content:space-around}.justify-content-xl-evenly{justify-content:space-evenly}.justify-items-xl-start{justify-items:start}.justify-items-xl-end{justify-items:end}.justify-items-xl-center{justify-items:center}.justify-items-xl-stretch{justify-items:stretch}.justify-self-xl-start{justify-self:flex-start}.justify-self-xl-end{justify-self:flex-end}.justify-self-xl-center{justify-self:center}.align-items-xl-start{align-items:flex-start}.align-items-xl-end{align-items:flex-end}.align-items-xl-center{align-items:center}.align-items-xl-baseline{align-items:baseline}.align-items-xl-stretch{align-items:stretch}.align-content-xl-start{align-content:flex-start}.align-content-xl-end{align-content:flex-end}.align-content-xl-center{align-content:center}.align-content-xl-between{align-content:space-between}.align-content-xl-around{align-content:space-around}.align-content-xl-stretch{align-content:stretch}.align-self-xl-auto{align-self:auto}.align-self-xl-start{align-self:flex-start}.align-self-xl-end{align-self:flex-end}.align-self-xl-center{align-self:center}.align-self-xl-baseline{align-self:baseline}.align-self-xl-stretch{align-self:stretch}.place-items-xl-start{place-items:start}.place-items-xl-end{place-items:end}.place-items-xl-center{place-items:center}.place-items-xl-stretch{place-items:stretch stretch}.grid-cols-xl-3{--bs-columns:3}.grid-cols-xl-4{--bs-columns:4}.grid-cols-xl-6{--bs-columns:6}.grid-cols-xl-fill{grid-column:1/-1}.grid-auto-flow-xl-row{grid-auto-flow:row}.grid-auto-flow-xl-column{grid-auto-flow:column}.grid-auto-flow-xl-dense{grid-auto-flow:dense}.order-xl-first{order:-1}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-last{order:6}.m-xl--2{margin:-.5rem}.m-xl--1{margin:-.25rem}.m-xl-0{margin:0}.m-xl-1{margin:.25rem}.m-xl-2{margin:.5rem}.m-xl-3{margin:1rem}.m-xl-4{margin:1.5rem}.m-xl-5{margin:3rem}.m-xl-auto{margin:auto}.mx-xl--2{margin-inline:-.5rem}.mx-xl--1{margin-inline:-.25rem}.mx-xl-0{margin-inline:0}.mx-xl-1{margin-inline:.25rem}.mx-xl-2{margin-inline:.5rem}.mx-xl-3{margin-inline:1rem}.mx-xl-4{margin-inline:1.5rem}.mx-xl-5{margin-inline:3rem}.mx-xl-auto{margin-inline:auto}.my-xl--2{margin-block:-.5rem}.my-xl--1{margin-block:-.25rem}.my-xl-0{margin-block:0}.my-xl-1{margin-block:.25rem}.my-xl-2{margin-block:.5rem}.my-xl-3{margin-block:1rem}.my-xl-4{margin-block:1.5rem}.my-xl-5{margin-block:3rem}.my-xl-auto{margin-block:auto}.mt-xl--2{margin-block-start:-.5rem}.mt-xl--1{margin-block-start:-.25rem}.mt-xl-0{margin-block-start:0}.mt-xl-1{margin-block-start:.25rem}.mt-xl-2{margin-block-start:.5rem}.mt-xl-3{margin-block-start:1rem}.mt-xl-4{margin-block-start:1.5rem}.mt-xl-5{margin-block-start:3rem}.mt-xl-auto{margin-block-start:auto}.me-xl--2{margin-inline-end:-.5rem}.me-xl--1{margin-inline-end:-.25rem}.me-xl-0{margin-inline-end:0}.me-xl-1{margin-inline-end:.25rem}.me-xl-2{margin-inline-end:.5rem}.me-xl-3{margin-inline-end:1rem}.me-xl-4{margin-inline-end:1.5rem}.me-xl-5{margin-inline-end:3rem}.me-xl-auto{margin-inline-end:auto}.mb-xl--2{margin-block-end:-.5rem}.mb-xl--1{margin-block-end:-.25rem}.mb-xl-0{margin-block-end:0}.mb-xl-1{margin-block-end:.25rem}.mb-xl-2{margin-block-end:.5rem}.mb-xl-3{margin-block-end:1rem}.mb-xl-4{margin-block-end:1.5rem}.mb-xl-5{margin-block-end:3rem}.mb-xl-auto{margin-block-end:auto}.ms-xl--2{margin-inline-start:-.5rem}.ms-xl--1{margin-inline-start:-.25rem}.ms-xl-0{margin-inline-start:0}.ms-xl-1{margin-inline-start:.25rem}.ms-xl-2{margin-inline-start:.5rem}.ms-xl-3{margin-inline-start:1rem}.ms-xl-4{margin-inline-start:1.5rem}.ms-xl-5{margin-inline-start:3rem}.ms-xl-auto{margin-inline-start:auto}.p-xl--2{padding:-.5rem}.p-xl--1{padding:-.25rem}.p-xl-0{padding:0}.p-xl-1{padding:.25rem}.p-xl-2{padding:.5rem}.p-xl-3{padding:1rem}.p-xl-4{padding:1.5rem}.p-xl-5{padding:3rem}.px-xl--2{padding-inline:-.5rem}.px-xl--1{padding-inline:-.25rem}.px-xl-0{padding-inline:0}.px-xl-1{padding-inline:.25rem}.px-xl-2{padding-inline:.5rem}.px-xl-3{padding-inline:1rem}.px-xl-4{padding-inline:1.5rem}.px-xl-5{padding-inline:3rem}.py-xl--2{padding-block:-.5rem}.py-xl--1{padding-block:-.25rem}.py-xl-0{padding-block:0}.py-xl-1{padding-block:.25rem}.py-xl-2{padding-block:.5rem}.py-xl-3{padding-block:1rem}.py-xl-4{padding-block:1.5rem}.py-xl-5{padding-block:3rem}.pt-xl--2{padding-block-start:-.5rem}.pt-xl--1{padding-block-start:-.25rem}.pt-xl-0{padding-block-start:0}.pt-xl-1{padding-block-start:.25rem}.pt-xl-2{padding-block-start:.5rem}.pt-xl-3{padding-block-start:1rem}.pt-xl-4{padding-block-start:1.5rem}.pt-xl-5{padding-block-start:3rem}.pe-xl--2{padding-inline-end:-.5rem}.pe-xl--1{padding-inline-end:-.25rem}.pe-xl-0{padding-inline-end:0}.pe-xl-1{padding-inline-end:.25rem}.pe-xl-2{padding-inline-end:.5rem}.pe-xl-3{padding-inline-end:1rem}.pe-xl-4{padding-inline-end:1.5rem}.pe-xl-5{padding-inline-end:3rem}.pb-xl--2{padding-block-end:-.5rem}.pb-xl--1{padding-block-end:-.25rem}.pb-xl-0{padding-block-end:0}.pb-xl-1{padding-block-end:.25rem}.pb-xl-2{padding-block-end:.5rem}.pb-xl-3{padding-block-end:1rem}.pb-xl-4{padding-block-end:1.5rem}.pb-xl-5{padding-block-end:3rem}.ps-xl--2{padding-inline-start:-.5rem}.ps-xl--1{padding-inline-start:-.25rem}.ps-xl-0{padding-inline-start:0}.ps-xl-1{padding-inline-start:.25rem}.ps-xl-2{padding-inline-start:.5rem}.ps-xl-3{padding-inline-start:1rem}.ps-xl-4{padding-inline-start:1.5rem}.ps-xl-5{padding-inline-start:3rem}.gap-xl--2{gap:-.5rem}.gap-xl--1{gap:-.25rem}.gap-xl-0{gap:0}.gap-xl-1{gap:.25rem}.gap-xl-2{gap:.5rem}.gap-xl-3{gap:1rem}.gap-xl-4{gap:1.5rem}.gap-xl-5{gap:3rem}.row-gap-xl--2{row-gap:-.5rem}.row-gap-xl--1{row-gap:-.25rem}.row-gap-xl-0{row-gap:0}.row-gap-xl-1{row-gap:.25rem}.row-gap-xl-2{row-gap:.5rem}.row-gap-xl-3{row-gap:1rem}.row-gap-xl-4{row-gap:1.5rem}.row-gap-xl-5{row-gap:3rem}.column-gap-xl--2{-moz-column-gap:-.5rem;column-gap:-.5rem}.column-gap-xl--1{-moz-column-gap:-.25rem;column-gap:-.25rem}.column-gap-xl-0{-moz-column-gap:0;column-gap:0}.column-gap-xl-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-xl-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-xl-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-xl-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-xl-5{-moz-column-gap:3rem;column-gap:3rem}.text-xl-start{text-align:start}.text-xl-end{text-align:end}.text-xl-center{text-align:center}}@media (width>=1536px){.float-2xl-start{float:inline-start}.float-2xl-end{float:inline-end}.float-2xl-none{float:none}.object-fit-2xl-contain{-o-object-fit:contain;object-fit:contain}.object-fit-2xl-cover{-o-object-fit:cover;object-fit:cover}.object-fit-2xl-fill{-o-object-fit:fill;object-fit:fill}.object-fit-2xl-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-2xl-none{-o-object-fit:none;object-fit:none}.d-2xl-inline{display:inline}.d-2xl-inline-block{display:inline-block}.d-2xl-block{display:block}.d-2xl-grid{display:grid}.d-2xl-inline-grid{display:inline-grid}.d-2xl-table{display:table}.d-2xl-table-row{display:table-row}.d-2xl-table-cell{display:table-cell}.d-2xl-flex{display:flex}.d-2xl-inline-flex{display:inline-flex}.d-2xl-contents{display:contents}.d-2xl-flow-root{display:flow-root}.d-2xl-none{display:none}.flex-2xl-fill{flex:auto}.flex-2xl-row{flex-direction:row}.flex-2xl-column{flex-direction:column}.flex-2xl-row-reverse{flex-direction:row-reverse}.flex-2xl-column-reverse{flex-direction:column-reverse}.flex-2xl-grow-0{flex-grow:0}.flex-2xl-grow-1{flex-grow:1}.flex-2xl-shrink-0{flex-shrink:0}.flex-2xl-shrink-1{flex-shrink:1}.flex-2xl-wrap{flex-wrap:wrap}.flex-2xl-nowrap{flex-wrap:nowrap}.flex-2xl-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-2xl-start{justify-content:flex-start}.justify-content-2xl-end{justify-content:flex-end}.justify-content-2xl-center{justify-content:center}.justify-content-2xl-between{justify-content:space-between}.justify-content-2xl-around{justify-content:space-around}.justify-content-2xl-evenly{justify-content:space-evenly}.justify-items-2xl-start{justify-items:start}.justify-items-2xl-end{justify-items:end}.justify-items-2xl-center{justify-items:center}.justify-items-2xl-stretch{justify-items:stretch}.justify-self-2xl-start{justify-self:flex-start}.justify-self-2xl-end{justify-self:flex-end}.justify-self-2xl-center{justify-self:center}.align-items-2xl-start{align-items:flex-start}.align-items-2xl-end{align-items:flex-end}.align-items-2xl-center{align-items:center}.align-items-2xl-baseline{align-items:baseline}.align-items-2xl-stretch{align-items:stretch}.align-content-2xl-start{align-content:flex-start}.align-content-2xl-end{align-content:flex-end}.align-content-2xl-center{align-content:center}.align-content-2xl-between{align-content:space-between}.align-content-2xl-around{align-content:space-around}.align-content-2xl-stretch{align-content:stretch}.align-self-2xl-auto{align-self:auto}.align-self-2xl-start{align-self:flex-start}.align-self-2xl-end{align-self:flex-end}.align-self-2xl-center{align-self:center}.align-self-2xl-baseline{align-self:baseline}.align-self-2xl-stretch{align-self:stretch}.place-items-2xl-start{place-items:start}.place-items-2xl-end{place-items:end}.place-items-2xl-center{place-items:center}.place-items-2xl-stretch{place-items:stretch stretch}.grid-cols-2xl-3{--bs-columns:3}.grid-cols-2xl-4{--bs-columns:4}.grid-cols-2xl-6{--bs-columns:6}.grid-cols-2xl-fill{grid-column:1/-1}.grid-auto-flow-2xl-row{grid-auto-flow:row}.grid-auto-flow-2xl-column{grid-auto-flow:column}.grid-auto-flow-2xl-dense{grid-auto-flow:dense}.order-2xl-first{order:-1}.order-2xl-0{order:0}.order-2xl-1{order:1}.order-2xl-2{order:2}.order-2xl-3{order:3}.order-2xl-4{order:4}.order-2xl-5{order:5}.order-2xl-last{order:6}.m-2xl--2{margin:-.5rem}.m-2xl--1{margin:-.25rem}.m-2xl-0{margin:0}.m-2xl-1{margin:.25rem}.m-2xl-2{margin:.5rem}.m-2xl-3{margin:1rem}.m-2xl-4{margin:1.5rem}.m-2xl-5{margin:3rem}.m-2xl-auto{margin:auto}.mx-2xl--2{margin-inline:-.5rem}.mx-2xl--1{margin-inline:-.25rem}.mx-2xl-0{margin-inline:0}.mx-2xl-1{margin-inline:.25rem}.mx-2xl-2{margin-inline:.5rem}.mx-2xl-3{margin-inline:1rem}.mx-2xl-4{margin-inline:1.5rem}.mx-2xl-5{margin-inline:3rem}.mx-2xl-auto{margin-inline:auto}.my-2xl--2{margin-block:-.5rem}.my-2xl--1{margin-block:-.25rem}.my-2xl-0{margin-block:0}.my-2xl-1{margin-block:.25rem}.my-2xl-2{margin-block:.5rem}.my-2xl-3{margin-block:1rem}.my-2xl-4{margin-block:1.5rem}.my-2xl-5{margin-block:3rem}.my-2xl-auto{margin-block:auto}.mt-2xl--2{margin-block-start:-.5rem}.mt-2xl--1{margin-block-start:-.25rem}.mt-2xl-0{margin-block-start:0}.mt-2xl-1{margin-block-start:.25rem}.mt-2xl-2{margin-block-start:.5rem}.mt-2xl-3{margin-block-start:1rem}.mt-2xl-4{margin-block-start:1.5rem}.mt-2xl-5{margin-block-start:3rem}.mt-2xl-auto{margin-block-start:auto}.me-2xl--2{margin-inline-end:-.5rem}.me-2xl--1{margin-inline-end:-.25rem}.me-2xl-0{margin-inline-end:0}.me-2xl-1{margin-inline-end:.25rem}.me-2xl-2{margin-inline-end:.5rem}.me-2xl-3{margin-inline-end:1rem}.me-2xl-4{margin-inline-end:1.5rem}.me-2xl-5{margin-inline-end:3rem}.me-2xl-auto{margin-inline-end:auto}.mb-2xl--2{margin-block-end:-.5rem}.mb-2xl--1{margin-block-end:-.25rem}.mb-2xl-0{margin-block-end:0}.mb-2xl-1{margin-block-end:.25rem}.mb-2xl-2{margin-block-end:.5rem}.mb-2xl-3{margin-block-end:1rem}.mb-2xl-4{margin-block-end:1.5rem}.mb-2xl-5{margin-block-end:3rem}.mb-2xl-auto{margin-block-end:auto}.ms-2xl--2{margin-inline-start:-.5rem}.ms-2xl--1{margin-inline-start:-.25rem}.ms-2xl-0{margin-inline-start:0}.ms-2xl-1{margin-inline-start:.25rem}.ms-2xl-2{margin-inline-start:.5rem}.ms-2xl-3{margin-inline-start:1rem}.ms-2xl-4{margin-inline-start:1.5rem}.ms-2xl-5{margin-inline-start:3rem}.ms-2xl-auto{margin-inline-start:auto}.p-2xl--2{padding:-.5rem}.p-2xl--1{padding:-.25rem}.p-2xl-0{padding:0}.p-2xl-1{padding:.25rem}.p-2xl-2{padding:.5rem}.p-2xl-3{padding:1rem}.p-2xl-4{padding:1.5rem}.p-2xl-5{padding:3rem}.px-2xl--2{padding-inline:-.5rem}.px-2xl--1{padding-inline:-.25rem}.px-2xl-0{padding-inline:0}.px-2xl-1{padding-inline:.25rem}.px-2xl-2{padding-inline:.5rem}.px-2xl-3{padding-inline:1rem}.px-2xl-4{padding-inline:1.5rem}.px-2xl-5{padding-inline:3rem}.py-2xl--2{padding-block:-.5rem}.py-2xl--1{padding-block:-.25rem}.py-2xl-0{padding-block:0}.py-2xl-1{padding-block:.25rem}.py-2xl-2{padding-block:.5rem}.py-2xl-3{padding-block:1rem}.py-2xl-4{padding-block:1.5rem}.py-2xl-5{padding-block:3rem}.pt-2xl--2{padding-block-start:-.5rem}.pt-2xl--1{padding-block-start:-.25rem}.pt-2xl-0{padding-block-start:0}.pt-2xl-1{padding-block-start:.25rem}.pt-2xl-2{padding-block-start:.5rem}.pt-2xl-3{padding-block-start:1rem}.pt-2xl-4{padding-block-start:1.5rem}.pt-2xl-5{padding-block-start:3rem}.pe-2xl--2{padding-inline-end:-.5rem}.pe-2xl--1{padding-inline-end:-.25rem}.pe-2xl-0{padding-inline-end:0}.pe-2xl-1{padding-inline-end:.25rem}.pe-2xl-2{padding-inline-end:.5rem}.pe-2xl-3{padding-inline-end:1rem}.pe-2xl-4{padding-inline-end:1.5rem}.pe-2xl-5{padding-inline-end:3rem}.pb-2xl--2{padding-block-end:-.5rem}.pb-2xl--1{padding-block-end:-.25rem}.pb-2xl-0{padding-block-end:0}.pb-2xl-1{padding-block-end:.25rem}.pb-2xl-2{padding-block-end:.5rem}.pb-2xl-3{padding-block-end:1rem}.pb-2xl-4{padding-block-end:1.5rem}.pb-2xl-5{padding-block-end:3rem}.ps-2xl--2{padding-inline-start:-.5rem}.ps-2xl--1{padding-inline-start:-.25rem}.ps-2xl-0{padding-inline-start:0}.ps-2xl-1{padding-inline-start:.25rem}.ps-2xl-2{padding-inline-start:.5rem}.ps-2xl-3{padding-inline-start:1rem}.ps-2xl-4{padding-inline-start:1.5rem}.ps-2xl-5{padding-inline-start:3rem}.gap-2xl--2{gap:-.5rem}.gap-2xl--1{gap:-.25rem}.gap-2xl-0{gap:0}.gap-2xl-1{gap:.25rem}.gap-2xl-2{gap:.5rem}.gap-2xl-3{gap:1rem}.gap-2xl-4{gap:1.5rem}.gap-2xl-5{gap:3rem}.row-gap-2xl--2{row-gap:-.5rem}.row-gap-2xl--1{row-gap:-.25rem}.row-gap-2xl-0{row-gap:0}.row-gap-2xl-1{row-gap:.25rem}.row-gap-2xl-2{row-gap:.5rem}.row-gap-2xl-3{row-gap:1rem}.row-gap-2xl-4{row-gap:1.5rem}.row-gap-2xl-5{row-gap:3rem}.column-gap-2xl--2{-moz-column-gap:-.5rem;column-gap:-.5rem}.column-gap-2xl--1{-moz-column-gap:-.25rem;column-gap:-.25rem}.column-gap-2xl-0{-moz-column-gap:0;column-gap:0}.column-gap-2xl-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-2xl-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-2xl-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-2xl-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-2xl-5{-moz-column-gap:3rem;column-gap:3rem}.text-2xl-start{text-align:start}.text-2xl-end{text-align:end}.text-2xl-center{text-align:center}}}:root{--bs-black:#000;--bs-white:#fff;--bs-gradient:linear-gradient(180deg,color-mix(var(--bs-white)15%,transparent),color-mix(var(--bs-white)0%,transparent));--bs-font-size-base:1rem;--bs-font-size-xs:.75rem;--bs-font-size-sm:.875rem;--bs-font-size-md:1rem;--bs-font-size-lg:clamp(1.25rem,1rem + .625vw,1.5rem);--bs-font-size-xl:clamp(1.5rem,1.1rem + .75vw,1.75rem);--bs-font-size-2xl:clamp(1.75rem,1.3rem + 1vw,2rem);--bs-font-size-3xl:clamp(2rem,1.5rem + 1.875vw,2.5rem);--bs-font-size-4xl:clamp(2.25rem,1.75rem + 2.5vw,3rem);--bs-font-size-5xl:clamp(3rem,2rem + 5vw,4rem);--bs-font-size-6xl:clamp(3.75rem,2.5rem + 6.25vw,5rem);--bs-line-height-xs:1.25;--bs-line-height-sm:1.5;--bs-line-height-md:1.5;--bs-line-height-lg:1.5;--bs-line-height-xl:1.42857;--bs-line-height-2xl:1.33333;--bs-line-height-3xl:1.2;--bs-line-height-4xl:1.1;--bs-line-height-5xl:1.1;--bs-line-height-6xl:1;--bs-font-weight-lighter:lighter;--bs-font-weight-light:300;--bs-font-weight-normal:400;--bs-font-weight-medium:500;--bs-font-weight-semibold:600;--bs-font-weight-bold:700;--bs-font-weight-bolder:bolder;--bs-body-font-family:system-ui;--bs-body-font-size:var(--bs-font-size-base);--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-heading-color:inherit;--bs-hr-border-color:var(--bs-border-color);--bs-link-color:light-dark(var(--bs-primary-base),var(--bs-primary-text));--bs-link-decoration:underline;--bs-link-hover-color:color-mix(in oklch,var(--bs-link-color)90%,#000);--bs-font-mono:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-code-font-size:95%;--bs-code-color:var(--bs-fg-2);--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:light-dark(color-mix(in oklch,var(--bs-gray-100),var(--bs-gray-200)),var(--bs-gray-700));--bs-border-color-translucent:color-mix(in oklch,var(--bs-fg-body)15%,transparent);--bs-border-radius:.5rem;--bs-border-radius-xs:.375rem;--bs-border-radius-sm:.5rem;--bs-border-radius-lg:.75rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-box-shadow:0 .5rem 1rem #00000026;--bs-box-shadow-sm:0 .125rem .25rem #00000013;--bs-box-shadow-lg:0 1rem 3rem #0000002d;--bs-box-shadow-inset:inset 0 1px 2px #00000013;--bs-spacer:1rem;--bs-focus-ring-width:3px;--bs-focus-ring-offset:1px;--bs-focus-ring-color:var(--bs-primary-focus-ring);--bs-focus-ring:var(--bs-focus-ring-width)solid var(--bs-focus-ring-color);--bs-control-checked-bg:var(--bs-primary-base);--bs-control-checked-border-color:var(--bs-control-checked-bg);--bs-control-active-bg:var(--bs-primary-base);--bs-control-active-border-color:var(--bs-control-active-bg);--bs-control-disabled-bg:var(--bs-bg-3);--bs-control-disabled-opacity:.65;--bs-btn-input-fg:var(--bs-fg-body);--bs-btn-input-bg:var(--bs-bg-body);--bs-btn-input-min-height:2.375rem;--bs-btn-input-padding-y:.375rem;--bs-btn-input-padding-x:.75rem;--bs-btn-input-font-size:var(--bs-font-size-base);--bs-btn-input-line-height:var(--bs-line-height-base);--bs-btn-input-border-radius:var(--bs-border-radius);--bs-btn-input-xs-min-height:1.5rem;--bs-btn-input-xs-padding-y:.125rem;--bs-btn-input-xs-padding-x:.5rem;--bs-btn-input-xs-font-size:var(--bs-font-size-xs);--bs-btn-input-xs-line-height:1.125;--bs-btn-input-xs-border-radius:var(--bs-border-radius-xs);--bs-btn-input-sm-min-height:2rem;--bs-btn-input-sm-padding-y:.25rem;--bs-btn-input-sm-padding-x:.625rem;--bs-btn-input-sm-font-size:var(--bs-font-size-sm);--bs-btn-input-sm-line-height:var(--bs-line-height-sm);--bs-btn-input-sm-border-radius:var(--bs-border-radius-sm);--bs-btn-input-lg-min-height:2.75rem;--bs-btn-input-lg-padding-y:.5rem;--bs-btn-input-lg-padding-x:1rem;--bs-btn-input-lg-font-size:var(--bs-font-size-md);--bs-btn-input-lg-line-height:var(--bs-line-height-md);--bs-btn-input-lg-border-radius:var(--bs-border-radius-lg);--bs-form-valid-color:var(--bs-success-text);--bs-form-valid-border-color:var(--bs-success-text);--bs-form-invalid-color:var(--bs-danger-text);--bs-form-invalid-border-color:var(--bs-danger-text);--bs-primary-base:var(--bs-blue-500);--bs-primary-text:light-dark(var(--bs-blue-600),var(--bs-blue-400));--bs-primary-text-emphasis:light-dark(var(--bs-blue-800),var(--bs-blue-200));--bs-primary-bg:var(--bs-blue-500);--bs-primary-bg-subtle:light-dark(var(--bs-blue-100),var(--bs-blue-900));--bs-primary-bg-muted:light-dark(var(--bs-blue-200),var(--bs-blue-800));--bs-primary-border:light-dark(var(--bs-blue-300),var(--bs-blue-600));--bs-primary-focus-ring:light-dark(color-mix(in oklch,var(--bs-blue-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-blue-500)75%,var(--bs-bg-body)));--bs-primary-contrast:var(--bs-white);--bs-accent-base:var(--bs-indigo-500);--bs-accent-text:light-dark(var(--bs-indigo-600),color-mix(in oklch,var(--bs-indigo-400),var(--bs-indigo-300)));--bs-accent-text-emphasis:light-dark(var(--bs-indigo-800),var(--bs-indigo-300));--bs-accent-bg:var(--bs-indigo-500);--bs-accent-bg-subtle:light-dark(var(--bs-indigo-100),var(--bs-indigo-900));--bs-accent-bg-muted:light-dark(var(--bs-indigo-200),var(--bs-indigo-800));--bs-accent-border:light-dark(var(--bs-indigo-300),var(--bs-indigo-600));--bs-accent-focus-ring:light-dark(color-mix(in oklch,var(--bs-indigo-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-indigo-500)75%,var(--bs-bg-body)));--bs-accent-contrast:var(--bs-white);--bs-success-base:var(--bs-green-500);--bs-success-text:light-dark(var(--bs-green-600),var(--bs-green-400));--bs-success-text-emphasis:light-dark(var(--bs-green-800),var(--bs-green-300));--bs-success-bg:var(--bs-green-500);--bs-success-bg-subtle:light-dark(var(--bs-green-100),var(--bs-green-900));--bs-success-bg-muted:light-dark(var(--bs-green-200),var(--bs-green-800));--bs-success-border:light-dark(var(--bs-green-300),var(--bs-green-600));--bs-success-focus-ring:light-dark(color-mix(in oklch,var(--bs-green-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-green-500)75%,var(--bs-bg-body)));--bs-success-contrast:var(--bs-white);--bs-danger-base:var(--bs-red-500);--bs-danger-text:light-dark(var(--bs-red-600),var(--bs-red-400));--bs-danger-text-emphasis:light-dark(var(--bs-red-800),var(--bs-red-300));--bs-danger-bg:var(--bs-red-500);--bs-danger-bg-subtle:light-dark(var(--bs-red-100),var(--bs-red-900));--bs-danger-bg-muted:light-dark(var(--bs-red-200),var(--bs-red-800));--bs-danger-border:light-dark(var(--bs-red-300),var(--bs-red-600));--bs-danger-focus-ring:light-dark(color-mix(in oklch,var(--bs-red-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-red-500)75%,var(--bs-bg-body)));--bs-danger-contrast:var(--bs-white);--bs-warning-base:var(--bs-yellow-500);--bs-warning-text:light-dark(var(--bs-yellow-700),var(--bs-yellow-400));--bs-warning-text-emphasis:light-dark(var(--bs-yellow-800),var(--bs-yellow-300));--bs-warning-bg:var(--bs-yellow-500);--bs-warning-bg-subtle:light-dark(var(--bs-yellow-100),var(--bs-yellow-900));--bs-warning-bg-muted:light-dark(var(--bs-yellow-200),var(--bs-yellow-800));--bs-warning-border:light-dark(var(--bs-yellow-300),var(--bs-yellow-600));--bs-warning-focus-ring:light-dark(color-mix(in oklch,var(--bs-yellow-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-yellow-400)85%,var(--bs-bg-body)));--bs-warning-contrast:var(--bs-gray-900);--bs-info-base:var(--bs-cyan-500);--bs-info-text:light-dark(var(--bs-cyan-600),var(--bs-cyan-400));--bs-info-text-emphasis:light-dark(var(--bs-cyan-800),var(--bs-cyan-300));--bs-info-bg:var(--bs-cyan-500);--bs-info-bg-subtle:light-dark(var(--bs-cyan-100),var(--bs-cyan-900));--bs-info-bg-muted:light-dark(var(--bs-cyan-200),var(--bs-cyan-800));--bs-info-border:light-dark(var(--bs-cyan-300),var(--bs-cyan-600));--bs-info-focus-ring:light-dark(color-mix(in oklch,var(--bs-cyan-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-cyan-500)75%,var(--bs-bg-body)));--bs-info-contrast:var(--bs-gray-900);--bs-inverse-base:var(--bs-gray-900);--bs-inverse-text:light-dark(var(--bs-gray-900),var(--bs-gray-200));--bs-inverse-text-emphasis:light-dark(var(--bs-gray-975),var(--bs-white));--bs-inverse-bg:light-dark(var(--bs-gray-900),var(--bs-gray-025));--bs-inverse-bg-subtle:light-dark(var(--bs-gray-100),var(--bs-gray-900));--bs-inverse-bg-muted:light-dark(var(--bs-gray-200),var(--bs-gray-300));--bs-inverse-border:light-dark(var(--bs-gray-400),var(--bs-gray-100));--bs-inverse-focus-ring:color-mix(in oklch,light-dark(var(--bs-gray-900),var(--bs-gray-100))50%,var(--bs-bg-body));--bs-inverse-contrast:light-dark(var(--bs-white),var(--bs-gray-900));--bs-secondary-base:var(--bs-gray-200);--bs-secondary-text:light-dark(var(--bs-gray-600),var(--bs-gray-400));--bs-secondary-text-emphasis:light-dark(var(--bs-gray-800),var(--bs-gray-200));--bs-secondary-bg:light-dark(var(--bs-gray-100),var(--bs-gray-600));--bs-secondary-bg-subtle:light-dark(var(--bs-gray-050),var(--bs-gray-800));--bs-secondary-bg-muted:light-dark(var(--bs-gray-100),var(--bs-gray-700));--bs-secondary-border:light-dark(var(--bs-gray-300),var(--bs-gray-600));--bs-secondary-focus-ring:color-mix(in oklch,light-dark(var(--bs-gray-500),var(--bs-gray-300))50%,var(--bs-bg-body));--bs-secondary-contrast:light-dark(var(--bs-gray-900),var(--bs-white));--bs-bg-body:light-dark(var(--bs-white),var(--bs-gray-975));--bs-bg-1:light-dark(var(--bs-gray-025),var(--bs-gray-950));--bs-bg-2:light-dark(var(--bs-gray-050),var(--bs-gray-900));--bs-bg-3:light-dark(var(--bs-gray-100),var(--bs-gray-800));--bs-bg-4:light-dark(var(--bs-gray-200),var(--bs-gray-700));--bs-bg-white:var(--bs-white);--bs-bg-black:var(--bs-black);--bs-bg-transparent:transparent;--bs-bg-inherit:inherit;--bs-fg-body:light-dark(var(--bs-gray-900),var(--bs-gray-050));--bs-fg-1:light-dark(var(--bs-gray-800),var(--bs-gray-200));--bs-fg-2:light-dark(var(--bs-gray-700),var(--bs-gray-300));--bs-fg-3:light-dark(var(--bs-gray-600),var(--bs-gray-500));--bs-fg-4:light-dark(var(--bs-gray-500),var(--bs-gray-600));--bs-fg-white:var(--bs-white);--bs-fg-black:var(--bs-black);--bs-fg-inherit:inherit;--bs-border-bg:var(--bs-bg-body);--bs-border-body:light-dark(var(--bs-gray-300),var(--bs-gray-800));--bs-border-muted:light-dark(var(--bs-gray-200),var(--bs-gray-800));--bs-border-subtle:light-dark(var(--bs-gray-100),var(--bs-gray-900));--bs-border-emphasized:light-dark(var(--bs-gray-400),var(--bs-gray-600));--bs-border-white:var(--bs-white);--bs-border-black:var(--bs-black);--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:1024px;--bs-breakpoint-xl:1280px;--bs-breakpoint-2xl:1536px;color-scheme:light dark}[data-bs-theme=dark]{color-scheme:dark}[data-bs-theme=light]{color-scheme:light}
+:root{--bs-blue-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .24 240));--bs-blue-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .24 240));--bs-blue-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .24 240));--bs-blue-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .24 240));--bs-blue-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .24 240));--bs-blue-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .24 240));--bs-blue-500:oklch(60% .24 240);--bs-blue-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .24 240));--bs-blue-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .24 240));--bs-blue-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .24 240));--bs-blue-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .24 240));--bs-blue-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .24 240));--bs-blue-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .24 240));--bs-indigo-025:color-mix(in lab,var(--bs-white)94%,oklch(56% .26 288));--bs-indigo-050:color-mix(in lab,var(--bs-white)90%,oklch(56% .26 288));--bs-indigo-100:color-mix(in lab,var(--bs-white)80%,oklch(56% .26 288));--bs-indigo-200:color-mix(in lab,var(--bs-white)60%,oklch(56% .26 288));--bs-indigo-300:color-mix(in lab,var(--bs-white)40%,oklch(56% .26 288));--bs-indigo-400:color-mix(in lab,var(--bs-white)20%,oklch(56% .26 288));--bs-indigo-500:oklch(56% .26 288);--bs-indigo-600:color-mix(in lab,var(--bs-black)16%,oklch(56% .26 288));--bs-indigo-700:color-mix(in lab,var(--bs-black)32%,oklch(56% .26 288));--bs-indigo-800:color-mix(in lab,var(--bs-black)48%,oklch(56% .26 288));--bs-indigo-900:color-mix(in lab,var(--bs-black)64%,oklch(56% .26 288));--bs-indigo-950:color-mix(in lab,var(--bs-black)76%,oklch(56% .26 288));--bs-indigo-975:color-mix(in lab,var(--bs-black)88%,oklch(56% .26 288));--bs-violet-025:color-mix(in lab,var(--bs-white)94%,oklch(56% .24 300));--bs-violet-050:color-mix(in lab,var(--bs-white)90%,oklch(56% .24 300));--bs-violet-100:color-mix(in lab,var(--bs-white)80%,oklch(56% .24 300));--bs-violet-200:color-mix(in lab,var(--bs-white)60%,oklch(56% .24 300));--bs-violet-300:color-mix(in lab,var(--bs-white)40%,oklch(56% .24 300));--bs-violet-400:color-mix(in lab,var(--bs-white)20%,oklch(56% .24 300));--bs-violet-500:oklch(56% .24 300);--bs-violet-600:color-mix(in lab,var(--bs-black)16%,oklch(56% .24 300));--bs-violet-700:color-mix(in lab,var(--bs-black)32%,oklch(56% .24 300));--bs-violet-800:color-mix(in lab,var(--bs-black)48%,oklch(56% .24 300));--bs-violet-900:color-mix(in lab,var(--bs-black)64%,oklch(56% .24 300));--bs-violet-950:color-mix(in lab,var(--bs-black)76%,oklch(56% .24 300));--bs-violet-975:color-mix(in lab,var(--bs-black)88%,oklch(56% .24 300));--bs-purple-025:color-mix(in lab,var(--bs-white)94%,oklch(56% .24 320));--bs-purple-050:color-mix(in lab,var(--bs-white)90%,oklch(56% .24 320));--bs-purple-100:color-mix(in lab,var(--bs-white)80%,oklch(56% .24 320));--bs-purple-200:color-mix(in lab,var(--bs-white)60%,oklch(56% .24 320));--bs-purple-300:color-mix(in lab,var(--bs-white)40%,oklch(56% .24 320));--bs-purple-400:color-mix(in lab,var(--bs-white)20%,oklch(56% .24 320));--bs-purple-500:oklch(56% .24 320);--bs-purple-600:color-mix(in lab,var(--bs-black)16%,oklch(56% .24 320));--bs-purple-700:color-mix(in lab,var(--bs-black)32%,oklch(56% .24 320));--bs-purple-800:color-mix(in lab,var(--bs-black)48%,oklch(56% .24 320));--bs-purple-900:color-mix(in lab,var(--bs-black)64%,oklch(56% .24 320));--bs-purple-950:color-mix(in lab,var(--bs-black)76%,oklch(56% .24 320));--bs-purple-975:color-mix(in lab,var(--bs-black)88%,oklch(56% .24 320));--bs-pink-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .22 4));--bs-pink-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .22 4));--bs-pink-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .22 4));--bs-pink-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .22 4));--bs-pink-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .22 4));--bs-pink-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .22 4));--bs-pink-500:oklch(60% .22 4);--bs-pink-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .22 4));--bs-pink-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .22 4));--bs-pink-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .22 4));--bs-pink-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .22 4));--bs-pink-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .22 4));--bs-pink-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .22 4));--bs-red-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .22 20));--bs-red-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .22 20));--bs-red-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .22 20));--bs-red-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .22 20));--bs-red-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .22 20));--bs-red-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .22 20));--bs-red-500:oklch(60% .22 20);--bs-red-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .22 20));--bs-red-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .22 20));--bs-red-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .22 20));--bs-red-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .22 20));--bs-red-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .22 20));--bs-red-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .22 20));--bs-orange-025:color-mix(in lab,var(--bs-white)94%,oklch(70% .22 52));--bs-orange-050:color-mix(in lab,var(--bs-white)90%,oklch(70% .22 52));--bs-orange-100:color-mix(in lab,var(--bs-white)80%,oklch(70% .22 52));--bs-orange-200:color-mix(in lab,var(--bs-white)60%,oklch(70% .22 52));--bs-orange-300:color-mix(in lab,var(--bs-white)40%,oklch(70% .22 52));--bs-orange-400:color-mix(in lab,var(--bs-white)20%,oklch(70% .22 52));--bs-orange-500:oklch(70% .22 52);--bs-orange-600:color-mix(in lab,var(--bs-black)16%,oklch(70% .22 52));--bs-orange-700:color-mix(in lab,var(--bs-black)32%,oklch(70% .22 52));--bs-orange-800:color-mix(in lab,var(--bs-black)48%,oklch(70% .22 52));--bs-orange-900:color-mix(in lab,var(--bs-black)64%,oklch(70% .22 52));--bs-orange-950:color-mix(in lab,var(--bs-black)76%,oklch(70% .22 52));--bs-orange-975:color-mix(in lab,var(--bs-black)88%,oklch(70% .22 52));--bs-amber-025:color-mix(in lab,var(--bs-white)94%,oklch(79% .2 78));--bs-amber-050:color-mix(in lab,var(--bs-white)90%,oklch(79% .2 78));--bs-amber-100:color-mix(in lab,var(--bs-white)80%,oklch(79% .2 78));--bs-amber-200:color-mix(in lab,var(--bs-white)60%,oklch(79% .2 78));--bs-amber-300:color-mix(in lab,var(--bs-white)40%,oklch(79% .2 78));--bs-amber-400:color-mix(in lab,var(--bs-white)20%,oklch(79% .2 78));--bs-amber-500:oklch(79% .2 78);--bs-amber-600:color-mix(in lab,var(--bs-black)16%,oklch(79% .2 78));--bs-amber-700:color-mix(in lab,var(--bs-black)32%,oklch(79% .2 78));--bs-amber-800:color-mix(in lab,var(--bs-black)48%,oklch(79% .2 78));--bs-amber-900:color-mix(in lab,var(--bs-black)64%,oklch(79% .2 78));--bs-amber-950:color-mix(in lab,var(--bs-black)76%,oklch(79% .2 78));--bs-amber-975:color-mix(in lab,var(--bs-black)88%,oklch(79% .2 78));--bs-yellow-025:color-mix(in lab,var(--bs-white)94%,oklch(88% .24 88));--bs-yellow-050:color-mix(in lab,var(--bs-white)90%,oklch(88% .24 88));--bs-yellow-100:color-mix(in lab,var(--bs-white)80%,oklch(88% .24 88));--bs-yellow-200:color-mix(in lab,var(--bs-white)60%,oklch(88% .24 88));--bs-yellow-300:color-mix(in lab,var(--bs-white)40%,oklch(88% .24 88));--bs-yellow-400:color-mix(in lab,var(--bs-white)20%,oklch(88% .24 88));--bs-yellow-500:oklch(88% .24 88);--bs-yellow-600:color-mix(in lab,var(--bs-black)16%,oklch(88% .24 88));--bs-yellow-700:color-mix(in lab,var(--bs-black)32%,oklch(88% .24 88));--bs-yellow-800:color-mix(in lab,var(--bs-black)48%,oklch(88% .24 88));--bs-yellow-900:color-mix(in lab,var(--bs-black)64%,oklch(88% .24 88));--bs-yellow-950:color-mix(in lab,var(--bs-black)76%,oklch(88% .24 88));--bs-yellow-975:color-mix(in lab,var(--bs-black)88%,oklch(88% .24 88));--bs-lime-025:color-mix(in lab,var(--bs-white)94%,oklch(65% .24 135));--bs-lime-050:color-mix(in lab,var(--bs-white)90%,oklch(65% .24 135));--bs-lime-100:color-mix(in lab,var(--bs-white)80%,oklch(65% .24 135));--bs-lime-200:color-mix(in lab,var(--bs-white)60%,oklch(65% .24 135));--bs-lime-300:color-mix(in lab,var(--bs-white)40%,oklch(65% .24 135));--bs-lime-400:color-mix(in lab,var(--bs-white)20%,oklch(65% .24 135));--bs-lime-500:oklch(65% .24 135);--bs-lime-600:color-mix(in lab,var(--bs-black)16%,oklch(65% .24 135));--bs-lime-700:color-mix(in lab,var(--bs-black)32%,oklch(65% .24 135));--bs-lime-800:color-mix(in lab,var(--bs-black)48%,oklch(65% .24 135));--bs-lime-900:color-mix(in lab,var(--bs-black)64%,oklch(65% .24 135));--bs-lime-950:color-mix(in lab,var(--bs-black)76%,oklch(65% .24 135));--bs-lime-975:color-mix(in lab,var(--bs-black)88%,oklch(65% .24 135));--bs-green-025:color-mix(in lab,var(--bs-white)94%,oklch(64% .22 160));--bs-green-050:color-mix(in lab,var(--bs-white)90%,oklch(64% .22 160));--bs-green-100:color-mix(in lab,var(--bs-white)80%,oklch(64% .22 160));--bs-green-200:color-mix(in lab,var(--bs-white)60%,oklch(64% .22 160));--bs-green-300:color-mix(in lab,var(--bs-white)40%,oklch(64% .22 160));--bs-green-400:color-mix(in lab,var(--bs-white)20%,oklch(64% .22 160));--bs-green-500:oklch(64% .22 160);--bs-green-600:color-mix(in lab,var(--bs-black)16%,oklch(64% .22 160));--bs-green-700:color-mix(in lab,var(--bs-black)32%,oklch(64% .22 160));--bs-green-800:color-mix(in lab,var(--bs-black)48%,oklch(64% .22 160));--bs-green-900:color-mix(in lab,var(--bs-black)64%,oklch(64% .22 160));--bs-green-950:color-mix(in lab,var(--bs-black)76%,oklch(64% .22 160));--bs-green-975:color-mix(in lab,var(--bs-black)88%,oklch(64% .22 160));--bs-teal-025:color-mix(in lab,var(--bs-white)94%,oklch(68% .22 190));--bs-teal-050:color-mix(in lab,var(--bs-white)90%,oklch(68% .22 190));--bs-teal-100:color-mix(in lab,var(--bs-white)80%,oklch(68% .22 190));--bs-teal-200:color-mix(in lab,var(--bs-white)60%,oklch(68% .22 190));--bs-teal-300:color-mix(in lab,var(--bs-white)40%,oklch(68% .22 190));--bs-teal-400:color-mix(in lab,var(--bs-white)20%,oklch(68% .22 190));--bs-teal-500:oklch(68% .22 190);--bs-teal-600:color-mix(in lab,var(--bs-black)16%,oklch(68% .22 190));--bs-teal-700:color-mix(in lab,var(--bs-black)32%,oklch(68% .22 190));--bs-teal-800:color-mix(in lab,var(--bs-black)48%,oklch(68% .22 190));--bs-teal-900:color-mix(in lab,var(--bs-black)64%,oklch(68% .22 190));--bs-teal-950:color-mix(in lab,var(--bs-black)76%,oklch(68% .22 190));--bs-teal-975:color-mix(in lab,var(--bs-black)88%,oklch(68% .22 190));--bs-cyan-025:color-mix(in lab,var(--bs-white)94%,oklch(69% .22 220));--bs-cyan-050:color-mix(in lab,var(--bs-white)90%,oklch(69% .22 220));--bs-cyan-100:color-mix(in lab,var(--bs-white)80%,oklch(69% .22 220));--bs-cyan-200:color-mix(in lab,var(--bs-white)60%,oklch(69% .22 220));--bs-cyan-300:color-mix(in lab,var(--bs-white)40%,oklch(69% .22 220));--bs-cyan-400:color-mix(in lab,var(--bs-white)20%,oklch(69% .22 220));--bs-cyan-500:oklch(69% .22 220);--bs-cyan-600:color-mix(in lab,var(--bs-black)16%,oklch(69% .22 220));--bs-cyan-700:color-mix(in lab,var(--bs-black)32%,oklch(69% .22 220));--bs-cyan-800:color-mix(in lab,var(--bs-black)48%,oklch(69% .22 220));--bs-cyan-900:color-mix(in lab,var(--bs-black)64%,oklch(69% .22 220));--bs-cyan-950:color-mix(in lab,var(--bs-black)76%,oklch(69% .22 220));--bs-cyan-975:color-mix(in lab,var(--bs-black)88%,oklch(69% .22 220));--bs-brown-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .12 54));--bs-brown-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .12 54));--bs-brown-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .12 54));--bs-brown-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .12 54));--bs-brown-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .12 54));--bs-brown-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .12 54));--bs-brown-500:oklch(60% .12 54);--bs-brown-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .12 54));--bs-brown-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .12 54));--bs-brown-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .12 54));--bs-brown-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .12 54));--bs-brown-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .12 54));--bs-brown-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .12 54));--bs-gray-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .02 245));--bs-gray-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .02 245));--bs-gray-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .02 245));--bs-gray-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .02 245));--bs-gray-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .02 245));--bs-gray-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .02 245));--bs-gray-500:oklch(60% .02 245);--bs-gray-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .02 245));--bs-gray-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .02 245));--bs-gray-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .02 245));--bs-gray-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .02 245));--bs-gray-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .02 245));--bs-gray-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .02 245));--bs-pewter-025:color-mix(in lab,var(--bs-white)94%,oklch(65% .01 290));--bs-pewter-050:color-mix(in lab,var(--bs-white)90%,oklch(65% .01 290));--bs-pewter-100:color-mix(in lab,var(--bs-white)80%,oklch(65% .01 290));--bs-pewter-200:color-mix(in lab,var(--bs-white)60%,oklch(65% .01 290));--bs-pewter-300:color-mix(in lab,var(--bs-white)40%,oklch(65% .01 290));--bs-pewter-400:color-mix(in lab,var(--bs-white)20%,oklch(65% .01 290));--bs-pewter-500:oklch(65% .01 290);--bs-pewter-600:color-mix(in lab,var(--bs-black)16%,oklch(65% .01 290));--bs-pewter-700:color-mix(in lab,var(--bs-black)32%,oklch(65% .01 290));--bs-pewter-800:color-mix(in lab,var(--bs-black)48%,oklch(65% .01 290));--bs-pewter-900:color-mix(in lab,var(--bs-black)64%,oklch(65% .01 290));--bs-pewter-950:color-mix(in lab,var(--bs-black)76%,oklch(65% .01 290));--bs-pewter-975:color-mix(in lab,var(--bs-black)88%,oklch(65% .01 290))}@layer colors,theme,config,root,reboot,layout,content,forms,components,custom;@layer helpers{.focus-ring:focus-visible{outline:var(--bs-focus-ring)}.icon-link{text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,.5));text-underline-offset:.25em;backface-visibility:hidden;align-items:center;gap:.375rem;display:inline-flex}.icon-link>.bi{fill:currentColor;flex-shrink:0;width:1em;height:1em;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em,0,0))}.fixed-top{z-index:1030;position:fixed;inset:0 0 auto}.fixed-bottom{z-index:1030;position:fixed;inset:auto 0 0}.sticky-top{z-index:1020;position:sticky;top:0}.sticky-bottom{z-index:1020;position:sticky;bottom:0}@media (width>=576px){.sticky-sm-top{z-index:1020;position:sticky;top:0}.sticky-sm-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=768px){.sticky-md-top{z-index:1020;position:sticky;top:0}.sticky-md-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1024px){.sticky-lg-top{z-index:1020;position:sticky;top:0}.sticky-lg-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1280px){.sticky-xl-top{z-index:1020;position:sticky;top:0}.sticky-xl-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1536px){.sticky-2xl-top{z-index:1020;position:sticky;top:0}.sticky-2xl-bottom{z-index:1020;position:sticky;bottom:0}}.stack-container{container-type:inline-size}[class*=hstack],[class*=vstack]{flex:var(--bs-stack-flex,1 1 auto);flex-direction:var(--bs-stack-direction,row);align-items:var(--bs-stack-align-items,center);align-self:var(--bs-stack-align-self,stretch);display:flex}.vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}@container (width>=576px){.vstack-sm{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack-sm{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=768px){.vstack-md{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack-md{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1024px){.vstack-lg{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack-lg{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1280px){.vstack-xl{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack-xl{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1536px){.vstack-2xl{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack-2xl{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}.theme-primary{--bs-theme-base:var(--bs-primary-base);--bs-theme-text:var(--bs-primary-text);--bs-theme-text-emphasis:var(--bs-primary-text-emphasis);--bs-theme-bg:var(--bs-primary-bg);--bs-theme-bg-subtle:var(--bs-primary-bg-subtle);--bs-theme-bg-muted:var(--bs-primary-bg-muted);--bs-theme-border:var(--bs-primary-border);--bs-theme-focus-ring:var(--bs-primary-focus-ring);--bs-theme-contrast:var(--bs-primary-contrast)}.theme-accent{--bs-theme-base:var(--bs-accent-base);--bs-theme-text:var(--bs-accent-text);--bs-theme-text-emphasis:var(--bs-accent-text-emphasis);--bs-theme-bg:var(--bs-accent-bg);--bs-theme-bg-subtle:var(--bs-accent-bg-subtle);--bs-theme-bg-muted:var(--bs-accent-bg-muted);--bs-theme-border:var(--bs-accent-border);--bs-theme-focus-ring:var(--bs-accent-focus-ring);--bs-theme-contrast:var(--bs-accent-contrast)}.theme-success{--bs-theme-base:var(--bs-success-base);--bs-theme-text:var(--bs-success-text);--bs-theme-text-emphasis:var(--bs-success-text-emphasis);--bs-theme-bg:var(--bs-success-bg);--bs-theme-bg-subtle:var(--bs-success-bg-subtle);--bs-theme-bg-muted:var(--bs-success-bg-muted);--bs-theme-border:var(--bs-success-border);--bs-theme-focus-ring:var(--bs-success-focus-ring);--bs-theme-contrast:var(--bs-success-contrast)}.theme-danger{--bs-theme-base:var(--bs-danger-base);--bs-theme-text:var(--bs-danger-text);--bs-theme-text-emphasis:var(--bs-danger-text-emphasis);--bs-theme-bg:var(--bs-danger-bg);--bs-theme-bg-subtle:var(--bs-danger-bg-subtle);--bs-theme-bg-muted:var(--bs-danger-bg-muted);--bs-theme-border:var(--bs-danger-border);--bs-theme-focus-ring:var(--bs-danger-focus-ring);--bs-theme-contrast:var(--bs-danger-contrast)}.theme-warning{--bs-theme-base:var(--bs-warning-base);--bs-theme-text:var(--bs-warning-text);--bs-theme-text-emphasis:var(--bs-warning-text-emphasis);--bs-theme-bg:var(--bs-warning-bg);--bs-theme-bg-subtle:var(--bs-warning-bg-subtle);--bs-theme-bg-muted:var(--bs-warning-bg-muted);--bs-theme-border:var(--bs-warning-border);--bs-theme-focus-ring:var(--bs-warning-focus-ring);--bs-theme-contrast:var(--bs-warning-contrast)}.theme-info{--bs-theme-base:var(--bs-info-base);--bs-theme-text:var(--bs-info-text);--bs-theme-text-emphasis:var(--bs-info-text-emphasis);--bs-theme-bg:var(--bs-info-bg);--bs-theme-bg-subtle:var(--bs-info-bg-subtle);--bs-theme-bg-muted:var(--bs-info-bg-muted);--bs-theme-border:var(--bs-info-border);--bs-theme-focus-ring:var(--bs-info-focus-ring);--bs-theme-contrast:var(--bs-info-contrast)}.theme-inverse{--bs-theme-base:var(--bs-inverse-base);--bs-theme-text:var(--bs-inverse-text);--bs-theme-text-emphasis:var(--bs-inverse-text-emphasis);--bs-theme-bg:var(--bs-inverse-bg);--bs-theme-bg-subtle:var(--bs-inverse-bg-subtle);--bs-theme-bg-muted:var(--bs-inverse-bg-muted);--bs-theme-border:var(--bs-inverse-border);--bs-theme-focus-ring:var(--bs-inverse-focus-ring);--bs-theme-contrast:var(--bs-inverse-contrast)}.theme-secondary{--bs-theme-base:var(--bs-secondary-base);--bs-theme-text:var(--bs-secondary-text);--bs-theme-text-emphasis:var(--bs-secondary-text-emphasis);--bs-theme-bg:var(--bs-secondary-bg);--bs-theme-bg-subtle:var(--bs-secondary-bg-subtle);--bs-theme-bg-muted:var(--bs-secondary-bg-muted);--bs-theme-border:var(--bs-secondary-border);--bs-theme-focus-ring:var(--bs-secondary-focus-ring);--bs-theme-contrast:var(--bs-secondary-contrast)}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute!important}.visually-hidden *,.visually-hidden-focusable:not(:focus):not(:focus-within) *{overflow:hidden!important}.stretched-link:after{z-index:1;content:"";position:absolute;inset:0}.text-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vr{width:var(--bs-vr-border-width,var(--bs-border-width));background-color:var(--bs-border-color);align-self:stretch;min-height:1em;display:inline-block}}@layer utilities{.align-baseline{vertical-align:baseline}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.align-text-bottom{vertical-align:text-bottom}.align-text-top{vertical-align:text-top}[class*=ratio-]{aspect-ratio:var(--bs-ratio)}.ratio-auto{--bs-ratio:auto}.ratio-1x1{--bs-ratio:1/1}.ratio-4x3{--bs-ratio:4/3}.ratio-16x9{--bs-ratio:16/9}.ratio-21x9{--bs-ratio:21/9}.float-start{float:inline-start}.float-end{float:inline-end}.float-none{float:none}.object-fit-contain{-o-object-fit:contain;object-fit:contain}.object-fit-cover{-o-object-fit:cover;object-fit:cover}.object-fit-fill{-o-object-fit:fill;object-fit:fill}.object-fit-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-none{-o-object-fit:none;object-fit:none}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-100{opacity:1}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-visible{overflow-x:visible}.overflow-x-scroll{overflow-x:scroll}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overflow-y-visible{overflow-y:visible}.overflow-y-scroll{overflow-y:scroll}.d-inline{display:inline}.d-inline-block{display:inline-block}.d-block{display:block}.d-grid{display:grid}.d-inline-grid{display:inline-grid}.d-table{display:table}.d-table-row{display:table-row}.d-table-cell{display:table-cell}.d-flex{display:flex}.d-inline-flex{display:inline-flex}.d-contents{display:contents}.d-flow-root{display:flow-root}.d-none{display:none}.shadow{box-shadow:var(--bs-box-shadow)}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)}.shadow-none{box-shadow:none}.focus-ring-primary{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-blue-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-blue-500)75%,var(--bs-bg-body)))}.focus-ring-accent{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-indigo-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-indigo-500)75%,var(--bs-bg-body)))}.focus-ring-success{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-green-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-green-500)75%,var(--bs-bg-body)))}.focus-ring-danger{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-red-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-red-500)75%,var(--bs-bg-body)))}.focus-ring-warning{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-yellow-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-yellow-400)85%,var(--bs-bg-body)))}.focus-ring-info{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-cyan-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-cyan-500)75%,var(--bs-bg-body)))}.focus-ring-inverse{--bs-focus-ring-color:color-mix(in oklch,light-dark(var(--bs-gray-900),var(--bs-gray-100))50%,var(--bs-bg-body))}.focus-ring-secondary{--bs-focus-ring-color:color-mix(in oklch,light-dark(var(--bs-gray-500),var(--bs-gray-300))50%,var(--bs-bg-body))}.position-static{position:static}.position-relative{position:relative}.position-absolute{position:absolute}.position-fixed{position:fixed}.position-sticky{position:sticky}.top-0{top:0}.top-50{top:50%}.top-100{top:100%}.bottom-0{bottom:0}.bottom-50{bottom:50%}.bottom-100{bottom:100%}.start-0{left:0}.start-50{left:50%}.start-100{left:100%}.end-0{right:0}.end-50{right:50%}.end-100{right:100%}.translate-middle{transform:translate(-50%,-50%)}.translate-middle-x{transform:translate(-50%)}.translate-middle-y{transform:translateY(-50%)}.border{border:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-0{border:0}.border-top{border-block-start:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-top-0{border-block-start:0}.border-end{border-inline-end:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-end-0{border-inline-end:0}.border-bottom{border-block-end:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-bottom-0{border-block-end:0}.border-start{border-inline-start:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-start-0{border-inline-start:0}.border-block{border-block:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-block-0{border-block:0}.border-inline{border-inline:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-inline-0{border-inline:0}.border-primary{--bs-border-color:var(--bs-blue-500);border-color:var(--bs-border-color)}.border-accent{--bs-border-color:var(--bs-indigo-500);border-color:var(--bs-border-color)}.border-success{--bs-border-color:var(--bs-green-500);border-color:var(--bs-border-color)}.border-danger{--bs-border-color:var(--bs-red-500);border-color:var(--bs-border-color)}.border-warning{--bs-border-color:var(--bs-yellow-500);border-color:var(--bs-border-color)}.border-info{--bs-border-color:var(--bs-cyan-500);border-color:var(--bs-border-color)}.border-inverse{--bs-border-color:light-dark(var(--bs-gray-900),var(--bs-gray-025));border-color:var(--bs-border-color)}.border-secondary{--bs-border-color:light-dark(var(--bs-gray-100),var(--bs-gray-600));border-color:var(--bs-border-color)}.border-bg{--bs-border-color:var(--bs-bg-body);border-color:var(--bs-border-color)}.border-body{--bs-border-color:light-dark(var(--bs-gray-300),var(--bs-gray-800));border-color:var(--bs-border-color)}.border-muted{--bs-border-color:light-dark(var(--bs-gray-200),var(--bs-gray-800));border-color:var(--bs-border-color)}.border-subtle{--bs-border-color:light-dark(var(--bs-gray-100),var(--bs-gray-900));border-color:var(--bs-border-color)}.border-emphasized{--bs-border-color:light-dark(var(--bs-gray-400),var(--bs-gray-600));border-color:var(--bs-border-color)}.border-white{--bs-border-color:var(--bs-white);border-color:var(--bs-border-color)}.border-black{--bs-border-color:var(--bs-black);border-color:var(--bs-border-color)}.border-subtle-primary{--bs-border-color:light-dark(var(--bs-blue-300),var(--bs-blue-600));border-color:var(--bs-border-color)}.border-subtle-accent{--bs-border-color:light-dark(var(--bs-indigo-300),var(--bs-indigo-600));border-color:var(--bs-border-color)}.border-subtle-success{--bs-border-color:light-dark(var(--bs-green-300),var(--bs-green-600));border-color:var(--bs-border-color)}.border-subtle-danger{--bs-border-color:light-dark(var(--bs-red-300),var(--bs-red-600));border-color:var(--bs-border-color)}.border-subtle-warning{--bs-border-color:light-dark(var(--bs-yellow-300),var(--bs-yellow-600));border-color:var(--bs-border-color)}.border-subtle-info{--bs-border-color:light-dark(var(--bs-cyan-300),var(--bs-cyan-600));border-color:var(--bs-border-color)}.border-subtle-inverse{--bs-border-color:light-dark(var(--bs-gray-400),var(--bs-gray-100));border-color:var(--bs-border-color)}.border-subtle-secondary{--bs-border-color:light-dark(var(--bs-gray-300),var(--bs-gray-600));border-color:var(--bs-border-color)}.border-1{border-width:1px}.border-2{border-width:2px}.border-3{border-width:3px}.border-4{border-width:4px}.border-5{border-width:5px}.border-10{border-color:color-mix(in oklch,var(--bs-border-color)10%,transparent)}.border-20{border-color:color-mix(in oklch,var(--bs-border-color)20%,transparent)}.border-30{border-color:color-mix(in oklch,var(--bs-border-color)30%,transparent)}.border-40{border-color:color-mix(in oklch,var(--bs-border-color)40%,transparent)}.border-50{border-color:color-mix(in oklch,var(--bs-border-color)50%,transparent)}.border-60{border-color:color-mix(in oklch,var(--bs-border-color)60%,transparent)}.border-70{border-color:color-mix(in oklch,var(--bs-border-color)70%,transparent)}.border-80{border-color:color-mix(in oklch,var(--bs-border-color)80%,transparent)}.border-90{border-color:color-mix(in oklch,var(--bs-border-color)90%,transparent)}.border-100{border-color:var(--bs-border-color)}.w-1{width:1rem}.w-2{width:2rem}.w-3{width:3rem}.w-4{width:4rem}.w-5{width:5rem}.w-6{width:6rem}.w-7{width:7rem}.w-8{width:8rem}.w-9{width:9rem}.w-10{width:10rem}.w-11{width:11rem}.w-12{width:12rem}.w-25{width:25%}.w-50{width:50%}.w-75{width:75%}.w-100{width:100%}.w-auto{width:auto}.w-min{width:min-content}.w-max{width:max-content}.w-fit{width:fit-content}.max-w-100{max-width:100%}.min-w-0{min-width:0}.min-w-100{min-width:100%}.vw-100{width:100vw}.min-vw-100{min-width:100vw}.h-25{height:25%}.h-50{height:50%}.h-75{height:75%}.h-100{height:100%}.h-auto{height:auto}.h-min{height:min-content}.h-max{height:max-content}.h-fit{height:fit-content}.max-h-100{max-height:100%}.min-h-0{min-height:0}.min-h-100{min-height:100%}.vh-100{height:100vh}.min-vh-100{min-height:100vh}.flex-fill{flex:auto}.flex-row{flex-direction:row}.flex-column{flex-direction:column}.flex-row-reverse{flex-direction:row-reverse}.flex-column-reverse{flex-direction:column-reverse}.flex-grow-0{flex-grow:0}.flex-grow-1{flex-grow:1}.flex-shrink-0{flex-shrink:0}.flex-shrink-1{flex-shrink:1}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-start{justify-content:flex-start}.justify-content-end{justify-content:flex-end}.justify-content-center{justify-content:center}.justify-content-between{justify-content:space-between}.justify-content-around{justify-content:space-around}.justify-content-evenly{justify-content:space-evenly}.justify-items-start{justify-items:start}.justify-items-end{justify-items:end}.justify-items-center{justify-items:center}.justify-items-stretch{justify-items:stretch}.justify-self-start{justify-self:flex-start}.justify-self-end{justify-self:flex-end}.justify-self-center{justify-self:center}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.align-items-center{align-items:center}.align-items-baseline{align-items:baseline}.align-items-stretch{align-items:stretch}.align-content-start{align-content:flex-start}.align-content-end{align-content:flex-end}.align-content-center{align-content:center}.align-content-between{align-content:space-between}.align-content-around{align-content:space-around}.align-content-stretch{align-content:stretch}.align-self-auto{align-self:auto}.align-self-start{align-self:flex-start}.align-self-end{align-self:flex-end}.align-self-center{align-self:center}.align-self-baseline{align-self:baseline}.align-self-stretch{align-self:stretch}.place-items-start{place-items:start}.place-items-end{place-items:end}.place-items-center{place-items:center}.place-items-stretch{place-items:stretch stretch}.grid-cols-3{--bs-columns:3}.grid-cols-4{--bs-columns:4}.grid-cols-6{--bs-columns:6}.grid-cols-fill{grid-column:1/-1}.grid-auto-flow-row{grid-auto-flow:row}.grid-auto-flow-column{grid-auto-flow:column}.grid-auto-flow-dense{grid-auto-flow:dense}.order-first{order:-1}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-last{order:6}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-3{margin:1rem}.m-4{margin:1.5rem}.m-5{margin:3rem}.m-auto{margin:auto}.mx-0{margin-inline:0}.mx-1{margin-inline:.25rem}.mx-2{margin-inline:.5rem}.mx-3{margin-inline:1rem}.mx-4{margin-inline:1.5rem}.mx-5{margin-inline:3rem}.mx-auto{margin-inline:auto}.my-0{margin-block:0}.my-1{margin-block:.25rem}.my-2{margin-block:.5rem}.my-3{margin-block:1rem}.my-4{margin-block:1.5rem}.my-5{margin-block:3rem}.my-auto{margin-block:auto}.mt-0{margin-block-start:0}.mt-1{margin-block-start:.25rem}.mt-2{margin-block-start:.5rem}.mt-3{margin-block-start:1rem}.mt-4{margin-block-start:1.5rem}.mt-5{margin-block-start:3rem}.mt-auto{margin-block-start:auto}.me-0{margin-inline-end:0}.me-1{margin-inline-end:.25rem}.me-2{margin-inline-end:.5rem}.me-3{margin-inline-end:1rem}.me-4{margin-inline-end:1.5rem}.me-5{margin-inline-end:3rem}.me-auto{margin-inline-end:auto}.mb-0{margin-block-end:0}.mb-1{margin-block-end:.25rem}.mb-2{margin-block-end:.5rem}.mb-3{margin-block-end:1rem}.mb-4{margin-block-end:1.5rem}.mb-5{margin-block-end:3rem}.mb-auto{margin-block-end:auto}.ms-0{margin-inline-start:0}.ms-1{margin-inline-start:.25rem}.ms-2{margin-inline-start:.5rem}.ms-3{margin-inline-start:1rem}.ms-4{margin-inline-start:1.5rem}.ms-5{margin-inline-start:3rem}.ms--1{margin-inline-start:-.25rem}.ms--2{margin-inline-start:-.5rem}.ms-auto{margin-inline-start:auto}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:1rem}.p-4{padding:1.5rem}.p-5{padding:3rem}.px-0{padding-inline:0}.px-1{padding-inline:.25rem}.px-2{padding-inline:.5rem}.px-3{padding-inline:1rem}.px-4{padding-inline:1.5rem}.px-5{padding-inline:3rem}.py-0{padding-block:0}.py-1{padding-block:.25rem}.py-2{padding-block:.5rem}.py-3{padding-block:1rem}.py-4{padding-block:1.5rem}.py-5{padding-block:3rem}.pt-0{padding-block-start:0}.pt-1{padding-block-start:.25rem}.pt-2{padding-block-start:.5rem}.pt-3{padding-block-start:1rem}.pt-4{padding-block-start:1.5rem}.pt-5{padding-block-start:3rem}.pe-0{padding-inline-end:0}.pe-1{padding-inline-end:.25rem}.pe-2{padding-inline-end:.5rem}.pe-3{padding-inline-end:1rem}.pe-4{padding-inline-end:1.5rem}.pe-5{padding-inline-end:3rem}.pb-0{padding-block-end:0}.pb-1{padding-block-end:.25rem}.pb-2{padding-block-end:.5rem}.pb-3{padding-block-end:1rem}.pb-4{padding-block-end:1.5rem}.pb-5{padding-block-end:3rem}.ps-0{padding-inline-start:0}.ps-1{padding-inline-start:.25rem}.ps-2{padding-inline-start:.5rem}.ps-3{padding-inline-start:1rem}.ps-4{padding-inline-start:1.5rem}.ps-5{padding-inline-start:3rem}.gap-0{gap:0}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:1rem}.gap-4{gap:1.5rem}.gap-5{gap:3rem}.row-gap-0{row-gap:0}.row-gap-1{row-gap:.25rem}.row-gap-2{row-gap:.5rem}.row-gap-3{row-gap:1rem}.row-gap-4{row-gap:1.5rem}.row-gap-5{row-gap:3rem}.column-gap-0{-moz-column-gap:0;column-gap:0}.column-gap-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-5{-moz-column-gap:3rem;column-gap:3rem}.font-monospace{font-family:var(--bs-font-mono)}.font-body{font-family:var(--bs-body-font-family)}.fs-xs{font-size:.75rem}.fs-sm{font-size:.875rem}.fs-md{font-size:1rem}.fs-lg{font-size:clamp(1.25rem,1rem + .625vw,1.5rem)}.fs-xl{font-size:clamp(1.5rem,1.1rem + .75vw,1.75rem)}.fs-2xl{font-size:clamp(1.75rem,1.3rem + 1vw,2rem)}.fs-3xl{font-size:clamp(2rem,1.5rem + 1.875vw,2.5rem)}.fs-4xl{font-size:clamp(2.25rem,1.75rem + 2.5vw,3rem)}.fs-5xl{font-size:clamp(3rem,2rem + 5vw,4rem)}.fs-6xl{font-size:clamp(3.75rem,2.5rem + 6.25vw,5rem)}.text-xs{font-size:.75rem;line-height:1.25}.text-sm{font-size:.875rem;line-height:1.5}.text-md{font-size:1rem;line-height:1.5}.text-lg{font-size:clamp(1.25rem,1rem + .625vw,1.5rem);line-height:1.5}.text-xl{font-size:clamp(1.5rem,1.1rem + .75vw,1.75rem);line-height:1.42857}.text-2xl{font-size:clamp(1.75rem,1.3rem + 1vw,2rem);line-height:1.33333}.text-3xl{font-size:clamp(2rem,1.5rem + 1.875vw,2.5rem);line-height:1.2}.text-4xl{font-size:clamp(2.25rem,1.75rem + 2.5vw,3rem);line-height:1.1}.text-5xl{font-size:clamp(3rem,2rem + 5vw,4rem);line-height:1.1}.text-6xl{font-size:clamp(3.75rem,2.5rem + 6.25vw,5rem);line-height:1}.fst-italic{font-style:italic}.fst-normal{font-style:normal}.fw-lighter{font-weight:lighter}.fw-light{font-weight:300}.fw-normal{font-weight:400}.fw-medium{font-weight:500}.fw-semibold{font-weight:600}.fw-bold{font-weight:700}.fw-bolder{font-weight:bolder}.lh-1{line-height:1}.lh-sm{line-height:1.25}.lh-base{line-height:1.5}.lh-lg{line-height:2}.text-start{text-align:start}.text-end{text-align:end}.text-center{text-align:center}.text-decoration-none{text-decoration:none}.text-decoration-underline{text-decoration:underline}.text-decoration-line-through{text-decoration:line-through}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-wrap{white-space:wrap}.text-nowrap{white-space:nowrap}.text-balance{white-space:balance}.text-pretty{white-space:pretty}.text-break{word-wrap:break-word;word-break:break-word}.fg-primary{--bs-fg:light-dark(var(--bs-blue-600),var(--bs-blue-400));color:var(--bs-fg)}.fg-accent{--bs-fg:light-dark(var(--bs-indigo-600),color-mix(in oklch,var(--bs-indigo-400),var(--bs-indigo-300)));color:var(--bs-fg)}.fg-success{--bs-fg:light-dark(var(--bs-green-600),var(--bs-green-400));color:var(--bs-fg)}.fg-danger{--bs-fg:light-dark(var(--bs-red-600),var(--bs-red-400));color:var(--bs-fg)}.fg-warning{--bs-fg:light-dark(var(--bs-yellow-700),var(--bs-yellow-400));color:var(--bs-fg)}.fg-info{--bs-fg:light-dark(var(--bs-cyan-600),var(--bs-cyan-400));color:var(--bs-fg)}.fg-inverse{--bs-fg:light-dark(var(--bs-gray-900),var(--bs-gray-200));color:var(--bs-fg)}.fg-secondary{--bs-fg:light-dark(var(--bs-gray-600),var(--bs-gray-400));color:var(--bs-fg)}.fg-body{--bs-fg:light-dark(var(--bs-gray-900),var(--bs-gray-050));color:var(--bs-fg)}.fg-1{--bs-fg:light-dark(var(--bs-gray-800),var(--bs-gray-200));color:var(--bs-fg)}.fg-2{--bs-fg:light-dark(var(--bs-gray-700),var(--bs-gray-300));color:var(--bs-fg)}.fg-3{--bs-fg:light-dark(var(--bs-gray-600),var(--bs-gray-500));color:var(--bs-fg)}.fg-4{--bs-fg:light-dark(var(--bs-gray-500),var(--bs-gray-600));color:var(--bs-fg)}.fg-white{--bs-fg:var(--bs-white);color:var(--bs-fg)}.fg-black{--bs-fg:var(--bs-black);color:var(--bs-fg)}.fg-inherit{--bs-fg:inherit;color:var(--bs-fg)}.fg-emphasis-primary{--bs-fg:light-dark(var(--bs-blue-800),var(--bs-blue-200));color:var(--bs-fg)}.fg-emphasis-accent{--bs-fg:light-dark(var(--bs-indigo-800),var(--bs-indigo-300));color:var(--bs-fg)}.fg-emphasis-success{--bs-fg:light-dark(var(--bs-green-800),var(--bs-green-300));color:var(--bs-fg)}.fg-emphasis-danger{--bs-fg:light-dark(var(--bs-red-800),var(--bs-red-300));color:var(--bs-fg)}.fg-emphasis-warning{--bs-fg:light-dark(var(--bs-yellow-800),var(--bs-yellow-300));color:var(--bs-fg)}.fg-emphasis-info{--bs-fg:light-dark(var(--bs-cyan-800),var(--bs-cyan-300));color:var(--bs-fg)}.fg-emphasis-inverse{--bs-fg:light-dark(var(--bs-gray-975),var(--bs-white));color:var(--bs-fg)}.fg-emphasis-secondary{--bs-fg:light-dark(var(--bs-gray-800),var(--bs-gray-200));color:var(--bs-fg)}.fg-contrast-primary,.fg-contrast-accent,.fg-contrast-success,.fg-contrast-danger{--bs-fg:var(--bs-white);color:var(--bs-fg)}.fg-contrast-warning,.fg-contrast-info{--bs-fg:var(--bs-gray-900);color:var(--bs-fg)}.fg-contrast-inverse{--bs-fg:light-dark(var(--bs-white),var(--bs-gray-900));color:var(--bs-fg)}.fg-contrast-secondary{--bs-fg:light-dark(var(--bs-gray-900),var(--bs-white));color:var(--bs-fg)}.fg-10{color:color-mix(in oklch,var(--bs-fg)10%,transparent)}.fg-20{color:color-mix(in oklch,var(--bs-fg)20%,transparent)}.fg-30{color:color-mix(in oklch,var(--bs-fg)30%,transparent)}.fg-40{color:color-mix(in oklch,var(--bs-fg)40%,transparent)}.fg-50{color:color-mix(in oklch,var(--bs-fg)50%,transparent)}.fg-60{color:color-mix(in oklch,var(--bs-fg)60%,transparent)}.fg-70{color:color-mix(in oklch,var(--bs-fg)70%,transparent)}.fg-80{color:color-mix(in oklch,var(--bs-fg)80%,transparent)}.fg-90{color:color-mix(in oklch,var(--bs-fg)90%,transparent)}.fg-100{color:var(--bs-fg)}.link-10,.link-10-hover:hover{color:color-mix(in oklch,var(--bs-link-color)10%,transparent)}.link-20,.link-20-hover:hover{color:color-mix(in oklch,var(--bs-link-color)20%,transparent)}.link-30,.link-30-hover:hover{color:color-mix(in oklch,var(--bs-link-color)30%,transparent)}.link-40,.link-40-hover:hover{color:color-mix(in oklch,var(--bs-link-color)40%,transparent)}.link-50,.link-50-hover:hover{color:color-mix(in oklch,var(--bs-link-color)50%,transparent)}.link-60,.link-60-hover:hover{color:color-mix(in oklch,var(--bs-link-color)60%,transparent)}.link-70,.link-70-hover:hover{color:color-mix(in oklch,var(--bs-link-color)70%,transparent)}.link-80,.link-80-hover:hover{color:color-mix(in oklch,var(--bs-link-color)80%,transparent)}.link-90,.link-90-hover:hover{color:color-mix(in oklch,var(--bs-link-color)90%,transparent)}.link-100,.link-100-hover:hover{color:var(--bs-link-color)}.underline-offset-1,.underline-offset-1-hover:hover{text-underline-offset:.125em}.underline-offset-2,.underline-offset-2-hover:hover{text-underline-offset:.25em}.underline-offset-3,.underline-offset-3-hover:hover{text-underline-offset:.375em}.underline-primary{text-decoration-color:light-dark(var(--bs-blue-600),var(--bs-blue-400))}.underline-accent{text-decoration-color:light-dark(var(--bs-indigo-600),color-mix(in oklch,var(--bs-indigo-400),var(--bs-indigo-300)))}.underline-success{text-decoration-color:light-dark(var(--bs-green-600),var(--bs-green-400))}.underline-danger{text-decoration-color:light-dark(var(--bs-red-600),var(--bs-red-400))}.underline-warning{text-decoration-color:light-dark(var(--bs-yellow-700),var(--bs-yellow-400))}.underline-info{text-decoration-color:light-dark(var(--bs-cyan-600),var(--bs-cyan-400))}.underline-inverse{text-decoration-color:light-dark(var(--bs-gray-900),var(--bs-gray-200))}.underline-secondary{text-decoration-color:light-dark(var(--bs-gray-600),var(--bs-gray-400))}.underline-10,.underline-10-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)10%,transparent)}.underline-20,.underline-20-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)20%,transparent)}.underline-30,.underline-30-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)30%,transparent)}.underline-40,.underline-40-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)40%,transparent)}.underline-50,.underline-50-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)50%,transparent)}.underline-60,.underline-60-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)60%,transparent)}.underline-70,.underline-70-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)70%,transparent)}.underline-80,.underline-80-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)80%,transparent)}.underline-90,.underline-90-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)90%,transparent)}.underline-100,.underline-100-hover:hover{text-decoration-color:var(--bs-link-color)}.underline-thickness-1,.underline-thickness-1-hover:hover{text-decoration-thickness:1px}.underline-thickness-2,.underline-thickness-2-hover:hover{text-decoration-thickness:2px}.underline-thickness-3,.underline-thickness-3-hover:hover{text-decoration-thickness:3px}.underline-thickness-4,.underline-thickness-4-hover:hover{text-decoration-thickness:4px}.underline-thickness-5,.underline-thickness-5-hover:hover{text-decoration-thickness:5px}.bg-primary{--bs-bg:var(--bs-blue-500);background-color:var(--bs-bg)}.bg-accent{--bs-bg:var(--bs-indigo-500);background-color:var(--bs-bg)}.bg-success{--bs-bg:var(--bs-green-500);background-color:var(--bs-bg)}.bg-danger{--bs-bg:var(--bs-red-500);background-color:var(--bs-bg)}.bg-warning{--bs-bg:var(--bs-yellow-500);background-color:var(--bs-bg)}.bg-info{--bs-bg:var(--bs-cyan-500);background-color:var(--bs-bg)}.bg-inverse{--bs-bg:light-dark(var(--bs-gray-900),var(--bs-gray-025));background-color:var(--bs-bg)}.bg-secondary{--bs-bg:light-dark(var(--bs-gray-100),var(--bs-gray-600));background-color:var(--bs-bg)}.bg-body{--bs-bg:light-dark(var(--bs-white),var(--bs-gray-975));background-color:var(--bs-bg)}.bg-1{--bs-bg:light-dark(var(--bs-gray-025),var(--bs-gray-950));background-color:var(--bs-bg)}.bg-2{--bs-bg:light-dark(var(--bs-gray-050),var(--bs-gray-900));background-color:var(--bs-bg)}.bg-3{--bs-bg:light-dark(var(--bs-gray-100),var(--bs-gray-800));background-color:var(--bs-bg)}.bg-4{--bs-bg:light-dark(var(--bs-gray-200),var(--bs-gray-700));background-color:var(--bs-bg)}.bg-white{--bs-bg:var(--bs-white);background-color:var(--bs-bg)}.bg-black{--bs-bg:var(--bs-black);background-color:var(--bs-bg)}.bg-transparent{--bs-bg:transparent;background-color:var(--bs-bg)}.bg-inherit{--bs-bg:inherit;background-color:var(--bs-bg)}.bg-subtle-primary{--bs-bg:light-dark(var(--bs-blue-100),var(--bs-blue-900));background-color:var(--bs-bg)}.bg-subtle-accent{--bs-bg:light-dark(var(--bs-indigo-100),var(--bs-indigo-900));background-color:var(--bs-bg)}.bg-subtle-success{--bs-bg:light-dark(var(--bs-green-100),var(--bs-green-900));background-color:var(--bs-bg)}.bg-subtle-danger{--bs-bg:light-dark(var(--bs-red-100),var(--bs-red-900));background-color:var(--bs-bg)}.bg-subtle-warning{--bs-bg:light-dark(var(--bs-yellow-100),var(--bs-yellow-900));background-color:var(--bs-bg)}.bg-subtle-info{--bs-bg:light-dark(var(--bs-cyan-100),var(--bs-cyan-900));background-color:var(--bs-bg)}.bg-subtle-inverse{--bs-bg:light-dark(var(--bs-gray-100),var(--bs-gray-900));background-color:var(--bs-bg)}.bg-subtle-secondary{--bs-bg:light-dark(var(--bs-gray-050),var(--bs-gray-800));background-color:var(--bs-bg)}.bg-muted-primary{--bs-bg:light-dark(var(--bs-blue-200),var(--bs-blue-800));background-color:var(--bs-bg)}.bg-muted-accent{--bs-bg:light-dark(var(--bs-indigo-200),var(--bs-indigo-800));background-color:var(--bs-bg)}.bg-muted-success{--bs-bg:light-dark(var(--bs-green-200),var(--bs-green-800));background-color:var(--bs-bg)}.bg-muted-danger{--bs-bg:light-dark(var(--bs-red-200),var(--bs-red-800));background-color:var(--bs-bg)}.bg-muted-warning{--bs-bg:light-dark(var(--bs-yellow-200),var(--bs-yellow-800));background-color:var(--bs-bg)}.bg-muted-info{--bs-bg:light-dark(var(--bs-cyan-200),var(--bs-cyan-800));background-color:var(--bs-bg)}.bg-muted-inverse{--bs-bg:light-dark(var(--bs-gray-200),var(--bs-gray-300));background-color:var(--bs-bg)}.bg-muted-secondary{--bs-bg:light-dark(var(--bs-gray-100),var(--bs-gray-700));background-color:var(--bs-bg)}.bg-10{background-color:color-mix(in oklch,var(--bs-bg)10%,transparent)}.bg-20{background-color:color-mix(in oklch,var(--bs-bg)20%,transparent)}.bg-30{background-color:color-mix(in oklch,var(--bs-bg)30%,transparent)}.bg-40{background-color:color-mix(in oklch,var(--bs-bg)40%,transparent)}.bg-50{background-color:color-mix(in oklch,var(--bs-bg)50%,transparent)}.bg-60{background-color:color-mix(in oklch,var(--bs-bg)60%,transparent)}.bg-70{background-color:color-mix(in oklch,var(--bs-bg)70%,transparent)}.bg-80{background-color:color-mix(in oklch,var(--bs-bg)80%,transparent)}.bg-90{background-color:color-mix(in oklch,var(--bs-bg)90%,transparent)}.bg-100{background-color:var(--bs-bg)}.theme-contrast{background-color:var(--bs-theme-bg);color:var(--bs-theme-contrast)}.theme-subtle{background-color:var(--bs-theme-bg-subtle);color:var(--bs-theme-text)}.theme-muted{background-color:var(--bs-theme-bg-muted);color:var(--bs-theme-text-emphasis)}.theme-border{border:var(--bs-border-width)solid var(--bs-theme-border)}.bg-gradient{background-image:var(--bs-gradient)}.user-select-all{user-select:all}.user-select-auto{user-select:auto}.user-select-text{user-select:text}.user-select-none{user-select:none}.pe-none{pointer-events:none}.pe-auto{pointer-events:auto}.rounded{border-radius:var(--bs-border-radius)}.rounded-0{border-radius:0}.rounded-1{border-radius:var(--bs-border-radius-sm)}.rounded-2{border-radius:var(--bs-border-radius)}.rounded-3{border-radius:var(--bs-border-radius-lg)}.rounded-4{border-radius:var(--bs-border-radius-xl)}.rounded-5{border-radius:var(--bs-border-radius-2xl)}.rounded-circle{border-radius:50%}.rounded-pill{border-radius:var(--bs-border-radius-pill)}.rounded-top{border-start-start-radius:var(--bs-border-radius);border-start-end-radius:var(--bs-border-radius)}.rounded-top-0{border-start-start-radius:0;border-start-end-radius:0}.rounded-top-1{border-start-start-radius:var(--bs-border-radius-sm);border-start-end-radius:var(--bs-border-radius-sm)}.rounded-top-2{border-start-start-radius:var(--bs-border-radius);border-start-end-radius:var(--bs-border-radius)}.rounded-top-3{border-start-start-radius:var(--bs-border-radius-lg);border-start-end-radius:var(--bs-border-radius-lg)}.rounded-top-4{border-start-start-radius:var(--bs-border-radius-xl);border-start-end-radius:var(--bs-border-radius-xl)}.rounded-top-5{border-start-start-radius:var(--bs-border-radius-2xl);border-start-end-radius:var(--bs-border-radius-2xl)}.rounded-top-circle{border-start-start-radius:50%;border-start-end-radius:50%}.rounded-top-pill{border-start-start-radius:var(--bs-border-radius-pill);border-start-end-radius:var(--bs-border-radius-pill)}.rounded-end{border-end-end-radius:var(--bs-border-radius);border-end-start-radius:var(--bs-border-radius)}.rounded-end-0{border-end-end-radius:0;border-end-start-radius:0}.rounded-end-1{border-end-end-radius:var(--bs-border-radius-sm);border-end-start-radius:var(--bs-border-radius-sm)}.rounded-end-2{border-end-end-radius:var(--bs-border-radius);border-end-start-radius:var(--bs-border-radius)}.rounded-end-3{border-end-end-radius:var(--bs-border-radius-lg);border-end-start-radius:var(--bs-border-radius-lg)}.rounded-end-4{border-end-end-radius:var(--bs-border-radius-xl);border-end-start-radius:var(--bs-border-radius-xl)}.rounded-end-5{border-end-end-radius:var(--bs-border-radius-2xl);border-end-start-radius:var(--bs-border-radius-2xl)}.rounded-end-circle{border-end-end-radius:50%;border-end-start-radius:50%}.rounded-end-pill{border-end-end-radius:var(--bs-border-radius-pill);border-end-start-radius:var(--bs-border-radius-pill)}.rounded-bottom{border-end-end-radius:var(--bs-border-radius);border-end-start-radius:var(--bs-border-radius)}.rounded-bottom-0{border-end-end-radius:0;border-end-start-radius:0}.rounded-bottom-1{border-end-end-radius:var(--bs-border-radius-sm);border-end-start-radius:var(--bs-border-radius-sm)}.rounded-bottom-2{border-end-end-radius:var(--bs-border-radius);border-end-start-radius:var(--bs-border-radius)}.rounded-bottom-3{border-end-end-radius:var(--bs-border-radius-lg);border-end-start-radius:var(--bs-border-radius-lg)}.rounded-bottom-4{border-end-end-radius:var(--bs-border-radius-xl);border-end-start-radius:var(--bs-border-radius-xl)}.rounded-bottom-5{border-end-end-radius:var(--bs-border-radius-2xl);border-end-start-radius:var(--bs-border-radius-2xl)}.rounded-bottom-circle{border-end-end-radius:50%;border-end-start-radius:50%}.rounded-bottom-pill{border-end-end-radius:var(--bs-border-radius-pill);border-end-start-radius:var(--bs-border-radius-pill)}.rounded-start{border-start-start-radius:var(--bs-border-radius);border-start-end-radius:var(--bs-border-radius)}.rounded-start-0{border-start-start-radius:0;border-start-end-radius:0}.rounded-start-1{border-start-start-radius:var(--bs-border-radius-sm);border-start-end-radius:var(--bs-border-radius-sm)}.rounded-start-2{border-start-start-radius:var(--bs-border-radius);border-start-end-radius:var(--bs-border-radius)}.rounded-start-3{border-start-start-radius:var(--bs-border-radius-lg);border-start-end-radius:var(--bs-border-radius-lg)}.rounded-start-4{border-start-start-radius:var(--bs-border-radius-xl);border-start-end-radius:var(--bs-border-radius-xl)}.rounded-start-5{border-start-start-radius:var(--bs-border-radius-2xl);border-start-end-radius:var(--bs-border-radius-2xl)}.rounded-start-circle{border-start-start-radius:50%;border-start-end-radius:50%}.rounded-start-pill{border-start-start-radius:var(--bs-border-radius-pill);border-start-end-radius:var(--bs-border-radius-pill)}.visible{visibility:visible}.invisible{visibility:hidden}.z-n1{z-index:-1}.z-0{z-index:0}.z-1{z-index:1}.z-2{z-index:2}.z-3{z-index:3}@media (width>=576px){.float-sm-start{float:inline-start}.float-sm-end{float:inline-end}.float-sm-none{float:none}.object-fit-sm-contain{-o-object-fit:contain;object-fit:contain}.object-fit-sm-cover{-o-object-fit:cover;object-fit:cover}.object-fit-sm-fill{-o-object-fit:fill;object-fit:fill}.object-fit-sm-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-sm-none{-o-object-fit:none;object-fit:none}.d-sm-inline{display:inline}.d-sm-inline-block{display:inline-block}.d-sm-block{display:block}.d-sm-grid{display:grid}.d-sm-inline-grid{display:inline-grid}.d-sm-table{display:table}.d-sm-table-row{display:table-row}.d-sm-table-cell{display:table-cell}.d-sm-flex{display:flex}.d-sm-inline-flex{display:inline-flex}.d-sm-contents{display:contents}.d-sm-flow-root{display:flow-root}.d-sm-none{display:none}.flex-sm-fill{flex:auto}.flex-sm-row{flex-direction:row}.flex-sm-column{flex-direction:column}.flex-sm-row-reverse{flex-direction:row-reverse}.flex-sm-column-reverse{flex-direction:column-reverse}.flex-sm-grow-0{flex-grow:0}.flex-sm-grow-1{flex-grow:1}.flex-sm-shrink-0{flex-shrink:0}.flex-sm-shrink-1{flex-shrink:1}.flex-sm-wrap{flex-wrap:wrap}.flex-sm-nowrap{flex-wrap:nowrap}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-sm-start{justify-content:flex-start}.justify-content-sm-end{justify-content:flex-end}.justify-content-sm-center{justify-content:center}.justify-content-sm-between{justify-content:space-between}.justify-content-sm-around{justify-content:space-around}.justify-content-sm-evenly{justify-content:space-evenly}.justify-items-sm-start{justify-items:start}.justify-items-sm-end{justify-items:end}.justify-items-sm-center{justify-items:center}.justify-items-sm-stretch{justify-items:stretch}.justify-self-sm-start{justify-self:flex-start}.justify-self-sm-end{justify-self:flex-end}.justify-self-sm-center{justify-self:center}.align-items-sm-start{align-items:flex-start}.align-items-sm-end{align-items:flex-end}.align-items-sm-center{align-items:center}.align-items-sm-baseline{align-items:baseline}.align-items-sm-stretch{align-items:stretch}.align-content-sm-start{align-content:flex-start}.align-content-sm-end{align-content:flex-end}.align-content-sm-center{align-content:center}.align-content-sm-between{align-content:space-between}.align-content-sm-around{align-content:space-around}.align-content-sm-stretch{align-content:stretch}.align-self-sm-auto{align-self:auto}.align-self-sm-start{align-self:flex-start}.align-self-sm-end{align-self:flex-end}.align-self-sm-center{align-self:center}.align-self-sm-baseline{align-self:baseline}.align-self-sm-stretch{align-self:stretch}.place-items-sm-start{place-items:start}.place-items-sm-end{place-items:end}.place-items-sm-center{place-items:center}.place-items-sm-stretch{place-items:stretch stretch}.grid-cols-sm-3{--bs-columns:3}.grid-cols-sm-4{--bs-columns:4}.grid-cols-sm-6{--bs-columns:6}.grid-cols-sm-fill{grid-column:1/-1}.grid-auto-flow-sm-row{grid-auto-flow:row}.grid-auto-flow-sm-column{grid-auto-flow:column}.grid-auto-flow-sm-dense{grid-auto-flow:dense}.order-sm-first{order:-1}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-last{order:6}.m-sm-0{margin:0}.m-sm-1{margin:.25rem}.m-sm-2{margin:.5rem}.m-sm-3{margin:1rem}.m-sm-4{margin:1.5rem}.m-sm-5{margin:3rem}.m-sm-auto{margin:auto}.mx-sm-0{margin-inline:0}.mx-sm-1{margin-inline:.25rem}.mx-sm-2{margin-inline:.5rem}.mx-sm-3{margin-inline:1rem}.mx-sm-4{margin-inline:1.5rem}.mx-sm-5{margin-inline:3rem}.mx-sm-auto{margin-inline:auto}.my-sm-0{margin-block:0}.my-sm-1{margin-block:.25rem}.my-sm-2{margin-block:.5rem}.my-sm-3{margin-block:1rem}.my-sm-4{margin-block:1.5rem}.my-sm-5{margin-block:3rem}.my-sm-auto{margin-block:auto}.mt-sm-0{margin-block-start:0}.mt-sm-1{margin-block-start:.25rem}.mt-sm-2{margin-block-start:.5rem}.mt-sm-3{margin-block-start:1rem}.mt-sm-4{margin-block-start:1.5rem}.mt-sm-5{margin-block-start:3rem}.mt-sm-auto{margin-block-start:auto}.me-sm-0{margin-inline-end:0}.me-sm-1{margin-inline-end:.25rem}.me-sm-2{margin-inline-end:.5rem}.me-sm-3{margin-inline-end:1rem}.me-sm-4{margin-inline-end:1.5rem}.me-sm-5{margin-inline-end:3rem}.me-sm-auto{margin-inline-end:auto}.mb-sm-0{margin-block-end:0}.mb-sm-1{margin-block-end:.25rem}.mb-sm-2{margin-block-end:.5rem}.mb-sm-3{margin-block-end:1rem}.mb-sm-4{margin-block-end:1.5rem}.mb-sm-5{margin-block-end:3rem}.mb-sm-auto{margin-block-end:auto}.ms-sm-0{margin-inline-start:0}.ms-sm-1{margin-inline-start:.25rem}.ms-sm-2{margin-inline-start:.5rem}.ms-sm-3{margin-inline-start:1rem}.ms-sm-4{margin-inline-start:1.5rem}.ms-sm-5{margin-inline-start:3rem}.ms-sm--1{margin-inline-start:-.25rem}.ms-sm--2{margin-inline-start:-.5rem}.ms-sm-auto{margin-inline-start:auto}.p-sm-0{padding:0}.p-sm-1{padding:.25rem}.p-sm-2{padding:.5rem}.p-sm-3{padding:1rem}.p-sm-4{padding:1.5rem}.p-sm-5{padding:3rem}.px-sm-0{padding-inline:0}.px-sm-1{padding-inline:.25rem}.px-sm-2{padding-inline:.5rem}.px-sm-3{padding-inline:1rem}.px-sm-4{padding-inline:1.5rem}.px-sm-5{padding-inline:3rem}.py-sm-0{padding-block:0}.py-sm-1{padding-block:.25rem}.py-sm-2{padding-block:.5rem}.py-sm-3{padding-block:1rem}.py-sm-4{padding-block:1.5rem}.py-sm-5{padding-block:3rem}.pt-sm-0{padding-block-start:0}.pt-sm-1{padding-block-start:.25rem}.pt-sm-2{padding-block-start:.5rem}.pt-sm-3{padding-block-start:1rem}.pt-sm-4{padding-block-start:1.5rem}.pt-sm-5{padding-block-start:3rem}.pe-sm-0{padding-inline-end:0}.pe-sm-1{padding-inline-end:.25rem}.pe-sm-2{padding-inline-end:.5rem}.pe-sm-3{padding-inline-end:1rem}.pe-sm-4{padding-inline-end:1.5rem}.pe-sm-5{padding-inline-end:3rem}.pb-sm-0{padding-block-end:0}.pb-sm-1{padding-block-end:.25rem}.pb-sm-2{padding-block-end:.5rem}.pb-sm-3{padding-block-end:1rem}.pb-sm-4{padding-block-end:1.5rem}.pb-sm-5{padding-block-end:3rem}.ps-sm-0{padding-inline-start:0}.ps-sm-1{padding-inline-start:.25rem}.ps-sm-2{padding-inline-start:.5rem}.ps-sm-3{padding-inline-start:1rem}.ps-sm-4{padding-inline-start:1.5rem}.ps-sm-5{padding-inline-start:3rem}.gap-sm-0{gap:0}.gap-sm-1{gap:.25rem}.gap-sm-2{gap:.5rem}.gap-sm-3{gap:1rem}.gap-sm-4{gap:1.5rem}.gap-sm-5{gap:3rem}.row-gap-sm-0{row-gap:0}.row-gap-sm-1{row-gap:.25rem}.row-gap-sm-2{row-gap:.5rem}.row-gap-sm-3{row-gap:1rem}.row-gap-sm-4{row-gap:1.5rem}.row-gap-sm-5{row-gap:3rem}.column-gap-sm-0{-moz-column-gap:0;column-gap:0}.column-gap-sm-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-sm-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-sm-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-sm-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-sm-5{-moz-column-gap:3rem;column-gap:3rem}.text-sm-start{text-align:start}.text-sm-end{text-align:end}.text-sm-center{text-align:center}}@media (width>=768px){.float-md-start{float:inline-start}.float-md-end{float:inline-end}.float-md-none{float:none}.object-fit-md-contain{-o-object-fit:contain;object-fit:contain}.object-fit-md-cover{-o-object-fit:cover;object-fit:cover}.object-fit-md-fill{-o-object-fit:fill;object-fit:fill}.object-fit-md-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-md-none{-o-object-fit:none;object-fit:none}.d-md-inline{display:inline}.d-md-inline-block{display:inline-block}.d-md-block{display:block}.d-md-grid{display:grid}.d-md-inline-grid{display:inline-grid}.d-md-table{display:table}.d-md-table-row{display:table-row}.d-md-table-cell{display:table-cell}.d-md-flex{display:flex}.d-md-inline-flex{display:inline-flex}.d-md-contents{display:contents}.d-md-flow-root{display:flow-root}.d-md-none{display:none}.flex-md-fill{flex:auto}.flex-md-row{flex-direction:row}.flex-md-column{flex-direction:column}.flex-md-row-reverse{flex-direction:row-reverse}.flex-md-column-reverse{flex-direction:column-reverse}.flex-md-grow-0{flex-grow:0}.flex-md-grow-1{flex-grow:1}.flex-md-shrink-0{flex-shrink:0}.flex-md-shrink-1{flex-shrink:1}.flex-md-wrap{flex-wrap:wrap}.flex-md-nowrap{flex-wrap:nowrap}.flex-md-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-md-start{justify-content:flex-start}.justify-content-md-end{justify-content:flex-end}.justify-content-md-center{justify-content:center}.justify-content-md-between{justify-content:space-between}.justify-content-md-around{justify-content:space-around}.justify-content-md-evenly{justify-content:space-evenly}.justify-items-md-start{justify-items:start}.justify-items-md-end{justify-items:end}.justify-items-md-center{justify-items:center}.justify-items-md-stretch{justify-items:stretch}.justify-self-md-start{justify-self:flex-start}.justify-self-md-end{justify-self:flex-end}.justify-self-md-center{justify-self:center}.align-items-md-start{align-items:flex-start}.align-items-md-end{align-items:flex-end}.align-items-md-center{align-items:center}.align-items-md-baseline{align-items:baseline}.align-items-md-stretch{align-items:stretch}.align-content-md-start{align-content:flex-start}.align-content-md-end{align-content:flex-end}.align-content-md-center{align-content:center}.align-content-md-between{align-content:space-between}.align-content-md-around{align-content:space-around}.align-content-md-stretch{align-content:stretch}.align-self-md-auto{align-self:auto}.align-self-md-start{align-self:flex-start}.align-self-md-end{align-self:flex-end}.align-self-md-center{align-self:center}.align-self-md-baseline{align-self:baseline}.align-self-md-stretch{align-self:stretch}.place-items-md-start{place-items:start}.place-items-md-end{place-items:end}.place-items-md-center{place-items:center}.place-items-md-stretch{place-items:stretch stretch}.grid-cols-md-3{--bs-columns:3}.grid-cols-md-4{--bs-columns:4}.grid-cols-md-6{--bs-columns:6}.grid-cols-md-fill{grid-column:1/-1}.grid-auto-flow-md-row{grid-auto-flow:row}.grid-auto-flow-md-column{grid-auto-flow:column}.grid-auto-flow-md-dense{grid-auto-flow:dense}.order-md-first{order:-1}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-last{order:6}.m-md-0{margin:0}.m-md-1{margin:.25rem}.m-md-2{margin:.5rem}.m-md-3{margin:1rem}.m-md-4{margin:1.5rem}.m-md-5{margin:3rem}.m-md-auto{margin:auto}.mx-md-0{margin-inline:0}.mx-md-1{margin-inline:.25rem}.mx-md-2{margin-inline:.5rem}.mx-md-3{margin-inline:1rem}.mx-md-4{margin-inline:1.5rem}.mx-md-5{margin-inline:3rem}.mx-md-auto{margin-inline:auto}.my-md-0{margin-block:0}.my-md-1{margin-block:.25rem}.my-md-2{margin-block:.5rem}.my-md-3{margin-block:1rem}.my-md-4{margin-block:1.5rem}.my-md-5{margin-block:3rem}.my-md-auto{margin-block:auto}.mt-md-0{margin-block-start:0}.mt-md-1{margin-block-start:.25rem}.mt-md-2{margin-block-start:.5rem}.mt-md-3{margin-block-start:1rem}.mt-md-4{margin-block-start:1.5rem}.mt-md-5{margin-block-start:3rem}.mt-md-auto{margin-block-start:auto}.me-md-0{margin-inline-end:0}.me-md-1{margin-inline-end:.25rem}.me-md-2{margin-inline-end:.5rem}.me-md-3{margin-inline-end:1rem}.me-md-4{margin-inline-end:1.5rem}.me-md-5{margin-inline-end:3rem}.me-md-auto{margin-inline-end:auto}.mb-md-0{margin-block-end:0}.mb-md-1{margin-block-end:.25rem}.mb-md-2{margin-block-end:.5rem}.mb-md-3{margin-block-end:1rem}.mb-md-4{margin-block-end:1.5rem}.mb-md-5{margin-block-end:3rem}.mb-md-auto{margin-block-end:auto}.ms-md-0{margin-inline-start:0}.ms-md-1{margin-inline-start:.25rem}.ms-md-2{margin-inline-start:.5rem}.ms-md-3{margin-inline-start:1rem}.ms-md-4{margin-inline-start:1.5rem}.ms-md-5{margin-inline-start:3rem}.ms-md--1{margin-inline-start:-.25rem}.ms-md--2{margin-inline-start:-.5rem}.ms-md-auto{margin-inline-start:auto}.p-md-0{padding:0}.p-md-1{padding:.25rem}.p-md-2{padding:.5rem}.p-md-3{padding:1rem}.p-md-4{padding:1.5rem}.p-md-5{padding:3rem}.px-md-0{padding-inline:0}.px-md-1{padding-inline:.25rem}.px-md-2{padding-inline:.5rem}.px-md-3{padding-inline:1rem}.px-md-4{padding-inline:1.5rem}.px-md-5{padding-inline:3rem}.py-md-0{padding-block:0}.py-md-1{padding-block:.25rem}.py-md-2{padding-block:.5rem}.py-md-3{padding-block:1rem}.py-md-4{padding-block:1.5rem}.py-md-5{padding-block:3rem}.pt-md-0{padding-block-start:0}.pt-md-1{padding-block-start:.25rem}.pt-md-2{padding-block-start:.5rem}.pt-md-3{padding-block-start:1rem}.pt-md-4{padding-block-start:1.5rem}.pt-md-5{padding-block-start:3rem}.pe-md-0{padding-inline-end:0}.pe-md-1{padding-inline-end:.25rem}.pe-md-2{padding-inline-end:.5rem}.pe-md-3{padding-inline-end:1rem}.pe-md-4{padding-inline-end:1.5rem}.pe-md-5{padding-inline-end:3rem}.pb-md-0{padding-block-end:0}.pb-md-1{padding-block-end:.25rem}.pb-md-2{padding-block-end:.5rem}.pb-md-3{padding-block-end:1rem}.pb-md-4{padding-block-end:1.5rem}.pb-md-5{padding-block-end:3rem}.ps-md-0{padding-inline-start:0}.ps-md-1{padding-inline-start:.25rem}.ps-md-2{padding-inline-start:.5rem}.ps-md-3{padding-inline-start:1rem}.ps-md-4{padding-inline-start:1.5rem}.ps-md-5{padding-inline-start:3rem}.gap-md-0{gap:0}.gap-md-1{gap:.25rem}.gap-md-2{gap:.5rem}.gap-md-3{gap:1rem}.gap-md-4{gap:1.5rem}.gap-md-5{gap:3rem}.row-gap-md-0{row-gap:0}.row-gap-md-1{row-gap:.25rem}.row-gap-md-2{row-gap:.5rem}.row-gap-md-3{row-gap:1rem}.row-gap-md-4{row-gap:1.5rem}.row-gap-md-5{row-gap:3rem}.column-gap-md-0{-moz-column-gap:0;column-gap:0}.column-gap-md-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-md-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-md-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-md-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-md-5{-moz-column-gap:3rem;column-gap:3rem}.text-md-start{text-align:start}.text-md-end{text-align:end}.text-md-center{text-align:center}}@media (width>=1024px){.float-lg-start{float:inline-start}.float-lg-end{float:inline-end}.float-lg-none{float:none}.object-fit-lg-contain{-o-object-fit:contain;object-fit:contain}.object-fit-lg-cover{-o-object-fit:cover;object-fit:cover}.object-fit-lg-fill{-o-object-fit:fill;object-fit:fill}.object-fit-lg-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-lg-none{-o-object-fit:none;object-fit:none}.d-lg-inline{display:inline}.d-lg-inline-block{display:inline-block}.d-lg-block{display:block}.d-lg-grid{display:grid}.d-lg-inline-grid{display:inline-grid}.d-lg-table{display:table}.d-lg-table-row{display:table-row}.d-lg-table-cell{display:table-cell}.d-lg-flex{display:flex}.d-lg-inline-flex{display:inline-flex}.d-lg-contents{display:contents}.d-lg-flow-root{display:flow-root}.d-lg-none{display:none}.flex-lg-fill{flex:auto}.flex-lg-row{flex-direction:row}.flex-lg-column{flex-direction:column}.flex-lg-row-reverse{flex-direction:row-reverse}.flex-lg-column-reverse{flex-direction:column-reverse}.flex-lg-grow-0{flex-grow:0}.flex-lg-grow-1{flex-grow:1}.flex-lg-shrink-0{flex-shrink:0}.flex-lg-shrink-1{flex-shrink:1}.flex-lg-wrap{flex-wrap:wrap}.flex-lg-nowrap{flex-wrap:nowrap}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-lg-start{justify-content:flex-start}.justify-content-lg-end{justify-content:flex-end}.justify-content-lg-center{justify-content:center}.justify-content-lg-between{justify-content:space-between}.justify-content-lg-around{justify-content:space-around}.justify-content-lg-evenly{justify-content:space-evenly}.justify-items-lg-start{justify-items:start}.justify-items-lg-end{justify-items:end}.justify-items-lg-center{justify-items:center}.justify-items-lg-stretch{justify-items:stretch}.justify-self-lg-start{justify-self:flex-start}.justify-self-lg-end{justify-self:flex-end}.justify-self-lg-center{justify-self:center}.align-items-lg-start{align-items:flex-start}.align-items-lg-end{align-items:flex-end}.align-items-lg-center{align-items:center}.align-items-lg-baseline{align-items:baseline}.align-items-lg-stretch{align-items:stretch}.align-content-lg-start{align-content:flex-start}.align-content-lg-end{align-content:flex-end}.align-content-lg-center{align-content:center}.align-content-lg-between{align-content:space-between}.align-content-lg-around{align-content:space-around}.align-content-lg-stretch{align-content:stretch}.align-self-lg-auto{align-self:auto}.align-self-lg-start{align-self:flex-start}.align-self-lg-end{align-self:flex-end}.align-self-lg-center{align-self:center}.align-self-lg-baseline{align-self:baseline}.align-self-lg-stretch{align-self:stretch}.place-items-lg-start{place-items:start}.place-items-lg-end{place-items:end}.place-items-lg-center{place-items:center}.place-items-lg-stretch{place-items:stretch stretch}.grid-cols-lg-3{--bs-columns:3}.grid-cols-lg-4{--bs-columns:4}.grid-cols-lg-6{--bs-columns:6}.grid-cols-lg-fill{grid-column:1/-1}.grid-auto-flow-lg-row{grid-auto-flow:row}.grid-auto-flow-lg-column{grid-auto-flow:column}.grid-auto-flow-lg-dense{grid-auto-flow:dense}.order-lg-first{order:-1}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-last{order:6}.m-lg-0{margin:0}.m-lg-1{margin:.25rem}.m-lg-2{margin:.5rem}.m-lg-3{margin:1rem}.m-lg-4{margin:1.5rem}.m-lg-5{margin:3rem}.m-lg-auto{margin:auto}.mx-lg-0{margin-inline:0}.mx-lg-1{margin-inline:.25rem}.mx-lg-2{margin-inline:.5rem}.mx-lg-3{margin-inline:1rem}.mx-lg-4{margin-inline:1.5rem}.mx-lg-5{margin-inline:3rem}.mx-lg-auto{margin-inline:auto}.my-lg-0{margin-block:0}.my-lg-1{margin-block:.25rem}.my-lg-2{margin-block:.5rem}.my-lg-3{margin-block:1rem}.my-lg-4{margin-block:1.5rem}.my-lg-5{margin-block:3rem}.my-lg-auto{margin-block:auto}.mt-lg-0{margin-block-start:0}.mt-lg-1{margin-block-start:.25rem}.mt-lg-2{margin-block-start:.5rem}.mt-lg-3{margin-block-start:1rem}.mt-lg-4{margin-block-start:1.5rem}.mt-lg-5{margin-block-start:3rem}.mt-lg-auto{margin-block-start:auto}.me-lg-0{margin-inline-end:0}.me-lg-1{margin-inline-end:.25rem}.me-lg-2{margin-inline-end:.5rem}.me-lg-3{margin-inline-end:1rem}.me-lg-4{margin-inline-end:1.5rem}.me-lg-5{margin-inline-end:3rem}.me-lg-auto{margin-inline-end:auto}.mb-lg-0{margin-block-end:0}.mb-lg-1{margin-block-end:.25rem}.mb-lg-2{margin-block-end:.5rem}.mb-lg-3{margin-block-end:1rem}.mb-lg-4{margin-block-end:1.5rem}.mb-lg-5{margin-block-end:3rem}.mb-lg-auto{margin-block-end:auto}.ms-lg-0{margin-inline-start:0}.ms-lg-1{margin-inline-start:.25rem}.ms-lg-2{margin-inline-start:.5rem}.ms-lg-3{margin-inline-start:1rem}.ms-lg-4{margin-inline-start:1.5rem}.ms-lg-5{margin-inline-start:3rem}.ms-lg--1{margin-inline-start:-.25rem}.ms-lg--2{margin-inline-start:-.5rem}.ms-lg-auto{margin-inline-start:auto}.p-lg-0{padding:0}.p-lg-1{padding:.25rem}.p-lg-2{padding:.5rem}.p-lg-3{padding:1rem}.p-lg-4{padding:1.5rem}.p-lg-5{padding:3rem}.px-lg-0{padding-inline:0}.px-lg-1{padding-inline:.25rem}.px-lg-2{padding-inline:.5rem}.px-lg-3{padding-inline:1rem}.px-lg-4{padding-inline:1.5rem}.px-lg-5{padding-inline:3rem}.py-lg-0{padding-block:0}.py-lg-1{padding-block:.25rem}.py-lg-2{padding-block:.5rem}.py-lg-3{padding-block:1rem}.py-lg-4{padding-block:1.5rem}.py-lg-5{padding-block:3rem}.pt-lg-0{padding-block-start:0}.pt-lg-1{padding-block-start:.25rem}.pt-lg-2{padding-block-start:.5rem}.pt-lg-3{padding-block-start:1rem}.pt-lg-4{padding-block-start:1.5rem}.pt-lg-5{padding-block-start:3rem}.pe-lg-0{padding-inline-end:0}.pe-lg-1{padding-inline-end:.25rem}.pe-lg-2{padding-inline-end:.5rem}.pe-lg-3{padding-inline-end:1rem}.pe-lg-4{padding-inline-end:1.5rem}.pe-lg-5{padding-inline-end:3rem}.pb-lg-0{padding-block-end:0}.pb-lg-1{padding-block-end:.25rem}.pb-lg-2{padding-block-end:.5rem}.pb-lg-3{padding-block-end:1rem}.pb-lg-4{padding-block-end:1.5rem}.pb-lg-5{padding-block-end:3rem}.ps-lg-0{padding-inline-start:0}.ps-lg-1{padding-inline-start:.25rem}.ps-lg-2{padding-inline-start:.5rem}.ps-lg-3{padding-inline-start:1rem}.ps-lg-4{padding-inline-start:1.5rem}.ps-lg-5{padding-inline-start:3rem}.gap-lg-0{gap:0}.gap-lg-1{gap:.25rem}.gap-lg-2{gap:.5rem}.gap-lg-3{gap:1rem}.gap-lg-4{gap:1.5rem}.gap-lg-5{gap:3rem}.row-gap-lg-0{row-gap:0}.row-gap-lg-1{row-gap:.25rem}.row-gap-lg-2{row-gap:.5rem}.row-gap-lg-3{row-gap:1rem}.row-gap-lg-4{row-gap:1.5rem}.row-gap-lg-5{row-gap:3rem}.column-gap-lg-0{-moz-column-gap:0;column-gap:0}.column-gap-lg-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-lg-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-lg-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-lg-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-lg-5{-moz-column-gap:3rem;column-gap:3rem}.text-lg-start{text-align:start}.text-lg-end{text-align:end}.text-lg-center{text-align:center}}@media (width>=1280px){.float-xl-start{float:inline-start}.float-xl-end{float:inline-end}.float-xl-none{float:none}.object-fit-xl-contain{-o-object-fit:contain;object-fit:contain}.object-fit-xl-cover{-o-object-fit:cover;object-fit:cover}.object-fit-xl-fill{-o-object-fit:fill;object-fit:fill}.object-fit-xl-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-xl-none{-o-object-fit:none;object-fit:none}.d-xl-inline{display:inline}.d-xl-inline-block{display:inline-block}.d-xl-block{display:block}.d-xl-grid{display:grid}.d-xl-inline-grid{display:inline-grid}.d-xl-table{display:table}.d-xl-table-row{display:table-row}.d-xl-table-cell{display:table-cell}.d-xl-flex{display:flex}.d-xl-inline-flex{display:inline-flex}.d-xl-contents{display:contents}.d-xl-flow-root{display:flow-root}.d-xl-none{display:none}.flex-xl-fill{flex:auto}.flex-xl-row{flex-direction:row}.flex-xl-column{flex-direction:column}.flex-xl-row-reverse{flex-direction:row-reverse}.flex-xl-column-reverse{flex-direction:column-reverse}.flex-xl-grow-0{flex-grow:0}.flex-xl-grow-1{flex-grow:1}.flex-xl-shrink-0{flex-shrink:0}.flex-xl-shrink-1{flex-shrink:1}.flex-xl-wrap{flex-wrap:wrap}.flex-xl-nowrap{flex-wrap:nowrap}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-xl-start{justify-content:flex-start}.justify-content-xl-end{justify-content:flex-end}.justify-content-xl-center{justify-content:center}.justify-content-xl-between{justify-content:space-between}.justify-content-xl-around{justify-content:space-around}.justify-content-xl-evenly{justify-content:space-evenly}.justify-items-xl-start{justify-items:start}.justify-items-xl-end{justify-items:end}.justify-items-xl-center{justify-items:center}.justify-items-xl-stretch{justify-items:stretch}.justify-self-xl-start{justify-self:flex-start}.justify-self-xl-end{justify-self:flex-end}.justify-self-xl-center{justify-self:center}.align-items-xl-start{align-items:flex-start}.align-items-xl-end{align-items:flex-end}.align-items-xl-center{align-items:center}.align-items-xl-baseline{align-items:baseline}.align-items-xl-stretch{align-items:stretch}.align-content-xl-start{align-content:flex-start}.align-content-xl-end{align-content:flex-end}.align-content-xl-center{align-content:center}.align-content-xl-between{align-content:space-between}.align-content-xl-around{align-content:space-around}.align-content-xl-stretch{align-content:stretch}.align-self-xl-auto{align-self:auto}.align-self-xl-start{align-self:flex-start}.align-self-xl-end{align-self:flex-end}.align-self-xl-center{align-self:center}.align-self-xl-baseline{align-self:baseline}.align-self-xl-stretch{align-self:stretch}.place-items-xl-start{place-items:start}.place-items-xl-end{place-items:end}.place-items-xl-center{place-items:center}.place-items-xl-stretch{place-items:stretch stretch}.grid-cols-xl-3{--bs-columns:3}.grid-cols-xl-4{--bs-columns:4}.grid-cols-xl-6{--bs-columns:6}.grid-cols-xl-fill{grid-column:1/-1}.grid-auto-flow-xl-row{grid-auto-flow:row}.grid-auto-flow-xl-column{grid-auto-flow:column}.grid-auto-flow-xl-dense{grid-auto-flow:dense}.order-xl-first{order:-1}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-last{order:6}.m-xl-0{margin:0}.m-xl-1{margin:.25rem}.m-xl-2{margin:.5rem}.m-xl-3{margin:1rem}.m-xl-4{margin:1.5rem}.m-xl-5{margin:3rem}.m-xl-auto{margin:auto}.mx-xl-0{margin-inline:0}.mx-xl-1{margin-inline:.25rem}.mx-xl-2{margin-inline:.5rem}.mx-xl-3{margin-inline:1rem}.mx-xl-4{margin-inline:1.5rem}.mx-xl-5{margin-inline:3rem}.mx-xl-auto{margin-inline:auto}.my-xl-0{margin-block:0}.my-xl-1{margin-block:.25rem}.my-xl-2{margin-block:.5rem}.my-xl-3{margin-block:1rem}.my-xl-4{margin-block:1.5rem}.my-xl-5{margin-block:3rem}.my-xl-auto{margin-block:auto}.mt-xl-0{margin-block-start:0}.mt-xl-1{margin-block-start:.25rem}.mt-xl-2{margin-block-start:.5rem}.mt-xl-3{margin-block-start:1rem}.mt-xl-4{margin-block-start:1.5rem}.mt-xl-5{margin-block-start:3rem}.mt-xl-auto{margin-block-start:auto}.me-xl-0{margin-inline-end:0}.me-xl-1{margin-inline-end:.25rem}.me-xl-2{margin-inline-end:.5rem}.me-xl-3{margin-inline-end:1rem}.me-xl-4{margin-inline-end:1.5rem}.me-xl-5{margin-inline-end:3rem}.me-xl-auto{margin-inline-end:auto}.mb-xl-0{margin-block-end:0}.mb-xl-1{margin-block-end:.25rem}.mb-xl-2{margin-block-end:.5rem}.mb-xl-3{margin-block-end:1rem}.mb-xl-4{margin-block-end:1.5rem}.mb-xl-5{margin-block-end:3rem}.mb-xl-auto{margin-block-end:auto}.ms-xl-0{margin-inline-start:0}.ms-xl-1{margin-inline-start:.25rem}.ms-xl-2{margin-inline-start:.5rem}.ms-xl-3{margin-inline-start:1rem}.ms-xl-4{margin-inline-start:1.5rem}.ms-xl-5{margin-inline-start:3rem}.ms-xl--1{margin-inline-start:-.25rem}.ms-xl--2{margin-inline-start:-.5rem}.ms-xl-auto{margin-inline-start:auto}.p-xl-0{padding:0}.p-xl-1{padding:.25rem}.p-xl-2{padding:.5rem}.p-xl-3{padding:1rem}.p-xl-4{padding:1.5rem}.p-xl-5{padding:3rem}.px-xl-0{padding-inline:0}.px-xl-1{padding-inline:.25rem}.px-xl-2{padding-inline:.5rem}.px-xl-3{padding-inline:1rem}.px-xl-4{padding-inline:1.5rem}.px-xl-5{padding-inline:3rem}.py-xl-0{padding-block:0}.py-xl-1{padding-block:.25rem}.py-xl-2{padding-block:.5rem}.py-xl-3{padding-block:1rem}.py-xl-4{padding-block:1.5rem}.py-xl-5{padding-block:3rem}.pt-xl-0{padding-block-start:0}.pt-xl-1{padding-block-start:.25rem}.pt-xl-2{padding-block-start:.5rem}.pt-xl-3{padding-block-start:1rem}.pt-xl-4{padding-block-start:1.5rem}.pt-xl-5{padding-block-start:3rem}.pe-xl-0{padding-inline-end:0}.pe-xl-1{padding-inline-end:.25rem}.pe-xl-2{padding-inline-end:.5rem}.pe-xl-3{padding-inline-end:1rem}.pe-xl-4{padding-inline-end:1.5rem}.pe-xl-5{padding-inline-end:3rem}.pb-xl-0{padding-block-end:0}.pb-xl-1{padding-block-end:.25rem}.pb-xl-2{padding-block-end:.5rem}.pb-xl-3{padding-block-end:1rem}.pb-xl-4{padding-block-end:1.5rem}.pb-xl-5{padding-block-end:3rem}.ps-xl-0{padding-inline-start:0}.ps-xl-1{padding-inline-start:.25rem}.ps-xl-2{padding-inline-start:.5rem}.ps-xl-3{padding-inline-start:1rem}.ps-xl-4{padding-inline-start:1.5rem}.ps-xl-5{padding-inline-start:3rem}.gap-xl-0{gap:0}.gap-xl-1{gap:.25rem}.gap-xl-2{gap:.5rem}.gap-xl-3{gap:1rem}.gap-xl-4{gap:1.5rem}.gap-xl-5{gap:3rem}.row-gap-xl-0{row-gap:0}.row-gap-xl-1{row-gap:.25rem}.row-gap-xl-2{row-gap:.5rem}.row-gap-xl-3{row-gap:1rem}.row-gap-xl-4{row-gap:1.5rem}.row-gap-xl-5{row-gap:3rem}.column-gap-xl-0{-moz-column-gap:0;column-gap:0}.column-gap-xl-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-xl-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-xl-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-xl-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-xl-5{-moz-column-gap:3rem;column-gap:3rem}.text-xl-start{text-align:start}.text-xl-end{text-align:end}.text-xl-center{text-align:center}}@media (width>=1536px){.float-2xl-start{float:inline-start}.float-2xl-end{float:inline-end}.float-2xl-none{float:none}.object-fit-2xl-contain{-o-object-fit:contain;object-fit:contain}.object-fit-2xl-cover{-o-object-fit:cover;object-fit:cover}.object-fit-2xl-fill{-o-object-fit:fill;object-fit:fill}.object-fit-2xl-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-2xl-none{-o-object-fit:none;object-fit:none}.d-2xl-inline{display:inline}.d-2xl-inline-block{display:inline-block}.d-2xl-block{display:block}.d-2xl-grid{display:grid}.d-2xl-inline-grid{display:inline-grid}.d-2xl-table{display:table}.d-2xl-table-row{display:table-row}.d-2xl-table-cell{display:table-cell}.d-2xl-flex{display:flex}.d-2xl-inline-flex{display:inline-flex}.d-2xl-contents{display:contents}.d-2xl-flow-root{display:flow-root}.d-2xl-none{display:none}.flex-2xl-fill{flex:auto}.flex-2xl-row{flex-direction:row}.flex-2xl-column{flex-direction:column}.flex-2xl-row-reverse{flex-direction:row-reverse}.flex-2xl-column-reverse{flex-direction:column-reverse}.flex-2xl-grow-0{flex-grow:0}.flex-2xl-grow-1{flex-grow:1}.flex-2xl-shrink-0{flex-shrink:0}.flex-2xl-shrink-1{flex-shrink:1}.flex-2xl-wrap{flex-wrap:wrap}.flex-2xl-nowrap{flex-wrap:nowrap}.flex-2xl-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-2xl-start{justify-content:flex-start}.justify-content-2xl-end{justify-content:flex-end}.justify-content-2xl-center{justify-content:center}.justify-content-2xl-between{justify-content:space-between}.justify-content-2xl-around{justify-content:space-around}.justify-content-2xl-evenly{justify-content:space-evenly}.justify-items-2xl-start{justify-items:start}.justify-items-2xl-end{justify-items:end}.justify-items-2xl-center{justify-items:center}.justify-items-2xl-stretch{justify-items:stretch}.justify-self-2xl-start{justify-self:flex-start}.justify-self-2xl-end{justify-self:flex-end}.justify-self-2xl-center{justify-self:center}.align-items-2xl-start{align-items:flex-start}.align-items-2xl-end{align-items:flex-end}.align-items-2xl-center{align-items:center}.align-items-2xl-baseline{align-items:baseline}.align-items-2xl-stretch{align-items:stretch}.align-content-2xl-start{align-content:flex-start}.align-content-2xl-end{align-content:flex-end}.align-content-2xl-center{align-content:center}.align-content-2xl-between{align-content:space-between}.align-content-2xl-around{align-content:space-around}.align-content-2xl-stretch{align-content:stretch}.align-self-2xl-auto{align-self:auto}.align-self-2xl-start{align-self:flex-start}.align-self-2xl-end{align-self:flex-end}.align-self-2xl-center{align-self:center}.align-self-2xl-baseline{align-self:baseline}.align-self-2xl-stretch{align-self:stretch}.place-items-2xl-start{place-items:start}.place-items-2xl-end{place-items:end}.place-items-2xl-center{place-items:center}.place-items-2xl-stretch{place-items:stretch stretch}.grid-cols-2xl-3{--bs-columns:3}.grid-cols-2xl-4{--bs-columns:4}.grid-cols-2xl-6{--bs-columns:6}.grid-cols-2xl-fill{grid-column:1/-1}.grid-auto-flow-2xl-row{grid-auto-flow:row}.grid-auto-flow-2xl-column{grid-auto-flow:column}.grid-auto-flow-2xl-dense{grid-auto-flow:dense}.order-2xl-first{order:-1}.order-2xl-0{order:0}.order-2xl-1{order:1}.order-2xl-2{order:2}.order-2xl-3{order:3}.order-2xl-4{order:4}.order-2xl-5{order:5}.order-2xl-last{order:6}.m-2xl-0{margin:0}.m-2xl-1{margin:.25rem}.m-2xl-2{margin:.5rem}.m-2xl-3{margin:1rem}.m-2xl-4{margin:1.5rem}.m-2xl-5{margin:3rem}.m-2xl-auto{margin:auto}.mx-2xl-0{margin-inline:0}.mx-2xl-1{margin-inline:.25rem}.mx-2xl-2{margin-inline:.5rem}.mx-2xl-3{margin-inline:1rem}.mx-2xl-4{margin-inline:1.5rem}.mx-2xl-5{margin-inline:3rem}.mx-2xl-auto{margin-inline:auto}.my-2xl-0{margin-block:0}.my-2xl-1{margin-block:.25rem}.my-2xl-2{margin-block:.5rem}.my-2xl-3{margin-block:1rem}.my-2xl-4{margin-block:1.5rem}.my-2xl-5{margin-block:3rem}.my-2xl-auto{margin-block:auto}.mt-2xl-0{margin-block-start:0}.mt-2xl-1{margin-block-start:.25rem}.mt-2xl-2{margin-block-start:.5rem}.mt-2xl-3{margin-block-start:1rem}.mt-2xl-4{margin-block-start:1.5rem}.mt-2xl-5{margin-block-start:3rem}.mt-2xl-auto{margin-block-start:auto}.me-2xl-0{margin-inline-end:0}.me-2xl-1{margin-inline-end:.25rem}.me-2xl-2{margin-inline-end:.5rem}.me-2xl-3{margin-inline-end:1rem}.me-2xl-4{margin-inline-end:1.5rem}.me-2xl-5{margin-inline-end:3rem}.me-2xl-auto{margin-inline-end:auto}.mb-2xl-0{margin-block-end:0}.mb-2xl-1{margin-block-end:.25rem}.mb-2xl-2{margin-block-end:.5rem}.mb-2xl-3{margin-block-end:1rem}.mb-2xl-4{margin-block-end:1.5rem}.mb-2xl-5{margin-block-end:3rem}.mb-2xl-auto{margin-block-end:auto}.ms-2xl-0{margin-inline-start:0}.ms-2xl-1{margin-inline-start:.25rem}.ms-2xl-2{margin-inline-start:.5rem}.ms-2xl-3{margin-inline-start:1rem}.ms-2xl-4{margin-inline-start:1.5rem}.ms-2xl-5{margin-inline-start:3rem}.ms-2xl--1{margin-inline-start:-.25rem}.ms-2xl--2{margin-inline-start:-.5rem}.ms-2xl-auto{margin-inline-start:auto}.p-2xl-0{padding:0}.p-2xl-1{padding:.25rem}.p-2xl-2{padding:.5rem}.p-2xl-3{padding:1rem}.p-2xl-4{padding:1.5rem}.p-2xl-5{padding:3rem}.px-2xl-0{padding-inline:0}.px-2xl-1{padding-inline:.25rem}.px-2xl-2{padding-inline:.5rem}.px-2xl-3{padding-inline:1rem}.px-2xl-4{padding-inline:1.5rem}.px-2xl-5{padding-inline:3rem}.py-2xl-0{padding-block:0}.py-2xl-1{padding-block:.25rem}.py-2xl-2{padding-block:.5rem}.py-2xl-3{padding-block:1rem}.py-2xl-4{padding-block:1.5rem}.py-2xl-5{padding-block:3rem}.pt-2xl-0{padding-block-start:0}.pt-2xl-1{padding-block-start:.25rem}.pt-2xl-2{padding-block-start:.5rem}.pt-2xl-3{padding-block-start:1rem}.pt-2xl-4{padding-block-start:1.5rem}.pt-2xl-5{padding-block-start:3rem}.pe-2xl-0{padding-inline-end:0}.pe-2xl-1{padding-inline-end:.25rem}.pe-2xl-2{padding-inline-end:.5rem}.pe-2xl-3{padding-inline-end:1rem}.pe-2xl-4{padding-inline-end:1.5rem}.pe-2xl-5{padding-inline-end:3rem}.pb-2xl-0{padding-block-end:0}.pb-2xl-1{padding-block-end:.25rem}.pb-2xl-2{padding-block-end:.5rem}.pb-2xl-3{padding-block-end:1rem}.pb-2xl-4{padding-block-end:1.5rem}.pb-2xl-5{padding-block-end:3rem}.ps-2xl-0{padding-inline-start:0}.ps-2xl-1{padding-inline-start:.25rem}.ps-2xl-2{padding-inline-start:.5rem}.ps-2xl-3{padding-inline-start:1rem}.ps-2xl-4{padding-inline-start:1.5rem}.ps-2xl-5{padding-inline-start:3rem}.gap-2xl-0{gap:0}.gap-2xl-1{gap:.25rem}.gap-2xl-2{gap:.5rem}.gap-2xl-3{gap:1rem}.gap-2xl-4{gap:1.5rem}.gap-2xl-5{gap:3rem}.row-gap-2xl-0{row-gap:0}.row-gap-2xl-1{row-gap:.25rem}.row-gap-2xl-2{row-gap:.5rem}.row-gap-2xl-3{row-gap:1rem}.row-gap-2xl-4{row-gap:1.5rem}.row-gap-2xl-5{row-gap:3rem}.column-gap-2xl-0{-moz-column-gap:0;column-gap:0}.column-gap-2xl-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-2xl-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-2xl-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-2xl-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-2xl-5{-moz-column-gap:3rem;column-gap:3rem}.text-2xl-start{text-align:start}.text-2xl-end{text-align:end}.text-2xl-center{text-align:center}}}:root{--bs-black:#000;--bs-white:#fff;--bs-gradient:linear-gradient(180deg,color-mix(var(--bs-white)15%,transparent),color-mix(var(--bs-white)0%,transparent));--bs-font-weight-lighter:lighter;--bs-font-weight-light:300;--bs-font-weight-normal:400;--bs-font-weight-medium:500;--bs-font-weight-semibold:600;--bs-font-weight-bold:700;--bs-font-weight-bolder:bolder;--bs-body-font-family:system-ui;--bs-body-font-size:var(--bs-font-size-base);--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-heading-color:inherit;--bs-hr-border-color:var(--bs-border-color);--bs-link-color:light-dark(var(--bs-primary-base),var(--bs-primary-text));--bs-link-decoration:underline;--bs-link-hover-color:color-mix(in oklch,var(--bs-link-color)90%,#000);--bs-font-mono:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-code-font-size:95%;--bs-code-color:var(--bs-fg-2);--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:light-dark(color-mix(in oklch,var(--bs-gray-100),var(--bs-gray-200)),var(--bs-gray-700));--bs-border-color-translucent:color-mix(in oklch,var(--bs-fg-body)15%,transparent);--bs-border-radius:.5rem;--bs-border-radius-xs:.375rem;--bs-border-radius-sm:.5rem;--bs-border-radius-lg:.75rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-box-shadow:0 .5rem 1rem #00000026;--bs-box-shadow-sm:0 .125rem .25rem #00000013;--bs-box-shadow-lg:0 1rem 3rem #0000002d;--bs-box-shadow-inset:inset 0 1px 2px #00000013;--bs-spacer:1rem;--bs-focus-ring-width:3px;--bs-focus-ring-offset:1px;--bs-focus-ring-color:var(--bs-primary-focus-ring);--bs-focus-ring:var(--bs-focus-ring-width)solid var(--bs-focus-ring-color);--bs-control-checked-bg:var(--bs-primary-base);--bs-control-checked-border-color:var(--bs-control-checked-bg);--bs-control-active-bg:var(--bs-primary-base);--bs-control-active-border-color:var(--bs-control-active-bg);--bs-control-disabled-bg:var(--bs-bg-3);--bs-control-disabled-opacity:.65;--bs-btn-input-fg:var(--bs-fg-body);--bs-btn-input-bg:var(--bs-bg-body);--bs-btn-input-min-height:2.375rem;--bs-btn-input-padding-y:.375rem;--bs-btn-input-padding-x:.75rem;--bs-btn-input-font-size:var(--bs-font-size-base);--bs-btn-input-line-height:var(--bs-line-height-base);--bs-btn-input-border-radius:var(--bs-border-radius);--bs-btn-input-xs-min-height:1.5rem;--bs-btn-input-xs-padding-y:.125rem;--bs-btn-input-xs-padding-x:.5rem;--bs-btn-input-xs-font-size:var(--bs-font-size-xs);--bs-btn-input-xs-line-height:1.125;--bs-btn-input-xs-border-radius:var(--bs-border-radius-xs);--bs-btn-input-sm-min-height:2rem;--bs-btn-input-sm-padding-y:.25rem;--bs-btn-input-sm-padding-x:.625rem;--bs-btn-input-sm-font-size:var(--bs-font-size-sm);--bs-btn-input-sm-line-height:var(--bs-line-height-sm);--bs-btn-input-sm-border-radius:var(--bs-border-radius-sm);--bs-btn-input-lg-min-height:2.75rem;--bs-btn-input-lg-padding-y:.5rem;--bs-btn-input-lg-padding-x:1rem;--bs-btn-input-lg-font-size:var(--bs-font-size-md);--bs-btn-input-lg-line-height:var(--bs-line-height-md);--bs-btn-input-lg-border-radius:var(--bs-border-radius-lg);--bs-form-valid-color:var(--bs-success-text);--bs-form-valid-border-color:var(--bs-success-text);--bs-form-invalid-color:var(--bs-danger-text);--bs-form-invalid-border-color:var(--bs-danger-text);--bs-font-size-xs:.75rem;--bs-line-height-xs:1.25;--bs-font-size-sm:.875rem;--bs-line-height-sm:1.5;--bs-font-size-md:1rem;--bs-line-height-md:1.5;--bs-font-size-lg:clamp(1.25rem,1rem + .625vw,1.5rem);--bs-line-height-lg:1.5;--bs-font-size-xl:clamp(1.5rem,1.1rem + .75vw,1.75rem);--bs-line-height-xl:1.42857;--bs-font-size-2xl:clamp(1.75rem,1.3rem + 1vw,2rem);--bs-line-height-2xl:1.33333;--bs-font-size-3xl:clamp(2rem,1.5rem + 1.875vw,2.5rem);--bs-line-height-3xl:1.2;--bs-font-size-4xl:clamp(2.25rem,1.75rem + 2.5vw,3rem);--bs-line-height-4xl:1.1;--bs-font-size-5xl:clamp(3rem,2rem + 5vw,4rem);--bs-line-height-5xl:1.1;--bs-font-size-6xl:clamp(3.75rem,2.5rem + 6.25vw,5rem);--bs-line-height-6xl:1;--bs-primary-base:var(--bs-blue-500);--bs-primary-text:light-dark(var(--bs-blue-600),var(--bs-blue-400));--bs-primary-text-emphasis:light-dark(var(--bs-blue-800),var(--bs-blue-200));--bs-primary-bg:var(--bs-blue-500);--bs-primary-bg-subtle:light-dark(var(--bs-blue-100),var(--bs-blue-900));--bs-primary-bg-muted:light-dark(var(--bs-blue-200),var(--bs-blue-800));--bs-primary-border:light-dark(var(--bs-blue-300),var(--bs-blue-600));--bs-primary-focus-ring:light-dark(color-mix(in oklch,var(--bs-blue-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-blue-500)75%,var(--bs-bg-body)));--bs-primary-contrast:var(--bs-white);--bs-accent-base:var(--bs-indigo-500);--bs-accent-text:light-dark(var(--bs-indigo-600),color-mix(in oklch,var(--bs-indigo-400),var(--bs-indigo-300)));--bs-accent-text-emphasis:light-dark(var(--bs-indigo-800),var(--bs-indigo-300));--bs-accent-bg:var(--bs-indigo-500);--bs-accent-bg-subtle:light-dark(var(--bs-indigo-100),var(--bs-indigo-900));--bs-accent-bg-muted:light-dark(var(--bs-indigo-200),var(--bs-indigo-800));--bs-accent-border:light-dark(var(--bs-indigo-300),var(--bs-indigo-600));--bs-accent-focus-ring:light-dark(color-mix(in oklch,var(--bs-indigo-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-indigo-500)75%,var(--bs-bg-body)));--bs-accent-contrast:var(--bs-white);--bs-success-base:var(--bs-green-500);--bs-success-text:light-dark(var(--bs-green-600),var(--bs-green-400));--bs-success-text-emphasis:light-dark(var(--bs-green-800),var(--bs-green-300));--bs-success-bg:var(--bs-green-500);--bs-success-bg-subtle:light-dark(var(--bs-green-100),var(--bs-green-900));--bs-success-bg-muted:light-dark(var(--bs-green-200),var(--bs-green-800));--bs-success-border:light-dark(var(--bs-green-300),var(--bs-green-600));--bs-success-focus-ring:light-dark(color-mix(in oklch,var(--bs-green-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-green-500)75%,var(--bs-bg-body)));--bs-success-contrast:var(--bs-white);--bs-danger-base:var(--bs-red-500);--bs-danger-text:light-dark(var(--bs-red-600),var(--bs-red-400));--bs-danger-text-emphasis:light-dark(var(--bs-red-800),var(--bs-red-300));--bs-danger-bg:var(--bs-red-500);--bs-danger-bg-subtle:light-dark(var(--bs-red-100),var(--bs-red-900));--bs-danger-bg-muted:light-dark(var(--bs-red-200),var(--bs-red-800));--bs-danger-border:light-dark(var(--bs-red-300),var(--bs-red-600));--bs-danger-focus-ring:light-dark(color-mix(in oklch,var(--bs-red-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-red-500)75%,var(--bs-bg-body)));--bs-danger-contrast:var(--bs-white);--bs-warning-base:var(--bs-yellow-500);--bs-warning-text:light-dark(var(--bs-yellow-700),var(--bs-yellow-400));--bs-warning-text-emphasis:light-dark(var(--bs-yellow-800),var(--bs-yellow-300));--bs-warning-bg:var(--bs-yellow-500);--bs-warning-bg-subtle:light-dark(var(--bs-yellow-100),var(--bs-yellow-900));--bs-warning-bg-muted:light-dark(var(--bs-yellow-200),var(--bs-yellow-800));--bs-warning-border:light-dark(var(--bs-yellow-300),var(--bs-yellow-600));--bs-warning-focus-ring:light-dark(color-mix(in oklch,var(--bs-yellow-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-yellow-400)85%,var(--bs-bg-body)));--bs-warning-contrast:var(--bs-gray-900);--bs-info-base:var(--bs-cyan-500);--bs-info-text:light-dark(var(--bs-cyan-600),var(--bs-cyan-400));--bs-info-text-emphasis:light-dark(var(--bs-cyan-800),var(--bs-cyan-300));--bs-info-bg:var(--bs-cyan-500);--bs-info-bg-subtle:light-dark(var(--bs-cyan-100),var(--bs-cyan-900));--bs-info-bg-muted:light-dark(var(--bs-cyan-200),var(--bs-cyan-800));--bs-info-border:light-dark(var(--bs-cyan-300),var(--bs-cyan-600));--bs-info-focus-ring:light-dark(color-mix(in oklch,var(--bs-cyan-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-cyan-500)75%,var(--bs-bg-body)));--bs-info-contrast:var(--bs-gray-900);--bs-inverse-base:var(--bs-gray-900);--bs-inverse-text:light-dark(var(--bs-gray-900),var(--bs-gray-200));--bs-inverse-text-emphasis:light-dark(var(--bs-gray-975),var(--bs-white));--bs-inverse-bg:light-dark(var(--bs-gray-900),var(--bs-gray-025));--bs-inverse-bg-subtle:light-dark(var(--bs-gray-100),var(--bs-gray-900));--bs-inverse-bg-muted:light-dark(var(--bs-gray-200),var(--bs-gray-300));--bs-inverse-border:light-dark(var(--bs-gray-400),var(--bs-gray-100));--bs-inverse-focus-ring:color-mix(in oklch,light-dark(var(--bs-gray-900),var(--bs-gray-100))50%,var(--bs-bg-body));--bs-inverse-contrast:light-dark(var(--bs-white),var(--bs-gray-900));--bs-secondary-base:var(--bs-gray-200);--bs-secondary-text:light-dark(var(--bs-gray-600),var(--bs-gray-400));--bs-secondary-text-emphasis:light-dark(var(--bs-gray-800),var(--bs-gray-200));--bs-secondary-bg:light-dark(var(--bs-gray-100),var(--bs-gray-600));--bs-secondary-bg-subtle:light-dark(var(--bs-gray-050),var(--bs-gray-800));--bs-secondary-bg-muted:light-dark(var(--bs-gray-100),var(--bs-gray-700));--bs-secondary-border:light-dark(var(--bs-gray-300),var(--bs-gray-600));--bs-secondary-focus-ring:color-mix(in oklch,light-dark(var(--bs-gray-500),var(--bs-gray-300))50%,var(--bs-bg-body));--bs-secondary-contrast:light-dark(var(--bs-gray-900),var(--bs-white));--bs-bg-body:light-dark(var(--bs-white),var(--bs-gray-975));--bs-bg-1:light-dark(var(--bs-gray-025),var(--bs-gray-950));--bs-bg-2:light-dark(var(--bs-gray-050),var(--bs-gray-900));--bs-bg-3:light-dark(var(--bs-gray-100),var(--bs-gray-800));--bs-bg-4:light-dark(var(--bs-gray-200),var(--bs-gray-700));--bs-bg-white:var(--bs-white);--bs-bg-black:var(--bs-black);--bs-bg-transparent:transparent;--bs-bg-inherit:inherit;--bs-fg-body:light-dark(var(--bs-gray-900),var(--bs-gray-050));--bs-fg-1:light-dark(var(--bs-gray-800),var(--bs-gray-200));--bs-fg-2:light-dark(var(--bs-gray-700),var(--bs-gray-300));--bs-fg-3:light-dark(var(--bs-gray-600),var(--bs-gray-500));--bs-fg-4:light-dark(var(--bs-gray-500),var(--bs-gray-600));--bs-fg-white:var(--bs-white);--bs-fg-black:var(--bs-black);--bs-fg-inherit:inherit;--bs-border-bg:var(--bs-bg-body);--bs-border-body:light-dark(var(--bs-gray-300),var(--bs-gray-800));--bs-border-muted:light-dark(var(--bs-gray-200),var(--bs-gray-800));--bs-border-subtle:light-dark(var(--bs-gray-100),var(--bs-gray-900));--bs-border-emphasized:light-dark(var(--bs-gray-400),var(--bs-gray-600));--bs-border-white:var(--bs-white);--bs-border-black:var(--bs-black);--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:1024px;--bs-breakpoint-xl:1280px;--bs-breakpoint-2xl:1536px;color-scheme:light dark}[data-bs-theme=dark]{color-scheme:dark}[data-bs-theme=light]{color-scheme:light}
 /*# sourceMappingURL=bootstrap-utilities.min.css.map */
\ No newline at end of file
index 9bf6b501ff9a0a6217f669b16cc7c3ffb287e542..776ceda8bccb1694cce6fd6756883aa009521b10 100644 (file)
@@ -1 +1 @@
-{"version":3,"sourceRoot":null,"mappings":"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","sources":["bootstrap-utilities.css","../../scss/_banner.scss","../../scss/_colors.scss","../../scss/mixins/_tokens.scss","../../scss/_root.scss","../../scss/helpers/_focus-ring.scss","../../scss/helpers/_icon-link.scss","../../scss/_variables.scss","../../scss/mixins/_transition.scss","../../scss/helpers/_position.scss","../../scss/layout/_breakpoints.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_theme-colors.scss","../../scss/_theme.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/utilities/_api.scss","../../scss/mixins/_utilities.scss"],"sourcesContent":["/*!\n  * Bootstrap Utilities v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n:root {\n  --blue-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.24 240deg));\n  --blue-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.24 240deg));\n  --blue-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.24 240deg));\n  --blue-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.24 240deg));\n  --blue-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.24 240deg));\n  --blue-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.24 240deg));\n  --blue-500: oklch(60% 0.24 240deg);\n  --blue-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.24 240deg));\n  --blue-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.24 240deg));\n  --blue-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.24 240deg));\n  --blue-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.24 240deg));\n  --blue-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.24 240deg));\n  --blue-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.24 240deg));\n  --indigo-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.26 288deg));\n  --indigo-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.26 288deg));\n  --indigo-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.26 288deg));\n  --indigo-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.26 288deg));\n  --indigo-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.26 288deg));\n  --indigo-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.26 288deg));\n  --indigo-500: oklch(56% 0.26 288deg);\n  --indigo-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.26 288deg));\n  --indigo-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.26 288deg));\n  --indigo-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.26 288deg));\n  --indigo-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.26 288deg));\n  --indigo-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.26 288deg));\n  --indigo-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.26 288deg));\n  --violet-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 300deg));\n  --violet-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 300deg));\n  --violet-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 300deg));\n  --violet-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 300deg));\n  --violet-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 300deg));\n  --violet-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 300deg));\n  --violet-500: oklch(56% 0.24 300deg);\n  --violet-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 300deg));\n  --violet-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 300deg));\n  --violet-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 300deg));\n  --violet-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 300deg));\n  --violet-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 300deg));\n  --violet-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 300deg));\n  --purple-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 320deg));\n  --purple-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 320deg));\n  --purple-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 320deg));\n  --purple-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 320deg));\n  --purple-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 320deg));\n  --purple-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 320deg));\n  --purple-500: oklch(56% 0.24 320deg);\n  --purple-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 320deg));\n  --purple-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 320deg));\n  --purple-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 320deg));\n  --purple-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 320deg));\n  --purple-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 320deg));\n  --purple-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 320deg));\n  --pink-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 4deg));\n  --pink-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 4deg));\n  --pink-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 4deg));\n  --pink-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 4deg));\n  --pink-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 4deg));\n  --pink-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 4deg));\n  --pink-500: oklch(60% 0.22 4deg);\n  --pink-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 4deg));\n  --pink-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 4deg));\n  --pink-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 4deg));\n  --pink-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 4deg));\n  --pink-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 4deg));\n  --pink-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 4deg));\n  --red-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 20deg));\n  --red-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 20deg));\n  --red-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 20deg));\n  --red-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 20deg));\n  --red-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 20deg));\n  --red-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 20deg));\n  --red-500: oklch(60% 0.22 20deg);\n  --red-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 20deg));\n  --red-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 20deg));\n  --red-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 20deg));\n  --red-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 20deg));\n  --red-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 20deg));\n  --red-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 20deg));\n  --orange-025: color-mix(in lab, var(--white) 94%, oklch(70% 0.22 52deg));\n  --orange-050: color-mix(in lab, var(--white) 90%, oklch(70% 0.22 52deg));\n  --orange-100: color-mix(in lab, var(--white) 80%, oklch(70% 0.22 52deg));\n  --orange-200: color-mix(in lab, var(--white) 60%, oklch(70% 0.22 52deg));\n  --orange-300: color-mix(in lab, var(--white) 40%, oklch(70% 0.22 52deg));\n  --orange-400: color-mix(in lab, var(--white) 20%, oklch(70% 0.22 52deg));\n  --orange-500: oklch(70% 0.22 52deg);\n  --orange-600: color-mix(in lab, var(--black) 16%, oklch(70% 0.22 52deg));\n  --orange-700: color-mix(in lab, var(--black) 32%, oklch(70% 0.22 52deg));\n  --orange-800: color-mix(in lab, var(--black) 48%, oklch(70% 0.22 52deg));\n  --orange-900: color-mix(in lab, var(--black) 64%, oklch(70% 0.22 52deg));\n  --orange-950: color-mix(in lab, var(--black) 76%, oklch(70% 0.22 52deg));\n  --orange-975: color-mix(in lab, var(--black) 88%, oklch(70% 0.22 52deg));\n  --amber-025: color-mix(in lab, var(--white) 94%, oklch(79% 0.2 78deg));\n  --amber-050: color-mix(in lab, var(--white) 90%, oklch(79% 0.2 78deg));\n  --amber-100: color-mix(in lab, var(--white) 80%, oklch(79% 0.2 78deg));\n  --amber-200: color-mix(in lab, var(--white) 60%, oklch(79% 0.2 78deg));\n  --amber-300: color-mix(in lab, var(--white) 40%, oklch(79% 0.2 78deg));\n  --amber-400: color-mix(in lab, var(--white) 20%, oklch(79% 0.2 78deg));\n  --amber-500: oklch(79% 0.2 78deg);\n  --amber-600: color-mix(in lab, var(--black) 16%, oklch(79% 0.2 78deg));\n  --amber-700: color-mix(in lab, var(--black) 32%, oklch(79% 0.2 78deg));\n  --amber-800: color-mix(in lab, var(--black) 48%, oklch(79% 0.2 78deg));\n  --amber-900: color-mix(in lab, var(--black) 64%, oklch(79% 0.2 78deg));\n  --amber-950: color-mix(in lab, var(--black) 76%, oklch(79% 0.2 78deg));\n  --amber-975: color-mix(in lab, var(--black) 88%, oklch(79% 0.2 78deg));\n  --yellow-025: color-mix(in lab, var(--white) 94%, oklch(88% 0.24 88deg));\n  --yellow-050: color-mix(in lab, var(--white) 90%, oklch(88% 0.24 88deg));\n  --yellow-100: color-mix(in lab, var(--white) 80%, oklch(88% 0.24 88deg));\n  --yellow-200: color-mix(in lab, var(--white) 60%, oklch(88% 0.24 88deg));\n  --yellow-300: color-mix(in lab, var(--white) 40%, oklch(88% 0.24 88deg));\n  --yellow-400: color-mix(in lab, var(--white) 20%, oklch(88% 0.24 88deg));\n  --yellow-500: oklch(88% 0.24 88deg);\n  --yellow-600: color-mix(in lab, var(--black) 16%, oklch(88% 0.24 88deg));\n  --yellow-700: color-mix(in lab, var(--black) 32%, oklch(88% 0.24 88deg));\n  --yellow-800: color-mix(in lab, var(--black) 48%, oklch(88% 0.24 88deg));\n  --yellow-900: color-mix(in lab, var(--black) 64%, oklch(88% 0.24 88deg));\n  --yellow-950: color-mix(in lab, var(--black) 76%, oklch(88% 0.24 88deg));\n  --yellow-975: color-mix(in lab, var(--black) 88%, oklch(88% 0.24 88deg));\n  --lime-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.24 135deg));\n  --lime-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.24 135deg));\n  --lime-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.24 135deg));\n  --lime-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.24 135deg));\n  --lime-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.24 135deg));\n  --lime-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.24 135deg));\n  --lime-500: oklch(65% 0.24 135deg);\n  --lime-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.24 135deg));\n  --lime-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.24 135deg));\n  --lime-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.24 135deg));\n  --lime-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.24 135deg));\n  --lime-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.24 135deg));\n  --lime-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.24 135deg));\n  --green-025: color-mix(in lab, var(--white) 94%, oklch(64% 0.22 160deg));\n  --green-050: color-mix(in lab, var(--white) 90%, oklch(64% 0.22 160deg));\n  --green-100: color-mix(in lab, var(--white) 80%, oklch(64% 0.22 160deg));\n  --green-200: color-mix(in lab, var(--white) 60%, oklch(64% 0.22 160deg));\n  --green-300: color-mix(in lab, var(--white) 40%, oklch(64% 0.22 160deg));\n  --green-400: color-mix(in lab, var(--white) 20%, oklch(64% 0.22 160deg));\n  --green-500: oklch(64% 0.22 160deg);\n  --green-600: color-mix(in lab, var(--black) 16%, oklch(64% 0.22 160deg));\n  --green-700: color-mix(in lab, var(--black) 32%, oklch(64% 0.22 160deg));\n  --green-800: color-mix(in lab, var(--black) 48%, oklch(64% 0.22 160deg));\n  --green-900: color-mix(in lab, var(--black) 64%, oklch(64% 0.22 160deg));\n  --green-950: color-mix(in lab, var(--black) 76%, oklch(64% 0.22 160deg));\n  --green-975: color-mix(in lab, var(--black) 88%, oklch(64% 0.22 160deg));\n  --teal-025: color-mix(in lab, var(--white) 94%, oklch(68% 0.22 190deg));\n  --teal-050: color-mix(in lab, var(--white) 90%, oklch(68% 0.22 190deg));\n  --teal-100: color-mix(in lab, var(--white) 80%, oklch(68% 0.22 190deg));\n  --teal-200: color-mix(in lab, var(--white) 60%, oklch(68% 0.22 190deg));\n  --teal-300: color-mix(in lab, var(--white) 40%, oklch(68% 0.22 190deg));\n  --teal-400: color-mix(in lab, var(--white) 20%, oklch(68% 0.22 190deg));\n  --teal-500: oklch(68% 0.22 190deg);\n  --teal-600: color-mix(in lab, var(--black) 16%, oklch(68% 0.22 190deg));\n  --teal-700: color-mix(in lab, var(--black) 32%, oklch(68% 0.22 190deg));\n  --teal-800: color-mix(in lab, var(--black) 48%, oklch(68% 0.22 190deg));\n  --teal-900: color-mix(in lab, var(--black) 64%, oklch(68% 0.22 190deg));\n  --teal-950: color-mix(in lab, var(--black) 76%, oklch(68% 0.22 190deg));\n  --teal-975: color-mix(in lab, var(--black) 88%, oklch(68% 0.22 190deg));\n  --cyan-025: color-mix(in lab, var(--white) 94%, oklch(69% 0.22 220deg));\n  --cyan-050: color-mix(in lab, var(--white) 90%, oklch(69% 0.22 220deg));\n  --cyan-100: color-mix(in lab, var(--white) 80%, oklch(69% 0.22 220deg));\n  --cyan-200: color-mix(in lab, var(--white) 60%, oklch(69% 0.22 220deg));\n  --cyan-300: color-mix(in lab, var(--white) 40%, oklch(69% 0.22 220deg));\n  --cyan-400: color-mix(in lab, var(--white) 20%, oklch(69% 0.22 220deg));\n  --cyan-500: oklch(69% 0.22 220deg);\n  --cyan-600: color-mix(in lab, var(--black) 16%, oklch(69% 0.22 220deg));\n  --cyan-700: color-mix(in lab, var(--black) 32%, oklch(69% 0.22 220deg));\n  --cyan-800: color-mix(in lab, var(--black) 48%, oklch(69% 0.22 220deg));\n  --cyan-900: color-mix(in lab, var(--black) 64%, oklch(69% 0.22 220deg));\n  --cyan-950: color-mix(in lab, var(--black) 76%, oklch(69% 0.22 220deg));\n  --cyan-975: color-mix(in lab, var(--black) 88%, oklch(69% 0.22 220deg));\n  --brown-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.12 54deg));\n  --brown-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.12 54deg));\n  --brown-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.12 54deg));\n  --brown-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.12 54deg));\n  --brown-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.12 54deg));\n  --brown-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.12 54deg));\n  --brown-500: oklch(60% 0.12 54deg);\n  --brown-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.12 54deg));\n  --brown-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.12 54deg));\n  --brown-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.12 54deg));\n  --brown-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.12 54deg));\n  --brown-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.12 54deg));\n  --brown-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.12 54deg));\n  --gray-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.02 245deg));\n  --gray-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.02 245deg));\n  --gray-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.02 245deg));\n  --gray-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.02 245deg));\n  --gray-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.02 245deg));\n  --gray-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.02 245deg));\n  --gray-500: oklch(60% 0.02 245deg);\n  --gray-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.02 245deg));\n  --gray-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.02 245deg));\n  --gray-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.02 245deg));\n  --gray-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.02 245deg));\n  --gray-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.02 245deg));\n  --gray-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.02 245deg));\n  --pewter-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.01 290deg));\n  --pewter-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.01 290deg));\n  --pewter-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.01 290deg));\n  --pewter-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.01 290deg));\n  --pewter-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.01 290deg));\n  --pewter-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.01 290deg));\n  --pewter-500: oklch(65% 0.01 290deg);\n  --pewter-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.01 290deg));\n  --pewter-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.01 290deg));\n  --pewter-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.01 290deg));\n  --pewter-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.01 290deg));\n  --pewter-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.01 290deg));\n  --pewter-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.01 290deg));\n}\n\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n:root {\n  --black: #000;\n  --white: #fff;\n  --gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent));\n  --font-size-base: 1rem;\n  --font-size-xs: 0.75rem;\n  --font-size-sm: 0.875rem;\n  --font-size-md: 1rem;\n  --font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  --font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);\n  --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  --line-height-xs: 1.25;\n  --line-height-sm: 1.5;\n  --line-height-md: 1.5;\n  --line-height-lg: 1.5;\n  --line-height-xl: 1.4285714286;\n  --line-height-2xl: 1.3333333333;\n  --line-height-3xl: 1.2;\n  --line-height-4xl: 1.1;\n  --line-height-5xl: 1.1;\n  --line-height-6xl: 1;\n  --font-weight-lighter: lighter;\n  --font-weight-light: 300;\n  --font-weight-normal: 400;\n  --font-weight-medium: 500;\n  --font-weight-semibold: 600;\n  --font-weight-bold: 700;\n  --font-weight-bolder: bolder;\n  --body-font-family: system-ui;\n  --body-font-size: var(--font-size-base);\n  --body-font-weight: 400;\n  --body-line-height: 1.5;\n  --heading-color: inherit;\n  --hr-border-color: var(--border-color);\n  --link-color: light-dark(var(--primary-base), var(--primary-text));\n  --link-decoration: underline;\n  --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000);\n  --font-mono: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;\n  --code-font-size: 95%;\n  --code-color: var(--fg-2);\n  --border-width: 1px;\n  --border-style: solid;\n  --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700));\n  --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent);\n  --border-radius: 0.5rem;\n  --border-radius-xs: 0.375rem;\n  --border-radius-sm: 0.5rem;\n  --border-radius-lg: 0.75rem;\n  --border-radius-xl: 1rem;\n  --border-radius-2xl: 2rem;\n  --border-radius-pill: 50rem;\n  --box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  --box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n  --box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n  --box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n  --spacer: 1rem;\n  --focus-ring-width: 3px;\n  --focus-ring-offset: 1px;\n  --focus-ring-color: var(--primary-focus-ring);\n  --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color);\n  --control-checked-bg: var(--primary-base);\n  --control-checked-border-color: var(--control-checked-bg);\n  --control-active-bg: var(--primary-base);\n  --control-active-border-color: var(--control-active-bg);\n  --control-disabled-bg: var(--bg-3);\n  --control-disabled-opacity: 0.65;\n  --btn-input-fg: var(--fg-body);\n  --btn-input-bg: var(--bg-body);\n  --btn-input-min-height: 2.375rem;\n  --btn-input-padding-y: 0.375rem;\n  --btn-input-padding-x: 0.75rem;\n  --btn-input-font-size: var(--font-size-base);\n  --btn-input-line-height: var(--line-height-base);\n  --btn-input-border-radius: var(--border-radius);\n  --btn-input-xs-min-height: 1.5rem;\n  --btn-input-xs-padding-y: 0.125rem;\n  --btn-input-xs-padding-x: 0.5rem;\n  --btn-input-xs-font-size: var(--font-size-xs);\n  --btn-input-xs-line-height: 1.125;\n  --btn-input-xs-border-radius: var(--border-radius-xs);\n  --btn-input-sm-min-height: 2rem;\n  --btn-input-sm-padding-y: 0.25rem;\n  --btn-input-sm-padding-x: 0.625rem;\n  --btn-input-sm-font-size: var(--font-size-sm);\n  --btn-input-sm-line-height: var(--line-height-sm);\n  --btn-input-sm-border-radius: var(--border-radius-sm);\n  --btn-input-lg-min-height: 2.75rem;\n  --btn-input-lg-padding-y: 0.5rem;\n  --btn-input-lg-padding-x: 1rem;\n  --btn-input-lg-font-size: var(--font-size-md);\n  --btn-input-lg-line-height: var(--line-height-md);\n  --btn-input-lg-border-radius: var(--border-radius-lg);\n  --form-valid-color: var(--success-text);\n  --form-valid-border-color: var(--success-text);\n  --form-invalid-color: var(--danger-text);\n  --form-invalid-border-color: var(--danger-text);\n  --primary-base: var(--blue-500);\n  --primary-text: light-dark(var(--blue-600), var(--blue-400));\n  --primary-text-emphasis: light-dark(var(--blue-800), var(--blue-200));\n  --primary-bg: var(--blue-500);\n  --primary-bg-subtle: light-dark(var(--blue-100), var(--blue-900));\n  --primary-bg-muted: light-dark(var(--blue-200), var(--blue-800));\n  --primary-border: light-dark(var(--blue-300), var(--blue-600));\n  --primary-focus-ring: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  --primary-contrast: var(--white);\n  --accent-base: var(--indigo-500);\n  --accent-text: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  --accent-text-emphasis: light-dark(var(--indigo-800), var(--indigo-300));\n  --accent-bg: var(--indigo-500);\n  --accent-bg-subtle: light-dark(var(--indigo-100), var(--indigo-900));\n  --accent-bg-muted: light-dark(var(--indigo-200), var(--indigo-800));\n  --accent-border: light-dark(var(--indigo-300), var(--indigo-600));\n  --accent-focus-ring: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  --accent-contrast: var(--white);\n  --success-base: var(--green-500);\n  --success-text: light-dark(var(--green-600), var(--green-400));\n  --success-text-emphasis: light-dark(var(--green-800), var(--green-300));\n  --success-bg: var(--green-500);\n  --success-bg-subtle: light-dark(var(--green-100), var(--green-900));\n  --success-bg-muted: light-dark(var(--green-200), var(--green-800));\n  --success-border: light-dark(var(--green-300), var(--green-600));\n  --success-focus-ring: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  --success-contrast: var(--white);\n  --danger-base: var(--red-500);\n  --danger-text: light-dark(var(--red-600), var(--red-400));\n  --danger-text-emphasis: light-dark(var(--red-800), var(--red-300));\n  --danger-bg: var(--red-500);\n  --danger-bg-subtle: light-dark(var(--red-100), var(--red-900));\n  --danger-bg-muted: light-dark(var(--red-200), var(--red-800));\n  --danger-border: light-dark(var(--red-300), var(--red-600));\n  --danger-focus-ring: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  --danger-contrast: var(--white);\n  --warning-base: var(--yellow-500);\n  --warning-text: light-dark(var(--yellow-700), var(--yellow-400));\n  --warning-text-emphasis: light-dark(var(--yellow-800), var(--yellow-300));\n  --warning-bg: var(--yellow-500);\n  --warning-bg-subtle: light-dark(var(--yellow-100), var(--yellow-900));\n  --warning-bg-muted: light-dark(var(--yellow-200), var(--yellow-800));\n  --warning-border: light-dark(var(--yellow-300), var(--yellow-600));\n  --warning-focus-ring: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  --warning-contrast: var(--gray-900);\n  --info-base: var(--cyan-500);\n  --info-text: light-dark(var(--cyan-600), var(--cyan-400));\n  --info-text-emphasis: light-dark(var(--cyan-800), var(--cyan-300));\n  --info-bg: var(--cyan-500);\n  --info-bg-subtle: light-dark(var(--cyan-100), var(--cyan-900));\n  --info-bg-muted: light-dark(var(--cyan-200), var(--cyan-800));\n  --info-border: light-dark(var(--cyan-300), var(--cyan-600));\n  --info-focus-ring: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  --info-contrast: var(--gray-900);\n  --inverse-base: var(--gray-900);\n  --inverse-text: light-dark(var(--gray-900), var(--gray-200));\n  --inverse-text-emphasis: light-dark(var(--gray-975), var(--white));\n  --inverse-bg: light-dark(var(--gray-900), var(--gray-025));\n  --inverse-bg-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --inverse-bg-muted: light-dark(var(--gray-200), var(--gray-300));\n  --inverse-border: light-dark(var(--gray-400), var(--gray-100));\n  --inverse-focus-ring: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  --inverse-contrast: light-dark(var(--white), var(--gray-900));\n  --secondary-base: var(--gray-200);\n  --secondary-text: light-dark(var(--gray-600), var(--gray-400));\n  --secondary-text-emphasis: light-dark(var(--gray-800), var(--gray-200));\n  --secondary-bg: light-dark(var(--gray-100), var(--gray-600));\n  --secondary-bg-subtle: light-dark(var(--gray-050), var(--gray-800));\n  --secondary-bg-muted: light-dark(var(--gray-100), var(--gray-700));\n  --secondary-border: light-dark(var(--gray-300), var(--gray-600));\n  --secondary-focus-ring: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  --secondary-contrast: light-dark(var(--gray-900), var(--white));\n  --bg-body: light-dark(var(--white), var(--gray-975));\n  --bg-1: light-dark(var(--gray-025), var(--gray-950));\n  --bg-2: light-dark(var(--gray-050), var(--gray-900));\n  --bg-3: light-dark(var(--gray-100), var(--gray-800));\n  --bg-4: light-dark(var(--gray-200), var(--gray-700));\n  --bg-white: var(--white);\n  --bg-black: var(--black);\n  --bg-transparent: transparent;\n  --bg-inherit: inherit;\n  --fg-body: light-dark(var(--gray-900), var(--gray-050));\n  --fg-1: light-dark(var(--gray-800), var(--gray-200));\n  --fg-2: light-dark(var(--gray-700), var(--gray-300));\n  --fg-3: light-dark(var(--gray-600), var(--gray-500));\n  --fg-4: light-dark(var(--gray-500), var(--gray-600));\n  --fg-white: var(--white);\n  --fg-black: var(--black);\n  --fg-inherit: inherit;\n  --border-bg: var(--bg-body);\n  --border-body: light-dark(var(--gray-300), var(--gray-800));\n  --border-muted: light-dark(var(--gray-200), var(--gray-800));\n  --border-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --border-emphasized: light-dark(var(--gray-400), var(--gray-600));\n  --border-white: var(--white);\n  --border-black: var(--black);\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 1024px;\n  --breakpoint-xl: 1280px;\n  --breakpoint-2xl: 1536px;\n  color-scheme: light dark;\n}\n\n[data-bs-theme=dark] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=light] {\n  color-scheme: light;\n}\n\n@layer helpers {\n  .focus-ring:focus-visible {\n    outline: var(--focus-ring);\n  }\n}\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: 0.375rem;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, 0.5));\n    text-underline-offset: 0.25em;\n    backface-visibility: hidden;\n  }\n  .icon-link > .bi {\n    flex-shrink: 0;\n    width: 1em;\n    height: 1em;\n    fill: currentcolor;\n    transition: 0.2s ease-in-out transform;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .icon-link > .bi {\n      transition: none;\n    }\n  }\n  .icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {\n    transform: var(--icon-link-transform, translate3d(0.25em, 0, 0));\n  }\n}\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: 1030;\n  }\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: 1030;\n  }\n  .sticky-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n  .sticky-bottom {\n    position: sticky;\n    bottom: 0;\n    z-index: 1020;\n  }\n  @media (width >= 576px) {\n    .sticky-sm-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-sm-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 768px) {\n    .sticky-md-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-md-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1024px) {\n    .sticky-lg-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-lg-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1280px) {\n    .sticky-xl-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-xl-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1536px) {\n    .sticky-2xl-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-2xl-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n}\n@layer helpers {\n  .stack-container {\n    container-type: inline-size;\n  }\n  [class*=hstack],\n  [class*=vstack] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n  .vstack {\n    --stack-direction: column;\n    --stack-align-items: stretch;\n  }\n  .hstack {\n    --stack-direction: row;\n    --stack-align-items: flex-start;\n  }\n  @container (width >= 576px) {\n    .vstack-sm {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 576px) {\n    .hstack-sm {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 768px) {\n    .vstack-md {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 768px) {\n    .hstack-md {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1024px) {\n    .vstack-lg {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1024px) {\n    .hstack-lg {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1280px) {\n    .vstack-xl {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1280px) {\n    .hstack-xl {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1536px) {\n    .vstack-2xl {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1536px) {\n    .hstack-2xl {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n}\n@layer helpers {\n  .theme-primary {\n    --theme-base: var(--primary-base);\n    --theme-text: var(--primary-text);\n    --theme-text-emphasis: var(--primary-text-emphasis);\n    --theme-bg: var(--primary-bg);\n    --theme-bg-subtle: var(--primary-bg-subtle);\n    --theme-bg-muted: var(--primary-bg-muted);\n    --theme-border: var(--primary-border);\n    --theme-focus-ring: var(--primary-focus-ring);\n    --theme-contrast: var(--primary-contrast);\n  }\n  .theme-accent {\n    --theme-base: var(--accent-base);\n    --theme-text: var(--accent-text);\n    --theme-text-emphasis: var(--accent-text-emphasis);\n    --theme-bg: var(--accent-bg);\n    --theme-bg-subtle: var(--accent-bg-subtle);\n    --theme-bg-muted: var(--accent-bg-muted);\n    --theme-border: var(--accent-border);\n    --theme-focus-ring: var(--accent-focus-ring);\n    --theme-contrast: var(--accent-contrast);\n  }\n  .theme-success {\n    --theme-base: var(--success-base);\n    --theme-text: var(--success-text);\n    --theme-text-emphasis: var(--success-text-emphasis);\n    --theme-bg: var(--success-bg);\n    --theme-bg-subtle: var(--success-bg-subtle);\n    --theme-bg-muted: var(--success-bg-muted);\n    --theme-border: var(--success-border);\n    --theme-focus-ring: var(--success-focus-ring);\n    --theme-contrast: var(--success-contrast);\n  }\n  .theme-danger {\n    --theme-base: var(--danger-base);\n    --theme-text: var(--danger-text);\n    --theme-text-emphasis: var(--danger-text-emphasis);\n    --theme-bg: var(--danger-bg);\n    --theme-bg-subtle: var(--danger-bg-subtle);\n    --theme-bg-muted: var(--danger-bg-muted);\n    --theme-border: var(--danger-border);\n    --theme-focus-ring: var(--danger-focus-ring);\n    --theme-contrast: var(--danger-contrast);\n  }\n  .theme-warning {\n    --theme-base: var(--warning-base);\n    --theme-text: var(--warning-text);\n    --theme-text-emphasis: var(--warning-text-emphasis);\n    --theme-bg: var(--warning-bg);\n    --theme-bg-subtle: var(--warning-bg-subtle);\n    --theme-bg-muted: var(--warning-bg-muted);\n    --theme-border: var(--warning-border);\n    --theme-focus-ring: var(--warning-focus-ring);\n    --theme-contrast: var(--warning-contrast);\n  }\n  .theme-info {\n    --theme-base: var(--info-base);\n    --theme-text: var(--info-text);\n    --theme-text-emphasis: var(--info-text-emphasis);\n    --theme-bg: var(--info-bg);\n    --theme-bg-subtle: var(--info-bg-subtle);\n    --theme-bg-muted: var(--info-bg-muted);\n    --theme-border: var(--info-border);\n    --theme-focus-ring: var(--info-focus-ring);\n    --theme-contrast: var(--info-contrast);\n  }\n  .theme-inverse {\n    --theme-base: var(--inverse-base);\n    --theme-text: var(--inverse-text);\n    --theme-text-emphasis: var(--inverse-text-emphasis);\n    --theme-bg: var(--inverse-bg);\n    --theme-bg-subtle: var(--inverse-bg-subtle);\n    --theme-bg-muted: var(--inverse-bg-muted);\n    --theme-border: var(--inverse-border);\n    --theme-focus-ring: var(--inverse-focus-ring);\n    --theme-contrast: var(--inverse-contrast);\n  }\n  .theme-secondary {\n    --theme-base: var(--secondary-base);\n    --theme-text: var(--secondary-text);\n    --theme-text-emphasis: var(--secondary-text-emphasis);\n    --theme-bg: var(--secondary-bg);\n    --theme-bg-subtle: var(--secondary-bg-subtle);\n    --theme-bg-muted: var(--secondary-bg-muted);\n    --theme-border: var(--secondary-border);\n    --theme-focus-ring: var(--secondary-focus-ring);\n    --theme-contrast: var(--secondary-contrast);\n  }\n}\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) {\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border: 0 !important;\n  }\n  .visually-hidden:not(caption),\n  .visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {\n    position: absolute !important;\n  }\n  .visually-hidden *,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) * {\n    overflow: hidden !important;\n  }\n}\n@layer helpers {\n  .stretched-link::after {\n    position: absolute;\n    inset: 0;\n    z-index: 1;\n    content: \"\";\n  }\n}\n@layer helpers {\n  .text-truncate {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n@layer utilities {\n  .align-baseline {\n    vertical-align: baseline;\n  }\n  .align-top {\n    vertical-align: top;\n  }\n  .align-middle {\n    vertical-align: middle;\n  }\n  .align-bottom {\n    vertical-align: bottom;\n  }\n  .align-text-bottom {\n    vertical-align: text-bottom;\n  }\n  .align-text-top {\n    vertical-align: text-top;\n  }\n  [class*=ratio-] {\n    aspect-ratio: var(--ratio);\n  }\n  .ratio-auto {\n    --ratio: auto;\n  }\n  .ratio-1x1 {\n    --ratio: 1 / 1;\n  }\n  .ratio-4x3 {\n    --ratio: 4 / 3;\n  }\n  .ratio-16x9 {\n    --ratio: 16 / 9;\n  }\n  .ratio-21x9 {\n    --ratio: 21 / 9;\n  }\n  .float-start {\n    float: inline-start;\n  }\n  .float-end {\n    float: inline-end;\n  }\n  .float-none {\n    float: none;\n  }\n  .object-fit-contain {\n    object-fit: contain;\n  }\n  .object-fit-cover {\n    object-fit: cover;\n  }\n  .object-fit-fill {\n    object-fit: fill;\n  }\n  .object-fit-scale {\n    object-fit: scale-down;\n  }\n  .object-fit-none {\n    object-fit: none;\n  }\n  .opacity-0 {\n    opacity: 0;\n  }\n  .opacity-25 {\n    opacity: 0.25;\n  }\n  .opacity-50 {\n    opacity: 0.5;\n  }\n  .opacity-75 {\n    opacity: 0.75;\n  }\n  .opacity-100 {\n    opacity: 1;\n  }\n  .overflow-auto {\n    overflow: auto;\n  }\n  .overflow-hidden {\n    overflow: hidden;\n  }\n  .overflow-visible {\n    overflow: visible;\n  }\n  .overflow-scroll {\n    overflow: scroll;\n  }\n  .overflow-x-auto {\n    overflow-x: auto;\n  }\n  .overflow-x-hidden {\n    overflow-x: hidden;\n  }\n  .overflow-x-visible {\n    overflow-x: visible;\n  }\n  .overflow-x-scroll {\n    overflow-x: scroll;\n  }\n  .overflow-y-auto {\n    overflow-y: auto;\n  }\n  .overflow-y-hidden {\n    overflow-y: hidden;\n  }\n  .overflow-y-visible {\n    overflow-y: visible;\n  }\n  .overflow-y-scroll {\n    overflow-y: scroll;\n  }\n  .d-inline {\n    display: inline;\n  }\n  .d-inline-block {\n    display: inline-block;\n  }\n  .d-block {\n    display: block;\n  }\n  .d-grid {\n    display: grid;\n  }\n  .d-inline-grid {\n    display: inline-grid;\n  }\n  .d-table {\n    display: table;\n  }\n  .d-table-row {\n    display: table-row;\n  }\n  .d-table-cell {\n    display: table-cell;\n  }\n  .d-flex {\n    display: flex;\n  }\n  .d-inline-flex {\n    display: inline-flex;\n  }\n  .d-contents {\n    display: contents;\n  }\n  .d-flow-root {\n    display: flow-root;\n  }\n  .d-none {\n    display: none;\n  }\n  .shadow {\n    box-shadow: var(--box-shadow);\n  }\n  .shadow-sm {\n    box-shadow: var(--box-shadow-sm);\n  }\n  .shadow-lg {\n    box-shadow: var(--box-shadow-lg);\n  }\n  .shadow-none {\n    box-shadow: none;\n  }\n  .focus-ring-primary {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-accent {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-success {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-danger {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-warning {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  }\n  .focus-ring-info {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-inverse {\n    --focus-ring-color: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  }\n  .focus-ring-secondary {\n    --focus-ring-color: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  }\n  .position-static {\n    position: static;\n  }\n  .position-relative {\n    position: relative;\n  }\n  .position-absolute {\n    position: absolute;\n  }\n  .position-fixed {\n    position: fixed;\n  }\n  .position-sticky {\n    position: sticky;\n  }\n  .top-0 {\n    top: 0;\n  }\n  .top-50 {\n    top: 50%;\n  }\n  .top-100 {\n    top: 100%;\n  }\n  .bottom-0 {\n    bottom: 0;\n  }\n  .bottom-50 {\n    bottom: 50%;\n  }\n  .bottom-100 {\n    bottom: 100%;\n  }\n  .start-0 {\n    left: 0;\n  }\n  .start-50 {\n    left: 50%;\n  }\n  .start-100 {\n    left: 100%;\n  }\n  .end-0 {\n    right: 0;\n  }\n  .end-50 {\n    right: 50%;\n  }\n  .end-100 {\n    right: 100%;\n  }\n  .translate-middle {\n    transform: translate(-50%, -50%);\n  }\n  .translate-middle-x {\n    transform: translateX(-50%);\n  }\n  .translate-middle-y {\n    transform: translateY(-50%);\n  }\n  .border {\n    border: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-0 {\n    border: 0;\n  }\n  .border-top {\n    border-block-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-top-0 {\n    border-block-start: 0;\n  }\n  .border-end {\n    border-inline-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-end-0 {\n    border-inline-end: 0;\n  }\n  .border-bottom {\n    border-block-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-bottom-0 {\n    border-block-end: 0;\n  }\n  .border-start {\n    border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-start-0 {\n    border-inline-start: 0;\n  }\n  .border-block {\n    border-block: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-block-0 {\n    border-block: 0;\n  }\n  .border-inline {\n    border-inline: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-inline-0 {\n    border-inline: 0;\n  }\n  .border-primary {\n    --border-color: var(--blue-500);\n    border-color: var(--border-color);\n  }\n  .border-accent {\n    --border-color: var(--indigo-500);\n    border-color: var(--border-color);\n  }\n  .border-success {\n    --border-color: var(--green-500);\n    border-color: var(--border-color);\n  }\n  .border-danger {\n    --border-color: var(--red-500);\n    border-color: var(--border-color);\n  }\n  .border-warning {\n    --border-color: var(--yellow-500);\n    border-color: var(--border-color);\n  }\n  .border-info {\n    --border-color: var(--cyan-500);\n    border-color: var(--border-color);\n  }\n  .border-inverse {\n    --border-color: light-dark(var(--gray-900), var(--gray-025));\n    border-color: var(--border-color);\n  }\n  .border-secondary {\n    --border-color: light-dark(var(--gray-100), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-bg {\n    --border-color: var(--bg-body);\n    border-color: var(--border-color);\n  }\n  .border-body {\n    --border-color: light-dark(var(--gray-300), var(--gray-800));\n    border-color: var(--border-color);\n  }\n  .border-muted {\n    --border-color: light-dark(var(--gray-200), var(--gray-800));\n    border-color: var(--border-color);\n  }\n  .border-subtle {\n    --border-color: light-dark(var(--gray-100), var(--gray-900));\n    border-color: var(--border-color);\n  }\n  .border-emphasized {\n    --border-color: light-dark(var(--gray-400), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-white {\n    --border-color: var(--white);\n    border-color: var(--border-color);\n  }\n  .border-black {\n    --border-color: var(--black);\n    border-color: var(--border-color);\n  }\n  .border-subtle-primary {\n    --border-color: light-dark(var(--blue-300), var(--blue-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-accent {\n    --border-color: light-dark(var(--indigo-300), var(--indigo-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-success {\n    --border-color: light-dark(var(--green-300), var(--green-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-danger {\n    --border-color: light-dark(var(--red-300), var(--red-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-warning {\n    --border-color: light-dark(var(--yellow-300), var(--yellow-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-info {\n    --border-color: light-dark(var(--cyan-300), var(--cyan-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-inverse {\n    --border-color: light-dark(var(--gray-400), var(--gray-100));\n    border-color: var(--border-color);\n  }\n  .border-subtle-secondary {\n    --border-color: light-dark(var(--gray-300), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-1 {\n    border-width: 1px;\n  }\n  .border-2 {\n    border-width: 2px;\n  }\n  .border-3 {\n    border-width: 3px;\n  }\n  .border-4 {\n    border-width: 4px;\n  }\n  .border-5 {\n    border-width: 5px;\n  }\n  .border-10 {\n    border-color: color-mix(in oklch, var(--border-color) 10%, transparent);\n  }\n  .border-20 {\n    border-color: color-mix(in oklch, var(--border-color) 20%, transparent);\n  }\n  .border-30 {\n    border-color: color-mix(in oklch, var(--border-color) 30%, transparent);\n  }\n  .border-40 {\n    border-color: color-mix(in oklch, var(--border-color) 40%, transparent);\n  }\n  .border-50 {\n    border-color: color-mix(in oklch, var(--border-color) 50%, transparent);\n  }\n  .border-60 {\n    border-color: color-mix(in oklch, var(--border-color) 60%, transparent);\n  }\n  .border-70 {\n    border-color: color-mix(in oklch, var(--border-color) 70%, transparent);\n  }\n  .border-80 {\n    border-color: color-mix(in oklch, var(--border-color) 80%, transparent);\n  }\n  .border-90 {\n    border-color: color-mix(in oklch, var(--border-color) 90%, transparent);\n  }\n  .border-100 {\n    border-color: var(--border-color);\n  }\n  .w-1 {\n    width: 1rem;\n  }\n  .w-2 {\n    width: 2rem;\n  }\n  .w-3 {\n    width: 3rem;\n  }\n  .w-4 {\n    width: 4rem;\n  }\n  .w-5 {\n    width: 5rem;\n  }\n  .w-6 {\n    width: 6rem;\n  }\n  .w-7 {\n    width: 7rem;\n  }\n  .w-8 {\n    width: 8rem;\n  }\n  .w-9 {\n    width: 9rem;\n  }\n  .w-10 {\n    width: 10rem;\n  }\n  .w-11 {\n    width: 11rem;\n  }\n  .w-12 {\n    width: 12rem;\n  }\n  .w-25 {\n    width: 25%;\n  }\n  .w-50 {\n    width: 50%;\n  }\n  .w-75 {\n    width: 75%;\n  }\n  .w-100 {\n    width: 100%;\n  }\n  .w-auto {\n    width: auto;\n  }\n  .w-min {\n    width: min-content;\n  }\n  .w-max {\n    width: max-content;\n  }\n  .w-fit {\n    width: fit-content;\n  }\n  .max-w-100 {\n    max-width: 100%;\n  }\n  .min-w-0 {\n    min-width: 0;\n  }\n  .min-w-100 {\n    min-width: 100%;\n  }\n  .vw-100 {\n    width: 100vw;\n  }\n  .min-vw-100 {\n    min-width: 100vw;\n  }\n  .h-25 {\n    height: 25%;\n  }\n  .h-50 {\n    height: 50%;\n  }\n  .h-75 {\n    height: 75%;\n  }\n  .h-100 {\n    height: 100%;\n  }\n  .h-auto {\n    height: auto;\n  }\n  .h-min {\n    height: min-content;\n  }\n  .h-max {\n    height: max-content;\n  }\n  .h-fit {\n    height: fit-content;\n  }\n  .max-h-100 {\n    max-height: 100%;\n  }\n  .min-h-0 {\n    min-height: 0;\n  }\n  .min-h-100 {\n    min-height: 100%;\n  }\n  .vh-100 {\n    height: 100vh;\n  }\n  .min-vh-100 {\n    min-height: 100vh;\n  }\n  .flex-fill {\n    flex: 1 1 auto;\n  }\n  .flex-row {\n    flex-direction: row;\n  }\n  .flex-column {\n    flex-direction: column;\n  }\n  .flex-row-reverse {\n    flex-direction: row-reverse;\n  }\n  .flex-column-reverse {\n    flex-direction: column-reverse;\n  }\n  .flex-grow-0 {\n    flex-grow: 0;\n  }\n  .flex-grow-1 {\n    flex-grow: 1;\n  }\n  .flex-shrink-0 {\n    flex-shrink: 0;\n  }\n  .flex-shrink-1 {\n    flex-shrink: 1;\n  }\n  .flex-wrap {\n    flex-wrap: wrap;\n  }\n  .flex-nowrap {\n    flex-wrap: nowrap;\n  }\n  .flex-wrap-reverse {\n    flex-wrap: wrap-reverse;\n  }\n  .justify-content-start {\n    justify-content: flex-start;\n  }\n  .justify-content-end {\n    justify-content: flex-end;\n  }\n  .justify-content-center {\n    justify-content: center;\n  }\n  .justify-content-between {\n    justify-content: space-between;\n  }\n  .justify-content-around {\n    justify-content: space-around;\n  }\n  .justify-content-evenly {\n    justify-content: space-evenly;\n  }\n  .justify-items-start {\n    justify-items: start;\n  }\n  .justify-items-end {\n    justify-items: end;\n  }\n  .justify-items-center {\n    justify-items: center;\n  }\n  .justify-items-stretch {\n    justify-items: stretch;\n  }\n  .justify-self-start {\n    justify-self: flex-start;\n  }\n  .justify-self-end {\n    justify-self: flex-end;\n  }\n  .justify-self-center {\n    justify-self: center;\n  }\n  .align-items-start {\n    align-items: flex-start;\n  }\n  .align-items-end {\n    align-items: flex-end;\n  }\n  .align-items-center {\n    align-items: center;\n  }\n  .align-items-baseline {\n    align-items: baseline;\n  }\n  .align-items-stretch {\n    align-items: stretch;\n  }\n  .align-content-start {\n    align-content: flex-start;\n  }\n  .align-content-end {\n    align-content: flex-end;\n  }\n  .align-content-center {\n    align-content: center;\n  }\n  .align-content-between {\n    align-content: space-between;\n  }\n  .align-content-around {\n    align-content: space-around;\n  }\n  .align-content-stretch {\n    align-content: stretch;\n  }\n  .align-self-auto {\n    align-self: auto;\n  }\n  .align-self-start {\n    align-self: flex-start;\n  }\n  .align-self-end {\n    align-self: flex-end;\n  }\n  .align-self-center {\n    align-self: center;\n  }\n  .align-self-baseline {\n    align-self: baseline;\n  }\n  .align-self-stretch {\n    align-self: stretch;\n  }\n  .place-items-start {\n    place-items: start;\n  }\n  .place-items-end {\n    place-items: end;\n  }\n  .place-items-center {\n    place-items: center;\n  }\n  .place-items-stretch {\n    place-items: stretch;\n  }\n  .grid-cols-3 {\n    --columns: 3;\n  }\n  .grid-cols-4 {\n    --columns: 4;\n  }\n  .grid-cols-6 {\n    --columns: 6;\n  }\n  .grid-cols-fill {\n    grid-column: 1 / -1;\n  }\n  .grid-auto-flow-row {\n    grid-auto-flow: row;\n  }\n  .grid-auto-flow-column {\n    grid-auto-flow: column;\n  }\n  .grid-auto-flow-dense {\n    grid-auto-flow: dense;\n  }\n  .order-first {\n    order: -1;\n  }\n  .order-0 {\n    order: 0;\n  }\n  .order-1 {\n    order: 1;\n  }\n  .order-2 {\n    order: 2;\n  }\n  .order-3 {\n    order: 3;\n  }\n  .order-4 {\n    order: 4;\n  }\n  .order-5 {\n    order: 5;\n  }\n  .order-last {\n    order: 6;\n  }\n  .m--2 {\n    margin: -0.5rem;\n  }\n  .m--1 {\n    margin: -0.25rem;\n  }\n  .m-0 {\n    margin: 0;\n  }\n  .m-1 {\n    margin: 0.25rem;\n  }\n  .m-2 {\n    margin: 0.5rem;\n  }\n  .m-3 {\n    margin: 1rem;\n  }\n  .m-4 {\n    margin: 1.5rem;\n  }\n  .m-5 {\n    margin: 3rem;\n  }\n  .m-auto {\n    margin: auto;\n  }\n  .mx--2 {\n    margin-inline: -0.5rem;\n  }\n  .mx--1 {\n    margin-inline: -0.25rem;\n  }\n  .mx-0 {\n    margin-inline: 0;\n  }\n  .mx-1 {\n    margin-inline: 0.25rem;\n  }\n  .mx-2 {\n    margin-inline: 0.5rem;\n  }\n  .mx-3 {\n    margin-inline: 1rem;\n  }\n  .mx-4 {\n    margin-inline: 1.5rem;\n  }\n  .mx-5 {\n    margin-inline: 3rem;\n  }\n  .mx-auto {\n    margin-inline: auto;\n  }\n  .my--2 {\n    margin-block: -0.5rem;\n  }\n  .my--1 {\n    margin-block: -0.25rem;\n  }\n  .my-0 {\n    margin-block: 0;\n  }\n  .my-1 {\n    margin-block: 0.25rem;\n  }\n  .my-2 {\n    margin-block: 0.5rem;\n  }\n  .my-3 {\n    margin-block: 1rem;\n  }\n  .my-4 {\n    margin-block: 1.5rem;\n  }\n  .my-5 {\n    margin-block: 3rem;\n  }\n  .my-auto {\n    margin-block: auto;\n  }\n  .mt--2 {\n    margin-block-start: -0.5rem;\n  }\n  .mt--1 {\n    margin-block-start: -0.25rem;\n  }\n  .mt-0 {\n    margin-block-start: 0;\n  }\n  .mt-1 {\n    margin-block-start: 0.25rem;\n  }\n  .mt-2 {\n    margin-block-start: 0.5rem;\n  }\n  .mt-3 {\n    margin-block-start: 1rem;\n  }\n  .mt-4 {\n    margin-block-start: 1.5rem;\n  }\n  .mt-5 {\n    margin-block-start: 3rem;\n  }\n  .mt-auto {\n    margin-block-start: auto;\n  }\n  .me--2 {\n    margin-inline-end: -0.5rem;\n  }\n  .me--1 {\n    margin-inline-end: -0.25rem;\n  }\n  .me-0 {\n    margin-inline-end: 0;\n  }\n  .me-1 {\n    margin-inline-end: 0.25rem;\n  }\n  .me-2 {\n    margin-inline-end: 0.5rem;\n  }\n  .me-3 {\n    margin-inline-end: 1rem;\n  }\n  .me-4 {\n    margin-inline-end: 1.5rem;\n  }\n  .me-5 {\n    margin-inline-end: 3rem;\n  }\n  .me-auto {\n    margin-inline-end: auto;\n  }\n  .mb--2 {\n    margin-block-end: -0.5rem;\n  }\n  .mb--1 {\n    margin-block-end: -0.25rem;\n  }\n  .mb-0 {\n    margin-block-end: 0;\n  }\n  .mb-1 {\n    margin-block-end: 0.25rem;\n  }\n  .mb-2 {\n    margin-block-end: 0.5rem;\n  }\n  .mb-3 {\n    margin-block-end: 1rem;\n  }\n  .mb-4 {\n    margin-block-end: 1.5rem;\n  }\n  .mb-5 {\n    margin-block-end: 3rem;\n  }\n  .mb-auto {\n    margin-block-end: auto;\n  }\n  .ms--2 {\n    margin-inline-start: -0.5rem;\n  }\n  .ms--1 {\n    margin-inline-start: -0.25rem;\n  }\n  .ms-0 {\n    margin-inline-start: 0;\n  }\n  .ms-1 {\n    margin-inline-start: 0.25rem;\n  }\n  .ms-2 {\n    margin-inline-start: 0.5rem;\n  }\n  .ms-3 {\n    margin-inline-start: 1rem;\n  }\n  .ms-4 {\n    margin-inline-start: 1.5rem;\n  }\n  .ms-5 {\n    margin-inline-start: 3rem;\n  }\n  .ms-auto {\n    margin-inline-start: auto;\n  }\n  .p--2 {\n    padding: -0.5rem;\n  }\n  .p--1 {\n    padding: -0.25rem;\n  }\n  .p-0 {\n    padding: 0;\n  }\n  .p-1 {\n    padding: 0.25rem;\n  }\n  .p-2 {\n    padding: 0.5rem;\n  }\n  .p-3 {\n    padding: 1rem;\n  }\n  .p-4 {\n    padding: 1.5rem;\n  }\n  .p-5 {\n    padding: 3rem;\n  }\n  .px--2 {\n    padding-inline: -0.5rem;\n  }\n  .px--1 {\n    padding-inline: -0.25rem;\n  }\n  .px-0 {\n    padding-inline: 0;\n  }\n  .px-1 {\n    padding-inline: 0.25rem;\n  }\n  .px-2 {\n    padding-inline: 0.5rem;\n  }\n  .px-3 {\n    padding-inline: 1rem;\n  }\n  .px-4 {\n    padding-inline: 1.5rem;\n  }\n  .px-5 {\n    padding-inline: 3rem;\n  }\n  .py--2 {\n    padding-block: -0.5rem;\n  }\n  .py--1 {\n    padding-block: -0.25rem;\n  }\n  .py-0 {\n    padding-block: 0;\n  }\n  .py-1 {\n    padding-block: 0.25rem;\n  }\n  .py-2 {\n    padding-block: 0.5rem;\n  }\n  .py-3 {\n    padding-block: 1rem;\n  }\n  .py-4 {\n    padding-block: 1.5rem;\n  }\n  .py-5 {\n    padding-block: 3rem;\n  }\n  .pt--2 {\n    padding-block-start: -0.5rem;\n  }\n  .pt--1 {\n    padding-block-start: -0.25rem;\n  }\n  .pt-0 {\n    padding-block-start: 0;\n  }\n  .pt-1 {\n    padding-block-start: 0.25rem;\n  }\n  .pt-2 {\n    padding-block-start: 0.5rem;\n  }\n  .pt-3 {\n    padding-block-start: 1rem;\n  }\n  .pt-4 {\n    padding-block-start: 1.5rem;\n  }\n  .pt-5 {\n    padding-block-start: 3rem;\n  }\n  .pe--2 {\n    padding-inline-end: -0.5rem;\n  }\n  .pe--1 {\n    padding-inline-end: -0.25rem;\n  }\n  .pe-0 {\n    padding-inline-end: 0;\n  }\n  .pe-1 {\n    padding-inline-end: 0.25rem;\n  }\n  .pe-2 {\n    padding-inline-end: 0.5rem;\n  }\n  .pe-3 {\n    padding-inline-end: 1rem;\n  }\n  .pe-4 {\n    padding-inline-end: 1.5rem;\n  }\n  .pe-5 {\n    padding-inline-end: 3rem;\n  }\n  .pb--2 {\n    padding-block-end: -0.5rem;\n  }\n  .pb--1 {\n    padding-block-end: -0.25rem;\n  }\n  .pb-0 {\n    padding-block-end: 0;\n  }\n  .pb-1 {\n    padding-block-end: 0.25rem;\n  }\n  .pb-2 {\n    padding-block-end: 0.5rem;\n  }\n  .pb-3 {\n    padding-block-end: 1rem;\n  }\n  .pb-4 {\n    padding-block-end: 1.5rem;\n  }\n  .pb-5 {\n    padding-block-end: 3rem;\n  }\n  .ps--2 {\n    padding-inline-start: -0.5rem;\n  }\n  .ps--1 {\n    padding-inline-start: -0.25rem;\n  }\n  .ps-0 {\n    padding-inline-start: 0;\n  }\n  .ps-1 {\n    padding-inline-start: 0.25rem;\n  }\n  .ps-2 {\n    padding-inline-start: 0.5rem;\n  }\n  .ps-3 {\n    padding-inline-start: 1rem;\n  }\n  .ps-4 {\n    padding-inline-start: 1.5rem;\n  }\n  .ps-5 {\n    padding-inline-start: 3rem;\n  }\n  .gap--2 {\n    gap: -0.5rem;\n  }\n  .gap--1 {\n    gap: -0.25rem;\n  }\n  .gap-0 {\n    gap: 0;\n  }\n  .gap-1 {\n    gap: 0.25rem;\n  }\n  .gap-2 {\n    gap: 0.5rem;\n  }\n  .gap-3 {\n    gap: 1rem;\n  }\n  .gap-4 {\n    gap: 1.5rem;\n  }\n  .gap-5 {\n    gap: 3rem;\n  }\n  .row-gap--2 {\n    row-gap: -0.5rem;\n  }\n  .row-gap--1 {\n    row-gap: -0.25rem;\n  }\n  .row-gap-0 {\n    row-gap: 0;\n  }\n  .row-gap-1 {\n    row-gap: 0.25rem;\n  }\n  .row-gap-2 {\n    row-gap: 0.5rem;\n  }\n  .row-gap-3 {\n    row-gap: 1rem;\n  }\n  .row-gap-4 {\n    row-gap: 1.5rem;\n  }\n  .row-gap-5 {\n    row-gap: 3rem;\n  }\n  .column-gap--2 {\n    column-gap: -0.5rem;\n  }\n  .column-gap--1 {\n    column-gap: -0.25rem;\n  }\n  .column-gap-0 {\n    column-gap: 0;\n  }\n  .column-gap-1 {\n    column-gap: 0.25rem;\n  }\n  .column-gap-2 {\n    column-gap: 0.5rem;\n  }\n  .column-gap-3 {\n    column-gap: 1rem;\n  }\n  .column-gap-4 {\n    column-gap: 1.5rem;\n  }\n  .column-gap-5 {\n    column-gap: 3rem;\n  }\n  .font-monospace {\n    font-family: var(--font-mono);\n  }\n  .font-body {\n    font-family: var(--body-font-family);\n  }\n  .fs-xs {\n    font-size: var(--font-size-xs);\n  }\n  .fs-sm {\n    font-size: var(--font-size-sm);\n  }\n  .fs-md {\n    font-size: var(--font-size-md);\n  }\n  .fs-lg {\n    font-size: var(--font-size-lg);\n  }\n  .fs-xl {\n    font-size: var(--font-size-xl);\n  }\n  .fs-2xl {\n    font-size: var(--font-size-2xl);\n  }\n  .fs-3xl {\n    font-size: var(--font-size-3xl);\n  }\n  .fs-4xl {\n    font-size: var(--font-size-4xl);\n  }\n  .fs-5xl {\n    font-size: var(--font-size-5xl);\n  }\n  .fs-6xl {\n    font-size: var(--font-size-6xl);\n  }\n  .text-xs {\n    font-size: var(--font-size-xs);\n    line-height: var(--line-height-xs);\n  }\n  .text-sm {\n    font-size: var(--font-size-sm);\n    line-height: var(--line-height-sm);\n  }\n  .text-md {\n    font-size: var(--font-size-md);\n    line-height: var(--line-height-md);\n  }\n  .text-lg {\n    font-size: var(--font-size-lg);\n    line-height: var(--line-height-lg);\n  }\n  .text-xl {\n    font-size: var(--font-size-xl);\n    line-height: var(--line-height-xl);\n  }\n  .text-2xl {\n    font-size: var(--font-size-2xl);\n    line-height: var(--line-height-2xl);\n  }\n  .text-3xl {\n    font-size: var(--font-size-3xl);\n    line-height: var(--line-height-3xl);\n  }\n  .text-4xl {\n    font-size: var(--font-size-4xl);\n    line-height: var(--line-height-4xl);\n  }\n  .text-5xl {\n    font-size: var(--font-size-5xl);\n    line-height: var(--line-height-5xl);\n  }\n  .text-6xl {\n    font-size: var(--font-size-6xl);\n    line-height: var(--line-height-6xl);\n  }\n  .fst-italic {\n    font-style: italic;\n  }\n  .fst-normal {\n    font-style: normal;\n  }\n  .fw-lighter {\n    font-weight: lighter;\n  }\n  .fw-light {\n    font-weight: 300;\n  }\n  .fw-normal {\n    font-weight: 400;\n  }\n  .fw-medium {\n    font-weight: 500;\n  }\n  .fw-semibold {\n    font-weight: 600;\n  }\n  .fw-bold {\n    font-weight: 700;\n  }\n  .fw-bolder {\n    font-weight: bolder;\n  }\n  .lh-1 {\n    line-height: 1;\n  }\n  .lh-sm {\n    line-height: 1.25;\n  }\n  .lh-base {\n    line-height: 1.5;\n  }\n  .lh-lg {\n    line-height: 2;\n  }\n  .text-start {\n    text-align: start;\n  }\n  .text-end {\n    text-align: end;\n  }\n  .text-center {\n    text-align: center;\n  }\n  .text-decoration-none {\n    text-decoration: none;\n  }\n  .text-decoration-underline {\n    text-decoration: underline;\n  }\n  .text-decoration-line-through {\n    text-decoration: line-through;\n  }\n  .text-lowercase {\n    text-transform: lowercase;\n  }\n  .text-uppercase {\n    text-transform: uppercase;\n  }\n  .text-capitalize {\n    text-transform: capitalize;\n  }\n  .text-wrap {\n    white-space: wrap;\n  }\n  .text-nowrap {\n    white-space: nowrap;\n  }\n  .text-balance {\n    white-space: balance;\n  }\n  .text-pretty {\n    white-space: pretty;\n  }\n  .text-break {\n    word-wrap: break-word;\n    word-break: break-word;\n  }\n  .fg-primary {\n    --fg: light-dark(var(--blue-600), var(--blue-400));\n    color: var(--fg);\n  }\n  .fg-accent {\n    --fg: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n    color: var(--fg);\n  }\n  .fg-success {\n    --fg: light-dark(var(--green-600), var(--green-400));\n    color: var(--fg);\n  }\n  .fg-danger {\n    --fg: light-dark(var(--red-600), var(--red-400));\n    color: var(--fg);\n  }\n  .fg-warning {\n    --fg: light-dark(var(--yellow-700), var(--yellow-400));\n    color: var(--fg);\n  }\n  .fg-info {\n    --fg: light-dark(var(--cyan-600), var(--cyan-400));\n    color: var(--fg);\n  }\n  .fg-inverse {\n    --fg: light-dark(var(--gray-900), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-secondary {\n    --fg: light-dark(var(--gray-600), var(--gray-400));\n    color: var(--fg);\n  }\n  .fg-body {\n    --fg: light-dark(var(--gray-900), var(--gray-050));\n    color: var(--fg);\n  }\n  .fg-1 {\n    --fg: light-dark(var(--gray-800), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-2 {\n    --fg: light-dark(var(--gray-700), var(--gray-300));\n    color: var(--fg);\n  }\n  .fg-3 {\n    --fg: light-dark(var(--gray-600), var(--gray-500));\n    color: var(--fg);\n  }\n  .fg-4 {\n    --fg: light-dark(var(--gray-500), var(--gray-600));\n    color: var(--fg);\n  }\n  .fg-white {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-black {\n    --fg: var(--black);\n    color: var(--fg);\n  }\n  .fg-inherit {\n    --fg: inherit;\n    color: var(--fg);\n  }\n  .fg-emphasis-primary {\n    --fg: light-dark(var(--blue-800), var(--blue-200));\n    color: var(--fg);\n  }\n  .fg-emphasis-accent {\n    --fg: light-dark(var(--indigo-800), var(--indigo-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-success {\n    --fg: light-dark(var(--green-800), var(--green-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-danger {\n    --fg: light-dark(var(--red-800), var(--red-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-warning {\n    --fg: light-dark(var(--yellow-800), var(--yellow-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-info {\n    --fg: light-dark(var(--cyan-800), var(--cyan-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-inverse {\n    --fg: light-dark(var(--gray-975), var(--white));\n    color: var(--fg);\n  }\n  .fg-emphasis-secondary {\n    --fg: light-dark(var(--gray-800), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-contrast-primary {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-accent {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-success {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-danger {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-warning {\n    --fg: var(--gray-900);\n    color: var(--fg);\n  }\n  .fg-contrast-info {\n    --fg: var(--gray-900);\n    color: var(--fg);\n  }\n  .fg-contrast-inverse {\n    --fg: light-dark(var(--white), var(--gray-900));\n    color: var(--fg);\n  }\n  .fg-contrast-secondary {\n    --fg: light-dark(var(--gray-900), var(--white));\n    color: var(--fg);\n  }\n  .fg-10 {\n    color: color-mix(in oklch, var(--fg) 10%, transparent);\n  }\n  .fg-20 {\n    color: color-mix(in oklch, var(--fg) 20%, transparent);\n  }\n  .fg-30 {\n    color: color-mix(in oklch, var(--fg) 30%, transparent);\n  }\n  .fg-40 {\n    color: color-mix(in oklch, var(--fg) 40%, transparent);\n  }\n  .fg-50 {\n    color: color-mix(in oklch, var(--fg) 50%, transparent);\n  }\n  .fg-60 {\n    color: color-mix(in oklch, var(--fg) 60%, transparent);\n  }\n  .fg-70 {\n    color: color-mix(in oklch, var(--fg) 70%, transparent);\n  }\n  .fg-80 {\n    color: color-mix(in oklch, var(--fg) 80%, transparent);\n  }\n  .fg-90 {\n    color: color-mix(in oklch, var(--fg) 90%, transparent);\n  }\n  .fg-100 {\n    color: var(--fg);\n  }\n  .link-10 {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .link-10-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .link-20 {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .link-20-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .link-30 {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .link-30-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .link-40 {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .link-40-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .link-50 {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .link-50-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .link-60 {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .link-60-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .link-70 {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .link-70-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .link-80 {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .link-80-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .link-90 {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-90-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-100 {\n    color: var(--link-color);\n  }\n  .link-100-hover:hover {\n    color: var(--link-color);\n  }\n  .underline-offset-1 {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-1-hover:hover {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-2 {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-2-hover:hover {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-3 {\n    text-underline-offset: 0.375em;\n  }\n  .underline-offset-3-hover:hover {\n    text-underline-offset: 0.375em;\n  }\n  .underline-primary {\n    text-decoration-color: light-dark(var(--blue-600), var(--blue-400));\n  }\n  .underline-accent {\n    text-decoration-color: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  }\n  .underline-success {\n    text-decoration-color: light-dark(var(--green-600), var(--green-400));\n  }\n  .underline-danger {\n    text-decoration-color: light-dark(var(--red-600), var(--red-400));\n  }\n  .underline-warning {\n    text-decoration-color: light-dark(var(--yellow-700), var(--yellow-400));\n  }\n  .underline-info {\n    text-decoration-color: light-dark(var(--cyan-600), var(--cyan-400));\n  }\n  .underline-inverse {\n    text-decoration-color: light-dark(var(--gray-900), var(--gray-200));\n  }\n  .underline-secondary {\n    text-decoration-color: light-dark(var(--gray-600), var(--gray-400));\n  }\n  .underline-10 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .underline-10-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .underline-20 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .underline-20-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .underline-30 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .underline-30-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .underline-40 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .underline-40-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .underline-50 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .underline-50-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .underline-60 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .underline-60-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .underline-70 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .underline-70-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .underline-80 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .underline-80-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .underline-90 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .underline-90-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .underline-100 {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-100-hover:hover {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-thickness-1 {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-1-hover:hover {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-2 {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-2-hover:hover {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-3 {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-3-hover:hover {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-4 {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-4-hover:hover {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-5 {\n    text-decoration-thickness: 5px;\n  }\n  .underline-thickness-5-hover:hover {\n    text-decoration-thickness: 5px;\n  }\n  .bg-primary {\n    --bg: var(--blue-500);\n    background-color: var(--bg);\n  }\n  .bg-accent {\n    --bg: var(--indigo-500);\n    background-color: var(--bg);\n  }\n  .bg-success {\n    --bg: var(--green-500);\n    background-color: var(--bg);\n  }\n  .bg-danger {\n    --bg: var(--red-500);\n    background-color: var(--bg);\n  }\n  .bg-warning {\n    --bg: var(--yellow-500);\n    background-color: var(--bg);\n  }\n  .bg-info {\n    --bg: var(--cyan-500);\n    background-color: var(--bg);\n  }\n  .bg-inverse {\n    --bg: light-dark(var(--gray-900), var(--gray-025));\n    background-color: var(--bg);\n  }\n  .bg-secondary {\n    --bg: light-dark(var(--gray-100), var(--gray-600));\n    background-color: var(--bg);\n  }\n  .bg-body {\n    --bg: light-dark(var(--white), var(--gray-975));\n    background-color: var(--bg);\n  }\n  .bg-1 {\n    --bg: light-dark(var(--gray-025), var(--gray-950));\n    background-color: var(--bg);\n  }\n  .bg-2 {\n    --bg: light-dark(var(--gray-050), var(--gray-900));\n    background-color: var(--bg);\n  }\n  .bg-3 {\n    --bg: light-dark(var(--gray-100), var(--gray-800));\n    background-color: var(--bg);\n  }\n  .bg-4 {\n    --bg: light-dark(var(--gray-200), var(--gray-700));\n    background-color: var(--bg);\n  }\n  .bg-white {\n    --bg: var(--white);\n    background-color: var(--bg);\n  }\n  .bg-black {\n    --bg: var(--black);\n    background-color: var(--bg);\n  }\n  .bg-transparent {\n    --bg: transparent;\n    background-color: var(--bg);\n  }\n  .bg-inherit {\n    --bg: inherit;\n    background-color: var(--bg);\n  }\n  .bg-subtle-primary {\n    --bg: light-dark(var(--blue-100), var(--blue-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-accent {\n    --bg: light-dark(var(--indigo-100), var(--indigo-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-success {\n    --bg: light-dark(var(--green-100), var(--green-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-danger {\n    --bg: light-dark(var(--red-100), var(--red-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-warning {\n    --bg: light-dark(var(--yellow-100), var(--yellow-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-info {\n    --bg: light-dark(var(--cyan-100), var(--cyan-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-inverse {\n    --bg: light-dark(var(--gray-100), var(--gray-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-secondary {\n    --bg: light-dark(var(--gray-050), var(--gray-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-primary {\n    --bg: light-dark(var(--blue-200), var(--blue-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-accent {\n    --bg: light-dark(var(--indigo-200), var(--indigo-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-success {\n    --bg: light-dark(var(--green-200), var(--green-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-danger {\n    --bg: light-dark(var(--red-200), var(--red-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-warning {\n    --bg: light-dark(var(--yellow-200), var(--yellow-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-info {\n    --bg: light-dark(var(--cyan-200), var(--cyan-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-inverse {\n    --bg: light-dark(var(--gray-200), var(--gray-300));\n    background-color: var(--bg);\n  }\n  .bg-muted-secondary {\n    --bg: light-dark(var(--gray-100), var(--gray-700));\n    background-color: var(--bg);\n  }\n  .bg-10 {\n    background-color: color-mix(in oklch, var(--bg) 10%, transparent);\n  }\n  .bg-20 {\n    background-color: color-mix(in oklch, var(--bg) 20%, transparent);\n  }\n  .bg-30 {\n    background-color: color-mix(in oklch, var(--bg) 30%, transparent);\n  }\n  .bg-40 {\n    background-color: color-mix(in oklch, var(--bg) 40%, transparent);\n  }\n  .bg-50 {\n    background-color: color-mix(in oklch, var(--bg) 50%, transparent);\n  }\n  .bg-60 {\n    background-color: color-mix(in oklch, var(--bg) 60%, transparent);\n  }\n  .bg-70 {\n    background-color: color-mix(in oklch, var(--bg) 70%, transparent);\n  }\n  .bg-80 {\n    background-color: color-mix(in oklch, var(--bg) 80%, transparent);\n  }\n  .bg-90 {\n    background-color: color-mix(in oklch, var(--bg) 90%, transparent);\n  }\n  .bg-100 {\n    background-color: var(--bg);\n  }\n  .theme-contrast {\n    background-color: var(--theme-bg);\n    color: var(--theme-contrast);\n  }\n  .theme-subtle {\n    background-color: var(--theme-bg-subtle);\n    color: var(--theme-text);\n  }\n  .theme-muted {\n    background-color: var(--theme-bg-muted);\n    color: var(--theme-text-emphasis);\n  }\n  .theme-border {\n    border: var(--border-width) solid var(--theme-border);\n  }\n  .bg-gradient {\n    background-image: var(--gradient);\n  }\n  .user-select-all {\n    user-select: all;\n  }\n  .user-select-auto {\n    user-select: auto;\n  }\n  .user-select-none {\n    user-select: none;\n  }\n  .pe-none {\n    pointer-events: none;\n  }\n  .pe-auto {\n    pointer-events: auto;\n  }\n  .rounded {\n    border-radius: var(--border-radius);\n  }\n  .rounded-0 {\n    border-radius: 0;\n  }\n  .rounded-1 {\n    border-radius: var(--border-radius-sm);\n  }\n  .rounded-2 {\n    border-radius: var(--border-radius);\n  }\n  .rounded-3 {\n    border-radius: var(--border-radius-lg);\n  }\n  .rounded-4 {\n    border-radius: var(--border-radius-xl);\n  }\n  .rounded-5 {\n    border-radius: var(--border-radius-2xl);\n  }\n  .rounded-circle {\n    border-radius: 50%;\n  }\n  .rounded-pill {\n    border-radius: var(--border-radius-pill);\n  }\n  .rounded-top {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-top-0 {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .rounded-top-1 {\n    border-start-start-radius: var(--border-radius-sm);\n    border-start-end-radius: var(--border-radius-sm);\n  }\n  .rounded-top-2 {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-top-3 {\n    border-start-start-radius: var(--border-radius-lg);\n    border-start-end-radius: var(--border-radius-lg);\n  }\n  .rounded-top-4 {\n    border-start-start-radius: var(--border-radius-xl);\n    border-start-end-radius: var(--border-radius-xl);\n  }\n  .rounded-top-5 {\n    border-start-start-radius: var(--border-radius-2xl);\n    border-start-end-radius: var(--border-radius-2xl);\n  }\n  .rounded-top-circle {\n    border-start-start-radius: 50%;\n    border-start-end-radius: 50%;\n  }\n  .rounded-top-pill {\n    border-start-start-radius: var(--border-radius-pill);\n    border-start-end-radius: var(--border-radius-pill);\n  }\n  .rounded-end {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-end-0 {\n    border-end-end-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-end-1 {\n    border-end-end-radius: var(--border-radius-sm);\n    border-end-start-radius: var(--border-radius-sm);\n  }\n  .rounded-end-2 {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-end-3 {\n    border-end-end-radius: var(--border-radius-lg);\n    border-end-start-radius: var(--border-radius-lg);\n  }\n  .rounded-end-4 {\n    border-end-end-radius: var(--border-radius-xl);\n    border-end-start-radius: var(--border-radius-xl);\n  }\n  .rounded-end-5 {\n    border-end-end-radius: var(--border-radius-2xl);\n    border-end-start-radius: var(--border-radius-2xl);\n  }\n  .rounded-end-circle {\n    border-end-end-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-end-pill {\n    border-end-end-radius: var(--border-radius-pill);\n    border-end-start-radius: var(--border-radius-pill);\n  }\n  .rounded-bottom {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-bottom-0 {\n    border-end-end-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-bottom-1 {\n    border-end-end-radius: var(--border-radius-sm);\n    border-end-start-radius: var(--border-radius-sm);\n  }\n  .rounded-bottom-2 {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-bottom-3 {\n    border-end-end-radius: var(--border-radius-lg);\n    border-end-start-radius: var(--border-radius-lg);\n  }\n  .rounded-bottom-4 {\n    border-end-end-radius: var(--border-radius-xl);\n    border-end-start-radius: var(--border-radius-xl);\n  }\n  .rounded-bottom-5 {\n    border-end-end-radius: var(--border-radius-2xl);\n    border-end-start-radius: var(--border-radius-2xl);\n  }\n  .rounded-bottom-circle {\n    border-end-end-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-bottom-pill {\n    border-end-end-radius: var(--border-radius-pill);\n    border-end-start-radius: var(--border-radius-pill);\n  }\n  .rounded-start {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-start-0 {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .rounded-start-1 {\n    border-start-start-radius: var(--border-radius-sm);\n    border-start-end-radius: var(--border-radius-sm);\n  }\n  .rounded-start-2 {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-start-3 {\n    border-start-start-radius: var(--border-radius-lg);\n    border-start-end-radius: var(--border-radius-lg);\n  }\n  .rounded-start-4 {\n    border-start-start-radius: var(--border-radius-xl);\n    border-start-end-radius: var(--border-radius-xl);\n  }\n  .rounded-start-5 {\n    border-start-start-radius: var(--border-radius-2xl);\n    border-start-end-radius: var(--border-radius-2xl);\n  }\n  .rounded-start-circle {\n    border-start-start-radius: 50%;\n    border-start-end-radius: 50%;\n  }\n  .rounded-start-pill {\n    border-start-start-radius: var(--border-radius-pill);\n    border-start-end-radius: var(--border-radius-pill);\n  }\n  .visible {\n    visibility: visible;\n  }\n  .invisible {\n    visibility: hidden;\n  }\n  .z-n1 {\n    z-index: -1;\n  }\n  .z-0 {\n    z-index: 0;\n  }\n  .z-1 {\n    z-index: 1;\n  }\n  .z-2 {\n    z-index: 2;\n  }\n  .z-3 {\n    z-index: 3;\n  }\n  @media (width >= 576px) {\n    .float-sm-start {\n      float: inline-start;\n    }\n    .float-sm-end {\n      float: inline-end;\n    }\n    .float-sm-none {\n      float: none;\n    }\n    .object-fit-sm-contain {\n      object-fit: contain;\n    }\n    .object-fit-sm-cover {\n      object-fit: cover;\n    }\n    .object-fit-sm-fill {\n      object-fit: fill;\n    }\n    .object-fit-sm-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-sm-none {\n      object-fit: none;\n    }\n    .d-sm-inline {\n      display: inline;\n    }\n    .d-sm-inline-block {\n      display: inline-block;\n    }\n    .d-sm-block {\n      display: block;\n    }\n    .d-sm-grid {\n      display: grid;\n    }\n    .d-sm-inline-grid {\n      display: inline-grid;\n    }\n    .d-sm-table {\n      display: table;\n    }\n    .d-sm-table-row {\n      display: table-row;\n    }\n    .d-sm-table-cell {\n      display: table-cell;\n    }\n    .d-sm-flex {\n      display: flex;\n    }\n    .d-sm-inline-flex {\n      display: inline-flex;\n    }\n    .d-sm-contents {\n      display: contents;\n    }\n    .d-sm-flow-root {\n      display: flow-root;\n    }\n    .d-sm-none {\n      display: none;\n    }\n    .flex-sm-fill {\n      flex: 1 1 auto;\n    }\n    .flex-sm-row {\n      flex-direction: row;\n    }\n    .flex-sm-column {\n      flex-direction: column;\n    }\n    .flex-sm-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-sm-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-sm-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-sm-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-sm-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-sm-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-sm-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-sm-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-sm-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-sm-start {\n      justify-content: flex-start;\n    }\n    .justify-content-sm-end {\n      justify-content: flex-end;\n    }\n    .justify-content-sm-center {\n      justify-content: center;\n    }\n    .justify-content-sm-between {\n      justify-content: space-between;\n    }\n    .justify-content-sm-around {\n      justify-content: space-around;\n    }\n    .justify-content-sm-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-sm-start {\n      justify-items: start;\n    }\n    .justify-items-sm-end {\n      justify-items: end;\n    }\n    .justify-items-sm-center {\n      justify-items: center;\n    }\n    .justify-items-sm-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-sm-start {\n      justify-self: flex-start;\n    }\n    .justify-self-sm-end {\n      justify-self: flex-end;\n    }\n    .justify-self-sm-center {\n      justify-self: center;\n    }\n    .align-items-sm-start {\n      align-items: flex-start;\n    }\n    .align-items-sm-end {\n      align-items: flex-end;\n    }\n    .align-items-sm-center {\n      align-items: center;\n    }\n    .align-items-sm-baseline {\n      align-items: baseline;\n    }\n    .align-items-sm-stretch {\n      align-items: stretch;\n    }\n    .align-content-sm-start {\n      align-content: flex-start;\n    }\n    .align-content-sm-end {\n      align-content: flex-end;\n    }\n    .align-content-sm-center {\n      align-content: center;\n    }\n    .align-content-sm-between {\n      align-content: space-between;\n    }\n    .align-content-sm-around {\n      align-content: space-around;\n    }\n    .align-content-sm-stretch {\n      align-content: stretch;\n    }\n    .align-self-sm-auto {\n      align-self: auto;\n    }\n    .align-self-sm-start {\n      align-self: flex-start;\n    }\n    .align-self-sm-end {\n      align-self: flex-end;\n    }\n    .align-self-sm-center {\n      align-self: center;\n    }\n    .align-self-sm-baseline {\n      align-self: baseline;\n    }\n    .align-self-sm-stretch {\n      align-self: stretch;\n    }\n    .place-items-sm-start {\n      place-items: start;\n    }\n    .place-items-sm-end {\n      place-items: end;\n    }\n    .place-items-sm-center {\n      place-items: center;\n    }\n    .place-items-sm-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-sm-3 {\n      --columns: 3;\n    }\n    .grid-cols-sm-4 {\n      --columns: 4;\n    }\n    .grid-cols-sm-6 {\n      --columns: 6;\n    }\n    .grid-cols-sm-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-sm-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-sm-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-sm-dense {\n      grid-auto-flow: dense;\n    }\n    .order-sm-first {\n      order: -1;\n    }\n    .order-sm-0 {\n      order: 0;\n    }\n    .order-sm-1 {\n      order: 1;\n    }\n    .order-sm-2 {\n      order: 2;\n    }\n    .order-sm-3 {\n      order: 3;\n    }\n    .order-sm-4 {\n      order: 4;\n    }\n    .order-sm-5 {\n      order: 5;\n    }\n    .order-sm-last {\n      order: 6;\n    }\n    .m-sm--2 {\n      margin: -0.5rem;\n    }\n    .m-sm--1 {\n      margin: -0.25rem;\n    }\n    .m-sm-0 {\n      margin: 0;\n    }\n    .m-sm-1 {\n      margin: 0.25rem;\n    }\n    .m-sm-2 {\n      margin: 0.5rem;\n    }\n    .m-sm-3 {\n      margin: 1rem;\n    }\n    .m-sm-4 {\n      margin: 1.5rem;\n    }\n    .m-sm-5 {\n      margin: 3rem;\n    }\n    .m-sm-auto {\n      margin: auto;\n    }\n    .mx-sm--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-sm--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-sm-0 {\n      margin-inline: 0;\n    }\n    .mx-sm-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-sm-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-sm-3 {\n      margin-inline: 1rem;\n    }\n    .mx-sm-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-sm-5 {\n      margin-inline: 3rem;\n    }\n    .mx-sm-auto {\n      margin-inline: auto;\n    }\n    .my-sm--2 {\n      margin-block: -0.5rem;\n    }\n    .my-sm--1 {\n      margin-block: -0.25rem;\n    }\n    .my-sm-0 {\n      margin-block: 0;\n    }\n    .my-sm-1 {\n      margin-block: 0.25rem;\n    }\n    .my-sm-2 {\n      margin-block: 0.5rem;\n    }\n    .my-sm-3 {\n      margin-block: 1rem;\n    }\n    .my-sm-4 {\n      margin-block: 1.5rem;\n    }\n    .my-sm-5 {\n      margin-block: 3rem;\n    }\n    .my-sm-auto {\n      margin-block: auto;\n    }\n    .mt-sm--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-sm--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-sm-0 {\n      margin-block-start: 0;\n    }\n    .mt-sm-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-sm-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-sm-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-sm-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-sm-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-sm-auto {\n      margin-block-start: auto;\n    }\n    .me-sm--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-sm--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-sm-0 {\n      margin-inline-end: 0;\n    }\n    .me-sm-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-sm-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-sm-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-sm-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-sm-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-sm-auto {\n      margin-inline-end: auto;\n    }\n    .mb-sm--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-sm--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-sm-0 {\n      margin-block-end: 0;\n    }\n    .mb-sm-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-sm-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-sm-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-sm-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-sm-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-sm-auto {\n      margin-block-end: auto;\n    }\n    .ms-sm--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-sm--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-sm-0 {\n      margin-inline-start: 0;\n    }\n    .ms-sm-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-sm-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-sm-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-sm-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-sm-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-sm-auto {\n      margin-inline-start: auto;\n    }\n    .p-sm--2 {\n      padding: -0.5rem;\n    }\n    .p-sm--1 {\n      padding: -0.25rem;\n    }\n    .p-sm-0 {\n      padding: 0;\n    }\n    .p-sm-1 {\n      padding: 0.25rem;\n    }\n    .p-sm-2 {\n      padding: 0.5rem;\n    }\n    .p-sm-3 {\n      padding: 1rem;\n    }\n    .p-sm-4 {\n      padding: 1.5rem;\n    }\n    .p-sm-5 {\n      padding: 3rem;\n    }\n    .px-sm--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-sm--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-sm-0 {\n      padding-inline: 0;\n    }\n    .px-sm-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-sm-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-sm-3 {\n      padding-inline: 1rem;\n    }\n    .px-sm-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-sm-5 {\n      padding-inline: 3rem;\n    }\n    .py-sm--2 {\n      padding-block: -0.5rem;\n    }\n    .py-sm--1 {\n      padding-block: -0.25rem;\n    }\n    .py-sm-0 {\n      padding-block: 0;\n    }\n    .py-sm-1 {\n      padding-block: 0.25rem;\n    }\n    .py-sm-2 {\n      padding-block: 0.5rem;\n    }\n    .py-sm-3 {\n      padding-block: 1rem;\n    }\n    .py-sm-4 {\n      padding-block: 1.5rem;\n    }\n    .py-sm-5 {\n      padding-block: 3rem;\n    }\n    .pt-sm--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-sm--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-sm-0 {\n      padding-block-start: 0;\n    }\n    .pt-sm-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-sm-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-sm-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-sm-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-sm-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-sm--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-sm--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-sm-0 {\n      padding-inline-end: 0;\n    }\n    .pe-sm-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-sm-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-sm-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-sm-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-sm-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-sm--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-sm--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-sm-0 {\n      padding-block-end: 0;\n    }\n    .pb-sm-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-sm-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-sm-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-sm-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-sm-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-sm--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-sm--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-sm-0 {\n      padding-inline-start: 0;\n    }\n    .ps-sm-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-sm-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-sm-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-sm-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-sm-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-sm--2 {\n      gap: -0.5rem;\n    }\n    .gap-sm--1 {\n      gap: -0.25rem;\n    }\n    .gap-sm-0 {\n      gap: 0;\n    }\n    .gap-sm-1 {\n      gap: 0.25rem;\n    }\n    .gap-sm-2 {\n      gap: 0.5rem;\n    }\n    .gap-sm-3 {\n      gap: 1rem;\n    }\n    .gap-sm-4 {\n      gap: 1.5rem;\n    }\n    .gap-sm-5 {\n      gap: 3rem;\n    }\n    .row-gap-sm--2 {\n      row-gap: -0.5rem;\n    }\n    .row-gap-sm--1 {\n      row-gap: -0.25rem;\n    }\n    .row-gap-sm-0 {\n      row-gap: 0;\n    }\n    .row-gap-sm-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-sm-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-sm-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-sm-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-sm-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-sm--2 {\n      column-gap: -0.5rem;\n    }\n    .column-gap-sm--1 {\n      column-gap: -0.25rem;\n    }\n    .column-gap-sm-0 {\n      column-gap: 0;\n    }\n    .column-gap-sm-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-sm-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-sm-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-sm-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-sm-5 {\n      column-gap: 3rem;\n    }\n    .text-sm-start {\n      text-align: start;\n    }\n    .text-sm-end {\n      text-align: end;\n    }\n    .text-sm-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 768px) {\n    .float-md-start {\n      float: inline-start;\n    }\n    .float-md-end {\n      float: inline-end;\n    }\n    .float-md-none {\n      float: none;\n    }\n    .object-fit-md-contain {\n      object-fit: contain;\n    }\n    .object-fit-md-cover {\n      object-fit: cover;\n    }\n    .object-fit-md-fill {\n      object-fit: fill;\n    }\n    .object-fit-md-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-md-none {\n      object-fit: none;\n    }\n    .d-md-inline {\n      display: inline;\n    }\n    .d-md-inline-block {\n      display: inline-block;\n    }\n    .d-md-block {\n      display: block;\n    }\n    .d-md-grid {\n      display: grid;\n    }\n    .d-md-inline-grid {\n      display: inline-grid;\n    }\n    .d-md-table {\n      display: table;\n    }\n    .d-md-table-row {\n      display: table-row;\n    }\n    .d-md-table-cell {\n      display: table-cell;\n    }\n    .d-md-flex {\n      display: flex;\n    }\n    .d-md-inline-flex {\n      display: inline-flex;\n    }\n    .d-md-contents {\n      display: contents;\n    }\n    .d-md-flow-root {\n      display: flow-root;\n    }\n    .d-md-none {\n      display: none;\n    }\n    .flex-md-fill {\n      flex: 1 1 auto;\n    }\n    .flex-md-row {\n      flex-direction: row;\n    }\n    .flex-md-column {\n      flex-direction: column;\n    }\n    .flex-md-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-md-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-md-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-md-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-md-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-md-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-md-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-md-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-md-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-md-start {\n      justify-content: flex-start;\n    }\n    .justify-content-md-end {\n      justify-content: flex-end;\n    }\n    .justify-content-md-center {\n      justify-content: center;\n    }\n    .justify-content-md-between {\n      justify-content: space-between;\n    }\n    .justify-content-md-around {\n      justify-content: space-around;\n    }\n    .justify-content-md-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-md-start {\n      justify-items: start;\n    }\n    .justify-items-md-end {\n      justify-items: end;\n    }\n    .justify-items-md-center {\n      justify-items: center;\n    }\n    .justify-items-md-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-md-start {\n      justify-self: flex-start;\n    }\n    .justify-self-md-end {\n      justify-self: flex-end;\n    }\n    .justify-self-md-center {\n      justify-self: center;\n    }\n    .align-items-md-start {\n      align-items: flex-start;\n    }\n    .align-items-md-end {\n      align-items: flex-end;\n    }\n    .align-items-md-center {\n      align-items: center;\n    }\n    .align-items-md-baseline {\n      align-items: baseline;\n    }\n    .align-items-md-stretch {\n      align-items: stretch;\n    }\n    .align-content-md-start {\n      align-content: flex-start;\n    }\n    .align-content-md-end {\n      align-content: flex-end;\n    }\n    .align-content-md-center {\n      align-content: center;\n    }\n    .align-content-md-between {\n      align-content: space-between;\n    }\n    .align-content-md-around {\n      align-content: space-around;\n    }\n    .align-content-md-stretch {\n      align-content: stretch;\n    }\n    .align-self-md-auto {\n      align-self: auto;\n    }\n    .align-self-md-start {\n      align-self: flex-start;\n    }\n    .align-self-md-end {\n      align-self: flex-end;\n    }\n    .align-self-md-center {\n      align-self: center;\n    }\n    .align-self-md-baseline {\n      align-self: baseline;\n    }\n    .align-self-md-stretch {\n      align-self: stretch;\n    }\n    .place-items-md-start {\n      place-items: start;\n    }\n    .place-items-md-end {\n      place-items: end;\n    }\n    .place-items-md-center {\n      place-items: center;\n    }\n    .place-items-md-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-md-3 {\n      --columns: 3;\n    }\n    .grid-cols-md-4 {\n      --columns: 4;\n    }\n    .grid-cols-md-6 {\n      --columns: 6;\n    }\n    .grid-cols-md-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-md-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-md-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-md-dense {\n      grid-auto-flow: dense;\n    }\n    .order-md-first {\n      order: -1;\n    }\n    .order-md-0 {\n      order: 0;\n    }\n    .order-md-1 {\n      order: 1;\n    }\n    .order-md-2 {\n      order: 2;\n    }\n    .order-md-3 {\n      order: 3;\n    }\n    .order-md-4 {\n      order: 4;\n    }\n    .order-md-5 {\n      order: 5;\n    }\n    .order-md-last {\n      order: 6;\n    }\n    .m-md--2 {\n      margin: -0.5rem;\n    }\n    .m-md--1 {\n      margin: -0.25rem;\n    }\n    .m-md-0 {\n      margin: 0;\n    }\n    .m-md-1 {\n      margin: 0.25rem;\n    }\n    .m-md-2 {\n      margin: 0.5rem;\n    }\n    .m-md-3 {\n      margin: 1rem;\n    }\n    .m-md-4 {\n      margin: 1.5rem;\n    }\n    .m-md-5 {\n      margin: 3rem;\n    }\n    .m-md-auto {\n      margin: auto;\n    }\n    .mx-md--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-md--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-md-0 {\n      margin-inline: 0;\n    }\n    .mx-md-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-md-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-md-3 {\n      margin-inline: 1rem;\n    }\n    .mx-md-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-md-5 {\n      margin-inline: 3rem;\n    }\n    .mx-md-auto {\n      margin-inline: auto;\n    }\n    .my-md--2 {\n      margin-block: -0.5rem;\n    }\n    .my-md--1 {\n      margin-block: -0.25rem;\n    }\n    .my-md-0 {\n      margin-block: 0;\n    }\n    .my-md-1 {\n      margin-block: 0.25rem;\n    }\n    .my-md-2 {\n      margin-block: 0.5rem;\n    }\n    .my-md-3 {\n      margin-block: 1rem;\n    }\n    .my-md-4 {\n      margin-block: 1.5rem;\n    }\n    .my-md-5 {\n      margin-block: 3rem;\n    }\n    .my-md-auto {\n      margin-block: auto;\n    }\n    .mt-md--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-md--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-md-0 {\n      margin-block-start: 0;\n    }\n    .mt-md-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-md-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-md-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-md-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-md-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-md-auto {\n      margin-block-start: auto;\n    }\n    .me-md--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-md--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-md-0 {\n      margin-inline-end: 0;\n    }\n    .me-md-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-md-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-md-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-md-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-md-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-md-auto {\n      margin-inline-end: auto;\n    }\n    .mb-md--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-md--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-md-0 {\n      margin-block-end: 0;\n    }\n    .mb-md-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-md-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-md-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-md-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-md-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-md-auto {\n      margin-block-end: auto;\n    }\n    .ms-md--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-md--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-md-0 {\n      margin-inline-start: 0;\n    }\n    .ms-md-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-md-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-md-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-md-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-md-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-md-auto {\n      margin-inline-start: auto;\n    }\n    .p-md--2 {\n      padding: -0.5rem;\n    }\n    .p-md--1 {\n      padding: -0.25rem;\n    }\n    .p-md-0 {\n      padding: 0;\n    }\n    .p-md-1 {\n      padding: 0.25rem;\n    }\n    .p-md-2 {\n      padding: 0.5rem;\n    }\n    .p-md-3 {\n      padding: 1rem;\n    }\n    .p-md-4 {\n      padding: 1.5rem;\n    }\n    .p-md-5 {\n      padding: 3rem;\n    }\n    .px-md--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-md--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-md-0 {\n      padding-inline: 0;\n    }\n    .px-md-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-md-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-md-3 {\n      padding-inline: 1rem;\n    }\n    .px-md-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-md-5 {\n      padding-inline: 3rem;\n    }\n    .py-md--2 {\n      padding-block: -0.5rem;\n    }\n    .py-md--1 {\n      padding-block: -0.25rem;\n    }\n    .py-md-0 {\n      padding-block: 0;\n    }\n    .py-md-1 {\n      padding-block: 0.25rem;\n    }\n    .py-md-2 {\n      padding-block: 0.5rem;\n    }\n    .py-md-3 {\n      padding-block: 1rem;\n    }\n    .py-md-4 {\n      padding-block: 1.5rem;\n    }\n    .py-md-5 {\n      padding-block: 3rem;\n    }\n    .pt-md--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-md--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-md-0 {\n      padding-block-start: 0;\n    }\n    .pt-md-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-md-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-md-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-md-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-md-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-md--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-md--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-md-0 {\n      padding-inline-end: 0;\n    }\n    .pe-md-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-md-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-md-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-md-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-md-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-md--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-md--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-md-0 {\n      padding-block-end: 0;\n    }\n    .pb-md-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-md-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-md-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-md-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-md-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-md--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-md--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-md-0 {\n      padding-inline-start: 0;\n    }\n    .ps-md-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-md-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-md-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-md-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-md-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-md--2 {\n      gap: -0.5rem;\n    }\n    .gap-md--1 {\n      gap: -0.25rem;\n    }\n    .gap-md-0 {\n      gap: 0;\n    }\n    .gap-md-1 {\n      gap: 0.25rem;\n    }\n    .gap-md-2 {\n      gap: 0.5rem;\n    }\n    .gap-md-3 {\n      gap: 1rem;\n    }\n    .gap-md-4 {\n      gap: 1.5rem;\n    }\n    .gap-md-5 {\n      gap: 3rem;\n    }\n    .row-gap-md--2 {\n      row-gap: -0.5rem;\n    }\n    .row-gap-md--1 {\n      row-gap: -0.25rem;\n    }\n    .row-gap-md-0 {\n      row-gap: 0;\n    }\n    .row-gap-md-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-md-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-md-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-md-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-md-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-md--2 {\n      column-gap: -0.5rem;\n    }\n    .column-gap-md--1 {\n      column-gap: -0.25rem;\n    }\n    .column-gap-md-0 {\n      column-gap: 0;\n    }\n    .column-gap-md-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-md-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-md-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-md-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-md-5 {\n      column-gap: 3rem;\n    }\n    .text-md-start {\n      text-align: start;\n    }\n    .text-md-end {\n      text-align: end;\n    }\n    .text-md-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1024px) {\n    .float-lg-start {\n      float: inline-start;\n    }\n    .float-lg-end {\n      float: inline-end;\n    }\n    .float-lg-none {\n      float: none;\n    }\n    .object-fit-lg-contain {\n      object-fit: contain;\n    }\n    .object-fit-lg-cover {\n      object-fit: cover;\n    }\n    .object-fit-lg-fill {\n      object-fit: fill;\n    }\n    .object-fit-lg-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-lg-none {\n      object-fit: none;\n    }\n    .d-lg-inline {\n      display: inline;\n    }\n    .d-lg-inline-block {\n      display: inline-block;\n    }\n    .d-lg-block {\n      display: block;\n    }\n    .d-lg-grid {\n      display: grid;\n    }\n    .d-lg-inline-grid {\n      display: inline-grid;\n    }\n    .d-lg-table {\n      display: table;\n    }\n    .d-lg-table-row {\n      display: table-row;\n    }\n    .d-lg-table-cell {\n      display: table-cell;\n    }\n    .d-lg-flex {\n      display: flex;\n    }\n    .d-lg-inline-flex {\n      display: inline-flex;\n    }\n    .d-lg-contents {\n      display: contents;\n    }\n    .d-lg-flow-root {\n      display: flow-root;\n    }\n    .d-lg-none {\n      display: none;\n    }\n    .flex-lg-fill {\n      flex: 1 1 auto;\n    }\n    .flex-lg-row {\n      flex-direction: row;\n    }\n    .flex-lg-column {\n      flex-direction: column;\n    }\n    .flex-lg-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-lg-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-lg-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-lg-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-lg-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-lg-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-lg-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-lg-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-lg-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-lg-start {\n      justify-content: flex-start;\n    }\n    .justify-content-lg-end {\n      justify-content: flex-end;\n    }\n    .justify-content-lg-center {\n      justify-content: center;\n    }\n    .justify-content-lg-between {\n      justify-content: space-between;\n    }\n    .justify-content-lg-around {\n      justify-content: space-around;\n    }\n    .justify-content-lg-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-lg-start {\n      justify-items: start;\n    }\n    .justify-items-lg-end {\n      justify-items: end;\n    }\n    .justify-items-lg-center {\n      justify-items: center;\n    }\n    .justify-items-lg-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-lg-start {\n      justify-self: flex-start;\n    }\n    .justify-self-lg-end {\n      justify-self: flex-end;\n    }\n    .justify-self-lg-center {\n      justify-self: center;\n    }\n    .align-items-lg-start {\n      align-items: flex-start;\n    }\n    .align-items-lg-end {\n      align-items: flex-end;\n    }\n    .align-items-lg-center {\n      align-items: center;\n    }\n    .align-items-lg-baseline {\n      align-items: baseline;\n    }\n    .align-items-lg-stretch {\n      align-items: stretch;\n    }\n    .align-content-lg-start {\n      align-content: flex-start;\n    }\n    .align-content-lg-end {\n      align-content: flex-end;\n    }\n    .align-content-lg-center {\n      align-content: center;\n    }\n    .align-content-lg-between {\n      align-content: space-between;\n    }\n    .align-content-lg-around {\n      align-content: space-around;\n    }\n    .align-content-lg-stretch {\n      align-content: stretch;\n    }\n    .align-self-lg-auto {\n      align-self: auto;\n    }\n    .align-self-lg-start {\n      align-self: flex-start;\n    }\n    .align-self-lg-end {\n      align-self: flex-end;\n    }\n    .align-self-lg-center {\n      align-self: center;\n    }\n    .align-self-lg-baseline {\n      align-self: baseline;\n    }\n    .align-self-lg-stretch {\n      align-self: stretch;\n    }\n    .place-items-lg-start {\n      place-items: start;\n    }\n    .place-items-lg-end {\n      place-items: end;\n    }\n    .place-items-lg-center {\n      place-items: center;\n    }\n    .place-items-lg-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-lg-3 {\n      --columns: 3;\n    }\n    .grid-cols-lg-4 {\n      --columns: 4;\n    }\n    .grid-cols-lg-6 {\n      --columns: 6;\n    }\n    .grid-cols-lg-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-lg-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-lg-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-lg-dense {\n      grid-auto-flow: dense;\n    }\n    .order-lg-first {\n      order: -1;\n    }\n    .order-lg-0 {\n      order: 0;\n    }\n    .order-lg-1 {\n      order: 1;\n    }\n    .order-lg-2 {\n      order: 2;\n    }\n    .order-lg-3 {\n      order: 3;\n    }\n    .order-lg-4 {\n      order: 4;\n    }\n    .order-lg-5 {\n      order: 5;\n    }\n    .order-lg-last {\n      order: 6;\n    }\n    .m-lg--2 {\n      margin: -0.5rem;\n    }\n    .m-lg--1 {\n      margin: -0.25rem;\n    }\n    .m-lg-0 {\n      margin: 0;\n    }\n    .m-lg-1 {\n      margin: 0.25rem;\n    }\n    .m-lg-2 {\n      margin: 0.5rem;\n    }\n    .m-lg-3 {\n      margin: 1rem;\n    }\n    .m-lg-4 {\n      margin: 1.5rem;\n    }\n    .m-lg-5 {\n      margin: 3rem;\n    }\n    .m-lg-auto {\n      margin: auto;\n    }\n    .mx-lg--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-lg--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-lg-0 {\n      margin-inline: 0;\n    }\n    .mx-lg-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-lg-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-lg-3 {\n      margin-inline: 1rem;\n    }\n    .mx-lg-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-lg-5 {\n      margin-inline: 3rem;\n    }\n    .mx-lg-auto {\n      margin-inline: auto;\n    }\n    .my-lg--2 {\n      margin-block: -0.5rem;\n    }\n    .my-lg--1 {\n      margin-block: -0.25rem;\n    }\n    .my-lg-0 {\n      margin-block: 0;\n    }\n    .my-lg-1 {\n      margin-block: 0.25rem;\n    }\n    .my-lg-2 {\n      margin-block: 0.5rem;\n    }\n    .my-lg-3 {\n      margin-block: 1rem;\n    }\n    .my-lg-4 {\n      margin-block: 1.5rem;\n    }\n    .my-lg-5 {\n      margin-block: 3rem;\n    }\n    .my-lg-auto {\n      margin-block: auto;\n    }\n    .mt-lg--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-lg--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-lg-0 {\n      margin-block-start: 0;\n    }\n    .mt-lg-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-lg-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-lg-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-lg-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-lg-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-lg-auto {\n      margin-block-start: auto;\n    }\n    .me-lg--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-lg--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-lg-0 {\n      margin-inline-end: 0;\n    }\n    .me-lg-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-lg-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-lg-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-lg-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-lg-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-lg-auto {\n      margin-inline-end: auto;\n    }\n    .mb-lg--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-lg--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-lg-0 {\n      margin-block-end: 0;\n    }\n    .mb-lg-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-lg-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-lg-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-lg-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-lg-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-lg-auto {\n      margin-block-end: auto;\n    }\n    .ms-lg--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-lg--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-lg-0 {\n      margin-inline-start: 0;\n    }\n    .ms-lg-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-lg-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-lg-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-lg-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-lg-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-lg-auto {\n      margin-inline-start: auto;\n    }\n    .p-lg--2 {\n      padding: -0.5rem;\n    }\n    .p-lg--1 {\n      padding: -0.25rem;\n    }\n    .p-lg-0 {\n      padding: 0;\n    }\n    .p-lg-1 {\n      padding: 0.25rem;\n    }\n    .p-lg-2 {\n      padding: 0.5rem;\n    }\n    .p-lg-3 {\n      padding: 1rem;\n    }\n    .p-lg-4 {\n      padding: 1.5rem;\n    }\n    .p-lg-5 {\n      padding: 3rem;\n    }\n    .px-lg--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-lg--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-lg-0 {\n      padding-inline: 0;\n    }\n    .px-lg-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-lg-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-lg-3 {\n      padding-inline: 1rem;\n    }\n    .px-lg-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-lg-5 {\n      padding-inline: 3rem;\n    }\n    .py-lg--2 {\n      padding-block: -0.5rem;\n    }\n    .py-lg--1 {\n      padding-block: -0.25rem;\n    }\n    .py-lg-0 {\n      padding-block: 0;\n    }\n    .py-lg-1 {\n      padding-block: 0.25rem;\n    }\n    .py-lg-2 {\n      padding-block: 0.5rem;\n    }\n    .py-lg-3 {\n      padding-block: 1rem;\n    }\n    .py-lg-4 {\n      padding-block: 1.5rem;\n    }\n    .py-lg-5 {\n      padding-block: 3rem;\n    }\n    .pt-lg--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-lg--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-lg-0 {\n      padding-block-start: 0;\n    }\n    .pt-lg-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-lg-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-lg-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-lg-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-lg-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-lg--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-lg--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-lg-0 {\n      padding-inline-end: 0;\n    }\n    .pe-lg-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-lg-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-lg-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-lg-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-lg-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-lg--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-lg--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-lg-0 {\n      padding-block-end: 0;\n    }\n    .pb-lg-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-lg-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-lg-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-lg-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-lg-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-lg--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-lg--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-lg-0 {\n      padding-inline-start: 0;\n    }\n    .ps-lg-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-lg-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-lg-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-lg-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-lg-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-lg--2 {\n      gap: -0.5rem;\n    }\n    .gap-lg--1 {\n      gap: -0.25rem;\n    }\n    .gap-lg-0 {\n      gap: 0;\n    }\n    .gap-lg-1 {\n      gap: 0.25rem;\n    }\n    .gap-lg-2 {\n      gap: 0.5rem;\n    }\n    .gap-lg-3 {\n      gap: 1rem;\n    }\n    .gap-lg-4 {\n      gap: 1.5rem;\n    }\n    .gap-lg-5 {\n      gap: 3rem;\n    }\n    .row-gap-lg--2 {\n      row-gap: -0.5rem;\n    }\n    .row-gap-lg--1 {\n      row-gap: -0.25rem;\n    }\n    .row-gap-lg-0 {\n      row-gap: 0;\n    }\n    .row-gap-lg-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-lg-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-lg-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-lg-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-lg-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-lg--2 {\n      column-gap: -0.5rem;\n    }\n    .column-gap-lg--1 {\n      column-gap: -0.25rem;\n    }\n    .column-gap-lg-0 {\n      column-gap: 0;\n    }\n    .column-gap-lg-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-lg-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-lg-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-lg-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-lg-5 {\n      column-gap: 3rem;\n    }\n    .text-lg-start {\n      text-align: start;\n    }\n    .text-lg-end {\n      text-align: end;\n    }\n    .text-lg-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1280px) {\n    .float-xl-start {\n      float: inline-start;\n    }\n    .float-xl-end {\n      float: inline-end;\n    }\n    .float-xl-none {\n      float: none;\n    }\n    .object-fit-xl-contain {\n      object-fit: contain;\n    }\n    .object-fit-xl-cover {\n      object-fit: cover;\n    }\n    .object-fit-xl-fill {\n      object-fit: fill;\n    }\n    .object-fit-xl-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-xl-none {\n      object-fit: none;\n    }\n    .d-xl-inline {\n      display: inline;\n    }\n    .d-xl-inline-block {\n      display: inline-block;\n    }\n    .d-xl-block {\n      display: block;\n    }\n    .d-xl-grid {\n      display: grid;\n    }\n    .d-xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-xl-table {\n      display: table;\n    }\n    .d-xl-table-row {\n      display: table-row;\n    }\n    .d-xl-table-cell {\n      display: table-cell;\n    }\n    .d-xl-flex {\n      display: flex;\n    }\n    .d-xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-xl-contents {\n      display: contents;\n    }\n    .d-xl-flow-root {\n      display: flow-root;\n    }\n    .d-xl-none {\n      display: none;\n    }\n    .flex-xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-xl-row {\n      flex-direction: row;\n    }\n    .flex-xl-column {\n      flex-direction: column;\n    }\n    .flex-xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-xl-center {\n      justify-content: center;\n    }\n    .justify-content-xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-xl-start {\n      justify-items: start;\n    }\n    .justify-items-xl-end {\n      justify-items: end;\n    }\n    .justify-items-xl-center {\n      justify-items: center;\n    }\n    .justify-items-xl-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-xl-start {\n      justify-self: flex-start;\n    }\n    .justify-self-xl-end {\n      justify-self: flex-end;\n    }\n    .justify-self-xl-center {\n      justify-self: center;\n    }\n    .align-items-xl-start {\n      align-items: flex-start;\n    }\n    .align-items-xl-end {\n      align-items: flex-end;\n    }\n    .align-items-xl-center {\n      align-items: center;\n    }\n    .align-items-xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-xl-start {\n      align-content: flex-start;\n    }\n    .align-content-xl-end {\n      align-content: flex-end;\n    }\n    .align-content-xl-center {\n      align-content: center;\n    }\n    .align-content-xl-between {\n      align-content: space-between;\n    }\n    .align-content-xl-around {\n      align-content: space-around;\n    }\n    .align-content-xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-xl-auto {\n      align-self: auto;\n    }\n    .align-self-xl-start {\n      align-self: flex-start;\n    }\n    .align-self-xl-end {\n      align-self: flex-end;\n    }\n    .align-self-xl-center {\n      align-self: center;\n    }\n    .align-self-xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-xl-start {\n      place-items: start;\n    }\n    .place-items-xl-end {\n      place-items: end;\n    }\n    .place-items-xl-center {\n      place-items: center;\n    }\n    .place-items-xl-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-xl-3 {\n      --columns: 3;\n    }\n    .grid-cols-xl-4 {\n      --columns: 4;\n    }\n    .grid-cols-xl-6 {\n      --columns: 6;\n    }\n    .grid-cols-xl-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-xl-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-xl-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-xl-dense {\n      grid-auto-flow: dense;\n    }\n    .order-xl-first {\n      order: -1;\n    }\n    .order-xl-0 {\n      order: 0;\n    }\n    .order-xl-1 {\n      order: 1;\n    }\n    .order-xl-2 {\n      order: 2;\n    }\n    .order-xl-3 {\n      order: 3;\n    }\n    .order-xl-4 {\n      order: 4;\n    }\n    .order-xl-5 {\n      order: 5;\n    }\n    .order-xl-last {\n      order: 6;\n    }\n    .m-xl--2 {\n      margin: -0.5rem;\n    }\n    .m-xl--1 {\n      margin: -0.25rem;\n    }\n    .m-xl-0 {\n      margin: 0;\n    }\n    .m-xl-1 {\n      margin: 0.25rem;\n    }\n    .m-xl-2 {\n      margin: 0.5rem;\n    }\n    .m-xl-3 {\n      margin: 1rem;\n    }\n    .m-xl-4 {\n      margin: 1.5rem;\n    }\n    .m-xl-5 {\n      margin: 3rem;\n    }\n    .m-xl-auto {\n      margin: auto;\n    }\n    .mx-xl--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-xl--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-xl-0 {\n      margin-inline: 0;\n    }\n    .mx-xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-xl-auto {\n      margin-inline: auto;\n    }\n    .my-xl--2 {\n      margin-block: -0.5rem;\n    }\n    .my-xl--1 {\n      margin-block: -0.25rem;\n    }\n    .my-xl-0 {\n      margin-block: 0;\n    }\n    .my-xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-xl-3 {\n      margin-block: 1rem;\n    }\n    .my-xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-xl-5 {\n      margin-block: 3rem;\n    }\n    .my-xl-auto {\n      margin-block: auto;\n    }\n    .mt-xl--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-xl--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-xl-auto {\n      margin-block-start: auto;\n    }\n    .me-xl--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-xl--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-xl--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-xl--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-xl--2 {\n      padding: -0.5rem;\n    }\n    .p-xl--1 {\n      padding: -0.25rem;\n    }\n    .p-xl-0 {\n      padding: 0;\n    }\n    .p-xl-1 {\n      padding: 0.25rem;\n    }\n    .p-xl-2 {\n      padding: 0.5rem;\n    }\n    .p-xl-3 {\n      padding: 1rem;\n    }\n    .p-xl-4 {\n      padding: 1.5rem;\n    }\n    .p-xl-5 {\n      padding: 3rem;\n    }\n    .px-xl--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-xl--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-xl-0 {\n      padding-inline: 0;\n    }\n    .px-xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-xl--2 {\n      padding-block: -0.5rem;\n    }\n    .py-xl--1 {\n      padding-block: -0.25rem;\n    }\n    .py-xl-0 {\n      padding-block: 0;\n    }\n    .py-xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-xl-3 {\n      padding-block: 1rem;\n    }\n    .py-xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-xl--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-xl--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-xl--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-xl--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-xl--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-xl--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-xl--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-xl--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-xl-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-xl--2 {\n      gap: -0.5rem;\n    }\n    .gap-xl--1 {\n      gap: -0.25rem;\n    }\n    .gap-xl-0 {\n      gap: 0;\n    }\n    .gap-xl-1 {\n      gap: 0.25rem;\n    }\n    .gap-xl-2 {\n      gap: 0.5rem;\n    }\n    .gap-xl-3 {\n      gap: 1rem;\n    }\n    .gap-xl-4 {\n      gap: 1.5rem;\n    }\n    .gap-xl-5 {\n      gap: 3rem;\n    }\n    .row-gap-xl--2 {\n      row-gap: -0.5rem;\n    }\n    .row-gap-xl--1 {\n      row-gap: -0.25rem;\n    }\n    .row-gap-xl-0 {\n      row-gap: 0;\n    }\n    .row-gap-xl-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-xl-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-xl-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-xl-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-xl-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-xl--2 {\n      column-gap: -0.5rem;\n    }\n    .column-gap-xl--1 {\n      column-gap: -0.25rem;\n    }\n    .column-gap-xl-0 {\n      column-gap: 0;\n    }\n    .column-gap-xl-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-xl-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-xl-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-xl-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-xl-5 {\n      column-gap: 3rem;\n    }\n    .text-xl-start {\n      text-align: start;\n    }\n    .text-xl-end {\n      text-align: end;\n    }\n    .text-xl-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1536px) {\n    .float-2xl-start {\n      float: inline-start;\n    }\n    .float-2xl-end {\n      float: inline-end;\n    }\n    .float-2xl-none {\n      float: none;\n    }\n    .object-fit-2xl-contain {\n      object-fit: contain;\n    }\n    .object-fit-2xl-cover {\n      object-fit: cover;\n    }\n    .object-fit-2xl-fill {\n      object-fit: fill;\n    }\n    .object-fit-2xl-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-2xl-none {\n      object-fit: none;\n    }\n    .d-2xl-inline {\n      display: inline;\n    }\n    .d-2xl-inline-block {\n      display: inline-block;\n    }\n    .d-2xl-block {\n      display: block;\n    }\n    .d-2xl-grid {\n      display: grid;\n    }\n    .d-2xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-2xl-table {\n      display: table;\n    }\n    .d-2xl-table-row {\n      display: table-row;\n    }\n    .d-2xl-table-cell {\n      display: table-cell;\n    }\n    .d-2xl-flex {\n      display: flex;\n    }\n    .d-2xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-2xl-contents {\n      display: contents;\n    }\n    .d-2xl-flow-root {\n      display: flow-root;\n    }\n    .d-2xl-none {\n      display: none;\n    }\n    .flex-2xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-2xl-row {\n      flex-direction: row;\n    }\n    .flex-2xl-column {\n      flex-direction: column;\n    }\n    .flex-2xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-2xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-2xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-2xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-2xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-2xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-2xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-2xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-2xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-2xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-2xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-2xl-center {\n      justify-content: center;\n    }\n    .justify-content-2xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-2xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-2xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-2xl-start {\n      justify-items: start;\n    }\n    .justify-items-2xl-end {\n      justify-items: end;\n    }\n    .justify-items-2xl-center {\n      justify-items: center;\n    }\n    .justify-items-2xl-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-2xl-start {\n      justify-self: flex-start;\n    }\n    .justify-self-2xl-end {\n      justify-self: flex-end;\n    }\n    .justify-self-2xl-center {\n      justify-self: center;\n    }\n    .align-items-2xl-start {\n      align-items: flex-start;\n    }\n    .align-items-2xl-end {\n      align-items: flex-end;\n    }\n    .align-items-2xl-center {\n      align-items: center;\n    }\n    .align-items-2xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-2xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-2xl-start {\n      align-content: flex-start;\n    }\n    .align-content-2xl-end {\n      align-content: flex-end;\n    }\n    .align-content-2xl-center {\n      align-content: center;\n    }\n    .align-content-2xl-between {\n      align-content: space-between;\n    }\n    .align-content-2xl-around {\n      align-content: space-around;\n    }\n    .align-content-2xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-2xl-auto {\n      align-self: auto;\n    }\n    .align-self-2xl-start {\n      align-self: flex-start;\n    }\n    .align-self-2xl-end {\n      align-self: flex-end;\n    }\n    .align-self-2xl-center {\n      align-self: center;\n    }\n    .align-self-2xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-2xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-2xl-start {\n      place-items: start;\n    }\n    .place-items-2xl-end {\n      place-items: end;\n    }\n    .place-items-2xl-center {\n      place-items: center;\n    }\n    .place-items-2xl-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-2xl-3 {\n      --columns: 3;\n    }\n    .grid-cols-2xl-4 {\n      --columns: 4;\n    }\n    .grid-cols-2xl-6 {\n      --columns: 6;\n    }\n    .grid-cols-2xl-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-2xl-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-2xl-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-2xl-dense {\n      grid-auto-flow: dense;\n    }\n    .order-2xl-first {\n      order: -1;\n    }\n    .order-2xl-0 {\n      order: 0;\n    }\n    .order-2xl-1 {\n      order: 1;\n    }\n    .order-2xl-2 {\n      order: 2;\n    }\n    .order-2xl-3 {\n      order: 3;\n    }\n    .order-2xl-4 {\n      order: 4;\n    }\n    .order-2xl-5 {\n      order: 5;\n    }\n    .order-2xl-last {\n      order: 6;\n    }\n    .m-2xl--2 {\n      margin: -0.5rem;\n    }\n    .m-2xl--1 {\n      margin: -0.25rem;\n    }\n    .m-2xl-0 {\n      margin: 0;\n    }\n    .m-2xl-1 {\n      margin: 0.25rem;\n    }\n    .m-2xl-2 {\n      margin: 0.5rem;\n    }\n    .m-2xl-3 {\n      margin: 1rem;\n    }\n    .m-2xl-4 {\n      margin: 1.5rem;\n    }\n    .m-2xl-5 {\n      margin: 3rem;\n    }\n    .m-2xl-auto {\n      margin: auto;\n    }\n    .mx-2xl--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-2xl--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-2xl-0 {\n      margin-inline: 0;\n    }\n    .mx-2xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-2xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-2xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-2xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-2xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-2xl-auto {\n      margin-inline: auto;\n    }\n    .my-2xl--2 {\n      margin-block: -0.5rem;\n    }\n    .my-2xl--1 {\n      margin-block: -0.25rem;\n    }\n    .my-2xl-0 {\n      margin-block: 0;\n    }\n    .my-2xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-2xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-2xl-3 {\n      margin-block: 1rem;\n    }\n    .my-2xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-2xl-5 {\n      margin-block: 3rem;\n    }\n    .my-2xl-auto {\n      margin-block: auto;\n    }\n    .mt-2xl--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-2xl--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-2xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-2xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-2xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-2xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-2xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-2xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-2xl-auto {\n      margin-block-start: auto;\n    }\n    .me-2xl--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-2xl--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-2xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-2xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-2xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-2xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-2xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-2xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-2xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-2xl--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-2xl--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-2xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-2xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-2xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-2xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-2xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-2xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-2xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-2xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-2xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-2xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-2xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-2xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-2xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-2xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-2xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-2xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-2xl--2 {\n      padding: -0.5rem;\n    }\n    .p-2xl--1 {\n      padding: -0.25rem;\n    }\n    .p-2xl-0 {\n      padding: 0;\n    }\n    .p-2xl-1 {\n      padding: 0.25rem;\n    }\n    .p-2xl-2 {\n      padding: 0.5rem;\n    }\n    .p-2xl-3 {\n      padding: 1rem;\n    }\n    .p-2xl-4 {\n      padding: 1.5rem;\n    }\n    .p-2xl-5 {\n      padding: 3rem;\n    }\n    .px-2xl--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-2xl--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-2xl-0 {\n      padding-inline: 0;\n    }\n    .px-2xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-2xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-2xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-2xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-2xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-2xl--2 {\n      padding-block: -0.5rem;\n    }\n    .py-2xl--1 {\n      padding-block: -0.25rem;\n    }\n    .py-2xl-0 {\n      padding-block: 0;\n    }\n    .py-2xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-2xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-2xl-3 {\n      padding-block: 1rem;\n    }\n    .py-2xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-2xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-2xl--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-2xl--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-2xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-2xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-2xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-2xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-2xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-2xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-2xl--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-2xl--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-2xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-2xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-2xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-2xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-2xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-2xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-2xl--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-2xl--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-2xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-2xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-2xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-2xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-2xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-2xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-2xl--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-2xl--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-2xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-2xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-2xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-2xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-2xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-2xl-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-2xl--2 {\n      gap: -0.5rem;\n    }\n    .gap-2xl--1 {\n      gap: -0.25rem;\n    }\n    .gap-2xl-0 {\n      gap: 0;\n    }\n    .gap-2xl-1 {\n      gap: 0.25rem;\n    }\n    .gap-2xl-2 {\n      gap: 0.5rem;\n    }\n    .gap-2xl-3 {\n      gap: 1rem;\n    }\n    .gap-2xl-4 {\n      gap: 1.5rem;\n    }\n    .gap-2xl-5 {\n      gap: 3rem;\n    }\n    .row-gap-2xl--2 {\n      row-gap: -0.5rem;\n    }\n    .row-gap-2xl--1 {\n      row-gap: -0.25rem;\n    }\n    .row-gap-2xl-0 {\n      row-gap: 0;\n    }\n    .row-gap-2xl-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-2xl-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-2xl-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-2xl-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-2xl-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-2xl--2 {\n      column-gap: -0.5rem;\n    }\n    .column-gap-2xl--1 {\n      column-gap: -0.25rem;\n    }\n    .column-gap-2xl-0 {\n      column-gap: 0;\n    }\n    .column-gap-2xl-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-2xl-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-2xl-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-2xl-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-2xl-5 {\n      column-gap: 3rem;\n    }\n    .text-2xl-start {\n      text-align: start;\n    }\n    .text-2xl-end {\n      text-align: end;\n    }\n    .text-2xl-center {\n      text-align: center;\n    }\n  }\n}\n\n/*# sourceMappingURL=bootstrap-utilities.css.map */\n","$file: \"\" !default;\n\n/*!\n  * Bootstrap #{$file} v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n","// stylelint-disable hue-degree-notation, @stylistic/number-leading-zero\n\n@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// Easily convert colors to oklch() with https://oklch.com/\n\n$white: #fff !default;\n$black: #000 !default;\n\n// scss-docs-start colors-list\n$blue: oklch(60% 0.24 240) !default;\n$indigo: oklch(56% 0.26 288) !default;\n$violet: oklch(56% 0.24 300) !default;\n$purple: oklch(56% 0.24 320) !default;\n$pink: oklch(60% 0.22 4) !default;\n$red: oklch(60% 0.22 20) !default;\n$orange: oklch(70% 0.22 52) !default;\n$amber: oklch(79% 0.2 78) !default;\n$yellow: oklch(88% 0.24 88) !default;\n$lime: oklch(65% 0.24 135) !default;\n$green: oklch(64% 0.22 160) !default;\n$teal: oklch(68% 0.22 190) !default;\n$cyan: oklch(69% 0.22 220) !default;\n$brown: oklch(60% 0.12 54) !default;\n$gray: oklch(60% 0.02 245) !default;\n$pewter: oklch(65% 0.01 290) !default;\n// scss-docs-end colors-list\n\n// scss-docs-start colors-map\n$colors: () !default;\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$colors: defaults(\n  (\n    \"blue\": $blue,\n    \"indigo\": $indigo,\n    \"violet\": $violet,\n    \"purple\": $purple,\n    \"pink\": $pink,\n    \"red\": $red,\n    \"orange\": $orange,\n    \"amber\": $amber,\n    \"yellow\": $yellow,\n    \"lime\": $lime,\n    \"green\": $green,\n    \"teal\": $teal,\n    \"cyan\": $cyan,\n    \"brown\": $brown,\n    \"gray\": $gray,\n    \"pewter\": $pewter,\n  ),\n  $colors\n);\n// scss-docs-end colors-map\n\n// scss-docs-start color-mix-options\n$color-mix-space: lab !default;\n$tint-color: var(--white) !default;\n$shade-color: var(--black) !default;\n\n$color-tints: (\n  \"025\": 94%,\n  \"050\": 90%,\n  \"100\": 80%,\n  \"200\": 60%,\n  \"300\": 40%,\n  \"400\": 20%,\n) !default;\n\n$color-shades: (\n  \"600\": 16%,\n  \"700\": 32%,\n  \"800\": 48%,\n  \"900\": 64%,\n  \"950\": 76%,\n  \"975\": 88%,\n) !default;\n// scss-docs-end color-mix-options\n\n// scss-docs-start color-tokens\n$color-tokens: () !default;\n\n$-color-defaults: () !default;\n@each $color, $value in $colors {\n  @each $stop, $percent in $color-tints {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$tint-color} #{$percent}, #{$value}));\n  }\n  $-color-defaults: map.set($-color-defaults, --#{$color}-500, #{$value});\n  @each $stop, $percent in $color-shades {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$shade-color} #{$percent}, #{$value}));\n  }\n}\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$color-tokens: defaults($-color-defaults, $color-tokens);\n// scss-docs-end color-tokens\n\n:root {\n  @include tokens($color-tokens);\n}\n","// Mixin to output tokens as CSS custom properties\n\n// scss-docs-start mixin-tokens\n@mixin tokens($map) {\n  @each $prop, $value in $map {\n    #{$prop}: #{$value};\n  }\n}\n// scss-docs-end mixin-tokens\n","@use \"sass:map\";\n@use \"colors\" as *;\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"theme\" as *;\n@use \"mixins/tokens\" as *;\n@use \"forms/form-variables\" as *;\n\n// mdo-do: do we need theme?\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n\n$root-tokens: () !default;\n\n// scss-docs-start root-tokens\n// stylelint-disable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: defaults(\n  (\n    --black: #{$black},\n    --white: #{$white},\n\n    --gradient: #{$gradient},\n\n    // scss-docs-start root-font-size-variables\n    --font-size-base: 1rem,\n    --font-size-xs: .75rem,\n    --font-size-sm: .875rem,\n    --font-size-md: 1rem,\n    --font-size-lg: clamp(1.25rem, 1rem + .625vw, 1.5rem),\n    --font-size-xl: clamp(1.5rem, 1.1rem + .75vw, 1.75rem),\n    --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem),\n    --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem),\n    --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem),\n    --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem),\n    --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem),\n\n    --line-height-xs: 1.25,\n    --line-height-sm: 1.5,\n    --line-height-md: 1.5,\n    --line-height-lg: 1.5,\n    --line-height-xl: calc(2.5 / 1.75),\n    --line-height-2xl: calc(3 / 2.25),\n    --line-height-3xl: 1.2,\n    --line-height-4xl: 1.1,\n    --line-height-5xl: 1.1,\n    --line-height-6xl: 1,\n    // scss-docs-end root-font-size-variables\n\n    // scss-docs-start root-font-weight-variables\n    --font-weight-lighter: lighter,\n    --font-weight-light: 300,\n    --font-weight-normal: 400,\n    --font-weight-medium: 500,\n    --font-weight-semibold: 600,\n    --font-weight-bold: 700,\n    --font-weight-bolder: bolder,\n    // scss-docs-end root-font-weight-variables\n\n    // scss-docs-start root-body-variables\n    --body-font-family: system-ui,\n    --body-font-size: var(--font-size-base),\n    --body-font-weight: #{$font-weight-base},\n    --body-line-height: #{$line-height-base},\n\n    --heading-color: #{$headings-color},\n\n    --hr-border-color: var(--border-color),\n\n    --link-color: light-dark(var(--primary-base), var(--primary-text)),\n    --link-decoration: #{$link-decoration},\n    --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000),\n\n    --font-mono: \"SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace\",\n    --code-font-size: 95%,\n    --code-color: var(--fg-2),\n\n    // scss-docs-start root-border-var\n    --border-width: #{$border-width},\n    --border-style: #{$border-style},\n    --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700)),\n    --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    // scss-docs-end root-border-var\n\n    // scss-docs-start root-border-radius-var\n    --border-radius: .5rem,\n    --border-radius-xs: .375rem,\n    --border-radius-sm: .5rem,\n    --border-radius-lg: .75rem,\n    --border-radius-xl: 1rem,\n    --border-radius-2xl: 2rem,\n    --border-radius-pill: 50rem,\n    // scss-docs-end root-border-radius-var\n\n    // scss-docs-start root-box-shadow-variables\n    --box-shadow: 0 .5rem 1rem rgb(0 0 0 / 15%),\n    --box-shadow-sm: 0 .125rem .25rem rgb(0 0 0 / 7.5%),\n    --box-shadow-lg: 0 1rem 3rem rgb(0 0 0 / 17.5%),\n    --box-shadow-inset: inset 0 1px 2px rgb(0 0 0 / 7.5%),\n    // scss-docs-end root-box-shadow-variables\n\n    --spacer: 1rem,\n\n    // scss-docs-start root-focus-variables\n    --focus-ring-width: 3px,\n    --focus-ring-offset: 1px,\n    --focus-ring-color: var(--primary-focus-ring),\n    --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color),\n    // scss-docs-end root-focus-variables\n\n    // scss-docs-start root-form-variables\n    --control-checked-bg: var(--primary-base),\n    --control-checked-border-color: var(--control-checked-bg),\n    --control-active-bg: var(--primary-base),\n    --control-active-border-color: var(--control-active-bg),\n    --control-disabled-bg: var(--bg-3),\n    --control-disabled-opacity: .65,\n\n    --btn-input-fg: var(--fg-body),\n    --btn-input-bg: var(--bg-body),\n\n    --btn-input-min-height: 2.375rem,\n    --btn-input-padding-y: .375rem,\n    --btn-input-padding-x: .75rem,\n    --btn-input-font-size: var(--font-size-base),\n    --btn-input-line-height: var(--line-height-base),\n    --btn-input-border-radius: var(--border-radius),\n\n    --btn-input-xs-min-height: 1.5rem,\n    --btn-input-xs-padding-y: .125rem,\n    --btn-input-xs-padding-x: .5rem,\n    --btn-input-xs-font-size: var(--font-size-xs),\n    --btn-input-xs-line-height: 1.125,\n    --btn-input-xs-border-radius: var(--border-radius-xs),\n\n    --btn-input-sm-min-height: 2rem,\n    --btn-input-sm-padding-y: .25rem,\n    --btn-input-sm-padding-x: .625rem,\n    --btn-input-sm-font-size: var(--font-size-sm),\n    --btn-input-sm-line-height: var(--line-height-sm),\n    --btn-input-sm-border-radius: var(--border-radius-sm),\n\n    --btn-input-lg-min-height: 2.75rem,\n    --btn-input-lg-padding-y: .5rem,\n    --btn-input-lg-padding-x: 1rem,\n    --btn-input-lg-font-size: var(--font-size-md),\n    --btn-input-lg-line-height: var(--line-height-md),\n    --btn-input-lg-border-radius: var(--border-radius-lg),\n    // scss-docs-end root-form-variables\n\n    // scss-docs-start root-form-validation-variables\n    --form-valid-color: #{$form-valid-color},\n    --form-valid-border-color: #{$form-valid-border-color},\n    --form-invalid-color: #{$form-invalid-color},\n    --form-invalid-border-color: #{$form-invalid-border-color},\n    // scss-docs-end root-form-validation-variables\n  ),\n  $root-tokens\n);\n// stylelint-enable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// scss-docs-end root-tokens\n\n// scss-docs-start root-theme-tokens\n// Generate semantic theme colors\n@each $color-name, $color-map in $theme-colors {\n  @each $key, $value in $color-map {\n    $root-tokens: map.set($root-tokens, --#{$color-name}-#{$key}, $value);\n  }\n}\n\n// Generate background tokens\n@each $key, $value in $theme-bgs {\n  $root-tokens: map.set($root-tokens, --bg-#{$key}, $value);\n}\n\n// Generate foreground tokens\n@each $key, $value in $theme-fgs {\n  $root-tokens: map.set($root-tokens, --fg-#{$key}, $value);\n}\n\n// Generate border tokens\n@each $key, $value in $theme-borders {\n  $root-tokens: map.set($root-tokens, --border-#{$key}, $value);\n}\n// scss-docs-end root-theme-tokens\n\n// Generate breakpoint tokens\n@each $name, $value in $breakpoints {\n  $root-tokens: map.set($root-tokens, --breakpoint-#{$name}, $value);\n}\n\n:root {\n  @include tokens($root-tokens);\n\n  color-scheme: light dark;\n}\n\n[data-bs-theme=\"dark\"] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=\"light\"] {\n  color-scheme: light;\n}\n","@layer helpers {\n  .focus-ring:focus-visible {\n    outline: var(--focus-ring);\n  }\n}\n","@use \"../variables\" as *;\n@use \"../mixins/transition\" as *;\n\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: $icon-link-gap;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, .5));\n    text-underline-offset: $icon-link-underline-offset;\n    backface-visibility: hidden;\n\n    > .bi {\n      flex-shrink: 0;\n      width: $icon-link-icon-size;\n      height: $icon-link-icon-size;\n      fill: currentcolor;\n      @include transition($icon-link-icon-transition);\n    }\n  }\n\n  .icon-link-hover {\n    &:hover,\n    &:focus-visible {\n      > .bi {\n        transform: var(--icon-link-transform, $icon-link-icon-transform);\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n\n// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $btn-padding-y-lg.\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `<body>` element.\n\n// $body-text-align:           null !default;\n\n// Links\n//\n// Style anchor elements.\n\n// $link-color:                              var !default;\n$link-decoration:                         underline !default;\n$link-underline-offset:                   .2em !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap:               .375rem !default;\n$icon-link-underline-offset:  .25em !default;\n$icon-link-icon-size:         1em !default;\n$icon-link-icon-transition:   .2s ease-in-out transform !default;\n$icon-link-icon-transform:    translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n$border-style:                solid !default;\n$border-color:                color-mix(in oklch, var(--gray-100), var(--gray-200)) !default;\n// scss-docs-end border-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"auto\": auto,\n  \"1x1\": #{\"1 / 1\"},\n  \"4x3\": #{\"4 / 3\"},\n  \"16x9\": #{\"16 / 9\"},\n  \"21x9\": #{\"21 / 9\"}\n) !default;\n// scss-docs-end aspect-ratios\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// $font-family-sans-serif:      system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n// $font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// $font-family-base:            var(--font-sans-serif) !default;\n// $font-family-code:            var(--font-monospace) !default;\n\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-medium:          500 !default;\n$font-weight-semibold:        600 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n\n$h1-font-size: var(--font-size-3xl) !default;\n$h2-font-size: var(--font-size-2xl) !default;\n$h3-font-size: var(--font-size-xl) !default;\n$h4-font-size: var(--font-size-lg) !default;\n$h5-font-size: var(--font-size-md) !default;\n$h6-font-size: var(--font-size-sm) !default;\n// scss-docs-end font-variables\n\n// Font sizes with line-height for utilities\n$font-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$font-sizes: defaults(\n  (\n    \"xs\": (\n      \"font-size\": var(--font-size-xs),\n      \"line-height\": var(--line-height-xs)\n    ),\n    \"sm\": (\n      \"font-size\": var(--font-size-sm),\n      \"line-height\": var(--line-height-sm)\n    ),\n    \"md\": (\n      \"font-size\": var(--font-size-md),\n      \"line-height\": var(--line-height-md)\n    ),\n    \"lg\": (\n      \"font-size\": var(--font-size-lg),\n      \"line-height\": var(--line-height-lg)\n    ),\n    \"xl\": (\n      \"font-size\": var(--font-size-xl),\n      \"line-height\": var(--line-height-xl)\n    ),\n    \"2xl\": (\n      \"font-size\": var(--font-size-2xl),\n      \"line-height\": var(--line-height-2xl)\n    ),\n    \"3xl\": (\n      \"font-size\": var(--font-size-3xl),\n      \"line-height\": var(--line-height-3xl)\n    ),\n    \"4xl\": (\n      \"font-size\": var(--font-size-4xl),\n      \"line-height\": var(--line-height-4xl)\n    ),\n    \"5xl\": (\n      \"font-size\": var(--font-size-5xl),\n      \"line-height\": var(--line-height-5xl)\n    ),\n    \"6xl\": (\n      \"font-size\": var(--font-size-6xl),\n      \"line-height\": var(--line-height-6xl)\n    ),\n  ),\n  $font-sizes\n);\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start type-variables\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n// $list-inline-padding:         .5rem !default;\n// scss-docs-end type-variables\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown:                   1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-dialog:                     1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n$zindex-toast:                      1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n  n1: -1,\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n","@use \"sass:list\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n@mixin transition($transition...) {\n  @if list.length($transition) == 0 {\n    $transition: $transition-base;\n  }\n\n  @if list.length($transition) > 1 {\n    @each $value in $transition {\n      @if $value == null or $value == none {\n        @warn \"The keyword 'none' or 'null' must be used as a single argument.\";\n      }\n    }\n  }\n\n  @if $enable-transitions {\n    @if list.nth($transition, 1) != null {\n      transition: $transition;\n    }\n\n    @if $enable-reduced-motion and list.nth($transition, 1) != null and list.nth($transition, 1) != none {\n      @media (prefers-reduced-motion: reduce) {\n        transition: none;\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"../config\" as *;\n@use \"../variables\" as *;\n@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: $zindex-fixed;\n  }\n\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: $zindex-fixed;\n  }\n\n  // Responsive sticky top and bottom\n  @each $breakpoint in map.keys($breakpoints) {\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      .sticky#{$infix}-top {\n        position: sticky;\n        top: 0;\n        z-index: $zindex-sticky;\n      }\n\n      .sticky#{$infix}-bottom {\n        position: sticky;\n        bottom: 0;\n        z-index: $zindex-sticky;\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"../config\" as *;\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px)\n//\n// The map defined in the `$breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl 2xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $breakpoints, $breakpoint-names: map.keys($breakpoints)) {\n  $n: list.index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoint-names}`\";\n  }\n  // Use @if/@else because list.nth would error if evaluated when $n equals list length\n  @if $n < list.length($breakpoint-names) {\n    @return list.nth($breakpoint-names, $n + 1);\n  } @else {\n    @return null;\n  }\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $breakpoints) {\n  $min: map.get($breakpoints, $name);\n  @return if(sass($min != 0): $min; else: null);\n}\n\n// Maximum breakpoint width for range media queries.\n// Returns the breakpoint value to use as an upper bound in range queries.\n//\n//    >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n//    >> breakpoint-max(xxl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    null\n@function breakpoint-max($name, $breakpoints: $breakpoints) {\n  @if $name == null {\n    @return null;\n  }\n  $max: map.get($breakpoints, $name);\n  @return if(sass($max and $max > 0): $max; else: null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $breakpoints) {\n  @return if(sass(breakpoint-min($name, $breakpoints) == null): \"\"; else: \"-#{$name}\");\n}\n\n// Iterate all breakpoints and provide the current name and infix.\n//\n//    @include loop-breakpoints-up() using ($breakpoint, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-up($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n    @content($breakpoint, $infix);\n  }\n}\n\n// Iterate all breakpoints and provide the current name, next name, and next infix.\n//\n//    @include loop-breakpoints-down() using ($breakpoint, $next, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-down($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $next: breakpoint-next($breakpoint, $breakpoints);\n    $infix: breakpoint-infix($next, $breakpoints);\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Backwards-compatible alias for next/down breakpoint loops.\n@mixin loop-breakpoints($breakpoints: $breakpoints) {\n  @include loop-breakpoints-down($breakpoints) using ($breakpoint, $next, $infix) {\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (width >= $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (width < $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n\n// Container queries\n//\n// Container queries allow elements to respond to the size of a containing element\n// rather than the viewport. These mixins mirror the media-breakpoint-* mixins above.\n//\n// scss-docs-start container-query-mixins\n\n// Set an element as a query container.\n//\n//    @include set-container();                    // container-type: inline-size\n//    @include set-container(size);                // container-type: size\n//    @include set-container(inline-size, sidebar); // container: sidebar / inline-size\n//\n@mixin set-container($type: inline-size, $name: null) {\n  @if $name {\n    container: #{$name} / #{$type};\n  } @else {\n    container-type: #{$type};\n  }\n}\n\n// Container query of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider within the container.\n//\n//    @include container-breakpoint-up(md) { ... }\n//    @include container-breakpoint-up(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-up($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower within the container.\n//\n//    @include container-breakpoint-down(lg) { ... }\n//    @include container-breakpoint-down(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-down($name, $container-name: null, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @if $container-name {\n      @container #{$container-name} (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints within the container.\n//\n//    @include container-breakpoint-between(md, xl) { ... }\n//    @include container-breakpoint-between(md, xl, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-between($lower, $upper, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($lower, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($upper, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Container query between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint within the container.\n//\n//    @include container-breakpoint-only(md) { ... }\n//    @include container-breakpoint-only(md, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-only($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($name, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($next, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n// scss-docs-end container-query-mixins\n","@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  // scss-docs-start stacks\n  .stack-container {\n    @include set-container();\n  }\n\n  [class*=\"hstack\"],\n  [class*=\"vstack\"] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n\n  @include loop-breakpoints-up() using ($breakpoint, $infix) {\n    .vstack#{$infix} {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: column;\n        --stack-align-items: stretch;\n      }\n    }\n    .hstack#{$infix} {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: row;\n        --stack-align-items: flex-start;\n      }\n    }\n  }\n  // scss-docs-end stacks\n}\n","@use \"../theme\" as *;\n\n// Generate theme modifier classes (e.g., .theme-primary, .theme-accent, etc.)\n@layer helpers {\n  @include generate-theme-classes();\n}\n","@use \"sass:meta\";\n@use \"sass:map\";\n\n@function theme-color-values($key) {\n  $result: ();\n\n  @each $color-name, $color-map in $theme-colors {\n    @if map.has-key($color-map, $key) {\n      $result: map.merge($result, ($color-name: map.get($color-map, $key)));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate opacity values using color-mix()\n@function theme-opacity-values($color-var, $opacities: $util-opacity) {\n  $result: ();\n\n  @each $key, $value in $opacities {\n    @if $key == 100 {\n      // For 100%, use direct variable reference (more efficient)\n      $result: map.merge($result, ($key: var($color-var)));\n    } @else {\n      // For other values, use color-mix()\n      $percentage: $key * 1%;\n      $result: map.merge($result, ($key: color-mix(in oklch, var($color-var) $percentage, transparent)));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate theme classes dynamically based on the keys in each theme color map\n@mixin generate-theme-classes() {\n  @each $color-name, $color-map in $theme-colors {\n    .theme-#{$color-name} {\n      @each $key, $value in $color-map {\n        --theme-#{$key}: var(--#{$color-name}-#{$key});\n      }\n    }\n  }\n}\n\n// Recursive mixin to handle nested maps\n@mixin create-css-vars($map, $parent-key: \"\") {\n  @each $key, $value in $map {\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    $current-key: if(sass($parent-key == \"\"): $key; else: \"#{$parent-key}-#{$key}\");\n\n    @if meta.type-of($value) == \"map\" {\n      @include create-css-vars($value, $current-key);\n    } @else {\n      --#{$current-key}: #{$value};\n    }\n  }\n}\n\n// scss-docs-start theme-colors\n$theme-colors: (\n  \"primary\": (\n    \"base\": var(--blue-500),\n    \"text\": light-dark(var(--blue-600), var(--blue-400)),\n    \"text-emphasis\": light-dark(var(--blue-800), var(--blue-200)),\n    \"bg\": var(--blue-500),\n    \"bg-subtle\": light-dark(var(--blue-100), var(--blue-900)),\n    \"bg-muted\": light-dark(var(--blue-200), var(--blue-800)),\n    \"border\": light-dark(var(--blue-300), var(--blue-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"accent\": (\n    \"base\": var(--indigo-500),\n    \"text\": light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300))),\n    \"text-emphasis\": light-dark(var(--indigo-800), var(--indigo-300)),\n    \"bg\": var(--indigo-500),\n    \"bg-subtle\": light-dark(var(--indigo-100), var(--indigo-900)),\n    \"bg-muted\": light-dark(var(--indigo-200), var(--indigo-800)),\n    \"border\": light-dark(var(--indigo-300), var(--indigo-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"success\": (\n    \"base\": var(--green-500),\n    \"text\": light-dark(var(--green-600), var(--green-400)),\n    \"text-emphasis\": light-dark(var(--green-800), var(--green-300)),\n    \"bg\": var(--green-500),\n    \"bg-subtle\": light-dark(var(--green-100), var(--green-900)),\n    \"bg-muted\": light-dark(var(--green-200), var(--green-800)),\n    \"border\": light-dark(var(--green-300), var(--green-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"danger\": (\n    \"base\": var(--red-500),\n    \"text\": light-dark(var(--red-600), var(--red-400)),\n    \"text-emphasis\": light-dark(var(--red-800), var(--red-300)),\n    \"bg\": var(--red-500),\n    \"bg-subtle\": light-dark(var(--red-100), var(--red-900)),\n    \"bg-muted\": light-dark(var(--red-200), var(--red-800)),\n    \"border\": light-dark(var(--red-300), var(--red-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"warning\": (\n    \"base\": var(--yellow-500),\n    \"text\": light-dark(var(--yellow-700), var(--yellow-400)),\n    \"text-emphasis\": light-dark(var(--yellow-800), var(--yellow-300)),\n    \"bg\": var(--yellow-500),\n    \"bg-subtle\": light-dark(var(--yellow-100), var(--yellow-900)),\n    \"bg-muted\": light-dark(var(--yellow-200), var(--yellow-800)),\n    \"border\": light-dark(var(--yellow-300), var(--yellow-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"info\": (\n    \"base\": var(--cyan-500),\n    \"text\": light-dark(var(--cyan-600), var(--cyan-400)),\n    \"text-emphasis\": light-dark(var(--cyan-800), var(--cyan-300)),\n    \"bg\": var(--cyan-500),\n    \"bg-subtle\": light-dark(var(--cyan-100), var(--cyan-900)),\n    \"bg-muted\": light-dark(var(--cyan-200), var(--cyan-800)),\n    \"border\": light-dark(var(--cyan-300), var(--cyan-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"inverse\": (\n    \"base\": var(--gray-900),\n    \"text\": light-dark(var(--gray-900), var(--gray-200)),\n    \"text-emphasis\": light-dark(var(--gray-975), var(--white)),\n    \"bg\": light-dark(var(--gray-900), var(--gray-025)),\n    \"bg-subtle\": light-dark(var(--gray-100), var(--gray-900)),\n    \"bg-muted\": light-dark(var(--gray-200), var(--gray-300)),\n    \"border\": light-dark(var(--gray-400), var(--gray-100)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--white), var(--gray-900))\n  ),\n  \"secondary\": (\n    \"base\": var(--gray-200),\n    \"text\": light-dark(var(--gray-600), var(--gray-400)),\n    \"text-emphasis\": light-dark(var(--gray-800), var(--gray-200)),\n    \"bg\": light-dark(var(--gray-100), var(--gray-600)),\n    \"bg-subtle\": light-dark(var(--gray-050), var(--gray-800)),\n    \"bg-muted\": light-dark(var(--gray-100), var(--gray-700)),\n    \"border\": light-dark(var(--gray-300), var(--gray-600)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--gray-900), var(--white))\n  )\n) !default;\n// scss-docs-end theme-colors\n\n// mdo-do: consider using muted, subtle, ghost or something instead of linear scale?\n$theme-bgs: (\n  \"body\": light-dark(var(--white), var(--gray-975)),\n  \"1\": light-dark(var(--gray-025), var(--gray-950)),\n  \"2\": light-dark(var(--gray-050), var(--gray-900)),\n  \"3\": light-dark(var(--gray-100), var(--gray-800)),\n  \"4\": light-dark(var(--gray-200), var(--gray-700)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"transparent\": transparent,\n  \"inherit\": inherit,\n) !default;\n\n$theme-fgs: (\n  \"body\": light-dark(var(--gray-900), var(--gray-050)),\n  \"1\": light-dark(var(--gray-800), var(--gray-200)),\n  \"2\": light-dark(var(--gray-700), var(--gray-300)),\n  \"3\": light-dark(var(--gray-600), var(--gray-500)),\n  \"4\": light-dark(var(--gray-500), var(--gray-600)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"inherit\": inherit,\n) !default;\n\n$theme-borders: (\n  \"bg\": var(--bg-body),\n  \"body\": light-dark(var(--gray-300), var(--gray-800)),\n  \"muted\": light-dark(var(--gray-200), var(--gray-800)),\n  \"subtle\": light-dark(var(--gray-100), var(--gray-900)),\n  \"emphasized\": light-dark(var(--gray-400), var(--gray-600)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n) !default;\n\n$util-opacity: (\n  10: .1,\n  20: .2,\n  30: .3,\n  40: .4,\n  50: .5,\n  60: .6,\n  70: .7,\n  80: .8,\n  90: .9,\n  100: 1\n) !default;\n","@use \"../mixins/visually-hidden\" as *;\n\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","// stylelint-disable declaration-no-important\n\n// Hide content visually while keeping it accessible to assistive technologies\n//\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin visually-hidden() {\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n\n  // Fix for positioned table caption that could become anonymous cells\n  &:not(caption) {\n    position: absolute !important;\n  }\n\n  // Fix to prevent overflowing children to become focusable\n  * {\n    overflow: hidden !important;\n  }\n}\n\n// Use to only display content when it's focused, or one of its child elements is focused\n// (i.e. when focus is within the element/container that the class was applied to)\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/WAI/WCAG22/Techniques/general/G1.html\n\n@mixin visually-hidden-focusable() {\n  &:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","@use \"../variables\" as *;\n\n@layer helpers {\n  .stretched-link {\n    &::#{$stretched-link-pseudo-element} {\n      position: absolute;\n      inset: 0;\n      z-index: $stretched-link-z-index;\n      content: \"\";\n    }\n  }\n}\n","@use \"../mixins/text-truncate\" as *;\n\n@layer helpers {\n  .text-truncate {\n    @include text-truncate();\n  }\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n","@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n@use \"../mixins/utilities\" as *;\n@use \"../utilities\" as *;\n\n@layer utilities {\n  // Loop over each breakpoint\n  @each $breakpoint in map.keys($breakpoints) {\n\n    // Generate media query if needed\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if meta.type-of($utility) == \"map\" and (map.get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix);\n        }\n      }\n    }\n  }\n\n  // Print utilities\n  @media print {\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Then check if the utility needs print styles\n      @if meta.type-of($utility) == \"map\" and map.get($utility, print) == true {\n        @include generate-utility($utility, \"-print\");\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n\n// stylelint-disable scss/dollar-variable-pattern\n\n// Utility generator\n\n// - Utilities can use three different types of selectors:\n//   - class: .class\n//   - attr-starts: [class^=\"class\"]\n//   - attr-includes: [class*=\"class\"]\n// - Utilities can generate regular CSS properties and CSS custom properties\n// - Utilities can be responsive or not\n// - Utilities can have state variants (e.g., hover, focus, active)\n// - Utilities can define local CSS variables\n//\n// CSS custom properties can be generated in two ways:\n//\n// 1. Property map with null values (CSS var receives the utility value):\n// \"bg-color\": (\n//   property: (\n//     \"--bg\": null,\n//     \"background-color\": var(--bg)\n//   ),\n//   class: bg,\n//   values: (\n//     primary: var(--blue-500),\n//   )\n// )\n// Generates:\n// .bg-primary {\n//   --bs-bg: var(--bs-blue-500);\n//   background-color: var(--bs-bg);\n// }\n//\n// 2. Variables map (static CSS custom properties on every class):\n// \"link-underline\": (\n//   property: text-decoration-color,\n//   class: link-underline,\n//   variables: (\n//     \"link-underline-opacity\": 1\n//   ),\n//   values: (...)\n// )\n// Generates:\n// .link-underline {\n//   --bs-link-underline-opacity: 1;\n//   text-decoration-color: ...;\n// }\n\n// Helper mixin to generate CSS properties for both legacy and property map approaches\n@mixin generate-properties($utility, $propertyMap, $properties, $value) {\n  @if $propertyMap != null {\n    // New Property-Value Mapping approach\n    @each $property, $defaultValue in $propertyMap {\n      // If value is a map, check if it has a key for this property\n      // Otherwise, use defaultValue (or $value if defaultValue is null)\n      $actualValue: $defaultValue;\n      @if meta.type-of($value) == \"map\" and map.has-key($value, $property) {\n        $actualValue: map.get($value, $property);\n      } @else if $defaultValue == null {\n        $actualValue: $value;\n      }\n      @if map.get($utility, important) {\n        #{$property}: $actualValue !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $actualValue;\n      }\n    }\n  } @else {\n    // Legacy approach\n    @each $property in $properties {\n      @if map.get($utility, important) {\n        #{$property}: $value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $value;\n      }\n    }\n  }\n}\n\n@mixin generate-utility($utility, $infix: \"\") {\n  // Validate required keys\n  @if not map.has-key($utility, property) {\n    @error \"Utility is missing required `property` key: #{$utility}\";\n  }\n  @if not map.has-key($utility, values) {\n    @error \"Utility is missing required `values` key: #{$utility}\";\n  }\n\n  // Warn on unknown keys (likely typos)\n  $valid-keys: property, values, class, selector, responsive, print, important, state, variables;\n  @each $key in map.keys($utility) {\n    @if not list.index($valid-keys, $key) {\n      @warn \"Unknown utility key `#{$key}` found. Valid keys are: #{$valid-keys}\";\n    }\n  }\n\n  // Determine if we're generating a class, or an attribute selector\n  $selectorType: \"class\";\n  @if map.has-key($utility, selector) {\n    $selectorType: map.get($utility, selector);\n    // Validate selector type\n    $valid-selectors: \"class\", \"attr-starts\", \"attr-includes\";\n    @if not list.index($valid-selectors, $selectorType) {\n      @error \"Invalid `selector` value `#{$selectorType}`. Must be one of: #{$valid-selectors}\";\n    }\n  }\n  // Then get the class name to use in a class (e.g., .class) or in a attribute selector (e.g., [class^=\"class\"])\n  $selectorClass: map.get($utility, class);\n\n  // Attribute selectors require a `class` key\n  @if $selectorType != \"class\" and not map.has-key($utility, class) {\n    @error \"Utility with `selector: #{$selectorType}` requires a `class` key.\";\n  }\n\n  // Get the list or map of values and ensure it's a map\n  $values: map.get($utility, values);\n  @if meta.type-of($values) != \"map\" {\n    @if meta.type-of($values) == \"list\" {\n      $list: ();\n      @each $value in $values {\n        $list: map.merge($list, ($value: $value));\n      }\n      $values: $list;\n    } @else {\n      $values: (null: $values);\n    }\n  }\n\n  // Calculate infix once, before the loop\n  // Note: $infix already includes the leading dash from breakpoint-infix()\n  // $infix: if($infix == \"\", \"\", \"-\" + $infix);\n\n  @each $key, $value in $values {\n    $properties: map.get($utility, property);\n    $propertyMap: null;\n    $customClass: \"\";\n\n    // Check if property is a map (new Property-Value Mapping approach)\n    // @debug \"Properties type: #{meta.type-of($properties)}\";\n    // @debug \"Properties: #{$properties}\";\n    @if meta.type-of($properties) == \"map\" {\n      $propertyMap: $properties;\n      // For property maps, we need to determine the class from the utility definition\n      $customClass: \"\";\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      }\n    } @else {\n      // Legacy approach: Multiple properties are possible, for example with vertical or horizontal margins or paddings\n      @if meta.type-of($properties) == \"string\" {\n        $properties: list.append((), $properties);\n      }\n      // Use custom class if present, otherwise use the first value from the list of properties\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      } @else {\n        $customClass: list.nth($properties, 1);\n      }\n      @if $customClass == null {\n        $customClass: \"\";\n      }\n    }\n\n    // Use custom CSS variable name if present, otherwise default to `class`\n    // mdo-do: restore?\n    // $css-variable-name: if(map.has-key($utility, css-variable-name), map.get($utility, css-variable-name), map.get($utility, class));\n\n    // State params to generate state variants\n    $state: ();\n    @if map.has-key($utility, state) {\n      $state: map.get($utility, state);\n    }\n\n    // $infix: if($customClass == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (e.g. with shadow class)\n    $customClassModifier: \"\";\n    @if $key {\n      @if $customClass == \"\" and $infix == \"\" {\n        $customClassModifier: $key;\n      } @else {\n        $customClassModifier: \"-\" + $key;\n      }\n    }\n\n    $selector: \"\";\n    @if $selectorType == \"class\" {\n      // Use the fallback of the first property if no `class` key is used\n      @if $customClass != \"\" {\n        $selector: \".#{$customClass + $infix + $customClassModifier}\";\n      } @else {\n        $selector: \".#{$selectorClass + $infix + $customClassModifier}\";\n      }\n    } @else if $selectorType == \"attr-starts\" {\n      $selector: \"[class^=\\\"#{$selectorClass}\\\"]\";\n    } @else if $selectorType == \"attr-includes\" {\n      $selector: \"[class*=\\\"#{$selectorClass}\\\"]\";\n    }\n\n    // @debug $utility;\n    // @debug $selectorType;\n    // @debug $selector;\n    // @debug $properties;\n    // @debug $values;\n\n    #{$selector} {\n      // Generate CSS custom properties (variables) if provided\n      // Variables receive the current utility value, then properties reference them\n      @if map.has-key($utility, variables) {\n        $variables: map.get($utility, variables);\n        @if meta.type-of($variables) == \"list\" {\n          // If variables is a list, each variable gets the utility value\n          @each $var-name in $variables {\n            --#{$var-name}: #{$value};\n          }\n        } @else if meta.type-of($variables) == \"map\" {\n          // If variables is a map, use the provided values (for static variables)\n          @each $var-key, $var-value in $variables {\n            --#{$var-key}: #{$var-value};\n          }\n        }\n      }\n      @include generate-properties($utility, $propertyMap, $properties, $value);\n    }\n\n    // Generate state variants\n    @if $state != () {\n      @each $state-variant in $state {\n        #{$selector}-#{$state-variant}:#{$state-variant} {\n          // Generate CSS custom properties (variables) if provided\n          @if map.has-key($utility, variables) {\n            $variables: map.get($utility, variables);\n            @if meta.type-of($variables) == \"list\" {\n              // If variables is a list, each variable gets the utility value\n              @each $var-name in $variables {\n                --#{$var-name}: #{$value};\n              }\n            } @else if meta.type-of($variables) == \"map\" {\n              // If variables is a map, use the provided values (for static variables)\n              @each $var-key, $var-value in $variables {\n                --#{$var-key}: #{$var-value};\n              }\n            }\n          }\n          @include generate-properties($utility, $propertyMap, $properties, $value);\n        }\n      }\n    }\n  }\n}\n"],"names":[]}
\ No newline at end of file
+{"version":3,"sourceRoot":null,"mappings":";;;;;AEmGA,oubE1FA,8EAAA,eCRE,uDCGA,oMAQE,yGEWE,uCFXF,gCAYE,6HGnBJ,sDAMA,yDAWI,+CAMA,qDC6EF,sBDnFE,kDAMA,yDC6EF,sBDnFE,kDAMA,yDC6EF,uBDnFE,kDAMA,yDC6EF,uBDnFE,kDAMA,yDC6EF,uBDnFE,mDAMA,0DExBJ,4CAIA,0NAUE,mEAMA,mEDsLE,0BC5LF,sEAMA,uEDsLE,0BC5LF,sEAMA,uEDsLE,2BC5LF,sEAMA,uEDsLE,2BC5LF,sEAMA,uEDsLE,2BC5LF,uEAMA,wEEYA,saAAA,4ZAAA,saAAA,4ZAAA,saAAA,wYAAA,saAAA,0bCjCF,qQCeA,iIAKA,yGCnBE,qECDF,yEEFA,2JfQF,iBiBuMI,wCAAA,8BAAA,oCAAA,oCAAA,8CAAA,wCAAA,6CAAA,4BAAA,0BAAA,0BAAA,4BAAA,4BAAA,gCAAA,4BAAA,uBAAA,6DAAA,uDAAA,oDAAA,iEAAA,oDAAA,qBAAA,wBAAA,uBAAA,wBAAA,uBAAA,6BAAA,iCAAA,mCAAA,iCAAA,iCAAA,qCAAA,uCAAA,qCAAA,iCAAA,qCAAA,uCAAA,qCAAA,yBAAA,qCAAA,uBAAA,qBAAA,mCAAA,uBAAA,+BAAA,iCAAA,qBAAA,mCAAA,6BAAA,+BAAA,qBAAA,wCAAA,8CAAA,8CAAA,6BAAA,8KAAA,iLAAA,gLAAA,2KAAA,kLAAA,2KAAA,qIAAA,uIAAA,iCAAA,qCAAA,qCAAA,+BAAA,iCAAA,aAAA,gBAAA,kBAAA,mBAAA,sBAAA,wBAAA,gBAAA,mBAAA,qBAAA,eAAA,kBAAA,oBAAA,iDAAA,8CAAA,+CAAA,kFAAA,mBAAA,kGAAA,mCAAA,iGAAA,kCAAA,mGAAA,oCAAA,qGAAA,sCAAA,8FAAA,+BAAA,gGAAA,iCAAA,yFAAA,0FAAA,0FAAA,uFAAA,2FAAA,sFAAA,wHAAA,0HAAA,mFAAA,qHAAA,sHAAA,uHAAA,2HAAA,oFAAA,oFAAA,+HAAA,kIAAA,iIAAA,4HAAA,mIAAA,4HAAA,+HAAA,iIAAA,2BAAA,2BAAA,2BAAA,2BAAA,2BAAA,kFAAA,kFAAA,kFAAA,kFAAA,kFAAA,kFAAA,kFAAA,kFAAA,kFAAA,gDAAA,gBAAA,gBAAA,gBAAA,gBAAA,gBAAA,gBAAA,gBAAA,gBAAA,gBAAA,kBAAA,kBAAA,kBAAA,gBAAA,gBAAA,gBAAA,kBAAA,mBAAA,yBAAA,yBAAA,yBAAA,0BAAA,qBAAA,0BAAA,oBAAA,4BAAA,iBAAA,iBAAA,iBAAA,mBAAA,oBAAA,0BAAA,0BAAA,0BAAA,2BAAA,sBAAA,2BAAA,qBAAA,6BAAA,qBAAA,6BAAA,mCAAA,6CAAA,mDAAA,yBAAA,yBAAA,6BAAA,6BAAA,0BAAA,8BAAA,0CAAA,kDAAA,8CAAA,+CAAA,uDAAA,qDAAA,qDAAA,yCAAA,qCAAA,2CAAA,6CAAA,4CAAA,wCAAA,yCAAA,0CAAA,sCAAA,uCAAA,2CAAA,yCAAA,8CAAA,0CAAA,2CAAA,mDAAA,iDAAA,6CAAA,iCAAA,wCAAA,oCAAA,qCAAA,yCAAA,uCAAA,qCAAA,iCAAA,uCAAA,iDAAA,4BAAA,4BAAA,4BAAA,iCAAA,uCAAA,6CAAA,2CAAA,sBAAA,iBAAA,iBAAA,iBAAA,iBAAA,iBAAA,iBAAA,oBAAA,cAAA,mBAAA,kBAAA,iBAAA,mBAAA,iBAAA,oBAAA,sBAAA,2BAAA,0BAAA,yBAAA,2BAAA,yBAAA,4BAAA,qBAAA,0BAAA,yBAAA,wBAAA,0BAAA,wBAAA,2BAAA,2BAAA,gCAAA,+BAAA,8BAAA,gCAAA,8BAAA,iCAAA,0BAAA,+BAAA,8BAAA,6BAAA,+BAAA,6BAAA,gCAAA,yBAAA,8BAAA,6BAAA,4BAAA,8BAAA,4BAAA,+BAAA,4BAAA,iCAAA,gCAAA,+BAAA,iCAAA,+BAAA,mCAAA,kCAAA,kCAAA,eAAA,oBAAA,mBAAA,kBAAA,oBAAA,kBAAA,uBAAA,4BAAA,2BAAA,0BAAA,4BAAA,0BAAA,sBAAA,2BAAA,0BAAA,yBAAA,2BAAA,yBAAA,4BAAA,iCAAA,gCAAA,+BAAA,iCAAA,+BAAA,2BAAA,gCAAA,+BAAA,8BAAA,gCAAA,8BAAA,0BAAA,+BAAA,8BAAA,6BAAA,+BAAA,6BAAA,6BAAA,kCAAA,iCAAA,gCAAA,kCAAA,gCAAA,aAAA,kBAAA,iBAAA,gBAAA,kBAAA,gBAAA,qBAAA,0BAAA,yBAAA,wBAAA,0BAAA,wBAAA,6CAAA,uDAAA,qDAAA,mDAAA,uDAAA,mDAAA,gDAAA,kDAAA,wBAAA,yBAAA,sBAAA,qDAAA,sDAAA,mDAAA,sDAAA,sDAAA,8CAAA,sDAAA,2CAAA,2CAAA,wCAAA,uEAAA,4EAAA,yEAAA,wEAAA,wEAAA,gEAAA,sEAAA,8BAAA,8BAAA,gCAAA,0BAAA,2BAAA,2BAAA,6BAAA,yBAAA,8BAAA,oBAAA,wBAAA,yBAAA,qBAAA,6BAAA,yBAAA,+BAAA,2CAAA,qDAAA,2DAAA,yCAAA,yCAAA,2CAAA,4BAAA,gCAAA,kCAAA,gCAAA,uDAAA,yFAAA,qIAAA,2FAAA,sFAAA,6FAAA,sFAAA,yFAAA,2FAAA,sFAAA,mFAAA,mFAAA,mFAAA,mFAAA,qDAAA,qDAAA,+CAAA,kGAAA,qGAAA,oGAAA,+FAAA,sGAAA,+FAAA,+FAAA,oGAAA,6HAAA,qFAAA,+FAAA,iGAAA,6DAAA,6DAAA,6DAAA,6DAAA,6DAAA,6DAAA,6DAAA,6DAAA,6DAAA,2BAAA,4FAAA,4FAAA,4FAAA,4FAAA,4FAAA,4FAAA,4FAAA,4FAAA,4FAAA,2DAAA,iFAAA,gFAAA,iFAAA,2FAAA,uIAAA,6FAAA,wFAAA,+FAAA,wFAAA,2FAAA,6FAAA,sHAAA,sHAAA,sHAAA,sHAAA,sHAAA,sHAAA,sHAAA,sHAAA,sHAAA,qFAAA,wFAAA,wFAAA,wFAAA,wFAAA,wFAAA,qEAAA,sEAAA,sEAAA,mEAAA,uEAAA,kEAAA,oGAAA,sGAAA,8FAAA,8FAAA,8FAAA,8FAAA,8FAAA,gEAAA,gEAAA,kEAAA,0DAAA,2GAAA,8GAAA,6GAAA,wGAAA,+GAAA,wGAAA,2GAAA,6GAAA,0GAAA,6GAAA,4GAAA,uGAAA,8GAAA,uGAAA,0GAAA,4GAAA,wEAAA,wEAAA,wEAAA,wEAAA,wEAAA,wEAAA,wEAAA,wEAAA,wEAAA,sCAAA,mFAAA,oFAAA,2FAAA,wEAAA,iDAAA,iCAAA,mCAAA,mCAAA,mCAAA,6BAAA,6BAAA,+CAAA,2BAAA,oDAAA,iDAAA,oDAAA,oDAAA,qDAAA,kCAAA,yDAAA,+GAAA,qEAAA,uHAAA,iHAAA,uHAAA,uHAAA,yHAAA,8EAAA,8HAAA,2GAAA,iEAAA,mHAAA,6GAAA,mHAAA,mHAAA,qHAAA,0EAAA,0HAAA,8GAAA,oEAAA,sHAAA,gHAAA,sHAAA,sHAAA,wHAAA,6EAAA,6HAAA,iHAAA,uEAAA,yHAAA,mHAAA,yHAAA,yHAAA,2HAAA,gFAAA,gIAAA,4BAAA,6BAAA,iBAAA,eAAA,eAAA,eAAA,eXvGA,sBWuGA,mCAAA,+BAAA,0BAAA,gEAAA,0DAAA,uDAAA,oEAAA,uDAAA,4BAAA,wCAAA,0BAAA,wBAAA,sCAAA,0BAAA,kCAAA,oCAAA,wBAAA,sCAAA,gCAAA,kCAAA,wBAAA,wBAAA,gCAAA,sCAAA,gDAAA,sDAAA,4BAAA,4BAAA,gCAAA,gCAAA,6BAAA,iCAAA,6CAAA,qDAAA,iDAAA,kDAAA,0DAAA,wDAAA,wDAAA,4CAAA,wCAAA,8CAAA,gDAAA,+CAAA,2CAAA,4CAAA,6CAAA,yCAAA,0CAAA,8CAAA,4CAAA,iDAAA,6CAAA,8CAAA,sDAAA,oDAAA,gDAAA,oCAAA,2CAAA,uCAAA,wCAAA,4CAAA,0CAAA,wCAAA,oCAAA,0CAAA,oDAAA,+BAAA,+BAAA,+BAAA,oCAAA,0CAAA,gDAAA,8CAAA,yBAAA,oBAAA,oBAAA,oBAAA,oBAAA,oBAAA,oBAAA,uBAAA,iBAAA,sBAAA,qBAAA,oBAAA,sBAAA,oBAAA,uBAAA,yBAAA,8BAAA,6BAAA,4BAAA,8BAAA,4BAAA,+BAAA,wBAAA,6BAAA,4BAAA,2BAAA,6BAAA,2BAAA,8BAAA,8BAAA,mCAAA,kCAAA,iCAAA,mCAAA,iCAAA,oCAAA,6BAAA,kCAAA,iCAAA,gCAAA,kCAAA,gCAAA,mCAAA,4BAAA,iCAAA,gCAAA,+BAAA,iCAAA,+BAAA,kCAAA,+BAAA,oCAAA,mCAAA,kCAAA,oCAAA,kCAAA,sCAAA,qCAAA,qCAAA,kBAAA,uBAAA,sBAAA,qBAAA,uBAAA,qBAAA,0BAAA,+BAAA,8BAAA,6BAAA,+BAAA,6BAAA,yBAAA,8BAAA,6BAAA,4BAAA,8BAAA,4BAAA,+BAAA,oCAAA,mCAAA,kCAAA,oCAAA,kCAAA,8BAAA,mCAAA,kCAAA,iCAAA,mCAAA,iCAAA,6BAAA,kCAAA,iCAAA,gCAAA,kCAAA,gCAAA,gCAAA,qCAAA,oCAAA,mCAAA,qCAAA,mCAAA,gBAAA,qBAAA,oBAAA,mBAAA,qBAAA,mBAAA,wBAAA,6BAAA,4BAAA,2BAAA,6BAAA,2BAAA,gDAAA,0DAAA,wDAAA,sDAAA,0DAAA,sDAAA,gCAAA,4BAAA,mCXvGA,sBWuGA,mCAAA,+BAAA,0BAAA,gEAAA,0DAAA,uDAAA,oEAAA,uDAAA,4BAAA,wCAAA,0BAAA,wBAAA,sCAAA,0BAAA,kCAAA,oCAAA,wBAAA,sCAAA,gCAAA,kCAAA,wBAAA,wBAAA,gCAAA,sCAAA,gDAAA,sDAAA,4BAAA,4BAAA,gCAAA,gCAAA,6BAAA,iCAAA,6CAAA,qDAAA,iDAAA,kDAAA,0DAAA,wDAAA,wDAAA,4CAAA,wCAAA,8CAAA,gDAAA,+CAAA,2CAAA,4CAAA,6CAAA,yCAAA,0CAAA,8CAAA,4CAAA,iDAAA,6CAAA,8CAAA,sDAAA,oDAAA,gDAAA,oCAAA,2CAAA,uCAAA,wCAAA,4CAAA,0CAAA,wCAAA,oCAAA,0CAAA,oDAAA,+BAAA,+BAAA,+BAAA,oCAAA,0CAAA,gDAAA,8CAAA,yBAAA,oBAAA,oBAAA,oBAAA,oBAAA,oBAAA,oBAAA,uBAAA,iBAAA,sBAAA,qBAAA,oBAAA,sBAAA,oBAAA,uBAAA,yBAAA,8BAAA,6BAAA,4BAAA,8BAAA,4BAAA,+BAAA,wBAAA,6BAAA,4BAAA,2BAAA,6BAAA,2BAAA,8BAAA,8BAAA,mCAAA,kCAAA,iCAAA,mCAAA,iCAAA,oCAAA,6BAAA,kCAAA,iCAAA,gCAAA,kCAAA,gCAAA,mCAAA,4BAAA,iCAAA,gCAAA,+BAAA,iCAAA,+BAAA,kCAAA,+BAAA,oCAAA,mCAAA,kCAAA,oCAAA,kCAAA,sCAAA,qCAAA,qCAAA,kBAAA,uBAAA,sBAAA,qBAAA,uBAAA,qBAAA,0BAAA,+BAAA,8BAAA,6BAAA,+BAAA,6BAAA,yBAAA,8BAAA,6BAAA,4BAAA,8BAAA,4BAAA,+BAAA,oCAAA,mCAAA,kCAAA,oCAAA,kCAAA,8BAAA,mCAAA,kCAAA,iCAAA,mCAAA,iCAAA,6BAAA,kCAAA,iCAAA,gCAAA,kCAAA,gCAAA,gCAAA,qCAAA,oCAAA,mCAAA,qCAAA,mCAAA,gBAAA,qBAAA,oBAAA,mBAAA,qBAAA,mBAAA,wBAAA,6BAAA,4BAAA,2BAAA,6BAAA,2BAAA,gDAAA,0DAAA,wDAAA,sDAAA,0DAAA,sDAAA,gCAAA,4BAAA,mCXvGA,uBWuGA,mCAAA,+BAAA,0BAAA,gEAAA,0DAAA,uDAAA,oEAAA,uDAAA,4BAAA,wCAAA,0BAAA,wBAAA,sCAAA,0BAAA,kCAAA,oCAAA,wBAAA,sCAAA,gCAAA,kCAAA,wBAAA,wBAAA,gCAAA,sCAAA,gDAAA,sDAAA,4BAAA,4BAAA,gCAAA,gCAAA,6BAAA,iCAAA,6CAAA,qDAAA,iDAAA,kDAAA,0DAAA,wDAAA,wDAAA,4CAAA,wCAAA,8CAAA,gDAAA,+CAAA,2CAAA,4CAAA,6CAAA,yCAAA,0CAAA,8CAAA,4CAAA,iDAAA,6CAAA,8CAAA,sDAAA,oDAAA,gDAAA,oCAAA,2CAAA,uCAAA,wCAAA,4CAAA,0CAAA,wCAAA,oCAAA,0CAAA,oDAAA,+BAAA,+BAAA,+BAAA,oCAAA,0CAAA,gDAAA,8CAAA,yBAAA,oBAAA,oBAAA,oBAAA,oBAAA,oBAAA,oBAAA,uBAAA,iBAAA,sBAAA,qBAAA,oBAAA,sBAAA,oBAAA,uBAAA,yBAAA,8BAAA,6BAAA,4BAAA,8BAAA,4BAAA,+BAAA,wBAAA,6BAAA,4BAAA,2BAAA,6BAAA,2BAAA,8BAAA,8BAAA,mCAAA,kCAAA,iCAAA,mCAAA,iCAAA,oCAAA,6BAAA,kCAAA,iCAAA,gCAAA,kCAAA,gCAAA,mCAAA,4BAAA,iCAAA,gCAAA,+BAAA,iCAAA,+BAAA,kCAAA,+BAAA,oCAAA,mCAAA,kCAAA,oCAAA,kCAAA,sCAAA,qCAAA,qCAAA,kBAAA,uBAAA,sBAAA,qBAAA,uBAAA,qBAAA,0BAAA,+BAAA,8BAAA,6BAAA,+BAAA,6BAAA,yBAAA,8BAAA,6BAAA,4BAAA,8BAAA,4BAAA,+BAAA,oCAAA,mCAAA,kCAAA,oCAAA,kCAAA,8BAAA,mCAAA,kCAAA,iCAAA,mCAAA,iCAAA,6BAAA,kCAAA,iCAAA,gCAAA,kCAAA,gCAAA,gCAAA,qCAAA,oCAAA,mCAAA,qCAAA,mCAAA,gBAAA,qBAAA,oBAAA,mBAAA,qBAAA,mBAAA,wBAAA,6BAAA,4BAAA,2BAAA,6BAAA,2BAAA,gDAAA,0DAAA,wDAAA,sDAAA,0DAAA,sDAAA,gCAAA,4BAAA,mCXvGA,uBWuGA,mCAAA,+BAAA,0BAAA,gEAAA,0DAAA,uDAAA,oEAAA,uDAAA,4BAAA,wCAAA,0BAAA,wBAAA,sCAAA,0BAAA,kCAAA,oCAAA,wBAAA,sCAAA,gCAAA,kCAAA,wBAAA,wBAAA,gCAAA,sCAAA,gDAAA,sDAAA,4BAAA,4BAAA,gCAAA,gCAAA,6BAAA,iCAAA,6CAAA,qDAAA,iDAAA,kDAAA,0DAAA,wDAAA,wDAAA,4CAAA,wCAAA,8CAAA,gDAAA,+CAAA,2CAAA,4CAAA,6CAAA,yCAAA,0CAAA,8CAAA,4CAAA,iDAAA,6CAAA,8CAAA,sDAAA,oDAAA,gDAAA,oCAAA,2CAAA,uCAAA,wCAAA,4CAAA,0CAAA,wCAAA,oCAAA,0CAAA,oDAAA,+BAAA,+BAAA,+BAAA,oCAAA,0CAAA,gDAAA,8CAAA,yBAAA,oBAAA,oBAAA,oBAAA,oBAAA,oBAAA,oBAAA,uBAAA,iBAAA,sBAAA,qBAAA,oBAAA,sBAAA,oBAAA,uBAAA,yBAAA,8BAAA,6BAAA,4BAAA,8BAAA,4BAAA,+BAAA,wBAAA,6BAAA,4BAAA,2BAAA,6BAAA,2BAAA,8BAAA,8BAAA,mCAAA,kCAAA,iCAAA,mCAAA,iCAAA,oCAAA,6BAAA,kCAAA,iCAAA,gCAAA,kCAAA,gCAAA,mCAAA,4BAAA,iCAAA,gCAAA,+BAAA,iCAAA,+BAAA,kCAAA,+BAAA,oCAAA,mCAAA,kCAAA,oCAAA,kCAAA,sCAAA,qCAAA,qCAAA,kBAAA,uBAAA,sBAAA,qBAAA,uBAAA,qBAAA,0BAAA,+BAAA,8BAAA,6BAAA,+BAAA,6BAAA,yBAAA,8BAAA,6BAAA,4BAAA,8BAAA,4BAAA,+BAAA,oCAAA,mCAAA,kCAAA,oCAAA,kCAAA,8BAAA,mCAAA,kCAAA,iCAAA,mCAAA,iCAAA,6BAAA,kCAAA,iCAAA,gCAAA,kCAAA,gCAAA,gCAAA,qCAAA,oCAAA,mCAAA,qCAAA,mCAAA,gBAAA,qBAAA,oBAAA,mBAAA,qBAAA,mBAAA,wBAAA,6BAAA,4BAAA,2BAAA,6BAAA,2BAAA,gDAAA,0DAAA,wDAAA,sDAAA,0DAAA,sDAAA,gCAAA,4BAAA,mCXvGA,uBWuGA,oCAAA,gCAAA,2BAAA,iEAAA,2DAAA,wDAAA,qEAAA,wDAAA,6BAAA,yCAAA,2BAAA,yBAAA,uCAAA,2BAAA,mCAAA,qCAAA,yBAAA,uCAAA,iCAAA,mCAAA,yBAAA,yBAAA,iCAAA,uCAAA,iDAAA,uDAAA,6BAAA,6BAAA,iCAAA,iCAAA,8BAAA,kCAAA,8CAAA,sDAAA,kDAAA,mDAAA,2DAAA,yDAAA,yDAAA,6CAAA,yCAAA,+CAAA,iDAAA,gDAAA,4CAAA,6CAAA,8CAAA,0CAAA,2CAAA,+CAAA,6CAAA,kDAAA,8CAAA,+CAAA,uDAAA,qDAAA,iDAAA,qCAAA,4CAAA,wCAAA,yCAAA,6CAAA,2CAAA,yCAAA,qCAAA,2CAAA,qDAAA,gCAAA,gCAAA,gCAAA,qCAAA,2CAAA,iDAAA,+CAAA,0BAAA,qBAAA,qBAAA,qBAAA,qBAAA,qBAAA,qBAAA,wBAAA,kBAAA,uBAAA,sBAAA,qBAAA,uBAAA,qBAAA,wBAAA,0BAAA,+BAAA,8BAAA,6BAAA,+BAAA,6BAAA,gCAAA,yBAAA,8BAAA,6BAAA,4BAAA,8BAAA,4BAAA,+BAAA,+BAAA,oCAAA,mCAAA,kCAAA,oCAAA,kCAAA,qCAAA,8BAAA,mCAAA,kCAAA,iCAAA,mCAAA,iCAAA,oCAAA,6BAAA,kCAAA,iCAAA,gCAAA,kCAAA,gCAAA,mCAAA,gCAAA,qCAAA,oCAAA,mCAAA,qCAAA,mCAAA,uCAAA,sCAAA,sCAAA,mBAAA,wBAAA,uBAAA,sBAAA,wBAAA,sBAAA,2BAAA,gCAAA,+BAAA,8BAAA,gCAAA,8BAAA,0BAAA,+BAAA,8BAAA,6BAAA,+BAAA,6BAAA,gCAAA,qCAAA,oCAAA,mCAAA,qCAAA,mCAAA,+BAAA,oCAAA,mCAAA,kCAAA,oCAAA,kCAAA,8BAAA,mCAAA,kCAAA,iCAAA,mCAAA,iCAAA,iCAAA,sCAAA,qCAAA,oCAAA,sCAAA,oCAAA,iBAAA,sBAAA,qBAAA,oBAAA,sBAAA,oBAAA,yBAAA,8BAAA,6BAAA,4BAAA,8BAAA,4BAAA,iDAAA,2DAAA,yDAAA,uDAAA,2DAAA,uDAAA,iCAAA,6BAAA,qCjBnCJ,0uUAMA,uCAIA","sources":["bootstrap-utilities.css","../../scss/_banner.scss","../../scss/_colors.scss","../../scss/mixins/_tokens.scss","../../scss/_root.scss","../../scss/helpers/_focus-ring.scss","../../scss/helpers/_icon-link.scss","../../scss/_config.scss","../../scss/mixins/_transition.scss","../../scss/helpers/_position.scss","../../scss/layout/_breakpoints.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_theme-colors.scss","../../scss/_theme.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/utilities/_api.scss","../../scss/mixins/_utilities.scss"],"sourcesContent":["/*!\n  * Bootstrap Utilities v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n:root {\n  --blue-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.24 240deg));\n  --blue-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.24 240deg));\n  --blue-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.24 240deg));\n  --blue-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.24 240deg));\n  --blue-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.24 240deg));\n  --blue-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.24 240deg));\n  --blue-500: oklch(60% 0.24 240deg);\n  --blue-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.24 240deg));\n  --blue-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.24 240deg));\n  --blue-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.24 240deg));\n  --blue-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.24 240deg));\n  --blue-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.24 240deg));\n  --blue-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.24 240deg));\n  --indigo-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.26 288deg));\n  --indigo-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.26 288deg));\n  --indigo-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.26 288deg));\n  --indigo-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.26 288deg));\n  --indigo-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.26 288deg));\n  --indigo-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.26 288deg));\n  --indigo-500: oklch(56% 0.26 288deg);\n  --indigo-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.26 288deg));\n  --indigo-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.26 288deg));\n  --indigo-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.26 288deg));\n  --indigo-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.26 288deg));\n  --indigo-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.26 288deg));\n  --indigo-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.26 288deg));\n  --violet-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 300deg));\n  --violet-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 300deg));\n  --violet-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 300deg));\n  --violet-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 300deg));\n  --violet-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 300deg));\n  --violet-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 300deg));\n  --violet-500: oklch(56% 0.24 300deg);\n  --violet-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 300deg));\n  --violet-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 300deg));\n  --violet-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 300deg));\n  --violet-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 300deg));\n  --violet-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 300deg));\n  --violet-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 300deg));\n  --purple-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 320deg));\n  --purple-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 320deg));\n  --purple-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 320deg));\n  --purple-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 320deg));\n  --purple-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 320deg));\n  --purple-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 320deg));\n  --purple-500: oklch(56% 0.24 320deg);\n  --purple-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 320deg));\n  --purple-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 320deg));\n  --purple-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 320deg));\n  --purple-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 320deg));\n  --purple-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 320deg));\n  --purple-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 320deg));\n  --pink-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 4deg));\n  --pink-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 4deg));\n  --pink-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 4deg));\n  --pink-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 4deg));\n  --pink-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 4deg));\n  --pink-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 4deg));\n  --pink-500: oklch(60% 0.22 4deg);\n  --pink-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 4deg));\n  --pink-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 4deg));\n  --pink-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 4deg));\n  --pink-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 4deg));\n  --pink-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 4deg));\n  --pink-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 4deg));\n  --red-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 20deg));\n  --red-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 20deg));\n  --red-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 20deg));\n  --red-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 20deg));\n  --red-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 20deg));\n  --red-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 20deg));\n  --red-500: oklch(60% 0.22 20deg);\n  --red-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 20deg));\n  --red-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 20deg));\n  --red-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 20deg));\n  --red-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 20deg));\n  --red-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 20deg));\n  --red-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 20deg));\n  --orange-025: color-mix(in lab, var(--white) 94%, oklch(70% 0.22 52deg));\n  --orange-050: color-mix(in lab, var(--white) 90%, oklch(70% 0.22 52deg));\n  --orange-100: color-mix(in lab, var(--white) 80%, oklch(70% 0.22 52deg));\n  --orange-200: color-mix(in lab, var(--white) 60%, oklch(70% 0.22 52deg));\n  --orange-300: color-mix(in lab, var(--white) 40%, oklch(70% 0.22 52deg));\n  --orange-400: color-mix(in lab, var(--white) 20%, oklch(70% 0.22 52deg));\n  --orange-500: oklch(70% 0.22 52deg);\n  --orange-600: color-mix(in lab, var(--black) 16%, oklch(70% 0.22 52deg));\n  --orange-700: color-mix(in lab, var(--black) 32%, oklch(70% 0.22 52deg));\n  --orange-800: color-mix(in lab, var(--black) 48%, oklch(70% 0.22 52deg));\n  --orange-900: color-mix(in lab, var(--black) 64%, oklch(70% 0.22 52deg));\n  --orange-950: color-mix(in lab, var(--black) 76%, oklch(70% 0.22 52deg));\n  --orange-975: color-mix(in lab, var(--black) 88%, oklch(70% 0.22 52deg));\n  --amber-025: color-mix(in lab, var(--white) 94%, oklch(79% 0.2 78deg));\n  --amber-050: color-mix(in lab, var(--white) 90%, oklch(79% 0.2 78deg));\n  --amber-100: color-mix(in lab, var(--white) 80%, oklch(79% 0.2 78deg));\n  --amber-200: color-mix(in lab, var(--white) 60%, oklch(79% 0.2 78deg));\n  --amber-300: color-mix(in lab, var(--white) 40%, oklch(79% 0.2 78deg));\n  --amber-400: color-mix(in lab, var(--white) 20%, oklch(79% 0.2 78deg));\n  --amber-500: oklch(79% 0.2 78deg);\n  --amber-600: color-mix(in lab, var(--black) 16%, oklch(79% 0.2 78deg));\n  --amber-700: color-mix(in lab, var(--black) 32%, oklch(79% 0.2 78deg));\n  --amber-800: color-mix(in lab, var(--black) 48%, oklch(79% 0.2 78deg));\n  --amber-900: color-mix(in lab, var(--black) 64%, oklch(79% 0.2 78deg));\n  --amber-950: color-mix(in lab, var(--black) 76%, oklch(79% 0.2 78deg));\n  --amber-975: color-mix(in lab, var(--black) 88%, oklch(79% 0.2 78deg));\n  --yellow-025: color-mix(in lab, var(--white) 94%, oklch(88% 0.24 88deg));\n  --yellow-050: color-mix(in lab, var(--white) 90%, oklch(88% 0.24 88deg));\n  --yellow-100: color-mix(in lab, var(--white) 80%, oklch(88% 0.24 88deg));\n  --yellow-200: color-mix(in lab, var(--white) 60%, oklch(88% 0.24 88deg));\n  --yellow-300: color-mix(in lab, var(--white) 40%, oklch(88% 0.24 88deg));\n  --yellow-400: color-mix(in lab, var(--white) 20%, oklch(88% 0.24 88deg));\n  --yellow-500: oklch(88% 0.24 88deg);\n  --yellow-600: color-mix(in lab, var(--black) 16%, oklch(88% 0.24 88deg));\n  --yellow-700: color-mix(in lab, var(--black) 32%, oklch(88% 0.24 88deg));\n  --yellow-800: color-mix(in lab, var(--black) 48%, oklch(88% 0.24 88deg));\n  --yellow-900: color-mix(in lab, var(--black) 64%, oklch(88% 0.24 88deg));\n  --yellow-950: color-mix(in lab, var(--black) 76%, oklch(88% 0.24 88deg));\n  --yellow-975: color-mix(in lab, var(--black) 88%, oklch(88% 0.24 88deg));\n  --lime-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.24 135deg));\n  --lime-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.24 135deg));\n  --lime-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.24 135deg));\n  --lime-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.24 135deg));\n  --lime-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.24 135deg));\n  --lime-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.24 135deg));\n  --lime-500: oklch(65% 0.24 135deg);\n  --lime-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.24 135deg));\n  --lime-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.24 135deg));\n  --lime-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.24 135deg));\n  --lime-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.24 135deg));\n  --lime-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.24 135deg));\n  --lime-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.24 135deg));\n  --green-025: color-mix(in lab, var(--white) 94%, oklch(64% 0.22 160deg));\n  --green-050: color-mix(in lab, var(--white) 90%, oklch(64% 0.22 160deg));\n  --green-100: color-mix(in lab, var(--white) 80%, oklch(64% 0.22 160deg));\n  --green-200: color-mix(in lab, var(--white) 60%, oklch(64% 0.22 160deg));\n  --green-300: color-mix(in lab, var(--white) 40%, oklch(64% 0.22 160deg));\n  --green-400: color-mix(in lab, var(--white) 20%, oklch(64% 0.22 160deg));\n  --green-500: oklch(64% 0.22 160deg);\n  --green-600: color-mix(in lab, var(--black) 16%, oklch(64% 0.22 160deg));\n  --green-700: color-mix(in lab, var(--black) 32%, oklch(64% 0.22 160deg));\n  --green-800: color-mix(in lab, var(--black) 48%, oklch(64% 0.22 160deg));\n  --green-900: color-mix(in lab, var(--black) 64%, oklch(64% 0.22 160deg));\n  --green-950: color-mix(in lab, var(--black) 76%, oklch(64% 0.22 160deg));\n  --green-975: color-mix(in lab, var(--black) 88%, oklch(64% 0.22 160deg));\n  --teal-025: color-mix(in lab, var(--white) 94%, oklch(68% 0.22 190deg));\n  --teal-050: color-mix(in lab, var(--white) 90%, oklch(68% 0.22 190deg));\n  --teal-100: color-mix(in lab, var(--white) 80%, oklch(68% 0.22 190deg));\n  --teal-200: color-mix(in lab, var(--white) 60%, oklch(68% 0.22 190deg));\n  --teal-300: color-mix(in lab, var(--white) 40%, oklch(68% 0.22 190deg));\n  --teal-400: color-mix(in lab, var(--white) 20%, oklch(68% 0.22 190deg));\n  --teal-500: oklch(68% 0.22 190deg);\n  --teal-600: color-mix(in lab, var(--black) 16%, oklch(68% 0.22 190deg));\n  --teal-700: color-mix(in lab, var(--black) 32%, oklch(68% 0.22 190deg));\n  --teal-800: color-mix(in lab, var(--black) 48%, oklch(68% 0.22 190deg));\n  --teal-900: color-mix(in lab, var(--black) 64%, oklch(68% 0.22 190deg));\n  --teal-950: color-mix(in lab, var(--black) 76%, oklch(68% 0.22 190deg));\n  --teal-975: color-mix(in lab, var(--black) 88%, oklch(68% 0.22 190deg));\n  --cyan-025: color-mix(in lab, var(--white) 94%, oklch(69% 0.22 220deg));\n  --cyan-050: color-mix(in lab, var(--white) 90%, oklch(69% 0.22 220deg));\n  --cyan-100: color-mix(in lab, var(--white) 80%, oklch(69% 0.22 220deg));\n  --cyan-200: color-mix(in lab, var(--white) 60%, oklch(69% 0.22 220deg));\n  --cyan-300: color-mix(in lab, var(--white) 40%, oklch(69% 0.22 220deg));\n  --cyan-400: color-mix(in lab, var(--white) 20%, oklch(69% 0.22 220deg));\n  --cyan-500: oklch(69% 0.22 220deg);\n  --cyan-600: color-mix(in lab, var(--black) 16%, oklch(69% 0.22 220deg));\n  --cyan-700: color-mix(in lab, var(--black) 32%, oklch(69% 0.22 220deg));\n  --cyan-800: color-mix(in lab, var(--black) 48%, oklch(69% 0.22 220deg));\n  --cyan-900: color-mix(in lab, var(--black) 64%, oklch(69% 0.22 220deg));\n  --cyan-950: color-mix(in lab, var(--black) 76%, oklch(69% 0.22 220deg));\n  --cyan-975: color-mix(in lab, var(--black) 88%, oklch(69% 0.22 220deg));\n  --brown-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.12 54deg));\n  --brown-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.12 54deg));\n  --brown-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.12 54deg));\n  --brown-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.12 54deg));\n  --brown-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.12 54deg));\n  --brown-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.12 54deg));\n  --brown-500: oklch(60% 0.12 54deg);\n  --brown-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.12 54deg));\n  --brown-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.12 54deg));\n  --brown-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.12 54deg));\n  --brown-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.12 54deg));\n  --brown-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.12 54deg));\n  --brown-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.12 54deg));\n  --gray-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.02 245deg));\n  --gray-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.02 245deg));\n  --gray-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.02 245deg));\n  --gray-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.02 245deg));\n  --gray-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.02 245deg));\n  --gray-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.02 245deg));\n  --gray-500: oklch(60% 0.02 245deg);\n  --gray-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.02 245deg));\n  --gray-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.02 245deg));\n  --gray-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.02 245deg));\n  --gray-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.02 245deg));\n  --gray-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.02 245deg));\n  --gray-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.02 245deg));\n  --pewter-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.01 290deg));\n  --pewter-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.01 290deg));\n  --pewter-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.01 290deg));\n  --pewter-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.01 290deg));\n  --pewter-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.01 290deg));\n  --pewter-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.01 290deg));\n  --pewter-500: oklch(65% 0.01 290deg);\n  --pewter-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.01 290deg));\n  --pewter-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.01 290deg));\n  --pewter-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.01 290deg));\n  --pewter-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.01 290deg));\n  --pewter-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.01 290deg));\n  --pewter-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.01 290deg));\n}\n\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n:root {\n  --black: #000;\n  --white: #fff;\n  --gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent));\n  --font-weight-lighter: lighter;\n  --font-weight-light: 300;\n  --font-weight-normal: 400;\n  --font-weight-medium: 500;\n  --font-weight-semibold: 600;\n  --font-weight-bold: 700;\n  --font-weight-bolder: bolder;\n  --body-font-family: system-ui;\n  --body-font-size: var(--font-size-base);\n  --body-font-weight: 400;\n  --body-line-height: 1.5;\n  --heading-color: inherit;\n  --hr-border-color: var(--border-color);\n  --link-color: light-dark(var(--primary-base), var(--primary-text));\n  --link-decoration: underline;\n  --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000);\n  --font-mono: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;\n  --code-font-size: 95%;\n  --code-color: var(--fg-2);\n  --border-width: 1px;\n  --border-style: solid;\n  --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700));\n  --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent);\n  --border-radius: 0.5rem;\n  --border-radius-xs: 0.375rem;\n  --border-radius-sm: 0.5rem;\n  --border-radius-lg: 0.75rem;\n  --border-radius-xl: 1rem;\n  --border-radius-2xl: 2rem;\n  --border-radius-pill: 50rem;\n  --box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  --box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n  --box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n  --box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n  --spacer: 1rem;\n  --focus-ring-width: 3px;\n  --focus-ring-offset: 1px;\n  --focus-ring-color: var(--primary-focus-ring);\n  --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color);\n  --control-checked-bg: var(--primary-base);\n  --control-checked-border-color: var(--control-checked-bg);\n  --control-active-bg: var(--primary-base);\n  --control-active-border-color: var(--control-active-bg);\n  --control-disabled-bg: var(--bg-3);\n  --control-disabled-opacity: 0.65;\n  --btn-input-fg: var(--fg-body);\n  --btn-input-bg: var(--bg-body);\n  --btn-input-min-height: 2.375rem;\n  --btn-input-padding-y: 0.375rem;\n  --btn-input-padding-x: 0.75rem;\n  --btn-input-font-size: var(--font-size-base);\n  --btn-input-line-height: var(--line-height-base);\n  --btn-input-border-radius: var(--border-radius);\n  --btn-input-xs-min-height: 1.5rem;\n  --btn-input-xs-padding-y: 0.125rem;\n  --btn-input-xs-padding-x: 0.5rem;\n  --btn-input-xs-font-size: var(--font-size-xs);\n  --btn-input-xs-line-height: 1.125;\n  --btn-input-xs-border-radius: var(--border-radius-xs);\n  --btn-input-sm-min-height: 2rem;\n  --btn-input-sm-padding-y: 0.25rem;\n  --btn-input-sm-padding-x: 0.625rem;\n  --btn-input-sm-font-size: var(--font-size-sm);\n  --btn-input-sm-line-height: var(--line-height-sm);\n  --btn-input-sm-border-radius: var(--border-radius-sm);\n  --btn-input-lg-min-height: 2.75rem;\n  --btn-input-lg-padding-y: 0.5rem;\n  --btn-input-lg-padding-x: 1rem;\n  --btn-input-lg-font-size: var(--font-size-md);\n  --btn-input-lg-line-height: var(--line-height-md);\n  --btn-input-lg-border-radius: var(--border-radius-lg);\n  --form-valid-color: var(--success-text);\n  --form-valid-border-color: var(--success-text);\n  --form-invalid-color: var(--danger-text);\n  --form-invalid-border-color: var(--danger-text);\n  --font-size-xs: 0.75rem;\n  --line-height-xs: 1.25;\n  --font-size-sm: 0.875rem;\n  --line-height-sm: 1.5;\n  --font-size-md: 1rem;\n  --line-height-md: 1.5;\n  --font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  --line-height-lg: 1.5;\n  --font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  --line-height-xl: 1.4285714286;\n  --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  --line-height-2xl: 1.3333333333;\n  --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  --line-height-3xl: 1.2;\n  --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  --line-height-4xl: 1.1;\n  --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);\n  --line-height-5xl: 1.1;\n  --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  --line-height-6xl: 1;\n  --primary-base: var(--blue-500);\n  --primary-text: light-dark(var(--blue-600), var(--blue-400));\n  --primary-text-emphasis: light-dark(var(--blue-800), var(--blue-200));\n  --primary-bg: var(--blue-500);\n  --primary-bg-subtle: light-dark(var(--blue-100), var(--blue-900));\n  --primary-bg-muted: light-dark(var(--blue-200), var(--blue-800));\n  --primary-border: light-dark(var(--blue-300), var(--blue-600));\n  --primary-focus-ring: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  --primary-contrast: var(--white);\n  --accent-base: var(--indigo-500);\n  --accent-text: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  --accent-text-emphasis: light-dark(var(--indigo-800), var(--indigo-300));\n  --accent-bg: var(--indigo-500);\n  --accent-bg-subtle: light-dark(var(--indigo-100), var(--indigo-900));\n  --accent-bg-muted: light-dark(var(--indigo-200), var(--indigo-800));\n  --accent-border: light-dark(var(--indigo-300), var(--indigo-600));\n  --accent-focus-ring: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  --accent-contrast: var(--white);\n  --success-base: var(--green-500);\n  --success-text: light-dark(var(--green-600), var(--green-400));\n  --success-text-emphasis: light-dark(var(--green-800), var(--green-300));\n  --success-bg: var(--green-500);\n  --success-bg-subtle: light-dark(var(--green-100), var(--green-900));\n  --success-bg-muted: light-dark(var(--green-200), var(--green-800));\n  --success-border: light-dark(var(--green-300), var(--green-600));\n  --success-focus-ring: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  --success-contrast: var(--white);\n  --danger-base: var(--red-500);\n  --danger-text: light-dark(var(--red-600), var(--red-400));\n  --danger-text-emphasis: light-dark(var(--red-800), var(--red-300));\n  --danger-bg: var(--red-500);\n  --danger-bg-subtle: light-dark(var(--red-100), var(--red-900));\n  --danger-bg-muted: light-dark(var(--red-200), var(--red-800));\n  --danger-border: light-dark(var(--red-300), var(--red-600));\n  --danger-focus-ring: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  --danger-contrast: var(--white);\n  --warning-base: var(--yellow-500);\n  --warning-text: light-dark(var(--yellow-700), var(--yellow-400));\n  --warning-text-emphasis: light-dark(var(--yellow-800), var(--yellow-300));\n  --warning-bg: var(--yellow-500);\n  --warning-bg-subtle: light-dark(var(--yellow-100), var(--yellow-900));\n  --warning-bg-muted: light-dark(var(--yellow-200), var(--yellow-800));\n  --warning-border: light-dark(var(--yellow-300), var(--yellow-600));\n  --warning-focus-ring: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  --warning-contrast: var(--gray-900);\n  --info-base: var(--cyan-500);\n  --info-text: light-dark(var(--cyan-600), var(--cyan-400));\n  --info-text-emphasis: light-dark(var(--cyan-800), var(--cyan-300));\n  --info-bg: var(--cyan-500);\n  --info-bg-subtle: light-dark(var(--cyan-100), var(--cyan-900));\n  --info-bg-muted: light-dark(var(--cyan-200), var(--cyan-800));\n  --info-border: light-dark(var(--cyan-300), var(--cyan-600));\n  --info-focus-ring: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  --info-contrast: var(--gray-900);\n  --inverse-base: var(--gray-900);\n  --inverse-text: light-dark(var(--gray-900), var(--gray-200));\n  --inverse-text-emphasis: light-dark(var(--gray-975), var(--white));\n  --inverse-bg: light-dark(var(--gray-900), var(--gray-025));\n  --inverse-bg-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --inverse-bg-muted: light-dark(var(--gray-200), var(--gray-300));\n  --inverse-border: light-dark(var(--gray-400), var(--gray-100));\n  --inverse-focus-ring: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  --inverse-contrast: light-dark(var(--white), var(--gray-900));\n  --secondary-base: var(--gray-200);\n  --secondary-text: light-dark(var(--gray-600), var(--gray-400));\n  --secondary-text-emphasis: light-dark(var(--gray-800), var(--gray-200));\n  --secondary-bg: light-dark(var(--gray-100), var(--gray-600));\n  --secondary-bg-subtle: light-dark(var(--gray-050), var(--gray-800));\n  --secondary-bg-muted: light-dark(var(--gray-100), var(--gray-700));\n  --secondary-border: light-dark(var(--gray-300), var(--gray-600));\n  --secondary-focus-ring: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  --secondary-contrast: light-dark(var(--gray-900), var(--white));\n  --bg-body: light-dark(var(--white), var(--gray-975));\n  --bg-1: light-dark(var(--gray-025), var(--gray-950));\n  --bg-2: light-dark(var(--gray-050), var(--gray-900));\n  --bg-3: light-dark(var(--gray-100), var(--gray-800));\n  --bg-4: light-dark(var(--gray-200), var(--gray-700));\n  --bg-white: var(--white);\n  --bg-black: var(--black);\n  --bg-transparent: transparent;\n  --bg-inherit: inherit;\n  --fg-body: light-dark(var(--gray-900), var(--gray-050));\n  --fg-1: light-dark(var(--gray-800), var(--gray-200));\n  --fg-2: light-dark(var(--gray-700), var(--gray-300));\n  --fg-3: light-dark(var(--gray-600), var(--gray-500));\n  --fg-4: light-dark(var(--gray-500), var(--gray-600));\n  --fg-white: var(--white);\n  --fg-black: var(--black);\n  --fg-inherit: inherit;\n  --border-bg: var(--bg-body);\n  --border-body: light-dark(var(--gray-300), var(--gray-800));\n  --border-muted: light-dark(var(--gray-200), var(--gray-800));\n  --border-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --border-emphasized: light-dark(var(--gray-400), var(--gray-600));\n  --border-white: var(--white);\n  --border-black: var(--black);\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 1024px;\n  --breakpoint-xl: 1280px;\n  --breakpoint-2xl: 1536px;\n  color-scheme: light dark;\n}\n\n[data-bs-theme=dark] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=light] {\n  color-scheme: light;\n}\n\n@layer helpers {\n  .focus-ring:focus-visible {\n    outline: var(--focus-ring);\n  }\n}\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: 0.375rem;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, 0.5));\n    text-underline-offset: 0.25em;\n    backface-visibility: hidden;\n  }\n  .icon-link > .bi {\n    flex-shrink: 0;\n    width: 1em;\n    height: 1em;\n    fill: currentcolor;\n    transition: 0.2s ease-in-out transform;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .icon-link > .bi {\n      transition: none;\n    }\n  }\n  .icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {\n    transform: var(--icon-link-transform, translate3d(0.25em, 0, 0));\n  }\n}\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: 1030;\n  }\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: 1030;\n  }\n  .sticky-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n  .sticky-bottom {\n    position: sticky;\n    bottom: 0;\n    z-index: 1020;\n  }\n  @media (width >= 576px) {\n    .sticky-sm-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-sm-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 768px) {\n    .sticky-md-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-md-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1024px) {\n    .sticky-lg-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-lg-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1280px) {\n    .sticky-xl-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-xl-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1536px) {\n    .sticky-2xl-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-2xl-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n}\n@layer helpers {\n  .stack-container {\n    container-type: inline-size;\n  }\n  [class*=hstack],\n  [class*=vstack] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n  .vstack {\n    --stack-direction: column;\n    --stack-align-items: stretch;\n  }\n  .hstack {\n    --stack-direction: row;\n    --stack-align-items: flex-start;\n  }\n  @container (width >= 576px) {\n    .vstack-sm {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 576px) {\n    .hstack-sm {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 768px) {\n    .vstack-md {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 768px) {\n    .hstack-md {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1024px) {\n    .vstack-lg {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1024px) {\n    .hstack-lg {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1280px) {\n    .vstack-xl {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1280px) {\n    .hstack-xl {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1536px) {\n    .vstack-2xl {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1536px) {\n    .hstack-2xl {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n}\n@layer helpers {\n  .theme-primary {\n    --theme-base: var(--primary-base);\n    --theme-text: var(--primary-text);\n    --theme-text-emphasis: var(--primary-text-emphasis);\n    --theme-bg: var(--primary-bg);\n    --theme-bg-subtle: var(--primary-bg-subtle);\n    --theme-bg-muted: var(--primary-bg-muted);\n    --theme-border: var(--primary-border);\n    --theme-focus-ring: var(--primary-focus-ring);\n    --theme-contrast: var(--primary-contrast);\n  }\n  .theme-accent {\n    --theme-base: var(--accent-base);\n    --theme-text: var(--accent-text);\n    --theme-text-emphasis: var(--accent-text-emphasis);\n    --theme-bg: var(--accent-bg);\n    --theme-bg-subtle: var(--accent-bg-subtle);\n    --theme-bg-muted: var(--accent-bg-muted);\n    --theme-border: var(--accent-border);\n    --theme-focus-ring: var(--accent-focus-ring);\n    --theme-contrast: var(--accent-contrast);\n  }\n  .theme-success {\n    --theme-base: var(--success-base);\n    --theme-text: var(--success-text);\n    --theme-text-emphasis: var(--success-text-emphasis);\n    --theme-bg: var(--success-bg);\n    --theme-bg-subtle: var(--success-bg-subtle);\n    --theme-bg-muted: var(--success-bg-muted);\n    --theme-border: var(--success-border);\n    --theme-focus-ring: var(--success-focus-ring);\n    --theme-contrast: var(--success-contrast);\n  }\n  .theme-danger {\n    --theme-base: var(--danger-base);\n    --theme-text: var(--danger-text);\n    --theme-text-emphasis: var(--danger-text-emphasis);\n    --theme-bg: var(--danger-bg);\n    --theme-bg-subtle: var(--danger-bg-subtle);\n    --theme-bg-muted: var(--danger-bg-muted);\n    --theme-border: var(--danger-border);\n    --theme-focus-ring: var(--danger-focus-ring);\n    --theme-contrast: var(--danger-contrast);\n  }\n  .theme-warning {\n    --theme-base: var(--warning-base);\n    --theme-text: var(--warning-text);\n    --theme-text-emphasis: var(--warning-text-emphasis);\n    --theme-bg: var(--warning-bg);\n    --theme-bg-subtle: var(--warning-bg-subtle);\n    --theme-bg-muted: var(--warning-bg-muted);\n    --theme-border: var(--warning-border);\n    --theme-focus-ring: var(--warning-focus-ring);\n    --theme-contrast: var(--warning-contrast);\n  }\n  .theme-info {\n    --theme-base: var(--info-base);\n    --theme-text: var(--info-text);\n    --theme-text-emphasis: var(--info-text-emphasis);\n    --theme-bg: var(--info-bg);\n    --theme-bg-subtle: var(--info-bg-subtle);\n    --theme-bg-muted: var(--info-bg-muted);\n    --theme-border: var(--info-border);\n    --theme-focus-ring: var(--info-focus-ring);\n    --theme-contrast: var(--info-contrast);\n  }\n  .theme-inverse {\n    --theme-base: var(--inverse-base);\n    --theme-text: var(--inverse-text);\n    --theme-text-emphasis: var(--inverse-text-emphasis);\n    --theme-bg: var(--inverse-bg);\n    --theme-bg-subtle: var(--inverse-bg-subtle);\n    --theme-bg-muted: var(--inverse-bg-muted);\n    --theme-border: var(--inverse-border);\n    --theme-focus-ring: var(--inverse-focus-ring);\n    --theme-contrast: var(--inverse-contrast);\n  }\n  .theme-secondary {\n    --theme-base: var(--secondary-base);\n    --theme-text: var(--secondary-text);\n    --theme-text-emphasis: var(--secondary-text-emphasis);\n    --theme-bg: var(--secondary-bg);\n    --theme-bg-subtle: var(--secondary-bg-subtle);\n    --theme-bg-muted: var(--secondary-bg-muted);\n    --theme-border: var(--secondary-border);\n    --theme-focus-ring: var(--secondary-focus-ring);\n    --theme-contrast: var(--secondary-contrast);\n  }\n}\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) {\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border: 0 !important;\n  }\n  .visually-hidden:not(caption),\n  .visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {\n    position: absolute !important;\n  }\n  .visually-hidden *,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) * {\n    overflow: hidden !important;\n  }\n}\n@layer helpers {\n  .stretched-link::after {\n    position: absolute;\n    inset: 0;\n    z-index: 1;\n    content: \"\";\n  }\n}\n@layer helpers {\n  .text-truncate {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n@layer utilities {\n  .align-baseline {\n    vertical-align: baseline;\n  }\n  .align-top {\n    vertical-align: top;\n  }\n  .align-middle {\n    vertical-align: middle;\n  }\n  .align-bottom {\n    vertical-align: bottom;\n  }\n  .align-text-bottom {\n    vertical-align: text-bottom;\n  }\n  .align-text-top {\n    vertical-align: text-top;\n  }\n  [class*=ratio-] {\n    aspect-ratio: var(--ratio);\n  }\n  .ratio-auto {\n    --ratio: auto;\n  }\n  .ratio-1x1 {\n    --ratio: 1 / 1;\n  }\n  .ratio-4x3 {\n    --ratio: 4 / 3;\n  }\n  .ratio-16x9 {\n    --ratio: 16 / 9;\n  }\n  .ratio-21x9 {\n    --ratio: 21 / 9;\n  }\n  .float-start {\n    float: inline-start;\n  }\n  .float-end {\n    float: inline-end;\n  }\n  .float-none {\n    float: none;\n  }\n  .object-fit-contain {\n    object-fit: contain;\n  }\n  .object-fit-cover {\n    object-fit: cover;\n  }\n  .object-fit-fill {\n    object-fit: fill;\n  }\n  .object-fit-scale {\n    object-fit: scale-down;\n  }\n  .object-fit-none {\n    object-fit: none;\n  }\n  .opacity-0 {\n    opacity: 0;\n  }\n  .opacity-25 {\n    opacity: 0.25;\n  }\n  .opacity-50 {\n    opacity: 0.5;\n  }\n  .opacity-75 {\n    opacity: 0.75;\n  }\n  .opacity-100 {\n    opacity: 1;\n  }\n  .overflow-auto {\n    overflow: auto;\n  }\n  .overflow-hidden {\n    overflow: hidden;\n  }\n  .overflow-visible {\n    overflow: visible;\n  }\n  .overflow-scroll {\n    overflow: scroll;\n  }\n  .overflow-x-auto {\n    overflow-x: auto;\n  }\n  .overflow-x-hidden {\n    overflow-x: hidden;\n  }\n  .overflow-x-visible {\n    overflow-x: visible;\n  }\n  .overflow-x-scroll {\n    overflow-x: scroll;\n  }\n  .overflow-y-auto {\n    overflow-y: auto;\n  }\n  .overflow-y-hidden {\n    overflow-y: hidden;\n  }\n  .overflow-y-visible {\n    overflow-y: visible;\n  }\n  .overflow-y-scroll {\n    overflow-y: scroll;\n  }\n  .d-inline {\n    display: inline;\n  }\n  .d-inline-block {\n    display: inline-block;\n  }\n  .d-block {\n    display: block;\n  }\n  .d-grid {\n    display: grid;\n  }\n  .d-inline-grid {\n    display: inline-grid;\n  }\n  .d-table {\n    display: table;\n  }\n  .d-table-row {\n    display: table-row;\n  }\n  .d-table-cell {\n    display: table-cell;\n  }\n  .d-flex {\n    display: flex;\n  }\n  .d-inline-flex {\n    display: inline-flex;\n  }\n  .d-contents {\n    display: contents;\n  }\n  .d-flow-root {\n    display: flow-root;\n  }\n  .d-none {\n    display: none;\n  }\n  .shadow {\n    box-shadow: var(--box-shadow);\n  }\n  .shadow-sm {\n    box-shadow: var(--box-shadow-sm);\n  }\n  .shadow-lg {\n    box-shadow: var(--box-shadow-lg);\n  }\n  .shadow-none {\n    box-shadow: none;\n  }\n  .focus-ring-primary {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-accent {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-success {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-danger {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-warning {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  }\n  .focus-ring-info {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-inverse {\n    --focus-ring-color: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  }\n  .focus-ring-secondary {\n    --focus-ring-color: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  }\n  .position-static {\n    position: static;\n  }\n  .position-relative {\n    position: relative;\n  }\n  .position-absolute {\n    position: absolute;\n  }\n  .position-fixed {\n    position: fixed;\n  }\n  .position-sticky {\n    position: sticky;\n  }\n  .top-0 {\n    top: 0;\n  }\n  .top-50 {\n    top: 50%;\n  }\n  .top-100 {\n    top: 100%;\n  }\n  .bottom-0 {\n    bottom: 0;\n  }\n  .bottom-50 {\n    bottom: 50%;\n  }\n  .bottom-100 {\n    bottom: 100%;\n  }\n  .start-0 {\n    left: 0;\n  }\n  .start-50 {\n    left: 50%;\n  }\n  .start-100 {\n    left: 100%;\n  }\n  .end-0 {\n    right: 0;\n  }\n  .end-50 {\n    right: 50%;\n  }\n  .end-100 {\n    right: 100%;\n  }\n  .translate-middle {\n    transform: translate(-50%, -50%);\n  }\n  .translate-middle-x {\n    transform: translateX(-50%);\n  }\n  .translate-middle-y {\n    transform: translateY(-50%);\n  }\n  .border {\n    border: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-0 {\n    border: 0;\n  }\n  .border-top {\n    border-block-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-top-0 {\n    border-block-start: 0;\n  }\n  .border-end {\n    border-inline-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-end-0 {\n    border-inline-end: 0;\n  }\n  .border-bottom {\n    border-block-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-bottom-0 {\n    border-block-end: 0;\n  }\n  .border-start {\n    border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-start-0 {\n    border-inline-start: 0;\n  }\n  .border-block {\n    border-block: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-block-0 {\n    border-block: 0;\n  }\n  .border-inline {\n    border-inline: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-inline-0 {\n    border-inline: 0;\n  }\n  .border-primary {\n    --border-color: var(--blue-500);\n    border-color: var(--border-color);\n  }\n  .border-accent {\n    --border-color: var(--indigo-500);\n    border-color: var(--border-color);\n  }\n  .border-success {\n    --border-color: var(--green-500);\n    border-color: var(--border-color);\n  }\n  .border-danger {\n    --border-color: var(--red-500);\n    border-color: var(--border-color);\n  }\n  .border-warning {\n    --border-color: var(--yellow-500);\n    border-color: var(--border-color);\n  }\n  .border-info {\n    --border-color: var(--cyan-500);\n    border-color: var(--border-color);\n  }\n  .border-inverse {\n    --border-color: light-dark(var(--gray-900), var(--gray-025));\n    border-color: var(--border-color);\n  }\n  .border-secondary {\n    --border-color: light-dark(var(--gray-100), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-bg {\n    --border-color: var(--bg-body);\n    border-color: var(--border-color);\n  }\n  .border-body {\n    --border-color: light-dark(var(--gray-300), var(--gray-800));\n    border-color: var(--border-color);\n  }\n  .border-muted {\n    --border-color: light-dark(var(--gray-200), var(--gray-800));\n    border-color: var(--border-color);\n  }\n  .border-subtle {\n    --border-color: light-dark(var(--gray-100), var(--gray-900));\n    border-color: var(--border-color);\n  }\n  .border-emphasized {\n    --border-color: light-dark(var(--gray-400), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-white {\n    --border-color: var(--white);\n    border-color: var(--border-color);\n  }\n  .border-black {\n    --border-color: var(--black);\n    border-color: var(--border-color);\n  }\n  .border-subtle-primary {\n    --border-color: light-dark(var(--blue-300), var(--blue-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-accent {\n    --border-color: light-dark(var(--indigo-300), var(--indigo-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-success {\n    --border-color: light-dark(var(--green-300), var(--green-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-danger {\n    --border-color: light-dark(var(--red-300), var(--red-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-warning {\n    --border-color: light-dark(var(--yellow-300), var(--yellow-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-info {\n    --border-color: light-dark(var(--cyan-300), var(--cyan-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-inverse {\n    --border-color: light-dark(var(--gray-400), var(--gray-100));\n    border-color: var(--border-color);\n  }\n  .border-subtle-secondary {\n    --border-color: light-dark(var(--gray-300), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-1 {\n    border-width: 1px;\n  }\n  .border-2 {\n    border-width: 2px;\n  }\n  .border-3 {\n    border-width: 3px;\n  }\n  .border-4 {\n    border-width: 4px;\n  }\n  .border-5 {\n    border-width: 5px;\n  }\n  .border-10 {\n    border-color: color-mix(in oklch, var(--border-color) 10%, transparent);\n  }\n  .border-20 {\n    border-color: color-mix(in oklch, var(--border-color) 20%, transparent);\n  }\n  .border-30 {\n    border-color: color-mix(in oklch, var(--border-color) 30%, transparent);\n  }\n  .border-40 {\n    border-color: color-mix(in oklch, var(--border-color) 40%, transparent);\n  }\n  .border-50 {\n    border-color: color-mix(in oklch, var(--border-color) 50%, transparent);\n  }\n  .border-60 {\n    border-color: color-mix(in oklch, var(--border-color) 60%, transparent);\n  }\n  .border-70 {\n    border-color: color-mix(in oklch, var(--border-color) 70%, transparent);\n  }\n  .border-80 {\n    border-color: color-mix(in oklch, var(--border-color) 80%, transparent);\n  }\n  .border-90 {\n    border-color: color-mix(in oklch, var(--border-color) 90%, transparent);\n  }\n  .border-100 {\n    border-color: var(--border-color);\n  }\n  .w-1 {\n    width: 1rem;\n  }\n  .w-2 {\n    width: 2rem;\n  }\n  .w-3 {\n    width: 3rem;\n  }\n  .w-4 {\n    width: 4rem;\n  }\n  .w-5 {\n    width: 5rem;\n  }\n  .w-6 {\n    width: 6rem;\n  }\n  .w-7 {\n    width: 7rem;\n  }\n  .w-8 {\n    width: 8rem;\n  }\n  .w-9 {\n    width: 9rem;\n  }\n  .w-10 {\n    width: 10rem;\n  }\n  .w-11 {\n    width: 11rem;\n  }\n  .w-12 {\n    width: 12rem;\n  }\n  .w-25 {\n    width: 25%;\n  }\n  .w-50 {\n    width: 50%;\n  }\n  .w-75 {\n    width: 75%;\n  }\n  .w-100 {\n    width: 100%;\n  }\n  .w-auto {\n    width: auto;\n  }\n  .w-min {\n    width: min-content;\n  }\n  .w-max {\n    width: max-content;\n  }\n  .w-fit {\n    width: fit-content;\n  }\n  .max-w-100 {\n    max-width: 100%;\n  }\n  .min-w-0 {\n    min-width: 0;\n  }\n  .min-w-100 {\n    min-width: 100%;\n  }\n  .vw-100 {\n    width: 100vw;\n  }\n  .min-vw-100 {\n    min-width: 100vw;\n  }\n  .h-25 {\n    height: 25%;\n  }\n  .h-50 {\n    height: 50%;\n  }\n  .h-75 {\n    height: 75%;\n  }\n  .h-100 {\n    height: 100%;\n  }\n  .h-auto {\n    height: auto;\n  }\n  .h-min {\n    height: min-content;\n  }\n  .h-max {\n    height: max-content;\n  }\n  .h-fit {\n    height: fit-content;\n  }\n  .max-h-100 {\n    max-height: 100%;\n  }\n  .min-h-0 {\n    min-height: 0;\n  }\n  .min-h-100 {\n    min-height: 100%;\n  }\n  .vh-100 {\n    height: 100vh;\n  }\n  .min-vh-100 {\n    min-height: 100vh;\n  }\n  .flex-fill {\n    flex: 1 1 auto;\n  }\n  .flex-row {\n    flex-direction: row;\n  }\n  .flex-column {\n    flex-direction: column;\n  }\n  .flex-row-reverse {\n    flex-direction: row-reverse;\n  }\n  .flex-column-reverse {\n    flex-direction: column-reverse;\n  }\n  .flex-grow-0 {\n    flex-grow: 0;\n  }\n  .flex-grow-1 {\n    flex-grow: 1;\n  }\n  .flex-shrink-0 {\n    flex-shrink: 0;\n  }\n  .flex-shrink-1 {\n    flex-shrink: 1;\n  }\n  .flex-wrap {\n    flex-wrap: wrap;\n  }\n  .flex-nowrap {\n    flex-wrap: nowrap;\n  }\n  .flex-wrap-reverse {\n    flex-wrap: wrap-reverse;\n  }\n  .justify-content-start {\n    justify-content: flex-start;\n  }\n  .justify-content-end {\n    justify-content: flex-end;\n  }\n  .justify-content-center {\n    justify-content: center;\n  }\n  .justify-content-between {\n    justify-content: space-between;\n  }\n  .justify-content-around {\n    justify-content: space-around;\n  }\n  .justify-content-evenly {\n    justify-content: space-evenly;\n  }\n  .justify-items-start {\n    justify-items: start;\n  }\n  .justify-items-end {\n    justify-items: end;\n  }\n  .justify-items-center {\n    justify-items: center;\n  }\n  .justify-items-stretch {\n    justify-items: stretch;\n  }\n  .justify-self-start {\n    justify-self: flex-start;\n  }\n  .justify-self-end {\n    justify-self: flex-end;\n  }\n  .justify-self-center {\n    justify-self: center;\n  }\n  .align-items-start {\n    align-items: flex-start;\n  }\n  .align-items-end {\n    align-items: flex-end;\n  }\n  .align-items-center {\n    align-items: center;\n  }\n  .align-items-baseline {\n    align-items: baseline;\n  }\n  .align-items-stretch {\n    align-items: stretch;\n  }\n  .align-content-start {\n    align-content: flex-start;\n  }\n  .align-content-end {\n    align-content: flex-end;\n  }\n  .align-content-center {\n    align-content: center;\n  }\n  .align-content-between {\n    align-content: space-between;\n  }\n  .align-content-around {\n    align-content: space-around;\n  }\n  .align-content-stretch {\n    align-content: stretch;\n  }\n  .align-self-auto {\n    align-self: auto;\n  }\n  .align-self-start {\n    align-self: flex-start;\n  }\n  .align-self-end {\n    align-self: flex-end;\n  }\n  .align-self-center {\n    align-self: center;\n  }\n  .align-self-baseline {\n    align-self: baseline;\n  }\n  .align-self-stretch {\n    align-self: stretch;\n  }\n  .place-items-start {\n    place-items: start;\n  }\n  .place-items-end {\n    place-items: end;\n  }\n  .place-items-center {\n    place-items: center;\n  }\n  .place-items-stretch {\n    place-items: stretch;\n  }\n  .grid-cols-3 {\n    --columns: 3;\n  }\n  .grid-cols-4 {\n    --columns: 4;\n  }\n  .grid-cols-6 {\n    --columns: 6;\n  }\n  .grid-cols-fill {\n    grid-column: 1 / -1;\n  }\n  .grid-auto-flow-row {\n    grid-auto-flow: row;\n  }\n  .grid-auto-flow-column {\n    grid-auto-flow: column;\n  }\n  .grid-auto-flow-dense {\n    grid-auto-flow: dense;\n  }\n  .order-first {\n    order: -1;\n  }\n  .order-0 {\n    order: 0;\n  }\n  .order-1 {\n    order: 1;\n  }\n  .order-2 {\n    order: 2;\n  }\n  .order-3 {\n    order: 3;\n  }\n  .order-4 {\n    order: 4;\n  }\n  .order-5 {\n    order: 5;\n  }\n  .order-last {\n    order: 6;\n  }\n  .m-0 {\n    margin: 0;\n  }\n  .m-1 {\n    margin: 0.25rem;\n  }\n  .m-2 {\n    margin: 0.5rem;\n  }\n  .m-3 {\n    margin: 1rem;\n  }\n  .m-4 {\n    margin: 1.5rem;\n  }\n  .m-5 {\n    margin: 3rem;\n  }\n  .m-auto {\n    margin: auto;\n  }\n  .mx-0 {\n    margin-inline: 0;\n  }\n  .mx-1 {\n    margin-inline: 0.25rem;\n  }\n  .mx-2 {\n    margin-inline: 0.5rem;\n  }\n  .mx-3 {\n    margin-inline: 1rem;\n  }\n  .mx-4 {\n    margin-inline: 1.5rem;\n  }\n  .mx-5 {\n    margin-inline: 3rem;\n  }\n  .mx-auto {\n    margin-inline: auto;\n  }\n  .my-0 {\n    margin-block: 0;\n  }\n  .my-1 {\n    margin-block: 0.25rem;\n  }\n  .my-2 {\n    margin-block: 0.5rem;\n  }\n  .my-3 {\n    margin-block: 1rem;\n  }\n  .my-4 {\n    margin-block: 1.5rem;\n  }\n  .my-5 {\n    margin-block: 3rem;\n  }\n  .my-auto {\n    margin-block: auto;\n  }\n  .mt-0 {\n    margin-block-start: 0;\n  }\n  .mt-1 {\n    margin-block-start: 0.25rem;\n  }\n  .mt-2 {\n    margin-block-start: 0.5rem;\n  }\n  .mt-3 {\n    margin-block-start: 1rem;\n  }\n  .mt-4 {\n    margin-block-start: 1.5rem;\n  }\n  .mt-5 {\n    margin-block-start: 3rem;\n  }\n  .mt-auto {\n    margin-block-start: auto;\n  }\n  .me-0 {\n    margin-inline-end: 0;\n  }\n  .me-1 {\n    margin-inline-end: 0.25rem;\n  }\n  .me-2 {\n    margin-inline-end: 0.5rem;\n  }\n  .me-3 {\n    margin-inline-end: 1rem;\n  }\n  .me-4 {\n    margin-inline-end: 1.5rem;\n  }\n  .me-5 {\n    margin-inline-end: 3rem;\n  }\n  .me-auto {\n    margin-inline-end: auto;\n  }\n  .mb-0 {\n    margin-block-end: 0;\n  }\n  .mb-1 {\n    margin-block-end: 0.25rem;\n  }\n  .mb-2 {\n    margin-block-end: 0.5rem;\n  }\n  .mb-3 {\n    margin-block-end: 1rem;\n  }\n  .mb-4 {\n    margin-block-end: 1.5rem;\n  }\n  .mb-5 {\n    margin-block-end: 3rem;\n  }\n  .mb-auto {\n    margin-block-end: auto;\n  }\n  .ms-0 {\n    margin-inline-start: 0;\n  }\n  .ms-1 {\n    margin-inline-start: 0.25rem;\n  }\n  .ms-2 {\n    margin-inline-start: 0.5rem;\n  }\n  .ms-3 {\n    margin-inline-start: 1rem;\n  }\n  .ms-4 {\n    margin-inline-start: 1.5rem;\n  }\n  .ms-5 {\n    margin-inline-start: 3rem;\n  }\n  .ms--1 {\n    margin-inline-start: -0.25rem;\n  }\n  .ms--2 {\n    margin-inline-start: -0.5rem;\n  }\n  .ms-auto {\n    margin-inline-start: auto;\n  }\n  .p-0 {\n    padding: 0;\n  }\n  .p-1 {\n    padding: 0.25rem;\n  }\n  .p-2 {\n    padding: 0.5rem;\n  }\n  .p-3 {\n    padding: 1rem;\n  }\n  .p-4 {\n    padding: 1.5rem;\n  }\n  .p-5 {\n    padding: 3rem;\n  }\n  .px-0 {\n    padding-inline: 0;\n  }\n  .px-1 {\n    padding-inline: 0.25rem;\n  }\n  .px-2 {\n    padding-inline: 0.5rem;\n  }\n  .px-3 {\n    padding-inline: 1rem;\n  }\n  .px-4 {\n    padding-inline: 1.5rem;\n  }\n  .px-5 {\n    padding-inline: 3rem;\n  }\n  .py-0 {\n    padding-block: 0;\n  }\n  .py-1 {\n    padding-block: 0.25rem;\n  }\n  .py-2 {\n    padding-block: 0.5rem;\n  }\n  .py-3 {\n    padding-block: 1rem;\n  }\n  .py-4 {\n    padding-block: 1.5rem;\n  }\n  .py-5 {\n    padding-block: 3rem;\n  }\n  .pt-0 {\n    padding-block-start: 0;\n  }\n  .pt-1 {\n    padding-block-start: 0.25rem;\n  }\n  .pt-2 {\n    padding-block-start: 0.5rem;\n  }\n  .pt-3 {\n    padding-block-start: 1rem;\n  }\n  .pt-4 {\n    padding-block-start: 1.5rem;\n  }\n  .pt-5 {\n    padding-block-start: 3rem;\n  }\n  .pe-0 {\n    padding-inline-end: 0;\n  }\n  .pe-1 {\n    padding-inline-end: 0.25rem;\n  }\n  .pe-2 {\n    padding-inline-end: 0.5rem;\n  }\n  .pe-3 {\n    padding-inline-end: 1rem;\n  }\n  .pe-4 {\n    padding-inline-end: 1.5rem;\n  }\n  .pe-5 {\n    padding-inline-end: 3rem;\n  }\n  .pb-0 {\n    padding-block-end: 0;\n  }\n  .pb-1 {\n    padding-block-end: 0.25rem;\n  }\n  .pb-2 {\n    padding-block-end: 0.5rem;\n  }\n  .pb-3 {\n    padding-block-end: 1rem;\n  }\n  .pb-4 {\n    padding-block-end: 1.5rem;\n  }\n  .pb-5 {\n    padding-block-end: 3rem;\n  }\n  .ps-0 {\n    padding-inline-start: 0;\n  }\n  .ps-1 {\n    padding-inline-start: 0.25rem;\n  }\n  .ps-2 {\n    padding-inline-start: 0.5rem;\n  }\n  .ps-3 {\n    padding-inline-start: 1rem;\n  }\n  .ps-4 {\n    padding-inline-start: 1.5rem;\n  }\n  .ps-5 {\n    padding-inline-start: 3rem;\n  }\n  .gap-0 {\n    gap: 0;\n  }\n  .gap-1 {\n    gap: 0.25rem;\n  }\n  .gap-2 {\n    gap: 0.5rem;\n  }\n  .gap-3 {\n    gap: 1rem;\n  }\n  .gap-4 {\n    gap: 1.5rem;\n  }\n  .gap-5 {\n    gap: 3rem;\n  }\n  .row-gap-0 {\n    row-gap: 0;\n  }\n  .row-gap-1 {\n    row-gap: 0.25rem;\n  }\n  .row-gap-2 {\n    row-gap: 0.5rem;\n  }\n  .row-gap-3 {\n    row-gap: 1rem;\n  }\n  .row-gap-4 {\n    row-gap: 1.5rem;\n  }\n  .row-gap-5 {\n    row-gap: 3rem;\n  }\n  .column-gap-0 {\n    column-gap: 0;\n  }\n  .column-gap-1 {\n    column-gap: 0.25rem;\n  }\n  .column-gap-2 {\n    column-gap: 0.5rem;\n  }\n  .column-gap-3 {\n    column-gap: 1rem;\n  }\n  .column-gap-4 {\n    column-gap: 1.5rem;\n  }\n  .column-gap-5 {\n    column-gap: 3rem;\n  }\n  .font-monospace {\n    font-family: var(--font-mono);\n  }\n  .font-body {\n    font-family: var(--body-font-family);\n  }\n  .fs-xs {\n    font-size: 0.75rem;\n  }\n  .fs-sm {\n    font-size: 0.875rem;\n  }\n  .fs-md {\n    font-size: 1rem;\n  }\n  .fs-lg {\n    font-size: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  }\n  .fs-xl {\n    font-size: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  }\n  .fs-2xl {\n    font-size: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  }\n  .fs-3xl {\n    font-size: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  }\n  .fs-4xl {\n    font-size: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  }\n  .fs-5xl {\n    font-size: clamp(3rem, 2rem + 5vw, 4rem);\n  }\n  .fs-6xl {\n    font-size: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  }\n  .text-xs {\n    font-size: 0.75rem;\n    line-height: 1.25;\n  }\n  .text-sm {\n    font-size: 0.875rem;\n    line-height: 1.5;\n  }\n  .text-md {\n    font-size: 1rem;\n    line-height: 1.5;\n  }\n  .text-lg {\n    font-size: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n    line-height: 1.5;\n  }\n  .text-xl {\n    font-size: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n    line-height: 1.4285714286;\n  }\n  .text-2xl {\n    font-size: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n    line-height: 1.3333333333;\n  }\n  .text-3xl {\n    font-size: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n    line-height: 1.2;\n  }\n  .text-4xl {\n    font-size: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n    line-height: 1.1;\n  }\n  .text-5xl {\n    font-size: clamp(3rem, 2rem + 5vw, 4rem);\n    line-height: 1.1;\n  }\n  .text-6xl {\n    font-size: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n    line-height: 1;\n  }\n  .fst-italic {\n    font-style: italic;\n  }\n  .fst-normal {\n    font-style: normal;\n  }\n  .fw-lighter {\n    font-weight: lighter;\n  }\n  .fw-light {\n    font-weight: 300;\n  }\n  .fw-normal {\n    font-weight: 400;\n  }\n  .fw-medium {\n    font-weight: 500;\n  }\n  .fw-semibold {\n    font-weight: 600;\n  }\n  .fw-bold {\n    font-weight: 700;\n  }\n  .fw-bolder {\n    font-weight: bolder;\n  }\n  .lh-1 {\n    line-height: 1;\n  }\n  .lh-sm {\n    line-height: 1.25;\n  }\n  .lh-base {\n    line-height: 1.5;\n  }\n  .lh-lg {\n    line-height: 2;\n  }\n  .text-start {\n    text-align: start;\n  }\n  .text-end {\n    text-align: end;\n  }\n  .text-center {\n    text-align: center;\n  }\n  .text-decoration-none {\n    text-decoration: none;\n  }\n  .text-decoration-underline {\n    text-decoration: underline;\n  }\n  .text-decoration-line-through {\n    text-decoration: line-through;\n  }\n  .text-lowercase {\n    text-transform: lowercase;\n  }\n  .text-uppercase {\n    text-transform: uppercase;\n  }\n  .text-capitalize {\n    text-transform: capitalize;\n  }\n  .text-wrap {\n    white-space: wrap;\n  }\n  .text-nowrap {\n    white-space: nowrap;\n  }\n  .text-balance {\n    white-space: balance;\n  }\n  .text-pretty {\n    white-space: pretty;\n  }\n  .text-break {\n    word-wrap: break-word;\n    word-break: break-word;\n  }\n  .fg-primary {\n    --fg: light-dark(var(--blue-600), var(--blue-400));\n    color: var(--fg);\n  }\n  .fg-accent {\n    --fg: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n    color: var(--fg);\n  }\n  .fg-success {\n    --fg: light-dark(var(--green-600), var(--green-400));\n    color: var(--fg);\n  }\n  .fg-danger {\n    --fg: light-dark(var(--red-600), var(--red-400));\n    color: var(--fg);\n  }\n  .fg-warning {\n    --fg: light-dark(var(--yellow-700), var(--yellow-400));\n    color: var(--fg);\n  }\n  .fg-info {\n    --fg: light-dark(var(--cyan-600), var(--cyan-400));\n    color: var(--fg);\n  }\n  .fg-inverse {\n    --fg: light-dark(var(--gray-900), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-secondary {\n    --fg: light-dark(var(--gray-600), var(--gray-400));\n    color: var(--fg);\n  }\n  .fg-body {\n    --fg: light-dark(var(--gray-900), var(--gray-050));\n    color: var(--fg);\n  }\n  .fg-1 {\n    --fg: light-dark(var(--gray-800), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-2 {\n    --fg: light-dark(var(--gray-700), var(--gray-300));\n    color: var(--fg);\n  }\n  .fg-3 {\n    --fg: light-dark(var(--gray-600), var(--gray-500));\n    color: var(--fg);\n  }\n  .fg-4 {\n    --fg: light-dark(var(--gray-500), var(--gray-600));\n    color: var(--fg);\n  }\n  .fg-white {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-black {\n    --fg: var(--black);\n    color: var(--fg);\n  }\n  .fg-inherit {\n    --fg: inherit;\n    color: var(--fg);\n  }\n  .fg-emphasis-primary {\n    --fg: light-dark(var(--blue-800), var(--blue-200));\n    color: var(--fg);\n  }\n  .fg-emphasis-accent {\n    --fg: light-dark(var(--indigo-800), var(--indigo-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-success {\n    --fg: light-dark(var(--green-800), var(--green-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-danger {\n    --fg: light-dark(var(--red-800), var(--red-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-warning {\n    --fg: light-dark(var(--yellow-800), var(--yellow-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-info {\n    --fg: light-dark(var(--cyan-800), var(--cyan-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-inverse {\n    --fg: light-dark(var(--gray-975), var(--white));\n    color: var(--fg);\n  }\n  .fg-emphasis-secondary {\n    --fg: light-dark(var(--gray-800), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-contrast-primary {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-accent {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-success {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-danger {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-warning {\n    --fg: var(--gray-900);\n    color: var(--fg);\n  }\n  .fg-contrast-info {\n    --fg: var(--gray-900);\n    color: var(--fg);\n  }\n  .fg-contrast-inverse {\n    --fg: light-dark(var(--white), var(--gray-900));\n    color: var(--fg);\n  }\n  .fg-contrast-secondary {\n    --fg: light-dark(var(--gray-900), var(--white));\n    color: var(--fg);\n  }\n  .fg-10 {\n    color: color-mix(in oklch, var(--fg) 10%, transparent);\n  }\n  .fg-20 {\n    color: color-mix(in oklch, var(--fg) 20%, transparent);\n  }\n  .fg-30 {\n    color: color-mix(in oklch, var(--fg) 30%, transparent);\n  }\n  .fg-40 {\n    color: color-mix(in oklch, var(--fg) 40%, transparent);\n  }\n  .fg-50 {\n    color: color-mix(in oklch, var(--fg) 50%, transparent);\n  }\n  .fg-60 {\n    color: color-mix(in oklch, var(--fg) 60%, transparent);\n  }\n  .fg-70 {\n    color: color-mix(in oklch, var(--fg) 70%, transparent);\n  }\n  .fg-80 {\n    color: color-mix(in oklch, var(--fg) 80%, transparent);\n  }\n  .fg-90 {\n    color: color-mix(in oklch, var(--fg) 90%, transparent);\n  }\n  .fg-100 {\n    color: var(--fg);\n  }\n  .link-10 {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .link-10-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .link-20 {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .link-20-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .link-30 {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .link-30-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .link-40 {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .link-40-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .link-50 {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .link-50-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .link-60 {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .link-60-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .link-70 {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .link-70-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .link-80 {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .link-80-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .link-90 {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-90-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-100 {\n    color: var(--link-color);\n  }\n  .link-100-hover:hover {\n    color: var(--link-color);\n  }\n  .underline-offset-1 {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-1-hover:hover {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-2 {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-2-hover:hover {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-3 {\n    text-underline-offset: 0.375em;\n  }\n  .underline-offset-3-hover:hover {\n    text-underline-offset: 0.375em;\n  }\n  .underline-primary {\n    text-decoration-color: light-dark(var(--blue-600), var(--blue-400));\n  }\n  .underline-accent {\n    text-decoration-color: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  }\n  .underline-success {\n    text-decoration-color: light-dark(var(--green-600), var(--green-400));\n  }\n  .underline-danger {\n    text-decoration-color: light-dark(var(--red-600), var(--red-400));\n  }\n  .underline-warning {\n    text-decoration-color: light-dark(var(--yellow-700), var(--yellow-400));\n  }\n  .underline-info {\n    text-decoration-color: light-dark(var(--cyan-600), var(--cyan-400));\n  }\n  .underline-inverse {\n    text-decoration-color: light-dark(var(--gray-900), var(--gray-200));\n  }\n  .underline-secondary {\n    text-decoration-color: light-dark(var(--gray-600), var(--gray-400));\n  }\n  .underline-10 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .underline-10-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .underline-20 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .underline-20-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .underline-30 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .underline-30-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .underline-40 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .underline-40-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .underline-50 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .underline-50-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .underline-60 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .underline-60-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .underline-70 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .underline-70-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .underline-80 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .underline-80-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .underline-90 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .underline-90-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .underline-100 {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-100-hover:hover {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-thickness-1 {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-1-hover:hover {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-2 {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-2-hover:hover {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-3 {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-3-hover:hover {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-4 {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-4-hover:hover {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-5 {\n    text-decoration-thickness: 5px;\n  }\n  .underline-thickness-5-hover:hover {\n    text-decoration-thickness: 5px;\n  }\n  .bg-primary {\n    --bg: var(--blue-500);\n    background-color: var(--bg);\n  }\n  .bg-accent {\n    --bg: var(--indigo-500);\n    background-color: var(--bg);\n  }\n  .bg-success {\n    --bg: var(--green-500);\n    background-color: var(--bg);\n  }\n  .bg-danger {\n    --bg: var(--red-500);\n    background-color: var(--bg);\n  }\n  .bg-warning {\n    --bg: var(--yellow-500);\n    background-color: var(--bg);\n  }\n  .bg-info {\n    --bg: var(--cyan-500);\n    background-color: var(--bg);\n  }\n  .bg-inverse {\n    --bg: light-dark(var(--gray-900), var(--gray-025));\n    background-color: var(--bg);\n  }\n  .bg-secondary {\n    --bg: light-dark(var(--gray-100), var(--gray-600));\n    background-color: var(--bg);\n  }\n  .bg-body {\n    --bg: light-dark(var(--white), var(--gray-975));\n    background-color: var(--bg);\n  }\n  .bg-1 {\n    --bg: light-dark(var(--gray-025), var(--gray-950));\n    background-color: var(--bg);\n  }\n  .bg-2 {\n    --bg: light-dark(var(--gray-050), var(--gray-900));\n    background-color: var(--bg);\n  }\n  .bg-3 {\n    --bg: light-dark(var(--gray-100), var(--gray-800));\n    background-color: var(--bg);\n  }\n  .bg-4 {\n    --bg: light-dark(var(--gray-200), var(--gray-700));\n    background-color: var(--bg);\n  }\n  .bg-white {\n    --bg: var(--white);\n    background-color: var(--bg);\n  }\n  .bg-black {\n    --bg: var(--black);\n    background-color: var(--bg);\n  }\n  .bg-transparent {\n    --bg: transparent;\n    background-color: var(--bg);\n  }\n  .bg-inherit {\n    --bg: inherit;\n    background-color: var(--bg);\n  }\n  .bg-subtle-primary {\n    --bg: light-dark(var(--blue-100), var(--blue-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-accent {\n    --bg: light-dark(var(--indigo-100), var(--indigo-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-success {\n    --bg: light-dark(var(--green-100), var(--green-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-danger {\n    --bg: light-dark(var(--red-100), var(--red-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-warning {\n    --bg: light-dark(var(--yellow-100), var(--yellow-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-info {\n    --bg: light-dark(var(--cyan-100), var(--cyan-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-inverse {\n    --bg: light-dark(var(--gray-100), var(--gray-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-secondary {\n    --bg: light-dark(var(--gray-050), var(--gray-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-primary {\n    --bg: light-dark(var(--blue-200), var(--blue-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-accent {\n    --bg: light-dark(var(--indigo-200), var(--indigo-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-success {\n    --bg: light-dark(var(--green-200), var(--green-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-danger {\n    --bg: light-dark(var(--red-200), var(--red-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-warning {\n    --bg: light-dark(var(--yellow-200), var(--yellow-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-info {\n    --bg: light-dark(var(--cyan-200), var(--cyan-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-inverse {\n    --bg: light-dark(var(--gray-200), var(--gray-300));\n    background-color: var(--bg);\n  }\n  .bg-muted-secondary {\n    --bg: light-dark(var(--gray-100), var(--gray-700));\n    background-color: var(--bg);\n  }\n  .bg-10 {\n    background-color: color-mix(in oklch, var(--bg) 10%, transparent);\n  }\n  .bg-20 {\n    background-color: color-mix(in oklch, var(--bg) 20%, transparent);\n  }\n  .bg-30 {\n    background-color: color-mix(in oklch, var(--bg) 30%, transparent);\n  }\n  .bg-40 {\n    background-color: color-mix(in oklch, var(--bg) 40%, transparent);\n  }\n  .bg-50 {\n    background-color: color-mix(in oklch, var(--bg) 50%, transparent);\n  }\n  .bg-60 {\n    background-color: color-mix(in oklch, var(--bg) 60%, transparent);\n  }\n  .bg-70 {\n    background-color: color-mix(in oklch, var(--bg) 70%, transparent);\n  }\n  .bg-80 {\n    background-color: color-mix(in oklch, var(--bg) 80%, transparent);\n  }\n  .bg-90 {\n    background-color: color-mix(in oklch, var(--bg) 90%, transparent);\n  }\n  .bg-100 {\n    background-color: var(--bg);\n  }\n  .theme-contrast {\n    background-color: var(--theme-bg);\n    color: var(--theme-contrast);\n  }\n  .theme-subtle {\n    background-color: var(--theme-bg-subtle);\n    color: var(--theme-text);\n  }\n  .theme-muted {\n    background-color: var(--theme-bg-muted);\n    color: var(--theme-text-emphasis);\n  }\n  .theme-border {\n    border: var(--border-width) solid var(--theme-border);\n  }\n  .bg-gradient {\n    background-image: var(--gradient);\n  }\n  .user-select-all {\n    user-select: all;\n  }\n  .user-select-auto {\n    user-select: auto;\n  }\n  .user-select-text {\n    user-select: text;\n  }\n  .user-select-none {\n    user-select: none;\n  }\n  .pe-none {\n    pointer-events: none;\n  }\n  .pe-auto {\n    pointer-events: auto;\n  }\n  .rounded {\n    border-radius: var(--border-radius);\n  }\n  .rounded-0 {\n    border-radius: 0;\n  }\n  .rounded-1 {\n    border-radius: var(--border-radius-sm);\n  }\n  .rounded-2 {\n    border-radius: var(--border-radius);\n  }\n  .rounded-3 {\n    border-radius: var(--border-radius-lg);\n  }\n  .rounded-4 {\n    border-radius: var(--border-radius-xl);\n  }\n  .rounded-5 {\n    border-radius: var(--border-radius-2xl);\n  }\n  .rounded-circle {\n    border-radius: 50%;\n  }\n  .rounded-pill {\n    border-radius: var(--border-radius-pill);\n  }\n  .rounded-top {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-top-0 {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .rounded-top-1 {\n    border-start-start-radius: var(--border-radius-sm);\n    border-start-end-radius: var(--border-radius-sm);\n  }\n  .rounded-top-2 {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-top-3 {\n    border-start-start-radius: var(--border-radius-lg);\n    border-start-end-radius: var(--border-radius-lg);\n  }\n  .rounded-top-4 {\n    border-start-start-radius: var(--border-radius-xl);\n    border-start-end-radius: var(--border-radius-xl);\n  }\n  .rounded-top-5 {\n    border-start-start-radius: var(--border-radius-2xl);\n    border-start-end-radius: var(--border-radius-2xl);\n  }\n  .rounded-top-circle {\n    border-start-start-radius: 50%;\n    border-start-end-radius: 50%;\n  }\n  .rounded-top-pill {\n    border-start-start-radius: var(--border-radius-pill);\n    border-start-end-radius: var(--border-radius-pill);\n  }\n  .rounded-end {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-end-0 {\n    border-end-end-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-end-1 {\n    border-end-end-radius: var(--border-radius-sm);\n    border-end-start-radius: var(--border-radius-sm);\n  }\n  .rounded-end-2 {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-end-3 {\n    border-end-end-radius: var(--border-radius-lg);\n    border-end-start-radius: var(--border-radius-lg);\n  }\n  .rounded-end-4 {\n    border-end-end-radius: var(--border-radius-xl);\n    border-end-start-radius: var(--border-radius-xl);\n  }\n  .rounded-end-5 {\n    border-end-end-radius: var(--border-radius-2xl);\n    border-end-start-radius: var(--border-radius-2xl);\n  }\n  .rounded-end-circle {\n    border-end-end-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-end-pill {\n    border-end-end-radius: var(--border-radius-pill);\n    border-end-start-radius: var(--border-radius-pill);\n  }\n  .rounded-bottom {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-bottom-0 {\n    border-end-end-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-bottom-1 {\n    border-end-end-radius: var(--border-radius-sm);\n    border-end-start-radius: var(--border-radius-sm);\n  }\n  .rounded-bottom-2 {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-bottom-3 {\n    border-end-end-radius: var(--border-radius-lg);\n    border-end-start-radius: var(--border-radius-lg);\n  }\n  .rounded-bottom-4 {\n    border-end-end-radius: var(--border-radius-xl);\n    border-end-start-radius: var(--border-radius-xl);\n  }\n  .rounded-bottom-5 {\n    border-end-end-radius: var(--border-radius-2xl);\n    border-end-start-radius: var(--border-radius-2xl);\n  }\n  .rounded-bottom-circle {\n    border-end-end-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-bottom-pill {\n    border-end-end-radius: var(--border-radius-pill);\n    border-end-start-radius: var(--border-radius-pill);\n  }\n  .rounded-start {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-start-0 {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .rounded-start-1 {\n    border-start-start-radius: var(--border-radius-sm);\n    border-start-end-radius: var(--border-radius-sm);\n  }\n  .rounded-start-2 {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-start-3 {\n    border-start-start-radius: var(--border-radius-lg);\n    border-start-end-radius: var(--border-radius-lg);\n  }\n  .rounded-start-4 {\n    border-start-start-radius: var(--border-radius-xl);\n    border-start-end-radius: var(--border-radius-xl);\n  }\n  .rounded-start-5 {\n    border-start-start-radius: var(--border-radius-2xl);\n    border-start-end-radius: var(--border-radius-2xl);\n  }\n  .rounded-start-circle {\n    border-start-start-radius: 50%;\n    border-start-end-radius: 50%;\n  }\n  .rounded-start-pill {\n    border-start-start-radius: var(--border-radius-pill);\n    border-start-end-radius: var(--border-radius-pill);\n  }\n  .visible {\n    visibility: visible;\n  }\n  .invisible {\n    visibility: hidden;\n  }\n  .z-n1 {\n    z-index: -1;\n  }\n  .z-0 {\n    z-index: 0;\n  }\n  .z-1 {\n    z-index: 1;\n  }\n  .z-2 {\n    z-index: 2;\n  }\n  .z-3 {\n    z-index: 3;\n  }\n  @media (width >= 576px) {\n    .float-sm-start {\n      float: inline-start;\n    }\n    .float-sm-end {\n      float: inline-end;\n    }\n    .float-sm-none {\n      float: none;\n    }\n    .object-fit-sm-contain {\n      object-fit: contain;\n    }\n    .object-fit-sm-cover {\n      object-fit: cover;\n    }\n    .object-fit-sm-fill {\n      object-fit: fill;\n    }\n    .object-fit-sm-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-sm-none {\n      object-fit: none;\n    }\n    .d-sm-inline {\n      display: inline;\n    }\n    .d-sm-inline-block {\n      display: inline-block;\n    }\n    .d-sm-block {\n      display: block;\n    }\n    .d-sm-grid {\n      display: grid;\n    }\n    .d-sm-inline-grid {\n      display: inline-grid;\n    }\n    .d-sm-table {\n      display: table;\n    }\n    .d-sm-table-row {\n      display: table-row;\n    }\n    .d-sm-table-cell {\n      display: table-cell;\n    }\n    .d-sm-flex {\n      display: flex;\n    }\n    .d-sm-inline-flex {\n      display: inline-flex;\n    }\n    .d-sm-contents {\n      display: contents;\n    }\n    .d-sm-flow-root {\n      display: flow-root;\n    }\n    .d-sm-none {\n      display: none;\n    }\n    .flex-sm-fill {\n      flex: 1 1 auto;\n    }\n    .flex-sm-row {\n      flex-direction: row;\n    }\n    .flex-sm-column {\n      flex-direction: column;\n    }\n    .flex-sm-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-sm-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-sm-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-sm-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-sm-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-sm-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-sm-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-sm-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-sm-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-sm-start {\n      justify-content: flex-start;\n    }\n    .justify-content-sm-end {\n      justify-content: flex-end;\n    }\n    .justify-content-sm-center {\n      justify-content: center;\n    }\n    .justify-content-sm-between {\n      justify-content: space-between;\n    }\n    .justify-content-sm-around {\n      justify-content: space-around;\n    }\n    .justify-content-sm-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-sm-start {\n      justify-items: start;\n    }\n    .justify-items-sm-end {\n      justify-items: end;\n    }\n    .justify-items-sm-center {\n      justify-items: center;\n    }\n    .justify-items-sm-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-sm-start {\n      justify-self: flex-start;\n    }\n    .justify-self-sm-end {\n      justify-self: flex-end;\n    }\n    .justify-self-sm-center {\n      justify-self: center;\n    }\n    .align-items-sm-start {\n      align-items: flex-start;\n    }\n    .align-items-sm-end {\n      align-items: flex-end;\n    }\n    .align-items-sm-center {\n      align-items: center;\n    }\n    .align-items-sm-baseline {\n      align-items: baseline;\n    }\n    .align-items-sm-stretch {\n      align-items: stretch;\n    }\n    .align-content-sm-start {\n      align-content: flex-start;\n    }\n    .align-content-sm-end {\n      align-content: flex-end;\n    }\n    .align-content-sm-center {\n      align-content: center;\n    }\n    .align-content-sm-between {\n      align-content: space-between;\n    }\n    .align-content-sm-around {\n      align-content: space-around;\n    }\n    .align-content-sm-stretch {\n      align-content: stretch;\n    }\n    .align-self-sm-auto {\n      align-self: auto;\n    }\n    .align-self-sm-start {\n      align-self: flex-start;\n    }\n    .align-self-sm-end {\n      align-self: flex-end;\n    }\n    .align-self-sm-center {\n      align-self: center;\n    }\n    .align-self-sm-baseline {\n      align-self: baseline;\n    }\n    .align-self-sm-stretch {\n      align-self: stretch;\n    }\n    .place-items-sm-start {\n      place-items: start;\n    }\n    .place-items-sm-end {\n      place-items: end;\n    }\n    .place-items-sm-center {\n      place-items: center;\n    }\n    .place-items-sm-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-sm-3 {\n      --columns: 3;\n    }\n    .grid-cols-sm-4 {\n      --columns: 4;\n    }\n    .grid-cols-sm-6 {\n      --columns: 6;\n    }\n    .grid-cols-sm-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-sm-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-sm-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-sm-dense {\n      grid-auto-flow: dense;\n    }\n    .order-sm-first {\n      order: -1;\n    }\n    .order-sm-0 {\n      order: 0;\n    }\n    .order-sm-1 {\n      order: 1;\n    }\n    .order-sm-2 {\n      order: 2;\n    }\n    .order-sm-3 {\n      order: 3;\n    }\n    .order-sm-4 {\n      order: 4;\n    }\n    .order-sm-5 {\n      order: 5;\n    }\n    .order-sm-last {\n      order: 6;\n    }\n    .m-sm-0 {\n      margin: 0;\n    }\n    .m-sm-1 {\n      margin: 0.25rem;\n    }\n    .m-sm-2 {\n      margin: 0.5rem;\n    }\n    .m-sm-3 {\n      margin: 1rem;\n    }\n    .m-sm-4 {\n      margin: 1.5rem;\n    }\n    .m-sm-5 {\n      margin: 3rem;\n    }\n    .m-sm-auto {\n      margin: auto;\n    }\n    .mx-sm-0 {\n      margin-inline: 0;\n    }\n    .mx-sm-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-sm-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-sm-3 {\n      margin-inline: 1rem;\n    }\n    .mx-sm-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-sm-5 {\n      margin-inline: 3rem;\n    }\n    .mx-sm-auto {\n      margin-inline: auto;\n    }\n    .my-sm-0 {\n      margin-block: 0;\n    }\n    .my-sm-1 {\n      margin-block: 0.25rem;\n    }\n    .my-sm-2 {\n      margin-block: 0.5rem;\n    }\n    .my-sm-3 {\n      margin-block: 1rem;\n    }\n    .my-sm-4 {\n      margin-block: 1.5rem;\n    }\n    .my-sm-5 {\n      margin-block: 3rem;\n    }\n    .my-sm-auto {\n      margin-block: auto;\n    }\n    .mt-sm-0 {\n      margin-block-start: 0;\n    }\n    .mt-sm-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-sm-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-sm-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-sm-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-sm-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-sm-auto {\n      margin-block-start: auto;\n    }\n    .me-sm-0 {\n      margin-inline-end: 0;\n    }\n    .me-sm-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-sm-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-sm-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-sm-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-sm-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-sm-auto {\n      margin-inline-end: auto;\n    }\n    .mb-sm-0 {\n      margin-block-end: 0;\n    }\n    .mb-sm-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-sm-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-sm-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-sm-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-sm-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-sm-auto {\n      margin-block-end: auto;\n    }\n    .ms-sm-0 {\n      margin-inline-start: 0;\n    }\n    .ms-sm-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-sm-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-sm-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-sm-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-sm-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-sm--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-sm--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-sm-auto {\n      margin-inline-start: auto;\n    }\n    .p-sm-0 {\n      padding: 0;\n    }\n    .p-sm-1 {\n      padding: 0.25rem;\n    }\n    .p-sm-2 {\n      padding: 0.5rem;\n    }\n    .p-sm-3 {\n      padding: 1rem;\n    }\n    .p-sm-4 {\n      padding: 1.5rem;\n    }\n    .p-sm-5 {\n      padding: 3rem;\n    }\n    .px-sm-0 {\n      padding-inline: 0;\n    }\n    .px-sm-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-sm-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-sm-3 {\n      padding-inline: 1rem;\n    }\n    .px-sm-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-sm-5 {\n      padding-inline: 3rem;\n    }\n    .py-sm-0 {\n      padding-block: 0;\n    }\n    .py-sm-1 {\n      padding-block: 0.25rem;\n    }\n    .py-sm-2 {\n      padding-block: 0.5rem;\n    }\n    .py-sm-3 {\n      padding-block: 1rem;\n    }\n    .py-sm-4 {\n      padding-block: 1.5rem;\n    }\n    .py-sm-5 {\n      padding-block: 3rem;\n    }\n    .pt-sm-0 {\n      padding-block-start: 0;\n    }\n    .pt-sm-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-sm-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-sm-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-sm-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-sm-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-sm-0 {\n      padding-inline-end: 0;\n    }\n    .pe-sm-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-sm-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-sm-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-sm-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-sm-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-sm-0 {\n      padding-block-end: 0;\n    }\n    .pb-sm-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-sm-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-sm-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-sm-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-sm-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-sm-0 {\n      padding-inline-start: 0;\n    }\n    .ps-sm-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-sm-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-sm-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-sm-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-sm-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-sm-0 {\n      gap: 0;\n    }\n    .gap-sm-1 {\n      gap: 0.25rem;\n    }\n    .gap-sm-2 {\n      gap: 0.5rem;\n    }\n    .gap-sm-3 {\n      gap: 1rem;\n    }\n    .gap-sm-4 {\n      gap: 1.5rem;\n    }\n    .gap-sm-5 {\n      gap: 3rem;\n    }\n    .row-gap-sm-0 {\n      row-gap: 0;\n    }\n    .row-gap-sm-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-sm-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-sm-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-sm-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-sm-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-sm-0 {\n      column-gap: 0;\n    }\n    .column-gap-sm-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-sm-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-sm-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-sm-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-sm-5 {\n      column-gap: 3rem;\n    }\n    .text-sm-start {\n      text-align: start;\n    }\n    .text-sm-end {\n      text-align: end;\n    }\n    .text-sm-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 768px) {\n    .float-md-start {\n      float: inline-start;\n    }\n    .float-md-end {\n      float: inline-end;\n    }\n    .float-md-none {\n      float: none;\n    }\n    .object-fit-md-contain {\n      object-fit: contain;\n    }\n    .object-fit-md-cover {\n      object-fit: cover;\n    }\n    .object-fit-md-fill {\n      object-fit: fill;\n    }\n    .object-fit-md-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-md-none {\n      object-fit: none;\n    }\n    .d-md-inline {\n      display: inline;\n    }\n    .d-md-inline-block {\n      display: inline-block;\n    }\n    .d-md-block {\n      display: block;\n    }\n    .d-md-grid {\n      display: grid;\n    }\n    .d-md-inline-grid {\n      display: inline-grid;\n    }\n    .d-md-table {\n      display: table;\n    }\n    .d-md-table-row {\n      display: table-row;\n    }\n    .d-md-table-cell {\n      display: table-cell;\n    }\n    .d-md-flex {\n      display: flex;\n    }\n    .d-md-inline-flex {\n      display: inline-flex;\n    }\n    .d-md-contents {\n      display: contents;\n    }\n    .d-md-flow-root {\n      display: flow-root;\n    }\n    .d-md-none {\n      display: none;\n    }\n    .flex-md-fill {\n      flex: 1 1 auto;\n    }\n    .flex-md-row {\n      flex-direction: row;\n    }\n    .flex-md-column {\n      flex-direction: column;\n    }\n    .flex-md-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-md-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-md-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-md-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-md-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-md-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-md-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-md-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-md-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-md-start {\n      justify-content: flex-start;\n    }\n    .justify-content-md-end {\n      justify-content: flex-end;\n    }\n    .justify-content-md-center {\n      justify-content: center;\n    }\n    .justify-content-md-between {\n      justify-content: space-between;\n    }\n    .justify-content-md-around {\n      justify-content: space-around;\n    }\n    .justify-content-md-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-md-start {\n      justify-items: start;\n    }\n    .justify-items-md-end {\n      justify-items: end;\n    }\n    .justify-items-md-center {\n      justify-items: center;\n    }\n    .justify-items-md-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-md-start {\n      justify-self: flex-start;\n    }\n    .justify-self-md-end {\n      justify-self: flex-end;\n    }\n    .justify-self-md-center {\n      justify-self: center;\n    }\n    .align-items-md-start {\n      align-items: flex-start;\n    }\n    .align-items-md-end {\n      align-items: flex-end;\n    }\n    .align-items-md-center {\n      align-items: center;\n    }\n    .align-items-md-baseline {\n      align-items: baseline;\n    }\n    .align-items-md-stretch {\n      align-items: stretch;\n    }\n    .align-content-md-start {\n      align-content: flex-start;\n    }\n    .align-content-md-end {\n      align-content: flex-end;\n    }\n    .align-content-md-center {\n      align-content: center;\n    }\n    .align-content-md-between {\n      align-content: space-between;\n    }\n    .align-content-md-around {\n      align-content: space-around;\n    }\n    .align-content-md-stretch {\n      align-content: stretch;\n    }\n    .align-self-md-auto {\n      align-self: auto;\n    }\n    .align-self-md-start {\n      align-self: flex-start;\n    }\n    .align-self-md-end {\n      align-self: flex-end;\n    }\n    .align-self-md-center {\n      align-self: center;\n    }\n    .align-self-md-baseline {\n      align-self: baseline;\n    }\n    .align-self-md-stretch {\n      align-self: stretch;\n    }\n    .place-items-md-start {\n      place-items: start;\n    }\n    .place-items-md-end {\n      place-items: end;\n    }\n    .place-items-md-center {\n      place-items: center;\n    }\n    .place-items-md-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-md-3 {\n      --columns: 3;\n    }\n    .grid-cols-md-4 {\n      --columns: 4;\n    }\n    .grid-cols-md-6 {\n      --columns: 6;\n    }\n    .grid-cols-md-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-md-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-md-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-md-dense {\n      grid-auto-flow: dense;\n    }\n    .order-md-first {\n      order: -1;\n    }\n    .order-md-0 {\n      order: 0;\n    }\n    .order-md-1 {\n      order: 1;\n    }\n    .order-md-2 {\n      order: 2;\n    }\n    .order-md-3 {\n      order: 3;\n    }\n    .order-md-4 {\n      order: 4;\n    }\n    .order-md-5 {\n      order: 5;\n    }\n    .order-md-last {\n      order: 6;\n    }\n    .m-md-0 {\n      margin: 0;\n    }\n    .m-md-1 {\n      margin: 0.25rem;\n    }\n    .m-md-2 {\n      margin: 0.5rem;\n    }\n    .m-md-3 {\n      margin: 1rem;\n    }\n    .m-md-4 {\n      margin: 1.5rem;\n    }\n    .m-md-5 {\n      margin: 3rem;\n    }\n    .m-md-auto {\n      margin: auto;\n    }\n    .mx-md-0 {\n      margin-inline: 0;\n    }\n    .mx-md-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-md-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-md-3 {\n      margin-inline: 1rem;\n    }\n    .mx-md-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-md-5 {\n      margin-inline: 3rem;\n    }\n    .mx-md-auto {\n      margin-inline: auto;\n    }\n    .my-md-0 {\n      margin-block: 0;\n    }\n    .my-md-1 {\n      margin-block: 0.25rem;\n    }\n    .my-md-2 {\n      margin-block: 0.5rem;\n    }\n    .my-md-3 {\n      margin-block: 1rem;\n    }\n    .my-md-4 {\n      margin-block: 1.5rem;\n    }\n    .my-md-5 {\n      margin-block: 3rem;\n    }\n    .my-md-auto {\n      margin-block: auto;\n    }\n    .mt-md-0 {\n      margin-block-start: 0;\n    }\n    .mt-md-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-md-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-md-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-md-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-md-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-md-auto {\n      margin-block-start: auto;\n    }\n    .me-md-0 {\n      margin-inline-end: 0;\n    }\n    .me-md-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-md-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-md-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-md-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-md-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-md-auto {\n      margin-inline-end: auto;\n    }\n    .mb-md-0 {\n      margin-block-end: 0;\n    }\n    .mb-md-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-md-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-md-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-md-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-md-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-md-auto {\n      margin-block-end: auto;\n    }\n    .ms-md-0 {\n      margin-inline-start: 0;\n    }\n    .ms-md-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-md-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-md-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-md-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-md-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-md--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-md--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-md-auto {\n      margin-inline-start: auto;\n    }\n    .p-md-0 {\n      padding: 0;\n    }\n    .p-md-1 {\n      padding: 0.25rem;\n    }\n    .p-md-2 {\n      padding: 0.5rem;\n    }\n    .p-md-3 {\n      padding: 1rem;\n    }\n    .p-md-4 {\n      padding: 1.5rem;\n    }\n    .p-md-5 {\n      padding: 3rem;\n    }\n    .px-md-0 {\n      padding-inline: 0;\n    }\n    .px-md-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-md-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-md-3 {\n      padding-inline: 1rem;\n    }\n    .px-md-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-md-5 {\n      padding-inline: 3rem;\n    }\n    .py-md-0 {\n      padding-block: 0;\n    }\n    .py-md-1 {\n      padding-block: 0.25rem;\n    }\n    .py-md-2 {\n      padding-block: 0.5rem;\n    }\n    .py-md-3 {\n      padding-block: 1rem;\n    }\n    .py-md-4 {\n      padding-block: 1.5rem;\n    }\n    .py-md-5 {\n      padding-block: 3rem;\n    }\n    .pt-md-0 {\n      padding-block-start: 0;\n    }\n    .pt-md-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-md-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-md-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-md-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-md-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-md-0 {\n      padding-inline-end: 0;\n    }\n    .pe-md-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-md-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-md-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-md-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-md-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-md-0 {\n      padding-block-end: 0;\n    }\n    .pb-md-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-md-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-md-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-md-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-md-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-md-0 {\n      padding-inline-start: 0;\n    }\n    .ps-md-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-md-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-md-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-md-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-md-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-md-0 {\n      gap: 0;\n    }\n    .gap-md-1 {\n      gap: 0.25rem;\n    }\n    .gap-md-2 {\n      gap: 0.5rem;\n    }\n    .gap-md-3 {\n      gap: 1rem;\n    }\n    .gap-md-4 {\n      gap: 1.5rem;\n    }\n    .gap-md-5 {\n      gap: 3rem;\n    }\n    .row-gap-md-0 {\n      row-gap: 0;\n    }\n    .row-gap-md-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-md-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-md-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-md-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-md-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-md-0 {\n      column-gap: 0;\n    }\n    .column-gap-md-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-md-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-md-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-md-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-md-5 {\n      column-gap: 3rem;\n    }\n    .text-md-start {\n      text-align: start;\n    }\n    .text-md-end {\n      text-align: end;\n    }\n    .text-md-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1024px) {\n    .float-lg-start {\n      float: inline-start;\n    }\n    .float-lg-end {\n      float: inline-end;\n    }\n    .float-lg-none {\n      float: none;\n    }\n    .object-fit-lg-contain {\n      object-fit: contain;\n    }\n    .object-fit-lg-cover {\n      object-fit: cover;\n    }\n    .object-fit-lg-fill {\n      object-fit: fill;\n    }\n    .object-fit-lg-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-lg-none {\n      object-fit: none;\n    }\n    .d-lg-inline {\n      display: inline;\n    }\n    .d-lg-inline-block {\n      display: inline-block;\n    }\n    .d-lg-block {\n      display: block;\n    }\n    .d-lg-grid {\n      display: grid;\n    }\n    .d-lg-inline-grid {\n      display: inline-grid;\n    }\n    .d-lg-table {\n      display: table;\n    }\n    .d-lg-table-row {\n      display: table-row;\n    }\n    .d-lg-table-cell {\n      display: table-cell;\n    }\n    .d-lg-flex {\n      display: flex;\n    }\n    .d-lg-inline-flex {\n      display: inline-flex;\n    }\n    .d-lg-contents {\n      display: contents;\n    }\n    .d-lg-flow-root {\n      display: flow-root;\n    }\n    .d-lg-none {\n      display: none;\n    }\n    .flex-lg-fill {\n      flex: 1 1 auto;\n    }\n    .flex-lg-row {\n      flex-direction: row;\n    }\n    .flex-lg-column {\n      flex-direction: column;\n    }\n    .flex-lg-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-lg-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-lg-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-lg-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-lg-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-lg-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-lg-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-lg-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-lg-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-lg-start {\n      justify-content: flex-start;\n    }\n    .justify-content-lg-end {\n      justify-content: flex-end;\n    }\n    .justify-content-lg-center {\n      justify-content: center;\n    }\n    .justify-content-lg-between {\n      justify-content: space-between;\n    }\n    .justify-content-lg-around {\n      justify-content: space-around;\n    }\n    .justify-content-lg-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-lg-start {\n      justify-items: start;\n    }\n    .justify-items-lg-end {\n      justify-items: end;\n    }\n    .justify-items-lg-center {\n      justify-items: center;\n    }\n    .justify-items-lg-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-lg-start {\n      justify-self: flex-start;\n    }\n    .justify-self-lg-end {\n      justify-self: flex-end;\n    }\n    .justify-self-lg-center {\n      justify-self: center;\n    }\n    .align-items-lg-start {\n      align-items: flex-start;\n    }\n    .align-items-lg-end {\n      align-items: flex-end;\n    }\n    .align-items-lg-center {\n      align-items: center;\n    }\n    .align-items-lg-baseline {\n      align-items: baseline;\n    }\n    .align-items-lg-stretch {\n      align-items: stretch;\n    }\n    .align-content-lg-start {\n      align-content: flex-start;\n    }\n    .align-content-lg-end {\n      align-content: flex-end;\n    }\n    .align-content-lg-center {\n      align-content: center;\n    }\n    .align-content-lg-between {\n      align-content: space-between;\n    }\n    .align-content-lg-around {\n      align-content: space-around;\n    }\n    .align-content-lg-stretch {\n      align-content: stretch;\n    }\n    .align-self-lg-auto {\n      align-self: auto;\n    }\n    .align-self-lg-start {\n      align-self: flex-start;\n    }\n    .align-self-lg-end {\n      align-self: flex-end;\n    }\n    .align-self-lg-center {\n      align-self: center;\n    }\n    .align-self-lg-baseline {\n      align-self: baseline;\n    }\n    .align-self-lg-stretch {\n      align-self: stretch;\n    }\n    .place-items-lg-start {\n      place-items: start;\n    }\n    .place-items-lg-end {\n      place-items: end;\n    }\n    .place-items-lg-center {\n      place-items: center;\n    }\n    .place-items-lg-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-lg-3 {\n      --columns: 3;\n    }\n    .grid-cols-lg-4 {\n      --columns: 4;\n    }\n    .grid-cols-lg-6 {\n      --columns: 6;\n    }\n    .grid-cols-lg-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-lg-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-lg-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-lg-dense {\n      grid-auto-flow: dense;\n    }\n    .order-lg-first {\n      order: -1;\n    }\n    .order-lg-0 {\n      order: 0;\n    }\n    .order-lg-1 {\n      order: 1;\n    }\n    .order-lg-2 {\n      order: 2;\n    }\n    .order-lg-3 {\n      order: 3;\n    }\n    .order-lg-4 {\n      order: 4;\n    }\n    .order-lg-5 {\n      order: 5;\n    }\n    .order-lg-last {\n      order: 6;\n    }\n    .m-lg-0 {\n      margin: 0;\n    }\n    .m-lg-1 {\n      margin: 0.25rem;\n    }\n    .m-lg-2 {\n      margin: 0.5rem;\n    }\n    .m-lg-3 {\n      margin: 1rem;\n    }\n    .m-lg-4 {\n      margin: 1.5rem;\n    }\n    .m-lg-5 {\n      margin: 3rem;\n    }\n    .m-lg-auto {\n      margin: auto;\n    }\n    .mx-lg-0 {\n      margin-inline: 0;\n    }\n    .mx-lg-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-lg-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-lg-3 {\n      margin-inline: 1rem;\n    }\n    .mx-lg-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-lg-5 {\n      margin-inline: 3rem;\n    }\n    .mx-lg-auto {\n      margin-inline: auto;\n    }\n    .my-lg-0 {\n      margin-block: 0;\n    }\n    .my-lg-1 {\n      margin-block: 0.25rem;\n    }\n    .my-lg-2 {\n      margin-block: 0.5rem;\n    }\n    .my-lg-3 {\n      margin-block: 1rem;\n    }\n    .my-lg-4 {\n      margin-block: 1.5rem;\n    }\n    .my-lg-5 {\n      margin-block: 3rem;\n    }\n    .my-lg-auto {\n      margin-block: auto;\n    }\n    .mt-lg-0 {\n      margin-block-start: 0;\n    }\n    .mt-lg-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-lg-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-lg-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-lg-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-lg-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-lg-auto {\n      margin-block-start: auto;\n    }\n    .me-lg-0 {\n      margin-inline-end: 0;\n    }\n    .me-lg-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-lg-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-lg-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-lg-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-lg-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-lg-auto {\n      margin-inline-end: auto;\n    }\n    .mb-lg-0 {\n      margin-block-end: 0;\n    }\n    .mb-lg-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-lg-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-lg-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-lg-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-lg-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-lg-auto {\n      margin-block-end: auto;\n    }\n    .ms-lg-0 {\n      margin-inline-start: 0;\n    }\n    .ms-lg-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-lg-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-lg-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-lg-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-lg-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-lg--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-lg--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-lg-auto {\n      margin-inline-start: auto;\n    }\n    .p-lg-0 {\n      padding: 0;\n    }\n    .p-lg-1 {\n      padding: 0.25rem;\n    }\n    .p-lg-2 {\n      padding: 0.5rem;\n    }\n    .p-lg-3 {\n      padding: 1rem;\n    }\n    .p-lg-4 {\n      padding: 1.5rem;\n    }\n    .p-lg-5 {\n      padding: 3rem;\n    }\n    .px-lg-0 {\n      padding-inline: 0;\n    }\n    .px-lg-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-lg-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-lg-3 {\n      padding-inline: 1rem;\n    }\n    .px-lg-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-lg-5 {\n      padding-inline: 3rem;\n    }\n    .py-lg-0 {\n      padding-block: 0;\n    }\n    .py-lg-1 {\n      padding-block: 0.25rem;\n    }\n    .py-lg-2 {\n      padding-block: 0.5rem;\n    }\n    .py-lg-3 {\n      padding-block: 1rem;\n    }\n    .py-lg-4 {\n      padding-block: 1.5rem;\n    }\n    .py-lg-5 {\n      padding-block: 3rem;\n    }\n    .pt-lg-0 {\n      padding-block-start: 0;\n    }\n    .pt-lg-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-lg-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-lg-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-lg-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-lg-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-lg-0 {\n      padding-inline-end: 0;\n    }\n    .pe-lg-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-lg-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-lg-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-lg-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-lg-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-lg-0 {\n      padding-block-end: 0;\n    }\n    .pb-lg-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-lg-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-lg-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-lg-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-lg-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-lg-0 {\n      padding-inline-start: 0;\n    }\n    .ps-lg-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-lg-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-lg-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-lg-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-lg-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-lg-0 {\n      gap: 0;\n    }\n    .gap-lg-1 {\n      gap: 0.25rem;\n    }\n    .gap-lg-2 {\n      gap: 0.5rem;\n    }\n    .gap-lg-3 {\n      gap: 1rem;\n    }\n    .gap-lg-4 {\n      gap: 1.5rem;\n    }\n    .gap-lg-5 {\n      gap: 3rem;\n    }\n    .row-gap-lg-0 {\n      row-gap: 0;\n    }\n    .row-gap-lg-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-lg-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-lg-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-lg-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-lg-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-lg-0 {\n      column-gap: 0;\n    }\n    .column-gap-lg-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-lg-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-lg-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-lg-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-lg-5 {\n      column-gap: 3rem;\n    }\n    .text-lg-start {\n      text-align: start;\n    }\n    .text-lg-end {\n      text-align: end;\n    }\n    .text-lg-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1280px) {\n    .float-xl-start {\n      float: inline-start;\n    }\n    .float-xl-end {\n      float: inline-end;\n    }\n    .float-xl-none {\n      float: none;\n    }\n    .object-fit-xl-contain {\n      object-fit: contain;\n    }\n    .object-fit-xl-cover {\n      object-fit: cover;\n    }\n    .object-fit-xl-fill {\n      object-fit: fill;\n    }\n    .object-fit-xl-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-xl-none {\n      object-fit: none;\n    }\n    .d-xl-inline {\n      display: inline;\n    }\n    .d-xl-inline-block {\n      display: inline-block;\n    }\n    .d-xl-block {\n      display: block;\n    }\n    .d-xl-grid {\n      display: grid;\n    }\n    .d-xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-xl-table {\n      display: table;\n    }\n    .d-xl-table-row {\n      display: table-row;\n    }\n    .d-xl-table-cell {\n      display: table-cell;\n    }\n    .d-xl-flex {\n      display: flex;\n    }\n    .d-xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-xl-contents {\n      display: contents;\n    }\n    .d-xl-flow-root {\n      display: flow-root;\n    }\n    .d-xl-none {\n      display: none;\n    }\n    .flex-xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-xl-row {\n      flex-direction: row;\n    }\n    .flex-xl-column {\n      flex-direction: column;\n    }\n    .flex-xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-xl-center {\n      justify-content: center;\n    }\n    .justify-content-xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-xl-start {\n      justify-items: start;\n    }\n    .justify-items-xl-end {\n      justify-items: end;\n    }\n    .justify-items-xl-center {\n      justify-items: center;\n    }\n    .justify-items-xl-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-xl-start {\n      justify-self: flex-start;\n    }\n    .justify-self-xl-end {\n      justify-self: flex-end;\n    }\n    .justify-self-xl-center {\n      justify-self: center;\n    }\n    .align-items-xl-start {\n      align-items: flex-start;\n    }\n    .align-items-xl-end {\n      align-items: flex-end;\n    }\n    .align-items-xl-center {\n      align-items: center;\n    }\n    .align-items-xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-xl-start {\n      align-content: flex-start;\n    }\n    .align-content-xl-end {\n      align-content: flex-end;\n    }\n    .align-content-xl-center {\n      align-content: center;\n    }\n    .align-content-xl-between {\n      align-content: space-between;\n    }\n    .align-content-xl-around {\n      align-content: space-around;\n    }\n    .align-content-xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-xl-auto {\n      align-self: auto;\n    }\n    .align-self-xl-start {\n      align-self: flex-start;\n    }\n    .align-self-xl-end {\n      align-self: flex-end;\n    }\n    .align-self-xl-center {\n      align-self: center;\n    }\n    .align-self-xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-xl-start {\n      place-items: start;\n    }\n    .place-items-xl-end {\n      place-items: end;\n    }\n    .place-items-xl-center {\n      place-items: center;\n    }\n    .place-items-xl-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-xl-3 {\n      --columns: 3;\n    }\n    .grid-cols-xl-4 {\n      --columns: 4;\n    }\n    .grid-cols-xl-6 {\n      --columns: 6;\n    }\n    .grid-cols-xl-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-xl-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-xl-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-xl-dense {\n      grid-auto-flow: dense;\n    }\n    .order-xl-first {\n      order: -1;\n    }\n    .order-xl-0 {\n      order: 0;\n    }\n    .order-xl-1 {\n      order: 1;\n    }\n    .order-xl-2 {\n      order: 2;\n    }\n    .order-xl-3 {\n      order: 3;\n    }\n    .order-xl-4 {\n      order: 4;\n    }\n    .order-xl-5 {\n      order: 5;\n    }\n    .order-xl-last {\n      order: 6;\n    }\n    .m-xl-0 {\n      margin: 0;\n    }\n    .m-xl-1 {\n      margin: 0.25rem;\n    }\n    .m-xl-2 {\n      margin: 0.5rem;\n    }\n    .m-xl-3 {\n      margin: 1rem;\n    }\n    .m-xl-4 {\n      margin: 1.5rem;\n    }\n    .m-xl-5 {\n      margin: 3rem;\n    }\n    .m-xl-auto {\n      margin: auto;\n    }\n    .mx-xl-0 {\n      margin-inline: 0;\n    }\n    .mx-xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-xl-auto {\n      margin-inline: auto;\n    }\n    .my-xl-0 {\n      margin-block: 0;\n    }\n    .my-xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-xl-3 {\n      margin-block: 1rem;\n    }\n    .my-xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-xl-5 {\n      margin-block: 3rem;\n    }\n    .my-xl-auto {\n      margin-block: auto;\n    }\n    .mt-xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-xl-auto {\n      margin-block-start: auto;\n    }\n    .me-xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-xl-0 {\n      padding: 0;\n    }\n    .p-xl-1 {\n      padding: 0.25rem;\n    }\n    .p-xl-2 {\n      padding: 0.5rem;\n    }\n    .p-xl-3 {\n      padding: 1rem;\n    }\n    .p-xl-4 {\n      padding: 1.5rem;\n    }\n    .p-xl-5 {\n      padding: 3rem;\n    }\n    .px-xl-0 {\n      padding-inline: 0;\n    }\n    .px-xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-xl-0 {\n      padding-block: 0;\n    }\n    .py-xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-xl-3 {\n      padding-block: 1rem;\n    }\n    .py-xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-xl-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-xl-0 {\n      gap: 0;\n    }\n    .gap-xl-1 {\n      gap: 0.25rem;\n    }\n    .gap-xl-2 {\n      gap: 0.5rem;\n    }\n    .gap-xl-3 {\n      gap: 1rem;\n    }\n    .gap-xl-4 {\n      gap: 1.5rem;\n    }\n    .gap-xl-5 {\n      gap: 3rem;\n    }\n    .row-gap-xl-0 {\n      row-gap: 0;\n    }\n    .row-gap-xl-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-xl-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-xl-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-xl-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-xl-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-xl-0 {\n      column-gap: 0;\n    }\n    .column-gap-xl-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-xl-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-xl-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-xl-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-xl-5 {\n      column-gap: 3rem;\n    }\n    .text-xl-start {\n      text-align: start;\n    }\n    .text-xl-end {\n      text-align: end;\n    }\n    .text-xl-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1536px) {\n    .float-2xl-start {\n      float: inline-start;\n    }\n    .float-2xl-end {\n      float: inline-end;\n    }\n    .float-2xl-none {\n      float: none;\n    }\n    .object-fit-2xl-contain {\n      object-fit: contain;\n    }\n    .object-fit-2xl-cover {\n      object-fit: cover;\n    }\n    .object-fit-2xl-fill {\n      object-fit: fill;\n    }\n    .object-fit-2xl-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-2xl-none {\n      object-fit: none;\n    }\n    .d-2xl-inline {\n      display: inline;\n    }\n    .d-2xl-inline-block {\n      display: inline-block;\n    }\n    .d-2xl-block {\n      display: block;\n    }\n    .d-2xl-grid {\n      display: grid;\n    }\n    .d-2xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-2xl-table {\n      display: table;\n    }\n    .d-2xl-table-row {\n      display: table-row;\n    }\n    .d-2xl-table-cell {\n      display: table-cell;\n    }\n    .d-2xl-flex {\n      display: flex;\n    }\n    .d-2xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-2xl-contents {\n      display: contents;\n    }\n    .d-2xl-flow-root {\n      display: flow-root;\n    }\n    .d-2xl-none {\n      display: none;\n    }\n    .flex-2xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-2xl-row {\n      flex-direction: row;\n    }\n    .flex-2xl-column {\n      flex-direction: column;\n    }\n    .flex-2xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-2xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-2xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-2xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-2xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-2xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-2xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-2xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-2xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-2xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-2xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-2xl-center {\n      justify-content: center;\n    }\n    .justify-content-2xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-2xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-2xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-2xl-start {\n      justify-items: start;\n    }\n    .justify-items-2xl-end {\n      justify-items: end;\n    }\n    .justify-items-2xl-center {\n      justify-items: center;\n    }\n    .justify-items-2xl-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-2xl-start {\n      justify-self: flex-start;\n    }\n    .justify-self-2xl-end {\n      justify-self: flex-end;\n    }\n    .justify-self-2xl-center {\n      justify-self: center;\n    }\n    .align-items-2xl-start {\n      align-items: flex-start;\n    }\n    .align-items-2xl-end {\n      align-items: flex-end;\n    }\n    .align-items-2xl-center {\n      align-items: center;\n    }\n    .align-items-2xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-2xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-2xl-start {\n      align-content: flex-start;\n    }\n    .align-content-2xl-end {\n      align-content: flex-end;\n    }\n    .align-content-2xl-center {\n      align-content: center;\n    }\n    .align-content-2xl-between {\n      align-content: space-between;\n    }\n    .align-content-2xl-around {\n      align-content: space-around;\n    }\n    .align-content-2xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-2xl-auto {\n      align-self: auto;\n    }\n    .align-self-2xl-start {\n      align-self: flex-start;\n    }\n    .align-self-2xl-end {\n      align-self: flex-end;\n    }\n    .align-self-2xl-center {\n      align-self: center;\n    }\n    .align-self-2xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-2xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-2xl-start {\n      place-items: start;\n    }\n    .place-items-2xl-end {\n      place-items: end;\n    }\n    .place-items-2xl-center {\n      place-items: center;\n    }\n    .place-items-2xl-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-2xl-3 {\n      --columns: 3;\n    }\n    .grid-cols-2xl-4 {\n      --columns: 4;\n    }\n    .grid-cols-2xl-6 {\n      --columns: 6;\n    }\n    .grid-cols-2xl-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-2xl-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-2xl-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-2xl-dense {\n      grid-auto-flow: dense;\n    }\n    .order-2xl-first {\n      order: -1;\n    }\n    .order-2xl-0 {\n      order: 0;\n    }\n    .order-2xl-1 {\n      order: 1;\n    }\n    .order-2xl-2 {\n      order: 2;\n    }\n    .order-2xl-3 {\n      order: 3;\n    }\n    .order-2xl-4 {\n      order: 4;\n    }\n    .order-2xl-5 {\n      order: 5;\n    }\n    .order-2xl-last {\n      order: 6;\n    }\n    .m-2xl-0 {\n      margin: 0;\n    }\n    .m-2xl-1 {\n      margin: 0.25rem;\n    }\n    .m-2xl-2 {\n      margin: 0.5rem;\n    }\n    .m-2xl-3 {\n      margin: 1rem;\n    }\n    .m-2xl-4 {\n      margin: 1.5rem;\n    }\n    .m-2xl-5 {\n      margin: 3rem;\n    }\n    .m-2xl-auto {\n      margin: auto;\n    }\n    .mx-2xl-0 {\n      margin-inline: 0;\n    }\n    .mx-2xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-2xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-2xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-2xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-2xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-2xl-auto {\n      margin-inline: auto;\n    }\n    .my-2xl-0 {\n      margin-block: 0;\n    }\n    .my-2xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-2xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-2xl-3 {\n      margin-block: 1rem;\n    }\n    .my-2xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-2xl-5 {\n      margin-block: 3rem;\n    }\n    .my-2xl-auto {\n      margin-block: auto;\n    }\n    .mt-2xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-2xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-2xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-2xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-2xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-2xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-2xl-auto {\n      margin-block-start: auto;\n    }\n    .me-2xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-2xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-2xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-2xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-2xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-2xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-2xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-2xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-2xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-2xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-2xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-2xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-2xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-2xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-2xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-2xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-2xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-2xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-2xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-2xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-2xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-2xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-2xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-2xl-0 {\n      padding: 0;\n    }\n    .p-2xl-1 {\n      padding: 0.25rem;\n    }\n    .p-2xl-2 {\n      padding: 0.5rem;\n    }\n    .p-2xl-3 {\n      padding: 1rem;\n    }\n    .p-2xl-4 {\n      padding: 1.5rem;\n    }\n    .p-2xl-5 {\n      padding: 3rem;\n    }\n    .px-2xl-0 {\n      padding-inline: 0;\n    }\n    .px-2xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-2xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-2xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-2xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-2xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-2xl-0 {\n      padding-block: 0;\n    }\n    .py-2xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-2xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-2xl-3 {\n      padding-block: 1rem;\n    }\n    .py-2xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-2xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-2xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-2xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-2xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-2xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-2xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-2xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-2xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-2xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-2xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-2xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-2xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-2xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-2xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-2xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-2xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-2xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-2xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-2xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-2xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-2xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-2xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-2xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-2xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-2xl-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-2xl-0 {\n      gap: 0;\n    }\n    .gap-2xl-1 {\n      gap: 0.25rem;\n    }\n    .gap-2xl-2 {\n      gap: 0.5rem;\n    }\n    .gap-2xl-3 {\n      gap: 1rem;\n    }\n    .gap-2xl-4 {\n      gap: 1.5rem;\n    }\n    .gap-2xl-5 {\n      gap: 3rem;\n    }\n    .row-gap-2xl-0 {\n      row-gap: 0;\n    }\n    .row-gap-2xl-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-2xl-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-2xl-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-2xl-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-2xl-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-2xl-0 {\n      column-gap: 0;\n    }\n    .column-gap-2xl-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-2xl-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-2xl-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-2xl-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-2xl-5 {\n      column-gap: 3rem;\n    }\n    .text-2xl-start {\n      text-align: start;\n    }\n    .text-2xl-end {\n      text-align: end;\n    }\n    .text-2xl-center {\n      text-align: center;\n    }\n  }\n}\n\n/*# sourceMappingURL=bootstrap-utilities.css.map */\n","$file: \"\" !default;\n\n/*!\n  * Bootstrap #{$file} v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n","// stylelint-disable hue-degree-notation, @stylistic/number-leading-zero\n\n@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// Easily convert colors to oklch() with https://oklch.com/\n\n$white: #fff !default;\n$black: #000 !default;\n\n// scss-docs-start colors-list\n$blue: oklch(60% 0.24 240) !default;\n$indigo: oklch(56% 0.26 288) !default;\n$violet: oklch(56% 0.24 300) !default;\n$purple: oklch(56% 0.24 320) !default;\n$pink: oklch(60% 0.22 4) !default;\n$red: oklch(60% 0.22 20) !default;\n$orange: oklch(70% 0.22 52) !default;\n$amber: oklch(79% 0.2 78) !default;\n$yellow: oklch(88% 0.24 88) !default;\n$lime: oklch(65% 0.24 135) !default;\n$green: oklch(64% 0.22 160) !default;\n$teal: oklch(68% 0.22 190) !default;\n$cyan: oklch(69% 0.22 220) !default;\n$brown: oklch(60% 0.12 54) !default;\n$gray: oklch(60% 0.02 245) !default;\n$pewter: oklch(65% 0.01 290) !default;\n// scss-docs-end colors-list\n\n// scss-docs-start colors-map\n$colors: () !default;\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$colors: defaults(\n  (\n    \"blue\": $blue,\n    \"indigo\": $indigo,\n    \"violet\": $violet,\n    \"purple\": $purple,\n    \"pink\": $pink,\n    \"red\": $red,\n    \"orange\": $orange,\n    \"amber\": $amber,\n    \"yellow\": $yellow,\n    \"lime\": $lime,\n    \"green\": $green,\n    \"teal\": $teal,\n    \"cyan\": $cyan,\n    \"brown\": $brown,\n    \"gray\": $gray,\n    \"pewter\": $pewter,\n  ),\n  $colors\n);\n// scss-docs-end colors-map\n\n// scss-docs-start color-mix-options\n$color-mix-space: lab !default;\n$tint-color: var(--white) !default;\n$shade-color: var(--black) !default;\n\n$color-tints: (\n  \"025\": 94%,\n  \"050\": 90%,\n  \"100\": 80%,\n  \"200\": 60%,\n  \"300\": 40%,\n  \"400\": 20%,\n) !default;\n\n$color-shades: (\n  \"600\": 16%,\n  \"700\": 32%,\n  \"800\": 48%,\n  \"900\": 64%,\n  \"950\": 76%,\n  \"975\": 88%,\n) !default;\n// scss-docs-end color-mix-options\n\n// scss-docs-start color-tokens\n$color-tokens: () !default;\n\n$-color-defaults: () !default;\n@each $color, $value in $colors {\n  @each $stop, $percent in $color-tints {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$tint-color} #{$percent}, #{$value}));\n  }\n  $-color-defaults: map.set($-color-defaults, --#{$color}-500, #{$value});\n  @each $stop, $percent in $color-shades {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$shade-color} #{$percent}, #{$value}));\n  }\n}\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$color-tokens: defaults($-color-defaults, $color-tokens);\n// scss-docs-end color-tokens\n\n:root {\n  @include tokens($color-tokens);\n}\n","// Mixin to output tokens as CSS custom properties\n\n// scss-docs-start mixin-tokens\n@mixin tokens($map) {\n  @each $prop, $value in $map {\n    #{$prop}: #{$value};\n  }\n}\n// scss-docs-end mixin-tokens\n","@use \"sass:map\";\n@use \"colors\" as *;\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"theme\" as *;\n@use \"mixins/tokens\" as *;\n@use \"forms/form-variables\" as *;\n\n// mdo-do: do we need theme?\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n\n$root-tokens: () !default;\n\n// scss-docs-start root-tokens\n// stylelint-disable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: defaults(\n  (\n    --black: #{$black},\n    --white: #{$white},\n\n    --gradient: #{$gradient},\n\n    // scss-docs-start root-font-weight-variables\n    --font-weight-lighter: lighter,\n    --font-weight-light: 300,\n    --font-weight-normal: 400,\n    --font-weight-medium: 500,\n    --font-weight-semibold: 600,\n    --font-weight-bold: 700,\n    --font-weight-bolder: bolder,\n    // scss-docs-end root-font-weight-variables\n\n    // scss-docs-start root-body-variables\n    --body-font-family: system-ui,\n    --body-font-size: var(--font-size-base),\n    --body-font-weight: #{$font-weight-base},\n    --body-line-height: #{$line-height-base},\n\n    --heading-color: #{$headings-color},\n\n    --hr-border-color: var(--border-color),\n\n    --link-color: light-dark(var(--primary-base), var(--primary-text)),\n    --link-decoration: #{$link-decoration},\n    --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000),\n\n    --font-mono: \"SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace\",\n    --code-font-size: 95%,\n    --code-color: var(--fg-2),\n\n    // scss-docs-start root-border-var\n    --border-width: #{$border-width},\n    --border-style: #{$border-style},\n    --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700)),\n    --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    // scss-docs-end root-border-var\n\n    // scss-docs-start root-border-radius-var\n    --border-radius: .5rem,\n    --border-radius-xs: .375rem,\n    --border-radius-sm: .5rem,\n    --border-radius-lg: .75rem,\n    --border-radius-xl: 1rem,\n    --border-radius-2xl: 2rem,\n    --border-radius-pill: 50rem,\n    // scss-docs-end root-border-radius-var\n\n    // scss-docs-start root-box-shadow-variables\n    --box-shadow: 0 .5rem 1rem rgb(0 0 0 / 15%),\n    --box-shadow-sm: 0 .125rem .25rem rgb(0 0 0 / 7.5%),\n    --box-shadow-lg: 0 1rem 3rem rgb(0 0 0 / 17.5%),\n    --box-shadow-inset: inset 0 1px 2px rgb(0 0 0 / 7.5%),\n    // scss-docs-end root-box-shadow-variables\n\n    --spacer: 1rem,\n\n    // scss-docs-start root-focus-variables\n    --focus-ring-width: 3px,\n    --focus-ring-offset: 1px,\n    --focus-ring-color: var(--primary-focus-ring),\n    --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color),\n    // scss-docs-end root-focus-variables\n\n    // scss-docs-start root-form-variables\n    --control-checked-bg: var(--primary-base),\n    --control-checked-border-color: var(--control-checked-bg),\n    --control-active-bg: var(--primary-base),\n    --control-active-border-color: var(--control-active-bg),\n    --control-disabled-bg: var(--bg-3),\n    --control-disabled-opacity: .65,\n\n    --btn-input-fg: var(--fg-body),\n    --btn-input-bg: var(--bg-body),\n\n    --btn-input-min-height: 2.375rem,\n    --btn-input-padding-y: .375rem,\n    --btn-input-padding-x: .75rem,\n    --btn-input-font-size: var(--font-size-base),\n    --btn-input-line-height: var(--line-height-base),\n    --btn-input-border-radius: var(--border-radius),\n\n    --btn-input-xs-min-height: 1.5rem,\n    --btn-input-xs-padding-y: .125rem,\n    --btn-input-xs-padding-x: .5rem,\n    --btn-input-xs-font-size: var(--font-size-xs),\n    --btn-input-xs-line-height: 1.125,\n    --btn-input-xs-border-radius: var(--border-radius-xs),\n\n    --btn-input-sm-min-height: 2rem,\n    --btn-input-sm-padding-y: .25rem,\n    --btn-input-sm-padding-x: .625rem,\n    --btn-input-sm-font-size: var(--font-size-sm),\n    --btn-input-sm-line-height: var(--line-height-sm),\n    --btn-input-sm-border-radius: var(--border-radius-sm),\n\n    --btn-input-lg-min-height: 2.75rem,\n    --btn-input-lg-padding-y: .5rem,\n    --btn-input-lg-padding-x: 1rem,\n    --btn-input-lg-font-size: var(--font-size-md),\n    --btn-input-lg-line-height: var(--line-height-md),\n    --btn-input-lg-border-radius: var(--border-radius-lg),\n    // scss-docs-end root-form-variables\n\n    // scss-docs-start root-form-validation-variables\n    --form-valid-color: #{$form-valid-color},\n    --form-valid-border-color: #{$form-valid-border-color},\n    --form-invalid-color: #{$form-invalid-color},\n    --form-invalid-border-color: #{$form-invalid-border-color},\n    // scss-docs-end root-form-validation-variables\n  ),\n  $root-tokens\n);\n// stylelint-enable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// scss-docs-end root-tokens\n\n// scss-docs-start root-font-size-loop\n// Generate font-size and line-height tokens\n@each $name, $props in $font-sizes {\n  $root-tokens: map.set($root-tokens, --font-size-#{$name}, map.get($props, \"font-size\"));\n  $root-tokens: map.set($root-tokens, --line-height-#{$name}, map.get($props, \"line-height\"));\n}\n// scss-docs-end root-font-size-loop\n\n// scss-docs-start root-theme-tokens\n// Generate semantic theme colors\n@each $color-name, $color-map in $theme-colors {\n  @each $key, $value in $color-map {\n    $root-tokens: map.set($root-tokens, --#{$color-name}-#{$key}, $value);\n  }\n}\n\n// Generate background tokens\n@each $key, $value in $theme-bgs {\n  $root-tokens: map.set($root-tokens, --bg-#{$key}, $value);\n}\n\n// Generate foreground tokens\n@each $key, $value in $theme-fgs {\n  $root-tokens: map.set($root-tokens, --fg-#{$key}, $value);\n}\n\n// Generate border tokens\n@each $key, $value in $theme-borders {\n  $root-tokens: map.set($root-tokens, --border-#{$key}, $value);\n}\n// scss-docs-end root-theme-tokens\n\n// Generate breakpoint tokens\n@each $name, $value in $breakpoints {\n  $root-tokens: map.set($root-tokens, --breakpoint-#{$name}, $value);\n}\n\n:root {\n  @include tokens($root-tokens);\n\n  color-scheme: light dark;\n}\n\n[data-bs-theme=\"dark\"] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=\"light\"] {\n  color-scheme: light;\n}\n","@layer helpers {\n  .focus-ring:focus-visible {\n    outline: var(--focus-ring);\n  }\n}\n","@use \"../config\" as *;\n@use \"../mixins/transition\" as *;\n\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: $icon-link-gap;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, .5));\n    text-underline-offset: $icon-link-underline-offset;\n    backface-visibility: hidden;\n\n    > .bi {\n      flex-shrink: 0;\n      width: $icon-link-icon-size;\n      height: $icon-link-icon-size;\n      fill: currentcolor;\n      @include transition($icon-link-icon-transition);\n    }\n  }\n\n  .icon-link-hover {\n    &:hover,\n    &:focus-visible {\n      > .bi {\n        transform: var(--icon-link-transform, $icon-link-icon-transform);\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n\n// Configuration\n//\n// Variables and settings not related to theme, components, and more go here. It does include layout.\n\n// Merge overrides on top of defaults, stripping null entries.\n// Null values let users remove map keys via @use ... with().\n// Accepts a list as $defaults (converted to a map with `true` values).\n@function defaults($defaults, $overrides) {\n  @if meta.type-of($defaults) == \"list\" {\n    $map: ();\n    @each $key in $defaults {\n      $map: map.merge($map, ($key: true));\n    }\n    $defaults: $map;\n  }\n  $merged: map.merge($defaults, $overrides);\n  @each $key, $value in $merged {\n    @if $value == null {\n      $merged: map.remove($merged, $key);\n    }\n  }\n  @return $merged;\n}\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              true !default;\n$enable-gradients:            false !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        true !default;\n$enable-grid-classes:         true !default;\n$enable-container-classes:    true !default;\n$enable-cssgrid:              true !default;\n$enable-button-pointers:      true !default;\n$enable-validation-icons:     true !default;\n// $enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n\n$enable-dark-mode:            true !default;\n\n$color-mode-type:          \"media-query\" !default;\n$color-contrast-dark:      #000 !default;\n$color-contrast-light:     #fff !default;\n$min-contrast-ratio:         4.5 !default;\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n\n$negative-spacers: (\n  \"-1\": $spacer * -.25,\n  \"-2\": $spacer * -.5,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n$sizes: (\n  1: $spacer,\n  2: calc($spacer * 2),\n  3: calc($spacer * 3),\n  4: calc($spacer * 4),\n  5: calc($spacer * 5),\n  6: calc($spacer * 6),\n  7: calc($spacer * 7),\n  8: calc($spacer * 8),\n  9: calc($spacer * 9),\n  10: calc($spacer * 10),\n  11: calc($spacer * 11),\n  12: calc($spacer * 12),\n) !default;\n\n// Breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start breakpoints\n$breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 1024px,\n  xl: 1280px,\n  2xl: 1536px\n) !default;\n// scss-docs-end breakpoints\n\n// @include _assert-ascending($breakpoints, \"$breakpoints\");\n// @include _assert-starts-at-zero($breakpoints, \"$breakpoints\");\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-x: 1.5rem !default;\n$grid-gutter-y: 0 !default;\n$grid-row-columns: 6 !default;\n\n$gutters: $spacers !default;\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1200px,\n  2xl: 1440px\n) !default;\n// scss-docs-end container-max-widths\n\n$container-padding-x: $grid-gutter-x !default;\n\n$utilities: () !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent)) !default;\n// scss-docs-end variable-gradient\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Links\n//\n// Style anchor elements.\n\n$link-decoration:                         underline !default;\n$link-underline-offset:                   .2em !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap:               .375rem !default;\n$icon-link-underline-offset:  .25em !default;\n$icon-link-icon-size:         1em !default;\n$icon-link-icon-transition:   .2s ease-in-out transform !default;\n$icon-link-icon-transform:    translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n$border-style:                solid !default;\n$border-color:                color-mix(in oklch, var(--gray-100), var(--gray-200)) !default;\n// scss-docs-end border-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"auto\": auto,\n  \"1x1\": #{\"1 / 1\"},\n  \"4x3\": #{\"4 / 3\"},\n  \"16x9\": #{\"16 / 9\"},\n  \"21x9\": #{\"21 / 9\"}\n) !default;\n// scss-docs-end aspect-ratios\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-medium:          500 !default;\n$font-weight-semibold:        600 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$font-sizes: defaults(\n  (\n    \"xs\": (\n      \"font-size\": .75rem,\n      \"line-height\": 1.25\n    ),\n    \"sm\": (\n      \"font-size\": .875rem,\n      \"line-height\": 1.5\n    ),\n    \"md\": (\n      \"font-size\": 1rem,\n      \"line-height\": 1.5\n    ),\n    \"lg\": (\n      \"font-size\": clamp(1.25rem, 1rem + .625vw, 1.5rem),\n      \"line-height\": 1.5\n    ),\n    \"xl\": (\n      \"font-size\": clamp(1.5rem, 1.1rem + .75vw, 1.75rem),\n      \"line-height\": calc(2.5 / 1.75)\n    ),\n    \"2xl\": (\n      \"font-size\": clamp(1.75rem, 1.3rem + 1vw, 2rem),\n      \"line-height\": calc(3 / 2.25)\n    ),\n    \"3xl\": (\n      \"font-size\": clamp(2rem, 1.5rem + 1.875vw, 2.5rem),\n      \"line-height\": 1.2\n    ),\n    \"4xl\": (\n      \"font-size\": clamp(2.25rem, 1.75rem + 2.5vw, 3rem),\n      \"line-height\": 1.1\n    ),\n    \"5xl\": (\n      \"font-size\": clamp(3rem, 2rem + 5vw, 4rem),\n      \"line-height\": 1.1\n    ),\n    \"6xl\": (\n      \"font-size\": clamp(3.75rem, 2.5rem + 6.25vw, 5rem),\n      \"line-height\": 1\n    ),\n  ),\n  $font-sizes\n);\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start type-variables\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n// scss-docs-end type-variables\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-menu:                       1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-dialog:                     1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n$zindex-toast:                      1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n  n1: -1,\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n","@use \"sass:list\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n@mixin transition($transition...) {\n  @if list.length($transition) == 0 {\n    $transition: $transition-base;\n  }\n\n  @if list.length($transition) > 1 {\n    @each $value in $transition {\n      @if $value == null or $value == none {\n        @warn \"The keyword 'none' or 'null' must be used as a single argument.\";\n      }\n    }\n  }\n\n  @if $enable-transitions {\n    @if list.nth($transition, 1) != null {\n      transition: $transition;\n    }\n\n    @if $enable-reduced-motion and list.nth($transition, 1) != null and list.nth($transition, 1) != none {\n      @media (prefers-reduced-motion: reduce) {\n        transition: none;\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: $zindex-fixed;\n  }\n\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: $zindex-fixed;\n  }\n\n  // Responsive sticky top and bottom\n  @each $breakpoint in map.keys($breakpoints) {\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      .sticky#{$infix}-top {\n        position: sticky;\n        top: 0;\n        z-index: $zindex-sticky;\n      }\n\n      .sticky#{$infix}-bottom {\n        position: sticky;\n        bottom: 0;\n        z-index: $zindex-sticky;\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"../config\" as *;\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px)\n//\n// The map defined in the `$breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl 2xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $breakpoints, $breakpoint-names: map.keys($breakpoints)) {\n  $n: list.index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoint-names}`\";\n  }\n  // Use @if/@else because list.nth would error if evaluated when $n equals list length\n  @if $n < list.length($breakpoint-names) {\n    @return list.nth($breakpoint-names, $n + 1);\n  } @else {\n    @return null;\n  }\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $breakpoints) {\n  $min: map.get($breakpoints, $name);\n  @return if(sass($min != 0): $min; else: null);\n}\n\n// Maximum breakpoint width for range media queries.\n// Returns the breakpoint value to use as an upper bound in range queries.\n//\n//    >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n//    >> breakpoint-max(xxl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    null\n@function breakpoint-max($name, $breakpoints: $breakpoints) {\n  @if $name == null {\n    @return null;\n  }\n  $max: map.get($breakpoints, $name);\n  @return if(sass($max and $max > 0): $max; else: null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $breakpoints) {\n  @return if(sass(breakpoint-min($name, $breakpoints) == null): \"\"; else: \"-#{$name}\");\n}\n\n// Iterate all breakpoints and provide the current name and infix.\n//\n//    @include loop-breakpoints-up() using ($breakpoint, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-up($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n    @content($breakpoint, $infix);\n  }\n}\n\n// Iterate all breakpoints and provide the current name, next name, and next infix.\n//\n//    @include loop-breakpoints-down() using ($breakpoint, $next, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-down($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $next: breakpoint-next($breakpoint, $breakpoints);\n    $infix: breakpoint-infix($next, $breakpoints);\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Backwards-compatible alias for next/down breakpoint loops.\n@mixin loop-breakpoints($breakpoints: $breakpoints) {\n  @include loop-breakpoints-down($breakpoints) using ($breakpoint, $next, $infix) {\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (width >= $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (width < $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n\n// Container queries\n//\n// Container queries allow elements to respond to the size of a containing element\n// rather than the viewport. These mixins mirror the media-breakpoint-* mixins above.\n//\n// scss-docs-start container-query-mixins\n\n// Set an element as a query container.\n//\n//    @include set-container();                    // container-type: inline-size\n//    @include set-container(size);                // container-type: size\n//    @include set-container(inline-size, sidebar); // container: sidebar / inline-size\n//\n@mixin set-container($type: inline-size, $name: null) {\n  @if $name {\n    container: #{$name} / #{$type};\n  } @else {\n    container-type: #{$type};\n  }\n}\n\n// Container query of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider within the container.\n//\n//    @include container-breakpoint-up(md) { ... }\n//    @include container-breakpoint-up(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-up($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower within the container.\n//\n//    @include container-breakpoint-down(lg) { ... }\n//    @include container-breakpoint-down(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-down($name, $container-name: null, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @if $container-name {\n      @container #{$container-name} (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints within the container.\n//\n//    @include container-breakpoint-between(md, xl) { ... }\n//    @include container-breakpoint-between(md, xl, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-between($lower, $upper, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($lower, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($upper, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Container query between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint within the container.\n//\n//    @include container-breakpoint-only(md) { ... }\n//    @include container-breakpoint-only(md, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-only($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($name, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($next, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n// scss-docs-end container-query-mixins\n","@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  // scss-docs-start stacks\n  .stack-container {\n    @include set-container();\n  }\n\n  [class*=\"hstack\"],\n  [class*=\"vstack\"] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n\n  @include loop-breakpoints-up() using ($breakpoint, $infix) {\n    .vstack#{$infix} {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: column;\n        --stack-align-items: stretch;\n      }\n    }\n    .hstack#{$infix} {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: row;\n        --stack-align-items: flex-start;\n      }\n    }\n  }\n  // scss-docs-end stacks\n}\n","@use \"../theme\" as *;\n\n// Generate theme modifier classes (e.g., .theme-primary, .theme-accent, etc.)\n@layer helpers {\n  @include generate-theme-classes();\n}\n","@use \"sass:meta\";\n@use \"sass:map\";\n\n@function theme-color-values($key) {\n  $result: ();\n\n  @each $color-name, $color-map in $theme-colors {\n    @if map.has-key($color-map, $key) {\n      $result: map.merge($result, ($color-name: map.get($color-map, $key)));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate opacity values using color-mix()\n@function theme-opacity-values($color-var, $opacities: $util-opacity) {\n  $result: ();\n\n  @each $key, $value in $opacities {\n    @if $key == 100 {\n      // For 100%, use direct variable reference (more efficient)\n      $result: map.merge($result, ($key: var($color-var)));\n    } @else {\n      // For other values, use color-mix()\n      $percentage: $key * 1%;\n      $result: map.merge($result, ($key: color-mix(in oklch, var($color-var) $percentage, transparent)));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate theme classes dynamically based on the keys in each theme color map\n@mixin generate-theme-classes() {\n  @each $color-name, $color-map in $theme-colors {\n    .theme-#{$color-name} {\n      @each $key, $value in $color-map {\n        --theme-#{$key}: var(--#{$color-name}-#{$key});\n      }\n    }\n  }\n}\n\n// Recursive mixin to handle nested maps\n@mixin create-css-vars($map, $parent-key: \"\") {\n  @each $key, $value in $map {\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    $current-key: if(sass($parent-key == \"\"): $key; else: \"#{$parent-key}-#{$key}\");\n\n    @if meta.type-of($value) == \"map\" {\n      @include create-css-vars($value, $current-key);\n    } @else {\n      --#{$current-key}: #{$value};\n    }\n  }\n}\n\n// scss-docs-start theme-colors\n$theme-colors: (\n  \"primary\": (\n    \"base\": var(--blue-500),\n    \"text\": light-dark(var(--blue-600), var(--blue-400)),\n    \"text-emphasis\": light-dark(var(--blue-800), var(--blue-200)),\n    \"bg\": var(--blue-500),\n    \"bg-subtle\": light-dark(var(--blue-100), var(--blue-900)),\n    \"bg-muted\": light-dark(var(--blue-200), var(--blue-800)),\n    \"border\": light-dark(var(--blue-300), var(--blue-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"accent\": (\n    \"base\": var(--indigo-500),\n    \"text\": light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300))),\n    \"text-emphasis\": light-dark(var(--indigo-800), var(--indigo-300)),\n    \"bg\": var(--indigo-500),\n    \"bg-subtle\": light-dark(var(--indigo-100), var(--indigo-900)),\n    \"bg-muted\": light-dark(var(--indigo-200), var(--indigo-800)),\n    \"border\": light-dark(var(--indigo-300), var(--indigo-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"success\": (\n    \"base\": var(--green-500),\n    \"text\": light-dark(var(--green-600), var(--green-400)),\n    \"text-emphasis\": light-dark(var(--green-800), var(--green-300)),\n    \"bg\": var(--green-500),\n    \"bg-subtle\": light-dark(var(--green-100), var(--green-900)),\n    \"bg-muted\": light-dark(var(--green-200), var(--green-800)),\n    \"border\": light-dark(var(--green-300), var(--green-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"danger\": (\n    \"base\": var(--red-500),\n    \"text\": light-dark(var(--red-600), var(--red-400)),\n    \"text-emphasis\": light-dark(var(--red-800), var(--red-300)),\n    \"bg\": var(--red-500),\n    \"bg-subtle\": light-dark(var(--red-100), var(--red-900)),\n    \"bg-muted\": light-dark(var(--red-200), var(--red-800)),\n    \"border\": light-dark(var(--red-300), var(--red-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"warning\": (\n    \"base\": var(--yellow-500),\n    \"text\": light-dark(var(--yellow-700), var(--yellow-400)),\n    \"text-emphasis\": light-dark(var(--yellow-800), var(--yellow-300)),\n    \"bg\": var(--yellow-500),\n    \"bg-subtle\": light-dark(var(--yellow-100), var(--yellow-900)),\n    \"bg-muted\": light-dark(var(--yellow-200), var(--yellow-800)),\n    \"border\": light-dark(var(--yellow-300), var(--yellow-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"info\": (\n    \"base\": var(--cyan-500),\n    \"text\": light-dark(var(--cyan-600), var(--cyan-400)),\n    \"text-emphasis\": light-dark(var(--cyan-800), var(--cyan-300)),\n    \"bg\": var(--cyan-500),\n    \"bg-subtle\": light-dark(var(--cyan-100), var(--cyan-900)),\n    \"bg-muted\": light-dark(var(--cyan-200), var(--cyan-800)),\n    \"border\": light-dark(var(--cyan-300), var(--cyan-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"inverse\": (\n    \"base\": var(--gray-900),\n    \"text\": light-dark(var(--gray-900), var(--gray-200)),\n    \"text-emphasis\": light-dark(var(--gray-975), var(--white)),\n    \"bg\": light-dark(var(--gray-900), var(--gray-025)),\n    \"bg-subtle\": light-dark(var(--gray-100), var(--gray-900)),\n    \"bg-muted\": light-dark(var(--gray-200), var(--gray-300)),\n    \"border\": light-dark(var(--gray-400), var(--gray-100)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--white), var(--gray-900))\n  ),\n  \"secondary\": (\n    \"base\": var(--gray-200),\n    \"text\": light-dark(var(--gray-600), var(--gray-400)),\n    \"text-emphasis\": light-dark(var(--gray-800), var(--gray-200)),\n    \"bg\": light-dark(var(--gray-100), var(--gray-600)),\n    \"bg-subtle\": light-dark(var(--gray-050), var(--gray-800)),\n    \"bg-muted\": light-dark(var(--gray-100), var(--gray-700)),\n    \"border\": light-dark(var(--gray-300), var(--gray-600)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--gray-900), var(--white))\n  )\n) !default;\n// scss-docs-end theme-colors\n\n// mdo-do: consider using muted, subtle, ghost or something instead of linear scale?\n$theme-bgs: (\n  \"body\": light-dark(var(--white), var(--gray-975)),\n  \"1\": light-dark(var(--gray-025), var(--gray-950)),\n  \"2\": light-dark(var(--gray-050), var(--gray-900)),\n  \"3\": light-dark(var(--gray-100), var(--gray-800)),\n  \"4\": light-dark(var(--gray-200), var(--gray-700)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"transparent\": transparent,\n  \"inherit\": inherit,\n) !default;\n\n$theme-fgs: (\n  \"body\": light-dark(var(--gray-900), var(--gray-050)),\n  \"1\": light-dark(var(--gray-800), var(--gray-200)),\n  \"2\": light-dark(var(--gray-700), var(--gray-300)),\n  \"3\": light-dark(var(--gray-600), var(--gray-500)),\n  \"4\": light-dark(var(--gray-500), var(--gray-600)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"inherit\": inherit,\n) !default;\n\n$theme-borders: (\n  \"bg\": var(--bg-body),\n  \"body\": light-dark(var(--gray-300), var(--gray-800)),\n  \"muted\": light-dark(var(--gray-200), var(--gray-800)),\n  \"subtle\": light-dark(var(--gray-100), var(--gray-900)),\n  \"emphasized\": light-dark(var(--gray-400), var(--gray-600)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n) !default;\n\n$util-opacity: (\n  10: .1,\n  20: .2,\n  30: .3,\n  40: .4,\n  50: .5,\n  60: .6,\n  70: .7,\n  80: .8,\n  90: .9,\n  100: 1\n) !default;\n","@use \"../mixins/visually-hidden\" as *;\n\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","// stylelint-disable declaration-no-important\n\n// Hide content visually while keeping it accessible to assistive technologies\n//\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin visually-hidden() {\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n\n  // Fix for positioned table caption that could become anonymous cells\n  &:not(caption) {\n    position: absolute !important;\n  }\n\n  // Fix to prevent overflowing children to become focusable\n  * {\n    overflow: hidden !important;\n  }\n}\n\n// Use to only display content when it's focused, or one of its child elements is focused\n// (i.e. when focus is within the element/container that the class was applied to)\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/WAI/WCAG22/Techniques/general/G1.html\n\n@mixin visually-hidden-focusable() {\n  &:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","@use \"../config\" as *;\n\n@layer helpers {\n  .stretched-link {\n    &::#{$stretched-link-pseudo-element} {\n      position: absolute;\n      inset: 0;\n      z-index: $stretched-link-z-index;\n      content: \"\";\n    }\n  }\n}\n","@use \"../mixins/text-truncate\" as *;\n\n@layer helpers {\n  .text-truncate {\n    @include text-truncate();\n  }\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n","@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n@use \"../mixins/utilities\" as *;\n@use \"../utilities\" as *;\n\n@layer utilities {\n  // Loop over each breakpoint\n  @each $breakpoint in map.keys($breakpoints) {\n\n    // Generate media query if needed\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if meta.type-of($utility) == \"map\" and (map.get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix);\n        }\n      }\n    }\n  }\n\n  // Print utilities\n  @media print {\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Then check if the utility needs print styles\n      @if meta.type-of($utility) == \"map\" and map.get($utility, print) == true {\n        @include generate-utility($utility, \"-print\");\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n\n// stylelint-disable scss/dollar-variable-pattern\n\n// Utility generator\n\n// - Utilities can use three different types of selectors:\n//   - class: .class\n//   - attr-starts: [class^=\"class\"]\n//   - attr-includes: [class*=\"class\"]\n// - Utilities can generate regular CSS properties and CSS custom properties\n// - Utilities can be responsive or not\n// - Utilities can have state variants (e.g., hover, focus, active)\n// - Utilities can define local CSS variables\n//\n// CSS custom properties can be generated in two ways:\n//\n// 1. Property map with null values (CSS var receives the utility value):\n// \"bg-color\": (\n//   property: (\n//     \"--bg\": null,\n//     \"background-color\": var(--bg)\n//   ),\n//   class: bg,\n//   values: (\n//     primary: var(--blue-500),\n//   )\n// )\n// Generates:\n// .bg-primary {\n//   --bs-bg: var(--bs-blue-500);\n//   background-color: var(--bs-bg);\n// }\n//\n// 2. Variables map (static CSS custom properties on every class):\n// \"link-underline\": (\n//   property: text-decoration-color,\n//   class: link-underline,\n//   variables: (\n//     \"link-underline-opacity\": 1\n//   ),\n//   values: (...)\n// )\n// Generates:\n// .link-underline {\n//   --bs-link-underline-opacity: 1;\n//   text-decoration-color: ...;\n// }\n\n// Helper mixin to generate CSS properties for both legacy and property map approaches\n@mixin generate-properties($utility, $propertyMap, $properties, $value) {\n  @if $propertyMap != null {\n    // New Property-Value Mapping approach\n    @each $property, $defaultValue in $propertyMap {\n      // If value is a map, check if it has a key for this property\n      // Otherwise, use defaultValue (or $value if defaultValue is null)\n      $actualValue: $defaultValue;\n      @if meta.type-of($value) == \"map\" and map.has-key($value, $property) {\n        $actualValue: map.get($value, $property);\n      } @else if $defaultValue == null {\n        $actualValue: $value;\n      }\n      @if map.get($utility, important) {\n        #{$property}: $actualValue !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $actualValue;\n      }\n    }\n  } @else {\n    // Legacy approach\n    @each $property in $properties {\n      @if map.get($utility, important) {\n        #{$property}: $value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $value;\n      }\n    }\n  }\n}\n\n@mixin generate-utility($utility, $infix: \"\") {\n  // Validate required keys\n  @if not map.has-key($utility, property) {\n    @error \"Utility is missing required `property` key: #{$utility}\";\n  }\n  @if not map.has-key($utility, values) {\n    @error \"Utility is missing required `values` key: #{$utility}\";\n  }\n\n  // Warn on unknown keys (likely typos)\n  $valid-keys: property, values, class, selector, responsive, print, important, state, variables;\n  @each $key in map.keys($utility) {\n    @if not list.index($valid-keys, $key) {\n      @warn \"Unknown utility key `#{$key}` found. Valid keys are: #{$valid-keys}\";\n    }\n  }\n\n  // Determine if we're generating a class, or an attribute selector\n  $selectorType: \"class\";\n  @if map.has-key($utility, selector) {\n    $selectorType: map.get($utility, selector);\n    // Validate selector type\n    $valid-selectors: \"class\", \"attr-starts\", \"attr-includes\";\n    @if not list.index($valid-selectors, $selectorType) {\n      @error \"Invalid `selector` value `#{$selectorType}`. Must be one of: #{$valid-selectors}\";\n    }\n  }\n  // Then get the class name to use in a class (e.g., .class) or in a attribute selector (e.g., [class^=\"class\"])\n  $selectorClass: map.get($utility, class);\n\n  // Attribute selectors require a `class` key\n  @if $selectorType != \"class\" and not map.has-key($utility, class) {\n    @error \"Utility with `selector: #{$selectorType}` requires a `class` key.\";\n  }\n\n  // Get the list or map of values and ensure it's a map\n  $values: map.get($utility, values);\n  @if meta.type-of($values) != \"map\" {\n    @if meta.type-of($values) == \"list\" {\n      $list: ();\n      @each $value in $values {\n        $list: map.merge($list, ($value: $value));\n      }\n      $values: $list;\n    } @else {\n      $values: (null: $values);\n    }\n  }\n\n  // Calculate infix once, before the loop\n  // Note: $infix already includes the leading dash from breakpoint-infix()\n  // $infix: if($infix == \"\", \"\", \"-\" + $infix);\n\n  @each $key, $value in $values {\n    $properties: map.get($utility, property);\n    $propertyMap: null;\n    $customClass: \"\";\n\n    // Check if property is a map (new Property-Value Mapping approach)\n    // @debug \"Properties type: #{meta.type-of($properties)}\";\n    // @debug \"Properties: #{$properties}\";\n    @if meta.type-of($properties) == \"map\" {\n      $propertyMap: $properties;\n      // For property maps, we need to determine the class from the utility definition\n      $customClass: \"\";\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      }\n    } @else {\n      // Legacy approach: Multiple properties are possible, for example with vertical or horizontal margins or paddings\n      @if meta.type-of($properties) == \"string\" {\n        $properties: list.append((), $properties);\n      }\n      // Use custom class if present, otherwise use the first value from the list of properties\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      } @else {\n        $customClass: list.nth($properties, 1);\n      }\n      @if $customClass == null {\n        $customClass: \"\";\n      }\n    }\n\n    // Use custom CSS variable name if present, otherwise default to `class`\n    // mdo-do: restore?\n    // $css-variable-name: if(map.has-key($utility, css-variable-name), map.get($utility, css-variable-name), map.get($utility, class));\n\n    // State params to generate state variants\n    $state: ();\n    @if map.has-key($utility, state) {\n      $state: map.get($utility, state);\n    }\n\n    // $infix: if($customClass == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (e.g. with shadow class)\n    $customClassModifier: \"\";\n    @if $key {\n      @if $customClass == \"\" and $infix == \"\" {\n        $customClassModifier: $key;\n      } @else {\n        $customClassModifier: \"-\" + $key;\n      }\n    }\n\n    $selector: \"\";\n    @if $selectorType == \"class\" {\n      // Use the fallback of the first property if no `class` key is used\n      @if $customClass != \"\" {\n        $selector: \".#{$customClass + $infix + $customClassModifier}\";\n      } @else {\n        $selector: \".#{$selectorClass + $infix + $customClassModifier}\";\n      }\n    } @else if $selectorType == \"attr-starts\" {\n      $selector: \"[class^=\\\"#{$selectorClass}\\\"]\";\n    } @else if $selectorType == \"attr-includes\" {\n      $selector: \"[class*=\\\"#{$selectorClass}\\\"]\";\n    }\n\n    // @debug $utility;\n    // @debug $selectorType;\n    // @debug $selector;\n    // @debug $properties;\n    // @debug $values;\n\n    #{$selector} {\n      // Generate CSS custom properties (variables) if provided\n      // Variables receive the current utility value, then properties reference them\n      @if map.has-key($utility, variables) {\n        $variables: map.get($utility, variables);\n        @if meta.type-of($variables) == \"list\" {\n          // If variables is a list, each variable gets the utility value\n          @each $var-name in $variables {\n            --#{$var-name}: #{$value};\n          }\n        } @else if meta.type-of($variables) == \"map\" {\n          // If variables is a map, use the provided values (for static variables)\n          @each $var-key, $var-value in $variables {\n            --#{$var-key}: #{$var-value};\n          }\n        }\n      }\n      @include generate-properties($utility, $propertyMap, $properties, $value);\n    }\n\n    // Generate state variants\n    @if $state != () {\n      @each $state-variant in $state {\n        #{$selector}-#{$state-variant}:#{$state-variant} {\n          // Generate CSS custom properties (variables) if provided\n          @if map.has-key($utility, variables) {\n            $variables: map.get($utility, variables);\n            @if meta.type-of($variables) == \"list\" {\n              // If variables is a list, each variable gets the utility value\n              @each $var-name in $variables {\n                --#{$var-name}: #{$value};\n              }\n            } @else if meta.type-of($variables) == \"map\" {\n              // If variables is a map, use the provided values (for static variables)\n              @each $var-key, $var-value in $variables {\n                --#{$var-key}: #{$var-value};\n              }\n            }\n          }\n          @include generate-properties($utility, $propertyMap, $properties, $value);\n        }\n      }\n    }\n  }\n}\n"],"names":[]}
\ No newline at end of file
index 1a6322876929a06644aac6eda46f4292993baf26..9a63554219f9d2878b4c726fd13fc88f80c1f6a0 100644 (file)
   --bs-black: #000;
   --bs-white: #fff;
   --bs-gradient: linear-gradient(180deg, color-mix(var(--bs-white) 15%, transparent), color-mix(var(--bs-white) 0%, transparent));
-  --bs-font-size-base: 1rem;
-  --bs-font-size-xs: 0.75rem;
-  --bs-font-size-sm: 0.875rem;
-  --bs-font-size-md: 1rem;
-  --bs-font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);
-  --bs-font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);
-  --bs-font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);
-  --bs-font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);
-  --bs-font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);
-  --bs-font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);
-  --bs-font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);
-  --bs-line-height-xs: 1.25;
-  --bs-line-height-sm: 1.5;
-  --bs-line-height-md: 1.5;
-  --bs-line-height-lg: 1.5;
-  --bs-line-height-xl: 1.4285714286;
-  --bs-line-height-2xl: 1.3333333333;
-  --bs-line-height-3xl: 1.2;
-  --bs-line-height-4xl: 1.1;
-  --bs-line-height-5xl: 1.1;
-  --bs-line-height-6xl: 1;
   --bs-font-weight-lighter: lighter;
   --bs-font-weight-light: 300;
   --bs-font-weight-normal: 400;
   --bs-form-valid-border-color: var(--bs-success-text);
   --bs-form-invalid-color: var(--bs-danger-text);
   --bs-form-invalid-border-color: var(--bs-danger-text);
+  --bs-font-size-xs: 0.75rem;
+  --bs-line-height-xs: 1.25;
+  --bs-font-size-sm: 0.875rem;
+  --bs-line-height-sm: 1.5;
+  --bs-font-size-md: 1rem;
+  --bs-line-height-md: 1.5;
+  --bs-font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);
+  --bs-line-height-lg: 1.5;
+  --bs-font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);
+  --bs-line-height-xl: 1.4285714286;
+  --bs-font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);
+  --bs-line-height-2xl: 1.3333333333;
+  --bs-font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);
+  --bs-line-height-3xl: 1.2;
+  --bs-font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);
+  --bs-line-height-4xl: 1.1;
+  --bs-font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);
+  --bs-line-height-5xl: 1.1;
+  --bs-font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);
+  --bs-line-height-6xl: 1;
   --bs-primary-base: var(--bs-blue-500);
   --bs-primary-text: light-dark(var(--bs-blue-600), var(--bs-blue-400));
   --bs-primary-text-emphasis: light-dark(var(--bs-blue-800), var(--bs-blue-200));
   .offset-11 {
     margin-inline-start: 91.6666666667%;
   }
-  .g--2,
-  .gx--2 {
-    --bs-gutter-x: -0.5rem;
-  }
-  .g--2,
-  .gy--2 {
-    --bs-gutter-y: -0.5rem;
-  }
-  .g--1,
-  .gx--1 {
-    --bs-gutter-x: -0.25rem;
-  }
-  .g--1,
-  .gy--1 {
-    --bs-gutter-y: -0.25rem;
-  }
   .g-0,
   .gx-0 {
     --bs-gutter-x: 0;
     .offset-sm-11 {
       margin-inline-start: 91.6666666667%;
     }
-    .g-sm--2,
-    .gx-sm--2 {
-      --bs-gutter-x: -0.5rem;
-    }
-    .g-sm--2,
-    .gy-sm--2 {
-      --bs-gutter-y: -0.5rem;
-    }
-    .g-sm--1,
-    .gx-sm--1 {
-      --bs-gutter-x: -0.25rem;
-    }
-    .g-sm--1,
-    .gy-sm--1 {
-      --bs-gutter-y: -0.25rem;
-    }
     .g-sm-0,
     .gx-sm-0 {
       --bs-gutter-x: 0;
     .offset-md-11 {
       margin-inline-start: 91.6666666667%;
     }
-    .g-md--2,
-    .gx-md--2 {
-      --bs-gutter-x: -0.5rem;
-    }
-    .g-md--2,
-    .gy-md--2 {
-      --bs-gutter-y: -0.5rem;
-    }
-    .g-md--1,
-    .gx-md--1 {
-      --bs-gutter-x: -0.25rem;
-    }
-    .g-md--1,
-    .gy-md--1 {
-      --bs-gutter-y: -0.25rem;
-    }
     .g-md-0,
     .gx-md-0 {
       --bs-gutter-x: 0;
     .offset-lg-11 {
       margin-inline-start: 91.6666666667%;
     }
-    .g-lg--2,
-    .gx-lg--2 {
-      --bs-gutter-x: -0.5rem;
-    }
-    .g-lg--2,
-    .gy-lg--2 {
-      --bs-gutter-y: -0.5rem;
-    }
-    .g-lg--1,
-    .gx-lg--1 {
-      --bs-gutter-x: -0.25rem;
-    }
-    .g-lg--1,
-    .gy-lg--1 {
-      --bs-gutter-y: -0.25rem;
-    }
     .g-lg-0,
     .gx-lg-0 {
       --bs-gutter-x: 0;
     .offset-xl-11 {
       margin-inline-start: 91.6666666667%;
     }
-    .g-xl--2,
-    .gx-xl--2 {
-      --bs-gutter-x: -0.5rem;
-    }
-    .g-xl--2,
-    .gy-xl--2 {
-      --bs-gutter-y: -0.5rem;
-    }
-    .g-xl--1,
-    .gx-xl--1 {
-      --bs-gutter-x: -0.25rem;
-    }
-    .g-xl--1,
-    .gy-xl--1 {
-      --bs-gutter-y: -0.25rem;
-    }
     .g-xl-0,
     .gx-xl-0 {
       --bs-gutter-x: 0;
     .offset-2xl-11 {
       margin-inline-start: 91.6666666667%;
     }
-    .g-2xl--2,
-    .gx-2xl--2 {
-      --bs-gutter-x: -0.5rem;
-    }
-    .g-2xl--2,
-    .gy-2xl--2 {
-      --bs-gutter-y: -0.5rem;
-    }
-    .g-2xl--1,
-    .gx-2xl--1 {
-      --bs-gutter-x: -0.25rem;
-    }
-    .g-2xl--1,
-    .gy-2xl--1 {
-      --bs-gutter-y: -0.25rem;
-    }
     .g-2xl-0,
     .gx-2xl-0 {
       --bs-gutter-x: 0;
     font-size: var(--bs-btn-input-lg-font-size);
     border-radius: var(--bs-btn-input-lg-border-radius);
   }
-  .input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),
-  .input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3),
+  .input-group:not(.has-validation) > :not(:last-child):not(.menu-toggle-split):not(.menu):not(.form-floating),
+  .input-group:not(.has-validation) > .menu-toggle-split:nth-last-child(n+3),
   .input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control,
   .input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select {
     border-start-end-radius: 0;
     border-end-end-radius: 0;
   }
-  .input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),
-  .input-group.has-validation > .dropdown-toggle:nth-last-child(n+4),
+  .input-group.has-validation > :nth-last-child(n+3):not(.menu-toggle-split):not(.menu):not(.form-floating),
+  .input-group.has-validation > .menu-toggle-split:nth-last-child(n+4),
   .input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control,
   .input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select {
     border-start-end-radius: 0;
     border-end-end-radius: 0;
   }
-  .input-group > :not(:first-child):not(.dropdown-menu) {
+  .input-group > :not(:first-child):not(.menu) {
     margin-inline-start: calc(-1 * var(--bs-border-width));
     border-start-start-radius: 0;
     border-end-start-radius: 0;
     cursor: not-allowed;
   }
 }
+@layer components {
+  .combobox-toggle {
+    display: inline-flex;
+    gap: 0.5rem;
+    align-items: center;
+    justify-content: space-between;
+    width: 100%;
+    padding-inline-end: var(--bs-control-padding-x);
+    text-align: start;
+    cursor: pointer;
+  }
+  .combobox-toggle.show {
+    background-color: var(--bs-bg-1);
+  }
+  .combobox-toggle:disabled, .combobox-toggle.disabled {
+    cursor: not-allowed;
+    opacity: 0.65;
+  }
+  .combobox-value {
+    display: flex;
+    flex: 1;
+    gap: 0.5rem;
+    align-items: center;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  .combobox-placeholder {
+    color: color-mix(in oklch, currentcolor 65%, transparent);
+  }
+  .combobox-caret {
+    flex-shrink: 0;
+    transition: transform 0.2s ease-in-out;
+  }
+  @media (prefers-reduced-motion: reduce) {
+    .combobox-caret {
+      transition: none;
+    }
+  }
+  .show > .combobox-caret {
+    transform: rotate(180deg);
+  }
+  .combobox-toggle + .menu {
+    --bs-menu-max-height: 300px;
+    --bs-menu-overflow-y: auto;
+  }
+  .combobox-search {
+    position: sticky;
+    top: 0;
+    z-index: 1;
+    padding: var(--bs-menu-padding-x, 0.25rem);
+    background-color: var(--bs-menu-bg, var(--bs-bg-body));
+  }
+  .combobox-search-input {
+    width: 100%;
+  }
+  .combobox-no-results {
+    padding: 1rem;
+    font-size: var(--bs-font-size-sm);
+    color: var(--bs-fg-3);
+    text-align: center;
+  }
+}
 @layer components {
   .tooltip {
     --bs-tooltip-zindex: 1080;
   .btn-group > .btn-group:not(:first-child) {
     margin-inline-start: calc(-1 * var(--bs-btn-border-width));
   }
-  .btn-group > [class*=btn-]:not(:last-child):not(.dropdown-toggle),
+  .btn-group > [class*=btn-]:not(:last-child):not(:has(+ .menu)),
   .btn-group > .btn-group:not(:last-child) > [class*=btn-] {
     border-start-end-radius: 0;
     border-end-end-radius: 0;
     border-start-start-radius: 0;
     border-end-start-radius: 0;
   }
-  .dropdown-toggle-split {
-    padding-inline: calc(var(--bs-btn-padding-x) * 0.75);
-  }
-  .dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {
-    margin-inline-start: 0;
-  }
-  .dropstart .dropdown-toggle-split::before {
-    margin-inline-end: 0;
-  }
   .btn-group-vertical {
     flex-direction: column;
     align-items: flex-start;
   .btn-group-vertical > .btn-group:not(:first-child) {
     margin-top: calc(-1 * var(--bs-btn-border-width));
   }
-  .btn-group-vertical > [class*=btn-]:not(:last-child):not(.dropdown-toggle),
+  .btn-group-vertical > [class*=btn-]:not(:last-child):not(:has(+ .menu)),
   .btn-group-vertical > .btn-group:not(:last-child) > [class*=btn-] {
     border-end-start-radius: 0;
     border-end-end-radius: 0;
   .card-footer:last-child {
     border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius);
   }
+  .card-translucent {
+    background-color: color-mix(in oklch, var(--bs-card-bg) 80%, transparent);
+    -webkit-backdrop-filter: blur(5px) saturate(180%);
+    backdrop-filter: blur(5px) saturate(180%);
+  }
+  .card-translucent .card-header,
+  .card-translucent .card-footer {
+    background-color: color-mix(in oklch, var(--bs-card-cap-bg) 60%, transparent);
+  }
   .card-subtle {
     border-color: var(--bs-theme-border, var(--bs-card-border-color));
   }
     --bs-carousel-caption-color: #000;
     --bs-carousel-control-icon-filter: invert(1) grayscale(100);
   }
-  [data-bs-theme=dark] {
-    --bs-carousel-indicator-active-bg: #000;
-    --bs-carousel-caption-color: #000;
-    --bs-carousel-control-icon-filter: invert(1) grayscale(100);
+  @media (prefers-color-scheme: dark) {
+    :root {
+      --bs-carousel-indicator-active-bg: #000;
+      --bs-carousel-caption-color: #000;
+      --bs-carousel-control-icon-filter: invert(1) grayscale(100);
+    }
   }
 }
 @layer components {
   }
 }
 @layer components {
-  .dropdown {
-    position: relative;
-  }
-  .dropdown-menu {
-    --bs-dropdown-zindex: 1000;
-    --bs-dropdown-gap: 0.125rem;
-    --bs-dropdown-min-width: 10rem;
-    --bs-dropdown-padding-x: 0.25rem;
-    --bs-dropdown-padding-y: 0.25rem;
-    --bs-dropdown-spacer: 0.125rem;
-    --bs-dropdown-font-size: var(--bs-font-size-sm);
-    --bs-dropdown-color: var(--bs-fg-body);
-    --bs-dropdown-bg: var(--bs-bg-body);
-    --bs-dropdown-border-color: var(--bs-border-color-translucent);
-    --bs-dropdown-border-radius: var(--bs-border-radius-lg);
-    --bs-dropdown-border-width: var(--bs-border-width);
-    --bs-dropdown-inner-border-radius: calc(var(--bs-dropdown-border-radius) - var(--bs-dropdown-border-width));
-    --bs-dropdown-box-shadow: var(--bs-box-shadow);
-    --bs-dropdown-divider-bg: var(--bs-border-color-translucent);
-    --bs-dropdown-divider-margin-y: 0.125rem;
-    --bs-dropdown-divider-margin-x: 0.25rem;
-    --bs-dropdown-link-color: var(--bs-fg-body);
-    --bs-dropdown-link-hover-color: var(--bs-fg-body);
-    --bs-dropdown-link-hover-bg: var(--bs-bg-1);
-    --bs-dropdown-link-active-color: var(--bs-primary-contrast);
-    --bs-dropdown-link-active-bg: var(--bs-primary-bg);
-    --bs-dropdown-link-disabled-color: var(--bs-fg-3);
-    --bs-dropdown-item-gap: 0.5rem;
-    --bs-dropdown-item-padding-x: 0.75rem;
-    --bs-dropdown-item-padding-y: 0.25rem;
-    --bs-dropdown-item-border-radius: var(--bs-border-radius);
-    --bs-dropdown-header-color: var(--bs-fg-2);
-    --bs-dropdown-header-padding-x: 0.75rem;
-    --bs-dropdown-header-padding-y: 0.25rem;
+  .menu {
+    --bs-menu-zindex: 1000;
+    --bs-menu-gap: 0.125rem;
+    --bs-menu-min-width: 10rem;
+    --bs-menu-padding-x: 0.25rem;
+    --bs-menu-padding-y: 0.25rem;
+    --bs-menu-spacer: 0.125rem;
+    --bs-menu-font-size: var(--bs-font-size-sm);
+    --bs-menu-color: var(--bs-fg-body);
+    --bs-menu-bg: var(--bs-bg-body);
+    --bs-menu-box-shadow: var(--bs-box-shadow);
+    --bs-menu-divider-bg: var(--bs-border-color-translucent);
+    --bs-menu-divider-margin-y: 0.125rem;
+    --bs-menu-divider-margin-x: 0.25rem;
+    --bs-menu-item-color: var(--bs-menu-color, var(--bs-fg-body));
+    --bs-menu-item-hover-color: var(--bs-menu-color, var(--bs-fg-body));
+    --bs-menu-item-hover-bg: var(--bs-bg-1);
+    --bs-menu-item-active-color: var(--bs-primary-contrast);
+    --bs-menu-item-active-bg: var(--bs-primary-bg);
+    --bs-menu-item-disabled-color: var(--bs-fg-3);
+    --bs-menu-item-gap: 0.5rem;
+    --bs-menu-item-padding-x: 0.75rem;
+    --bs-menu-item-padding-y: 0.25rem;
+    --bs-menu-item-border-radius: var(--bs-border-radius);
+    --bs-menu-icon-size: 1rem;
+    --bs-menu-image-size: 1.5rem;
+    --bs-menu-description-font-size: var(--bs-font-size-xs);
+    --bs-menu-check-color: currentcolor;
+    --bs-menu-header-color: var(--bs-fg-3);
+    --bs-menu-header-padding-x: 0.75rem;
+    --bs-menu-header-padding-y: 0.25rem;
     position: absolute;
-    z-index: var(--bs-dropdown-zindex);
+    z-index: var(--bs-menu-zindex);
     display: none;
     flex-direction: column;
-    gap: var(--bs-dropdown-gap);
-    min-width: var(--bs-dropdown-min-width);
-    padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);
+    gap: var(--bs-menu-gap);
+    min-width: var(--bs-menu-min-width);
+    max-height: var(--bs-menu-max-height, none);
+    padding: var(--bs-menu-padding-y) var(--bs-menu-padding-x);
     margin: 0;
-    font-size: var(--bs-dropdown-font-size);
-    color: var(--bs-dropdown-color);
+    overflow-y: var(--bs-menu-overflow-y, initial);
+    overscroll-behavior: contain;
+    font-size: var(--bs-menu-font-size);
+    color: var(--bs-menu-color);
     text-align: start;
     list-style: none;
-    background-color: var(--bs-dropdown-bg);
+    background-color: var(--bs-menu-bg);
     background-clip: padding-box;
-    border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);
-    border-radius: var(--bs-dropdown-border-radius);
-    box-shadow: var(--bs-dropdown-box-shadow);
+    border: var(--bs-menu-border-width, var(--bs-border-width)) solid var(--bs-menu-border-color, var(--bs-border-color-translucent));
+    border-radius: var(--bs-menu-border-radius, var(--bs-border-radius-lg));
+    box-shadow: var(--bs-menu-box-shadow);
   }
-  .dropdown-menu.show {
+  .menu.show {
     display: flex;
   }
-  .dropdown-divider {
+  .menu-scrollable {
+    --bs-menu-max-height: 80dvh;
+    --bs-menu-overflow-y: auto;
+  }
+  .menu-translucent {
+    --bs-menu-item-hover-bg-light: color-mix(in oklch, var(--bs-bg-1) 90%, transparent);
+    --bs-menu-item-hover-bg-dark: color-mix(in oklch, var(--bs-bg-1) 80%, transparent);
+    --bs-menu-item-active-bg-light: color-mix(in oklch, var(--bs-primary-bg) 80%, transparent);
+    --bs-menu-item-active-bg-dark: color-mix(in oklch, var(--bs-primary-bg) 70%, transparent);
+    --bs-menu-item-active-bg: light-dark(var(--bs-menu-item-active-bg-light), var(--bs-menu-item-active-bg-dark));
+    --bs-menu-item-hover-bg: light-dark(var(--bs-menu-item-hover-bg-light), var(--bs-menu-item-hover-bg-dark));
+    background-color: color-mix(in oklch, var(--bs-menu-bg) 80%, transparent);
+    -webkit-backdrop-filter: blur(5px) saturate(180%);
+    backdrop-filter: blur(5px) saturate(180%);
+  }
+  .menu-divider {
     height: 0;
-    margin: var(--bs-dropdown-divider-margin-y) var(--bs-dropdown-divider-margin-x);
+    margin: var(--bs-menu-divider-margin-y) var(--bs-menu-divider-margin-x);
     overflow: hidden;
-    border-block-start: 1px solid var(--bs-dropdown-divider-bg);
+    border-block-start: 1px solid var(--bs-menu-divider-bg);
     opacity: 1;
   }
-  .dropdown-item {
+  .menu-item {
     display: flex;
-    gap: var(--bs-dropdown-item-gap);
+    gap: var(--bs-menu-item-gap);
     align-items: center;
     width: 100%;
-    padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);
-    font-weight: 400;
-    color: var(--bs-theme-text, var(--bs-dropdown-link-color));
+    padding: var(--bs-menu-item-padding-y) var(--bs-menu-item-padding-x);
+    font-weight: var(--bs-menu-item-font-weight, var(--bs-font-weight-normal));
+    color: var(--bs-theme-text, var(--bs-menu-item-color));
     text-align: inherit;
     text-decoration: none;
     white-space: nowrap;
+    cursor: pointer;
     background-color: transparent;
     border: 0;
-    border-radius: var(--bs-dropdown-item-border-radius, 0);
+    outline: 0;
+    border-radius: var(--bs-menu-item-border-radius, 0);
   }
-  .dropdown-item:hover, .dropdown-item:focus {
-    color: var(--bs-theme-text, var(--bs-dropdown-link-hover-color));
-    background-color: var(--bs-theme-bg-subtle, var(--bs-dropdown-link-hover-bg));
+  .menu-item:hover, .menu-item:focus {
+    color: var(--bs-theme-text, var(--bs-menu-item-hover-color));
+    background-color: var(--bs-theme-bg-subtle, var(--bs-menu-item-hover-bg));
   }
-  .dropdown-item.active, .dropdown-item:active {
-    color: var(--bs-theme-contrast, var(--bs-dropdown-link-active-color));
-    background-color: var(--bs-theme-bg, var(--bs-dropdown-link-active-bg));
+  .menu-item.active, .menu-item:active {
+    color: var(--bs-theme-contrast, var(--bs-menu-item-active-color));
+    background-color: var(--bs-theme-bg, var(--bs-menu-item-active-bg));
   }
-  .dropdown-item.disabled, .dropdown-item:disabled {
-    color: var(--bs-dropdown-link-disabled-color);
+  .menu-item.active .menu-item-icon, .menu-item:active .menu-item-icon {
+    color: inherit !important;
+  }
+  .menu-item.selected {
+    font-weight: 600;
+  }
+  .menu-item.disabled, .menu-item:disabled {
+    color: var(--bs-menu-item-disabled-color);
     pointer-events: none;
     background-color: transparent;
   }
-  .dropdown-header {
+  .menu-item-icon {
+    flex-shrink: 0;
+    align-self: flex-start;
+    width: var(--bs-menu-icon-size);
+    height: auto;
+    margin-top: 0.125rem;
+  }
+  .menu-image {
+    width: var(--bs-menu-image-size);
+    height: var(--bs-menu-image-size);
+    -o-object-fit: cover;
+    object-fit: cover;
+    border-radius: var(--bs-border-radius-sm);
+  }
+  .menu-item-content {
+    display: flex;
+    flex: 1;
+    flex-direction: column;
+    min-width: -moz-fit-content;
+    min-width: fit-content;
+  }
+  .menu-item-description {
+    font-size: var(--bs-menu-description-font-size);
+    font-weight: var(--bs-font-weight-normal);
+    color: color-mix(in oklch, currentcolor 65%, transparent);
+  }
+  .menu-item-check {
+    flex-shrink: 0;
+    align-self: flex-start;
+    margin-block-start: 0.125rem;
+    margin-inline-start: auto;
+    color: var(--bs-menu-check-color);
+    visibility: hidden;
+  }
+  .selected > .menu-item-check {
+    visibility: visible;
+  }
+  .menu-header {
     display: block;
-    padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);
+    padding: var(--bs-menu-header-padding-y) var(--bs-menu-header-padding-x);
     margin-bottom: 0;
     font-size: var(--bs-font-size-sm);
-    color: var(--bs-dropdown-header-color);
+    color: var(--bs-menu-header-color);
     white-space: nowrap;
   }
-  .dropdown-item-text {
+  .menu-text {
     display: block;
-    padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);
+    padding: var(--bs-menu-item-padding-y) var(--bs-menu-item-padding-x);
     color: var(--bs-fg-2);
   }
-  .dropdown-submenu {
+  .submenu {
     position: relative;
   }
-  .dropdown-submenu > .dropdown-item {
+  .submenu > .menu-item {
     display: flex;
     align-items: center;
     justify-content: space-between;
   }
-  .dropdown-submenu > .dropdown-item::after {
+  .submenu > .menu-item::after {
     display: inline-block;
     flex-shrink: 0;
     width: 0.375em;
     border-width: 0 0.125em 0.125em 0;
     transform: rotate(-45deg);
   }
-  [dir=rtl] .dropdown-submenu > .dropdown-item::after {
+  [dir=rtl] .submenu > .menu-item::after {
     transform: rotate(135deg);
   }
-  .dropdown-submenu > .dropdown-menu {
+  .submenu > .menu {
     top: 0;
-    margin-top: calc(-1 * var(--bs-dropdown-padding-y));
+    margin-top: calc(-1 * var(--bs-menu-padding-y));
+  }
+  .submenu:hover > .menu-item, .submenu:focus-within > .menu-item {
+    color: var(--bs-menu-item-hover-color);
+    background-color: var(--bs-menu-item-hover-bg);
   }
-  .dropdown-submenu:hover > .dropdown-item, .dropdown-submenu:focus-within > .dropdown-item {
-    color: var(--bs-dropdown-link-hover-color);
-    background-color: var(--bs-dropdown-link-hover-bg);
+  .submenu.show > .menu-item {
+    color: var(--bs-menu-item-hover-color);
+    background-color: var(--bs-menu-item-hover-bg);
   }
-  .dropdown-submenu.show > .dropdown-item {
-    color: var(--bs-dropdown-link-hover-color);
-    background-color: var(--bs-dropdown-link-hover-bg);
+  @media (max-width: 575.98px) {
+    .submenu:has(.submenu-stacked) {
+      position: static;
+    }
+    .submenu-stacked {
+      position: absolute;
+      inset: 0;
+      z-index: 1;
+      display: flex;
+      flex-direction: column;
+      gap: var(--bs-menu-gap);
+      min-width: 0;
+      padding: var(--bs-menu-padding-y) var(--bs-menu-padding-x);
+      background-color: var(--bs-menu-bg);
+      border: 0;
+      border-radius: 0;
+      box-shadow: none;
+    }
+    .submenu-back {
+      display: flex;
+      gap: var(--bs-menu-item-gap);
+      align-items: center;
+      padding: var(--bs-menu-item-padding-y) var(--bs-menu-item-padding-x);
+      font-weight: var(--bs-font-weight-semibold, 600);
+      color: var(--bs-menu-item-color);
+    }
+    .submenu-back::before {
+      display: inline-block;
+      flex-shrink: 0;
+      width: 0.375em;
+      height: 0.375em;
+      content: "";
+      border-color: currentcolor;
+      border-style: solid;
+      border-width: 0.125em 0 0 0.125em;
+      transform: rotate(-45deg);
+    }
+    [dir=rtl] .submenu-back::before {
+      border-width: 0 0.125em 0.125em 0;
+    }
+    .submenu-dimmed {
+      pointer-events: none;
+      filter: blur(2px);
+      opacity: 0.3;
+    }
   }
 }
 @layer components {
     --bs-nav-link-active-color: var(--bs-fg-body);
     --bs-nav-link-active-bg: var(--bs-bg-2);
     --bs-nav-link-disabled-color: var(--bs-fg-4);
+    --bs-nav-link-border-width: var(--bs-border-width);
     --bs-nav-link-transition-property: color, background-color, border-color;
     --bs-nav-link-transition-timing: 0.15s ease-in-out;
     --bs-nav-link-transition: var(--bs-nav-link-transition-property) var(--bs-nav-link-transition-timing);
     text-decoration: none;
     white-space: nowrap;
     background: none;
-    border: 0;
+    border: var(--bs-nav-link-border-width) solid transparent;
     border-radius: var(--bs-border-radius);
     transition: var(--bs-nav-link-transition);
   }
     border-color: var(--bs-nav-tabs-link-active-border-color);
     border-bottom-color: var(--bs-nav-tabs-link-active-bg);
   }
-  .nav-tabs .dropdown-menu {
+  .nav-tabs .menu {
     margin-top: calc(-1 * var(--bs-nav-tabs-border-width));
     border-start-start-radius: 0;
     border-start-end-radius: 0;
   }
   .nav-pills {
-    --bs-nav-pills-link-active-color: var(--bs-component-active-color);
-    --bs-nav-pills-link-active-bg: var(--bs-component-active-bg);
+    --bs-nav-pills-link-active-color: var(--bs-primary-contrast);
+    --bs-nav-pills-link-active-bg: var(--bs-primary-bg);
   }
   .nav-pills .nav-link.active,
   .nav-pills .show > .nav-link {
   }
   .nav-underline .nav-link {
     padding-inline: 0;
+    border: 0;
     border-block-end: var(--bs-nav-underline-border-width) solid transparent;
     border-radius: 0;
   }
     justify-content: space-between;
     padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);
     container-type: inline-size;
+    color: var(--bs-navbar-color, var(--bs-fg-body));
+    background-color: var(--bs-navbar-bg, var(--bs-bg-body));
   }
   .navbar > .container-2xl, .navbar > .container-xl, .navbar > .container-lg, .navbar > .container-md, .navbar > .container-sm, .navbar > .container,
   .navbar > .container-fluid {
     color: var(--bs-navbar-brand-hover-color);
   }
   .navbar-nav {
-    --bs-nav-gap: .25rem;
-    --bs-nav-link-gap: .5rem;
-    --bs-nav-link-padding-x: .5rem;
-    --bs-nav-link-padding-y: .5rem;
+    --bs-nav-gap: 0.25rem;
+    --bs-nav-link-gap: 0.5rem;
+    --bs-nav-link-padding-x: 0.5rem;
+    --bs-nav-link-padding-y: 0.375rem;
     --bs-nav-link-color: var(--bs-navbar-color);
+    --bs-nav-link-border-width: var(--bs-border-width);
     --bs-nav-link-hover-color: var(--bs-navbar-hover-color);
     --bs-nav-link-hover-bg: transparent;
     --bs-nav-link-active-color: var(--bs-navbar-active-color);
   }
   .navbar-nav .nav-link.active, .navbar-nav .nav-link.show {
     color: var(--bs-navbar-active-color);
+    border: var(--bs-nav-link-border-width) solid var(--bs-nav-link-border-color, transparent);
   }
   .navbar-text {
     padding-top: var(--bs-navbar-brand-padding-y);
       overflow-y: visible;
     }
   }
+  .navbar-translucent {
+    position: relative;
+    background-color: transparent;
+  }
+  .navbar-translucent::before {
+    position: absolute;
+    inset: 0;
+    z-index: -1;
+    content: "";
+    background-color: color-mix(in oklch, var(--bs-navbar-bg, var(--bs-bg-body)) 80%, transparent);
+    background-image: none;
+    -webkit-backdrop-filter: blur(5px) saturate(180%);
+    backdrop-filter: blur(5px) saturate(180%);
+  }
   .navbar[data-bs-theme=dark] {
     --bs-navbar-color: color-mix(in oklch, var(--bs-white) 0.55, transparent);
     --bs-navbar-hover-color: color-mix(in oklch, var(--bs-white) 0.75, transparent);
     }
   }
   @media (width < 576px) {
-    .offcanvas-sm.offcanvas-start {
+    .offcanvas-sm:where(.offcanvas-start) {
       inset-block: var(--bs-offcanvas-inset);
       inset-inline-start: var(--bs-offcanvas-inset);
       width: var(--bs-offcanvas-width);
       transform: translateX(-100%);
     }
-    :root:dir(rtl) .offcanvas-sm.offcanvas-start {
+    :root:dir(rtl) .offcanvas-sm:where(.offcanvas-start) {
       transform: translateX(100%);
     }
-    .offcanvas-sm.offcanvas-end {
+    .offcanvas-sm:where(.offcanvas-end) {
       inset-block: var(--bs-offcanvas-inset);
       inset-inline-end: var(--bs-offcanvas-inset);
       width: var(--bs-offcanvas-width);
       transform: translateX(100%);
     }
-    :root:dir(rtl) .offcanvas-sm.offcanvas-end {
+    :root:dir(rtl) .offcanvas-sm:where(.offcanvas-end) {
       transform: translateX(-100%);
     }
-    .offcanvas-sm.offcanvas-top {
+    .offcanvas-sm:where(.offcanvas-top) {
       inset: var(--bs-offcanvas-inset) var(--bs-offcanvas-inset) auto;
       height: var(--bs-offcanvas-height);
       transform: translateY(-100%);
     }
-    .offcanvas-sm.offcanvas-bottom {
+    .offcanvas-sm:where(.offcanvas-bottom) {
       inset: auto var(--bs-offcanvas-inset) var(--bs-offcanvas-inset);
       height: var(--bs-offcanvas-height);
       transform: translateY(100%);
     }
-    .offcanvas-sm.offcanvas-fullscreen {
+    .offcanvas-sm:where(.offcanvas-fullscreen) {
       inset: var(--bs-offcanvas-inset);
       width: auto;
       max-width: none;
     }
   }
   @media (width < 768px) {
-    .offcanvas-md.offcanvas-start {
+    .offcanvas-md:where(.offcanvas-start) {
       inset-block: var(--bs-offcanvas-inset);
       inset-inline-start: var(--bs-offcanvas-inset);
       width: var(--bs-offcanvas-width);
       transform: translateX(-100%);
     }
-    :root:dir(rtl) .offcanvas-md.offcanvas-start {
+    :root:dir(rtl) .offcanvas-md:where(.offcanvas-start) {
       transform: translateX(100%);
     }
-    .offcanvas-md.offcanvas-end {
+    .offcanvas-md:where(.offcanvas-end) {
       inset-block: var(--bs-offcanvas-inset);
       inset-inline-end: var(--bs-offcanvas-inset);
       width: var(--bs-offcanvas-width);
       transform: translateX(100%);
     }
-    :root:dir(rtl) .offcanvas-md.offcanvas-end {
+    :root:dir(rtl) .offcanvas-md:where(.offcanvas-end) {
       transform: translateX(-100%);
     }
-    .offcanvas-md.offcanvas-top {
+    .offcanvas-md:where(.offcanvas-top) {
       inset: var(--bs-offcanvas-inset) var(--bs-offcanvas-inset) auto;
       height: var(--bs-offcanvas-height);
       transform: translateY(-100%);
     }
-    .offcanvas-md.offcanvas-bottom {
+    .offcanvas-md:where(.offcanvas-bottom) {
       inset: auto var(--bs-offcanvas-inset) var(--bs-offcanvas-inset);
       height: var(--bs-offcanvas-height);
       transform: translateY(100%);
     }
-    .offcanvas-md.offcanvas-fullscreen {
+    .offcanvas-md:where(.offcanvas-fullscreen) {
       inset: var(--bs-offcanvas-inset);
       width: auto;
       max-width: none;
     }
   }
   @media (width < 1024px) {
-    .offcanvas-lg.offcanvas-start {
+    .offcanvas-lg:where(.offcanvas-start) {
       inset-block: var(--bs-offcanvas-inset);
       inset-inline-start: var(--bs-offcanvas-inset);
       width: var(--bs-offcanvas-width);
       transform: translateX(-100%);
     }
-    :root:dir(rtl) .offcanvas-lg.offcanvas-start {
+    :root:dir(rtl) .offcanvas-lg:where(.offcanvas-start) {
       transform: translateX(100%);
     }
-    .offcanvas-lg.offcanvas-end {
+    .offcanvas-lg:where(.offcanvas-end) {
       inset-block: var(--bs-offcanvas-inset);
       inset-inline-end: var(--bs-offcanvas-inset);
       width: var(--bs-offcanvas-width);
       transform: translateX(100%);
     }
-    :root:dir(rtl) .offcanvas-lg.offcanvas-end {
+    :root:dir(rtl) .offcanvas-lg:where(.offcanvas-end) {
       transform: translateX(-100%);
     }
-    .offcanvas-lg.offcanvas-top {
+    .offcanvas-lg:where(.offcanvas-top) {
       inset: var(--bs-offcanvas-inset) var(--bs-offcanvas-inset) auto;
       height: var(--bs-offcanvas-height);
       transform: translateY(-100%);
     }
-    .offcanvas-lg.offcanvas-bottom {
+    .offcanvas-lg:where(.offcanvas-bottom) {
       inset: auto var(--bs-offcanvas-inset) var(--bs-offcanvas-inset);
       height: var(--bs-offcanvas-height);
       transform: translateY(100%);
     }
-    .offcanvas-lg.offcanvas-fullscreen {
+    .offcanvas-lg:where(.offcanvas-fullscreen) {
       inset: var(--bs-offcanvas-inset);
       width: auto;
       max-width: none;
     }
   }
   @media (width < 1280px) {
-    .offcanvas-xl.offcanvas-start {
+    .offcanvas-xl:where(.offcanvas-start) {
       inset-block: var(--bs-offcanvas-inset);
       inset-inline-start: var(--bs-offcanvas-inset);
       width: var(--bs-offcanvas-width);
       transform: translateX(-100%);
     }
-    :root:dir(rtl) .offcanvas-xl.offcanvas-start {
+    :root:dir(rtl) .offcanvas-xl:where(.offcanvas-start) {
       transform: translateX(100%);
     }
-    .offcanvas-xl.offcanvas-end {
+    .offcanvas-xl:where(.offcanvas-end) {
       inset-block: var(--bs-offcanvas-inset);
       inset-inline-end: var(--bs-offcanvas-inset);
       width: var(--bs-offcanvas-width);
       transform: translateX(100%);
     }
-    :root:dir(rtl) .offcanvas-xl.offcanvas-end {
+    :root:dir(rtl) .offcanvas-xl:where(.offcanvas-end) {
       transform: translateX(-100%);
     }
-    .offcanvas-xl.offcanvas-top {
+    .offcanvas-xl:where(.offcanvas-top) {
       inset: var(--bs-offcanvas-inset) var(--bs-offcanvas-inset) auto;
       height: var(--bs-offcanvas-height);
       transform: translateY(-100%);
     }
-    .offcanvas-xl.offcanvas-bottom {
+    .offcanvas-xl:where(.offcanvas-bottom) {
       inset: auto var(--bs-offcanvas-inset) var(--bs-offcanvas-inset);
       height: var(--bs-offcanvas-height);
       transform: translateY(100%);
     }
-    .offcanvas-xl.offcanvas-fullscreen {
+    .offcanvas-xl:where(.offcanvas-fullscreen) {
       inset: var(--bs-offcanvas-inset);
       width: auto;
       max-width: none;
     }
   }
   @media (width < 1536px) {
-    .offcanvas-2xl.offcanvas-start {
+    .offcanvas-2xl:where(.offcanvas-start) {
       inset-block: var(--bs-offcanvas-inset);
       inset-inline-start: var(--bs-offcanvas-inset);
       width: var(--bs-offcanvas-width);
       transform: translateX(-100%);
     }
-    :root:dir(rtl) .offcanvas-2xl.offcanvas-start {
+    :root:dir(rtl) .offcanvas-2xl:where(.offcanvas-start) {
       transform: translateX(100%);
     }
-    .offcanvas-2xl.offcanvas-end {
+    .offcanvas-2xl:where(.offcanvas-end) {
       inset-block: var(--bs-offcanvas-inset);
       inset-inline-end: var(--bs-offcanvas-inset);
       width: var(--bs-offcanvas-width);
       transform: translateX(100%);
     }
-    :root:dir(rtl) .offcanvas-2xl.offcanvas-end {
+    :root:dir(rtl) .offcanvas-2xl:where(.offcanvas-end) {
       transform: translateX(-100%);
     }
-    .offcanvas-2xl.offcanvas-top {
+    .offcanvas-2xl:where(.offcanvas-top) {
       inset: var(--bs-offcanvas-inset) var(--bs-offcanvas-inset) auto;
       height: var(--bs-offcanvas-height);
       transform: translateY(-100%);
     }
-    .offcanvas-2xl.offcanvas-bottom {
+    .offcanvas-2xl:where(.offcanvas-bottom) {
       inset: auto var(--bs-offcanvas-inset) var(--bs-offcanvas-inset);
       height: var(--bs-offcanvas-height);
       transform: translateY(100%);
     }
-    .offcanvas-2xl.offcanvas-fullscreen {
+    .offcanvas-2xl:where(.offcanvas-fullscreen) {
       inset: var(--bs-offcanvas-inset);
       width: auto;
       max-width: none;
       transition: none;
     }
   }
-  .offcanvas.offcanvas-start {
+  .offcanvas:where(.offcanvas-start) {
     inset-block: var(--bs-offcanvas-inset);
     inset-inline-start: var(--bs-offcanvas-inset);
     width: var(--bs-offcanvas-width);
     transform: translateX(-100%);
   }
-  :root:dir(rtl) .offcanvas.offcanvas-start {
+  :root:dir(rtl) .offcanvas:where(.offcanvas-start) {
     transform: translateX(100%);
   }
-  .offcanvas.offcanvas-end {
+  .offcanvas:where(.offcanvas-end) {
     inset-block: var(--bs-offcanvas-inset);
     inset-inline-end: var(--bs-offcanvas-inset);
     width: var(--bs-offcanvas-width);
     transform: translateX(100%);
   }
-  :root:dir(rtl) .offcanvas.offcanvas-end {
+  :root:dir(rtl) .offcanvas:where(.offcanvas-end) {
     transform: translateX(-100%);
   }
-  .offcanvas.offcanvas-top {
+  .offcanvas:where(.offcanvas-top) {
     inset: var(--bs-offcanvas-inset) var(--bs-offcanvas-inset) auto;
     height: var(--bs-offcanvas-height);
     transform: translateY(-100%);
   }
-  .offcanvas.offcanvas-bottom {
+  .offcanvas:where(.offcanvas-bottom) {
     inset: auto var(--bs-offcanvas-inset) var(--bs-offcanvas-inset);
     height: var(--bs-offcanvas-height);
     transform: translateY(100%);
   }
-  .offcanvas.offcanvas-fullscreen {
+  .offcanvas:where(.offcanvas-fullscreen) {
     inset: var(--bs-offcanvas-inset);
     width: auto;
     max-width: none;
   .offcanvas-backdrop.show {
     opacity: 1;
   }
+  .offcanvas-translucent {
+    background-color: color-mix(in oklch, var(--bs-offcanvas-bg) 80%, transparent);
+    -webkit-backdrop-filter: blur(5px) saturate(180%);
+    backdrop-filter: blur(5px) saturate(180%);
+  }
   .offcanvas-header {
     display: flex;
     align-items: center;
     padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);
     border-block-start: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);
   }
+  .offcanvas-fit-content {
+    inset-block-end: auto;
+  }
 }
 @layer components {
   .pagination {
     margin-inline-start: var(--bs-toast-padding-x);
     margin-inline-end: calc(-0.5 * var(--bs-toast-padding-x));
   }
+  .toast-translucent {
+    -webkit-backdrop-filter: blur(5px) saturate(180%);
+    backdrop-filter: blur(5px) saturate(180%);
+  }
   .toast-body {
     padding: var(--bs-toast-padding-x);
     word-wrap: break-word;
   .place-items-stretch {
     place-items: stretch;
   }
+  .grid-cols-2 {
+    grid-template-columns: repeat(2, 1fr);
+  }
   .grid-cols-3 {
-    --bs-columns: 3;
+    grid-template-columns: repeat(3, 1fr);
   }
   .grid-cols-4 {
-    --bs-columns: 4;
+    grid-template-columns: repeat(4, 1fr);
   }
   .grid-cols-6 {
-    --bs-columns: 6;
+    grid-template-columns: repeat(6, 1fr);
   }
   .grid-cols-fill {
     grid-column: 1 / -1;
   .order-last {
     order: 6;
   }
-  .m--2 {
-    margin: -0.5rem;
-  }
-  .m--1 {
-    margin: -0.25rem;
-  }
   .m-0 {
     margin: 0;
   }
   .m-auto {
     margin: auto;
   }
-  .mx--2 {
-    margin-inline: -0.5rem;
-  }
-  .mx--1 {
-    margin-inline: -0.25rem;
-  }
   .mx-0 {
     margin-inline: 0;
   }
   .mx-auto {
     margin-inline: auto;
   }
-  .my--2 {
-    margin-block: -0.5rem;
-  }
-  .my--1 {
-    margin-block: -0.25rem;
-  }
   .my-0 {
     margin-block: 0;
   }
   .my-auto {
     margin-block: auto;
   }
-  .mt--2 {
-    margin-block-start: -0.5rem;
-  }
-  .mt--1 {
-    margin-block-start: -0.25rem;
-  }
   .mt-0 {
     margin-block-start: 0;
   }
   .mt-auto {
     margin-block-start: auto;
   }
-  .me--2 {
-    margin-inline-end: -0.5rem;
-  }
-  .me--1 {
-    margin-inline-end: -0.25rem;
-  }
   .me-0 {
     margin-inline-end: 0;
   }
   .me-auto {
     margin-inline-end: auto;
   }
-  .mb--2 {
-    margin-block-end: -0.5rem;
-  }
-  .mb--1 {
-    margin-block-end: -0.25rem;
-  }
   .mb-0 {
     margin-block-end: 0;
   }
   .mb-auto {
     margin-block-end: auto;
   }
-  .ms--2 {
-    margin-inline-start: -0.5rem;
-  }
-  .ms--1 {
-    margin-inline-start: -0.25rem;
-  }
   .ms-0 {
     margin-inline-start: 0;
   }
   .ms-5 {
     margin-inline-start: 3rem;
   }
-  .ms-auto {
-    margin-inline-start: auto;
+  .ms--1 {
+    margin-inline-start: -0.25rem;
   }
-  .p--2 {
-    padding: -0.5rem;
+  .ms--2 {
+    margin-inline-start: -0.5rem;
   }
-  .p--1 {
-    padding: -0.25rem;
+  .ms-auto {
+    margin-inline-start: auto;
   }
   .p-0 {
     padding: 0;
   .p-5 {
     padding: 3rem;
   }
-  .px--2 {
-    padding-inline: -0.5rem;
-  }
-  .px--1 {
-    padding-inline: -0.25rem;
-  }
   .px-0 {
     padding-inline: 0;
   }
   .px-5 {
     padding-inline: 3rem;
   }
-  .py--2 {
-    padding-block: -0.5rem;
-  }
-  .py--1 {
-    padding-block: -0.25rem;
-  }
   .py-0 {
     padding-block: 0;
   }
   .py-5 {
     padding-block: 3rem;
   }
-  .pt--2 {
-    padding-block-start: -0.5rem;
-  }
-  .pt--1 {
-    padding-block-start: -0.25rem;
-  }
   .pt-0 {
     padding-block-start: 0;
   }
   .pt-5 {
     padding-block-start: 3rem;
   }
-  .pe--2 {
-    padding-inline-end: -0.5rem;
-  }
-  .pe--1 {
-    padding-inline-end: -0.25rem;
-  }
   .pe-0 {
     padding-inline-end: 0;
   }
   .pe-5 {
     padding-inline-end: 3rem;
   }
-  .pb--2 {
-    padding-block-end: -0.5rem;
-  }
-  .pb--1 {
-    padding-block-end: -0.25rem;
-  }
   .pb-0 {
     padding-block-end: 0;
   }
   .pb-5 {
     padding-block-end: 3rem;
   }
-  .ps--2 {
-    padding-inline-start: -0.5rem;
-  }
-  .ps--1 {
-    padding-inline-start: -0.25rem;
-  }
   .ps-0 {
     padding-inline-start: 0;
   }
   .ps-5 {
     padding-inline-start: 3rem;
   }
-  .gap--2 {
-    gap: -0.5rem;
-  }
-  .gap--1 {
-    gap: -0.25rem;
-  }
   .gap-0 {
     gap: 0;
   }
   .gap-5 {
     gap: 3rem;
   }
-  .row-gap--2 {
-    row-gap: -0.5rem;
-  }
-  .row-gap--1 {
-    row-gap: -0.25rem;
-  }
   .row-gap-0 {
     row-gap: 0;
   }
   .row-gap-5 {
     row-gap: 3rem;
   }
-  .column-gap--2 {
-    -moz-column-gap: -0.5rem;
-    column-gap: -0.5rem;
-  }
-  .column-gap--1 {
-    -moz-column-gap: -0.25rem;
-    column-gap: -0.25rem;
-  }
   .column-gap-0 {
     -moz-column-gap: 0;
     column-gap: 0;
     font-family: var(--bs-body-font-family);
   }
   .fs-xs {
-    font-size: var(--bs-font-size-xs);
+    font-size: 0.75rem;
   }
   .fs-sm {
-    font-size: var(--bs-font-size-sm);
+    font-size: 0.875rem;
   }
   .fs-md {
-    font-size: var(--bs-font-size-md);
+    font-size: 1rem;
   }
   .fs-lg {
-    font-size: var(--bs-font-size-lg);
+    font-size: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);
   }
   .fs-xl {
-    font-size: var(--bs-font-size-xl);
+    font-size: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);
   }
   .fs-2xl {
-    font-size: var(--bs-font-size-2xl);
+    font-size: clamp(1.75rem, 1.3rem + 1vw, 2rem);
   }
   .fs-3xl {
-    font-size: var(--bs-font-size-3xl);
+    font-size: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);
   }
   .fs-4xl {
-    font-size: var(--bs-font-size-4xl);
+    font-size: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);
   }
   .fs-5xl {
-    font-size: var(--bs-font-size-5xl);
+    font-size: clamp(3rem, 2rem + 5vw, 4rem);
   }
   .fs-6xl {
-    font-size: var(--bs-font-size-6xl);
+    font-size: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);
   }
   .text-xs {
-    font-size: var(--bs-font-size-xs);
-    line-height: var(--bs-line-height-xs);
+    font-size: 0.75rem;
+    line-height: 1.25;
   }
   .text-sm {
-    font-size: var(--bs-font-size-sm);
-    line-height: var(--bs-line-height-sm);
+    font-size: 0.875rem;
+    line-height: 1.5;
   }
   .text-md {
-    font-size: var(--bs-font-size-md);
-    line-height: var(--bs-line-height-md);
+    font-size: 1rem;
+    line-height: 1.5;
   }
   .text-lg {
-    font-size: var(--bs-font-size-lg);
-    line-height: var(--bs-line-height-lg);
+    font-size: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);
+    line-height: 1.5;
   }
   .text-xl {
-    font-size: var(--bs-font-size-xl);
-    line-height: var(--bs-line-height-xl);
+    font-size: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);
+    line-height: 1.4285714286;
   }
   .text-2xl {
-    font-size: var(--bs-font-size-2xl);
-    line-height: var(--bs-line-height-2xl);
+    font-size: clamp(1.75rem, 1.3rem + 1vw, 2rem);
+    line-height: 1.3333333333;
   }
   .text-3xl {
-    font-size: var(--bs-font-size-3xl);
-    line-height: var(--bs-line-height-3xl);
+    font-size: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);
+    line-height: 1.2;
   }
   .text-4xl {
-    font-size: var(--bs-font-size-4xl);
-    line-height: var(--bs-line-height-4xl);
+    font-size: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);
+    line-height: 1.1;
   }
   .text-5xl {
-    font-size: var(--bs-font-size-5xl);
-    line-height: var(--bs-line-height-5xl);
+    font-size: clamp(3rem, 2rem + 5vw, 4rem);
+    line-height: 1.1;
   }
   .text-6xl {
-    font-size: var(--bs-font-size-6xl);
-    line-height: var(--bs-line-height-6xl);
+    font-size: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);
+    line-height: 1;
   }
   .fst-italic {
     font-style: italic;
     -webkit-user-select: auto;
     user-select: auto;
   }
+  .user-select-text {
+    -webkit-user-select: text;
+    user-select: text;
+  }
   .user-select-none {
     -webkit-user-select: none;
     user-select: none;
     .place-items-sm-stretch {
       place-items: stretch;
     }
+    .grid-cols-sm-2 {
+      grid-template-columns: repeat(2, 1fr);
+    }
     .grid-cols-sm-3 {
-      --bs-columns: 3;
+      grid-template-columns: repeat(3, 1fr);
     }
     .grid-cols-sm-4 {
-      --bs-columns: 4;
+      grid-template-columns: repeat(4, 1fr);
     }
     .grid-cols-sm-6 {
-      --bs-columns: 6;
+      grid-template-columns: repeat(6, 1fr);
     }
     .grid-cols-sm-fill {
       grid-column: 1 / -1;
     .order-sm-last {
       order: 6;
     }
-    .m-sm--2 {
-      margin: -0.5rem;
-    }
-    .m-sm--1 {
-      margin: -0.25rem;
-    }
     .m-sm-0 {
       margin: 0;
     }
     .m-sm-auto {
       margin: auto;
     }
-    .mx-sm--2 {
-      margin-inline: -0.5rem;
-    }
-    .mx-sm--1 {
-      margin-inline: -0.25rem;
-    }
     .mx-sm-0 {
       margin-inline: 0;
     }
     .mx-sm-auto {
       margin-inline: auto;
     }
-    .my-sm--2 {
-      margin-block: -0.5rem;
-    }
-    .my-sm--1 {
-      margin-block: -0.25rem;
-    }
     .my-sm-0 {
       margin-block: 0;
     }
     .my-sm-auto {
       margin-block: auto;
     }
-    .mt-sm--2 {
-      margin-block-start: -0.5rem;
-    }
-    .mt-sm--1 {
-      margin-block-start: -0.25rem;
-    }
     .mt-sm-0 {
       margin-block-start: 0;
     }
     .mt-sm-auto {
       margin-block-start: auto;
     }
-    .me-sm--2 {
-      margin-inline-end: -0.5rem;
-    }
-    .me-sm--1 {
-      margin-inline-end: -0.25rem;
-    }
     .me-sm-0 {
       margin-inline-end: 0;
     }
     .me-sm-auto {
       margin-inline-end: auto;
     }
-    .mb-sm--2 {
-      margin-block-end: -0.5rem;
-    }
-    .mb-sm--1 {
-      margin-block-end: -0.25rem;
-    }
     .mb-sm-0 {
       margin-block-end: 0;
     }
     .mb-sm-auto {
       margin-block-end: auto;
     }
-    .ms-sm--2 {
-      margin-inline-start: -0.5rem;
-    }
-    .ms-sm--1 {
-      margin-inline-start: -0.25rem;
-    }
     .ms-sm-0 {
       margin-inline-start: 0;
     }
     .ms-sm-5 {
       margin-inline-start: 3rem;
     }
-    .ms-sm-auto {
-      margin-inline-start: auto;
+    .ms-sm--1 {
+      margin-inline-start: -0.25rem;
     }
-    .p-sm--2 {
-      padding: -0.5rem;
+    .ms-sm--2 {
+      margin-inline-start: -0.5rem;
     }
-    .p-sm--1 {
-      padding: -0.25rem;
+    .ms-sm-auto {
+      margin-inline-start: auto;
     }
     .p-sm-0 {
       padding: 0;
     .p-sm-5 {
       padding: 3rem;
     }
-    .px-sm--2 {
-      padding-inline: -0.5rem;
-    }
-    .px-sm--1 {
-      padding-inline: -0.25rem;
-    }
     .px-sm-0 {
       padding-inline: 0;
     }
     .px-sm-5 {
       padding-inline: 3rem;
     }
-    .py-sm--2 {
-      padding-block: -0.5rem;
-    }
-    .py-sm--1 {
-      padding-block: -0.25rem;
-    }
     .py-sm-0 {
       padding-block: 0;
     }
     .py-sm-5 {
       padding-block: 3rem;
     }
-    .pt-sm--2 {
-      padding-block-start: -0.5rem;
-    }
-    .pt-sm--1 {
-      padding-block-start: -0.25rem;
-    }
     .pt-sm-0 {
       padding-block-start: 0;
     }
     .pt-sm-5 {
       padding-block-start: 3rem;
     }
-    .pe-sm--2 {
-      padding-inline-end: -0.5rem;
-    }
-    .pe-sm--1 {
-      padding-inline-end: -0.25rem;
-    }
     .pe-sm-0 {
       padding-inline-end: 0;
     }
     .pe-sm-5 {
       padding-inline-end: 3rem;
     }
-    .pb-sm--2 {
-      padding-block-end: -0.5rem;
-    }
-    .pb-sm--1 {
-      padding-block-end: -0.25rem;
-    }
     .pb-sm-0 {
       padding-block-end: 0;
     }
     .pb-sm-5 {
       padding-block-end: 3rem;
     }
-    .ps-sm--2 {
-      padding-inline-start: -0.5rem;
-    }
-    .ps-sm--1 {
-      padding-inline-start: -0.25rem;
-    }
     .ps-sm-0 {
       padding-inline-start: 0;
     }
     .ps-sm-5 {
       padding-inline-start: 3rem;
     }
-    .gap-sm--2 {
-      gap: -0.5rem;
-    }
-    .gap-sm--1 {
-      gap: -0.25rem;
-    }
     .gap-sm-0 {
       gap: 0;
     }
     .gap-sm-5 {
       gap: 3rem;
     }
-    .row-gap-sm--2 {
-      row-gap: -0.5rem;
-    }
-    .row-gap-sm--1 {
-      row-gap: -0.25rem;
-    }
     .row-gap-sm-0 {
       row-gap: 0;
     }
     .row-gap-sm-5 {
       row-gap: 3rem;
     }
-    .column-gap-sm--2 {
-      -moz-column-gap: -0.5rem;
-      column-gap: -0.5rem;
-    }
-    .column-gap-sm--1 {
-      -moz-column-gap: -0.25rem;
-      column-gap: -0.25rem;
-    }
     .column-gap-sm-0 {
       -moz-column-gap: 0;
       column-gap: 0;
     .place-items-md-stretch {
       place-items: stretch;
     }
+    .grid-cols-md-2 {
+      grid-template-columns: repeat(2, 1fr);
+    }
     .grid-cols-md-3 {
-      --bs-columns: 3;
+      grid-template-columns: repeat(3, 1fr);
     }
     .grid-cols-md-4 {
-      --bs-columns: 4;
+      grid-template-columns: repeat(4, 1fr);
     }
     .grid-cols-md-6 {
-      --bs-columns: 6;
+      grid-template-columns: repeat(6, 1fr);
     }
     .grid-cols-md-fill {
       grid-column: 1 / -1;
     .order-md-last {
       order: 6;
     }
-    .m-md--2 {
-      margin: -0.5rem;
-    }
-    .m-md--1 {
-      margin: -0.25rem;
-    }
     .m-md-0 {
       margin: 0;
     }
     .m-md-auto {
       margin: auto;
     }
-    .mx-md--2 {
-      margin-inline: -0.5rem;
-    }
-    .mx-md--1 {
-      margin-inline: -0.25rem;
-    }
     .mx-md-0 {
       margin-inline: 0;
     }
     .mx-md-auto {
       margin-inline: auto;
     }
-    .my-md--2 {
-      margin-block: -0.5rem;
-    }
-    .my-md--1 {
-      margin-block: -0.25rem;
-    }
     .my-md-0 {
       margin-block: 0;
     }
     .my-md-auto {
       margin-block: auto;
     }
-    .mt-md--2 {
-      margin-block-start: -0.5rem;
-    }
-    .mt-md--1 {
-      margin-block-start: -0.25rem;
-    }
     .mt-md-0 {
       margin-block-start: 0;
     }
     .mt-md-auto {
       margin-block-start: auto;
     }
-    .me-md--2 {
-      margin-inline-end: -0.5rem;
-    }
-    .me-md--1 {
-      margin-inline-end: -0.25rem;
-    }
     .me-md-0 {
       margin-inline-end: 0;
     }
     .me-md-auto {
       margin-inline-end: auto;
     }
-    .mb-md--2 {
-      margin-block-end: -0.5rem;
-    }
-    .mb-md--1 {
-      margin-block-end: -0.25rem;
-    }
     .mb-md-0 {
       margin-block-end: 0;
     }
     .mb-md-auto {
       margin-block-end: auto;
     }
-    .ms-md--2 {
-      margin-inline-start: -0.5rem;
-    }
-    .ms-md--1 {
-      margin-inline-start: -0.25rem;
-    }
     .ms-md-0 {
       margin-inline-start: 0;
     }
     .ms-md-5 {
       margin-inline-start: 3rem;
     }
-    .ms-md-auto {
-      margin-inline-start: auto;
+    .ms-md--1 {
+      margin-inline-start: -0.25rem;
     }
-    .p-md--2 {
-      padding: -0.5rem;
+    .ms-md--2 {
+      margin-inline-start: -0.5rem;
     }
-    .p-md--1 {
-      padding: -0.25rem;
+    .ms-md-auto {
+      margin-inline-start: auto;
     }
     .p-md-0 {
       padding: 0;
     .p-md-5 {
       padding: 3rem;
     }
-    .px-md--2 {
-      padding-inline: -0.5rem;
-    }
-    .px-md--1 {
-      padding-inline: -0.25rem;
-    }
     .px-md-0 {
       padding-inline: 0;
     }
     .px-md-5 {
       padding-inline: 3rem;
     }
-    .py-md--2 {
-      padding-block: -0.5rem;
-    }
-    .py-md--1 {
-      padding-block: -0.25rem;
-    }
     .py-md-0 {
       padding-block: 0;
     }
     .py-md-5 {
       padding-block: 3rem;
     }
-    .pt-md--2 {
-      padding-block-start: -0.5rem;
-    }
-    .pt-md--1 {
-      padding-block-start: -0.25rem;
-    }
     .pt-md-0 {
       padding-block-start: 0;
     }
     .pt-md-5 {
       padding-block-start: 3rem;
     }
-    .pe-md--2 {
-      padding-inline-end: -0.5rem;
-    }
-    .pe-md--1 {
-      padding-inline-end: -0.25rem;
-    }
     .pe-md-0 {
       padding-inline-end: 0;
     }
     .pe-md-5 {
       padding-inline-end: 3rem;
     }
-    .pb-md--2 {
-      padding-block-end: -0.5rem;
-    }
-    .pb-md--1 {
-      padding-block-end: -0.25rem;
-    }
     .pb-md-0 {
       padding-block-end: 0;
     }
     .pb-md-5 {
       padding-block-end: 3rem;
     }
-    .ps-md--2 {
-      padding-inline-start: -0.5rem;
-    }
-    .ps-md--1 {
-      padding-inline-start: -0.25rem;
-    }
     .ps-md-0 {
       padding-inline-start: 0;
     }
     .ps-md-5 {
       padding-inline-start: 3rem;
     }
-    .gap-md--2 {
-      gap: -0.5rem;
-    }
-    .gap-md--1 {
-      gap: -0.25rem;
-    }
     .gap-md-0 {
       gap: 0;
     }
     .gap-md-5 {
       gap: 3rem;
     }
-    .row-gap-md--2 {
-      row-gap: -0.5rem;
-    }
-    .row-gap-md--1 {
-      row-gap: -0.25rem;
-    }
     .row-gap-md-0 {
       row-gap: 0;
     }
     .row-gap-md-5 {
       row-gap: 3rem;
     }
-    .column-gap-md--2 {
-      -moz-column-gap: -0.5rem;
-      column-gap: -0.5rem;
-    }
-    .column-gap-md--1 {
-      -moz-column-gap: -0.25rem;
-      column-gap: -0.25rem;
-    }
     .column-gap-md-0 {
       -moz-column-gap: 0;
       column-gap: 0;
     .place-items-lg-stretch {
       place-items: stretch;
     }
+    .grid-cols-lg-2 {
+      grid-template-columns: repeat(2, 1fr);
+    }
     .grid-cols-lg-3 {
-      --bs-columns: 3;
+      grid-template-columns: repeat(3, 1fr);
     }
     .grid-cols-lg-4 {
-      --bs-columns: 4;
+      grid-template-columns: repeat(4, 1fr);
     }
     .grid-cols-lg-6 {
-      --bs-columns: 6;
+      grid-template-columns: repeat(6, 1fr);
     }
     .grid-cols-lg-fill {
       grid-column: 1 / -1;
     .order-lg-last {
       order: 6;
     }
-    .m-lg--2 {
-      margin: -0.5rem;
-    }
-    .m-lg--1 {
-      margin: -0.25rem;
-    }
     .m-lg-0 {
       margin: 0;
     }
     .m-lg-auto {
       margin: auto;
     }
-    .mx-lg--2 {
-      margin-inline: -0.5rem;
-    }
-    .mx-lg--1 {
-      margin-inline: -0.25rem;
-    }
     .mx-lg-0 {
       margin-inline: 0;
     }
     .mx-lg-auto {
       margin-inline: auto;
     }
-    .my-lg--2 {
-      margin-block: -0.5rem;
-    }
-    .my-lg--1 {
-      margin-block: -0.25rem;
-    }
     .my-lg-0 {
       margin-block: 0;
     }
     .my-lg-auto {
       margin-block: auto;
     }
-    .mt-lg--2 {
-      margin-block-start: -0.5rem;
-    }
-    .mt-lg--1 {
-      margin-block-start: -0.25rem;
-    }
     .mt-lg-0 {
       margin-block-start: 0;
     }
     .mt-lg-auto {
       margin-block-start: auto;
     }
-    .me-lg--2 {
-      margin-inline-end: -0.5rem;
-    }
-    .me-lg--1 {
-      margin-inline-end: -0.25rem;
-    }
     .me-lg-0 {
       margin-inline-end: 0;
     }
     .me-lg-auto {
       margin-inline-end: auto;
     }
-    .mb-lg--2 {
-      margin-block-end: -0.5rem;
-    }
-    .mb-lg--1 {
-      margin-block-end: -0.25rem;
-    }
     .mb-lg-0 {
       margin-block-end: 0;
     }
     .mb-lg-auto {
       margin-block-end: auto;
     }
-    .ms-lg--2 {
-      margin-inline-start: -0.5rem;
-    }
-    .ms-lg--1 {
-      margin-inline-start: -0.25rem;
-    }
     .ms-lg-0 {
       margin-inline-start: 0;
     }
     .ms-lg-5 {
       margin-inline-start: 3rem;
     }
-    .ms-lg-auto {
-      margin-inline-start: auto;
+    .ms-lg--1 {
+      margin-inline-start: -0.25rem;
     }
-    .p-lg--2 {
-      padding: -0.5rem;
+    .ms-lg--2 {
+      margin-inline-start: -0.5rem;
     }
-    .p-lg--1 {
-      padding: -0.25rem;
+    .ms-lg-auto {
+      margin-inline-start: auto;
     }
     .p-lg-0 {
       padding: 0;
     .p-lg-5 {
       padding: 3rem;
     }
-    .px-lg--2 {
-      padding-inline: -0.5rem;
-    }
-    .px-lg--1 {
-      padding-inline: -0.25rem;
-    }
     .px-lg-0 {
       padding-inline: 0;
     }
     .px-lg-5 {
       padding-inline: 3rem;
     }
-    .py-lg--2 {
-      padding-block: -0.5rem;
-    }
-    .py-lg--1 {
-      padding-block: -0.25rem;
-    }
     .py-lg-0 {
       padding-block: 0;
     }
     .py-lg-5 {
       padding-block: 3rem;
     }
-    .pt-lg--2 {
-      padding-block-start: -0.5rem;
-    }
-    .pt-lg--1 {
-      padding-block-start: -0.25rem;
-    }
     .pt-lg-0 {
       padding-block-start: 0;
     }
     .pt-lg-5 {
       padding-block-start: 3rem;
     }
-    .pe-lg--2 {
-      padding-inline-end: -0.5rem;
-    }
-    .pe-lg--1 {
-      padding-inline-end: -0.25rem;
-    }
     .pe-lg-0 {
       padding-inline-end: 0;
     }
     .pe-lg-5 {
       padding-inline-end: 3rem;
     }
-    .pb-lg--2 {
-      padding-block-end: -0.5rem;
-    }
-    .pb-lg--1 {
-      padding-block-end: -0.25rem;
-    }
     .pb-lg-0 {
       padding-block-end: 0;
     }
     .pb-lg-5 {
       padding-block-end: 3rem;
     }
-    .ps-lg--2 {
-      padding-inline-start: -0.5rem;
-    }
-    .ps-lg--1 {
-      padding-inline-start: -0.25rem;
-    }
     .ps-lg-0 {
       padding-inline-start: 0;
     }
     .ps-lg-5 {
       padding-inline-start: 3rem;
     }
-    .gap-lg--2 {
-      gap: -0.5rem;
-    }
-    .gap-lg--1 {
-      gap: -0.25rem;
-    }
     .gap-lg-0 {
       gap: 0;
     }
     .gap-lg-5 {
       gap: 3rem;
     }
-    .row-gap-lg--2 {
-      row-gap: -0.5rem;
-    }
-    .row-gap-lg--1 {
-      row-gap: -0.25rem;
-    }
     .row-gap-lg-0 {
       row-gap: 0;
     }
     .row-gap-lg-5 {
       row-gap: 3rem;
     }
-    .column-gap-lg--2 {
-      -moz-column-gap: -0.5rem;
-      column-gap: -0.5rem;
-    }
-    .column-gap-lg--1 {
-      -moz-column-gap: -0.25rem;
-      column-gap: -0.25rem;
-    }
     .column-gap-lg-0 {
       -moz-column-gap: 0;
       column-gap: 0;
     .place-items-xl-stretch {
       place-items: stretch;
     }
+    .grid-cols-xl-2 {
+      grid-template-columns: repeat(2, 1fr);
+    }
     .grid-cols-xl-3 {
-      --bs-columns: 3;
+      grid-template-columns: repeat(3, 1fr);
     }
     .grid-cols-xl-4 {
-      --bs-columns: 4;
+      grid-template-columns: repeat(4, 1fr);
     }
     .grid-cols-xl-6 {
-      --bs-columns: 6;
+      grid-template-columns: repeat(6, 1fr);
     }
     .grid-cols-xl-fill {
       grid-column: 1 / -1;
     .order-xl-last {
       order: 6;
     }
-    .m-xl--2 {
-      margin: -0.5rem;
-    }
-    .m-xl--1 {
-      margin: -0.25rem;
-    }
     .m-xl-0 {
       margin: 0;
     }
     .m-xl-auto {
       margin: auto;
     }
-    .mx-xl--2 {
-      margin-inline: -0.5rem;
-    }
-    .mx-xl--1 {
-      margin-inline: -0.25rem;
-    }
     .mx-xl-0 {
       margin-inline: 0;
     }
     .mx-xl-auto {
       margin-inline: auto;
     }
-    .my-xl--2 {
-      margin-block: -0.5rem;
-    }
-    .my-xl--1 {
-      margin-block: -0.25rem;
-    }
     .my-xl-0 {
       margin-block: 0;
     }
     .my-xl-auto {
       margin-block: auto;
     }
-    .mt-xl--2 {
-      margin-block-start: -0.5rem;
-    }
-    .mt-xl--1 {
-      margin-block-start: -0.25rem;
-    }
     .mt-xl-0 {
       margin-block-start: 0;
     }
     .mt-xl-auto {
       margin-block-start: auto;
     }
-    .me-xl--2 {
-      margin-inline-end: -0.5rem;
-    }
-    .me-xl--1 {
-      margin-inline-end: -0.25rem;
-    }
     .me-xl-0 {
       margin-inline-end: 0;
     }
     .me-xl-auto {
       margin-inline-end: auto;
     }
-    .mb-xl--2 {
-      margin-block-end: -0.5rem;
-    }
-    .mb-xl--1 {
-      margin-block-end: -0.25rem;
-    }
     .mb-xl-0 {
       margin-block-end: 0;
     }
     .mb-xl-auto {
       margin-block-end: auto;
     }
-    .ms-xl--2 {
-      margin-inline-start: -0.5rem;
-    }
-    .ms-xl--1 {
-      margin-inline-start: -0.25rem;
-    }
     .ms-xl-0 {
       margin-inline-start: 0;
     }
     .ms-xl-5 {
       margin-inline-start: 3rem;
     }
-    .ms-xl-auto {
-      margin-inline-start: auto;
+    .ms-xl--1 {
+      margin-inline-start: -0.25rem;
     }
-    .p-xl--2 {
-      padding: -0.5rem;
+    .ms-xl--2 {
+      margin-inline-start: -0.5rem;
     }
-    .p-xl--1 {
-      padding: -0.25rem;
+    .ms-xl-auto {
+      margin-inline-start: auto;
     }
     .p-xl-0 {
       padding: 0;
     .p-xl-5 {
       padding: 3rem;
     }
-    .px-xl--2 {
-      padding-inline: -0.5rem;
-    }
-    .px-xl--1 {
-      padding-inline: -0.25rem;
-    }
     .px-xl-0 {
       padding-inline: 0;
     }
     .px-xl-5 {
       padding-inline: 3rem;
     }
-    .py-xl--2 {
-      padding-block: -0.5rem;
-    }
-    .py-xl--1 {
-      padding-block: -0.25rem;
-    }
     .py-xl-0 {
       padding-block: 0;
     }
     .py-xl-5 {
       padding-block: 3rem;
     }
-    .pt-xl--2 {
-      padding-block-start: -0.5rem;
-    }
-    .pt-xl--1 {
-      padding-block-start: -0.25rem;
-    }
     .pt-xl-0 {
       padding-block-start: 0;
     }
     .pt-xl-5 {
       padding-block-start: 3rem;
     }
-    .pe-xl--2 {
-      padding-inline-end: -0.5rem;
-    }
-    .pe-xl--1 {
-      padding-inline-end: -0.25rem;
-    }
     .pe-xl-0 {
       padding-inline-end: 0;
     }
     .pe-xl-5 {
       padding-inline-end: 3rem;
     }
-    .pb-xl--2 {
-      padding-block-end: -0.5rem;
-    }
-    .pb-xl--1 {
-      padding-block-end: -0.25rem;
-    }
     .pb-xl-0 {
       padding-block-end: 0;
     }
     .pb-xl-5 {
       padding-block-end: 3rem;
     }
-    .ps-xl--2 {
-      padding-inline-start: -0.5rem;
-    }
-    .ps-xl--1 {
-      padding-inline-start: -0.25rem;
-    }
     .ps-xl-0 {
       padding-inline-start: 0;
     }
     .ps-xl-5 {
       padding-inline-start: 3rem;
     }
-    .gap-xl--2 {
-      gap: -0.5rem;
-    }
-    .gap-xl--1 {
-      gap: -0.25rem;
-    }
     .gap-xl-0 {
       gap: 0;
     }
     .gap-xl-5 {
       gap: 3rem;
     }
-    .row-gap-xl--2 {
-      row-gap: -0.5rem;
-    }
-    .row-gap-xl--1 {
-      row-gap: -0.25rem;
-    }
     .row-gap-xl-0 {
       row-gap: 0;
     }
     .row-gap-xl-5 {
       row-gap: 3rem;
     }
-    .column-gap-xl--2 {
-      -moz-column-gap: -0.5rem;
-      column-gap: -0.5rem;
-    }
-    .column-gap-xl--1 {
-      -moz-column-gap: -0.25rem;
-      column-gap: -0.25rem;
-    }
     .column-gap-xl-0 {
       -moz-column-gap: 0;
       column-gap: 0;
     .place-items-2xl-stretch {
       place-items: stretch;
     }
+    .grid-cols-2xl-2 {
+      grid-template-columns: repeat(2, 1fr);
+    }
     .grid-cols-2xl-3 {
-      --bs-columns: 3;
+      grid-template-columns: repeat(3, 1fr);
     }
     .grid-cols-2xl-4 {
-      --bs-columns: 4;
+      grid-template-columns: repeat(4, 1fr);
     }
     .grid-cols-2xl-6 {
-      --bs-columns: 6;
+      grid-template-columns: repeat(6, 1fr);
     }
     .grid-cols-2xl-fill {
       grid-column: 1 / -1;
     .order-2xl-last {
       order: 6;
     }
-    .m-2xl--2 {
-      margin: -0.5rem;
-    }
-    .m-2xl--1 {
-      margin: -0.25rem;
-    }
     .m-2xl-0 {
       margin: 0;
     }
     .m-2xl-auto {
       margin: auto;
     }
-    .mx-2xl--2 {
-      margin-inline: -0.5rem;
-    }
-    .mx-2xl--1 {
-      margin-inline: -0.25rem;
-    }
     .mx-2xl-0 {
       margin-inline: 0;
     }
     .mx-2xl-auto {
       margin-inline: auto;
     }
-    .my-2xl--2 {
-      margin-block: -0.5rem;
-    }
-    .my-2xl--1 {
-      margin-block: -0.25rem;
-    }
     .my-2xl-0 {
       margin-block: 0;
     }
     .my-2xl-auto {
       margin-block: auto;
     }
-    .mt-2xl--2 {
-      margin-block-start: -0.5rem;
-    }
-    .mt-2xl--1 {
-      margin-block-start: -0.25rem;
-    }
     .mt-2xl-0 {
       margin-block-start: 0;
     }
     .mt-2xl-auto {
       margin-block-start: auto;
     }
-    .me-2xl--2 {
-      margin-inline-end: -0.5rem;
-    }
-    .me-2xl--1 {
-      margin-inline-end: -0.25rem;
-    }
     .me-2xl-0 {
       margin-inline-end: 0;
     }
     .me-2xl-auto {
       margin-inline-end: auto;
     }
-    .mb-2xl--2 {
-      margin-block-end: -0.5rem;
-    }
-    .mb-2xl--1 {
-      margin-block-end: -0.25rem;
-    }
     .mb-2xl-0 {
       margin-block-end: 0;
     }
     .mb-2xl-auto {
       margin-block-end: auto;
     }
-    .ms-2xl--2 {
-      margin-inline-start: -0.5rem;
-    }
-    .ms-2xl--1 {
-      margin-inline-start: -0.25rem;
-    }
     .ms-2xl-0 {
       margin-inline-start: 0;
     }
     .ms-2xl-5 {
       margin-inline-start: 3rem;
     }
-    .ms-2xl-auto {
-      margin-inline-start: auto;
+    .ms-2xl--1 {
+      margin-inline-start: -0.25rem;
     }
-    .p-2xl--2 {
-      padding: -0.5rem;
+    .ms-2xl--2 {
+      margin-inline-start: -0.5rem;
     }
-    .p-2xl--1 {
-      padding: -0.25rem;
+    .ms-2xl-auto {
+      margin-inline-start: auto;
     }
     .p-2xl-0 {
       padding: 0;
     .p-2xl-5 {
       padding: 3rem;
     }
-    .px-2xl--2 {
-      padding-inline: -0.5rem;
-    }
-    .px-2xl--1 {
-      padding-inline: -0.25rem;
-    }
     .px-2xl-0 {
       padding-inline: 0;
     }
     .px-2xl-5 {
       padding-inline: 3rem;
     }
-    .py-2xl--2 {
-      padding-block: -0.5rem;
-    }
-    .py-2xl--1 {
-      padding-block: -0.25rem;
-    }
     .py-2xl-0 {
       padding-block: 0;
     }
     .py-2xl-5 {
       padding-block: 3rem;
     }
-    .pt-2xl--2 {
-      padding-block-start: -0.5rem;
-    }
-    .pt-2xl--1 {
-      padding-block-start: -0.25rem;
-    }
     .pt-2xl-0 {
       padding-block-start: 0;
     }
     .pt-2xl-5 {
       padding-block-start: 3rem;
     }
-    .pe-2xl--2 {
-      padding-inline-end: -0.5rem;
-    }
-    .pe-2xl--1 {
-      padding-inline-end: -0.25rem;
-    }
     .pe-2xl-0 {
       padding-inline-end: 0;
     }
     .pe-2xl-5 {
       padding-inline-end: 3rem;
     }
-    .pb-2xl--2 {
-      padding-block-end: -0.5rem;
-    }
-    .pb-2xl--1 {
-      padding-block-end: -0.25rem;
-    }
     .pb-2xl-0 {
       padding-block-end: 0;
     }
     .pb-2xl-5 {
       padding-block-end: 3rem;
     }
-    .ps-2xl--2 {
-      padding-inline-start: -0.5rem;
-    }
-    .ps-2xl--1 {
-      padding-inline-start: -0.25rem;
-    }
     .ps-2xl-0 {
       padding-inline-start: 0;
     }
     .ps-2xl-5 {
       padding-inline-start: 3rem;
     }
-    .gap-2xl--2 {
-      gap: -0.5rem;
-    }
-    .gap-2xl--1 {
-      gap: -0.25rem;
-    }
     .gap-2xl-0 {
       gap: 0;
     }
     .gap-2xl-5 {
       gap: 3rem;
     }
-    .row-gap-2xl--2 {
-      row-gap: -0.5rem;
-    }
-    .row-gap-2xl--1 {
-      row-gap: -0.25rem;
-    }
     .row-gap-2xl-0 {
       row-gap: 0;
     }
     .row-gap-2xl-5 {
       row-gap: 3rem;
     }
-    .column-gap-2xl--2 {
-      -moz-column-gap: -0.5rem;
-      column-gap: -0.5rem;
-    }
-    .column-gap-2xl--1 {
-      -moz-column-gap: -0.25rem;
-      column-gap: -0.25rem;
-    }
     .column-gap-2xl-0 {
       -moz-column-gap: 0;
       column-gap: 0;
index 7de66ae849c7be2875bc47022a9841ffaa049a65..2ec1080a1248fc893dde677a98296e069f946c38 100644 (file)
@@ -1 +1 @@
-{"version":3,"sources":["bootstrap.css","../../scss/_banner.scss","../../scss/_colors.scss","../../scss/mixins/_tokens.scss","../../scss/_root.scss","../../scss/content/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_border-radius.scss","../../scss/content/_type.scss","../../scss/mixins/_lists.scss","../../scss/content/_tables.scss","../../scss/_config.scss","../../scss/layout/_breakpoints.scss","../../scss/content/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_box-shadow.scss","../../scss/content/_prose.scss","../../scss/mixins/_transition.scss","../../scss/layout/_containers.scss","../../scss/layout/_grid.scss","../../scss/mixins/_grid.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_focus-ring.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_check.scss","../../scss/forms/_radio.scss","../../scss/forms/_switch.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/forms/_strength.scss","../../scss/forms/_otp-input.scss","../../scss/forms/_form-adorn.scss","../../scss/forms/_chip-input.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/forms/_validation.scss","../../scss/forms/_form-variables.scss","../../scss/buttons/_button.scss","../../scss/buttons/_button-group.scss","../../scss/buttons/_close.scss","../../scss/_accordion.scss","../../scss/_alert.scss","../../scss/_avatar.scss","../../scss/_badge.scss","../../scss/_breadcrumb.scss","../../scss/_chip.scss","../../scss/_card.scss","../../scss/_carousel.scss","../../scss/mixins/_color-mode.scss","../../scss/_datepicker.scss","../../scss/_dialog.scss","../../scss/_dropdown.scss","../../scss/_list-group.scss","../../scss/_nav.scss","../../scss/_nav-overflow.scss","../../scss/_navbar.scss","../../scss/_offcanvas.scss","../../scss/mixins/_backdrop.scss","../../scss/_pagination.scss","../../scss/_placeholder.scss","../../scss/_popover.scss","../../scss/_progress.scss","../../scss/_spinner.scss","../../scss/_stepper.scss","../../scss/_toasts.scss","../../scss/_transitions.scss","../../scss/helpers/_focus-ring.scss","../../scss/helpers/_icon-link.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_theme-colors.scss","../../scss/_theme.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/utilities/_api.scss","../../scss/mixins/_utilities.scss"],"names":[],"mappings":"AAAA,gBAAgB;ACEhB;;;;GAAA;ACiGA;EC9FI,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,qCAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,uCAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,uCAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,uCAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,mCAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,mCAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,sCAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,oCAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,sCAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,qCAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,sCAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,qCAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,qCAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,qCAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,qCAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,uCAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;AHkNJ;;AI7MA,0GAAA;AAqLA;ED1LI,gBAAA;EAAA,gBAAA;EAAA,+HAAA;EAAA,yBAAA;EAAA,0BAAA;EAAA,2BAAA;EAAA,uBAAA;EAAA,yDAAA;EAAA,0DAAA;EAAA,sDAAA;EAAA,yDAAA;EAAA,yDAAA;EAAA,iDAAA;EAAA,yDAAA;EAAA,yBAAA;EAAA,wBAAA;EAAA,wBAAA;EAAA,wBAAA;EAAA,iCAAA;EAAA,kCAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,uBAAA;EAAA,iCAAA;EAAA,2BAAA;EAAA,4BAAA;EAAA,4BAAA;EAAA,8BAAA;EAAA,0BAAA;EAAA,+BAAA;EAAA,gCAAA;EAAA,6CAAA;EAAA,0BAAA;EAAA,0BAAA;EAAA,2BAAA;EAAA,4CAAA;EAAA,2EAAA;EAAA,+BAAA;EAAA,0EAAA;EAAA,oGAAA;EAAA,wBAAA;EAAA,+BAAA;EAAA,sBAAA;EAAA,wBAAA;EAAA,8GAAA;EAAA,sFAAA;EAAA,0BAAA;EAAA,+BAAA;EAAA,6BAAA;EAAA,8BAAA;EAAA,2BAAA;EAAA,4BAAA;EAAA,8BAAA;EAAA,kDAAA;EAAA,2DAAA;EAAA,oDAAA;EAAA,2DAAA;EAAA,iBAAA;EAAA,0BAAA;EAAA,2BAAA;EAAA,mDAAA;EAAA,4EAAA;EAAA,+CAAA;EAAA,+DAAA;EAAA,8CAAA;EAAA,6DAAA;EAAA,wCAAA;EAAA,mCAAA;EAAA,oCAAA;EAAA,oCAAA;EAAA,mCAAA;EAAA,kCAAA;EAAA,iCAAA;EAAA,kDAAA;EAAA,sDAAA;EAAA,qDAAA;EAAA,oCAAA;EAAA,qCAAA;EAAA,mCAAA;EAAA,mDAAA;EAAA,oCAAA;EAAA,2DAAA;EAAA,kCAAA;EAAA,oCAAA;EAAA,qCAAA;EAAA,mDAAA;EAAA,uDAAA;EAAA,2DAAA;EAAA,qCAAA;EAAA,mCAAA;EAAA,iCAAA;EAAA,mDAAA;EAAA,uDAAA;EAAA,2DAAA;EAAA,6CAAA;EAAA,oDAAA;EAAA,8CAAA;EAAA,qDAAA;EAAA,qCAAA;EAAA,qEAAA;EAAA,8EAAA;EAAA,mCAAA;EAAA,0EAAA;EAAA,yEAAA;EAAA,uEAAA;EAAA,mKAAA;EAAA,sCAAA;EAAA,sCAAA;EAAA,mHAAA;EAAA,iFAAA;EAAA,oCAAA;EAAA,6EAAA;EAAA,4EAAA;EAAA,0EAAA;EAAA,sKAAA;EAAA,qCAAA;EAAA,sCAAA;EAAA,uEAAA;EAAA,gFAAA;EAAA,oCAAA;EAAA,4EAAA;EAAA,2EAAA;EAAA,yEAAA;EAAA,qKAAA;EAAA,sCAAA;EAAA,mCAAA;EAAA,kEAAA;EAAA,2EAAA;EAAA,iCAAA;EAAA,uEAAA;EAAA,sEAAA;EAAA,oEAAA;EAAA,gKAAA;EAAA,qCAAA;EAAA,uCAAA;EAAA,yEAAA;EAAA,kFAAA;EAAA,qCAAA;EAAA,8EAAA;EAAA,6EAAA;EAAA,2EAAA;EAAA,uKAAA;EAAA,yCAAA;EAAA,kCAAA;EAAA,kEAAA;EAAA,2EAAA;EAAA,gCAAA;EAAA,uEAAA;EAAA,sEAAA;EAAA,oEAAA;EAAA,gKAAA;EAAA,sCAAA;EAAA,qCAAA;EAAA,qEAAA;EAAA,2EAAA;EAAA,mEAAA;EAAA,0EAAA;EAAA,yEAAA;EAAA,uEAAA;EAAA,uHAAA;EAAA,sEAAA;EAAA,uCAAA;EAAA,uEAAA;EAAA,gFAAA;EAAA,qEAAA;EAAA,4EAAA;EAAA,2EAAA;EAAA,yEAAA;EAAA,yHAAA;EAAA,wEAAA;EAAA,6DAAA;EAAA,6DAAA;EAAA,6DAAA;EAAA,6DAAA;EAAA,6DAAA;EAAA,8BAAA;EAAA,8BAAA;EAAA,gCAAA;EAAA,wBAAA;EAAA,gEAAA;EAAA,6DAAA;EAAA,6DAAA;EAAA,6DAAA;EAAA,6DAAA;EAAA,8BAAA;EAAA,8BAAA;EAAA,wBAAA;EAAA,iCAAA;EAAA,oEAAA;EAAA,qEAAA;EAAA,sEAAA;EAAA,0EAAA;EAAA,kCAAA;EAAA,kCAAA;EAAA,qBAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,0BAAA;EAAA,0BAAA;EAAA,2BAAA;EC6LF,wBAAA;AJmOF;;AIhOA;EACE,kBAAA;AJmOF;;AIhOA;EACE,mBAAA;AJmOF;;AKrYA;EAYE;;;IAGE,sBAAA;EL6XF;EKrXA;IAEE,oCAAA;ELsXF;EKnXI;IALJ;MAMM,uBAAA;ILsXJ;EACF;EK1WA;IACE,SAAA;IACA,uCAAA;IACA,mCAAA;IACA,uCAAA;IACA,uCAAA;IACA,wBAAA;IACA,qCAAA;IACA,mCAAA;IACA,8BAAA;IACA,6CAAA;EL4WF;EKxWA;IACE,iDAAA;IACA,SAAA;IACA,0EAAA;EL0WF;EKjWA;;;;;;;IACE,aAAA;IACA,qBC8F0B;ID3F1B,gBC8F0B;ID7F1B,gBC8F0B;ID7F1B,8BAAA;ELuWF;EKpWA;;IAGE,kCCyBW;EN4Ub;EKlWA;;IAGE,kCCoBW;EN+Ub;EKhWA;;IAGE,iCCeW;ENkVb;EK9VA;;IAGE,iCCUW;ENqVb;EK5VA;;IAGE,iCCKW;ENwVb;EK1VA;;IAGE,iCAAA;EL2VF;EKnVA;IACE,aAAA;IACA,mBC5EwB;ENia1B;EK5UA;IACE,yCAAA;IAAA,iCAAA;IACA,YAAA;IACA,sCAAA;IAAA,8BAAA;EL8UF;EKzUA;IACE,mBAAA;IACA,kBAAA;IACA,oBAAA;EL2UF;EKtUA;;IAEE,0BAAA;ELwUF;EKrUA;;;IAGE,aAAA;IACA,mBAAA;ELuUF;EKpUA;;;;IAIE,gBAAA;ELsUF;EKnUA;IACE,gBCrE0B;EN0Y5B;EKhUA;IACE,sBAAA;IACA,qBAAA;ELkUF;EK7TA;IACE,gBAAA;EL+TF;EK9TE;IACE,eAAA;ELgUJ;EKxTA;;IAEE,mBC7F0B;ENuZ5B;EKnTA;;IAEE,2CAAA;ELqTF;EKhTA;;IFhPE,2BAAA;IAAA,kCAAA;IAAA,oEAAA;IEmPA,+BAAA;IACA,2BAAA;IACA,mCAAA;ELoTF;EK5SA;;IAEE,kBAAA;IACA,8CAAA;IACA,cAAA;IACA,wBAAA;EL8SF;EK3SA;IAAM,eAAA;EL8SN;EK7SA;IAAM,WAAA;ELgTN;EK5SA;IACE,iDAAA;IACA,kDAAA;IAAA,0CAAA;IACA,4BC/MsC;EN6fxC;EK5SE;IAGE,gEAAA;IACA,mFAAA;IAAA,2EAAA;EL4SJ;EKlSE;IAEE,cAAA;IACA,qBAAA;ELmSJ;EK7RA;;;;IAIE,gCAAA;IACA,cAAA;EL+RF;EKxRA;IACE,cAAA;IACA,aAAA;IACA,mBAAA;IACA,cAAA;IACA,mCAAA;IACA,oCAAA;EL0RF;EKvRE;IACE,kBAAA;IACA,cAAA;IACA,kBAAA;ELyRJ;EKrRA;IACE,mCAAA;IACA,2BAAA;IACA,qBAAA;ELuRF;EKpRE;IACE,cAAA;ELsRJ;EKlRA;IF7UE,4BAAA;IAAA,2BAAA;IAAA,0CAAA;IAAA,iCAAA;IAAA,2BAAA;IAAA,kDAAA;IE+UA,wDAAA;IACA,kCAAA;IACA,0BAAA;IACA,kCAAA;IE/TA,0CAAA;EPylBF;EKvRE;IACE,UAAA;IACA,cAAA;IACA,oBAAA;ELyRJ;EKjRA;IACE,gBAAA;ELmRF;EK9QA;;IAEE,sBAAA;ELgRF;EKzQA;IACE,oBAAA;IACA,yBAAA;EL2QF;EKxQA;IAIE,qBAAA;IACA,qBAAA;IACA,iBAAA;ELuQF;EKhQA;IAEE,mBAAA;IACA,gCAAA;ELiQF;EK9PA;;;;;;IAME,qBAAA;IACA,mBAAA;IACA,eAAA;ELgQF;EKzPA;IACE,qBAAA;EL2PF;EKrPA;IAEE,gBAAA;ELsPF;EK9OA;IACE,UAAA;ELgPF;EK3OA;;;;;IAKE,SAAA;IACA,oBAAA;IACA,kBAAA;IACA,oBAAA;EL6OF;EKzOA;;IAEE,oBAAA;EL2OF;EKtOA;IACE,eAAA;ELwOF;EKrOA;IAGE,iBAAA;ELqOF;EKlOE;IACE,UAAA;ELoOJ;EK7NA;IACE,wBAAA;EL+NF;EKvNA;;;;IAIE,0BAAA;ELyNF;EKtNI;;;;IACE,eAAA;EL2NN;EKpNA;IACE,UAAA;IACA,kBAAA;ELsNF;EKjNA;IACE,gBAAA;ELmNF;EKzMA;IACE,YAAA;IACA,UAAA;IACA,SAAA;IACA,SAAA;EL2MF;EKnMA;IACE,mBAAA;IACA,WAAA;IACA,UAAA;IACA,qBC3T0B;ID4T1B,iBC3T0B;ID6T1B,oBAAA;ELoMF;EKlME;IACE,mBAAA;ELoMJ;EK7LA;;;;;;;;;;;IAWE,UAAA;EL+LF;EK5LA;IACE,YAAA;EL8LF;EKrLA;IACE,6BAAA;IACA,oBAAA;ELuLF;EKpLE;IACE,eAAA;IACA,oBAAA;ELsLJ;EK/KA;;;;IAIE,cAAA;ELiLF;EK5KA;IACE,wBAAA;EL8KF;EKzKA;IACE,UAAA;EL2KF;EKrKA;IACE,aAAA;IACA,0BAAA;ELuKF;EKlKA;IACE,qBAAA;ELoKF;EK/JA;IACE,SAAA;ELiKF;EK1JA;IACE,kBAAA;IACA,eAAA;EL4JF;EKrJA;IACE,wBAAA;ELuJF;EKhJA;IACE,wBAAA;ELkJF;AACF;AQ7vBA;EAKE;ICxBA,uBAAA;IACA,gBAAA;EToxBA;EQxvBA;IC7BA,uBAAA;IACA,gBAAA;ETwxBA;EQzvBA;IACE,qBAAA;ER2vBF;EQzvBE;IACE,oEAAA;ER2vBJ;EQlvBA;IACE,iEAAA;IACA,yBAAA;ERovBF;EQhvBA;ILlDE,+CAAA;IAAA,2CAAA;IAAA,8BAAA;IAAA,iDAAA;IAAA,qCAAA;IAAA,oDAAA;IAAA,wDAAA;IAAA,4CAAA;IKoDA,aAAA;IACA,sBAAA;IACA,6BAAA;IACA,oDAAA;IACA,4CAAA;IACA,yCAAA;IACA,8FAAA;ERyvBF;EQvvBE;IACE,gBAAA;ERyvBJ;EQnvBE;IACE,gBAAA;ERqvBJ;EQjvBA;IACE,gDAAA;IACA,wCAAA;ERmvBF;EQjvBE;IACE,aAAA;ERmvBJ;AACF;AUzxBA;EACE;IPzCE,iCAAA;IAAA,iCAAA;IAAA,mCAAA;IAAA,mCAAA;IAAA,gCAAA;IAAA,iCAAA;IAAA,+CAAA;IAAA,+CAAA;IAAA,8CAAA;IAAA,+CAAA;IAAA,kCAAA;IAAA,+GAAA;IAAA,8CAAA;IAAA,gCAAA;IAAA,6GAAA;IAAA,6CAAA;IAAA,iCAAA;IAAA,2GAAA;IO6CA,8BAAA;IACA,2BAAA;IACA,+BAAA;IACA,4BAAA;IAGA,WAAA;IACA,mBC3BK;ID4BL,mDAAA;IACA,kEAAA;EVwyBF;EUjyBE;IACE,sEAAA;IAEA,2GAAA;IACA,+DAAA;IACA,oDAAA;IACA,sIAAA;EVkyBJ;EU/xBE;IACE,uBAAA;EViyBJ;EU9xBE;IACE,sBAAA;EVgyBJ;EU5xBA;IACE,sGAAA;EV8xBF;EUvxBA;IACE,iBAAA;EVyxBF;EUhxBE;IACE,iCAAA;IACA,iCAAA;EVkxBJ;EUpwBE;IACE,4CAAA;EVswBJ;EUnwBI;IACE,4CAAA;EVqwBN;EU9vBE;IACE,yBAAA;EVgwBJ;EU7vBE;IACE,2BAAA;EV+vBJ;EUrvBE;IACE,0EAAA;IACA,kIAAA;EVuvBJ;EUjvBE;IACE,0EAAA;IACA,kIAAA;EVmvBJ;EU3uBA;IACE,0EAAA;IACA,kIAAA;EV6uBF;EUruBE;IACE,yEAAA;IACA,iIAAA;EVuuBJ;EU1tBI;IACE,gBAAA;IACA,iCAAA;EV4tBN;EYpyBE;IFsEE;MACE,gBAAA;MACA,iCAAA;IViuBJ;EACF;EY1yBE;IFsEE;MACE,gBAAA;MACA,iCAAA;IVuuBJ;EACF;EYhzBE;IFsEE;MACE,gBAAA;MACA,iCAAA;IV6uBJ;EACF;EYtzBE;IFsEE;MACE,gBAAA;MACA,iCAAA;IVmvBJ;EACF;EY5zBE;IFsEE;MACE,gBAAA;MACA,iCAAA;IVyvBJ;EACF;AACF;Aap5BA;EAQE;IClCA,eAAA;IAGA,YAAA;Edg7BA;Ea74BA;IV5CE,+BAAA;IAAA,oCAAA;IAAA,mDAAA;IAAA,mDAAA;IAAA,qDAAA;IAAA,kDAAA;IU8CA,oCAAA;IACA,wCAAA;IACA,+EAAA;IN7BA,gDAAA;IQDE,0CARa;IDJjB,eAAA;IAGA,YAAA;Ed+7BA;Eah5BA;IVxDE,6CAAA;IAAA,qDAAA;IAAA,yCAAA;IU2DA,aAAA;IACA,sBAAA;IACA,yBAAA;Ebm5BF;Eah5BA;IACE,6CAAA;IACA,qCAAA;Ebk5BF;AACF;AgBt8BA;EACE;IbhBE,4BAAA;IAAA,sBAAA;IAAA,mEAAA;IakBA,kBAAA;IACA,aAAA;IACA,sBAAA;IACA,0BAAA;IACA,iBAAA;IACA,mBAAA;IACA,sCAAA;IACA,gBAAA;EhB08BF;EgBx8BE;IAXF;MAYI,8CAAA;MACA,sBAAA;IhB28BF;EACF;EgBz8BE;IACE,eAAA;EhB28BJ;EgBx8BE;IACE,8CAAA;EhB08BJ;EgBv8BE;IACE,2CAAA;EhBy8BJ;EgBt8BE;IACE,2CAAA;IACA,SAAA;IACA,0EAAA;EhBw8BJ;EgBr8BE;IACE,aAAA;IACA,+CAAA;IACA,gBAAA;IACA,iBAAA;EhBu8BJ;EgBr8BI;IACE,gBAAA;IACA,cAAA;EhBu8BN;EgBn8BE;IACE,8CAAA;EhBq8BJ;EgBl8BE;IACE,6CAAA;EhBo8BJ;EgBj8BE;IACE,iBAAA;IACA,gBAAA;EhBm8BJ;EgBj8BE;IACE,iBAAA;EhBm8BJ;EgBj8BE;IACE,gBAAA;EhBm8BJ;EgBj8BE;IACE,iBAAA;EhBm8BJ;EgBj8BE;IACE,kBAAA;EhBm8BJ;EgBj8BE;IACE,cAAA;EhBm8BJ;EgBh8BE;IACE,2BAAA;IACA,0BAAA;IACA,gFAAA;IACA,0BAAA;IChFA,kDDiFA;EhBk8BJ;EiB/gCI;IDwEF;MCvEI,gBAAA;IjBkhCJ;EACF;EgBr8BI;IACE,iDAAA;EhBu8BN;EgBn8BE;IACE,eAAA;EhBq8BJ;EgBl8BE;IACE,qDAAA;IACA,SAAA;IACA,qDAAA;EhBo8BJ;EgBj8BE;IACE,WAAA;IACA,iBAAA;IACA,yBAAA;EhBm8BJ;EgB/7BI;;IAEE,iBAAA;IACA,mBAAA;IACA,wCAAA;EhBi8BN;EgB77BE;IACE,gBAAA;EhB+7BJ;EgB57BE;IACE,eAAA;EhB87BJ;AACF;AkBxjCA;EAGI;;;;;;;IAVF,qBAAA;IACA,gBAAA;IACA,WAAA;IACA,8CAAA;IACA,mBAAA;ElBykCA;EY7+BE;IMtEI;MACE,gBPyDa;IX6/BnB;EACF;EYl/BE;IMtEI;MACE,gBPyDa;IXkgCnB;EACF;EYv/BE;IMtEI;MACE,gBPyDa;IXugCnB;EACF;EY5/BE;IMtEI;MACE,iBPyDa;IX4gCnB;EACF;EYjgCE;IMtEI;MACE,iBPyDa;IXihCnB;EACF;AACF;AmB1mCA;EAEI;ICGF,qBAAA;IACA,gBAAA;IACA,aAAA;IACA,eAAA;IAEA,8CAAA;IACA,yCAAA;EpBwmCA;EmB9mCI;ICgBJ,cAAA;IACA,WAAA;IACA,eAAA;IACA,8CAAA;IACA,8BAAA;EpBimCA;EoBjjCI;IACE,WAAA;EpBmjCN;EoBhjCI;IArCJ,cAAA;IACA,WAAA;EpBwlCA;EoBzkCA;IACE,cAAA;IACA,WAAA;EpB2kCF;EoB7kCA;IACE,cAAA;IACA,UAAA;EpB+kCF;EoBjlCA;IACE,cAAA;IACA,qBAAA;EpBmlCF;EoBrlCA;IACE,cAAA;IACA,UAAA;EpBulCF;EoBzlCA;IACE,cAAA;IACA,UAAA;EpB2lCF;EoB7lCA;IACE,cAAA;IACA,qBAAA;EpB+lCF;EoBhkCI;IAjDJ,cAAA;IACA,WAAA;EpBonCA;EoB9jCQ;IAjEN,cAAA;IACA,oBAAA;EpBkoCF;EoBlkCQ;IAjEN,cAAA;IACA,qBAAA;EpBsoCF;EoBtkCQ;IAjEN,cAAA;IACA,UAAA;EpB0oCF;EoB1kCQ;IAjEN,cAAA;IACA,qBAAA;EpB8oCF;EoB9kCQ;IAjEN,cAAA;IACA,qBAAA;EpBkpCF;EoBllCQ;IAjEN,cAAA;IACA,UAAA;EpBspCF;EoBtlCQ;IAjEN,cAAA;IACA,qBAAA;EpB0pCF;EoB1lCQ;IAjEN,cAAA;IACA,qBAAA;EpB8pCF;EoB9lCQ;IAjEN,cAAA;IACA,UAAA;EpBkqCF;EoBlmCQ;IAjEN,cAAA;IACA,qBAAA;EpBsqCF;EoBtmCQ;IAjEN,cAAA;IACA,qBAAA;EpB0qCF;EoB1mCQ;IAjEN,cAAA;IACA,WAAA;EpB8qCF;EoBtmCU;IAxDV,kCAAA;EpBiqCA;EoBzmCU;IAxDV,mCAAA;EpBoqCA;EoB5mCU;IAxDV,wBAAA;EpBuqCA;EoB/mCU;IAxDV,mCAAA;EpB0qCA;EoBlnCU;IAxDV,mCAAA;EpB6qCA;EoBrnCU;IAxDV,wBAAA;EpBgrCA;EoBxnCU;IAxDV,mCAAA;EpBmrCA;EoB3nCU;IAxDV,mCAAA;EpBsrCA;EoB9nCU;IAxDV,wBAAA;EpByrCA;EoBjoCU;IAxDV,mCAAA;EpB4rCA;EoBpoCU;IAxDV,mCAAA;EpB+rCA;EoB5nCM;;IAEE,sBAAA;EpB8nCR;EoB3nCM;;IAEE,sBAAA;EpB6nCR;EoBpoCM;;IAEE,uBAAA;EpBsoCR;EoBnoCM;;IAEE,uBAAA;EpBqoCR;EoB5oCM;;IAEE,gBAAA;EpB8oCR;EoB3oCM;;IAEE,gBAAA;EpB6oCR;EoBppCM;;IAEE,sBAAA;EpBspCR;EoBnpCM;;IAEE,sBAAA;EpBqpCR;EoB5pCM;;IAEE,qBAAA;EpB8pCR;EoB3pCM;;IAEE,qBAAA;EpB6pCR;EoBpqCM;;IAEE,mBAAA;EpBsqCR;EoBnqCM;;IAEE,mBAAA;EpBqqCR;EoB5qCM;;IAEE,qBAAA;EpB8qCR;EoB3qCM;;IAEE,qBAAA;EpB6qCR;EoBprCM;;IAEE,mBAAA;EpBsrCR;EoBnrCM;;IAEE,mBAAA;EpBqrCR;EY3sCE;IQ1BE;MACE,WAAA;IpBwuCJ;IoBruCE;MArCJ,cAAA;MACA,WAAA;IpB6wCE;IoB9vCF;MACE,cAAA;MACA,WAAA;IpBgwCA;IoBlwCF;MACE,cAAA;MACA,UAAA;IpBowCA;IoBtwCF;MACE,cAAA;MACA,qBAAA;IpBwwCA;IoB1wCF;MACE,cAAA;MACA,UAAA;IpB4wCA;IoB9wCF;MACE,cAAA;MACA,UAAA;IpBgxCA;IoBlxCF;MACE,cAAA;MACA,qBAAA;IpBoxCA;IoBrvCE;MAjDJ,cAAA;MACA,WAAA;IpByyCE;IoBnvCM;MAjEN,cAAA;MACA,oBAAA;IpBuzCA;IoBvvCM;MAjEN,cAAA;MACA,qBAAA;IpB2zCA;IoB3vCM;MAjEN,cAAA;MACA,UAAA;IpB+zCA;IoB/vCM;MAjEN,cAAA;MACA,qBAAA;IpBm0CA;IoBnwCM;MAjEN,cAAA;MACA,qBAAA;IpBu0CA;IoBvwCM;MAjEN,cAAA;MACA,UAAA;IpB20CA;IoB3wCM;MAjEN,cAAA;MACA,qBAAA;IpB+0CA;IoB/wCM;MAjEN,cAAA;MACA,qBAAA;IpBm1CA;IoBnxCM;MAjEN,cAAA;MACA,UAAA;IpBu1CA;IoBvxCM;MAjEN,cAAA;MACA,qBAAA;IpB21CA;IoB3xCM;MAjEN,cAAA;MACA,qBAAA;IpB+1CA;IoB/xCM;MAjEN,cAAA;MACA,WAAA;IpBm2CA;IoB3xCQ;MAxDV,sBAAA;IpBs1CE;IoB9xCQ;MAxDV,kCAAA;IpBy1CE;IoBjyCQ;MAxDV,mCAAA;IpB41CE;IoBpyCQ;MAxDV,wBAAA;IpB+1CE;IoBvyCQ;MAxDV,mCAAA;IpBk2CE;IoB1yCQ;MAxDV,mCAAA;IpBq2CE;IoB7yCQ;MAxDV,wBAAA;IpBw2CE;IoBhzCQ;MAxDV,mCAAA;IpB22CE;IoBnzCQ;MAxDV,mCAAA;IpB82CE;IoBtzCQ;MAxDV,wBAAA;IpBi3CE;IoBzzCQ;MAxDV,mCAAA;IpBo3CE;IoB5zCQ;MAxDV,mCAAA;IpBu3CE;IoBpzCI;;MAEE,sBAAA;IpBszCN;IoBnzCI;;MAEE,sBAAA;IpBqzCN;IoB5zCI;;MAEE,uBAAA;IpB8zCN;IoB3zCI;;MAEE,uBAAA;IpB6zCN;IoBp0CI;;MAEE,gBAAA;IpBs0CN;IoBn0CI;;MAEE,gBAAA;IpBq0CN;IoB50CI;;MAEE,sBAAA;IpB80CN;IoB30CI;;MAEE,sBAAA;IpB60CN;IoBp1CI;;MAEE,qBAAA;IpBs1CN;IoBn1CI;;MAEE,qBAAA;IpBq1CN;IoB51CI;;MAEE,mBAAA;IpB81CN;IoB31CI;;MAEE,mBAAA;IpB61CN;IoBp2CI;;MAEE,qBAAA;IpBs2CN;IoBn2CI;;MAEE,qBAAA;IpBq2CN;IoB52CI;;MAEE,mBAAA;IpB82CN;IoB32CI;;MAEE,mBAAA;IpB62CN;EACF;EYp4CE;IQ1BE;MACE,WAAA;IpBi6CJ;IoB95CE;MArCJ,cAAA;MACA,WAAA;IpBs8CE;IoBv7CF;MACE,cAAA;MACA,WAAA;IpBy7CA;IoB37CF;MACE,cAAA;MACA,UAAA;IpB67CA;IoB/7CF;MACE,cAAA;MACA,qBAAA;IpBi8CA;IoBn8CF;MACE,cAAA;MACA,UAAA;IpBq8CA;IoBv8CF;MACE,cAAA;MACA,UAAA;IpBy8CA;IoB38CF;MACE,cAAA;MACA,qBAAA;IpB68CA;IoB96CE;MAjDJ,cAAA;MACA,WAAA;IpBk+CE;IoB56CM;MAjEN,cAAA;MACA,oBAAA;IpBg/CA;IoBh7CM;MAjEN,cAAA;MACA,qBAAA;IpBo/CA;IoBp7CM;MAjEN,cAAA;MACA,UAAA;IpBw/CA;IoBx7CM;MAjEN,cAAA;MACA,qBAAA;IpB4/CA;IoB57CM;MAjEN,cAAA;MACA,qBAAA;IpBggDA;IoBh8CM;MAjEN,cAAA;MACA,UAAA;IpBogDA;IoBp8CM;MAjEN,cAAA;MACA,qBAAA;IpBwgDA;IoBx8CM;MAjEN,cAAA;MACA,qBAAA;IpB4gDA;IoB58CM;MAjEN,cAAA;MACA,UAAA;IpBghDA;IoBh9CM;MAjEN,cAAA;MACA,qBAAA;IpBohDA;IoBp9CM;MAjEN,cAAA;MACA,qBAAA;IpBwhDA;IoBx9CM;MAjEN,cAAA;MACA,WAAA;IpB4hDA;IoBp9CQ;MAxDV,sBAAA;IpB+gDE;IoBv9CQ;MAxDV,kCAAA;IpBkhDE;IoB19CQ;MAxDV,mCAAA;IpBqhDE;IoB79CQ;MAxDV,wBAAA;IpBwhDE;IoBh+CQ;MAxDV,mCAAA;IpB2hDE;IoBn+CQ;MAxDV,mCAAA;IpB8hDE;IoBt+CQ;MAxDV,wBAAA;IpBiiDE;IoBz+CQ;MAxDV,mCAAA;IpBoiDE;IoB5+CQ;MAxDV,mCAAA;IpBuiDE;IoB/+CQ;MAxDV,wBAAA;IpB0iDE;IoBl/CQ;MAxDV,mCAAA;IpB6iDE;IoBr/CQ;MAxDV,mCAAA;IpBgjDE;IoB7+CI;;MAEE,sBAAA;IpB++CN;IoB5+CI;;MAEE,sBAAA;IpB8+CN;IoBr/CI;;MAEE,uBAAA;IpBu/CN;IoBp/CI;;MAEE,uBAAA;IpBs/CN;IoB7/CI;;MAEE,gBAAA;IpB+/CN;IoB5/CI;;MAEE,gBAAA;IpB8/CN;IoBrgDI;;MAEE,sBAAA;IpBugDN;IoBpgDI;;MAEE,sBAAA;IpBsgDN;IoB7gDI;;MAEE,qBAAA;IpB+gDN;IoB5gDI;;MAEE,qBAAA;IpB8gDN;IoBrhDI;;MAEE,mBAAA;IpBuhDN;IoBphDI;;MAEE,mBAAA;IpBshDN;IoB7hDI;;MAEE,qBAAA;IpB+hDN;IoB5hDI;;MAEE,qBAAA;IpB8hDN;IoBriDI;;MAEE,mBAAA;IpBuiDN;IoBpiDI;;MAEE,mBAAA;IpBsiDN;EACF;EY7jDE;IQ1BE;MACE,WAAA;IpB0lDJ;IoBvlDE;MArCJ,cAAA;MACA,WAAA;IpB+nDE;IoBhnDF;MACE,cAAA;MACA,WAAA;IpBknDA;IoBpnDF;MACE,cAAA;MACA,UAAA;IpBsnDA;IoBxnDF;MACE,cAAA;MACA,qBAAA;IpB0nDA;IoB5nDF;MACE,cAAA;MACA,UAAA;IpB8nDA;IoBhoDF;MACE,cAAA;MACA,UAAA;IpBkoDA;IoBpoDF;MACE,cAAA;MACA,qBAAA;IpBsoDA;IoBvmDE;MAjDJ,cAAA;MACA,WAAA;IpB2pDE;IoBrmDM;MAjEN,cAAA;MACA,oBAAA;IpByqDA;IoBzmDM;MAjEN,cAAA;MACA,qBAAA;IpB6qDA;IoB7mDM;MAjEN,cAAA;MACA,UAAA;IpBirDA;IoBjnDM;MAjEN,cAAA;MACA,qBAAA;IpBqrDA;IoBrnDM;MAjEN,cAAA;MACA,qBAAA;IpByrDA;IoBznDM;MAjEN,cAAA;MACA,UAAA;IpB6rDA;IoB7nDM;MAjEN,cAAA;MACA,qBAAA;IpBisDA;IoBjoDM;MAjEN,cAAA;MACA,qBAAA;IpBqsDA;IoBroDM;MAjEN,cAAA;MACA,UAAA;IpBysDA;IoBzoDM;MAjEN,cAAA;MACA,qBAAA;IpB6sDA;IoB7oDM;MAjEN,cAAA;MACA,qBAAA;IpBitDA;IoBjpDM;MAjEN,cAAA;MACA,WAAA;IpBqtDA;IoB7oDQ;MAxDV,sBAAA;IpBwsDE;IoBhpDQ;MAxDV,kCAAA;IpB2sDE;IoBnpDQ;MAxDV,mCAAA;IpB8sDE;IoBtpDQ;MAxDV,wBAAA;IpBitDE;IoBzpDQ;MAxDV,mCAAA;IpBotDE;IoB5pDQ;MAxDV,mCAAA;IpButDE;IoB/pDQ;MAxDV,wBAAA;IpB0tDE;IoBlqDQ;MAxDV,mCAAA;IpB6tDE;IoBrqDQ;MAxDV,mCAAA;IpBguDE;IoBxqDQ;MAxDV,wBAAA;IpBmuDE;IoB3qDQ;MAxDV,mCAAA;IpBsuDE;IoB9qDQ;MAxDV,mCAAA;IpByuDE;IoBtqDI;;MAEE,sBAAA;IpBwqDN;IoBrqDI;;MAEE,sBAAA;IpBuqDN;IoB9qDI;;MAEE,uBAAA;IpBgrDN;IoB7qDI;;MAEE,uBAAA;IpB+qDN;IoBtrDI;;MAEE,gBAAA;IpBwrDN;IoBrrDI;;MAEE,gBAAA;IpBurDN;IoB9rDI;;MAEE,sBAAA;IpBgsDN;IoB7rDI;;MAEE,sBAAA;IpB+rDN;IoBtsDI;;MAEE,qBAAA;IpBwsDN;IoBrsDI;;MAEE,qBAAA;IpBusDN;IoB9sDI;;MAEE,mBAAA;IpBgtDN;IoB7sDI;;MAEE,mBAAA;IpB+sDN;IoBttDI;;MAEE,qBAAA;IpBwtDN;IoBrtDI;;MAEE,qBAAA;IpButDN;IoB9tDI;;MAEE,mBAAA;IpBguDN;IoB7tDI;;MAEE,mBAAA;IpB+tDN;EACF;EYtvDE;IQ1BE;MACE,WAAA;IpBmxDJ;IoBhxDE;MArCJ,cAAA;MACA,WAAA;IpBwzDE;IoBzyDF;MACE,cAAA;MACA,WAAA;IpB2yDA;IoB7yDF;MACE,cAAA;MACA,UAAA;IpB+yDA;IoBjzDF;MACE,cAAA;MACA,qBAAA;IpBmzDA;IoBrzDF;MACE,cAAA;MACA,UAAA;IpBuzDA;IoBzzDF;MACE,cAAA;MACA,UAAA;IpB2zDA;IoB7zDF;MACE,cAAA;MACA,qBAAA;IpB+zDA;IoBhyDE;MAjDJ,cAAA;MACA,WAAA;IpBo1DE;IoB9xDM;MAjEN,cAAA;MACA,oBAAA;IpBk2DA;IoBlyDM;MAjEN,cAAA;MACA,qBAAA;IpBs2DA;IoBtyDM;MAjEN,cAAA;MACA,UAAA;IpB02DA;IoB1yDM;MAjEN,cAAA;MACA,qBAAA;IpB82DA;IoB9yDM;MAjEN,cAAA;MACA,qBAAA;IpBk3DA;IoBlzDM;MAjEN,cAAA;MACA,UAAA;IpBs3DA;IoBtzDM;MAjEN,cAAA;MACA,qBAAA;IpB03DA;IoB1zDM;MAjEN,cAAA;MACA,qBAAA;IpB83DA;IoB9zDM;MAjEN,cAAA;MACA,UAAA;IpBk4DA;IoBl0DM;MAjEN,cAAA;MACA,qBAAA;IpBs4DA;IoBt0DM;MAjEN,cAAA;MACA,qBAAA;IpB04DA;IoB10DM;MAjEN,cAAA;MACA,WAAA;IpB84DA;IoBt0DQ;MAxDV,sBAAA;IpBi4DE;IoBz0DQ;MAxDV,kCAAA;IpBo4DE;IoB50DQ;MAxDV,mCAAA;IpBu4DE;IoB/0DQ;MAxDV,wBAAA;IpB04DE;IoBl1DQ;MAxDV,mCAAA;IpB64DE;IoBr1DQ;MAxDV,mCAAA;IpBg5DE;IoBx1DQ;MAxDV,wBAAA;IpBm5DE;IoB31DQ;MAxDV,mCAAA;IpBs5DE;IoB91DQ;MAxDV,mCAAA;IpBy5DE;IoBj2DQ;MAxDV,wBAAA;IpB45DE;IoBp2DQ;MAxDV,mCAAA;IpB+5DE;IoBv2DQ;MAxDV,mCAAA;IpBk6DE;IoB/1DI;;MAEE,sBAAA;IpBi2DN;IoB91DI;;MAEE,sBAAA;IpBg2DN;IoBv2DI;;MAEE,uBAAA;IpBy2DN;IoBt2DI;;MAEE,uBAAA;IpBw2DN;IoB/2DI;;MAEE,gBAAA;IpBi3DN;IoB92DI;;MAEE,gBAAA;IpBg3DN;IoBv3DI;;MAEE,sBAAA;IpBy3DN;IoBt3DI;;MAEE,sBAAA;IpBw3DN;IoB/3DI;;MAEE,qBAAA;IpBi4DN;IoB93DI;;MAEE,qBAAA;IpBg4DN;IoBv4DI;;MAEE,mBAAA;IpBy4DN;IoBt4DI;;MAEE,mBAAA;IpBw4DN;IoB/4DI;;MAEE,qBAAA;IpBi5DN;IoB94DI;;MAEE,qBAAA;IpBg5DN;IoBv5DI;;MAEE,mBAAA;IpBy5DN;IoBt5DI;;MAEE,mBAAA;IpBw5DN;EACF;EY/6DE;IQ1BE;MACE,WAAA;IpB48DJ;IoBz8DE;MArCJ,cAAA;MACA,WAAA;IpBi/DE;IoBl+DF;MACE,cAAA;MACA,WAAA;IpBo+DA;IoBt+DF;MACE,cAAA;MACA,UAAA;IpBw+DA;IoB1+DF;MACE,cAAA;MACA,qBAAA;IpB4+DA;IoB9+DF;MACE,cAAA;MACA,UAAA;IpBg/DA;IoBl/DF;MACE,cAAA;MACA,UAAA;IpBo/DA;IoBt/DF;MACE,cAAA;MACA,qBAAA;IpBw/DA;IoBz9DE;MAjDJ,cAAA;MACA,WAAA;IpB6gEE;IoBv9DM;MAjEN,cAAA;MACA,oBAAA;IpB2hEA;IoB39DM;MAjEN,cAAA;MACA,qBAAA;IpB+hEA;IoB/9DM;MAjEN,cAAA;MACA,UAAA;IpBmiEA;IoBn+DM;MAjEN,cAAA;MACA,qBAAA;IpBuiEA;IoBv+DM;MAjEN,cAAA;MACA,qBAAA;IpB2iEA;IoB3+DM;MAjEN,cAAA;MACA,UAAA;IpB+iEA;IoB/+DM;MAjEN,cAAA;MACA,qBAAA;IpBmjEA;IoBn/DM;MAjEN,cAAA;MACA,qBAAA;IpBujEA;IoBv/DM;MAjEN,cAAA;MACA,UAAA;IpB2jEA;IoB3/DM;MAjEN,cAAA;MACA,qBAAA;IpB+jEA;IoB//DM;MAjEN,cAAA;MACA,qBAAA;IpBmkEA;IoBngEM;MAjEN,cAAA;MACA,WAAA;IpBukEA;IoB//DQ;MAxDV,sBAAA;IpB0jEE;IoBlgEQ;MAxDV,kCAAA;IpB6jEE;IoBrgEQ;MAxDV,mCAAA;IpBgkEE;IoBxgEQ;MAxDV,wBAAA;IpBmkEE;IoB3gEQ;MAxDV,mCAAA;IpBskEE;IoB9gEQ;MAxDV,mCAAA;IpBykEE;IoBjhEQ;MAxDV,wBAAA;IpB4kEE;IoBphEQ;MAxDV,mCAAA;IpB+kEE;IoBvhEQ;MAxDV,mCAAA;IpBklEE;IoB1hEQ;MAxDV,wBAAA;IpBqlEE;IoB7hEQ;MAxDV,mCAAA;IpBwlEE;IoBhiEQ;MAxDV,mCAAA;IpB2lEE;IoBxhEI;;MAEE,sBAAA;IpB0hEN;IoBvhEI;;MAEE,sBAAA;IpByhEN;IoBhiEI;;MAEE,uBAAA;IpBkiEN;IoB/hEI;;MAEE,uBAAA;IpBiiEN;IoBxiEI;;MAEE,gBAAA;IpB0iEN;IoBviEI;;MAEE,gBAAA;IpByiEN;IoBhjEI;;MAEE,sBAAA;IpBkjEN;IoB/iEI;;MAEE,sBAAA;IpBijEN;IoBxjEI;;MAEE,qBAAA;IpB0jEN;IoBvjEI;;MAEE,qBAAA;IpByjEN;IoBhkEI;;MAEE,mBAAA;IpBkkEN;IoB/jEI;;MAEE,mBAAA;IpBikEN;IoBxkEI;;MAEE,qBAAA;IpB0kEN;IoBvkEI;;MAEE,qBAAA;IpBykEN;IoBhlEI;;MAEE,mBAAA;IpBklEN;IoB/kEI;;MAEE,mBAAA;IpBilEN;EACF;EmB7rEE;IACE,gBAAA;IACA,YAAA;IACA,gBAAA;IAEA,aAAA;IACA,+CAAA;IACA,qDAAA;IACA,kBAAA;EnB8rEJ;EoB7kEQ;IACE,wBAAA;EpB+kEV;EoBhlEQ;IACE,wBAAA;EpBklEV;EoBnlEQ;IACE,wBAAA;EpBqlEV;EoBtlEQ;IACE,wBAAA;EpBwlEV;EoBzlEQ;IACE,wBAAA;EpB2lEV;EoB5lEQ;IACE,wBAAA;EpB8lEV;EoB/lEQ;IACE,wBAAA;EpBimEV;EoBlmEQ;IACE,wBAAA;EpBomEV;EoBrmEQ;IACE,wBAAA;EpBumEV;EoBxmEQ;IACE,yBAAA;EpB0mEV;EoB3mEQ;IACE,yBAAA;EpB6mEV;EoB9mEQ;IACE,yBAAA;EpBgnEV;EoBzmEQ;IACE,oBAFS;EpB6mEnB;EoB5mEQ;IACE,oBAFS;EpBgnEnB;EoB/mEQ;IACE,oBAFS;EpBmnEnB;EoBlnEQ;IACE,oBAFS;EpBsnEnB;EoBrnEQ;IACE,oBAFS;EpBynEnB;EoBxnEQ;IACE,oBAFS;EpB4nEnB;EoB3nEQ;IACE,oBAFS;EpB+nEnB;EoB9nEQ;IACE,oBAFS;EpBkoEnB;EoBjoEQ;IACE,oBAFS;EpBqoEnB;EoBpoEQ;IACE,qBAFS;EpBwoEnB;EoBvoEQ;IACE,qBAFS;EpB2oEnB;EYtrEE;IQoCM;MACE,wBAAA;IpBqpER;IoBtpEM;MACE,wBAAA;IpBwpER;IoBzpEM;MACE,wBAAA;IpB2pER;IoB5pEM;MACE,wBAAA;IpB8pER;IoB/pEM;MACE,wBAAA;IpBiqER;IoBlqEM;MACE,wBAAA;IpBoqER;IoBrqEM;MACE,wBAAA;IpBuqER;IoBxqEM;MACE,wBAAA;IpB0qER;IoB3qEM;MACE,wBAAA;IpB6qER;IoB9qEM;MACE,yBAAA;IpBgrER;IoBjrEM;MACE,yBAAA;IpBmrER;IoBprEM;MACE,yBAAA;IpBsrER;IoB/qEM;MACE,oBAFS;IpBmrEjB;IoBlrEM;MACE,oBAFS;IpBsrEjB;IoBrrEM;MACE,oBAFS;IpByrEjB;IoBxrEM;MACE,oBAFS;IpB4rEjB;IoB3rEM;MACE,oBAFS;IpB+rEjB;IoB9rEM;MACE,oBAFS;IpBksEjB;IoBjsEM;MACE,oBAFS;IpBqsEjB;IoBpsEM;MACE,oBAFS;IpBwsEjB;IoBvsEM;MACE,oBAFS;IpB2sEjB;IoB1sEM;MACE,qBAFS;IpB8sEjB;IoB7sEM;MACE,qBAFS;IpBitEjB;EACF;EY7vEE;IQoCM;MACE,wBAAA;IpB4tER;IoB7tEM;MACE,wBAAA;IpB+tER;IoBhuEM;MACE,wBAAA;IpBkuER;IoBnuEM;MACE,wBAAA;IpBquER;IoBtuEM;MACE,wBAAA;IpBwuER;IoBzuEM;MACE,wBAAA;IpB2uER;IoB5uEM;MACE,wBAAA;IpB8uER;IoB/uEM;MACE,wBAAA;IpBivER;IoBlvEM;MACE,wBAAA;IpBovER;IoBrvEM;MACE,yBAAA;IpBuvER;IoBxvEM;MACE,yBAAA;IpB0vER;IoB3vEM;MACE,yBAAA;IpB6vER;IoBtvEM;MACE,oBAFS;IpB0vEjB;IoBzvEM;MACE,oBAFS;IpB6vEjB;IoB5vEM;MACE,oBAFS;IpBgwEjB;IoB/vEM;MACE,oBAFS;IpBmwEjB;IoBlwEM;MACE,oBAFS;IpBswEjB;IoBrwEM;MACE,oBAFS;IpBywEjB;IoBxwEM;MACE,oBAFS;IpB4wEjB;IoB3wEM;MACE,oBAFS;IpB+wEjB;IoB9wEM;MACE,oBAFS;IpBkxEjB;IoBjxEM;MACE,qBAFS;IpBqxEjB;IoBpxEM;MACE,qBAFS;IpBwxEjB;EACF;EYp0EE;IQoCM;MACE,wBAAA;IpBmyER;IoBpyEM;MACE,wBAAA;IpBsyER;IoBvyEM;MACE,wBAAA;IpByyER;IoB1yEM;MACE,wBAAA;IpB4yER;IoB7yEM;MACE,wBAAA;IpB+yER;IoBhzEM;MACE,wBAAA;IpBkzER;IoBnzEM;MACE,wBAAA;IpBqzER;IoBtzEM;MACE,wBAAA;IpBwzER;IoBzzEM;MACE,wBAAA;IpB2zER;IoB5zEM;MACE,yBAAA;IpB8zER;IoB/zEM;MACE,yBAAA;IpBi0ER;IoBl0EM;MACE,yBAAA;IpBo0ER;IoB7zEM;MACE,oBAFS;IpBi0EjB;IoBh0EM;MACE,oBAFS;IpBo0EjB;IoBn0EM;MACE,oBAFS;IpBu0EjB;IoBt0EM;MACE,oBAFS;IpB00EjB;IoBz0EM;MACE,oBAFS;IpB60EjB;IoB50EM;MACE,oBAFS;IpBg1EjB;IoB/0EM;MACE,oBAFS;IpBm1EjB;IoBl1EM;MACE,oBAFS;IpBs1EjB;IoBr1EM;MACE,oBAFS;IpBy1EjB;IoBx1EM;MACE,qBAFS;IpB41EjB;IoB31EM;MACE,qBAFS;IpB+1EjB;EACF;EY34EE;IQoCM;MACE,wBAAA;IpB02ER;IoB32EM;MACE,wBAAA;IpB62ER;IoB92EM;MACE,wBAAA;IpBg3ER;IoBj3EM;MACE,wBAAA;IpBm3ER;IoBp3EM;MACE,wBAAA;IpBs3ER;IoBv3EM;MACE,wBAAA;IpBy3ER;IoB13EM;MACE,wBAAA;IpB43ER;IoB73EM;MACE,wBAAA;IpB+3ER;IoBh4EM;MACE,wBAAA;IpBk4ER;IoBn4EM;MACE,yBAAA;I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,kBA+CO;ElFkgQb;EkF76PE;IApII,gBA+CO;ElFqgQb;EkFh7PE;IApII,kBA+CO;ElFwgQb;EkFn7PE;IApII,mBA+CO;ElF2gQb;EkFt7PE;IApII,kBA+CO;ElF8gQb;EkFz7PE;IApII,eA+CO;ElFihQb;EkF57PE;IApII,qBA+CO;ElFohQb;EkF/7PE;IApII,cA+CO;ElFuhQb;EkFl8PE;IApII,aA+CO;ElF0hQb;EkFr8PE;IApII,oBA+CO;ElF6hQb;EkFx8PE;IApII,cA+CO;ElFgiQb;EkF38PE;IApII,kBA+CO;ElFmiQb;EkF98PE;IApII,mBA+CO;ElFsiQb;EkFj9PE;IApII,aA+CO;ElFyiQb;EkFp9PE;IApII,oBA+CO;ElF4iQb;EkFv9PE;IApII,iBA+CO;ElF+iQb;EkF19PE;IApII,kBA+CO;ElFkjQb;EkF79PE;IApII,aA+CO;ElFqjQb;EkFh+PE;IApII,gCA0CG;ElF6jQT;EkFn+PE;IApII,mCA0CG;ElFgkQT;EkFt+PE;IApII,mCA0CG;ElFmkQT;EkFz+PE;IApII,gBA0CG;ElFskQT;EkF5+PE;IApII,iKA0CG;ElFykQT;EkF/+PE;IApII,qKA0CG;ElF4kQT;EkFl/PE;IApII,mKA0CG;ElF+kQT;EkFr/PE;IApII,+JA0CG;ElFklQT;EkFx/PE;IApII,qKA0CG;ElFqlQT;EkF3/PE;IApII,iKA0CG;ElFwlQT;EkF9/PE;IApII,qHA0CG;ElF2lQT;EkFjgQE;IApII,qHA0CG;ElF8lQT;EkFpgQE;IApII,gBA+CO;ElF4lQb;EkFvgQE;IApII,kBA+CO;ElF+lQb;EkF1gQE;IApII,kBA+CO;ElFkmQb;EkF7gQE;IApII,eA+CO;ElFqmQb;EkFhhQE;IApII,gBA+CO;ElFwmQb;EkFnhQE;IApII,MA0CG;ElFgnQT;EkFthQE;IApII,QA0CG;ElFmnQT;EkFzhQE;IApII,SA0CG;ElFsnQT;EkF5hQE;IApII,SA0CG;ElFynQT;EkF/hQE;IApII,WA0CG;ElF4nQT;EkFliQE;IApII,YA0CG;ElF+nQT;EkFriQE;IApII,OA0CG;ElFkoQT;EkFxiQE;I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G;ElFk/QT;EkFx5QE;IApII,6BA0CG;ElFq/QT;EkF35QE;IApII,oBA0CG;ElFw/QT;EkF95QE;IApII,kBA0CG;ElF2/QT;EkFj6QE;IApII,qBA0CG;ElF8/QT;EkFp6QE;IApII,sBA0CG;ElFigRT;EkFv6QE;IApII,wBA0CG;ElFogRT;EkF16QE;IApII,sBA0CG;ElFugRT;EkF76QE;IApII,oBA0CG;ElF0gRT;EkFh7QE;IApII,uBA0CG;ElF6gRT;EkFn7QE;IApII,qBA0CG;ElFghRT;EkFt7QE;IApII,mBA0CG;ElFmhRT;EkFz7QE;IApII,qBA0CG;ElFshRT;EkF57QE;IApII,oBA0CG;ElFyhRT;EkF/7QE;IApII,yBA0CG;ElF4hRT;EkFl8QE;IApII,uBA0CG;ElF+hRT;EkFr8QE;IApII,qBA0CG;ElFkiRT;EkFx8QE;IApII,4BA0CG;ElFqiRT;EkF38QE;IApII,2BA0CG;ElFwiRT;EkF98QE;IApII,sBA0CG;ElF2iRT;EkFj9QE;IApII,gBA0CG;ElF8iRT;EkFp9QE;IApII,sBA0CG;ElFijRT;EkFv9QE;IApII,oBA0CG;ElFojRT;EkF19QE;IApII,kBA0CG;ElFujRT;EkF79QE;IApII,oBA0CG;ElF0jRT;EkFh+QE;IApII,mBA0CG;ElF6jRT;EkFn+QE;IApII,kBA0CG;ElFgkRT;EkFt+QE;IApII,gBA0CG;ElFmkRT;EkFz+QE;IApII,mBA0CG;ElFskRT;EkF5+QE;IApII,oBA0CG;ElFykRT;EkF/+QE;IApII,eA+CO;ElFukRb;EkFl/QE;IApII,eA+CO;ElF0kRb;EkFr/QE;IApII,eA+CO;ElF6kRb;EkFx/QE;IApII,mBA0CG;ElFqlRT;EkF3/QE;IApII,mBA+CO;ElFmlRb;EkF9/QE;IApII,sBA+CO;ElFslRb;EkFjgRE;IApII,qBA+CO;ElFylRb;EkFpgRE;IApII,SA0CG;ElFimRT;EkFvgRE;IApII,QA0CG;ElFomRT;EkF1gRE;IApII,QA0CG;ElFumRT;EkF7gRE;IApII,QA0CG;ElF0mRT;EkFhhRE;IApII,QA0CG;ElF6mRT;EkFnhRE;IApII,QA0CG;ElFgnRT;EkFthRE;IApII,QA0CG;ElFmnRT;EkFzhRE;IApII,QA0CG;ElFsnRT;EkF5hRE;IApII,eA0CG;ElFynRT;EkF/hRE;IApII,gBA0CG;ElF4nRT;EkFliRE;IApII,SA0CG;ElF+nRT;EkFriRE;IApII,eA0CG;ElFkoRT;EkFxiRE;IApII,cA0CG;ElFqoRT;EkF3iRE;IApII,YA0CG;ElFwoRT;EkF9iRE;IApII,cA0CG;ElF2oRT;EkFjjRE;IApII,YA0CG;ElF8oRT;EkFpjRE;IApII,YA0CG;ElFipRT;EkFvjRE;IApII,sBA0CG;ElFopRT;EkF1jRE;IApII,uBA0CG;ElFupRT;EkF7jRE;IApII,gBA0CG;ElF0pRT;EkFhkRE;IApII,sBA0CG;ElF6pRT;EkFnkRE;IApII,qBA0CG;ElFgqRT;EkFtkRE;IApII,mBA0CG;ElFmqRT;EkFzkRE;IApII,qBA0CG;ElFsqRT;EkF5kRE;IApII,mBA0CG;ElFyqRT;EkF/kRE;IApII,mBA0CG;ElF4qRT;EkFllRE;IApII,qBA0CG;ElF+qRT;EkFrlRE;IApII,sBA0CG;ElFkrRT;EkFxlRE;IApII,eA0CG;ElFqrRT;EkF3lRE;IApII,qBA0CG;ElFwrRT;EkF9lRE;IApII,oBA0CG;ElF2rRT;EkFjmRE;IApII,kBA0CG;ElF8rRT;EkFpmRE;IApII,oBA0CG;ElFisRT;EkFvmRE;IApII,kBA0CG;ElFosRT;EkF1mRE;IApII,kBA0CG;ElFusRT;EkF7mRE;IApII,2BA0CG;ElF0sRT;EkFhnRE;IApII,4BA0CG;ElF6sRT;EkFnnRE;IApII,qBA0CG;ElFgtRT;EkFtnRE;IApII,2BA0CG;ElFmtRT;EkFznRE;IApII,0BA0CG;ElFstRT;EkF5nRE;IApII,wBA0CG;ElFytRT;EkF/nRE;IApII,0BA0CG;ElF4tRT;EkFloRE;IApII,wBA0CG;ElF+tRT;EkFroRE;IApII,wBA0CG;ElFkuRT;EkFxoRE;IApII,0BA0CG;ElFquRT;EkF3oRE;IApII,2BA0CG;ElFwuRT;EkF9oRE;IApII,oBA0CG;ElF2uRT;EkFjpRE;IApII,0BA0CG;ElF8uRT;EkFppRE;IApII,yBA0CG;ElFivRT;EkFvpRE;IApII,uBA0CG;ElFovRT;EkF1pRE;IApII,yBA0CG;ElFuvRT;EkF7pRE;IApII,uBA0CG;ElF0vRT;EkFhqRE;IApII,uBA0CG;ElF6vRT;EkFnqRE;IApII,yBA0CG;ElFgwRT;EkFtqRE;IApII,0BA0CG;ElFmwRT;EkFzqRE;IApII,mBA0CG;ElFswRT;EkF5qRE;IApII,yBA0CG;ElFywRT;EkF/qRE;IApII,wBA0CG;ElF4wRT;EkFlrRE;IApII,sBA0CG;ElF+wRT;EkFrrRE;IApII,wBA0CG;ElFkxRT;EkFxrRE;IApII,sBA0CG;ElFqxRT;EkF3rRE;IApII,sBA0CG;ElFwxRT;EkF9rRE;IApII,4BA0CG;ElF2xRT;EkFjsRE;IApII,6BA0CG;ElF8xRT;EkFpsRE;IApII,sBA0CG;ElFiyRT;EkFvsRE;IApII,4BA0CG;ElFoyRT;EkF1sRE;IApII,2BA0CG;ElFuyRT;EkF7sRE;IApII,yBA0CG;ElF0yRT;EkFhtRE;IApII,2BA0CG;ElF6yRT;EkFntRE;IApII,yBA0CG;ElFgzRT;EkFttRE;IApII,yBA0CG;ElFmzRT;EkFztRE;IApII,gBA0CG;ElFszRT;EkF5tRE;IApII,iBA0CG;ElFyzRT;EkF/tRE;IApII,UA0CG;ElF4zRT;EkFluRE;IApII,gBA0CG;ElF+zRT;EkFruRE;IApII,eA0CG;ElFk0RT;EkFxuRE;IApII,aA0CG;ElFq0RT;EkF3uRE;IApII,eA0CG;ElFw0RT;EkF9uRE;IApII,aA0CG;ElF20RT;EkFjvRE;IApII,uBA0CG;ElF80RT;EkFpvRE;IApII,wBA0CG;ElFi1RT;EkFvvRE;IApII,iBA0CG;ElFo1RT;EkF1vRE;IApII,uBA0CG;ElFu1RT;EkF7vRE;IApII,sBA0CG;ElF01RT;EkFhwRE;IApII,oBA0CG;ElF61RT;EkFnwRE;IApII,sBA0CG;ElFg2RT;EkFtwRE;IApII,oBA0CG;ElFm2RT;EkFzwRE;IApII,sBA0CG;ElFs2RT;EkF5wRE;IApII,uBA0CG;ElFy2RT;EkF/wRE;IApII,gBA0CG;ElF42RT;EkFlxRE;IApII,sBA0CG;ElF+2RT;EkFrxRE;IApII,qBA0CG;ElFk3RT;EkFxxRE;IApII,mBA0CG;ElFq3RT;EkF3xRE;IApII,qBA0CG;ElFw3RT;EkF9xRE;IApII,mBA0CG;ElF23RT;EkFjyRE;IApII,4BA0CG;ElF83RT;EkFpyRE;IApII,6BA0CG;ElFi4RT;EkFvyRE;IApII,sBA0CG;ElFo4RT;EkF1yRE;IApII,4BA0CG;ElFu4RT;EkF7yRE;IApII,2BA0CG;ElF04RT;EkFhzRE;IApII,yBA0CG;ElF64RT;EkFnzRE;IApII,2BA0CG;ElFg5RT;EkFtzRE;IApII,yBA0CG;ElFm5RT;EkFzzRE;IApII,2BA0CG;ElFs5RT;EkF5zRE;IApII,4BA0CG;ElFy5RT;EkF/zRE;IApII,qBA0CG;ElF45RT;EkFl0RE;IApII,2BA0CG;ElF+5RT;EkFr0RE;IApII,0BA0CG;ElFk6RT;EkFx0RE;IApII,wBA0CG;ElFq6RT;EkF30RE;IApII,0BA0CG;ElFw6RT;EkF90RE;IApII,wBA0CG;ElF26RT;EkFj1RE;IApII,0BA0CG;ElF86RT;EkFp1RE;IApII,2BA0CG;ElFi7RT;EkFv1RE;IApII,oBA0CG;ElFo7RT;EkF11RE;IApII,0BA0CG;ElFu7RT;EkF71RE;IApII,yBA0CG;ElF07RT;EkFh2RE;IApII,uBA0CG;ElF67RT;EkFn2RE;IApII,yBA0CG;ElFg8RT;EkFt2RE;IApII,uBA0CG;ElFm8RT;EkFz2RE;IApII,6BA0CG;ElFs8RT;EkF52RE;IApII,8BA0CG;ElFy8RT;EkF/2RE;IApII,uBA0CG;ElF48RT;EkFl3RE;IApII,6BA0CG;ElF+8RT;EkFr3RE;IApII,4BA0CG;ElFk9RT;EkFx3RE;IApII,0BA0CG;ElFq9RT;EkF33RE;IApII,4BA0CG;ElFw9RT;EkF93RE;IApII,0BA0CG;ElF29RT;EkFj4RE;IApII,YA0CG;ElF89RT;EkFp4RE;IApII,aA0CG;ElFi+RT;EkFv4RE;IApII,MA0CG;ElFo+RT;EkF1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0CG;ElFo0ST;EkF1uSE;IApII,yDA0CG;ElFu0ST;EkF7uSE;IApII,yDA0CG;ElF00ST;EkFhvSE;IApII,yDA0CG;ElF60ST;EkFnvSE;IApII,yDA0CG;ElFg1ST;EkFtvSE;IApII,yDA0CG;ElFm1ST;EkFzvSE;IApII,yDA0CG;ElFs1ST;EkF5vSE;IApII,yDA0CG;ElFy1ST;EkF/vSE;IApII,yDA0CG;ElF41ST;EkFlwSE;IApII,mBA0CG;ElF+1ST;EkFrwSE;IApII,iEA0CG;ElFk2ST;EkFjvSM;IA3JA,iEA0CG;ElFq2ST;EkF3wSE;IApII,iEA0CG;ElFw2ST;EkFvvSM;IA3JA,iEA0CG;ElF22ST;EkFjxSE;IApII,iEA0CG;ElF82ST;EkF7vSM;IA3JA,iEA0CG;ElFi3ST;EkFvxSE;IApII,iEA0CG;ElFo3ST;EkFnwSM;IA3JA,iEA0CG;ElFu3ST;EkF7xSE;IApII,iEA0CG;ElF03ST;EkFzwSM;IA3JA,iEA0CG;ElF63ST;EkFnySE;IApII,iEA0CG;ElFg4ST;EkF/wSM;IA3JA,iEA0CG;ElFm4ST;EkFzySE;IApII,iEA0CG;ElFs4ST;EkFrxSM;IA3JA,iEA0CG;ElFy4ST;EkF/ySE;IApII,iEA0CG;ElF44ST;EkF3xSM;IA3JA,iEA0CG;ElF+4ST;EkFrzSE;IApII,iEA0CG;ElFk5ST;EkFjySM;IA3JA,iEA0CG;ElFq5ST;EkF3zSE;IApII,2BA0CG;ElFw5ST;EkFvySM;IA3JA,2BA0CG;ElF25ST;EkFj0SE;IApII,8BA0CG;ElF85ST;EkF7ySM;IA3JA,8BA0CG;ElFi6ST;EkFv0SE;IApII,6BA0CG;ElFo6ST;EkFnzSM;IA3JA,6BA0CG;ElFu6ST;EkF70SE;IApII,8BA0CG;ElF06ST;EkFzzSM;IA3JA,8BA0CG;ElF66ST;EkFn1SE;IApII,yEA0CG;ElFg7ST;EkFt1SE;IApII,wHA0CG;ElFm7ST;EkFz1SE;IApII,2EA0CG;ElFs7ST;EkF51SE;IApII,uEA0CG;ElFy7ST;EkF/1SE;IApII,6EA0CG;ElF47ST;EkFl2SE;IApII,yEA0CG;ElF+7ST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I,yBA0CG;IlF4gUP;IkFl7TA;MApII,uBA0CG;IlF+gUP;IkFr7TA;MApII,8BA0CG;IlFkhUP;IkFx7TA;MApII,6BA0CG;IlFqhUP;IkF37TA;MApII,6BA0CG;IlFwhUP;IkF97TA;MApII,oBA0CG;IlF2hUP;IkFj8TA;MApII,kBA0CG;IlF8hUP;IkFp8TA;MApII,qBA0CG;IlFiiUP;IkFv8TA;MApII,sBA0CG;IlFoiUP;IkF18TA;MApII,wBA0CG;IlFuiUP;IkF78TA;MApII,sBA0CG;IlF0iUP;IkFh9TA;MApII,oBA0CG;IlF6iUP;IkFn9TA;MApII,uBA0CG;IlFgjUP;IkFt9TA;MApII,qBA0CG;IlFmjUP;IkFz9TA;MApII,mBA0CG;IlFsjUP;IkF59TA;MApII,qBA0CG;IlFyjUP;IkF/9TA;MApII,oBA0CG;IlF4jUP;IkFl+TA;MApII,yBA0CG;IlF+jUP;IkFr+TA;MApII,uBA0CG;IlFkkUP;IkFx+TA;MApII,qBA0CG;IlFqkUP;IkF3+TA;MApII,4BA0CG;IlFwkUP;IkF9+TA;MApII,2BA0CG;IlF2kUP;IkFj/TA;MApII,sBA0CG;IlF8kUP;IkFp/TA;MApII,gBA0CG;IlFilUP;IkFv/TA;MApII,sBA0CG;IlFolUP;IkF1/TA;MApII,oBA0CG;IlFulUP;IkF7/TA;MApII,kBA0CG;IlF0lUP;IkFhgUA;MApII,oBA0CG;IlF6lUP;IkFngUA;MApII,mBA0CG;IlFgmUP;IkFtgUA;MApII,kBA0CG;IlFmmUP;IkFzgUA;MApII,gBA0CG;IlFsmUP;IkF5gUA;MApII,mBA0CG;IlFymUP;IkF/gUA;MApII,oBA0CG;IlF4mUP;IkFlhUA;MApII,eA+CO;IlF0mUX;IkFrhUA;MApII,eA+CO;IlF6mUX;IkFxhUA;MApII,eA+CO;IlFgnUX;IkF3hUA;MApII,mBA0CG;IlFwnUP;IkF9hUA;MApII,mBA+CO;IlFsnUX;IkFjiUA;MApII,sBA+CO;IlFynUX;IkFpiUA;MApII,qBA+CO;IlF4nUX;IkFviUA;MApII,SA0CG;IlFooUP;IkF1iUA;MApII,QA0CG;IlFuoUP;IkF7iUA;MApII,QA0CG;IlF0oUP;IkFhjUA;MApII,QA0CG;IlF6oUP;IkFnjUA;MApII,QA0CG;IlFgpUP;IkFtjUA;MApII,QA0CG;IlFmpUP;IkFzjUA;MApII,QA0CG;IlFspUP;IkF5jUA;MApII,QA0CG;IlFypUP;IkF/jUA;MApII,eA0CG;IlF4pUP;IkFlkUA;MApII,gBA0CG;IlF+pUP;IkFrkUA;MApII,SA0CG;IlFkqUP;IkFxkUA;MApII,eA0CG;IlFqqUP;IkF3kUA;MApII,cA0CG;IlFwqUP;IkF9kUA;MApII,YA0CG;IlF2qUP;IkFjlUA;MApII,cA0CG;IlF8qUP;IkFplUA;MApII,YA0CG;IlFirUP;IkFvlUA;MApII,YA0CG;IlForUP;IkF1lUA;MApII,sBA0CG;IlFurUP;IkF7lUA;MApII,uBA0CG;IlF0rUP;IkFhmUA;MApII,gBA0CG;IlF6rUP;IkFnmUA;MApII,sBA0CG;IlFgsUP;IkFtmUA;MApII,qBA0CG;IlFmsUP;IkFzmUA;MApII,mBA0CG;IlFssUP;IkF5mUA;MApII,qBA0CG;IlFysUP;IkF/mUA;MApII,mBA0CG;IlF4sUP;IkFlnUA;MApII,mBA0CG;IlF+sUP;IkFrnUA;MApII,qBA0CG;IlFktUP;IkFxnUA;MApII,sBA0CG;IlFqtUP;IkF3nUA;MApII,eA0CG;IlFwtUP;IkF9nUA;MApII,qBA0CG;IlF2tUP;IkFjoUA;MApII,oBA0CG;IlF8tUP;IkFpoUA;MApII,kBA0CG;IlFiuUP;IkFvoUA;MApII,oBA0CG;IlFouUP;IkF1oUA;MApII,kBA0CG;IlFuuUP;IkF7oUA;MApII,kBA0CG;IlF0uUP;IkFhpUA;MApII,2BA0CG;IlF6uUP;IkFnpUA;MApII,4BA0CG;IlFgvUP;IkFtpUA;MApII,qBA0CG;IlFmvUP;IkFzpUA;MApII,2BA0CG;IlFsvUP;IkF5pUA;MApII,0BA0CG;IlFyvUP;IkF/pUA;MApII,wBA0CG;IlF4vUP;IkFlqUA;MApII,0BA0CG;IlF+vUP;IkFrqUA;MApII,wBA0CG;IlFkwUP;IkFxqUA;MApII,wBA0CG;IlFqwUP;IkF3qUA;MApII,0BA0CG;IlFwwUP;IkF9qUA;MApII,2BA0CG;IlF2wUP;IkFjrUA;MApII,oBA0CG;IlF8wUP;IkFprUA;MApII,0BA0CG;IlFixUP;IkFvrUA;MApII,yBA0CG;IlFoxUP;IkF1rUA;MApII,uBA0CG;IlFuxUP;IkF7rUA;MApII,yBA0CG;IlF0xUP;IkFhsUA;MApII,uBA0CG;IlF6xUP;IkFnsUA;MApII,uBA0CG;IlFgyUP;IkFtsUA;MApII,yBA0CG;IlFmyUP;IkFzsUA;MApII,0BA0CG;IlFsyUP;IkF5sUA;MApII,mBA0CG;IlFyyUP;IkF/sUA;MApII,yBA0CG;IlF4yUP;IkFltUA;MApII,wBA0CG;IlF+yUP;IkFrtUA;MApII,sBA0CG;IlFkzUP;IkFxtUA;MApII,wBA0CG;IlFqzUP;IkF3tUA;MApII,sBA0CG;IlFwzUP;IkF9tUA;MApII,sBA0CG;IlF2zUP;IkFjuUA;MApII,4BA0CG;IlF8zUP;IkFpuUA;MApII,6BA0CG;IlFi0UP;IkFvuUA;MApII,sBA0CG;IlFo0UP;IkF1uUA;MApII,4BA0CG;IlFu0UP;IkF7uUA;MApII,2BA0CG;IlF00UP;IkFhvUA;MApII,yBA0CG;IlF60UP;IkFnvUA;MApII,2BA0CG;IlFg1UP;IkFtvUA;MApII,yBA0CG;IlFm1UP;IkFzvUA;MApII,yBA0CG;IlFs1UP;IkF5vUA;MApII,gBA0CG;IlFy1UP;IkF/vUA;MApII,iBA0CG;IlF41UP;IkFlwUA;MApII,UA0CG;IlF+1UP;IkFrwUA;MApII,gBA0CG;IlFk2UP;IkFxwUA;MApII,eA0CG;IlFq2UP;IkF3wUA;MApII,aA0CG;IlFw2UP;IkF9wUA;MApII,eA0CG;IlF22UP;IkFjxUA;MApII,aA0CG;IlF82UP;IkFpxUA;MApII,uBA0CG;IlFi3UP;IkFvxUA;MApII,wBA0CG;IlFo3UP;IkF1xUA;MApII,iBA0CG;IlFu3UP;IkF7xUA;MApII,uBA0CG;IlF03UP;IkFhyUA;MApII,sBA0CG;IlF63UP;IkFnyUA;MApII,oBA0CG;IlFg4UP;IkFtyUA;MApII,sBA0CG;IlFm4UP;IkFzyUA;MApII,oBA0CG;IlFs4UP;IkF5yUA;MApII,sBA0CG;IlFy4UP;IkF/yUA;MApII,uBA0CG;IlF44UP;IkFlzUA;MApII,gBA0CG;IlF+4UP;IkFrzUA;MApII,sBA0CG;IlFk5UP;IkFxzUA;MApII,qBA0CG;IlFq5UP;IkF3zUA;MApII,mBA0CG;IlFw5UP;IkF9zUA;MApII,qBA0CG;IlF25UP;IkFj0UA;MApII,mBA0CG;IlF85UP;IkFp0UA;MApII,4BA0CG;IlFi6UP;IkFv0UA;MApII,6BA0CG;IlFo6UP;IkF10UA;MApII,sBA0CG;IlFu6UP;IkF70UA;MApII,4BA0CG;IlF06UP;IkFh1UA;MApII,2BA0CG;IlF66UP;IkFn1UA;MApII,yBA0CG;IlFg7UP;IkFt1UA;MApII,2BA0CG;IlFm7UP;IkFz1UA;MApII,yBA0CG;IlFs7UP;IkF51UA;MApII,2BA0CG;IlFy7UP;IkF/1UA;MApII,4BA0CG;IlF47UP;IkFl2UA;MApII,qBA0CG;IlF+7UP;IkFr2UA;MApII,2BA0CG;IlFk8UP;IkFx2UA;MApII,0BA0CG;IlFq8UP;IkF32UA;MApII,wBA0CG;IlFw8UP;IkF92UA;MApII,0BA0CG;IlF28UP;IkFj3UA;MApII,wBA0CG;IlF88UP;IkFp3UA;MApII,0BA0CG;IlFi9UP;IkFv3UA;MApII,2BA0CG;IlFo9UP;IkF13UA;MApII,oBA0CG;IlFu9UP;IkF73UA;MApII,0BA0CG;IlF09UP;IkFh4UA;MApII,yBA0CG;IlF69UP;IkFn4UA;MApII,uBA0CG;IlFg+UP;IkFt4UA;MApII,yBA0CG;IlFm+UP;IkFz4UA;MApII,uBA0CG;IlFs+UP;IkF54UA;MApII,6BA0CG;IlFy+UP;IkF/4UA;MApII,8BA0CG;IlF4+UP;IkFl5UA;MApII,uBA0CG;IlF++UP;IkFr5UA;MApII,6BA0CG;IlFk/UP;IkFx5UA;MApII,4BA0CG;IlFq/UP;IkF35UA;MApII,0BA0CG;IlFw/UP;IkF95UA;MApII,4BA0CG;IlF2/UP;IkFj6UA;MApII,0BA0CG;IlF8/UP;IkFp6UA;MApII,YA0CG;IlFigVP;IkFv6UA;MApII,aA0CG;IlFogVP;IkF16UA;MApII,MA0CG;IlFugVP;IkF76UA;MApII,YA0CG;IlF0gVP;IkFh7UA;MApII,WA0CG;IlF6gVP;IkFn7UA;MApII,SA0CG;IlFghVP;IkFt7UA;MApII,WA0CG;IlFmhVP;IkFz7UA;MApII,SA0CG;IlFshVP;IkF57UA;MApII,gBA0CG;IlFyhVP;IkF/7UA;MApII,iBA0CG;IlF4hVP;IkFl8UA;MApII,UA0CG;IlF+hVP;IkFr8UA;MApII,gBA0CG;IlFkiVP;IkFx8UA;MApII,eA0CG;IlFqiVP;IkF38UA;MApII,aA0CG;IlFwiVP;IkF98UA;MApII,eA0CG;IlF2iVP;IkFj9UA;MApII,aA0CG;IlF8iVP;IkFp9UA;MApII,wBA0CG;MA1CH,mBA0CG;IlFijVP;IkFv9UA;MApII,yBA0CG;MA1CH,oBA0CG;IlFojVP;IkF19UA;MApII,kBA0CG;MA1CH,aA0CG;IlFujVP;IkF79UA;MApII,wBA0CG;MA1CH,mBA0CG;IlF0jVP;IkFh+UA;MApII,uBA0CG;MA1CH,kBA0CG;IlF6jVP;IkFn+UA;MApII,qBA0CG;MA1CH,gBA0CG;IlFgkVP;IkFt+UA;MApII,uBA0CG;MA1CH,kBA0CG;IlFmkVP;IkFz+UA;MApII,qBA0CG;MA1CH,gBA0CG;IlFskVP;IkF5+UA;MApII,iBA0CG;IlFykVP;IkF/+UA;MApII,eA0CG;IlF4kVP;IkFl/UA;MApII,kBA0CG;IlF+kVP;EACF;EY7lVE;IsEuGA;MApII,mBA0CG;IlFolVP;IkF1/UA;MApII,iBA0CG;IlFulVP;IkF7/UA;MApII,WA0CG;IlF0lVP;IkFhgVA;MApII,sBA0CG;MA1CH,mBA0CG;IlF6lVP;IkFngVA;MApII,oBA0CG;MA1CH,iBA0CG;IlFgmVP;IkFtgVA;MApII,mBA0CG;MA1CH,gBA0CG;IlFmmVP;IkFzgVA;MApII,yBA0CG;MA1CH,sBA0CG;IlFsmVP;IkF5gVA;MApII,mBA0CG;MA1CH,gBA0CG;IlFymVP;IkF/gVA;MApII,eA+CO;IlFumVX;IkFlhVA;MApII,qBA+CO;IlF0mVX;IkFrhVA;MApII,cA+CO;IlF6mVX;IkFxhVA;MApII,aA+CO;IlFgnVX;IkF3hVA;MApII,oBA+CO;IlFmnVX;IkF9hVA;MApII,cA+CO;IlFsnVX;IkFjiVA;MApII,kBA+CO;IlFynVX;IkFpiVA;MApII,mBA+CO;IlF4nVX;IkFviVA;MApII,aA+CO;IlF+nVX;IkF1iVA;MApII,oBA+CO;IlFkoVX;IkF7iVA;MApII,iBA+CO;IlFqoVX;IkFhjVA;MApII,kBA+CO;IlFwoVX;IkFnjVA;MApII,aA+CO;IlF2oVX;IkFtjVA;MApII,cA0CG;IlFmpVP;IkFzjVA;MApII,mBA+CO;IlFipVX;IkF5jVA;MApII,sBA+CO;IlFopVX;IkF/jVA;MApII,2BA+CO;IlFupVX;IkFlkVA;MApII,8BA+CO;IlF0pVX;IkFrkVA;MApII,YA0CG;IlFkqVP;IkFxkVA;MApII,YA0CG;IlFqqVP;IkF3kVA;MApII,cA0CG;IlFwqVP;IkF9kVA;MApII,cA0CG;IlF2qVP;IkFjlVA;MApII,eA+CO;IlFyqVX;IkFplVA;MApII,iBA+CO;IlF4qVX;IkFvlVA;MApII,uBA+CO;IlF+qVX;IkF1lVA;MApII,2BA0CG;IlFurVP;IkF7lVA;MApII,yBA0CG;IlF0rVP;IkFhmVA;MApII,uBA0CG;IlF6rVP;IkFnmVA;MApII,8BA0CG;IlFgsVP;IkFtmVA;MApII,6BA0CG;IlFmsVP;IkFzmVA;MApII,6BA0CG;IlFssVP;IkF5mVA;MApII,oBA0CG;IlFysVP;IkF/mVA;MApII,kBA0CG;IlF4sVP;IkFlnVA;MApII,qBA0CG;IlF+sVP;IkFrnVA;MApII,sBA0CG;IlFktVP;IkFxnVA;MApII,wBA0CG;IlFqtVP;IkF3nVA;MApII,sBA0CG;IlFwtVP;IkF9nVA;MApII,oBA0CG;IlF2tVP;IkFjoVA;MApII,uBA0CG;IlF8tVP;IkFpoVA;MApII,qBA0CG;IlFiuVP;IkFvoVA;MApII,mBA0CG;IlFouVP;IkF1oVA;MApII,qBA0CG;IlFuuVP;IkF7oVA;MApII,oBA0CG;IlF0uVP;IkFhpVA;MApII,yBA0CG;IlF6uVP;IkFnpVA;MApII,uBA0CG;IlFgvVP;IkFtpVA;MApII,qBA0CG;IlFmvVP;IkFzpVA;MApII,4BA0CG;IlFsvVP;IkF5pVA;MApII,2BA0CG;IlFyvVP;IkF/pVA;MApII,sBA0CG;IlF4vVP;IkFlqVA;MApII,gBA0CG;IlF+vVP;IkFrqVA;MApII,sBA0CG;IlFkwVP;IkFxqVA;MApII,oBA0CG;IlFqwVP;IkF3qVA;MApII,kBA0CG;IlFwwVP;IkF9qVA;MApII,oBA0CG;IlF2wVP;IkFjrVA;MApII,mBA0CG;IlF8wVP;IkFprVA;MApII,kBA0CG;IlFixVP;IkFvrVA;MApII,gBA0CG;IlFoxVP;IkF1rVA;MApII,mBA0CG;IlFuxVP;IkF7rVA;MApII,oBA0CG;IlF0xVP;IkFhsVA;MApII,eA+CO;IlFwxVX;IkFnsVA;MApII,eA+CO;IlF2xVX;IkFtsVA;MApII,eA+CO;IlF8xVX;IkFzsVA;MApII,mBA0CG;IlFsyVP;IkF5sVA;MApII,mBA+CO;IlFoyVX;IkF/sVA;MApII,sBA+CO;IlFuyVX;IkFltVA;MApII,qBA+CO;IlF0yVX;IkFrtVA;MApII,SA0CG;IlFkzVP;IkFxtVA;MApII,QA0CG;IlFqzVP;IkF3tVA;MApII,QA0CG;IlFwzVP;IkF9tVA;MApII,QA0CG;IlF2zVP;IkFjuVA;MApII,QA0CG;IlF8zVP;IkFpuVA;MApII,QA0CG;IlFi0VP;IkFvuVA;MApII,QA0CG;IlFo0VP;IkF1uVA;MApII,QA0CG;IlFu0VP;IkF7uVA;MApII,eA0CG;IlF00VP;IkFhvVA;MApII,gBA0CG;IlF60VP;IkFnvVA;MApII,SA0CG;IlFg1VP;IkFtvVA;MApII,eA0CG;IlFm1VP;IkFzvVA;MApII,cA0CG;IlFs1VP;IkF5vVA;MApII,YA0CG;IlFy1VP;IkF/vVA;MApII,cA0CG;IlF41VP;IkFlwVA;MApII,YA0CG;IlF+1VP;IkFrwVA;MApII,YA0CG;IlFk2VP;IkFxwVA;MApII,sBA0CG;IlFq2VP;IkF3wVA;MApII,uBA0CG;IlFw2VP;IkF9wVA;MApII,gBA0CG;IlF22VP;IkFjxVA;MApII,sBA0CG;IlF82VP;IkFpxVA;MApII,qBA0CG;IlFi3VP;IkFvxVA;MApII,mBA0CG;IlFo3VP;IkF1xVA;MApII,qBA0CG;IlFu3VP;IkF7xVA;MApII,mBA0CG;IlF03VP;IkFhyVA;MApII,mBA0CG;IlF63VP;IkFnyVA;MApII,qBA0CG;IlFg4VP;IkFtyVA;MApII,sBA0CG;IlFm4VP;IkFzyVA;MApII,eA0CG;IlFs4VP;IkF5yVA;MApII,qBA0CG;IlFy4VP;IkF/yVA;MApII,oBA0CG;IlF44VP;IkFlzVA;MApII,kBA0CG;IlF+4VP;IkFrzVA;MApII,oBA0CG;IlFk5VP;IkFxzVA;MApII,kBA0CG;IlFq5VP;IkF3zVA;MApII,kBA0CG;IlFw5VP;IkF9zVA;MApII,2BA0CG;IlF25VP;IkFj0VA;MApII,4BA0CG;IlF85VP;IkFp0VA;MApII,qBA0CG;IlFi6VP;IkFv0VA;MApII,2BA0CG;IlFo6VP;IkF10VA;MApII,0BA0CG;IlFu6VP;IkF70VA;MApII,wBA0CG;IlF06VP;IkFh1VA;MApII,0BA0CG;IlF66VP;IkFn1VA;MApII,wBA0CG;IlFg7VP;IkFt1VA;MApII,wBA0CG;IlFm7VP;IkFz1VA;MApII,0BA0CG;IlFs7VP;IkF51VA;MApII,2BA0CG;IlFy7VP;IkF/1VA;MApII,oBA0CG;IlF47VP;IkFl2VA;MApII,0BA0CG;IlF+7VP;IkFr2VA;MApII,yBA0CG;IlFk8VP;IkFx2VA;MApII,uBA0CG;IlFq8VP;IkF32VA;MApII,yBA0CG;IlFw8VP;IkF92VA;MApII,uBA0CG;IlF28VP;IkFj3VA;MApII,uBA0CG;IlF88VP;IkFp3VA;MApII,yBA0CG;IlFi9VP;IkFv3VA;MApII,0BA0CG;IlFo9VP;IkF13VA;MApII,mBA0CG;IlFu9VP;IkF73VA;MApII,yBA0CG;IlF09VP;IkFh4VA;MApII,wBA0CG;IlF69VP;IkFn4VA;MApII,sBA0CG;IlFg+VP;IkFt4VA;MApII,wBA0CG;IlFm+VP;IkFz4VA;MApII,sBA0CG;IlFs+VP;IkF54VA;MApII,sBA0CG;IlFy+VP;IkF/4VA;MApII,4BA0CG;IlF4+VP;IkFl5VA;MApII,6BA0CG;IlF++VP;IkFr5VA;MApII,sBA0CG;IlFk/VP;IkFx5VA;MApII,4BA0CG;IlFq/VP;IkF35VA;MApII,2BA0CG;IlFw/VP;IkF95VA;MApII,yBA0CG;IlF2/VP;IkFj6VA;MApII,2BA0CG;IlF8/VP;IkFp6VA;MApII,yBA0CG;IlFigWP;IkFv6VA;MApII,yBA0CG;IlFogWP;IkF16VA;MApII,gBA0CG;IlFugWP;IkF76VA;MApII,iBA0CG;IlF0gWP;IkFh7VA;MApII,UA0CG;IlF6gWP;IkFn7VA;MApII,gBA0CG;IlFghWP;IkFt7VA;MApII,eA0CG;IlFmhWP;IkFz7VA;MApII,aA0CG;IlFshWP;IkF57VA;MApII,eA0CG;IlFyhWP;IkF/7VA;MApII,aA0CG;IlF4hWP;IkFl8VA;MApII,uBA0CG;IlF+hWP;IkFr8VA;MApII,wBA0CG;IlFkiWP;IkFx8VA;MApII,iBA0CG;IlFqiWP;IkF38VA;MApII,uBA0CG;IlFwiWP;IkF98VA;MApII,sBA0CG;IlF2iWP;IkFj9VA;MApII,oBA0CG;IlF8iWP;IkFp9VA;MApII,sBA0CG;IlFijWP;IkFv9VA;MApII,oBA0CG;IlFojWP;IkF19VA;MApII,sBA0CG;IlFujWP;IkF79VA;MApII,uBA0CG;IlF0jWP;IkFh+VA;MApII,gBA0CG;IlF6jWP;IkFn+VA;MApII,sBA0CG;IlFgkWP;IkFt+VA;MApII,qBA0CG;IlFmkWP;IkFz+VA;MApII,mBA0CG;IlFskWP;IkF5+VA;MApII,qBA0CG;IlFykWP;IkF/+VA;MApII,mBA0CG;IlF4kWP;IkFl/VA;MApII,4BA0CG;IlF+kWP;IkFr/VA;MApII,6BA0CG;IlFklWP;IkFx/VA;MApII,sBA0CG;IlFqlWP;IkF3/VA;MApII,4BA0CG;IlFwlWP;IkF9/VA;MApII,2BA0CG;IlF2lWP;IkFjgWA;MApII,yBA0CG;IlF8lWP;IkFpgWA;MApII,2BA0CG;IlFimWP;IkFvgWA;MApII,yBA0CG;IlFomWP;IkF1gWA;MApII,2BA0CG;IlFumWP;IkF7gWA;MApII,4BA0CG;IlF0mWP;IkFhhWA;MApII,qBA0CG;IlF6mWP;IkFnhWA;MApII,2BA0CG;IlFgnWP;IkFthWA;MApII,0BA0CG;IlFmnWP;IkFzhWA;MApII,wBA0CG;IlFsnWP;IkF5hWA;MApII,0BA0CG;IlFynWP;IkF/hWA;MApII,wBA0CG;IlF4nWP;IkFliWA;MApII,0BA0CG;IlF+nWP;IkFriWA;MApII,2BA0CG;IlFkoWP;IkFxiWA;MApII,oBA0CG;IlFqoWP;IkF3iWA;MApII,0BA0CG;IlFwoWP;IkF9iWA;MApII,yBA0CG;IlF2oWP;IkFjjWA;MApII,uBA0CG;IlF8oWP;IkFpjWA;MApII,yBA0CG;IlFipWP;IkFvjWA;MApII,uBA0CG;IlFopWP;IkF1jWA;MApII,6BA0CG;IlFupWP;IkF7jWA;MApII,8BA0CG;IlF0pWP;IkFhkWA;MApII,uBA0CG;IlF6pWP;IkFnkWA;MApII,6BA0CG;IlFgqWP;IkFtkWA;MApII,4BA0CG;IlFmqWP;IkFzkWA;MApII,0BA0CG;IlFsqWP;IkF5kWA;MApII,4BA0CG;IlFyqWP;IkF/kWA;MApII,0BA0CG;IlF4qWP;IkFllWA;MApII,YA0CG;IlF+qWP;IkFrlWA;MApII,aA0CG;IlFkrWP;IkFxlWA;MApII,MA0CG;IlFqrWP;IkF3lWA;MApII,YA0CG;IlFwrWP;IkF9lWA;MApII,WA0CG;IlF2rWP;IkFjmWA;MApII,SA0CG;IlF8rWP;IkFpmWA;MApII,WA0CG;IlFisWP;IkFvmWA;MApII,SA0CG;IlFosWP;IkF1mWA;MApII,gBA0CG;IlFusWP;IkF7mWA;MApII,iBA0CG;IlF0sWP;IkFhnWA;MApII,UA0CG;IlF6sWP;IkFnnWA;MApII,gBA0CG;IlFgtWP;IkFtnWA;MApII,eA0CG;IlFmtWP;IkFznWA;MApII,aA0CG;IlFstWP;IkF5nWA;MApII,eA0CG;IlFytWP;IkF/nWA;MApII,aA0CG;IlF4tWP;IkFloWA;MApII,wBA0CG;MA1CH,mBA0CG;IlF+tWP;IkFroWA;MApII,yBA0CG;MA1CH,oBA0CG;IlFkuWP;IkFxoWA;MApII,kBA0CG;MA1CH,aA0CG;IlFquWP;IkF3oWA;MApII,wBA0CG;MA1CH,mBA0CG;IlFwuWP;IkF9oWA;MApII,uBA0CG;MA1CH,kBA0CG;IlF2uWP;IkFjpWA;MApII,qBA0CG;MA1CH,gBA0CG;IlF8uWP;IkFppWA;MApII,uBA0CG;MA1CH,kBA0CG;IlFivWP;IkFvpWA;MApII,qBA0CG;MA1CH,gBA0CG;IlFovWP;IkF1pWA;MApII,iBA0CG;IlFuvWP;IkF7pWA;MApII,eA0CG;IlF0vWP;IkFhqWA;MApII,kBA0CG;IlF6vWP;EACF;EY3wWE;IsEuGA;MApII,mBA0CG;IlFkwWP;IkFxqWA;MApII,iBA0CG;IlFqwWP;IkF3qWA;MApII,WA0CG;IlFwwWP;IkF9qWA;MApII,sBA0CG;MA1CH,mBA0CG;IlF2wWP;IkFjrWA;MApII,oBA0CG;MA1CH,iBA0CG;IlF8wWP;IkFprWA;MApII,mBA0CG;MA1CH,gBA0CG;IlFixWP;IkFvrWA;MApII,yBA0CG;MA1CH,sBA0CG;IlFoxWP;IkF1rWA;MApII,mBA0CG;MA1CH,gBA0CG;IlFuxWP;IkF7rWA;MApII,eA+CO;IlFqxWX;IkFhsWA;MApII,qBA+CO;IlFwxWX;IkFnsWA;MApII,cA+CO;IlF2xWX;IkFtsWA;MApII,aA+CO;IlF8xWX;IkFzsWA;MApII,oBA+CO;IlFiyWX;IkF5sWA;MApII,cA+CO;IlFoyWX;IkF/sWA;MApII,kBA+CO;IlFuyWX;IkFltWA;MApII,mBA+CO;IlF0yWX;IkFrtWA;MApII,aA+CO;IlF6yWX;IkFxtWA;MApII,oBA+CO;IlFgzWX;IkF3tWA;MApII,iBA+CO;IlFmzWX;IkF9tWA;MApII,kBA+CO;IlFszWX;IkFjuWA;MApII,aA+CO;IlFyzWX;IkFpuWA;MApII,cA0CG;IlFi0WP;IkFvuWA;MApII,mBA+CO;IlF+zWX;IkF1uWA;MApII,sBA+CO;IlFk0WX;IkF7uWA;MApII,2BA+CO;IlFq0WX;IkFhvWA;MApII,8BA+CO;IlFw0WX;IkFnvWA;MApII,YA0CG;IlFg1WP;IkFtvWA;MApII,YA0CG;IlFm1WP;IkFzvWA;MApII,cA0CG;IlFs1WP;IkF5vWA;MApII,cA0CG;IlFy1WP;IkF/vWA;MApII,eA+CO;IlFu1WX;IkFlwWA;MApII,iBA+CO;IlF01WX;IkFrwWA;MApII,uBA+CO;IlF61WX;IkFxwWA;MApII,2BA0CG;IlFq2WP;IkF3wWA;MApII,yBA0CG;IlFw2WP;IkF9wWA;MApII,uBA0CG;IlF22WP;IkFjxWA;MApII,8BA0CG;IlF82WP;IkFpxWA;MApII,6BA0CG;IlFi3WP;IkFvxWA;MApII,6BA0CG;IlFo3WP;IkF1xWA;MApII,oBA0CG;IlFu3WP;IkF7xWA;MApII,kBA0CG;IlF03WP;IkFhyWA;MApII,qBA0CG;IlF63WP;IkFnyWA;MApII,sBA0CG;IlFg4WP;IkFtyWA;MApII,wBA0CG;IlFm4WP;IkFzyWA;MApII,sBA0CG;IlFs4WP;IkF5yWA;MApII,oBA0CG;IlFy4WP;IkF/yWA;MApII,uBA0CG;IlF44WP;IkFlzWA;MApII,qBA0CG;IlF+4WP;IkFrzWA;MApII,mBA0CG;IlFk5WP;IkFxzWA;MApII,qBA0CG;IlFq5WP;IkF3zWA;MApII,oBA0CG;IlFw5WP;IkF9zWA;MApII,yBA0CG;IlF25WP;IkFj0WA;MApII,uBA0CG;IlF85WP;IkFp0WA;MApII,qBA0CG;IlFi6WP;IkFv0WA;MApII,4BA0CG;IlFo6WP;IkF10WA;MApII,2BA0CG;IlFu6WP;IkF70WA;MApII,sBA0CG;IlF06WP;IkFh1WA;MApII,gBA0CG;IlF66WP;IkFn1WA;MApII,sBA0CG;IlFg7WP;IkFt1WA;MApII,oBA0CG;IlFm7WP;IkFz1WA;MApII,kBA0CG;IlFs7WP;IkF51WA;MApII,oBA0CG;IlFy7WP;IkF/1WA;MApII,mBA0CG;IlF47WP;IkFl2WA;MApII,kBA0CG;IlF+7WP;IkFr2WA;MApII,gBA0CG;IlFk8WP;IkFx2WA;MApII,mBA0CG;IlFq8WP;IkF32WA;MApII,oBA0CG;IlFw8WP;IkF92WA;MApII,eA+CO;IlFs8WX;IkFj3WA;MApII,eA+CO;IlFy8WX;IkFp3WA;MApII,eA+CO;IlF48WX;IkFv3WA;MApII,mBA0CG;IlFo9WP;IkF13WA;MApII,mBA+CO;IlFk9WX;IkF73WA;MApII,sBA+CO;IlFq9WX;IkFh4WA;MApII,qBA+CO;IlFw9WX;IkFn4WA;MApII,SA0CG;IlFg+WP;IkFt4WA;MApII,QA0CG;IlFm+WP;IkFz4WA;MApII,QA0CG;IlFs+WP;IkF54WA;MApII,QA0CG;IlFy+WP;IkF/4WA;MApII,QA0CG;IlF4+WP;IkFl5WA;MApII,QA0CG;IlF++WP;IkFr5WA;MApII,QA0CG;IlFk/WP;IkFx5WA;MApII,QA0CG;IlFq/WP;IkF35WA;MApII,eA0CG;IlFw/WP;IkF95WA;MApII,gBA0CG;IlF2/WP;IkFj6WA;MApII,SA0CG;IlF8/WP;IkFp6WA;MApII,eA0CG;IlFigXP;IkFv6WA;MApII,cA0CG;IlFogXP;IkF16WA;MApII,YA0CG;IlFugXP;IkF76WA;MApII,cA0CG;IlF0gXP;IkFh7WA;MApII,YA0CG;IlF6gXP;IkFn7WA;MApII,YA0CG;IlFghXP;IkFt7WA;MApII,sBA0CG;IlFmhXP;IkFz7WA;MApII,uBA0CG;IlFshXP;IkF57WA;MApII,gBA0CG;IlFyhXP;IkF/7WA;MApII,sBA0CG;IlF4hXP;IkFl8WA;MApII,qBA0CG;IlF+hXP;IkFr8WA;MApII,mBA0CG;IlFkiXP;IkFx8WA;MApII,qBA0CG;IlFqiXP;IkF38WA;MApII,mBA0CG;IlFwiXP;IkF98WA;MApII,mBA0CG;IlF2iXP;IkFj9WA;MApII,qBA0CG;IlF8iXP;IkFp9WA;MApII,sBA0CG;IlFijXP;IkFv9WA;MApII,eA0CG;IlFojXP;IkF19WA;MApII,qBA0CG;IlFujXP;IkF79WA;MApII,oBA0CG;IlF0jXP;IkFh+WA;MApII,kBA0CG;IlF6jXP;IkFn+WA;MApII,oBA0CG;IlFgkXP;IkFt+WA;MApII,kBA0CG;IlFmkXP;IkFz+WA;MApII,kBA0CG;IlFskXP;IkF5+WA;MApII,2BA0CG;IlFykXP;IkF/+WA;MApII,4BA0CG;IlF4kXP;IkFl/WA;MApII,qBA0CG;IlF+kXP;IkFr/WA;MApII,2BA0CG;IlFklXP;IkFx/WA;MApII,0BA0CG;IlFqlXP;IkF3/WA;MApII,wBA0CG;IlFwlXP;IkF9/WA;MApII,0BA0CG;IlF2lXP;IkFjgXA;MApII,wBA0CG;IlF8lXP;IkFpgXA;MApII,wBA0CG;IlFimXP;IkFvgXA;MApII,0BA0CG;IlFomXP;IkF1gXA;MApII,2BA0CG;IlFumXP;IkF7gXA;MApII,oBA0CG;IlF0mXP;IkFhhXA;MApII,0BA0CG;IlF6mXP;IkFnhXA;MApII,yBA0CG;IlFgnXP;IkFthXA;MApII,uBA0CG;IlFmnXP;IkFzhXA;MApII,yBA0CG;IlFsnXP;IkF5hXA;MApII,uBA0CG;IlFynXP;IkF/hXA;MApII,uBA0CG;IlF4nXP;IkFliXA;MApII,yBA0CG;IlF+nXP;IkFriXA;MApII,0BA0CG;IlFkoXP;IkFxiXA;MApII,mBA0CG;IlFqoXP;IkF3iXA;MApII,yBA0CG;IlFwoXP;IkF9iXA;MApII,wBA0CG;IlF2oXP;IkFjjXA;MApII,sBA0CG;IlF8oXP;IkFpjXA;MApII,wBA0CG;IlFipXP;IkFvjXA;MApII,sBA0CG;IlFopXP;IkF1jXA;MApII,sBA0CG;IlFupXP;IkF7jXA;MApII,4BA0CG;IlF0pXP;IkFhkXA;MApII,6BA0CG;IlF6pXP;IkFnkXA;MApII,sBA0CG;IlFgqXP;IkFtkXA;MApII,4BA0CG;IlFmqXP;IkFzkXA;MApII,2BA0CG;IlFsqXP;IkF5kXA;MApII,yBA0CG;IlFyqXP;IkF/kXA;MApII,2BA0CG;IlF4qXP;IkFllXA;MApII,yBA0CG;IlF+qXP;IkFrlXA;MApII,yBA0CG;IlFkrXP;IkFxlXA;MApII,gBA0CG;IlFqrXP;IkF3lXA;MApII,iBA0CG;IlFwrXP;IkF9lXA;MApII,UA0CG;IlF2rXP;IkFjmXA;MApII,gBA0CG;IlF8rXP;IkFpmXA;MApII,eA0CG;IlFisXP;IkFvmXA;MApII,aA0CG;IlFosXP;IkF1mXA;MApII,eA0CG;IlFusXP;IkF7mXA;MApII,aA0CG;IlF0sXP;IkFhnXA;MApII,uBA0CG;IlF6sXP;IkFnnXA;MApII,wBA0CG;IlFgtXP;IkFtnXA;MApII,iBA0CG;IlFmtXP;IkFznXA;MApII,uBA0CG;IlFstXP;IkF5nXA;MApII,sBA0CG;IlFytXP;IkF/nXA;MApII,oBA0CG;IlF4tXP;IkFloXA;MApII,sBA0CG;IlF+tXP;IkFroXA;MApII,oBA0CG;IlFkuXP;IkFxoXA;MApII,sBA0CG;IlFquXP;IkF3oXA;MApII,uBA0CG;IlFwuXP;IkF9oXA;MApII,gBA0CG;IlF2uXP;IkFjpXA;MApII,sBA0CG;IlF8uXP;IkFppXA;MApII,qBA0CG;IlFivXP;IkFvpXA;MApII,mBA0CG;IlFovXP;IkF1pXA;MApII,qBA0CG;IlFuvXP;IkF7pXA;MApII,mBA0CG;IlF0vXP;IkFhqXA;MApII,4BA0CG;IlF6vXP;IkFnqXA;MApII,6BA0CG;IlFgwXP;IkFtqXA;MApII,sBA0CG;IlFmwXP;IkFzqXA;MApII,4BA0CG;IlFswXP;IkF5qXA;MApII,2BA0CG;IlFywXP;IkF/qXA;MApII,yBA0CG;IlF4wXP;IkFlrXA;MApII,2BA0CG;IlF+wXP;IkFrrXA;MApII,yBA0CG;IlFkxXP;IkFxrXA;MApII,2BA0CG;IlFqxXP;IkF3rXA;MApII,4BA0CG;IlFwxXP;IkF9rXA;MApII,qBA0CG;IlF2xXP;IkFjsXA;MApII,2BA0CG;IlF8xXP;IkFpsXA;MApII,0BA0CG;IlFiyXP;IkFvsXA;MApII,wBA0CG;IlFoyXP;IkF1sXA;MApII,0BA0CG;IlFuyXP;IkF7sXA;MApII,wBA0CG;IlF0yXP;IkFhtXA;MApII,0BA0CG;IlF6yXP;IkFntXA;MApII,2BA0CG;IlFgzXP;IkFttXA;MApII,oBA0CG;IlFmzXP;IkFztXA;MApII,0BA0CG;IlFszXP;IkF5tXA;MApII,yBA0CG;IlFyzXP;IkF/tXA;MApII,uBA0CG;IlF4zXP;IkFluX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IlFwiYP;IkF98XA;MApII,qBA0CG;IlF2iYP;IkFj9XA;MApII,sBA0CG;IlF8iYP;IkFp9XA;MApII,wBA0CG;IlFijYP;IkFv9XA;MApII,sBA0CG;IlFojYP;IkF19XA;MApII,oBA0CG;IlFujYP;IkF79XA;MApII,uBA0CG;IlF0jYP;IkFh+XA;MApII,qBA0CG;IlF6jYP;IkFn+XA;MApII,mBA0CG;IlFgkYP;IkFt+XA;MApII,qBA0CG;IlFmkYP;IkFz+XA;MApII,oBA0CG;IlFskYP;IkF5+XA;MApII,yBA0CG;IlFykYP;IkF/+XA;MApII,uBA0CG;IlF4kYP;IkFl/XA;MApII,qBA0CG;IlF+kYP;IkFr/XA;MApII,4BA0CG;IlFklYP;IkFx/XA;MApII,2BA0CG;IlFqlYP;IkF3/XA;MApII,sBA0CG;IlFwlYP;IkF9/XA;MApII,gBA0CG;IlF2lYP;IkFjgYA;MApII,sBA0CG;IlF8lYP;IkFpgYA;MApII,oBA0CG;IlFimYP;IkFvgYA;MApII,kBA0CG;IlFomYP;IkF1gYA;MApII,oBA0CG;IlFumYP;IkF7gYA;MApII,mBA0CG;IlF0mYP;IkFhhYA;MApII,kBA0CG;IlF6mYP;IkFnhYA;MApII,gBA0CG;IlFgnYP;IkFthYA;MApII,mBA0CG;IlFmnYP;IkFzhYA;MApII,oBA0CG;IlFsnYP;IkF5hYA;MApII,eA+CO;IlFonYX;IkF/hYA;MApII,eA+CO;IlFunYX;IkFliYA;MApII,eA+CO;IlF0nYX;IkFriYA;MApII,mBA0CG;IlFkoYP;IkFxiYA;MApII,mBA+CO;IlFgoYX;IkF3iYA;MApII,sBA+CO;IlFmoYX;IkF9iYA;MApII,qBA+CO;IlFsoYX;IkFjjYA;MApII,SA0CG;IlF8oYP;IkFpjYA;MApII,QA0CG;IlFipYP;IkFvjYA;MApII,QA0CG;IlFopYP;IkF1jYA;MApII,QA0CG;IlFupYP;IkF7jYA;MApII,QA0CG;IlF0pYP;IkFhkYA;MApII,QA0CG;IlF6pYP;IkFnkYA;MApII,QA0CG;IlFgqYP;IkFtkYA;MApII,QA0CG;IlFmqYP;IkFzkYA;MApII,eA0CG;IlFsqYP;IkF5kYA;MApII,gBA0CG;IlFyqYP;IkF/kYA;MApII,SA0CG;IlF4qYP;IkFllYA;MApII,eA0CG;IlF+qYP;IkFrlYA;MApII,cA0CG;IlFkrYP;IkFxlYA;MApII,YA0CG;IlFqrYP;IkF3lYA;MApII,cA0CG;IlFwrYP;IkF9lYA;MApII,YA0CG;IlF2rYP;IkFjmYA;MApII,YA0CG;IlF8rYP;IkFpmYA;MApII,sBA0CG;IlFisYP;IkFvmYA;MApII,uBA0CG;IlFosYP;IkF1mYA;MApII,gBA0CG;IlFusYP;IkF7mYA;MApII,sBA0CG;IlF0sYP;IkFhnYA;MApII,qBA0CG;IlF6sYP;IkFnnYA;MApII,mBA0CG;IlFgtYP;IkFtnYA;MApII,qBA0CG;IlFmtYP;IkFznYA;MApII,mBA0CG;IlFstYP;IkF5nYA;MApII,mBA0CG;IlFytYP;IkF/nYA;MApII,qBA0CG;IlF4tYP;IkFloYA;MApII,sBA0CG;IlF+tYP;IkFroYA;MApII,eA0CG;IlFkuYP;IkFxoYA;MApII,qBA0CG;IlFquYP;IkF3oYA;MApII,oBA0CG;IlFwuYP;IkF9oYA;MApII,kBA0CG;IlF2uYP;IkFjpYA;MApII,oBA0CG;IlF8uYP;IkFppYA;MApII,kBA0CG;IlFivYP;IkFvpYA;MApII,kBA0CG;IlFovYP;IkF1pYA;MApII,2BA0CG;IlFuvYP;IkF7pYA;MApII,4BA0CG;IlF0vYP;IkFhqYA;MApII,qBA0CG;IlF6vYP;IkFnqYA;MApII,2BA0CG;IlFgwYP;IkFtqYA;MApII,0BA0CG;IlFmwYP;IkFzqYA;MApII,wBA0CG;IlFswYP;IkF5qYA;MApII,0BA0CG;IlFywYP;IkF/qYA;MApII,wBA0CG;IlF4wYP;IkFlrYA;MApII,wBA0CG;IlF+wYP;IkFrrYA;MApII,0BA0CG;IlFkxYP;IkFxrYA;MApII,2BA0CG;IlFqxYP;IkF3rYA;MApII,oBA0CG;IlFwxYP;IkF9rYA;MApII,0BA0CG;IlF2xYP;IkFjsYA;MApII,yBA0CG;IlF8xYP;IkFpsYA;MApII,uBA0CG;IlFiyYP;IkFvsYA;MApII,yBA0CG;IlFoyYP;IkF1sYA;MApII,uBA0CG;IlFuyYP;IkF7sYA;MApII,uBA0CG;IlF0yYP;IkFhtYA;MApII,yBA0CG;IlF6yYP;IkFntYA;MApII,0BA0CG;IlFgzYP;IkFttYA;MApII,mBA0CG;IlFmzYP;IkFztYA;MApII,yBA0CG;IlFszYP;IkF5tYA;MApII,wBA0CG;IlFyzYP;IkF/tYA;MApII,sBA0CG;IlF4zYP;IkFluYA;MApII,wBA0CG;IlF+zYP;IkFruYA;MApII,sBA0CG;IlFk0YP;IkFxuYA;MApII,sBA0CG;IlFq0YP;IkF3uYA;MApII,4BA0CG;IlFw0YP;IkF9uYA;MApII,6BA0CG;IlF20YP;IkFjvYA;MApII,sBA0CG;IlF80YP;IkFpvYA;MApII,4BA0CG;IlFi1YP;IkFvvYA;MApII,2BA0CG;IlFo1YP;IkF1vYA;MApII,yBA0CG;IlFu1YP;IkF7vYA;MApII,2BA0CG;IlF01YP;IkFhwYA;MApII,yBA0CG;IlF61YP;IkFnwYA;MApII,yBA0CG;IlFg2YP;IkFtwYA;MApII,gBA0CG;IlFm2YP;IkFzwYA;MApII,iBA0CG;IlFs2YP;IkF5wYA;MApII,UA0CG;IlFy2YP;IkF/wYA;MApII,gBA0CG;IlF42YP;IkFlxYA;MApII,eA0CG;IlF+2YP;IkFrxYA;MApII,aA0CG;IlFk3YP;IkFxxYA;MApII,eA0CG;IlFq3YP;IkF3xYA;MApII,aA0CG;IlFw3YP;IkF9xYA;MApII,uBA0CG;IlF23YP;IkFjyYA;MApII,wBA0CG;IlF83YP;IkFpyYA;MApII,iBA0CG;IlFi4YP;IkFvyYA;MApII,uBA0CG;IlFo4YP;IkF1yYA;MApII,sBA0CG;IlFu4YP;IkF7yYA;MApII,oBA0CG;IlF04YP;IkFhzYA;MApII,sBA0CG;IlF64YP;IkFnzYA;MApII,oBA0CG;IlFg5YP;IkFtzYA;MApII,sBA0CG;IlFm5YP;IkFzzYA;MApII,uBA0CG;IlFs5YP;IkF5zYA;MApII,gBA0CG;IlFy5YP;IkF/zYA;MApII,sBA0CG;IlF45YP;IkFl0YA;MApII,qBA0CG;IlF+5YP;IkFr0YA;MApII,mBA0CG;IlFk6YP;IkFx0YA;MApII,qBA0CG;IlFq6YP;IkF30YA;MApII,mBA0CG;IlFw6YP;IkF90YA;MApII,4BA0CG;IlF26YP;IkFj1YA;MApII,6BA0CG;IlF86YP;IkFp1YA;MApII,sBA0CG;IlFi7YP;IkFv1YA;MApII,4BA0CG;IlFo7YP;IkF11YA;MApII,2BA0CG;IlFu7YP;IkF71YA;MApII,yBA0CG;IlF07YP;IkFh2YA;MApII,2BA0CG;IlF67YP;IkFn2YA;MApII,yBA0CG;IlFg8YP;IkFt2YA;MApII,2BA0CG;IlFm8YP;IkFz2YA;MApII,4BA0CG;IlFs8YP;IkF52YA;MApII,qBA0CG;IlFy8YP;IkF/2YA;MApII,2BA0CG;IlF48YP;IkFl3YA;MApII,0BA0CG;IlF+8YP;IkFr3YA;MApII,wBA0CG;IlFk9YP;IkFx3YA;MApII,0BA0CG;IlFq9YP;IkF33YA;MApII,wBA0CG;IlFw9YP;IkF93YA;MApII,0BA0CG;IlF29YP;IkFj4YA;MApII,2BA0CG;IlF89YP;IkFp4YA;MApII,oBA0CG;IlFi+YP;IkFv4YA;MApII,0BA0CG;IlFo+YP;IkF14YA;MApII,yBA0CG;IlFu+YP;IkF74YA;MApII,uBA0CG;IlF0+YP;IkFh5YA;MApII,yBA0CG;IlF6+YP;IkFn5YA;MApII,uBA0CG;IlFg/YP;IkFt5YA;MApII,6BA0CG;IlFm/YP;IkFz5YA;MApII,8BA0CG;IlFs/YP;IkF55YA;MApII,uBA0CG;IlFy/YP;IkF/5YA;MApII,6BA0CG;IlF4/YP;IkFl6YA;MApII,4BA0CG;IlF+/YP;IkFr6YA;MApII,0BA0CG;IlFkgZP;IkFx6YA;MApII,4BA0CG;IlFqgZP;IkF36YA;MApII,0BA0CG;IlFwgZP;IkF96YA;MApII,YA0CG;IlF2gZP;IkFj7YA;MApII,aA0CG;IlF8gZP;IkFp7YA;MApII,MA0CG;IlFihZP;IkFv7YA;MApII,YA0CG;IlFohZP;IkF17YA;MApII,WA0CG;IlFuhZP;IkF77YA;MApII,SA0CG;IlF0hZP;IkFh8YA;MApII,WA0CG;IlF6hZP;IkFn8YA;MApII,SA0CG;IlFgiZP;IkFt8YA;MApII,gBA0CG;IlFmiZP;IkFz8YA;MApII,iBA0CG;IlFsiZP;IkF58YA;MApII,UA0CG;IlFyiZP;IkF/8YA;MApII,gBA0CG;IlF4iZP;IkFl9YA;MApII,eA0CG;IlF+iZP;IkFr9YA;MApII,aA0CG;IlFkjZP;IkFx9YA;MApII,eA0CG;IlFqjZP;IkF39YA;MApII,aA0CG;IlFwjZP;IkF99YA;MApII,wBA0CG;MA1CH,mBA0CG;IlF2jZP;IkFj+YA;MApII,yBA0CG;MA1CH,oBA0CG;IlF8jZP;IkFp+YA;MApII,kBA0CG;MA1CH,aA0CG;IlFikZP;IkFv+YA;MApII,wBA0CG;MA1CH,mBA0CG;IlFokZP;IkF1+YA;MApII,uBA0CG;MA1CH,kBA0CG;IlFukZP;IkF7+YA;MApII,qBA0CG;MA1CH,gBA0CG;IlF0kZP;IkFh/YA;MApII,uBA0CG;MA1CH,kBA0CG;IlF6kZP;IkFn/YA;MApII,qBA0CG;MA1CH,gBA0CG;IlFglZP;IkFt/YA;MApII,iBA0CG;IlFmlZP;IkFz/YA;MApII,eA0CG;IlFslZP;IkF5/YA;MApII,kBA0CG;IlFylZP;EACF;EYvmZE;IsEuGA;MApII,mBA0CG;IlF8lZP;IkFpgZA;MApII,iBA0CG;IlFimZP;IkFvgZA;MApII,WA0CG;IlFomZP;IkF1gZA;MApII,sBA0CG;MA1CH,mBA0CG;IlFumZP;IkF7gZA;MApII,oBA0CG;MA1CH,iBA0CG;IlF0mZP;IkFhhZA;MApII,mBA0CG;MA1CH,gBA0CG;IlF6mZP;IkFnhZA;MApII,yBA0CG;MA1CH,sBA0CG;IlFgnZP;IkFthZA;MApII,mBA0CG;MA1CH,gBA0CG;IlFmnZP;IkFzhZA;MApII,eA+CO;IlFinZX;IkF5hZA;MApII,qBA+CO;IlFonZX;IkF/hZA;MApII,cA+CO;IlFunZX;IkFliZA;MApII,aA+CO;IlF0nZX;IkFriZA;MApII,oBA+CO;IlF6nZX;IkFxiZA;MApII,cA+CO;IlFgoZX;IkF3iZA;MApII,kBA+CO;IlFmoZX;IkF9iZA;MApII,mBA+CO;IlFsoZX;IkFjjZA;MApII,aA+CO;IlFyoZX;IkFpjZA;MApII,oBA+CO;IlF4oZX;IkFvjZA;MApII,iBA+CO;IlF+oZX;IkF1jZA;MApII,kBA+CO;IlFkpZX;IkF7jZA;MApII,aA+CO;IlFqpZX;IkFhkZA;MApII,cA0CG;IlF6pZP;IkFnkZA;MApII,mBA+CO;IlF2pZX;IkFtkZA;MApII,sBA+CO;IlF8pZX;IkFzkZA;MApII,2BA+CO;IlFiqZX;IkF5kZA;MApII,8BA+CO;IlFoqZX;IkF/kZA;MApII,YA0CG;IlF4qZP;IkFllZA;MApII,YA0CG;IlF+qZP;IkFrlZA;MApII,cA0CG;IlFkrZP;IkFxlZA;MApII,cA0CG;IlFqrZP;IkF3lZA;MApII,eA+CO;IlFmrZX;IkF9lZA;MApII,iBA+CO;IlFsrZX;IkFjmZA;MApII,uBA+CO;IlFyrZX;IkFpmZA;MApII,2BA0CG;IlFisZP;IkFvmZA;MApII,yBA0CG;IlFosZP;IkF1mZA;MApII,uBA0CG;IlFusZP;IkF7mZA;MApII,8BA0CG;IlF0sZP;IkFhnZA;MApII,6BA0CG;IlF6sZP;IkFnnZA;MApII,6BA0CG;IlFgtZP;IkFtnZA;MApII,oBA0CG;IlFmtZP;IkFznZA;MApII,kBA0CG;IlFstZP;IkF5nZA;MApII,qBA0CG;IlFytZP;IkF/nZA;MApII,sBA0CG;IlF4tZP;IkFloZA;MApII,wBA0CG;IlF+tZP;IkFroZA;MApII,sBA0CG;IlFkuZP;IkFxoZA;MApII,oBA0CG;IlFquZP;IkF3oZA;MApII,uBA0CG;IlFwuZP;IkF9oZA;MApII,qBA0CG;IlF2uZP;IkFjpZA;MApII,mBA0CG;IlF8uZP;IkFppZA;MApII,qBA0CG;IlFivZP;IkFvpZA;MApII,oBA0CG;IlFovZP;IkF1pZA;MApII,yBA0CG;IlFuvZP;IkF7pZA;MApII,uBA0CG;IlF0vZP;IkFhqZA;MApII,qBA0CG;IlF6vZP;IkFnqZA;MApII,4BA0CG;IlFgwZP;IkFtqZA;MApII,2BA0CG;IlFmwZP;IkFzqZA;MApII,sBA0CG;IlFswZP;IkF5qZA;MApII,gBA0CG;IlFywZP;IkF/qZA;MApII,sBA0CG;IlF4wZP;IkFlrZA;MApII,oBA0CG;IlF+wZP;IkFrrZA;MApII,kBA0CG;IlFkxZP;IkFxrZA;MApII,oBA0CG;IlFqxZP;IkF3rZA;MApII,mBA0CG;IlFwxZP;IkF9rZA;MApII,kBA0CG;IlF2xZP;IkFjsZA;MApII,gBA0CG;IlF8xZP;IkFpsZA;MApII,mBA0CG;IlFiyZP;IkFvsZA;MApII,oBA0CG;IlFoyZP;IkF1sZA;MApII,eA+CO;IlFkyZX;IkF7sZA;MApII,eA+CO;IlFqyZX;IkFhtZA;MApII,eA+CO;IlFwyZX;IkFntZA;MApII,mBA0CG;IlFgzZP;IkFttZA;MApII,mBA+CO;IlF8yZX;IkFztZA;MApII,sBA+CO;IlFizZX;IkF5tZA;MApII,qBA+CO;IlFozZX;IkF/tZA;MApII,SA0CG;IlF4zZP;IkFluZA;MApII,QA0CG;IlF+zZP;IkFruZA;MApII,QA0CG;IlFk0ZP;IkFxuZA;MApII,QA0CG;IlFq0ZP;IkF3uZA;MApII,QA0CG;IlFw0ZP;IkF9uZA;MApII,QA0CG;IlF20ZP;IkFjvZA;MApII,QA0CG;IlF80ZP;IkFpvZA;MApII,QA0CG;IlFi1ZP;IkFvvZA;MApII,eA0CG;IlFo1ZP;IkF1vZA;MApII,gBA0CG;IlFu1ZP;IkF7vZA;MApII,SA0CG;IlF01ZP;IkFhwZA;MApII,eA0CG;IlF61ZP;IkFnwZA;MApII,cA0CG;IlFg2ZP;IkFtwZA;MApII,YA0CG;IlFm2ZP;IkFzwZA;MApII,cA0CG;IlFs2ZP;IkF5wZA;MApII,YA0CG;IlFy2ZP;IkF/wZA;MApII,YA0CG;IlF42ZP;IkFlxZA;MApII,sBA0CG;IlF+2ZP;IkFrxZA;MApII,uBA0CG;IlFk3ZP;IkFxxZA;MApII,gBA0CG;IlFq3ZP;IkF3xZA;MApII,sBA0CG;IlFw3ZP;IkF9xZA;MApII,qBA0CG;IlF23ZP;IkFjyZA;MApII,mBA0CG;IlF83ZP;IkFpyZA;MApII,qBA0CG;IlFi4ZP;IkFvyZA;MApII,mBA0CG;IlFo4ZP;IkF1yZA;MApII,mBA0CG;IlFu4ZP;IkF7yZA;MApII,qBA0CG;IlF04ZP;IkFhzZA;MApII,sBA0CG;IlF64ZP;IkFnzZA;MApII,eA0CG;IlFg5ZP;IkFtzZA;MApII,qBA0CG;IlFm5ZP;IkFzzZA;MApII,oBA0CG;IlFs5ZP;IkF5zZA;MApII,kBA0CG;IlFy5ZP;IkF/zZA;MApII,oBA0CG;IlF45ZP;IkFl0ZA;MApII,kBA0CG;IlF+5ZP;IkFr0ZA;MApII,kBA0CG;IlFk6ZP;IkFx0ZA;MApII,2BA0CG;IlFq6ZP;IkF30ZA;MApII,4BA0CG;IlFw6ZP;IkF90ZA;MApII,qBA0CG;IlF26ZP;IkFj1ZA;MApII,2BA0CG;IlF86ZP;IkFp1ZA;MApII,0BA0CG;IlFi7ZP;IkFv1ZA;MApII,wBA0CG;IlFo7ZP;IkF11ZA;MApII,0BA0CG;IlFu7ZP;IkF71ZA;MApII,wBA0CG;IlF07ZP;IkFh2ZA;MApII,wBA0CG;IlF67ZP;IkFn2ZA;MApII,0BA0CG;IlFg8ZP;IkFt2ZA;MApII,2BA0CG;IlFm8ZP;IkFz2ZA;MApII,oBA0CG;IlFs8ZP;IkF52ZA;MApII,0BA0CG;IlFy8ZP;IkF/2ZA;MApII,yBA0CG;IlF48ZP;IkFl3ZA;MApII,uBA0CG;IlF+8ZP;IkFr3ZA;MApII,yBA0CG;IlFk9ZP;IkFx3ZA;MApII,uBA0CG;IlFq9ZP;IkF33ZA;MApII,uBA0CG;IlFw9ZP;IkF93ZA;MApII,yBA0CG;IlF29ZP;IkFj4ZA;MApII,0BA0CG;IlF89ZP;IkFp4ZA;MApII,mBA0CG;IlFi+ZP;IkFv4ZA;MApII,yBA0CG;IlFo+ZP;IkF14ZA;MApII,wBA0CG;IlFu+ZP;IkF74ZA;MApII,sBA0CG;IlF0+ZP;IkFh5ZA;MApII,wBA0CG;IlF6+ZP;IkFn5ZA;MApII,sBA0CG;IlFg/ZP;IkFt5ZA;MApII,sBA0CG;IlFm/ZP;IkFz5ZA;MApII,4BA0CG;IlFs/ZP;IkF55ZA;MApII,6BA0CG;IlFy/ZP;IkF/5ZA;MApII,sBA0CG;IlF4/ZP;IkFl6ZA;MApII,4BA0CG;IlF+/ZP;IkFr6ZA;MApII,2BA0CG;IlFkgaP;IkFx6ZA;MApII,yBA0CG;IlFqgaP;IkF36ZA;MApII,2BA0CG;IlFwgaP;IkF96ZA;MApII,yBA0CG;IlF2gaP;IkFj7ZA;MApII,yBA0CG;IlF8gaP;IkFp7ZA;MApII,gBA0CG;IlFihaP;IkFv7ZA;MApII,iBA0CG;IlFohaP;IkF17ZA;MApII,UA0CG;IlFuhaP;IkF77ZA;MApII,gBA0CG;IlF0haP;IkFh8ZA;MApII,eA0CG;IlF6haP;IkFn8ZA;MApII,aA0CG;IlFgiaP;IkFt8ZA;MApII,eA0CG;IlFmiaP;IkFz8ZA;MApII,aA0CG;IlFsiaP;IkF58ZA;MApII,uBA0CG;IlFyiaP;IkF/8ZA;MApII,wBA0CG;IlF4iaP;IkFl9ZA;MApII,iBA0CG;IlF+iaP;IkFr9ZA;MApII,uBA0CG;IlFkjaP;IkFx9ZA;MApII,sBA0CG;IlFqjaP;IkF39ZA;MApII,oBA0CG;IlFwjaP;IkF99ZA;MApII,sBA0CG;IlF2jaP;IkFj+ZA;MApII,oBA0CG;IlF8jaP;IkFp+ZA;MApII,sBA0CG;IlFikaP;IkFv+ZA;MApII,uBA0CG;IlFokaP;IkF1+ZA;MApII,gBA0CG;IlFukaP;IkF7+ZA;MApII,sBA0CG;IlF0kaP;IkFh/ZA;MApII,qBA0CG;IlF6kaP;IkFn/ZA;MApII,mBA0CG;IlFglaP;IkFt/ZA;MApII,qBA0CG;IlFmlaP;IkFz/ZA;MApII,mBA0CG;IlFslaP;IkF5/ZA;MApII,4BA0CG;IlFylaP;IkF//ZA;MApII,6BA0CG;IlF4laP;IkFlgaA;MApII,sBA0CG;IlF+laP;IkFrgaA;MApII,4BA0CG;IlFkmaP;IkFxgaA;MApII,2BA0CG;IlFqmaP;IkF3gaA;MApII,yBA0CG;IlFwmaP;IkF9gaA;MApII,2BA0CG;IlF2maP;IkFjhaA;MApII,yBA0CG;IlF8maP;IkFphaA;MApII,2BA0CG;IlFinaP;IkFvhaA;MApII,4BA0CG;IlFonaP;IkF1haA;MApII,qBA0CG;IlFunaP;IkF7haA;MApII,2BA0CG;IlF0naP;IkFhiaA;MApII,0BA0CG;IlF6naP;IkFniaA;MApII,wBA0CG;IlFgoaP;IkFtiaA;MApII,0BA0CG;IlFmoaP;IkFziaA;MApII,wBA0CG;IlFsoaP;IkF5iaA;MApII,0BA0CG;IlFyoaP;IkF/iaA;MApII,2BA0CG;IlF4oaP;IkFljaA;MApII,oBA0CG;IlF+oaP;IkFrjaA;MApII,0BA0CG;IlFkpaP;IkFxjaA;MApII,yBA0CG;IlFqpaP;IkF3jaA;MApII,uBA0CG;IlFwpaP;IkF9jaA;MApII,yBA0CG;IlF2paP;IkFjkaA;MApII,uBA0CG;IlF8paP;IkFpkaA;MApII,6BA0CG;IlFiqaP;IkFvkaA;MApII,8BA0CG;IlFoqaP;IkF1kaA;MApII,uBA0CG;IlFuqaP;IkF7kaA;MApII,6BA0CG;IlF0qaP;IkFhlaA;MApII,4BA0CG;IlF6qaP;IkFnlaA;MApII,0BA0CG;IlFgraP;IkFtlaA;MApII,4BA0CG;IlFmraP;IkFzlaA;MApII,0BA0CG;IlFsraP;IkF5laA;MApII,YA0CG;IlFyraP;IkF/laA;MApII,aA0CG;IlF4raP;IkFlmaA;MApII,MA0CG;IlF+raP;IkFrmaA;MApII,YA0CG;IlFksaP;IkFxmaA;MApII,WA0CG;IlFqsaP;IkF3maA;MApII,SA0CG;IlFwsaP;IkF9maA;MApII,WA0CG;IlF2saP;IkFjnaA;MApII,SA0CG;IlF8saP;IkFpnaA;MApII,gBA0CG;IlFitaP;IkFvnaA;MApII,iBA0CG;IlFotaP;IkF1naA;MApII,UA0CG;IlFutaP;IkF7naA;MApII,gBA0CG;IlF0taP;IkFhoaA;MApII,eA0CG;IlF6taP;IkFnoaA;MApII,aA0CG;IlFguaP;IkFtoaA;MApII,eA0CG;IlFmuaP;IkFzoaA;MApII,aA0CG;IlFsuaP;IkF5oaA;MApII,wBA0CG;MA1CH,mBA0CG;IlFyuaP;IkF/oaA;MApII,yBA0CG;MA1CH,oBA0CG;IlF4uaP;IkFlpaA;MApII,kBA0CG;MA1CH,aA0CG;IlF+uaP;IkFrpaA;MApII,wBA0CG;MA1CH,mBA0CG;IlFkvaP;IkFxpaA;MApII,uBA0CG;MA1CH,kBA0CG;IlFqvaP;IkF3paA;MApII,qBA0CG;MA1CH,gBA0CG;IlFwvaP;IkF9paA;MApII,uBA0CG;MA1CH,kBA0CG;IlF2vaP;IkFjqaA;MApII,qBA0CG;MA1CH,gBA0CG;IlF8vaP;IkFpqaA;MApII,iBA0CG;IlFiwaP;IkFvqaA;MApII,eA0CG;IlFowaP;IkF1qaA;MApII,kBA0CG;IlFuwaP;EACF;AACF","file":"bootstrap.css","sourcesContent":["@charset \"UTF-8\";\n/*!\n  * Bootstrap  v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n:root {\n  --blue-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.24 240deg));\n  --blue-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.24 240deg));\n  --blue-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.24 240deg));\n  --blue-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.24 240deg));\n  --blue-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.24 240deg));\n  --blue-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.24 240deg));\n  --blue-500: oklch(60% 0.24 240deg);\n  --blue-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.24 240deg));\n  --blue-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.24 240deg));\n  --blue-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.24 240deg));\n  --blue-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.24 240deg));\n  --blue-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.24 240deg));\n  --blue-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.24 240deg));\n  --indigo-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.26 288deg));\n  --indigo-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.26 288deg));\n  --indigo-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.26 288deg));\n  --indigo-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.26 288deg));\n  --indigo-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.26 288deg));\n  --indigo-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.26 288deg));\n  --indigo-500: oklch(56% 0.26 288deg);\n  --indigo-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.26 288deg));\n  --indigo-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.26 288deg));\n  --indigo-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.26 288deg));\n  --indigo-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.26 288deg));\n  --indigo-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.26 288deg));\n  --indigo-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.26 288deg));\n  --violet-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 300deg));\n  --violet-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 300deg));\n  --violet-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 300deg));\n  --violet-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 300deg));\n  --violet-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 300deg));\n  --violet-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 300deg));\n  --violet-500: oklch(56% 0.24 300deg);\n  --violet-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 300deg));\n  --violet-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 300deg));\n  --violet-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 300deg));\n  --violet-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 300deg));\n  --violet-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 300deg));\n  --violet-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 300deg));\n  --purple-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 320deg));\n  --purple-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 320deg));\n  --purple-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 320deg));\n  --purple-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 320deg));\n  --purple-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 320deg));\n  --purple-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 320deg));\n  --purple-500: oklch(56% 0.24 320deg);\n  --purple-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 320deg));\n  --purple-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 320deg));\n  --purple-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 320deg));\n  --purple-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 320deg));\n  --purple-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 320deg));\n  --purple-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 320deg));\n  --pink-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 4deg));\n  --pink-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 4deg));\n  --pink-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 4deg));\n  --pink-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 4deg));\n  --pink-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 4deg));\n  --pink-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 4deg));\n  --pink-500: oklch(60% 0.22 4deg);\n  --pink-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 4deg));\n  --pink-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 4deg));\n  --pink-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 4deg));\n  --pink-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 4deg));\n  --pink-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 4deg));\n  --pink-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 4deg));\n  --red-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 20deg));\n  --red-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 20deg));\n  --red-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 20deg));\n  --red-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 20deg));\n  --red-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 20deg));\n  --red-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 20deg));\n  --red-500: oklch(60% 0.22 20deg);\n  --red-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 20deg));\n  --red-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 20deg));\n  --red-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 20deg));\n  --red-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 20deg));\n  --red-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 20deg));\n  --red-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 20deg));\n  --orange-025: color-mix(in lab, var(--white) 94%, oklch(70% 0.22 52deg));\n  --orange-050: color-mix(in lab, var(--white) 90%, oklch(70% 0.22 52deg));\n  --orange-100: color-mix(in lab, var(--white) 80%, oklch(70% 0.22 52deg));\n  --orange-200: color-mix(in lab, var(--white) 60%, oklch(70% 0.22 52deg));\n  --orange-300: color-mix(in lab, var(--white) 40%, oklch(70% 0.22 52deg));\n  --orange-400: color-mix(in lab, var(--white) 20%, oklch(70% 0.22 52deg));\n  --orange-500: oklch(70% 0.22 52deg);\n  --orange-600: color-mix(in lab, var(--black) 16%, oklch(70% 0.22 52deg));\n  --orange-700: color-mix(in lab, var(--black) 32%, oklch(70% 0.22 52deg));\n  --orange-800: color-mix(in lab, var(--black) 48%, oklch(70% 0.22 52deg));\n  --orange-900: color-mix(in lab, var(--black) 64%, oklch(70% 0.22 52deg));\n  --orange-950: color-mix(in lab, var(--black) 76%, oklch(70% 0.22 52deg));\n  --orange-975: color-mix(in lab, var(--black) 88%, oklch(70% 0.22 52deg));\n  --amber-025: color-mix(in lab, var(--white) 94%, oklch(79% 0.2 78deg));\n  --amber-050: color-mix(in lab, var(--white) 90%, oklch(79% 0.2 78deg));\n  --amber-100: color-mix(in lab, var(--white) 80%, oklch(79% 0.2 78deg));\n  --amber-200: color-mix(in lab, var(--white) 60%, oklch(79% 0.2 78deg));\n  --amber-300: color-mix(in lab, var(--white) 40%, oklch(79% 0.2 78deg));\n  --amber-400: color-mix(in lab, var(--white) 20%, oklch(79% 0.2 78deg));\n  --amber-500: oklch(79% 0.2 78deg);\n  --amber-600: color-mix(in lab, var(--black) 16%, oklch(79% 0.2 78deg));\n  --amber-700: color-mix(in lab, var(--black) 32%, oklch(79% 0.2 78deg));\n  --amber-800: color-mix(in lab, var(--black) 48%, oklch(79% 0.2 78deg));\n  --amber-900: color-mix(in lab, var(--black) 64%, oklch(79% 0.2 78deg));\n  --amber-950: color-mix(in lab, var(--black) 76%, oklch(79% 0.2 78deg));\n  --amber-975: color-mix(in lab, var(--black) 88%, oklch(79% 0.2 78deg));\n  --yellow-025: color-mix(in lab, var(--white) 94%, oklch(88% 0.24 88deg));\n  --yellow-050: color-mix(in lab, var(--white) 90%, oklch(88% 0.24 88deg));\n  --yellow-100: color-mix(in lab, var(--white) 80%, oklch(88% 0.24 88deg));\n  --yellow-200: color-mix(in lab, var(--white) 60%, oklch(88% 0.24 88deg));\n  --yellow-300: color-mix(in lab, var(--white) 40%, oklch(88% 0.24 88deg));\n  --yellow-400: color-mix(in lab, var(--white) 20%, oklch(88% 0.24 88deg));\n  --yellow-500: oklch(88% 0.24 88deg);\n  --yellow-600: color-mix(in lab, var(--black) 16%, oklch(88% 0.24 88deg));\n  --yellow-700: color-mix(in lab, var(--black) 32%, oklch(88% 0.24 88deg));\n  --yellow-800: color-mix(in lab, var(--black) 48%, oklch(88% 0.24 88deg));\n  --yellow-900: color-mix(in lab, var(--black) 64%, oklch(88% 0.24 88deg));\n  --yellow-950: color-mix(in lab, var(--black) 76%, oklch(88% 0.24 88deg));\n  --yellow-975: color-mix(in lab, var(--black) 88%, oklch(88% 0.24 88deg));\n  --lime-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.24 135deg));\n  --lime-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.24 135deg));\n  --lime-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.24 135deg));\n  --lime-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.24 135deg));\n  --lime-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.24 135deg));\n  --lime-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.24 135deg));\n  --lime-500: oklch(65% 0.24 135deg);\n  --lime-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.24 135deg));\n  --lime-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.24 135deg));\n  --lime-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.24 135deg));\n  --lime-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.24 135deg));\n  --lime-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.24 135deg));\n  --lime-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.24 135deg));\n  --green-025: color-mix(in lab, var(--white) 94%, oklch(64% 0.22 160deg));\n  --green-050: color-mix(in lab, var(--white) 90%, oklch(64% 0.22 160deg));\n  --green-100: color-mix(in lab, var(--white) 80%, oklch(64% 0.22 160deg));\n  --green-200: color-mix(in lab, var(--white) 60%, oklch(64% 0.22 160deg));\n  --green-300: color-mix(in lab, var(--white) 40%, oklch(64% 0.22 160deg));\n  --green-400: color-mix(in lab, var(--white) 20%, oklch(64% 0.22 160deg));\n  --green-500: oklch(64% 0.22 160deg);\n  --green-600: color-mix(in lab, var(--black) 16%, oklch(64% 0.22 160deg));\n  --green-700: color-mix(in lab, var(--black) 32%, oklch(64% 0.22 160deg));\n  --green-800: color-mix(in lab, var(--black) 48%, oklch(64% 0.22 160deg));\n  --green-900: color-mix(in lab, var(--black) 64%, oklch(64% 0.22 160deg));\n  --green-950: color-mix(in lab, var(--black) 76%, oklch(64% 0.22 160deg));\n  --green-975: color-mix(in lab, var(--black) 88%, oklch(64% 0.22 160deg));\n  --teal-025: color-mix(in lab, var(--white) 94%, oklch(68% 0.22 190deg));\n  --teal-050: color-mix(in lab, var(--white) 90%, oklch(68% 0.22 190deg));\n  --teal-100: color-mix(in lab, var(--white) 80%, oklch(68% 0.22 190deg));\n  --teal-200: color-mix(in lab, var(--white) 60%, oklch(68% 0.22 190deg));\n  --teal-300: color-mix(in lab, var(--white) 40%, oklch(68% 0.22 190deg));\n  --teal-400: color-mix(in lab, var(--white) 20%, oklch(68% 0.22 190deg));\n  --teal-500: oklch(68% 0.22 190deg);\n  --teal-600: color-mix(in lab, var(--black) 16%, oklch(68% 0.22 190deg));\n  --teal-700: color-mix(in lab, var(--black) 32%, oklch(68% 0.22 190deg));\n  --teal-800: color-mix(in lab, var(--black) 48%, oklch(68% 0.22 190deg));\n  --teal-900: color-mix(in lab, var(--black) 64%, oklch(68% 0.22 190deg));\n  --teal-950: color-mix(in lab, var(--black) 76%, oklch(68% 0.22 190deg));\n  --teal-975: color-mix(in lab, var(--black) 88%, oklch(68% 0.22 190deg));\n  --cyan-025: color-mix(in lab, var(--white) 94%, oklch(69% 0.22 220deg));\n  --cyan-050: color-mix(in lab, var(--white) 90%, oklch(69% 0.22 220deg));\n  --cyan-100: color-mix(in lab, var(--white) 80%, oklch(69% 0.22 220deg));\n  --cyan-200: color-mix(in lab, var(--white) 60%, oklch(69% 0.22 220deg));\n  --cyan-300: color-mix(in lab, var(--white) 40%, oklch(69% 0.22 220deg));\n  --cyan-400: color-mix(in lab, var(--white) 20%, oklch(69% 0.22 220deg));\n  --cyan-500: oklch(69% 0.22 220deg);\n  --cyan-600: color-mix(in lab, var(--black) 16%, oklch(69% 0.22 220deg));\n  --cyan-700: color-mix(in lab, var(--black) 32%, oklch(69% 0.22 220deg));\n  --cyan-800: color-mix(in lab, var(--black) 48%, oklch(69% 0.22 220deg));\n  --cyan-900: color-mix(in lab, var(--black) 64%, oklch(69% 0.22 220deg));\n  --cyan-950: color-mix(in lab, var(--black) 76%, oklch(69% 0.22 220deg));\n  --cyan-975: color-mix(in lab, var(--black) 88%, oklch(69% 0.22 220deg));\n  --brown-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.12 54deg));\n  --brown-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.12 54deg));\n  --brown-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.12 54deg));\n  --brown-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.12 54deg));\n  --brown-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.12 54deg));\n  --brown-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.12 54deg));\n  --brown-500: oklch(60% 0.12 54deg);\n  --brown-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.12 54deg));\n  --brown-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.12 54deg));\n  --brown-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.12 54deg));\n  --brown-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.12 54deg));\n  --brown-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.12 54deg));\n  --brown-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.12 54deg));\n  --gray-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.02 245deg));\n  --gray-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.02 245deg));\n  --gray-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.02 245deg));\n  --gray-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.02 245deg));\n  --gray-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.02 245deg));\n  --gray-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.02 245deg));\n  --gray-500: oklch(60% 0.02 245deg);\n  --gray-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.02 245deg));\n  --gray-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.02 245deg));\n  --gray-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.02 245deg));\n  --gray-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.02 245deg));\n  --gray-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.02 245deg));\n  --gray-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.02 245deg));\n  --pewter-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.01 290deg));\n  --pewter-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.01 290deg));\n  --pewter-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.01 290deg));\n  --pewter-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.01 290deg));\n  --pewter-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.01 290deg));\n  --pewter-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.01 290deg));\n  --pewter-500: oklch(65% 0.01 290deg);\n  --pewter-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.01 290deg));\n  --pewter-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.01 290deg));\n  --pewter-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.01 290deg));\n  --pewter-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.01 290deg));\n  --pewter-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.01 290deg));\n  --pewter-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.01 290deg));\n}\n\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n:root {\n  --black: #000;\n  --white: #fff;\n  --gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent));\n  --font-size-base: 1rem;\n  --font-size-xs: 0.75rem;\n  --font-size-sm: 0.875rem;\n  --font-size-md: 1rem;\n  --font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  --font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);\n  --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  --line-height-xs: 1.25;\n  --line-height-sm: 1.5;\n  --line-height-md: 1.5;\n  --line-height-lg: 1.5;\n  --line-height-xl: 1.4285714286;\n  --line-height-2xl: 1.3333333333;\n  --line-height-3xl: 1.2;\n  --line-height-4xl: 1.1;\n  --line-height-5xl: 1.1;\n  --line-height-6xl: 1;\n  --font-weight-lighter: lighter;\n  --font-weight-light: 300;\n  --font-weight-normal: 400;\n  --font-weight-medium: 500;\n  --font-weight-semibold: 600;\n  --font-weight-bold: 700;\n  --font-weight-bolder: bolder;\n  --body-font-family: system-ui;\n  --body-font-size: var(--font-size-base);\n  --body-font-weight: 400;\n  --body-line-height: 1.5;\n  --heading-color: inherit;\n  --hr-border-color: var(--border-color);\n  --link-color: light-dark(var(--primary-base), var(--primary-text));\n  --link-decoration: underline;\n  --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000);\n  --font-mono: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;\n  --code-font-size: 95%;\n  --code-color: var(--fg-2);\n  --border-width: 1px;\n  --border-style: solid;\n  --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700));\n  --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent);\n  --border-radius: 0.5rem;\n  --border-radius-xs: 0.375rem;\n  --border-radius-sm: 0.5rem;\n  --border-radius-lg: 0.75rem;\n  --border-radius-xl: 1rem;\n  --border-radius-2xl: 2rem;\n  --border-radius-pill: 50rem;\n  --box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  --box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n  --box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n  --box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n  --spacer: 1rem;\n  --focus-ring-width: 3px;\n  --focus-ring-offset: 1px;\n  --focus-ring-color: var(--primary-focus-ring);\n  --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color);\n  --control-checked-bg: var(--primary-base);\n  --control-checked-border-color: var(--control-checked-bg);\n  --control-active-bg: var(--primary-base);\n  --control-active-border-color: var(--control-active-bg);\n  --control-disabled-bg: var(--bg-3);\n  --control-disabled-opacity: 0.65;\n  --btn-input-fg: var(--fg-body);\n  --btn-input-bg: var(--bg-body);\n  --btn-input-min-height: 2.375rem;\n  --btn-input-padding-y: 0.375rem;\n  --btn-input-padding-x: 0.75rem;\n  --btn-input-font-size: var(--font-size-base);\n  --btn-input-line-height: var(--line-height-base);\n  --btn-input-border-radius: var(--border-radius);\n  --btn-input-xs-min-height: 1.5rem;\n  --btn-input-xs-padding-y: 0.125rem;\n  --btn-input-xs-padding-x: 0.5rem;\n  --btn-input-xs-font-size: var(--font-size-xs);\n  --btn-input-xs-line-height: 1.125;\n  --btn-input-xs-border-radius: var(--border-radius-xs);\n  --btn-input-sm-min-height: 2rem;\n  --btn-input-sm-padding-y: 0.25rem;\n  --btn-input-sm-padding-x: 0.625rem;\n  --btn-input-sm-font-size: var(--font-size-sm);\n  --btn-input-sm-line-height: var(--line-height-sm);\n  --btn-input-sm-border-radius: var(--border-radius-sm);\n  --btn-input-lg-min-height: 2.75rem;\n  --btn-input-lg-padding-y: 0.5rem;\n  --btn-input-lg-padding-x: 1rem;\n  --btn-input-lg-font-size: var(--font-size-md);\n  --btn-input-lg-line-height: var(--line-height-md);\n  --btn-input-lg-border-radius: var(--border-radius-lg);\n  --form-valid-color: var(--success-text);\n  --form-valid-border-color: var(--success-text);\n  --form-invalid-color: var(--danger-text);\n  --form-invalid-border-color: var(--danger-text);\n  --primary-base: var(--blue-500);\n  --primary-text: light-dark(var(--blue-600), var(--blue-400));\n  --primary-text-emphasis: light-dark(var(--blue-800), var(--blue-200));\n  --primary-bg: var(--blue-500);\n  --primary-bg-subtle: light-dark(var(--blue-100), var(--blue-900));\n  --primary-bg-muted: light-dark(var(--blue-200), var(--blue-800));\n  --primary-border: light-dark(var(--blue-300), var(--blue-600));\n  --primary-focus-ring: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  --primary-contrast: var(--white);\n  --accent-base: var(--indigo-500);\n  --accent-text: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  --accent-text-emphasis: light-dark(var(--indigo-800), var(--indigo-300));\n  --accent-bg: var(--indigo-500);\n  --accent-bg-subtle: light-dark(var(--indigo-100), var(--indigo-900));\n  --accent-bg-muted: light-dark(var(--indigo-200), var(--indigo-800));\n  --accent-border: light-dark(var(--indigo-300), var(--indigo-600));\n  --accent-focus-ring: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  --accent-contrast: var(--white);\n  --success-base: var(--green-500);\n  --success-text: light-dark(var(--green-600), var(--green-400));\n  --success-text-emphasis: light-dark(var(--green-800), var(--green-300));\n  --success-bg: var(--green-500);\n  --success-bg-subtle: light-dark(var(--green-100), var(--green-900));\n  --success-bg-muted: light-dark(var(--green-200), var(--green-800));\n  --success-border: light-dark(var(--green-300), var(--green-600));\n  --success-focus-ring: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  --success-contrast: var(--white);\n  --danger-base: var(--red-500);\n  --danger-text: light-dark(var(--red-600), var(--red-400));\n  --danger-text-emphasis: light-dark(var(--red-800), var(--red-300));\n  --danger-bg: var(--red-500);\n  --danger-bg-subtle: light-dark(var(--red-100), var(--red-900));\n  --danger-bg-muted: light-dark(var(--red-200), var(--red-800));\n  --danger-border: light-dark(var(--red-300), var(--red-600));\n  --danger-focus-ring: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  --danger-contrast: var(--white);\n  --warning-base: var(--yellow-500);\n  --warning-text: light-dark(var(--yellow-700), var(--yellow-400));\n  --warning-text-emphasis: light-dark(var(--yellow-800), var(--yellow-300));\n  --warning-bg: var(--yellow-500);\n  --warning-bg-subtle: light-dark(var(--yellow-100), var(--yellow-900));\n  --warning-bg-muted: light-dark(var(--yellow-200), var(--yellow-800));\n  --warning-border: light-dark(var(--yellow-300), var(--yellow-600));\n  --warning-focus-ring: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  --warning-contrast: var(--gray-900);\n  --info-base: var(--cyan-500);\n  --info-text: light-dark(var(--cyan-600), var(--cyan-400));\n  --info-text-emphasis: light-dark(var(--cyan-800), var(--cyan-300));\n  --info-bg: var(--cyan-500);\n  --info-bg-subtle: light-dark(var(--cyan-100), var(--cyan-900));\n  --info-bg-muted: light-dark(var(--cyan-200), var(--cyan-800));\n  --info-border: light-dark(var(--cyan-300), var(--cyan-600));\n  --info-focus-ring: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  --info-contrast: var(--gray-900);\n  --inverse-base: var(--gray-900);\n  --inverse-text: light-dark(var(--gray-900), var(--gray-200));\n  --inverse-text-emphasis: light-dark(var(--gray-975), var(--white));\n  --inverse-bg: light-dark(var(--gray-900), var(--gray-025));\n  --inverse-bg-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --inverse-bg-muted: light-dark(var(--gray-200), var(--gray-300));\n  --inverse-border: light-dark(var(--gray-400), var(--gray-100));\n  --inverse-focus-ring: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  --inverse-contrast: light-dark(var(--white), var(--gray-900));\n  --secondary-base: var(--gray-200);\n  --secondary-text: light-dark(var(--gray-600), var(--gray-400));\n  --secondary-text-emphasis: light-dark(var(--gray-800), var(--gray-200));\n  --secondary-bg: light-dark(var(--gray-100), var(--gray-600));\n  --secondary-bg-subtle: light-dark(var(--gray-050), var(--gray-800));\n  --secondary-bg-muted: light-dark(var(--gray-100), var(--gray-700));\n  --secondary-border: light-dark(var(--gray-300), var(--gray-600));\n  --secondary-focus-ring: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  --secondary-contrast: light-dark(var(--gray-900), var(--white));\n  --bg-body: light-dark(var(--white), var(--gray-975));\n  --bg-1: light-dark(var(--gray-025), var(--gray-950));\n  --bg-2: light-dark(var(--gray-050), var(--gray-900));\n  --bg-3: light-dark(var(--gray-100), var(--gray-800));\n  --bg-4: light-dark(var(--gray-200), var(--gray-700));\n  --bg-white: var(--white);\n  --bg-black: var(--black);\n  --bg-transparent: transparent;\n  --bg-inherit: inherit;\n  --fg-body: light-dark(var(--gray-900), var(--gray-050));\n  --fg-1: light-dark(var(--gray-800), var(--gray-200));\n  --fg-2: light-dark(var(--gray-700), var(--gray-300));\n  --fg-3: light-dark(var(--gray-600), var(--gray-500));\n  --fg-4: light-dark(var(--gray-500), var(--gray-600));\n  --fg-white: var(--white);\n  --fg-black: var(--black);\n  --fg-inherit: inherit;\n  --border-bg: var(--bg-body);\n  --border-body: light-dark(var(--gray-300), var(--gray-800));\n  --border-muted: light-dark(var(--gray-200), var(--gray-800));\n  --border-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --border-emphasized: light-dark(var(--gray-400), var(--gray-600));\n  --border-white: var(--white);\n  --border-black: var(--black);\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 1024px;\n  --breakpoint-xl: 1280px;\n  --breakpoint-2xl: 1536px;\n  color-scheme: light dark;\n}\n\n[data-bs-theme=dark] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=light] {\n  color-scheme: light;\n}\n\n@layer reboot {\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n  :root {\n    accent-color: var(--primary-base);\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    :root {\n      scroll-behavior: smooth;\n    }\n  }\n  body {\n    margin: 0;\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body);\n    -webkit-text-size-adjust: 100%;\n    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  }\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n  h6,\n  .h6, h5,\n  .h5, h4,\n  .h4, h3,\n  .h3, h2,\n  .h2, h1,\n  .h1 {\n    margin-top: 0;\n    margin-bottom: 0.5rem;\n    font-weight: 500;\n    line-height: 1.2;\n    color: var(--heading-color);\n  }\n  h1,\n  .h1 {\n    font-size: var(--font-size-3xl);\n  }\n  h2,\n  .h2 {\n    font-size: var(--font-size-2xl);\n  }\n  h3,\n  .h3 {\n    font-size: var(--font-size-xl);\n  }\n  h4,\n  .h4 {\n    font-size: var(--font-size-lg);\n  }\n  h5,\n  .h5 {\n    font-size: var(--font-size-md);\n  }\n  h6,\n  .h6 {\n    font-size: var(--font-size-sm);\n  }\n  p {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  abbr[title] {\n    text-decoration: underline dotted;\n    cursor: help;\n    text-decoration-skip-ink: none;\n  }\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n  dt {\n    font-weight: 700;\n  }\n  dd {\n    margin-inline-start: 0;\n    margin-bottom: 0.5rem;\n  }\n  blockquote {\n    margin: 0 0 1rem;\n  }\n  blockquote > * {\n    margin-block: 0;\n  }\n  b,\n  strong {\n    font-weight: bolder;\n  }\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n  mark,\n  .mark {\n    --mark-padding: 0.1875em;\n    --mark-color: var(--fg-body);\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900));\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, 0.75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n  sub {\n    bottom: -0.25em;\n  }\n  sup {\n    top: -0.5em;\n  }\n  a {\n    color: var(--theme-text, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: 0.2em;\n  }\n  a:hover {\n    color: var(--theme-text-emphasis, var(--link-hover-color));\n    text-decoration: var(--link-hover-decoration, var(--link-decoration));\n  }\n  a:not([href]):not([class]), a:not([href]):not([class]):hover {\n    color: inherit;\n    text-decoration: none;\n  }\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em;\n  }\n  pre {\n    display: block;\n    margin-top: 0;\n    margin-bottom: 1rem;\n    overflow: auto;\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n  }\n  pre code {\n    font-size: inherit;\n    color: inherit;\n    word-break: normal;\n  }\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n  }\n  a > code {\n    color: inherit;\n  }\n  kbd {\n    --kbd-padding-y: 0.125rem;\n    --kbd-padding-x: 0.25rem;\n    --kbd-font-size: var(--font-size-xs);\n    --kbd-color: var(--bg-body);\n    --kbd-bg: var(--fg-2);\n    --kbd-border-radius: var(--border-radius-sm);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    border-radius: var(--kbd-border-radius);\n  }\n  kbd kbd {\n    padding: 0;\n    font-size: 1em;\n    font-weight: inherit;\n  }\n  figure {\n    margin: 0 0 1rem;\n  }\n  img,\n  svg {\n    vertical-align: middle;\n  }\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n  caption {\n    padding-block: 0.5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n  th {\n    text-align: inherit;\n    text-align: -webkit-match-parent;\n  }\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n  label {\n    display: inline-block;\n  }\n  button {\n    border-radius: 0;\n  }\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0;\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n  button,\n  select {\n    text-transform: none;\n  }\n  [role=button] {\n    cursor: pointer;\n  }\n  select {\n    word-wrap: normal;\n  }\n  select:disabled {\n    opacity: 1;\n  }\n  [list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n  button,\n  [type=button],\n  [type=reset],\n  [type=submit] {\n    -webkit-appearance: button;\n  }\n  button:not(:disabled),\n  [type=button]:not(:disabled),\n  [type=reset]:not(:disabled),\n  [type=submit]:not(:disabled) {\n    cursor: pointer;\n  }\n  ::-moz-focus-inner {\n    padding: 0;\n    border-style: none;\n  }\n  textarea {\n    resize: vertical;\n  }\n  fieldset {\n    min-width: 0;\n    padding: 0;\n    margin: 0;\n    border: 0;\n  }\n  legend {\n    float: inline-start;\n    width: 100%;\n    padding: 0;\n    margin-bottom: 0.5rem;\n    font-size: 1.5rem;\n    line-height: inherit;\n  }\n  legend + * {\n    clear: inline-start;\n  }\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-ampm-field,\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n  ::-webkit-inner-spin-button {\n    height: auto;\n  }\n  [type=search] {\n    -webkit-appearance: textfield;\n    outline-offset: -2px;\n  }\n  [type=search]::-webkit-search-cancel-button {\n    cursor: pointer;\n    filter: grayscale(1);\n  }\n  [type=tel],\n  [type=url],\n  [type=email],\n  [type=number] {\n    direction: ltr;\n  }\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n  ::file-selector-button {\n    font: inherit;\n    -webkit-appearance: button;\n  }\n  output {\n    display: inline-block;\n  }\n  iframe {\n    border: 0;\n  }\n  summary {\n    display: list-item;\n    cursor: pointer;\n  }\n  progress {\n    vertical-align: baseline;\n  }\n  [hidden] {\n    display: none !important;\n  }\n}\n@layer content {\n  .list-unstyled {\n    padding-inline-start: 0;\n    list-style: none;\n  }\n  .list-inline {\n    padding-inline-start: 0;\n    list-style: none;\n  }\n  .list-inline-item {\n    display: inline-block;\n  }\n  .list-inline-item:not(:last-child) {\n    margin-inline-end: var(--list-inline-padding, var(--spacer)/2);\n  }\n  .initialism {\n    font-size: var(--initialism-font-size, var(--font-size-xs));\n    text-transform: uppercase;\n  }\n  .blockquote {\n    --blockquote-gap: calc(var(--spacer) / 2);\n    --blockquote-padding-x: var(--spacer);\n    --blockquote-margin-y: 1rem;\n    --blockquote-font-size: var(--font-size-md);\n    --blockquote-border-width: 0.25rem;\n    --blockquote-border-color: var(--border-color);\n    --blockquote-footer-font-size: var(--font-size-sm);\n    --blockquote-footer-color: var(--fg-3);\n    display: flex;\n    flex-direction: column;\n    gap: var(--blockquote-gap);\n    padding-inline-start: var(--blockquote-padding-x);\n    margin-bottom: var(--blockquote-margin-y);\n    font-size: var(--blockquote-font-size);\n    border-inline-start: var(--blockquote-border-width) solid var(--blockquote-border-color);\n  }\n  .blockquote > * {\n    margin-bottom: 0;\n  }\n  figure.blockquote blockquote {\n    margin-bottom: 0;\n  }\n  .blockquote-footer {\n    font-size: var(--blockquote-footer-font-size);\n    color: var(--blockquote-footer-color);\n  }\n  .blockquote-footer::before {\n    content: \"— \";\n  }\n}\n@layer content {\n  .table {\n    --table-cell-padding-y: 0.5rem;\n    --table-cell-padding-x: 0.5rem;\n    --table-cell-vertical-align: top;\n    --table-color: var(--fg-body);\n    --table-bg: var(--bg-body);\n    --table-accent-bg: transparent;\n    --table-border-width: var(--border-width);\n    --table-border-color: var(--border-color);\n    --table-group-separator-color: currentcolor;\n    --table-striped-color: var(--table-color);\n    --table-striped-bg-factor: 0.05;\n    --table-striped-bg: color-mix(in srgb, var(--table-color) var(--table-striped-bg-factor), transparent);\n    --table-active-color: var(--table-color);\n    --table-active-bg-factor: 0.1;\n    --table-active-bg: color-mix(in srgb, var(--table-color) var(--table-active-bg-factor), transparent);\n    --table-hover-color: var(--table-color);\n    --table-hover-bg-factor: 0.075;\n    --table-hover-bg: color-mix(in srgb, var(--table-color) var(--table-hover-bg-factor), transparent);\n    --table-color-type: initial;\n    --table-bg-type: initial;\n    --table-color-state: initial;\n    --table-bg-state: initial;\n    width: 100%;\n    margin-bottom: 1rem;\n    vertical-align: var(--table-cell-vertical-align);\n    border-color: var(--theme-border, var(--table-border-color));\n  }\n  .table > :not(caption) > * > * {\n    padding: var(--table-cell-padding-y) var(--table-cell-padding-x);\n    color: var(--table-color-state, var(--table-color-type, var(--theme-text, var(--table-color))));\n    background-color: var(--theme-bg-subtle, var(--table-bg));\n    border-block-end-width: var(--table-border-width);\n    box-shadow: inset 0 0 0 9999px var(--table-bg-state, var(--table-bg-type, var(--theme-bg-subtle, var(--table-accent-bg))));\n  }\n  .table > tbody {\n    vertical-align: inherit;\n  }\n  .table > thead {\n    vertical-align: bottom;\n  }\n  .table-group-divider {\n    border-block-start: calc(var(--table-border-width) * 2) solid var(--table-group-separator-color);\n  }\n  .caption-top {\n    caption-side: top;\n  }\n  .table-sm > :not(caption) > * > * {\n    --table-cell-padding-y: .25rem;\n    --table-cell-padding-x: .25rem;\n  }\n  .table-bordered > :not(caption) > * {\n    border-width: var(--table-border-width) 0;\n  }\n  .table-bordered > :not(caption) > * > * {\n    border-width: 0 var(--table-border-width);\n  }\n  .table-borderless > :not(caption) > * > * {\n    border-block-end-width: 0;\n  }\n  .table-borderless > :not(:first-child) {\n    border-block-start-width: 0;\n  }\n  .table-striped > tbody > tr:nth-of-type(odd) > * {\n    --table-color-type: var(--theme-text, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-striped-bg-factor), transparent);\n  }\n  .table-striped-columns > :not(caption) > tr > :nth-child(even) {\n    --table-color-type: var(--theme-text, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-striped-bg-factor), transparent);\n  }\n  .table-active {\n    --table-color-state: var(--theme-text, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-active-bg-factor), transparent);\n  }\n  .table-hover > tbody > tr:hover > * {\n    --table-color-state: var(--theme-text, var(--table-hover-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-hover-bg-factor), transparent);\n  }\n  .table-responsive {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n  @media (width < 576px) {\n    .table-responsive-sm {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  @media (width < 768px) {\n    .table-responsive-md {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  @media (width < 1024px) {\n    .table-responsive-lg {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  @media (width < 1280px) {\n    .table-responsive-xl {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  @media (width < 1536px) {\n    .table-responsive-2xl {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n}\n@layer content {\n  .img-fluid {\n    max-width: 100%;\n    height: auto;\n  }\n  .img-thumbnail {\n    --thumbnail-padding: 0.25rem;\n    --thumbnail-bg: var(--bg-body);\n    --thumbnail-border-width: var(--border-width);\n    --thumbnail-border-color: var(--border-color);\n    --thumbnail-border-radius: var(--border-radius);\n    --thumbnail-box-shadow: var(--box-shadow-sm);\n    padding: var(--thumbnail-padding);\n    background-color: var(--thumbnail-bg);\n    border: var(--thumbnail-border-width) solid var(--thumbnail-border-color);\n    border-radius: var(--thumbnail-border-radius);\n    box-shadow: var(--thumbnail-box-shadow);\n    max-width: 100%;\n    height: auto;\n  }\n  .figure {\n    --figure-gap: calc(var(--spacer) * 0.5);\n    --figure-caption-font-size: var(--font-size-sm);\n    --figure-caption-color: var(--fg-3);\n    display: flex;\n    flex-direction: column;\n    gap: var(--figure-gap);\n  }\n  .figure-caption {\n    font-size: var(--figure-caption-font-size);\n    color: var(--figure-caption-color);\n  }\n}\n@layer content {\n  .prose {\n    --content-font-size: 1rem;\n    --content-gap: 20px;\n    --heading-color: light-dark(var(--gray-900), var(--white));\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--content-gap);\n    max-width: 1000px;\n    margin-inline: auto;\n    font-size: var(--content-font-size);\n    line-height: 1.5;\n  }\n  @media (width >= 1024px) {\n    .prose {\n      --content-font-size: var(--font-size-md);\n      --content-gap: 24px;\n    }\n  }\n  .prose :where(p, ul, ol, dl, pre, table, blockquote):not(:where(.not-prose, .not-prose *)) {\n    margin-block: 0;\n  }\n  .prose :where(ul, ol):not([class]):not(:where(.not-prose, .not-prose *)) li:not(:last-child) {\n    margin-bottom: calc(var(--content-gap) / 4);\n  }\n  .prose :where(li ul, li ol):not(:where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) / 4);\n  }\n  .prose :where(hr):not(:where(.not-prose, .not-prose *)) {\n    margin: calc(var(--content-gap) * 1.5) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n  .prose :where(h1, h2, h3, h4, h5, h6):not([class]):not(:where(.not-prose, .not-prose *)) {\n    margin-top: 0;\n    margin-bottom: calc(var(--content-gap) / -2);\n    font-weight: 500;\n    line-height: 1.25;\n  }\n  .prose :where(h1, h2, h3, h4, h5, h6):not([class]):not(:where(.not-prose, .not-prose *)) code {\n    font-weight: 600;\n    color: inherit;\n  }\n  .prose :where(h1, h2):not(:first-child):not(:where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) * 0.75);\n  }\n  .prose :where(h3, h4, h5, h6):not(:first-child):not(:where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) * 0.5);\n  }\n  .prose :where(h1):not(:where(.not-prose, .not-prose *)) {\n    font-size: 2.25em;\n    line-height: 1.1;\n  }\n  .prose :where(h2):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.75em;\n  }\n  .prose :where(h3):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.5em;\n  }\n  .prose :where(h4):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.25em;\n  }\n  .prose :where(h5):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.125em;\n  }\n  .prose :where(h6):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1em;\n  }\n  .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n    color: var(--link-color);\n    text-decoration: underline;\n    text-decoration-color: color-mix(in srgb, var(--link-color) 25%, transparent);\n    text-underline-offset: 4px;\n    transition: 0.1s text-decoration-color ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n      transition: none;\n    }\n  }\n  .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)):hover {\n    text-decoration-color: var(--link-hover-color);\n  }\n  .prose :where(img):not(:where(.not-prose, .not-prose *)) {\n    max-width: 100%;\n  }\n  .prose :where(blockquote):not(:where(.not-prose, .not-prose *)) {\n    padding-inline-start: calc(var(--content-gap) / 2);\n    margin: 0;\n    border-inline-start: 4px solid var(--border-color);\n  }\n  .prose :where(table):not(:where(.not-prose, .not-prose *)) {\n    width: 100%;\n    border-spacing: 0;\n    border-collapse: collapse;\n  }\n  .prose :where(table:not([class])):not(:where(.not-prose, .not-prose *)) td,\n  .prose :where(table:not([class])):not(:where(.not-prose, .not-prose *)) th {\n    padding: 6px 12px;\n    text-align: inherit;\n    border: 1px solid var(--border-color);\n  }\n  .prose :where(dt):not(:where(.not-prose, .not-prose *)) {\n    font-weight: 500;\n  }\n  .prose :where(video, img):not(:where(.not-prose, .not-prose *)) {\n    max-width: 100%;\n  }\n}\n@layer layout {\n  .container,\n  .container-fluid,\n  .container-2xl,\n  .container-xl,\n  .container-lg,\n  .container-md,\n  .container-sm {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-inline: auto;\n  }\n  @media (width >= 576px) {\n    .container-sm, .container {\n      max-width: 540px;\n    }\n  }\n  @media (width >= 768px) {\n    .container-md, .container-sm, .container {\n      max-width: 720px;\n    }\n  }\n  @media (width >= 1024px) {\n    .container-lg, .container-md, .container-sm, .container {\n      max-width: 960px;\n    }\n  }\n  @media (width >= 1280px) {\n    .container-xl, .container-lg, .container-md, .container-sm, .container {\n      max-width: 1200px;\n    }\n  }\n  @media (width >= 1536px) {\n    .container-2xl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n      max-width: 1440px;\n    }\n  }\n}\n@layer layout {\n  .row {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    display: flex;\n    flex-wrap: wrap;\n    margin-inline: calc(-0.5 * var(--gutter-x));\n    margin-top: calc(-1 * var(--gutter-y));\n  }\n  .row > * {\n    flex-shrink: 0;\n    width: 100%;\n    max-width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-top: var(--gutter-y);\n  }\n  .col {\n    flex: 1 0 0;\n  }\n  .row-cols-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .row-cols-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .row-cols-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .row-cols-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .row-cols-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .row-cols-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n  .row-cols-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .col-1 {\n    flex: 0 0 auto;\n    width: 8.3333333333%;\n  }\n  .col-2 {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .col-4 {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .col-5 {\n    flex: 0 0 auto;\n    width: 41.6666666667%;\n  }\n  .col-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .col-7 {\n    flex: 0 0 auto;\n    width: 58.3333333333%;\n  }\n  .col-8 {\n    flex: 0 0 auto;\n    width: 66.6666666667%;\n  }\n  .col-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n  .col-10 {\n    flex: 0 0 auto;\n    width: 83.3333333333%;\n  }\n  .col-11 {\n    flex: 0 0 auto;\n    width: 91.6666666667%;\n  }\n  .col-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .offset-1 {\n    margin-inline-start: 8.3333333333%;\n  }\n  .offset-2 {\n    margin-inline-start: 16.6666666667%;\n  }\n  .offset-3 {\n    margin-inline-start: 25%;\n  }\n  .offset-4 {\n    margin-inline-start: 33.3333333333%;\n  }\n  .offset-5 {\n    margin-inline-start: 41.6666666667%;\n  }\n  .offset-6 {\n    margin-inline-start: 50%;\n  }\n  .offset-7 {\n    margin-inline-start: 58.3333333333%;\n  }\n  .offset-8 {\n    margin-inline-start: 66.6666666667%;\n  }\n  .offset-9 {\n    margin-inline-start: 75%;\n  }\n  .offset-10 {\n    margin-inline-start: 83.3333333333%;\n  }\n  .offset-11 {\n    margin-inline-start: 91.6666666667%;\n  }\n  .g--2,\n  .gx--2 {\n    --gutter-x: -0.5rem;\n  }\n  .g--2,\n  .gy--2 {\n    --gutter-y: -0.5rem;\n  }\n  .g--1,\n  .gx--1 {\n    --gutter-x: -0.25rem;\n  }\n  .g--1,\n  .gy--1 {\n    --gutter-y: -0.25rem;\n  }\n  .g-0,\n  .gx-0 {\n    --gutter-x: 0;\n  }\n  .g-0,\n  .gy-0 {\n    --gutter-y: 0;\n  }\n  .g-1,\n  .gx-1 {\n    --gutter-x: 0.25rem;\n  }\n  .g-1,\n  .gy-1 {\n    --gutter-y: 0.25rem;\n  }\n  .g-2,\n  .gx-2 {\n    --gutter-x: 0.5rem;\n  }\n  .g-2,\n  .gy-2 {\n    --gutter-y: 0.5rem;\n  }\n  .g-3,\n  .gx-3 {\n    --gutter-x: 1rem;\n  }\n  .g-3,\n  .gy-3 {\n    --gutter-y: 1rem;\n  }\n  .g-4,\n  .gx-4 {\n    --gutter-x: 1.5rem;\n  }\n  .g-4,\n  .gy-4 {\n    --gutter-y: 1.5rem;\n  }\n  .g-5,\n  .gx-5 {\n    --gutter-x: 3rem;\n  }\n  .g-5,\n  .gy-5 {\n    --gutter-y: 3rem;\n  }\n  @media (width >= 576px) {\n    .col-sm {\n      flex: 1 0 0;\n    }\n    .row-cols-sm-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-sm-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-sm-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-sm-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-sm-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-sm-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-sm-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-sm-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-sm-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-sm-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-sm-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-sm-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-sm-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-sm-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-sm-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-sm-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-sm-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-sm-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-sm-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-sm-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-sm-0 {\n      margin-inline-start: 0;\n    }\n    .offset-sm-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-sm-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-sm-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-sm-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-sm-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-sm-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-sm-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-sm-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-sm-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-sm-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-sm-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-sm--2,\n    .gx-sm--2 {\n      --gutter-x: -0.5rem;\n    }\n    .g-sm--2,\n    .gy-sm--2 {\n      --gutter-y: -0.5rem;\n    }\n    .g-sm--1,\n    .gx-sm--1 {\n      --gutter-x: -0.25rem;\n    }\n    .g-sm--1,\n    .gy-sm--1 {\n      --gutter-y: -0.25rem;\n    }\n    .g-sm-0,\n    .gx-sm-0 {\n      --gutter-x: 0;\n    }\n    .g-sm-0,\n    .gy-sm-0 {\n      --gutter-y: 0;\n    }\n    .g-sm-1,\n    .gx-sm-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-sm-1,\n    .gy-sm-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-sm-2,\n    .gx-sm-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-sm-2,\n    .gy-sm-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-sm-3,\n    .gx-sm-3 {\n      --gutter-x: 1rem;\n    }\n    .g-sm-3,\n    .gy-sm-3 {\n      --gutter-y: 1rem;\n    }\n    .g-sm-4,\n    .gx-sm-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-sm-4,\n    .gy-sm-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-sm-5,\n    .gx-sm-5 {\n      --gutter-x: 3rem;\n    }\n    .g-sm-5,\n    .gy-sm-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 768px) {\n    .col-md {\n      flex: 1 0 0;\n    }\n    .row-cols-md-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-md-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-md-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-md-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-md-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-md-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-md-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-md-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-md-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-md-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-md-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-md-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-md-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-md-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-md-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-md-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-md-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-md-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-md-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-md-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-md-0 {\n      margin-inline-start: 0;\n    }\n    .offset-md-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-md-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-md-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-md-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-md-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-md-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-md-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-md-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-md-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-md-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-md-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-md--2,\n    .gx-md--2 {\n      --gutter-x: -0.5rem;\n    }\n    .g-md--2,\n    .gy-md--2 {\n      --gutter-y: -0.5rem;\n    }\n    .g-md--1,\n    .gx-md--1 {\n      --gutter-x: -0.25rem;\n    }\n    .g-md--1,\n    .gy-md--1 {\n      --gutter-y: -0.25rem;\n    }\n    .g-md-0,\n    .gx-md-0 {\n      --gutter-x: 0;\n    }\n    .g-md-0,\n    .gy-md-0 {\n      --gutter-y: 0;\n    }\n    .g-md-1,\n    .gx-md-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-md-1,\n    .gy-md-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-md-2,\n    .gx-md-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-md-2,\n    .gy-md-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-md-3,\n    .gx-md-3 {\n      --gutter-x: 1rem;\n    }\n    .g-md-3,\n    .gy-md-3 {\n      --gutter-y: 1rem;\n    }\n    .g-md-4,\n    .gx-md-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-md-4,\n    .gy-md-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-md-5,\n    .gx-md-5 {\n      --gutter-x: 3rem;\n    }\n    .g-md-5,\n    .gy-md-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1024px) {\n    .col-lg {\n      flex: 1 0 0;\n    }\n    .row-cols-lg-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-lg-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-lg-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-lg-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-lg-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-lg-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-lg-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-lg-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-lg-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-lg-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-lg-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-lg-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-lg-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-lg-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-lg-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-lg-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-lg-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-lg-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-lg-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-lg-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-lg-0 {\n      margin-inline-start: 0;\n    }\n    .offset-lg-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-lg-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-lg-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-lg-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-lg-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-lg-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-lg-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-lg-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-lg-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-lg-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-lg-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-lg--2,\n    .gx-lg--2 {\n      --gutter-x: -0.5rem;\n    }\n    .g-lg--2,\n    .gy-lg--2 {\n      --gutter-y: -0.5rem;\n    }\n    .g-lg--1,\n    .gx-lg--1 {\n      --gutter-x: -0.25rem;\n    }\n    .g-lg--1,\n    .gy-lg--1 {\n      --gutter-y: -0.25rem;\n    }\n    .g-lg-0,\n    .gx-lg-0 {\n      --gutter-x: 0;\n    }\n    .g-lg-0,\n    .gy-lg-0 {\n      --gutter-y: 0;\n    }\n    .g-lg-1,\n    .gx-lg-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-lg-1,\n    .gy-lg-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-lg-2,\n    .gx-lg-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-lg-2,\n    .gy-lg-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-lg-3,\n    .gx-lg-3 {\n      --gutter-x: 1rem;\n    }\n    .g-lg-3,\n    .gy-lg-3 {\n      --gutter-y: 1rem;\n    }\n    .g-lg-4,\n    .gx-lg-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-lg-4,\n    .gy-lg-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-lg-5,\n    .gx-lg-5 {\n      --gutter-x: 3rem;\n    }\n    .g-lg-5,\n    .gy-lg-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1280px) {\n    .col-xl {\n      flex: 1 0 0;\n    }\n    .row-cols-xl-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-xl-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-xl-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-xl-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-xl-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-xl-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-xl-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-xl-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-xl-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-xl-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-xl-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-xl-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-xl-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-xl-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-xl-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-xl-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-xl-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-xl-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-xl-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-xl-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-xl-0 {\n      margin-inline-start: 0;\n    }\n    .offset-xl-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-xl-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-xl-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-xl-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-xl-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-xl-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-xl-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-xl-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-xl-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-xl-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-xl-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-xl--2,\n    .gx-xl--2 {\n      --gutter-x: -0.5rem;\n    }\n    .g-xl--2,\n    .gy-xl--2 {\n      --gutter-y: -0.5rem;\n    }\n    .g-xl--1,\n    .gx-xl--1 {\n      --gutter-x: -0.25rem;\n    }\n    .g-xl--1,\n    .gy-xl--1 {\n      --gutter-y: -0.25rem;\n    }\n    .g-xl-0,\n    .gx-xl-0 {\n      --gutter-x: 0;\n    }\n    .g-xl-0,\n    .gy-xl-0 {\n      --gutter-y: 0;\n    }\n    .g-xl-1,\n    .gx-xl-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-xl-1,\n    .gy-xl-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-xl-2,\n    .gx-xl-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-xl-2,\n    .gy-xl-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-xl-3,\n    .gx-xl-3 {\n      --gutter-x: 1rem;\n    }\n    .g-xl-3,\n    .gy-xl-3 {\n      --gutter-y: 1rem;\n    }\n    .g-xl-4,\n    .gx-xl-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-xl-4,\n    .gy-xl-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-xl-5,\n    .gx-xl-5 {\n      --gutter-x: 3rem;\n    }\n    .g-xl-5,\n    .gy-xl-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1536px) {\n    .col-2xl {\n      flex: 1 0 0;\n    }\n    .row-cols-2xl-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-2xl-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-2xl-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-2xl-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-2xl-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-2xl-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-2xl-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-2xl-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-2xl-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-2xl-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-2xl-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-2xl-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-2xl-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-2xl-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-2xl-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-2xl-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-2xl-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-2xl-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-2xl-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-2xl-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-2xl-0 {\n      margin-inline-start: 0;\n    }\n    .offset-2xl-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-2xl-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-2xl-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-2xl-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-2xl-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-2xl-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-2xl-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-2xl-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-2xl-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-2xl-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-2xl-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-2xl--2,\n    .gx-2xl--2 {\n      --gutter-x: -0.5rem;\n    }\n    .g-2xl--2,\n    .gy-2xl--2 {\n      --gutter-y: -0.5rem;\n    }\n    .g-2xl--1,\n    .gx-2xl--1 {\n      --gutter-x: -0.25rem;\n    }\n    .g-2xl--1,\n    .gy-2xl--1 {\n      --gutter-y: -0.25rem;\n    }\n    .g-2xl-0,\n    .gx-2xl-0 {\n      --gutter-x: 0;\n    }\n    .g-2xl-0,\n    .gy-2xl-0 {\n      --gutter-y: 0;\n    }\n    .g-2xl-1,\n    .gx-2xl-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-2xl-1,\n    .gy-2xl-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-2xl-2,\n    .gx-2xl-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-2xl-2,\n    .gy-2xl-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-2xl-3,\n    .gx-2xl-3 {\n      --gutter-x: 1rem;\n    }\n    .g-2xl-3,\n    .gy-2xl-3 {\n      --gutter-y: 1rem;\n    }\n    .g-2xl-4,\n    .gx-2xl-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-2xl-4,\n    .gy-2xl-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-2xl-5,\n    .gx-2xl-5 {\n      --gutter-x: 3rem;\n    }\n    .g-2xl-5,\n    .gy-2xl-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  .grid {\n    --columns: 12;\n    --rows: 1;\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-rows: repeat(var(--rows), 1fr);\n    grid-template-columns: repeat(var(--columns), 1fr);\n    gap: var(--gap);\n  }\n  .g-col-1 {\n    grid-column: auto/span 1;\n  }\n  .g-col-2 {\n    grid-column: auto/span 2;\n  }\n  .g-col-3 {\n    grid-column: auto/span 3;\n  }\n  .g-col-4 {\n    grid-column: auto/span 4;\n  }\n  .g-col-5 {\n    grid-column: auto/span 5;\n  }\n  .g-col-6 {\n    grid-column: auto/span 6;\n  }\n  .g-col-7 {\n    grid-column: auto/span 7;\n  }\n  .g-col-8 {\n    grid-column: auto/span 8;\n  }\n  .g-col-9 {\n    grid-column: auto/span 9;\n  }\n  .g-col-10 {\n    grid-column: auto/span 10;\n  }\n  .g-col-11 {\n    grid-column: auto/span 11;\n  }\n  .g-col-12 {\n    grid-column: auto/span 12;\n  }\n  .g-start-1 {\n    grid-column-start: 1;\n  }\n  .g-start-2 {\n    grid-column-start: 2;\n  }\n  .g-start-3 {\n    grid-column-start: 3;\n  }\n  .g-start-4 {\n    grid-column-start: 4;\n  }\n  .g-start-5 {\n    grid-column-start: 5;\n  }\n  .g-start-6 {\n    grid-column-start: 6;\n  }\n  .g-start-7 {\n    grid-column-start: 7;\n  }\n  .g-start-8 {\n    grid-column-start: 8;\n  }\n  .g-start-9 {\n    grid-column-start: 9;\n  }\n  .g-start-10 {\n    grid-column-start: 10;\n  }\n  .g-start-11 {\n    grid-column-start: 11;\n  }\n  @media (width >= 576px) {\n    .g-col-sm-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-sm-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-sm-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-sm-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-sm-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-sm-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-sm-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-sm-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-sm-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-sm-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-sm-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-sm-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-sm-1 {\n      grid-column-start: 1;\n    }\n    .g-start-sm-2 {\n      grid-column-start: 2;\n    }\n    .g-start-sm-3 {\n      grid-column-start: 3;\n    }\n    .g-start-sm-4 {\n      grid-column-start: 4;\n    }\n    .g-start-sm-5 {\n      grid-column-start: 5;\n    }\n    .g-start-sm-6 {\n      grid-column-start: 6;\n    }\n    .g-start-sm-7 {\n      grid-column-start: 7;\n    }\n    .g-start-sm-8 {\n      grid-column-start: 8;\n    }\n    .g-start-sm-9 {\n      grid-column-start: 9;\n    }\n    .g-start-sm-10 {\n      grid-column-start: 10;\n    }\n    .g-start-sm-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 768px) {\n    .g-col-md-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-md-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-md-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-md-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-md-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-md-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-md-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-md-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-md-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-md-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-md-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-md-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-md-1 {\n      grid-column-start: 1;\n    }\n    .g-start-md-2 {\n      grid-column-start: 2;\n    }\n    .g-start-md-3 {\n      grid-column-start: 3;\n    }\n    .g-start-md-4 {\n      grid-column-start: 4;\n    }\n    .g-start-md-5 {\n      grid-column-start: 5;\n    }\n    .g-start-md-6 {\n      grid-column-start: 6;\n    }\n    .g-start-md-7 {\n      grid-column-start: 7;\n    }\n    .g-start-md-8 {\n      grid-column-start: 8;\n    }\n    .g-start-md-9 {\n      grid-column-start: 9;\n    }\n    .g-start-md-10 {\n      grid-column-start: 10;\n    }\n    .g-start-md-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1024px) {\n    .g-col-lg-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-lg-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-lg-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-lg-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-lg-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-lg-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-lg-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-lg-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-lg-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-lg-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-lg-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-lg-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-lg-1 {\n      grid-column-start: 1;\n    }\n    .g-start-lg-2 {\n      grid-column-start: 2;\n    }\n    .g-start-lg-3 {\n      grid-column-start: 3;\n    }\n    .g-start-lg-4 {\n      grid-column-start: 4;\n    }\n    .g-start-lg-5 {\n      grid-column-start: 5;\n    }\n    .g-start-lg-6 {\n      grid-column-start: 6;\n    }\n    .g-start-lg-7 {\n      grid-column-start: 7;\n    }\n    .g-start-lg-8 {\n      grid-column-start: 8;\n    }\n    .g-start-lg-9 {\n      grid-column-start: 9;\n    }\n    .g-start-lg-10 {\n      grid-column-start: 10;\n    }\n    .g-start-lg-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1280px) {\n    .g-col-xl-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-xl-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-xl-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-xl-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-xl-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-xl-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-xl-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-xl-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-xl-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-xl-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-xl-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-xl-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-xl-1 {\n      grid-column-start: 1;\n    }\n    .g-start-xl-2 {\n      grid-column-start: 2;\n    }\n    .g-start-xl-3 {\n      grid-column-start: 3;\n    }\n    .g-start-xl-4 {\n      grid-column-start: 4;\n    }\n    .g-start-xl-5 {\n      grid-column-start: 5;\n    }\n    .g-start-xl-6 {\n      grid-column-start: 6;\n    }\n    .g-start-xl-7 {\n      grid-column-start: 7;\n    }\n    .g-start-xl-8 {\n      grid-column-start: 8;\n    }\n    .g-start-xl-9 {\n      grid-column-start: 9;\n    }\n    .g-start-xl-10 {\n      grid-column-start: 10;\n    }\n    .g-start-xl-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1536px) {\n    .g-col-2xl-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-2xl-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-2xl-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-2xl-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-2xl-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-2xl-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-2xl-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-2xl-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-2xl-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-2xl-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-2xl-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-2xl-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-2xl-1 {\n      grid-column-start: 1;\n    }\n    .g-start-2xl-2 {\n      grid-column-start: 2;\n    }\n    .g-start-2xl-3 {\n      grid-column-start: 3;\n    }\n    .g-start-2xl-4 {\n      grid-column-start: 4;\n    }\n    .g-start-2xl-5 {\n      grid-column-start: 5;\n    }\n    .g-start-2xl-6 {\n      grid-column-start: 6;\n    }\n    .g-start-2xl-7 {\n      grid-column-start: 7;\n    }\n    .g-start-2xl-8 {\n      grid-column-start: 8;\n    }\n    .g-start-2xl-9 {\n      grid-column-start: 9;\n    }\n    .g-start-2xl-10 {\n      grid-column-start: 10;\n    }\n    .g-start-2xl-11 {\n      grid-column-start: 11;\n    }\n  }\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n  .grid-fill {\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n}\n@layer forms {\n  .form-label,\n  .col-form-label {\n    font-size: var(--label-font-size, var(--font-size-sm));\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, inherit);\n    color: var(--label-color, var(--fg-body));\n  }\n  .form-label {\n    margin-bottom: var(--label-margin-bottom, calc(var(--spacer) / 2));\n  }\n  .col-form-label {\n    --label-padding-y: calc(var(--btn-input-padding-y) + var(--border-width));\n    padding-block: var(--label-padding-y);\n    margin-bottom: 0;\n  }\n  .col-form-label-lg {\n    --label-padding-y: calc(var(--btn-input-lg-padding-y) + var(--border-width));\n    font-size: var(--btn-input-lg-font-size);\n  }\n  .col-form-label-sm {\n    --label-padding-y: calc(var(--btn-input-sm-padding-y) + var(--border-width));\n    font-size: var(--btn-input-sm-font-size);\n  }\n}\n@layer forms {\n  .form-text {\n    --form-text-margin-top: 0.25rem;\n    --form-text-font-size: var(--font-size-sm);\n    --form-text-color: var(--fg-3);\n    margin-top: var(--form-text-margin-top);\n    font-size: var(--form-text-font-size);\n    font-style: var(--form-text-font-style);\n    font-weight: var(--form-text-font-weight);\n    color: var(--form-text-color);\n  }\n}\n@layer forms {\n  .form-control {\n    --control-min-height: var(--btn-input-min-height);\n    --control-padding-y: var(--btn-input-padding-y);\n    --control-padding-x: var(--btn-input-padding-x);\n    --control-font-size: var(--btn-input-font-size);\n    --control-line-height: var(--btn-input-line-height);\n    --control-fg: var(--btn-input-fg);\n    --control-bg: var(--btn-input-bg);\n    --control-border-width: var(--border-width);\n    --control-border-color: var(--border-color);\n    --control-border-radius: var(--border-radius);\n    --control-box-shadow: var(--box-shadow-inset);\n    --control-action-bg: var(--bg-1);\n    --control-action-hover-bg: var(--bg-2);\n    --control-transition-property: border-color, box-shadow;\n    --control-transition-timing: 0.15s ease-in-out;\n    --control-transition: var(--control-transition-property) var(--control-transition-timing);\n    --control-placeholder-color: var(--fg-3);\n    --control-disabled-color: var(--control-fg);\n    --control-disabled-bg: var(--bg-2);\n    --control-disabled-border-color: var(--control-border-color);\n    --control-select-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2300000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    --control-select-bg-position: right 0.75rem center;\n    --control-select-bg-size: 16px 12px;\n    --control-select-bg-dark: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    display: flex;\n    width: 100%;\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    font-size: var(--control-font-size);\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    appearance: none;\n    background-color: var(--control-bg);\n    background-clip: padding-box;\n    border: var(--control-border-width) solid var(--control-border-color);\n    border-radius: var(--control-border-radius);\n    box-shadow: var(--control-box-shadow);\n    transition: var(--control-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-control {\n      transition: none;\n    }\n  }\n  .form-control:focus-visible {\n    --focus-ring-offset: -1px;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-control::placeholder {\n    color: var(--control-placeholder-color);\n    opacity: 1;\n  }\n  .form-control:disabled {\n    color: var(--control-disabled-color);\n    background-color: var(--control-disabled-bg);\n    border-color: var(--control-disabled-border-color);\n    opacity: 1;\n  }\n  .form-control::-webkit-datetime-edit {\n    display: block;\n    height: 1.5rem;\n    padding: 0;\n    margin-bottom: -0.125rem;\n  }\n  .form-control::-webkit-datetime-edit-fields-wrapper {\n    height: 1.5rem;\n  }\n  .form-control[type=file] {\n    overflow: hidden;\n  }\n  .form-control[type=file]:not(:disabled):not([readonly]) {\n    cursor: pointer;\n  }\n  .form-control::file-selector-button {\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    margin: calc(var(--control-padding-y) * -1) calc(var(--control-padding-x) * -1);\n    margin-inline-end: var(--control-padding-x);\n    color: var(--control-fg);\n    background-color: var(--control-action-bg);\n    pointer-events: none;\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n    border-inline-end-width: var(--control-border-width);\n    border-radius: 0;\n    transition: var(--control-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-control::file-selector-button {\n      transition: none;\n    }\n  }\n  .form-control:hover:not(:disabled):not([readonly])::file-selector-button {\n    background-color: var(--control-action-hover-bg);\n  }\n  .form-control-plaintext {\n    display: block;\n    width: 100%;\n    padding: var(--control-padding-y) 0;\n    margin-bottom: 0;\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    background-color: transparent;\n    border: solid transparent;\n    border-width: var(--control-border-width) 0;\n  }\n  .form-control-plaintext:focus {\n    outline: 0;\n  }\n  .form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n    padding-inline: 0;\n  }\n  select.form-control {\n    padding-inline-end: calc(var(--control-padding-x) * 3);\n    background-image: var(--control-select-bg);\n    background-repeat: no-repeat;\n    background-position: var(--control-select-bg-position);\n    background-size: var(--control-select-bg-size);\n  }\n  select.form-control[multiple], select.form-control[size]:not([size=\"1\"]) {\n    padding-inline-end: var(--control-padding-x);\n    background-image: none;\n  }\n  @media (prefers-color-scheme: dark) {\n    select.form-control {\n      background-image: var(--control-select-bg-dark);\n    }\n  }\n  .form-control-sm {\n    --control-min-height: var(--btn-input-sm-min-height);\n    --control-padding-y: var(--btn-input-sm-padding-y);\n    --control-padding-x: var(--btn-input-sm-padding-x);\n    --control-font-size: var(--btn-input-sm-font-size);\n    --control-line-height: var(--btn-input-sm-line-height);\n    --control-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .form-control-lg {\n    --control-min-height: var(--btn-input-lg-min-height);\n    --control-padding-y: var(--btn-input-lg-padding-y);\n    --control-padding-x: var(--btn-input-lg-padding-x);\n    --control-font-size: var(--btn-input-lg-font-size);\n    --control-line-height: var(--btn-input-lg-line-height);\n    --control-border-radius: var(--btn-input-lg-border-radius);\n  }\n  .form-control-color {\n    width: var(--control-min-height);\n    padding: var(--control-padding-y);\n  }\n  .form-control-color:not(:disabled):not([readonly]) {\n    cursor: pointer;\n  }\n  .form-control-color::-moz-color-swatch {\n    border: 0 !important;\n    border-radius: var(--border-radius-sm);\n  }\n  .form-control-color::-webkit-color-swatch {\n    border: 0 !important;\n    border-radius: var(--border-radius-sm);\n  }\n  .form-ghost {\n    display: block;\n    width: 100%;\n    padding: 0;\n    font: inherit;\n    color: inherit;\n    appearance: none;\n    background: transparent;\n    border: 0;\n  }\n  .form-ghost:focus {\n    outline: 0;\n  }\n  .form-ghost::placeholder {\n    color: var(--fg-3);\n    opacity: 1;\n  }\n  .form-ghost:disabled {\n    color: var(--fg-4);\n    cursor: not-allowed;\n  }\n}\n@layer forms {\n  .checkgroup {\n    display: flex;\n    gap: var(--gap, 0.5rem);\n    align-items: var(--align-items, start);\n  }\n  .checkgroup .description {\n    color: var(--fg-3);\n  }\n  .check {\n    --check-size: 1.25rem;\n    --check-margin-block: 0.125rem;\n    --check-bg: transparent;\n    --check-border-color: var(--border-color);\n    --check-border-radius: 0.375rem;\n    --check-checked-bg: var(--control-checked-bg);\n    --check-checked-border-color: var(--control-checked-border-color);\n    --check-indeterminate-bg: var(--control-checked-bg);\n    --check-indeterminate-border-color: var(--control-checked-border-color);\n    --check-active-bg: var(--control-active-bg);\n    --check-active-border-color: var(--control-active-border-color);\n    --check-disabled-bg: var(--control-disabled-bg);\n    --check-disabled-opacity: var(--control-disabled-opacity);\n    display: grid;\n    grid-template-columns: repeat(1, minmax(0, 1fr));\n    margin-block: var(--check-margin-block);\n  }\n  .check :where(svg, input) {\n    flex-shrink: 0;\n    grid-row-start: 1;\n    grid-column-start: 1;\n    width: var(--check-size);\n    height: var(--check-size);\n  }\n  .check :where(input) {\n    appearance: none;\n    background-color: var(--theme-bg, var(--check-bg));\n    border: 1px solid var(--theme-bg, var(--check-border-color));\n    border-radius: 0.3em;\n  }\n  .check :where(input:checked, input:indeterminate) {\n    background-color: var(--theme-bg, var(--check-checked-bg));\n    border-color: var(--theme-bg, var(--check-checked-border-color));\n  }\n  .check :where(input:focus-visible) {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .check:has(input:checked) .checked, .check:has(input:indeterminate) .indeterminate {\n    display: block;\n    color: var(--theme-contrast, var(--primary-contrast));\n    stroke: currentcolor;\n  }\n  .check:has(input:disabled) {\n    --check-bg: var(--check-disabled-bg);\n  }\n  .check:has(input:disabled) ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .check:has(input:disabled:checked) {\n    opacity: var(--check-disabled-opacity);\n  }\n  .check :where(svg) {\n    pointer-events: none;\n  }\n  .check :where(svg path) {\n    display: none;\n  }\n  .check-sm {\n    --check-size: 1rem;\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: 0;\n  }\n}\n@layer forms {\n  .radiogroup {\n    display: flex;\n    gap: var(--gap, 0.5rem);\n    align-items: var(--align-items, start);\n  }\n  .radiogroup .description {\n    color: var(--fg-3);\n  }\n  .radio {\n    --radio-size: 1.25rem;\n    --radio-margin-block: 0.125rem;\n    --radio-bg: transparent;\n    --radio-border-color: var(--border-color);\n    --radio-checked-bg: var(--control-checked-bg);\n    --radio-checked-border-color: var(--control-checked-border-color);\n    --radio-disabled-bg: var(--control-disabled-bg);\n    --radio-disabled-opacity: var(--control-disabled-opacity);\n    position: relative;\n    flex-shrink: 0;\n    width: var(--radio-size);\n    height: var(--radio-size);\n    margin-block: var(--radio-margin-block);\n    appearance: none;\n    background-color: var(--theme-bg, var(--radio-bg));\n    border: 1px solid var(--theme-bg, var(--radio-border-color));\n    border-radius: 50%;\n  }\n  .radio:checked {\n    color: var(--theme-contrast, var(--primary-contrast));\n    background-color: var(--theme-bg, var(--radio-checked-bg));\n    border-color: var(--theme-bg, var(--radio-checked-border-color));\n  }\n  .radio:checked::before {\n    position: absolute;\n    inset: 0.25rem;\n    content: \"\";\n    background-color: currentcolor;\n    border-radius: 50%;\n  }\n  .radio:disabled {\n    --radio-bg: var(--radio-disabled-bg);\n  }\n  .radio:disabled ~ label {\n    color: var(--secondary-text);\n    cursor: default;\n  }\n  .radio:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .radio-sm {\n    --radio-size: 1rem;\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: 0;\n  }\n}\n@layer forms {\n  .switch {\n    --switch-height: 1.25rem;\n    --switch-width: calc(var(--switch-height) * 1.5);\n    --switch-padding: 0.0625rem;\n    --switch-margin-block: 0.125rem;\n    --switch-bg: var(--bg-3);\n    --switch-border-width: var(--border-width);\n    --switch-border-color: var(--border-color);\n    --switch-indicator-bg: var(--white);\n    --switch-checked-bg: var(--control-checked-bg);\n    --switch-checked-border-color: var(--switch-checked-bg);\n    --switch-checked-indicator-bg: var(--white);\n    --switch-disabled-bg: var(--control-disabled-bg);\n    --switch-disabled-indicator-bg: var(--fg-3);\n    position: relative;\n    display: flex;\n    flex-shrink: 0;\n    align-items: stretch;\n    justify-content: flex-start;\n    width: var(--switch-width);\n    height: var(--switch-height);\n    padding: var(--switch-padding);\n    margin-block: var(--switch-margin-block);\n    background-color: var(--switch-bg);\n    border: var(--switch-border-width) solid var(--switch-border-color);\n    border-radius: 10rem;\n    box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.05);\n    transition: 0.15s ease-in-out;\n    transition-property: padding-inline-start, background-color;\n  }\n  .switch::before {\n    flex-shrink: 0;\n    width: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\n    height: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\n    content: \"\";\n    background-color: var(--theme-contrast, var(--switch-indicator-bg));\n    border-radius: 50%;\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n  }\n  .switch input {\n    position: absolute;\n    inset: 0;\n    appearance: none;\n    background-color: transparent;\n    outline: 0;\n  }\n  .switch:focus-within {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .switch:has(input:checked) {\n    padding-inline-start: calc(var(--switch-height) / 2 + var(--switch-padding));\n    background-color: var(--theme-bg, var(--switch-checked-bg));\n    border-color: var(--theme-bg, var(--switch-checked-border-color));\n  }\n  .switch:has(input:disabled) {\n    --switch-bg: var(--switch-disabled-bg);\n    --switch-indicator-bg: var(--switch-disabled-indicator-bg);\n  }\n  .switch:has(input:disabled)::before {\n    opacity: 0.4;\n  }\n  .switch:has(input:disabled) ~ label {\n    color: var(--secondary-text);\n    cursor: default;\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: 0;\n  }\n}\n@layer forms {\n  .form-range {\n    --range-track-width: 100%;\n    --range-track-height: 0.5rem;\n    --range-track-cursor: pointer;\n    --range-track-bg: var(--bg-3);\n    --range-track-border-radius: 1rem;\n    --range-track-box-shadow: var(--box-shadow-inset);\n    --range-thumb-width: 1rem;\n    --range-thumb-height: var(--range-thumb-width);\n    --range-thumb-bg: var(--primary-base);\n    --range-thumb-border: 0;\n    --range-thumb-border-radius: 1rem;\n    --range-thumb-box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1);\n    --range-thumb-active-bg: color-mix(in oklch, var(--primary-base) 70%, var(--bg-body));\n    --range-thumb-disabled-bg: var(--fg-3);\n    --range-thumb-transition-property: background-color, border-color, box-shadow;\n    --range-thumb-transition-timing: 0.15s ease-in-out;\n    --range-thumb-transition: var(--range-thumb-transition-property) var(--range-thumb-transition-timing);\n    width: 100%;\n    height: calc(var(--range-thumb-height) + var(--focus-ring-width) * 2);\n    padding: 0;\n    appearance: none;\n    background-color: transparent;\n  }\n  .form-range:focus {\n    outline: 0;\n  }\n  .form-range:focus::-webkit-slider-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .form-range:focus::-moz-range-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .form-range::-moz-focus-outer {\n    border: 0;\n  }\n  .form-range::-webkit-slider-thumb {\n    width: var(--range-thumb-width);\n    height: var(--range-thumb-height);\n    appearance: none;\n    background-color: var(--range-thumb-bg);\n    border: var(--range-thumb-border);\n    border-radius: var(--range-thumb-border-radius);\n    box-shadow: var(--range-thumb-box-shadow);\n    transition: var(--range-thumb-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-range::-webkit-slider-thumb {\n      transition: none;\n    }\n  }\n  .form-range::-webkit-slider-thumb:active {\n    background-color: var(--range-thumb-active-bg);\n  }\n  .form-range::-webkit-slider-thumb {\n    margin-top: calc((var(--range-track-height) - var(--range-thumb-height)) * 0.5);\n  }\n  .form-range::-moz-range-thumb {\n    width: var(--range-thumb-width);\n    height: var(--range-thumb-height);\n    appearance: none;\n    background-color: var(--range-thumb-bg);\n    border: var(--range-thumb-border);\n    border-radius: var(--range-thumb-border-radius);\n    box-shadow: var(--range-thumb-box-shadow);\n    transition: var(--range-thumb-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-range::-moz-range-thumb {\n      transition: none;\n    }\n  }\n  .form-range::-moz-range-thumb:active {\n    background-color: var(--range-thumb-active-bg);\n  }\n  .form-range::-webkit-slider-runnable-track {\n    width: var(--range-track-width);\n    height: var(--range-track-height);\n    color: transparent;\n    cursor: var(--range-track-cursor);\n    background-color: var(--range-track-bg);\n    border-color: transparent;\n    border-radius: var(--range-track-border-radius);\n    box-shadow: var(--range-track-box-shadow);\n  }\n  .form-range::-moz-range-track {\n    width: var(--range-track-width);\n    height: var(--range-track-height);\n    color: transparent;\n    cursor: var(--range-track-cursor);\n    background-color: var(--range-track-bg);\n    border-color: transparent;\n    border-radius: var(--range-track-border-radius);\n    box-shadow: var(--range-track-box-shadow);\n  }\n  .form-range:disabled {\n    pointer-events: none;\n  }\n  .form-range:disabled::-webkit-slider-thumb {\n    background-color: var(--range-thumb-disabled-bg);\n  }\n  .form-range:disabled::-moz-range-thumb {\n    background-color: var(--range-thumb-disabled-bg);\n  }\n}\n@layer forms {\n  .form-floating {\n    --form-floating-height: calc(3.5rem + var(--border-width) * 2);\n    --form-floating-line-height: 1.25;\n    --form-floating-padding-x: var(--btn-input-padding-x);\n    --form-floating-padding-y: 1rem;\n    --form-floating-input-padding-t: 1.625rem;\n    --form-floating-input-padding-b: 0.625rem;\n    --form-floating-label-height: 1.5em;\n    --form-floating-label-opacity: 0.65;\n    --form-floating-label-transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n    --form-floating-label-disabled-color: var(--fg-3);\n    --form-floating-transition-property: opacity, transform;\n    --form-floating-transition-timing: 0.1s ease-in-out;\n    --form-floating-transition: var(--form-floating-transition-property) var(--form-floating-transition-timing);\n    position: relative;\n  }\n  .form-floating > label {\n    position: absolute;\n    inset-block-start: 0;\n    inset-inline-start: 0;\n    z-index: 2;\n    display: flex;\n    align-items: center;\n    max-width: 100%;\n    height: 100%;\n    padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n    overflow: hidden;\n    color: color-mix(in oklch, var(--fg-body) var(--form-floating-label-opacity), transparent);\n    text-align: start;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    pointer-events: none;\n    border: var(--input-btn-border-width) solid transparent;\n    transform-origin: 0 0;\n    transition: var(--form-floating-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-floating > label {\n      transition: none;\n    }\n  }\n  .form-floating > .form-control,\n  .form-floating > .form-control-plaintext {\n    height: var(--form-floating-height);\n    min-height: var(--form-floating-height);\n    padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n    line-height: var(--form-floating-line-height);\n  }\n  .form-floating > .form-control::placeholder,\n  .form-floating > .form-control-plaintext::placeholder {\n    color: transparent;\n  }\n  .form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),\n  .form-floating > .form-control-plaintext:focus,\n  .form-floating > .form-control-plaintext:not(:placeholder-shown) {\n    padding-top: var(--form-floating-input-padding-t);\n    padding-bottom: var(--form-floating-input-padding-b);\n  }\n  .form-floating > .form-control:-webkit-autofill,\n  .form-floating > .form-control-plaintext:-webkit-autofill {\n    padding-top: var(--form-floating-input-padding-t);\n    padding-bottom: var(--form-floating-input-padding-b);\n  }\n  .form-floating > .form-control:focus ~ label,\n  .form-floating > .form-control:not(:placeholder-shown) ~ label,\n  .form-floating > .form-control-plaintext ~ label {\n    transform: var(--form-floating-label-transform);\n  }\n  .form-floating > .form-control:-webkit-autofill ~ label {\n    transform: var(--form-floating-label-transform);\n  }\n  .form-floating > textarea:focus ~ label::after,\n  .form-floating > textarea:not(:placeholder-shown) ~ label::after {\n    position: absolute;\n    inset: var(--form-floating-padding-y) calc(var(--form-floating-padding-x) * 0.5);\n    z-index: -1;\n    height: var(--form-floating-label-height);\n    content: \"\";\n    background-color: var(--control-bg);\n    border-radius: var(--btn-input-border-radius);\n  }\n  .form-floating > textarea:disabled ~ label::after {\n    background-color: var(--control-disabled-bg);\n  }\n  .form-floating > .form-control-plaintext ~ label {\n    border-width: var(--control-border-width) 0;\n  }\n  .form-floating > :disabled ~ label,\n  .form-floating > .form-control:disabled ~ label {\n    color: var(--form-floating-label-disabled-color);\n  }\n}\n@layer components {\n  .input-group {\n    --input-group-addon-padding-y: var(--btn-input-padding-y);\n    --input-group-addon-padding-x: var(--btn-input-padding-x);\n    --input-group-addon-font-size: var(--btn-input-font-size);\n    --input-group-addon-line-height: var(--btn-input-line-height);\n    --input-group-addon-color: var(--fg-body);\n    --input-group-addon-bg: var(--bg-2);\n    --input-group-addon-border-color: var(--border-color);\n    position: relative;\n    display: flex;\n    flex-wrap: wrap;\n    align-items: stretch;\n    width: 100%;\n  }\n  .input-group > .form-control,\n  .input-group > .form-floating {\n    position: relative;\n    flex: 1 1 auto;\n    width: 1%;\n    min-width: 0;\n  }\n  .input-group > .form-control:focus,\n  .input-group > .form-floating:focus-within {\n    z-index: 5;\n  }\n  .input-group > .input-group-btn {\n    position: relative;\n    z-index: 2;\n  }\n  .input-group > .input-group-btn:focus {\n    z-index: 5;\n  }\n  .input-group-text {\n    display: flex;\n    align-items: center;\n    padding: var(--input-group-addon-padding-y) var(--input-group-addon-padding-x);\n    font-size: var(--input-group-addon-font-size);\n    line-height: var(--input-group-addon-line-height);\n    color: var(--input-group-addon-color);\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--input-group-addon-bg);\n    border: var(--border-width) solid var(--input-group-addon-border-color);\n    border-radius: var(--btn-input-border-radius);\n  }\n  .input-group-sm > .form-control,\n  .input-group-sm > .input-group-text,\n  .input-group-sm > .btn {\n    min-height: var(--btn-input-sm-min-height);\n    padding: var(--btn-input-sm-padding-y) var(--btn-input-sm-padding-x);\n    font-size: var(--btn-input-sm-font-size);\n    border-radius: var(--btn-input-sm-border-radius);\n  }\n  .input-group-lg > .form-control,\n  .input-group-lg > .input-group-text,\n  .input-group-lg > .btn {\n    min-height: var(--btn-input-lg-min-height);\n    padding: var(--btn-input-lg-padding-y) var(--btn-input-lg-padding-x);\n    font-size: var(--btn-input-lg-font-size);\n    border-radius: var(--btn-input-lg-border-radius);\n  }\n  .input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n  .input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3),\n  .input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control,\n  .input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n  .input-group.has-validation > .dropdown-toggle:nth-last-child(n+4),\n  .input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control,\n  .input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .input-group > :not(:first-child):not(.dropdown-menu) {\n    margin-inline-start: calc(-1 * var(--border-width));\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .input-group > .form-floating:not(:first-child) > .form-control,\n  .input-group > .form-floating:not(:first-child) > .form-select {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n}\n@layer forms {\n  .strength {\n    --strength-height: 0.375rem;\n    --strength-gap: 0.25rem;\n    --strength-margin-top: 0.25rem;\n    --strength-border-radius: var(--border-radius-pill);\n    --strength-bg: var(--bg-2);\n    --strength-color: var(--bg-2);\n    --strength-weak-color: var(--danger-bg);\n    --strength-fair-color: var(--warning-bg);\n    --strength-good-color: var(--info-bg);\n    --strength-strong-color: var(--success-bg);\n    display: flex;\n    gap: var(--strength-gap);\n    width: 100%;\n    margin-top: var(--strength-margin-top);\n  }\n  .strength-segment {\n    flex: 1;\n    height: var(--strength-height);\n    background-color: var(--strength-bg);\n    border-radius: var(--strength-border-radius);\n    transition: background-color 0.2s ease-in-out, width 0.3s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-segment {\n      transition: none;\n    }\n  }\n  .strength-segment.active {\n    background-color: var(--strength-color);\n  }\n  .strength[data-bs-strength=weak] {\n    --strength-color: var(--strength-weak-color);\n  }\n  .strength[data-bs-strength=fair] {\n    --strength-color: var(--strength-fair-color);\n  }\n  .strength[data-bs-strength=good] {\n    --strength-color: var(--strength-good-color);\n  }\n  .strength[data-bs-strength=strong] {\n    --strength-color: var(--strength-strong-color);\n  }\n  .strength-text {\n    display: block;\n    margin-top: var(--strength-margin-top);\n    font-size: var(--font-size-xs);\n    color: var(--strength-color, var(--fg-3));\n    transition: color 0.2s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-text {\n      transition: none;\n    }\n  }\n  .strength-text:empty {\n    display: none;\n  }\n  .strength-bar {\n    --strength-height: 0.375rem;\n    --strength-gap: 0.25rem;\n    --strength-margin-top: 0.25rem;\n    --strength-border-radius: var(--border-radius-pill);\n    --strength-bg: var(--bg-2);\n    --strength-color: var(--bg-2);\n    --strength-weak-color: var(--danger-bg);\n    --strength-fair-color: var(--warning-bg);\n    --strength-good-color: var(--info-bg);\n    --strength-strong-color: var(--success-bg);\n    --strength-color: transparent;\n    --strength-width: 0%;\n    width: 100%;\n    height: var(--strength-height);\n    margin-top: var(--strength-margin-top);\n    overflow: hidden;\n    background-color: var(--strength-bg);\n    border-radius: var(--strength-border-radius);\n  }\n  .strength-bar::after {\n    display: block;\n    width: var(--strength-width);\n    height: 100%;\n    content: \"\";\n    background-color: var(--strength-color);\n    border-radius: var(--strength-border-radius);\n    transition: background-color 0.2s ease-in-out, width 0.3s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-bar::after {\n      transition: none;\n    }\n  }\n  .strength-bar[data-bs-strength=weak] {\n    --strength-color: var(--strength-weak-color);\n    --strength-width: 25%;\n  }\n  .strength-bar[data-bs-strength=fair] {\n    --strength-color: var(--strength-fair-color);\n    --strength-width: 50%;\n  }\n  .strength-bar[data-bs-strength=good] {\n    --strength-color: var(--strength-good-color);\n    --strength-width: 75%;\n  }\n  .strength-bar[data-bs-strength=strong] {\n    --strength-color: var(--strength-strong-color);\n    --strength-width: 100%;\n  }\n}\n@layer components {\n  .otp {\n    --otp-size: var(--btn-input-lg-min-height);\n    --otp-font-size: var(--btn-input-font-size);\n    --otp-gap: 0.5rem;\n    display: inline-flex;\n    gap: var(--otp-gap);\n  }\n  .otp .form-control {\n    width: var(--otp-size);\n    min-height: var(--otp-size);\n    padding: 0;\n    font-size: var(--otp-font-size);\n    font-weight: 500;\n    line-height: 1;\n    text-align: center;\n    border-radius: var(--otp-border-radius, var(--btn-input-border-radius));\n  }\n  .otp .form-control::-webkit-outer-spin-button, .otp .form-control::-webkit-inner-spin-button {\n    margin: 0;\n    appearance: none;\n  }\n  .otp .form-control[type=number] {\n    appearance: textfield;\n  }\n  .otp .form-control:focus, .otp .form-control:focus-visible {\n    z-index: 1;\n  }\n  .otp.is-valid .form-control, .was-validated .otp:valid .form-control {\n    border-color: var(--form-valid-border-color);\n  }\n  .otp.is-valid .form-control:focus, .was-validated .otp:valid .form-control:focus {\n    --focus-ring-color: rgba(var(--success-rgb), .25);\n    border-color: var(--form-valid-border-color);\n  }\n  .otp.is-invalid .form-control, .was-validated .otp:invalid .form-control {\n    border-color: var(--form-invalid-border-color);\n  }\n  .otp.is-invalid .form-control:focus, .was-validated .otp:invalid .form-control:focus {\n    --focus-ring-color: rgba(var(--danger-rgb), .25);\n    border-color: var(--form-invalid-border-color);\n  }\n  .otp.input-group {\n    gap: 0;\n    width: auto;\n  }\n  .otp.input-group .form-control {\n    flex: 0 0 auto;\n  }\n  .otp-separator {\n    display: flex;\n    align-items: center;\n    padding-inline: var(--otp-gap);\n    font-size: var(--otp-font-size);\n    color: var(--fg-4);\n    user-select: none;\n  }\n  .otp-sm {\n    --otp-size: var(--btn-input-sm-min-height);\n    --otp-font-size: var(--btn-input-sm-font-size);\n    --otp-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .otp-lg {\n    --otp-size: var(--btn-input-lg-min-height);\n    --otp-font-size: var(--btn-input-lg-font-size);\n    --otp-border-radius: var(--btn-input-lg-border-radius);\n  }\n}\n@layer forms {\n  .form-adorn {\n    --form-adorn-gap: 0.375rem;\n    --form-adorn-icon-size: 1rem;\n    --form-adorn-icon-color: var(--fg-2);\n    gap: var(--form-adorn-gap);\n    align-items: center;\n  }\n  .form-adorn:focus-visible {\n    outline: 0;\n  }\n  .form-adorn:focus-within {\n    --focus-ring-offset: -1px;\n    border-color: var(--focus-ring-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-adorn > .form-ghost {\n    flex: 1;\n    min-width: 0;\n  }\n  .form-adorn.form-adorn-end > .form-ghost {\n    order: -1;\n  }\n  .form-adorn-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n  }\n  .form-adorn-icon > svg {\n    width: var(--form-adorn-icon-size);\n    height: var(--form-adorn-icon-size);\n  }\n  .form-adorn-text {\n    flex-shrink: 0;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n    user-select: none;\n  }\n}\n@layer forms {\n  .chip-input {\n    --chip-input-padding-y: 0.75rem;\n    --chip-input-padding-x: 0.75rem;\n    --chip-input-gap: 0.375rem;\n    --chip-input-ghost-min-width: 5rem;\n    --control-fg: var(--btn-input-fg);\n    --control-bg: var(--btn-input-bg);\n    --control-border-width: var(--border-width);\n    --control-border-color: var(--border-color);\n    --control-border-radius: var(--border-radius);\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--chip-input-gap);\n    align-items: center;\n    padding: var(--chip-input-padding-y) var(--chip-input-padding-x);\n    color: var(--control-fg);\n    background-color: var(--control-bg);\n    border: var(--control-border-width) solid var(--control-border-color);\n    border-radius: var(--control-border-radius);\n  }\n  .chip-input:focus-within {\n    --focus-ring-offset: -1px;\n    border-color: var(--focus-ring-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .chip-input > .form-ghost {\n    flex: 1 1 0;\n    min-width: var(--chip-input-ghost-min-width);\n    min-height: 1.75rem;\n  }\n  .chip-input.disabled, .chip-input:has(.form-ghost:disabled) {\n    background-color: var(--bg-2);\n    opacity: 1;\n  }\n  .chip-input.disabled > .chip, .chip-input:has(.form-ghost:disabled) > .chip {\n    opacity: var(--control-disabled-opacity);\n  }\n  .chip-input.disabled > .chip .chip-dismiss, .chip-input:has(.form-ghost:disabled) > .chip .chip-dismiss {\n    pointer-events: none;\n  }\n  .chip-input.disabled > .form-ghost, .chip-input:has(.form-ghost:disabled) > .form-ghost {\n    cursor: not-allowed;\n  }\n}\n@layer components {\n  .tooltip {\n    --tooltip-zindex: 1080;\n    --tooltip-max-width: 200px;\n    --tooltip-padding-x: 0.75rem;\n    --tooltip-padding-y: 0.375rem;\n    --tooltip-font-size: var(--font-size-sm);\n    --tooltip-color: var(--bg-body);\n    --tooltip-bg: var(--fg-body);\n    --tooltip-border-radius: var(--border-radius);\n    --tooltip-opacity: 0.95;\n    --tooltip-arrow-width: 0.8rem;\n    --tooltip-arrow-height: 0.4rem;\n    z-index: var(--tooltip-zindex);\n    display: block;\n    font-family: var(--body-font-family);\n    font-style: normal;\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    text-align: start;\n    text-decoration: none;\n    text-shadow: none;\n    text-transform: none;\n    letter-spacing: normal;\n    word-break: normal;\n    white-space: normal;\n    word-spacing: normal;\n    line-break: auto;\n    font-size: var(--tooltip-font-size);\n    word-wrap: break-word;\n    opacity: 0;\n  }\n  .tooltip.show {\n    opacity: var(--tooltip-opacity);\n  }\n  .tooltip .tooltip-arrow {\n    display: block;\n    width: var(--tooltip-arrow-width);\n    height: var(--tooltip-arrow-height);\n  }\n  .tooltip .tooltip-arrow::before {\n    position: absolute;\n    content: \"\";\n    border-color: transparent;\n    border-style: solid;\n  }\n  .bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow {\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n  }\n  .bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow::before {\n    top: -1px;\n    border-width: var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * 0.5) 0;\n    border-block-start-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow {\n    left: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n  }\n  .bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow::before {\n    right: -1px;\n    border-width: calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * 0.5) 0;\n    border-inline-end-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow {\n    top: calc(-1 * var(--tooltip-arrow-height));\n  }\n  .bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow::before {\n    bottom: -1px;\n    border-width: 0 calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height);\n    border-block-end-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow {\n    right: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n  }\n  .bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow::before {\n    left: -1px;\n    border-width: calc(var(--tooltip-arrow-width) * 0.5) 0 calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height);\n    border-inline-start-color: var(--tooltip-bg);\n  }\n  .tooltip-inner {\n    max-width: var(--tooltip-max-width);\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    color: var(--tooltip-color);\n    text-align: center;\n    background-color: var(--tooltip-bg);\n    border-radius: var(--tooltip-border-radius);\n  }\n}\n@layer components {\n  .valid-feedback {\n    display: none;\n    width: 100%;\n    margin-top: 0.5rem;\n    font-size: var(--font-size-xs);\n    color: var(--form-valid-color);\n  }\n  .valid-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    margin-top: 0.1rem;\n    font-size: var(--tooltip-font-size);\n    color: var(--success-contrast);\n    background-color: var(--success-bg);\n    border-radius: var(--tooltip-border-radius);\n  }\n  .was-validated :valid ~ .valid-feedback,\n  .was-validated :valid ~ .valid-tooltip,\n  .is-valid ~ .valid-feedback,\n  .is-valid ~ .valid-tooltip {\n    display: block;\n  }\n  .was-validated .form-control:valid, .form-control.is-valid {\n    border-color: var(--success-border);\n    padding-inline-end: calc(var(--control-padding-x) * 3.5);\n    background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300a748' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1'/%3e%3c/svg%3e\");\n    background-repeat: no-repeat;\n    background-position: right var(--control-padding-x) center;\n    background-size: 1rem;\n  }\n  .was-validated .form-control:valid:focus-visible, .form-control.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--success-border);\n  }\n  .was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n    background-position: right var(--control-padding-x) top var(--control-padding-x);\n  }\n  .was-validated .form-check-input:valid, .form-check-input.is-valid {\n    border-color: var(--success-border);\n  }\n  .was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {\n    background-color: var(--form-valid-color);\n  }\n  .was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n    color: var(--form-valid-color);\n  }\n  .form-check-inline .form-check-input ~ .valid-feedback {\n    margin-inline-start: 0.5em;\n  }\n  .was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid,\n  .was-validated .input-group > .form-select:not(:focus):valid,\n  .input-group > .form-select:not(:focus).is-valid,\n  .was-validated .input-group > .form-floating:not(:focus-within):valid,\n  .input-group > .form-floating:not(:focus-within).is-valid {\n    z-index: 3;\n  }\n  .invalid-feedback {\n    display: none;\n    width: 100%;\n    margin-top: 0.5rem;\n    font-size: var(--font-size-xs);\n    color: var(--form-invalid-color);\n  }\n  .invalid-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    margin-top: 0.1rem;\n    font-size: var(--tooltip-font-size);\n    color: var(--danger-contrast);\n    background-color: var(--danger-bg);\n    border-radius: var(--tooltip-border-radius);\n  }\n  .was-validated :invalid ~ .invalid-feedback,\n  .was-validated :invalid ~ .invalid-tooltip,\n  .is-invalid ~ .invalid-feedback,\n  .is-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  .was-validated .form-control:invalid, .form-control.is-invalid {\n    border-color: var(--danger-border);\n    padding-inline-end: calc(var(--control-padding-x) * 3.5);\n    background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dd0d37'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dd0d37' stroke='none'/%3e%3c/svg%3e\");\n    background-repeat: no-repeat;\n    background-position: right var(--control-padding-x) center;\n    background-size: 1rem;\n  }\n  .was-validated .form-control:invalid:focus-visible, .form-control.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--danger-border);\n  }\n  .was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n    background-position: right var(--control-padding-x) top var(--control-padding-x);\n  }\n  .was-validated .form-check-input:invalid, .form-check-input.is-invalid {\n    border-color: var(--danger-border);\n  }\n  .was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {\n    background-color: var(--form-invalid-color);\n  }\n  .was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n    color: var(--form-invalid-color);\n  }\n  .form-check-inline .form-check-input ~ .invalid-feedback {\n    margin-inline-start: 0.5em;\n  }\n  .was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid,\n  .was-validated .input-group > .form-select:not(:focus):invalid,\n  .input-group > .form-select:not(:focus).is-invalid,\n  .was-validated .input-group > .form-floating:not(:focus-within):invalid,\n  .input-group > .form-floating:not(:focus-within).is-invalid {\n    z-index: 4;\n  }\n}\n@layer components {\n  .btn, .btn-link, .btn-icon, .btn-solid, .btn-outline, .btn-subtle, .btn-text {\n    --btn-min-height: var(--btn-input-min-height);\n    --btn-padding-x: var(--btn-input-padding-x);\n    --btn-padding-y: var(--btn-input-padding-y);\n    --btn-font-size: var(--btn-input-font-size);\n    --btn-font-weight: var(--btn-input-font-weight);\n    --btn-line-height: var(--btn-input-line-height);\n    --btn-color: var(--fg-body);\n    --btn-white-space: nowrap;\n    --btn-border-width: var(--border-width);\n    --btn-border-color: transparent;\n    --btn-border-radius: var(--border-radius);\n    --btn-hover-border-color: transparent;\n    --btn-disabled-opacity: 0.65;\n    --btn-transition-timing: 0.15s ease-in-out;\n    --btn-transition-property: color, background-color, border-color, box-shadow;\n    --btn-transition: var(--btn-transition-property) var(--btn-transition-timing);\n    display: inline-flex;\n    gap: var(--btn-gap, 0.25rem);\n    align-items: center;\n    justify-content: center;\n    min-height: var(--btn-min-height);\n    padding: var(--btn-padding-y) var(--btn-padding-x);\n    font-size: var(--btn-font-size);\n    font-weight: var(--btn-font-weight);\n    line-height: var(--btn-line-height);\n    color: var(--btn-color);\n    text-decoration: none;\n    white-space: var(--btn-white-space);\n    vertical-align: middle;\n    cursor: pointer;\n    user-select: none;\n    background-color: var(--btn-bg, var(--bg-2));\n    border: var(--btn-border-width) solid var(--btn-border-color);\n    border-radius: var(--btn-border-radius);\n    transition: var(--btn-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .btn, .btn-link, .btn-icon, .btn-solid, .btn-outline, .btn-subtle, .btn-text {\n      transition: none;\n    }\n  }\n  .btn:hover, .btn-link:hover, .btn-icon:hover, .btn-solid:hover, .btn-outline:hover, .btn-subtle:hover, .btn-text:hover {\n    color: var(--btn-hover-color);\n    background-color: var(--btn-hover-bg, var(--bg-3));\n    border-color: var(--btn-hover-border-color);\n  }\n  .btn:focus-visible, .btn-link:focus-visible, .btn-icon:focus-visible, .btn-solid:focus-visible, .btn-outline:focus-visible, .btn-subtle:focus-visible, .btn-text:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .btn.active, .btn.show, .btn-link.active, .btn-link.show, .btn-icon.active, .btn-icon.show, .btn-solid.active, .btn-solid.show, .btn-outline.active, .btn-outline.show, .btn-subtle.active, .btn-subtle.show, .btn-text.active, .btn-text.show {\n    color: var(--btn-active-color);\n    background-color: var(--btn-active-bg, var(--bg-3));\n    border-color: var(--btn-active-border-color);\n  }\n  .btn.active:focus-visible, .btn.show:focus-visible, .btn-link.active:focus-visible, .btn-link.show:focus-visible, .btn-icon.active:focus-visible, .btn-icon.show:focus-visible, .btn-solid.active:focus-visible, .btn-solid.show:focus-visible, .btn-outline.active:focus-visible, .btn-outline.show:focus-visible, .btn-subtle.active:focus-visible, .btn-subtle.show:focus-visible, .btn-text.active:focus-visible, .btn-text.show:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .btn:disabled, .btn.disabled, fieldset:disabled .btn, .btn-link:disabled, .btn-link.disabled, fieldset:disabled .btn-link, .btn-icon:disabled, .btn-icon.disabled, fieldset:disabled .btn-icon, .btn-solid:disabled, .btn-solid.disabled, fieldset:disabled .btn-solid, .btn-outline:disabled, .btn-outline.disabled, fieldset:disabled .btn-outline, .btn-subtle:disabled, .btn-subtle.disabled, fieldset:disabled .btn-subtle, .btn-text:disabled, .btn-text.disabled, fieldset:disabled .btn-text {\n    color: var(--btn-disabled-color);\n    pointer-events: none;\n    background-color: var(--btn-disabled-bg, var(--bg-1));\n    border-color: var(--btn-disabled-border-color);\n    opacity: var(--btn-disabled-opacity);\n  }\n  .btn-solid {\n    --btn-bg: var(--theme-bg);\n    --btn-color: var(--theme-contrast);\n    --btn-border-color: var(--theme-bg);\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: var(--theme-bg);\n    --btn-disabled-color: var(--theme-contrast);\n    --btn-disabled-border-color: var(--theme-bg);\n  }\n  .btn-solid:hover {\n    --btn-hover-bg: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-border-color: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-color: oklch(from var(--theme-contrast) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-solid:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-solid:active, .btn-solid.active, .btn-solid.btn-check:has(input:checked) {\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-solid:disabled, .btn-solid.disabled, .btn-solid.btn-check:has(input:disabled) {\n    --btn-disabled-bg: var(--theme-bg);\n    --btn-disabled-color: var(--theme-contrast);\n    --btn-disabled-border-color: var(--theme-bg);\n  }\n  .btn-outline {\n    --btn-bg: transparent;\n    --btn-color: var(--theme-text);\n    --btn-border-color: var(--theme-border);\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-border-color: var(--theme-border);\n  }\n  .btn-outline:hover {\n    --btn-hover-bg: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-color: oklch(from var(--theme-contrast) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-border-color: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-outline:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-outline:active, .btn-outline.active, .btn-outline.btn-check:has(input:checked) {\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-outline:disabled, .btn-outline.disabled, .btn-outline.btn-check:has(input:disabled) {\n    --btn-disabled-bg: transparent;\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-border-color: var(--theme-border);\n  }\n  .btn-subtle {\n    --btn-bg: var(--theme-bg-subtle);\n    --btn-color: var(--theme-text);\n    --btn-border-color: transparent;\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-active-color: oklch(from var(--theme-text-emphasis) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-subtle:hover {\n    --btn-hover-bg: color-mix(in oklch, var(--theme-bg-muted) 50%, var(--theme-bg-subtle));\n    --btn-hover-color: oklch(from var(--theme-text-emphasis) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-subtle:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-subtle:active, .btn-subtle.active, .btn-subtle.btn-check:has(input:checked) {\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-active-color: oklch(from var(--theme-text-emphasis) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-subtle:disabled, .btn-subtle.disabled, .btn-subtle.btn-check:has(input:disabled) {\n    --btn-disabled-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text {\n    --btn-color: var(--theme-text);\n    --btn-bg: transparent;\n    --btn-border-color: transparent;\n    --btn-active-color: oklch(from var(--theme-text) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text:hover {\n    --btn-hover-color: oklch(from var(--theme-text) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-bg: var(--theme-bg-subtle);\n  }\n  .btn-text:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-text:active, .btn-text.active, .btn-text.btn-check:has(input:checked) {\n    --btn-active-color: oklch(from var(--theme-text) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-bg: var(--theme-bg-subtle);\n  }\n  .btn-text:disabled, .btn-text.disabled, .btn-text.btn-check:has(input:disabled) {\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-link {\n    --btn-font-weight: var(--font-weight-normal);\n    --btn-color: var(--link-color);\n    --btn-bg: transparent;\n    --btn-border-color: transparent;\n    --btn-hover-color: var(--link-hover-color);\n    --btn-hover-bg: transparent;\n    --btn-hover-border-color: transparent;\n    --btn-active-color: var(--link-hover-color);\n    --btn-active-bg: transparent;\n    --btn-active-border-color: transparent;\n    --btn-disabled-color: var(--fg-3);\n    --btn-disabled-border-color: transparent;\n    color: var(--theme-text, var(--btn-color));\n    text-decoration: var(--link-decoration);\n  }\n  .btn-link:focus-visible {\n    color: var(--theme-text, var(--btn-color));\n  }\n  .btn-link:hover {\n    color: var(--theme-text-emphasis, var(--btn-hover-color));\n  }\n  .btn-xs,\n  .btn-group-xs > [class*=btn-] {\n    --btn-min-height: var(--btn-input-xs-min-height);\n    --btn-padding-y: var(--btn-input-xs-padding-y);\n    --btn-padding-x: var(--btn-input-xs-padding-x);\n    --btn-font-size: var(--btn-input-xs-font-size);\n    --btn-line-height: var(--btn-input-xs-line-height);\n    --btn-border-radius: var(--btn-input-xs-border-radius);\n  }\n  .btn-sm,\n  .btn-group-sm > [class*=btn-] {\n    --btn-min-height: var(--btn-input-sm-min-height);\n    --btn-padding-y: var(--btn-input-sm-padding-y);\n    --btn-padding-x: var(--btn-input-sm-padding-x);\n    --btn-font-size: var(--btn-input-sm-font-size);\n    --btn-line-height: var(--btn-input-sm-line-height);\n    --btn-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .btn-lg,\n  .btn-group-lg > [class*=btn-] {\n    --btn-min-height: var(--btn-input-lg-min-height);\n    --btn-padding-y: var(--btn-input-lg-padding-y);\n    --btn-padding-x: var(--btn-input-lg-padding-x);\n    --btn-font-size: var(--btn-input-lg-font-size);\n    --btn-line-height: var(--btn-input-lg-line-height);\n    --btn-border-radius: var(--btn-input-lg-border-radius);\n  }\n  .btn-icon {\n    align-items: center;\n    justify-content: center;\n    aspect-ratio: 1;\n    padding: 0;\n  }\n  .btn-check > input {\n    position: absolute;\n    clip: rect(0, 0, 0, 0);\n    pointer-events: none;\n  }\n  .btn-check:has(input:checked) {\n    color: var(--btn-active-color);\n    background-color: var(--btn-active-bg, var(--bg-3));\n    border-color: var(--btn-active-border-color);\n    box-shadow: var(--btn-active-shadow);\n  }\n  .btn-check:has(input:focus-visible) {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .btn-check:has(input:disabled) {\n    color: var(--btn-disabled-color);\n    pointer-events: none;\n    background-color: var(--btn-disabled-bg, var(--bg-1));\n    border-color: var(--btn-disabled-border-color);\n    opacity: var(--btn-disabled-opacity);\n    box-shadow: none;\n  }\n  .btn-styled {\n    --btn-gradient-start: rgba(255, 255, 255, 0.125);\n    --btn-gradient-end: rgba(0, 0, 0, 0.075);\n    --btn-border-mix-color: #000;\n    --btn-border-mix-amount: 10%;\n    --btn-border-hover-mix-amount: 12.5%;\n    --btn-border-active-mix-amount: 20%;\n    --btn-shadow: 0 1px 2px rgb(0 0 0 / 15%), inset 0 1px 0 rgb(255 255 255 / 10%);\n    --btn-active-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n    background-image: linear-gradient(to bottom, var(--btn-gradient-start), var(--btn-gradient-end));\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-mix-amount));\n    box-shadow: var(--btn-shadow);\n  }\n  .btn-styled:hover {\n    background-image: linear-gradient(to bottom, var(--btn-gradient-start), var(--btn-gradient-end));\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-hover-mix-amount));\n  }\n  .btn-styled:active, .btn-styled.active {\n    background-image: none;\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-active-mix-amount));\n    box-shadow: var(--btn-active-shadow);\n  }\n  .btn-styled:disabled, .btn-styled.disabled {\n    background-image: none;\n    box-shadow: none;\n  }\n}\n@layer components {\n  .btn-group,\n  .btn-group-vertical {\n    position: relative;\n    display: inline-flex;\n    vertical-align: middle;\n  }\n  .btn-group > [class*=btn-],\n  .btn-group-vertical > [class*=btn-] {\n    position: relative;\n    flex: 1 1 auto;\n  }\n  .btn-group > [class*=btn-]:hover,\n  .btn-group-vertical > [class*=btn-]:hover {\n    z-index: 1;\n  }\n  .btn-group > .btn-check:has(input:checked),\n  .btn-group > [class*=btn-]:active,\n  .btn-group > [class*=btn-].active,\n  .btn-group-vertical > .btn-check:has(input:checked),\n  .btn-group-vertical > [class*=btn-]:active,\n  .btn-group-vertical > [class*=btn-].active {\n    z-index: 2;\n  }\n  .btn-group > .btn-check:has(input:focus),\n  .btn-group > [class*=btn-]:focus,\n  .btn-group-vertical > .btn-check:has(input:focus),\n  .btn-group-vertical > [class*=btn-]:focus {\n    z-index: 3;\n  }\n  .btn-toolbar {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 0.5rem;\n    justify-content: flex-start;\n  }\n  .btn-toolbar .input-group {\n    width: auto;\n  }\n  .btn-group {\n    border-radius: var(--btn-border-radius);\n  }\n  .btn-group > [class*=btn-]:not(:first-child),\n  .btn-group > .btn-group:not(:first-child) {\n    margin-inline-start: calc(-1 * var(--btn-border-width));\n  }\n  .btn-group > [class*=btn-]:not(:last-child):not(.dropdown-toggle),\n  .btn-group > .btn-group:not(:last-child) > [class*=btn-] {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .btn-group > [class*=btn-]:not(:first-child),\n  .btn-group > .btn-group:not(:first-child) > [class*=btn-] {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .dropdown-toggle-split {\n    padding-inline: calc(var(--btn-padding-x) * 0.75);\n  }\n  .dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {\n    margin-inline-start: 0;\n  }\n  .dropstart .dropdown-toggle-split::before {\n    margin-inline-end: 0;\n  }\n  .btn-group-vertical {\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: center;\n  }\n  .btn-group-vertical > [class*=btn-],\n  .btn-group-vertical > .btn-group {\n    width: 100%;\n  }\n  .btn-group-vertical > [class*=btn-]:not(:first-child),\n  .btn-group-vertical > .btn-group:not(:first-child) {\n    margin-top: calc(-1 * var(--btn-border-width));\n  }\n  .btn-group-vertical > [class*=btn-]:not(:last-child):not(.dropdown-toggle),\n  .btn-group-vertical > .btn-group:not(:last-child) > [class*=btn-] {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .btn-group-vertical > [class*=btn-]:not(:first-child),\n  .btn-group-vertical > .btn-group:not(:first-child) > [class*=btn-] {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n}\n@layer components {\n  .btn-close {\n    --btn-close-size: 1.25rem;\n    --btn-close-color: var(--fg-body);\n    --btn-close-opacity: 0.5;\n    --btn-close-hover-opacity: 0.75;\n    --btn-close-focus-opacity: 0.85;\n    --btn-close-disabled-opacity: 0.25;\n    box-sizing: content-box;\n    width: var(--btn-close-size);\n    height: var(--btn-close-size);\n    padding: 0;\n    color: var(--btn-close-color);\n    background: transparent;\n    border: 0;\n    border-radius: var(--border-radius-sm);\n    opacity: var(--btn-close-opacity);\n  }\n  .btn-close > svg {\n    display: block;\n    width: 100%;\n    height: 100%;\n    fill: currentcolor;\n  }\n  .btn-close:hover {\n    color: var(--btn-close-color);\n    text-decoration: none;\n    opacity: var(--btn-close-hover-opacity);\n  }\n  .btn-close:focus-visible {\n    opacity: var(--btn-close-focus-opacity);\n    outline: var(--focus-ring);\n  }\n  .btn-close:disabled, .btn-close.disabled {\n    pointer-events: none;\n    user-select: none;\n    opacity: var(--btn-close-disabled-opacity);\n  }\n}\n@layer components {\n  .accordion {\n    --accordion-padding-x: 1.25rem;\n    --accordion-padding-y: 1rem;\n    --accordion-color: var(--fg-body);\n    --accordion-bg: var(--bg-body);\n    --accordion-transition-property: color, background-color, border-radius;\n    --accordion-transition-timing: .15s ease-in-out;\n    --accordion-transition: var(--accordion-transition-property) var(--accordion-timing);\n    --accordion-border-color: var(--border-color);\n    --accordion-border-width: var(--border-width);\n    --accordion-border-radius: var(--accordion-radius, var(--border-radius-lg));\n    --accordion-btn-color: var(--fg-2);\n    --accordion-btn-bg: var(--bg-body);\n    --accordion-btn-icon-width: 1rem;\n    --accordion-btn-icon-transform: rotate(-180deg);\n    --accordion-btn-icon-transition: transform 0.2s ease-in-out;\n    --accordion-active-color: var(--fg);\n    --accordion-active-bg: var(--bg-2);\n  }\n  .accordion-header {\n    display: flex;\n    align-items: center;\n    width: 100%;\n    padding: var(--accordion-btn-padding-y, var(--accordion-padding-y)) var(--accordion-btn-padding-x, var(--accordion-padding-x));\n    font-size: var(--accordion-font-size, var(--font-size-base));\n    color: var(--accordion-btn-color);\n    text-align: start;\n    list-style: none;\n    cursor: pointer;\n    background-color: var(--accordion-btn-bg);\n    transition: var(--accordion-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-header {\n      transition: none;\n    }\n  }\n  .accordion-header .accordion-icon {\n    flex-shrink: 0;\n    width: var(--accordion-btn-icon-width);\n    height: var(--accordion-btn-icon-width);\n    margin-inline-start: auto;\n    color: currentcolor;\n    transition: var(--accordion-btn-icon-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-header .accordion-icon {\n      transition: none;\n    }\n  }\n  .accordion-header:hover {\n    z-index: 2;\n  }\n  .accordion-header:focus-visible {\n    position: relative;\n    z-index: 3;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    outline-offset: -1px;\n  }\n  .accordion-item {\n    color: var(--accordion-color);\n    background-color: var(--accordion-bg);\n    border: var(--accordion-border-width) solid var(--accordion-border-color);\n  }\n  .accordion-item:first-of-type {\n    border-start-start-radius: var(--accordion-border-radius);\n    border-start-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item:first-of-type > .accordion-header {\n    border-start-start-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n    border-start-end-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n  }\n  .accordion-item:not(:first-of-type) {\n    border-block-start: 0;\n  }\n  .accordion-item:last-of-type {\n    border-end-start-radius: var(--accordion-border-radius);\n    border-end-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item:last-of-type > .accordion-header {\n    border-end-start-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n    border-end-end-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n  }\n  .accordion-item:last-of-type > .accordion-body {\n    border-end-start-radius: var(--accordion-border-radius);\n    border-end-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item[open] {\n    border-color: var(--theme-border, var(--accordion-border-color));\n  }\n  .accordion-item[open] > .accordion-header {\n    color: var(--theme-text, var(--accordion-active-color));\n    background-color: var(--theme-bg-subtle, var(--accordion-active-bg));\n    box-shadow: inset 0 calc(-1 * var(--accordion-border-width)) 0 var(--theme-border, var(--accordion-border-color));\n  }\n  .accordion-item[open] > .accordion-header .accordion-icon {\n    transform: var(--accordion-btn-icon-transform);\n  }\n  .accordion-item[open]:last-of-type > .accordion-header {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .accordion-body {\n    padding: var(--accordion-body-padding-y, var(--accordion-padding-y)) var(--accordion-body-padding-x, var(--accordion-padding-x));\n  }\n  .accordion-flush > .accordion-item {\n    border-inline: 0;\n    border-radius: 0;\n  }\n  .accordion-flush > .accordion-item:first-child {\n    border-block-start: 0;\n  }\n  .accordion-flush > .accordion-item:last-child {\n    border-block-end: 0;\n  }\n  .accordion-flush > .accordion-item > .accordion-header,\n  .accordion-flush > .accordion-item > .accordion-body {\n    border-radius: 0;\n  }\n}\n@layer components {\n  .alert {\n    --alert-gap: 0.75rem;\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1));\n    --alert-padding-x: 1rem;\n    --alert-padding-y: 1rem;\n    --alert-color: var(--theme-text, inherit);\n    --alert-border-color: var(--theme-border, var(--border-color));\n    --alert-border: var(--border-width) solid var(--alert-border-color);\n    --alert-border-radius: var(--border-radius);\n    --alert-link-color: inherit;\n    --hr-border-color: var(--theme-border, var(--border-color));\n    display: flex;\n    gap: var(--alert-gap);\n    align-items: start;\n    padding: var(--alert-padding-y) var(--alert-padding-x);\n    color: var(--alert-color);\n    background-color: var(--alert-bg);\n    border: var(--alert-border);\n    border-radius: var(--alert-border-radius);\n  }\n  .alert-heading {\n    color: inherit;\n  }\n  .alert-link {\n    font-weight: var(--font-weight-semibold);\n    color: var(--alert-link-color);\n  }\n}\n@layer components {\n  .avatar {\n    --avatar-size: 2.5rem;\n    --avatar-border-radius: 50%;\n    --avatar-border-width: 2px;\n    --avatar-border-color: var(--bg-body);\n    --avatar-bg: var(--bg-2);\n    --avatar-color: var(--fg-body);\n    --avatar-status-size: 0.75rem;\n    --avatar-status-border-width: 2px;\n    --avatar-status-border-color: var(--bg-body);\n    --avatar-stack-spacing: -0.3;\n    --avatar-stack-transition: transform .2s ease-in-out;\n    position: relative;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--avatar-size);\n    height: var(--avatar-size);\n    font-size: calc(var(--avatar-size) * 0.4);\n    font-weight: var(--avatar-font-weight, var(--font-weight-medium));\n    line-height: 1;\n    color: var(--theme-contrast, var(--avatar-color));\n    text-transform: uppercase;\n    vertical-align: middle;\n    background-color: var(--theme-bg, var(--avatar-bg));\n    border-radius: var(--avatar-border-radius);\n  }\n  .avatar-subtle {\n    color: var(--theme-text, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n  .avatar-img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    border-radius: inherit;\n  }\n  .avatar-status {\n    position: absolute;\n    right: calc(var(--avatar-status-border-width) * -1);\n    bottom: calc(var(--avatar-status-border-width) * -1);\n    width: var(--avatar-status-size);\n    height: var(--avatar-status-size);\n    background-color: var(--gray-400);\n    border: var(--avatar-status-border-width) solid var(--avatar-status-border-color);\n    border-radius: 50%;\n  }\n  .avatar-status.status-online {\n    background-color: var(--green-500);\n  }\n  .avatar-status.status-offline {\n    background-color: var(--gray-400);\n    border-radius: 20%;\n  }\n  .avatar-status.status-busy {\n    background-color: var(--red-500);\n    border-radius: 20%;\n  }\n  .avatar-status.status-away {\n    background-color: var(--yellow-500);\n  }\n  .avatar-stack {\n    display: inline-flex;\n    flex-direction: row-reverse;\n  }\n  .avatar-stack .avatar {\n    margin-left: calc(var(--avatar-size) * var(--avatar-stack-spacing));\n    border: var(--avatar-border-width) solid var(--avatar-border-color);\n    mask-image: none;\n    transition: var(--avatar-stack-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .avatar-stack .avatar {\n      transition: none;\n    }\n  }\n  .avatar-stack .avatar:last-child {\n    margin-left: 0;\n  }\n  .avatar-stack .avatar:hover {\n    z-index: 1;\n    transform: translateY(-2px);\n  }\n  .avatar-xs,\n  .avatar-stack-xs {\n    --avatar-size: 1.5rem;\n    --avatar-status-size: 0.625rem;\n  }\n  .avatar-sm,\n  .avatar-stack-sm {\n    --avatar-size: 2rem;\n  }\n  .avatar-lg,\n  .avatar-stack-lg {\n    --avatar-size: 3rem;\n    --avatar-status-size: 1rem;\n  }\n  .avatar-xl,\n  .avatar-stack-xl {\n    --avatar-size: 4rem;\n    --avatar-status-size: 1.25rem;\n  }\n}\n@layer components {\n  .badge {\n    --badge-padding-x: 0.625em;\n    --badge-padding-y: 0.25em;\n    --badge-font-size: clamp(12px, 0.75em, 0.75em);\n    --badge-font-weight: var(--font-weight-semibold);\n    --badge-color: inherit;\n    --badge-bg: var(--bg-2);\n    --badge-border-width: var(--border-width);\n    --badge-border-color: transparent;\n    --badge-border-radius: var(--border-radius-lg);\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 1.375rem;\n    padding: var(--badge-padding-y) var(--badge-padding-x);\n    font-size: var(--badge-font-size);\n    font-weight: var(--badge-font-weight);\n    line-height: 1;\n    color: var(--theme-contrast, var(--badge-color));\n    text-align: center;\n    white-space: nowrap;\n    vertical-align: baseline;\n    background-color: var(--theme-bg, var(--badge-bg));\n    border: var(--badge-border-width) solid var(--badge-border-color);\n    border-radius: var(--badge-border-radius);\n  }\n  .badge:empty {\n    display: none;\n  }\n  .btn .badge {\n    position: relative;\n    top: -1px;\n  }\n  .badge-subtle {\n    --badge-color: var(--theme-text);\n    --badge-bg: var(--theme-bg-subtle);\n    --badge-border-color: transparent;\n    color: var(--badge-color);\n    background-color: var(--badge-bg);\n    border-color: var(--badge-border-color);\n  }\n  .badge-outline {\n    --badge-color: var(--theme-text);\n    --badge-bg: transparent;\n    --badge-border-color: var(--theme-border);\n    color: var(--badge-color);\n    background-color: var(--badge-bg);\n    border-color: var(--badge-border-color);\n  }\n}\n@layer components {\n  .breadcrumb {\n    --breadcrumb-margin-bottom: 1rem;\n    --breadcrumb-font-size: inherit;\n    --breadcrumb-bg: transparent;\n    --breadcrumb-border-radius: var(--border-radius);\n    --breadcrumb-divider-color: var(--fg-4);\n    --breadcrumb-link-padding-x: 0.75rem;\n    --breadcrumb-link-padding-y: 0.25rem;\n    --breadcrumb-link-color: var(--fg-3);\n    --breadcrumb-link-hover-color: var(--fg-2);\n    --breadcrumb-link-hover-bg: var(--bg-1);\n    --breadcrumb-link-active-color: var(--fg-1);\n    --breadcrumb-link-border-radius: var(--border-radius-lg);\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    padding: var(--breadcrumb-padding-y, 0) var(--breadcrumb-padding-x, 0);\n    font-size: var(--breadcrumb-font-size);\n    list-style: none;\n    background-color: var(--breadcrumb-bg);\n    border-radius: var(--breadcrumb-border-radius);\n  }\n  .breadcrumb-item {\n    display: flex;\n  }\n  .breadcrumb-divider {\n    margin-inline: calc(var(--breadcrumb-link-padding-x) / 4);\n    color: var(--breadcrumb-divider-color);\n  }\n  .breadcrumb-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 2.25rem;\n    padding: var(--breadcrumb-link-padding-y) var(--breadcrumb-link-padding-x);\n    color: var(--breadcrumb-link-color);\n    text-decoration: none;\n    border-radius: var(--breadcrumb-link-border-radius);\n    transition: 0.1s text-decoration-color ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .breadcrumb-link {\n      transition: none;\n    }\n  }\n  .breadcrumb-link:hover {\n    z-index: 2;\n    color: var(--breadcrumb-link-hover-color);\n    background-color: var(--breadcrumb-link-hover-bg);\n  }\n  .breadcrumb-link.active {\n    color: var(--breadcrumb-link-active-color);\n  }\n}\n@layer components {\n  .chip {\n    --chip-height: 1.75rem;\n    --chip-padding-x: 0.625rem;\n    --chip-gap: 0.3125rem;\n    --chip-border-radius: var(--border-radius-pill);\n    --chip-img-size: 1.25rem;\n    --chip-icon-size: 1rem;\n    --chip-dismiss-size: 1rem;\n    --chip-dismiss-opacity: 0.65;\n    --chip-dismiss-hover-opacity: 1;\n    --chip-color: var(--theme-text, var(--fg-body));\n    --chip-bg: var(--theme-bg-subtle, var(--bg-2));\n    --chip-border-color: transparent;\n    --chip-selected-color: var(--theme-contrast, var(--primary-contrast));\n    --chip-selected-bg: var(--theme-bg, var(--primary-bg));\n    --chip-selected-border-color: var(--theme-bg, var(--primary-bg));\n    display: inline-flex;\n    gap: var(--chip-gap);\n    align-items: center;\n    height: var(--chip-height);\n    padding-inline: var(--chip-padding-x);\n    font-size: var(--chip-font-size, var(--font-size-sm));\n    font-weight: var(--chip-font-weight, var(--font-weight-base));\n    line-height: var(--chip-line-height, 1.25rem);\n    color: var(--chip-color);\n    text-decoration: none;\n    white-space: nowrap;\n    vertical-align: middle;\n    cursor: pointer;\n    background-color: var(--chip-bg);\n    border: var(--border-width) solid var(--chip-border-color);\n    border-radius: var(--chip-border-radius);\n  }\n  .chip:hover {\n    --chip-bg: var(--theme-bg-muted, var(--bg-3));\n  }\n  .chip:focus-visible {\n    outline: 0;\n  }\n  .chip.active {\n    --chip-color: var(--chip-selected-color);\n    --chip-bg: var(--chip-selected-bg);\n    --chip-border-color: var(--chip-selected-border-color);\n  }\n  .chip.active:hover {\n    --chip-bg: var(--chip-selected-bg);\n    opacity: 0.9;\n  }\n  .chip.disabled, .chip:disabled {\n    pointer-events: none;\n    opacity: 0.65;\n  }\n  .chip-img {\n    width: var(--chip-img-size);\n    height: var(--chip-img-size);\n    border-radius: 50%;\n  }\n  .chip-img:first-child {\n    margin-inline-start: -0.375rem;\n  }\n  .chip-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    margin-inline-start: calc(var(--chip-gap) * -0.25);\n  }\n  .chip-icon > svg {\n    display: block;\n    width: var(--chip-icon-size);\n    height: var(--chip-icon-size);\n  }\n  .chip-icon > img {\n    width: var(--chip-icon-size);\n    height: var(--chip-icon-size);\n    object-fit: cover;\n    border-radius: 50%;\n  }\n  .chip-dismiss {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--chip-min-height);\n    height: var(--chip-min-height);\n    padding: 0;\n    margin-inline-end: calc(var(--chip-padding-x) * -0.25);\n    color: inherit;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    opacity: var(--chip-dismiss-opacity);\n  }\n  .chip-dismiss:hover {\n    opacity: var(--chip-dismiss-hover-opacity);\n  }\n  .chip-dismiss:focus-visible {\n    outline: 0;\n    opacity: 1;\n    outline: var(--focus-ring);\n  }\n  .chip-dismiss > svg {\n    display: block;\n    width: var(--chip-dismiss-size);\n    height: var(--chip-dismiss-size);\n  }\n}\n@layer components {\n  .card {\n    --card-spacer-y: 1rem;\n    --card-spacer-x: 1rem;\n    --card-subtitle-color: inherit;\n    --card-border-width: var(--border-width);\n    --card-border-color: var(--border-color-translucent);\n    --card-border-radius: var(--border-radius-lg);\n    --card-box-shadow: none;\n    --card-inner-border-radius: calc(var(--border-radius-lg) - var(--border-width));\n    --card-cap-padding-y: 0.75rem;\n    --card-cap-padding-x: 1rem;\n    --card-cap-bg: var(--bg-1);\n    --card-cap-color: inherit;\n    --card-height: auto;\n    --card-color: inherit;\n    --card-bg: var(--bg-body);\n    --card-img-overlay-padding: 1rem;\n    --card-group-margin: 0.75rem;\n    --card-body-gap: 0.5rem;\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    min-width: 0;\n    height: var(--card-height);\n    color: var(--fg-body);\n    word-wrap: break-word;\n    background-color: var(--card-bg);\n    box-shadow: var(--card-box-shadow);\n  }\n  .card > hr {\n    margin-inline: 0;\n  }\n  .card-body {\n    display: flex;\n    flex: 1 1 auto;\n    flex-direction: column;\n    gap: var(--card-body-gap);\n    align-items: flex-start;\n    padding: var(--card-spacer-y) var(--card-spacer-x);\n    color: var(--card-color);\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n  }\n  .card-body > * {\n    margin-block: 0;\n  }\n  .card-body,\n  .card-list {\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n  }\n  .card-body:first-child,\n  .card-list:first-child {\n    border-start-start-radius: var(--card-border-radius);\n    border-start-end-radius: var(--card-border-radius);\n    border-top-width: var(--card-border-width);\n  }\n  .card-body:last-child,\n  .card-list:last-child {\n    border-end-start-radius: var(--card-border-radius);\n    border-end-end-radius: var(--card-border-radius);\n    border-bottom-width: var(--card-border-width);\n  }\n  .card-body:not(:first-child):not(:last-child),\n  .card-list:not(:first-child):not(:last-child) {\n    border-block-end-width: var(--card-border-width);\n  }\n  .card-title,\n  .card-subtitle,\n  .card-text {\n    align-self: stretch;\n  }\n  .card-subtitle {\n    margin-top: calc(var(--card-body-gap) * -0.5);\n  }\n  .card-header {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    margin-bottom: 0;\n    color: var(--theme-contrast, var(--card-cap-color));\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n  }\n  .card-header:first-child {\n    border-radius: var(--card-inner-border-radius) var(--card-inner-border-radius) 0 0;\n  }\n  .card-footer {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    color: var(--card-cap-color);\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n  }\n  .card-footer:last-child {\n    border-radius: 0 0 var(--card-inner-border-radius) var(--card-inner-border-radius);\n  }\n  .card-subtle {\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-header {\n    color: var(--theme-text-emphasis, currentcolor);\n    background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-footer {\n    color: var(--theme-text-emphasis, currentcolor);\n    background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-body,\n  .card-subtle .card-list {\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .nav.card-header-tabs {\n    margin-inline: calc(-0.5 * var(--card-cap-padding-x));\n    margin-bottom: calc(-1 * var(--card-cap-padding-y));\n    border-block-end: 0;\n  }\n  .nav.card-header-tabs .nav-link.active {\n    background-color: var(--card-bg);\n    border-block-end-color: var(--card-bg);\n  }\n  .card-img-overlay {\n    position: absolute;\n    inset: 0;\n    padding: var(--card-img-overlay-padding);\n    border-radius: var(--card-inner-border-radius);\n  }\n  .card-img,\n  .card-img-top,\n  .card-img-bottom {\n    width: 100%;\n    outline: var(--card-border-width) solid var(--card-border-color);\n    outline-offset: calc(var(--card-border-width) * -1);\n  }\n  .card-img,\n  .card-img-top {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-start-end-radius: var(--card-inner-border-radius);\n  }\n  .card-img,\n  .card-img-bottom {\n    border-end-start-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n  }\n  .card-row {\n    flex-direction: row;\n  }\n  .card-row .card-body,\n  .card-row .card-list {\n    border-width: var(--card-border-width) 0;\n    border-radius: 0;\n  }\n  .card-row .card-body:first-child,\n  .card-row .card-list:first-child {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-end-start-radius: var(--card-inner-border-radius);\n    border-inline-start-width: var(--card-border-width);\n  }\n  .card-row .card-body:last-child,\n  .card-row .card-list:last-child {\n    border-start-end-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n    border-inline-end-width: var(--card-border-width);\n  }\n  .card-row .card-body:not(:first-child):not(:last-child),\n  .card-row .card-list:not(:first-child):not(:last-child) {\n    border-inline-end-width: var(--card-border-width);\n  }\n  .card-img-start {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-end-start-radius: var(--card-inner-border-radius);\n  }\n  .card-img-end {\n    border-start-end-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n  }\n  .card-group > .card {\n    margin-bottom: var(--card-group-margin);\n  }\n  @media (width >= 576px) {\n    .card-group {\n      display: flex;\n      flex-flow: row wrap;\n    }\n    .card-group > .card {\n      flex: 1 0 0;\n      margin-bottom: 0;\n    }\n    .card-group > .card + .card {\n      margin-inline-start: 0;\n      border-inline-start: 0;\n    }\n    .card-group > .card:not(:last-child) {\n      border-start-end-radius: 0;\n      border-end-end-radius: 0;\n    }\n    .card-group > .card:not(:last-child) > .card-img-top,\n    .card-group > .card:not(:last-child) > .card-header {\n      border-start-end-radius: 0;\n    }\n    .card-group > .card:not(:last-child) > .card-img-bottom,\n    .card-group > .card:not(:last-child) > .card-footer {\n      border-end-end-radius: 0;\n    }\n    .card-group > .card:not(:first-child) {\n      border-start-start-radius: 0;\n      border-end-start-radius: 0;\n    }\n    .card-group > .card:not(:first-child) > .card-img-top,\n    .card-group > .card:not(:first-child) > .card-header {\n      border-start-start-radius: 0;\n    }\n    .card-group > .card:not(:first-child) > .card-img-bottom,\n    .card-group > .card:not(:first-child) > .card-footer {\n      border-end-start-radius: 0;\n    }\n  }\n}\n@layer components {\n  .carousel {\n    position: relative;\n    --carousel-control-color: #fff;\n    --carousel-control-width: 15%;\n    --carousel-control-opacity: 0.5;\n    --carousel-control-hover-opacity: 0.9;\n    --carousel-control-transition: opacity 0.15s ease;\n    --carousel-control-icon-filter: none;\n    --carousel-indicator-width: 30px;\n    --carousel-indicator-height: 3px;\n    --carousel-indicator-hit-area-height: 10px;\n    --carousel-indicator-spacer: 3px;\n    --carousel-indicator-opacity: 0.5;\n    --carousel-indicator-active-bg: var(--white);\n    --carousel-indicator-active-opacity: 1;\n    --carousel-indicator-transition: opacity 0.6s ease;\n    --carousel-caption-width: 70%;\n    --carousel-caption-color: var(--white);\n    --carousel-caption-padding-y: 1.25rem;\n    --carousel-caption-spacer: 1.25rem;\n    --carousel-control-icon-width: 2rem;\n    --carousel-control-prev-icon-bg: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>\");\n    --carousel-control-next-icon-bg: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>\");\n    --carousel-transition-duration: 0.6s;\n    --carousel-transition: transform 0.6s ease-in-out;\n  }\n  .carousel.pointer-event {\n    touch-action: pan-y;\n  }\n  .carousel-inner {\n    position: relative;\n    display: flow-root;\n    width: 100%;\n    overflow: hidden;\n  }\n  .carousel-item {\n    position: relative;\n    display: none;\n    float: inline-start;\n    width: 100%;\n    margin-inline-end: -100%;\n    backface-visibility: hidden;\n    transition: var(--carousel-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-item {\n      transition: none;\n    }\n  }\n  .carousel-item.active,\n  .carousel-item-next,\n  .carousel-item-prev {\n    display: block;\n  }\n  .carousel-item-next:not(.carousel-item-start),\n  .active.carousel-item-end {\n    transform: translateX(100%);\n  }\n  .carousel-item-prev:not(.carousel-item-end),\n  .active.carousel-item-start {\n    transform: translateX(-100%);\n  }\n  .carousel-fade .carousel-item {\n    opacity: 0;\n    transition-property: opacity;\n    transform: none;\n  }\n  .carousel-fade .carousel-item.active,\n  .carousel-fade .carousel-item-next.carousel-item-start,\n  .carousel-fade .carousel-item-prev.carousel-item-end {\n    z-index: 1;\n    opacity: 1;\n  }\n  .carousel-fade .active.carousel-item-start,\n  .carousel-fade .active.carousel-item-end {\n    z-index: 0;\n    opacity: 0;\n    transition: opacity 0s var(--carousel-transition-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-fade .active.carousel-item-start,\n    .carousel-fade .active.carousel-item-end {\n      transition: none;\n    }\n  }\n  .carousel-control-prev,\n  .carousel-control-next {\n    position: absolute;\n    inset-block: 0;\n    z-index: 1;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--carousel-control-width);\n    padding: 0;\n    color: var(--carousel-control-color);\n    text-align: center;\n    background: none;\n    filter: var(--carousel-control-icon-filter);\n    border: 0;\n    opacity: var(--carousel-control-opacity);\n    transition: var(--carousel-control-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-control-prev,\n    .carousel-control-next {\n      transition: none;\n    }\n  }\n  .carousel-control-prev:hover, .carousel-control-prev:focus,\n  .carousel-control-next:hover,\n  .carousel-control-next:focus {\n    color: var(--carousel-control-color);\n    text-decoration: none;\n    outline: 0;\n    opacity: var(--carousel-control-hover-opacity);\n  }\n  .carousel-control-prev {\n    inset-inline-start: 0;\n  }\n  .carousel-control-next {\n    inset-inline-end: 0;\n  }\n  .carousel-control-prev-icon,\n  .carousel-control-next-icon {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-repeat: no-repeat;\n    background-position: 50%;\n    background-size: 100% 100%;\n  }\n  .carousel-control-prev-icon {\n    background-image: var(--carousel-control-prev-icon-bg);\n  }\n  [dir=rtl] .carousel-control-prev-icon {\n    background-image: var(--carousel-control-next-icon-bg);\n  }\n  .carousel-control-next-icon {\n    background-image: var(--carousel-control-next-icon-bg);\n  }\n  [dir=rtl] .carousel-control-next-icon {\n    background-image: var(--carousel-control-prev-icon-bg);\n  }\n  .carousel-indicators {\n    position: absolute;\n    inset: auto 0 0;\n    z-index: 2;\n    display: flex;\n    justify-content: center;\n    padding: 0;\n    margin-inline: var(--carousel-control-width);\n    margin-bottom: 1rem;\n  }\n  .carousel-indicators [data-bs-target] {\n    box-sizing: content-box;\n    flex: 0 1 auto;\n    width: var(--carousel-indicator-width);\n    height: var(--carousel-indicator-height);\n    padding: 0;\n    margin-inline: var(--carousel-indicator-spacer);\n    text-indent: -999px;\n    cursor: pointer;\n    background-color: var(--carousel-indicator-active-bg);\n    background-clip: padding-box;\n    border: 0;\n    border-block: var(--carousel-indicator-hit-area-height) solid transparent;\n    opacity: var(--carousel-indicator-opacity);\n    transition: var(--carousel-indicator-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-indicators [data-bs-target] {\n      transition: none;\n    }\n  }\n  .carousel-indicators .active {\n    opacity: var(--carousel-indicator-active-opacity);\n  }\n  .carousel-caption {\n    position: absolute;\n    right: calc((100% - var(--carousel-caption-width)) * 0.5);\n    bottom: var(--carousel-caption-spacer);\n    left: calc((100% - var(--carousel-caption-width)) * 0.5);\n    padding-top: var(--carousel-caption-padding-y);\n    padding-bottom: var(--carousel-caption-padding-y);\n    color: var(--carousel-caption-color);\n    text-align: center;\n  }\n  .carousel-dark {\n    --carousel-indicator-active-bg: #000;\n    --carousel-caption-color: #000;\n    --carousel-control-icon-filter: invert(1) grayscale(100);\n  }\n  [data-bs-theme=dark] {\n    --carousel-indicator-active-bg: #000;\n    --carousel-caption-color: #000;\n    --carousel-control-icon-filter: invert(1) grayscale(100);\n  }\n}\n@layer components {\n  [data-vc=calendar] {\n    --datepicker-padding: 1rem;\n    --datepicker-bg: var(--bg-body);\n    --datepicker-color: var(--fg-body);\n    --datepicker-border-color: var(--border-color-translucent);\n    --datepicker-border-width: var(--border-width);\n    --datepicker-border-radius: var(--border-radius-lg);\n    --datepicker-box-shadow: var(--box-shadow);\n    --datepicker-font-size: var(--font-size-sm);\n    --datepicker-min-width: 280px;\n    --datepicker-zindex: 1000;\n    --datepicker-header-font-weight: 600;\n    --datepicker-weekday-color: var(--fg-3);\n    --datepicker-day-hover-bg: var(--bg-1);\n    --datepicker-day-selected-bg: var(--primary-bg);\n    --datepicker-day-selected-color: var(--primary-contrast);\n    --datepicker-day-today-bg: var(--bg-2);\n    --datepicker-day-today-color: var(--fg-1);\n    --datepicker-day-disabled-color: var(--fg-4);\n    position: absolute;\n    z-index: var(--datepicker-zindex);\n    box-sizing: border-box;\n    display: flex;\n    flex-direction: column;\n    min-width: var(--datepicker-min-width);\n    padding: var(--datepicker-padding);\n    font-family: var(--font-sans-serif);\n    font-size: var(--datepicker-font-size);\n    color: var(--datepicker-color);\n    color-scheme: light dark;\n    background-color: var(--datepicker-bg);\n    border: var(--datepicker-border-width) solid var(--datepicker-border-color);\n    border-radius: var(--datepicker-border-radius);\n    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n  }\n  [data-vc=calendar][data-bs-theme=light] {\n    color-scheme: light;\n  }\n  [data-vc=calendar][data-bs-theme=dark] {\n    color-scheme: dark;\n  }\n  [data-vc=calendar] button:focus-visible {\n    position: relative;\n    z-index: 1;\n    outline: var(--focus-ring);\n  }\n  [data-vc-calendar-hidden] {\n    pointer-events: none;\n    opacity: 0;\n  }\n  [data-vc=calendar]:not([data-vc-input]) {\n    position: relative;\n    width: fit-content;\n    padding: 0;\n    border: 0;\n    box-shadow: none;\n  }\n  [data-vc-position=bottom] {\n    margin-block-start: 0.25rem;\n  }\n  [data-vc-position=top] {\n    margin-block-end: -0.25rem;\n  }\n  [data-vc-arrow] {\n    position: relative;\n    display: block;\n    width: 2rem;\n    height: 2rem;\n    color: var(--datepicker-color);\n    pointer-events: auto;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--border-radius);\n  }\n  [data-vc-arrow]::before {\n    position: absolute;\n    inset: 0.25rem;\n    content: \"\";\n    background-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%236b7280' d='M12 16c-.3 0-.5-.1-.7-.3l-6-6c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l5.3 5.3 5.3-5.3c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-6 6c-.2.2-.4.3-.7.3'/></svg>\");\n    background-repeat: no-repeat;\n    background-position: center;\n  }\n  [data-vc-arrow]:hover {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-arrow=prev]::before {\n    transform: rotate(90deg);\n  }\n  [data-vc-arrow=next]::before {\n    transform: rotate(-90deg);\n  }\n  [data-vc=controls] {\n    position: absolute;\n    top: 0;\n    right: 0;\n    left: 0;\n    z-index: 20;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding-top: 1rem;\n    padding-right: 1rem;\n    padding-left: 1rem;\n    pointer-events: none;\n  }\n  [data-vc=grid] {\n    display: flex;\n    flex-grow: 1;\n    flex-wrap: wrap;\n    gap: 1.75rem;\n  }\n  [data-vc=column] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    min-width: 240px;\n  }\n  [data-vc=header] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    margin-bottom: 0.75rem;\n  }\n  [data-vc-header=content] {\n    display: inline-flex;\n    flex-grow: 1;\n    align-items: center;\n    justify-content: center;\n    white-space: pre-wrap;\n  }\n  [data-vc=month],\n  [data-vc=year] {\n    padding: 0.25rem 0.5rem;\n    margin-inline: -0.125rem;\n    font-size: 1rem;\n    font-weight: var(--datepicker-header-font-weight);\n    color: var(--datepicker-color);\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--border-radius);\n  }\n  [data-vc=month]:disabled,\n  [data-vc=year]:disabled {\n    color: var(--datepicker-day-disabled-color);\n    pointer-events: none;\n  }\n  [data-vc=month]:hover:not(:disabled),\n  [data-vc=year]:hover:not(:disabled) {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc=content] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n  }\n  [data-vc=months],\n  [data-vc=years] {\n    display: grid;\n    flex-grow: 1;\n    grid-template-columns: repeat(var(--vc-columns, 4), minmax(0, 1fr));\n    row-gap: 1rem;\n    column-gap: 0.25rem;\n    align-items: center;\n  }\n  [data-vc=years] {\n    --vc-columns: 5;\n  }\n  [data-vc-months-month],\n  [data-vc-years-year] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 2.5rem;\n    padding: 0.25rem;\n    font-size: 0.75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    text-align: center;\n    word-break: break-all;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--border-radius);\n  }\n  [data-vc-months-month]:disabled,\n  [data-vc-years-year]:disabled {\n    color: var(--datepicker-day-disabled-color);\n    pointer-events: none;\n  }\n  [data-vc-months-month]:hover:not(:disabled),\n  [data-vc-years-year]:hover:not(:disabled) {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-months-month][data-vc-months-month-selected], [data-vc-months-month][data-vc-years-year-selected],\n  [data-vc-years-year][data-vc-months-month-selected],\n  [data-vc-years-year][data-vc-years-year-selected] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc-months-month][data-vc-months-month-selected]:hover, [data-vc-months-month][data-vc-years-year-selected]:hover,\n  [data-vc-years-year][data-vc-months-month-selected]:hover,\n  [data-vc-years-year][data-vc-years-year-selected]:hover {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc=week] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    justify-items: center;\n    margin-bottom: 0.5rem;\n  }\n  [data-vc-week-day] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    padding: 0;\n    margin: 0;\n    font-size: 0.75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    background-color: transparent;\n    border: 0;\n  }\n  button[data-vc-week-day] {\n    cursor: pointer;\n  }\n  [data-vc=dates] {\n    pointer-events: none;\n  }\n  [data-vc-dates=row] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    align-items: center;\n    justify-items: center;\n    width: 100%;\n  }\n  [data-vc-date] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    padding-top: 0.125rem;\n    padding-bottom: 0.125rem;\n    pointer-events: auto;\n  }\n  [data-vc-date]:not(:has([data-vc-date-btn])), [data-vc-date][data-vc-date-disabled], [data-vc-date][data-vc-date-disabled] [data-vc-date-btn] {\n    pointer-events: none;\n  }\n  [data-vc-date-btn] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    height: 100%;\n    min-height: 1.875rem;\n    padding: 0;\n    font-size: 0.75rem;\n    font-weight: 400;\n    line-height: 1rem;\n    color: var(--datepicker-color);\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--border-radius);\n  }\n  [data-vc-date-btn]:hover {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-date-today] [data-vc-date-btn] {\n    font-weight: 600;\n    color: var(--datepicker-day-today-color);\n    background-color: var(--datepicker-day-today-bg);\n  }\n  [data-vc-date-month=next] [data-vc-date-btn],\n  [data-vc-date-month=prev] [data-vc-date-btn] {\n    opacity: 0.5;\n  }\n  [data-vc-date-disabled] [data-vc-date-btn] {\n    color: var(--datepicker-day-disabled-color);\n  }\n  [data-vc-date-hover] [data-vc-date-btn] {\n    background-color: var(--datepicker-day-hover-bg);\n    border-radius: 0;\n  }\n  [data-vc-date-hover=first] [data-vc-date-btn] {\n    border-start-start-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  [data-vc-date-hover=last] [data-vc-date-btn] {\n    border-start-end-radius: var(--border-radius);\n    border-end-end-radius: var(--border-radius);\n  }\n  [data-vc-date-hover=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--border-radius);\n  }\n  [data-vc-date-selected=middle] [data-vc-date-btn] {\n    border-radius: 0;\n    opacity: 0.8;\n  }\n  [data-vc-date-selected] [data-vc-date-btn] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc-date-selected=first] [data-vc-date-btn] {\n    border-top-left-radius: var(--border-radius);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--border-radius);\n  }\n  [data-vc-date-selected=last] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--border-radius);\n    border-bottom-right-radius: var(--border-radius);\n    border-bottom-left-radius: 0;\n  }\n  [data-vc-date-selected=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--border-radius);\n  }\n}\n@layer components {\n  .dialog-open {\n    overflow: hidden;\n    scrollbar-gutter: stable;\n  }\n  .dialog {\n    --dialog-padding: 1rem;\n    --dialog-width: 500px;\n    --dialog-margin: 1.75rem;\n    --dialog-color: var(--fg-body);\n    --dialog-bg: var(--bg-body);\n    --dialog-border-color: var(--border-color-translucent);\n    --dialog-border-width: var(--border-width);\n    --dialog-border-radius: var(--border-radius-lg);\n    --dialog-box-shadow: var(--box-shadow-lg);\n    --dialog-backdrop-bg: rgba(0, 0, 0, 0.5);\n    --dialog-backdrop-blur: 8px;\n    --dialog-header-padding: 1rem;\n    --dialog-header-border-color: var(--border-color);\n    --dialog-header-border-width: var(--border-width);\n    --dialog-footer-padding: 1rem;\n    --dialog-footer-border-color: var(--border-color);\n    --dialog-footer-border-width: var(--border-width);\n    --dialog-footer-gap: 0.5rem;\n    max-width: var(--dialog-width);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    color: var(--dialog-color);\n    background-color: var(--dialog-bg);\n    background-clip: padding-box;\n    border: var(--dialog-border-width) solid var(--dialog-border-color);\n    border-radius: var(--dialog-border-radius);\n    box-shadow: var(--dialog-box-shadow);\n  }\n  .dialog::backdrop {\n    background-color: var(--dialog-backdrop-bg);\n    backdrop-filter: blur(var(--dialog-backdrop-blur));\n  }\n  .dialog.fade {\n    opacity: 0;\n    transition: opacity 0.15s linear;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog.fade {\n      transition: none;\n    }\n  }\n  .dialog.fade::backdrop {\n    opacity: 0;\n    transition: opacity 0.15s linear;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog.fade::backdrop {\n      transition: none;\n    }\n  }\n  .dialog.fade[open] {\n    opacity: 1;\n  }\n  .dialog.fade[open]::backdrop {\n    opacity: 1;\n  }\n  .dialog.dialog-static {\n    transform: scale(1.02);\n  }\n  .dialog.dialog-nonmodal {\n    position: fixed;\n    inset-block-start: 50%;\n    inset-inline-start: 50%;\n    z-index: 1055;\n    margin-inline: 0;\n    transform: translate(-50%, -50%);\n  }\n  .dialog.dialog-overflow {\n    position: fixed;\n    inset: 0;\n    width: 100%;\n    max-width: 100%;\n    height: 100%;\n    max-height: 100%;\n    padding: var(--dialog-margin);\n    margin: 0;\n    overflow-y: auto;\n    overscroll-behavior: contain;\n    background: transparent;\n    border: 0;\n    box-shadow: none;\n  }\n  .dialog.dialog-overflow > .dialog-box {\n    max-width: var(--dialog-width);\n    margin-block-end: var(--dialog-margin);\n    margin-inline: auto;\n    color: var(--dialog-color);\n    background-color: var(--dialog-bg);\n    background-clip: padding-box;\n    border: var(--dialog-border-width) solid var(--dialog-border-color);\n    border-radius: var(--dialog-border-radius);\n    box-shadow: var(--dialog-box-shadow);\n  }\n  .dialog.dialog-scrollable[open] {\n    display: flex;\n    flex-direction: column;\n    max-height: calc(100% - var(--dialog-margin) * 2);\n  }\n  .dialog.dialog-scrollable[open] .dialog-body {\n    overflow-y: auto;\n  }\n  .dialog-sm {\n    --dialog-width: 280px;\n  }\n  .dialog-lg {\n    --dialog-width: 800px;\n  }\n  .dialog-xl {\n    --dialog-width: 1140px;\n  }\n  .dialog-fullscreen {\n    --dialog-width: 100vw;\n    --dialog-margin: 0;\n    --dialog-border-radius: 0;\n    width: 100%;\n    max-width: none;\n    height: 100%;\n    max-height: none;\n  }\n  @media (width < 576px) {\n    .dialog-fullscreen-sm-down {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 768px) {\n    .dialog-fullscreen-md-down {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1024px) {\n    .dialog-fullscreen-lg-down {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1280px) {\n    .dialog-fullscreen-xl-down {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1536px) {\n    .dialog-fullscreen-2xl-down {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  .dialog-header {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    padding: var(--dialog-header-padding);\n    border-block-end: var(--dialog-header-border-width) solid var(--dialog-header-border-color);\n  }\n  .dialog-header .btn-close {\n    margin-inline-start: auto;\n  }\n  .dialog-title {\n    margin-bottom: 0;\n    font-size: var(--font-size-md);\n    line-height: 1.5;\n  }\n  .dialog-body {\n    position: relative;\n    flex: 1 1 auto;\n    padding: var(--dialog-padding);\n    overflow-y: auto;\n  }\n  .dialog-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: var(--dialog-footer-gap);\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--dialog-footer-padding);\n    border-block-start: var(--dialog-footer-border-width) solid var(--dialog-footer-border-color);\n  }\n}\n@layer components {\n  .dropdown {\n    position: relative;\n  }\n  .dropdown-menu {\n    --dropdown-zindex: 1000;\n    --dropdown-gap: 0.125rem;\n    --dropdown-min-width: 10rem;\n    --dropdown-padding-x: 0.25rem;\n    --dropdown-padding-y: 0.25rem;\n    --dropdown-spacer: 0.125rem;\n    --dropdown-font-size: var(--font-size-sm);\n    --dropdown-color: var(--fg-body);\n    --dropdown-bg: var(--bg-body);\n    --dropdown-border-color: var(--border-color-translucent);\n    --dropdown-border-radius: var(--border-radius-lg);\n    --dropdown-border-width: var(--border-width);\n    --dropdown-inner-border-radius: calc(var(--dropdown-border-radius) - var(--dropdown-border-width));\n    --dropdown-box-shadow: var(--box-shadow);\n    --dropdown-divider-bg: var(--border-color-translucent);\n    --dropdown-divider-margin-y: 0.125rem;\n    --dropdown-divider-margin-x: 0.25rem;\n    --dropdown-link-color: var(--fg-body);\n    --dropdown-link-hover-color: var(--fg-body);\n    --dropdown-link-hover-bg: var(--bg-1);\n    --dropdown-link-active-color: var(--primary-contrast);\n    --dropdown-link-active-bg: var(--primary-bg);\n    --dropdown-link-disabled-color: var(--fg-3);\n    --dropdown-item-gap: 0.5rem;\n    --dropdown-item-padding-x: 0.75rem;\n    --dropdown-item-padding-y: 0.25rem;\n    --dropdown-item-border-radius: var(--border-radius);\n    --dropdown-header-color: var(--fg-2);\n    --dropdown-header-padding-x: 0.75rem;\n    --dropdown-header-padding-y: 0.25rem;\n    position: absolute;\n    z-index: var(--dropdown-zindex);\n    display: none;\n    flex-direction: column;\n    gap: var(--dropdown-gap);\n    min-width: var(--dropdown-min-width);\n    padding: var(--dropdown-padding-y) var(--dropdown-padding-x);\n    margin: 0;\n    font-size: var(--dropdown-font-size);\n    color: var(--dropdown-color);\n    text-align: start;\n    list-style: none;\n    background-color: var(--dropdown-bg);\n    background-clip: padding-box;\n    border: var(--dropdown-border-width) solid var(--dropdown-border-color);\n    border-radius: var(--dropdown-border-radius);\n    box-shadow: var(--dropdown-box-shadow);\n  }\n  .dropdown-menu.show {\n    display: flex;\n  }\n  .dropdown-divider {\n    height: 0;\n    margin: var(--dropdown-divider-margin-y) var(--dropdown-divider-margin-x);\n    overflow: hidden;\n    border-block-start: 1px solid var(--dropdown-divider-bg);\n    opacity: 1;\n  }\n  .dropdown-item {\n    display: flex;\n    gap: var(--dropdown-item-gap);\n    align-items: center;\n    width: 100%;\n    padding: var(--dropdown-item-padding-y) var(--dropdown-item-padding-x);\n    font-weight: 400;\n    color: var(--theme-text, var(--dropdown-link-color));\n    text-align: inherit;\n    text-decoration: none;\n    white-space: nowrap;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--dropdown-item-border-radius, 0);\n  }\n  .dropdown-item:hover, .dropdown-item:focus {\n    color: var(--theme-text, var(--dropdown-link-hover-color));\n    background-color: var(--theme-bg-subtle, var(--dropdown-link-hover-bg));\n  }\n  .dropdown-item.active, .dropdown-item:active {\n    color: var(--theme-contrast, var(--dropdown-link-active-color));\n    background-color: var(--theme-bg, var(--dropdown-link-active-bg));\n  }\n  .dropdown-item.disabled, .dropdown-item:disabled {\n    color: var(--dropdown-link-disabled-color);\n    pointer-events: none;\n    background-color: transparent;\n  }\n  .dropdown-header {\n    display: block;\n    padding: var(--dropdown-header-padding-y) var(--dropdown-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--font-size-sm);\n    color: var(--dropdown-header-color);\n    white-space: nowrap;\n  }\n  .dropdown-item-text {\n    display: block;\n    padding: var(--dropdown-item-padding-y) var(--dropdown-item-padding-x);\n    color: var(--fg-2);\n  }\n  .dropdown-submenu {\n    position: relative;\n  }\n  .dropdown-submenu > .dropdown-item {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .dropdown-submenu > .dropdown-item::after {\n    display: inline-block;\n    flex-shrink: 0;\n    width: 0.375em;\n    height: 0.375em;\n    margin-inline-start: auto;\n    content: \"\";\n    border-color: currentcolor;\n    border-style: solid;\n    border-width: 0 0.125em 0.125em 0;\n    transform: rotate(-45deg);\n  }\n  [dir=rtl] .dropdown-submenu > .dropdown-item::after {\n    transform: rotate(135deg);\n  }\n  .dropdown-submenu > .dropdown-menu {\n    top: 0;\n    margin-top: calc(-1 * var(--dropdown-padding-y));\n  }\n  .dropdown-submenu:hover > .dropdown-item, .dropdown-submenu:focus-within > .dropdown-item {\n    color: var(--dropdown-link-hover-color);\n    background-color: var(--dropdown-link-hover-bg);\n  }\n  .dropdown-submenu.show > .dropdown-item {\n    color: var(--dropdown-link-hover-color);\n    background-color: var(--dropdown-link-hover-bg);\n  }\n}\n@layer components {\n  .list-group {\n    --list-group-color: var(--fg-body);\n    --list-group-bg: var(--bg-body);\n    --list-group-border-color: var(--border-color);\n    --list-group-border-width: var(--border-width);\n    --list-group-border-radius: var(--border-radius);\n    --list-group-item-padding-x: 1rem;\n    --list-group-item-padding-y: 0.5rem;\n    --list-group-action-color: var(--fg-2);\n    --list-group-action-hover-color: var(--fg-1);\n    --list-group-action-hover-bg: var(--bg-1);\n    --list-group-action-active-color: var(--fg-body);\n    --list-group-action-active-bg: var(--bg-2);\n    --list-group-disabled-color: var(--fg-3);\n    --list-group-disabled-bg: var(--bg-body);\n    --list-group-active-color: var(--primary-contrast);\n    --list-group-active-bg: var(--primary-bg);\n    --list-group-active-border-color: var(--primary-bg);\n    display: flex;\n    flex-direction: column;\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    border-radius: var(--list-group-border-radius);\n  }\n  .list-group-numbered {\n    list-style-type: none;\n    counter-reset: section;\n  }\n  .list-group-numbered > .list-group-item::before {\n    content: counters(section, \".\") \". \";\n    counter-increment: section;\n  }\n  .list-group-item {\n    position: relative;\n    display: block;\n    padding: var(--list-group-item-padding-y) var(--list-group-item-padding-x);\n    color: var(--theme-text, var(--list-group-color));\n    background-color: var(--theme-bg-subtle, var(--list-group-bg));\n    border: var(--list-group-border-width) solid var(--theme-border, var(--list-group-border-color));\n  }\n  .list-group-item:first-child {\n    border-start-start-radius: inherit;\n    border-start-end-radius: inherit;\n  }\n  .list-group-item:last-child {\n    border-end-start-radius: inherit;\n    border-end-end-radius: inherit;\n  }\n  .list-group-item.disabled, .list-group-item:disabled {\n    color: var(--list-group-disabled-color);\n    pointer-events: none;\n    background-color: var(--list-group-disabled-bg);\n  }\n  .list-group-item.active {\n    z-index: 2;\n    color: var(--list-group-active-color);\n    background-color: var(--list-group-active-bg);\n    border-color: var(--list-group-active-border-color);\n  }\n  .list-group-item + .list-group-item {\n    border-block-start-width: 0;\n  }\n  .list-group-item + .list-group-item.active {\n    margin-top: calc(-1 * var(--list-group-border-width));\n    border-block-start-width: var(--list-group-border-width);\n  }\n  .list-group-item-action {\n    width: 100%;\n    color: var(--theme-text, var(--list-group-action-color));\n    text-align: inherit;\n    text-decoration: none;\n  }\n  .list-group-item-action:not(.active):hover, .list-group-item-action:not(.active):focus {\n    z-index: 1;\n    color: var(--theme-text-emphasis, var(--list-group-action-hover-color));\n    text-decoration: none;\n    background-color: var(--theme-bg-muted, var(--list-group-action-hover-bg));\n  }\n  .list-group-item-action:not(.active):active {\n    color: var(--theme-text-emphasis, var(--list-group-action-active-color));\n    background-color: var(--theme-bg-muted, var(--list-group-action-active-bg));\n  }\n  .list-group-horizontal {\n    flex-direction: row;\n  }\n  .list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n    border-end-start-radius: var(--list-group-border-radius);\n    border-start-end-radius: 0;\n  }\n  .list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n    border-start-end-radius: var(--list-group-border-radius);\n    border-end-start-radius: 0;\n  }\n  .list-group-horizontal > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal > .list-group-item + .list-group-item {\n    border-block-start-width: var(--list-group-border-width);\n    border-inline-start-width: 0;\n  }\n  .list-group-horizontal > .list-group-item + .list-group-item.active {\n    margin-inline-start: calc(-1 * var(--list-group-border-width));\n    border-inline-start-width: var(--list-group-border-width);\n  }\n  @media (width >= 576px) {\n    .list-group-horizontal-sm {\n      flex-direction: row;\n    }\n    .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .list-group-horizontal-sm > .list-group-item.active {\n      margin-top: 0;\n    }\n    .list-group-horizontal-sm > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @media (width >= 768px) {\n    .list-group-horizontal-md {\n      flex-direction: row;\n    }\n    .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .list-group-horizontal-md > .list-group-item.active {\n      margin-top: 0;\n    }\n    .list-group-horizontal-md > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @media (width >= 1024px) {\n    .list-group-horizontal-lg {\n      flex-direction: row;\n    }\n    .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .list-group-horizontal-lg > .list-group-item.active {\n      margin-top: 0;\n    }\n    .list-group-horizontal-lg > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @media (width >= 1280px) {\n    .list-group-horizontal-xl {\n      flex-direction: row;\n    }\n    .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .list-group-horizontal-xl > .list-group-item.active {\n      margin-top: 0;\n    }\n    .list-group-horizontal-xl > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @media (width >= 1536px) {\n    .list-group-horizontal-2xl {\n      flex-direction: row;\n    }\n    .list-group-horizontal-2xl > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .list-group-horizontal-2xl > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .list-group-horizontal-2xl > .list-group-item.active {\n      margin-top: 0;\n    }\n    .list-group-horizontal-2xl > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .list-group-horizontal-2xl > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  .list-group-flush {\n    border-radius: 0;\n  }\n  .list-group-flush > .list-group-item {\n    border-width: 0 0 var(--list-group-border-width);\n  }\n  .list-group-flush > .list-group-item:last-child {\n    border-block-end-width: 0;\n  }\n}\n@layer components {\n  .nav {\n    --nav-gap: 0.125rem;\n    --nav-link-gap: 0.5rem;\n    --nav-link-align: center;\n    --nav-link-justify: center;\n    --nav-link-padding-x: 0.75rem;\n    --nav-link-padding-y: 0.375rem;\n    --nav-link-color: var(--fg-2);\n    --nav-link-hover-color: var(--fg-1);\n    --nav-link-hover-bg: var(--bg-1);\n    --nav-link-active-color: var(--fg-body);\n    --nav-link-active-bg: var(--bg-2);\n    --nav-link-disabled-color: var(--fg-4);\n    --nav-link-transition-property: color, background-color, border-color;\n    --nav-link-transition-timing: 0.15s ease-in-out;\n    --nav-link-transition: var(--nav-link-transition-property) var(--nav-link-transition-timing);\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style: none;\n  }\n  .nav-item {\n    display: flex;\n  }\n  .nav-link {\n    display: flex;\n    gap: var(--nav-link-gap);\n    align-items: var(--nav-link-align);\n    justify-content: var(--nav-link-justify);\n    padding: var(--nav-link-padding-y) var(--nav-link-padding-x);\n    font-weight: var(--nav-link-font-weight);\n    color: var(--nav-link-color);\n    text-decoration: none;\n    white-space: nowrap;\n    background: none;\n    border: 0;\n    border-radius: var(--border-radius);\n    transition: var(--nav-link-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .nav-link {\n      transition: none;\n    }\n  }\n  .nav-link:hover, .nav-link:focus {\n    color: var(--nav-link-hover-color);\n    background-color: var(--nav-link-hover-bg);\n  }\n  .nav-link:focus-visible {\n    --focus-ring-offset: 1px;\n    color: var(--nav-link-hover-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .nav-link.active, .nav-link:active {\n    color: var(--nav-link-active-color);\n    background-color: var(--nav-link-active-bg);\n  }\n  .nav-link.disabled, .nav-link:disabled {\n    color: var(--nav-link-disabled-color);\n    pointer-events: none;\n    cursor: default;\n  }\n  .nav-tabs {\n    --nav-tabs-border-width: var(--border-width);\n    --nav-tabs-border-color: var(--border-color);\n    --nav-tabs-border-radius: var(--border-radius);\n    --nav-tabs-link-hover-border-color: var(--border-subtle);\n    --nav-tabs-link-active-color: var(--fg-color);\n    --nav-tabs-link-active-bg: var(--bg-body);\n    --nav-tabs-link-active-border-color: var(--border-color) var(--border-color) var(--bg-body);\n    box-shadow: inset 0 calc(-1 * var(--nav-tabs-border-width)) 0 var(--nav-tabs-border-color);\n  }\n  .nav-tabs .nav-link {\n    border: var(--nav-tabs-border-width) solid transparent;\n    border-bottom-color: var(--nav-tabs-border-color);\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .nav-tabs .nav-link:hover {\n    isolation: isolate;\n    border-color: var(--nav-tabs-link-hover-border-color);\n    border-bottom-color: var(--nav-tabs-border-color);\n  }\n  .nav-tabs .nav-link.active,\n  .nav-tabs .nav-item.show .nav-link {\n    color: var(--nav-tabs-link-active-color);\n    background-color: var(--nav-tabs-link-active-bg);\n    border-color: var(--nav-tabs-link-active-border-color);\n    border-bottom-color: var(--nav-tabs-link-active-bg);\n  }\n  .nav-tabs .dropdown-menu {\n    margin-top: calc(-1 * var(--nav-tabs-border-width));\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .nav-pills {\n    --nav-pills-link-active-color: var(--component-active-color);\n    --nav-pills-link-active-bg: var(--component-active-bg);\n  }\n  .nav-pills .nav-link.active,\n  .nav-pills .show > .nav-link {\n    color: var(--nav-pills-link-active-color);\n    background-color: var(--nav-pills-link-active-bg);\n  }\n  .nav-underline {\n    --nav-gap: 1rem;\n    --nav-link-active-bg: transparent;\n    --nav-underline-border-width: 0.125rem;\n    --nav-underline-link-active-color: var(--fg-color);\n  }\n  .nav-underline .nav-link {\n    padding-inline: 0;\n    border-block-end: var(--nav-underline-border-width) solid transparent;\n    border-radius: 0;\n  }\n  .nav-underline .nav-link:hover, .nav-underline .nav-link:focus {\n    border-block-end-color: currentcolor;\n  }\n  .nav-underline .nav-link.active,\n  .nav-underline .show > .nav-link {\n    font-weight: 700;\n    color: var(--nav-underline-link-active-color);\n    border-block-end-color: currentcolor;\n  }\n  .nav-fill > .nav-link,\n  .nav-fill .nav-item {\n    flex: 1 1 auto;\n    text-align: center;\n  }\n  .nav-justified > .nav-link,\n  .nav-justified .nav-item {\n    flex-grow: 1;\n    flex-basis: 0;\n    text-align: center;\n  }\n  .nav-fill .nav-item .nav-link,\n  .nav-justified .nav-item .nav-link {\n    width: 100%;\n  }\n  .tab-content > .tab-pane {\n    display: none;\n  }\n  .tab-content > .active {\n    display: block;\n  }\n}\n@layer components {\n  .nav-overflow {\n    flex-wrap: nowrap;\n    min-width: 0;\n  }\n  .nav-overflow-item {\n    flex-shrink: 0;\n    margin-inline-start: auto;\n  }\n  .nav-overflow [data-bs-nav-overflow=true] {\n    display: none;\n  }\n  .nav-overflow-keep {\n    flex-shrink: 0;\n  }\n}\n@layer components {\n  .navbar {\n    --navbar-padding-x: 0;\n    --navbar-padding-y: 0.5rem;\n    --navbar-color: var(--fg-2);\n    --navbar-hover-color: var(--fg-1);\n    --navbar-disabled-color: var(--fg-3);\n    --navbar-active-color: var(--fg-body);\n    --navbar-brand-padding-y: 0.75rem;\n    --navbar-brand-margin-end: 1rem;\n    --navbar-brand-font-size: var(--font-size-md);\n    --navbar-brand-font-weight: var(--font-weight-medium);\n    --navbar-brand-color: var(--fg-body);\n    --navbar-brand-hover-color: var(--fg-body);\n    --navbar-nav-link-padding-x: 0.75rem;\n    --navbar-toggler-width: 2rem;\n    --navbar-toggler-padding-y: 0.25rem;\n    --navbar-toggler-padding-x: 0.75rem;\n    --navbar-toggler-font-size: var(--font-size-lg);\n    --navbar-toggler-border-color: color-mix(in oklch, var(--fg-body) 15%, transparent);\n    --navbar-toggler-border-radius: var(--border-radius);\n    --navbar-toggler-transition: box-shadow 0.15s ease-in-out;\n    position: relative;\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: space-between;\n    padding: var(--navbar-padding-y) var(--navbar-padding-x);\n    container-type: inline-size;\n  }\n  .navbar > .container-2xl, .navbar > .container-xl, .navbar > .container-lg, .navbar > .container-md, .navbar > .container-sm, .navbar > .container,\n  .navbar > .container-fluid {\n    display: flex;\n    flex-wrap: inherit;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .navbar-brand {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    margin-inline-end: var(--navbar-brand-margin-end);\n    font-size: var(--navbar-brand-font-size);\n    font-weight: var(--navbar-brand-font-weight);\n    color: var(--navbar-brand-color);\n    text-decoration: none;\n    white-space: nowrap;\n  }\n  .navbar-brand:hover, .navbar-brand:focus {\n    color: var(--navbar-brand-hover-color);\n  }\n  .navbar-nav {\n    --nav-gap: .25rem;\n    --nav-link-gap: .5rem;\n    --nav-link-padding-x: .5rem;\n    --nav-link-padding-y: .5rem;\n    --nav-link-color: var(--navbar-color);\n    --nav-link-hover-color: var(--navbar-hover-color);\n    --nav-link-hover-bg: transparent;\n    --nav-link-active-color: var(--navbar-active-color);\n    --nav-link-active-bg: transparent;\n    --nav-link-disabled-color: var(--navbar-disabled-color);\n    display: flex;\n    flex-direction: column;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style: none;\n  }\n  .navbar-nav .nav-link.active, .navbar-nav .nav-link.show {\n    color: var(--navbar-active-color);\n  }\n  .navbar-text {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    color: var(--navbar-color);\n  }\n  .navbar-text a,\n  .navbar-text a:hover,\n  .navbar-text a:focus {\n    color: var(--navbar-active-color);\n  }\n  .navbar-toggler {\n    --btn-bg: transparent;\n    --btn-hover-bg: var(--bg-2);\n  }\n  .navbar-expand > .container,\n  .navbar-expand > .container-fluid {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand .navbar-nav {\n    --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n    flex-direction: row;\n  }\n  .navbar-expand .navbar-toggler {\n    display: none !important;\n  }\n  .navbar-expand .offcanvas {\n    position: static;\n    z-index: auto;\n    flex-grow: 1;\n    width: auto !important;\n    height: auto !important;\n    visibility: visible !important;\n    background-color: transparent !important;\n    border: 0 !important;\n    transform: none !important;\n    box-shadow: none;\n    transition: none;\n  }\n  .navbar-expand .offcanvas .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand .offcanvas .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    flex-direction: row;\n    align-items: center;\n    padding: 0;\n    overflow-y: visible;\n  }\n  .navbar-expand {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  @container (width >= 576px) {\n    .navbar-expand-sm > .container,\n    .navbar-expand-sm > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .navbar-expand-sm .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .navbar-expand-sm .navbar-toggler {\n      display: none !important;\n    }\n    .navbar-expand-sm .offcanvas {\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .navbar-expand-sm .offcanvas .offcanvas-header {\n      display: none;\n    }\n    .navbar-expand-sm .offcanvas .offcanvas-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 768px) {\n    .navbar-expand-md > .container,\n    .navbar-expand-md > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .navbar-expand-md .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .navbar-expand-md .navbar-toggler {\n      display: none !important;\n    }\n    .navbar-expand-md .offcanvas {\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .navbar-expand-md .offcanvas .offcanvas-header {\n      display: none;\n    }\n    .navbar-expand-md .offcanvas .offcanvas-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1024px) {\n    .navbar-expand-lg > .container,\n    .navbar-expand-lg > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .navbar-expand-lg .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .navbar-expand-lg .navbar-toggler {\n      display: none !important;\n    }\n    .navbar-expand-lg .offcanvas {\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .navbar-expand-lg .offcanvas .offcanvas-header {\n      display: none;\n    }\n    .navbar-expand-lg .offcanvas .offcanvas-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1280px) {\n    .navbar-expand-xl > .container,\n    .navbar-expand-xl > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .navbar-expand-xl .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .navbar-expand-xl .navbar-toggler {\n      display: none !important;\n    }\n    .navbar-expand-xl .offcanvas {\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .navbar-expand-xl .offcanvas .offcanvas-header {\n      display: none;\n    }\n    .navbar-expand-xl .offcanvas .offcanvas-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1536px) {\n    .navbar-expand-2xl > .container,\n    .navbar-expand-2xl > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .navbar-expand-2xl .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .navbar-expand-2xl .navbar-toggler {\n      display: none !important;\n    }\n    .navbar-expand-2xl .offcanvas {\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .navbar-expand-2xl .offcanvas .offcanvas-header {\n      display: none;\n    }\n    .navbar-expand-2xl .offcanvas .offcanvas-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  .navbar[data-bs-theme=dark] {\n    --navbar-color: color-mix(in oklch, var(--white) 0.55, transparent);\n    --navbar-hover-color: color-mix(in oklch, var(--white) 0.75, transparent);\n    --navbar-disabled-color: color-mix(in oklch, var(--white) 0.25, transparent);\n    --navbar-active-color: var(--white);\n    --navbar-brand-color: var(--white);\n    --navbar-brand-hover-color: var(--white);\n    --navbar-toggler-border-color: color-mix(in oklch, var(--white) 0.1, transparent);\n  }\n}\n.offcanvas, .offcanvas-2xl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm {\n  --offcanvas-inset: var(--spacer);\n  --offcanvas-zindex: 1045;\n  --offcanvas-width: 400px;\n  --offcanvas-height: 30vh;\n  --offcanvas-padding-x: var(--spacer);\n  --offcanvas-padding-y: var(--spacer);\n  --offcanvas-color: var(--fg-body);\n  --offcanvas-bg: var(--bg-body);\n  --offcanvas-border-width: var(--border-width);\n  --offcanvas-border-color: var(--border-color-translucent);\n  --offcanvas-border-radius: var(--border-radius-lg);\n  --offcanvas-box-shadow: var(--box-shadow-lg);\n  --offcanvas-transition: transform 0.3s ease-in-out;\n  --offcanvas-title-line-height: 1.5;\n}\n\n@layer components {\n  @media (width < 576px) {\n    .offcanvas-sm {\n      position: fixed;\n      z-index: var(--offcanvas-zindex);\n      display: flex;\n      flex-direction: column;\n      max-width: calc(100% - var(--offcanvas-inset) * 2);\n      max-height: calc(100% - var(--offcanvas-inset) * 2);\n      color: var(--offcanvas-color);\n      visibility: hidden;\n      background-color: var(--offcanvas-bg);\n      background-clip: padding-box;\n      border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n      border-radius: var(--offcanvas-border-radius);\n      outline: 0;\n      box-shadow: var(--offcanvas-box-shadow);\n      transition: var(--offcanvas-transition);\n    }\n  }\n  @media (width < 576px) and (prefers-reduced-motion: reduce) {\n    .offcanvas-sm {\n      transition: none;\n    }\n  }\n  @media (width < 576px) {\n    .offcanvas-sm.offcanvas-start {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-start: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(-100%);\n    }\n    :root:dir(rtl) .offcanvas-sm.offcanvas-start {\n      transform: translateX(100%);\n    }\n    .offcanvas-sm.offcanvas-end {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-end: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(100%);\n    }\n    :root:dir(rtl) .offcanvas-sm.offcanvas-end {\n      transform: translateX(-100%);\n    }\n    .offcanvas-sm.offcanvas-top {\n      inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n      height: var(--offcanvas-height);\n      transform: translateY(-100%);\n    }\n    .offcanvas-sm.offcanvas-bottom {\n      inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n      height: var(--offcanvas-height);\n      transform: translateY(100%);\n    }\n    .offcanvas-sm.offcanvas-fullscreen {\n      inset: var(--offcanvas-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n      transform: translateY(100%);\n    }\n    .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) {\n      transform: none;\n    }\n    .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show {\n      visibility: visible;\n    }\n  }\n  @media (width >= 576px) {\n    .offcanvas-sm {\n      --offcanvas-height: auto;\n      --offcanvas-border-width: 0;\n      background-color: transparent !important;\n    }\n    .offcanvas-sm .offcanvas-header {\n      display: none;\n    }\n    .offcanvas-sm .offcanvas-body {\n      flex-grow: 0;\n      flex-direction: row;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 768px) {\n    .offcanvas-md {\n      position: fixed;\n      z-index: var(--offcanvas-zindex);\n      display: flex;\n      flex-direction: column;\n      max-width: calc(100% - var(--offcanvas-inset) * 2);\n      max-height: calc(100% - var(--offcanvas-inset) * 2);\n      color: var(--offcanvas-color);\n      visibility: hidden;\n      background-color: var(--offcanvas-bg);\n      background-clip: padding-box;\n      border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n      border-radius: var(--offcanvas-border-radius);\n      outline: 0;\n      box-shadow: var(--offcanvas-box-shadow);\n      transition: var(--offcanvas-transition);\n    }\n  }\n  @media (width < 768px) and (prefers-reduced-motion: reduce) {\n    .offcanvas-md {\n      transition: none;\n    }\n  }\n  @media (width < 768px) {\n    .offcanvas-md.offcanvas-start {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-start: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(-100%);\n    }\n    :root:dir(rtl) .offcanvas-md.offcanvas-start {\n      transform: translateX(100%);\n    }\n    .offcanvas-md.offcanvas-end {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-end: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(100%);\n    }\n    :root:dir(rtl) .offcanvas-md.offcanvas-end {\n      transform: translateX(-100%);\n    }\n    .offcanvas-md.offcanvas-top {\n      inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n      height: var(--offcanvas-height);\n      transform: translateY(-100%);\n    }\n    .offcanvas-md.offcanvas-bottom {\n      inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n      height: var(--offcanvas-height);\n      transform: translateY(100%);\n    }\n    .offcanvas-md.offcanvas-fullscreen {\n      inset: var(--offcanvas-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n      transform: translateY(100%);\n    }\n    .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) {\n      transform: none;\n    }\n    .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show {\n      visibility: visible;\n    }\n  }\n  @media (width >= 768px) {\n    .offcanvas-md {\n      --offcanvas-height: auto;\n      --offcanvas-border-width: 0;\n      background-color: transparent !important;\n    }\n    .offcanvas-md .offcanvas-header {\n      display: none;\n    }\n    .offcanvas-md .offcanvas-body {\n      flex-grow: 0;\n      flex-direction: row;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1024px) {\n    .offcanvas-lg {\n      position: fixed;\n      z-index: var(--offcanvas-zindex);\n      display: flex;\n      flex-direction: column;\n      max-width: calc(100% - var(--offcanvas-inset) * 2);\n      max-height: calc(100% - var(--offcanvas-inset) * 2);\n      color: var(--offcanvas-color);\n      visibility: hidden;\n      background-color: var(--offcanvas-bg);\n      background-clip: padding-box;\n      border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n      border-radius: var(--offcanvas-border-radius);\n      outline: 0;\n      box-shadow: var(--offcanvas-box-shadow);\n      transition: var(--offcanvas-transition);\n    }\n  }\n  @media (width < 1024px) and (prefers-reduced-motion: reduce) {\n    .offcanvas-lg {\n      transition: none;\n    }\n  }\n  @media (width < 1024px) {\n    .offcanvas-lg.offcanvas-start {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-start: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(-100%);\n    }\n    :root:dir(rtl) .offcanvas-lg.offcanvas-start {\n      transform: translateX(100%);\n    }\n    .offcanvas-lg.offcanvas-end {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-end: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(100%);\n    }\n    :root:dir(rtl) .offcanvas-lg.offcanvas-end {\n      transform: translateX(-100%);\n    }\n    .offcanvas-lg.offcanvas-top {\n      inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n      height: var(--offcanvas-height);\n      transform: translateY(-100%);\n    }\n    .offcanvas-lg.offcanvas-bottom {\n      inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n      height: var(--offcanvas-height);\n      transform: translateY(100%);\n    }\n    .offcanvas-lg.offcanvas-fullscreen {\n      inset: var(--offcanvas-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n      transform: translateY(100%);\n    }\n    .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) {\n      transform: none;\n    }\n    .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show {\n      visibility: visible;\n    }\n  }\n  @media (width >= 1024px) {\n    .offcanvas-lg {\n      --offcanvas-height: auto;\n      --offcanvas-border-width: 0;\n      background-color: transparent !important;\n    }\n    .offcanvas-lg .offcanvas-header {\n      display: none;\n    }\n    .offcanvas-lg .offcanvas-body {\n      flex-grow: 0;\n      flex-direction: row;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1280px) {\n    .offcanvas-xl {\n      position: fixed;\n      z-index: var(--offcanvas-zindex);\n      display: flex;\n      flex-direction: column;\n      max-width: calc(100% - var(--offcanvas-inset) * 2);\n      max-height: calc(100% - var(--offcanvas-inset) * 2);\n      color: var(--offcanvas-color);\n      visibility: hidden;\n      background-color: var(--offcanvas-bg);\n      background-clip: padding-box;\n      border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n      border-radius: var(--offcanvas-border-radius);\n      outline: 0;\n      box-shadow: var(--offcanvas-box-shadow);\n      transition: var(--offcanvas-transition);\n    }\n  }\n  @media (width < 1280px) and (prefers-reduced-motion: reduce) {\n    .offcanvas-xl {\n      transition: none;\n    }\n  }\n  @media (width < 1280px) {\n    .offcanvas-xl.offcanvas-start {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-start: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(-100%);\n    }\n    :root:dir(rtl) .offcanvas-xl.offcanvas-start {\n      transform: translateX(100%);\n    }\n    .offcanvas-xl.offcanvas-end {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-end: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(100%);\n    }\n    :root:dir(rtl) .offcanvas-xl.offcanvas-end {\n      transform: translateX(-100%);\n    }\n    .offcanvas-xl.offcanvas-top {\n      inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n      height: var(--offcanvas-height);\n      transform: translateY(-100%);\n    }\n    .offcanvas-xl.offcanvas-bottom {\n      inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n      height: var(--offcanvas-height);\n      transform: translateY(100%);\n    }\n    .offcanvas-xl.offcanvas-fullscreen {\n      inset: var(--offcanvas-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n      transform: translateY(100%);\n    }\n    .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) {\n      transform: none;\n    }\n    .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show {\n      visibility: visible;\n    }\n  }\n  @media (width >= 1280px) {\n    .offcanvas-xl {\n      --offcanvas-height: auto;\n      --offcanvas-border-width: 0;\n      background-color: transparent !important;\n    }\n    .offcanvas-xl .offcanvas-header {\n      display: none;\n    }\n    .offcanvas-xl .offcanvas-body {\n      flex-grow: 0;\n      flex-direction: row;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1536px) {\n    .offcanvas-2xl {\n      position: fixed;\n      z-index: var(--offcanvas-zindex);\n      display: flex;\n      flex-direction: column;\n      max-width: calc(100% - var(--offcanvas-inset) * 2);\n      max-height: calc(100% - var(--offcanvas-inset) * 2);\n      color: var(--offcanvas-color);\n      visibility: hidden;\n      background-color: var(--offcanvas-bg);\n      background-clip: padding-box;\n      border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n      border-radius: var(--offcanvas-border-radius);\n      outline: 0;\n      box-shadow: var(--offcanvas-box-shadow);\n      transition: var(--offcanvas-transition);\n    }\n  }\n  @media (width < 1536px) and (prefers-reduced-motion: reduce) {\n    .offcanvas-2xl {\n      transition: none;\n    }\n  }\n  @media (width < 1536px) {\n    .offcanvas-2xl.offcanvas-start {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-start: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(-100%);\n    }\n    :root:dir(rtl) .offcanvas-2xl.offcanvas-start {\n      transform: translateX(100%);\n    }\n    .offcanvas-2xl.offcanvas-end {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-end: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(100%);\n    }\n    :root:dir(rtl) .offcanvas-2xl.offcanvas-end {\n      transform: translateX(-100%);\n    }\n    .offcanvas-2xl.offcanvas-top {\n      inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n      height: var(--offcanvas-height);\n      transform: translateY(-100%);\n    }\n    .offcanvas-2xl.offcanvas-bottom {\n      inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n      height: var(--offcanvas-height);\n      transform: translateY(100%);\n    }\n    .offcanvas-2xl.offcanvas-fullscreen {\n      inset: var(--offcanvas-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n      transform: translateY(100%);\n    }\n    .offcanvas-2xl.showing, .offcanvas-2xl.show:not(.hiding) {\n      transform: none;\n    }\n    .offcanvas-2xl.showing, .offcanvas-2xl.hiding, .offcanvas-2xl.show {\n      visibility: visible;\n    }\n  }\n  @media (width >= 1536px) {\n    .offcanvas-2xl {\n      --offcanvas-height: auto;\n      --offcanvas-border-width: 0;\n      background-color: transparent !important;\n    }\n    .offcanvas-2xl .offcanvas-header {\n      display: none;\n    }\n    .offcanvas-2xl .offcanvas-body {\n      flex-grow: 0;\n      flex-direction: row;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  .offcanvas {\n    position: fixed;\n    z-index: var(--offcanvas-zindex);\n    display: flex;\n    flex-direction: column;\n    max-width: calc(100% - var(--offcanvas-inset) * 2);\n    max-height: calc(100% - var(--offcanvas-inset) * 2);\n    color: var(--offcanvas-color);\n    visibility: hidden;\n    background-color: var(--offcanvas-bg);\n    background-clip: padding-box;\n    border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n    border-radius: var(--offcanvas-border-radius);\n    outline: 0;\n    box-shadow: var(--offcanvas-box-shadow);\n    transition: var(--offcanvas-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .offcanvas {\n      transition: none;\n    }\n  }\n  .offcanvas.offcanvas-start {\n    inset-block: var(--offcanvas-inset);\n    inset-inline-start: var(--offcanvas-inset);\n    width: var(--offcanvas-width);\n    transform: translateX(-100%);\n  }\n  :root:dir(rtl) .offcanvas.offcanvas-start {\n    transform: translateX(100%);\n  }\n  .offcanvas.offcanvas-end {\n    inset-block: var(--offcanvas-inset);\n    inset-inline-end: var(--offcanvas-inset);\n    width: var(--offcanvas-width);\n    transform: translateX(100%);\n  }\n  :root:dir(rtl) .offcanvas.offcanvas-end {\n    transform: translateX(-100%);\n  }\n  .offcanvas.offcanvas-top {\n    inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n    height: var(--offcanvas-height);\n    transform: translateY(-100%);\n  }\n  .offcanvas.offcanvas-bottom {\n    inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n    height: var(--offcanvas-height);\n    transform: translateY(100%);\n  }\n  .offcanvas.offcanvas-fullscreen {\n    inset: var(--offcanvas-inset);\n    width: auto;\n    max-width: none;\n    height: auto;\n    max-height: none;\n    transform: translateY(100%);\n  }\n  .offcanvas.showing, .offcanvas.show:not(.hiding) {\n    transform: none;\n  }\n  .offcanvas.showing, .offcanvas.hiding, .offcanvas.show {\n    visibility: visible;\n  }\n  .offcanvas-backdrop {\n    --offcanvas-backdrop-bg: var(--bg-body);\n    --offcanvas-backdrop-opacity: 25%;\n    --offcanvas-backdrop-blur: 8px;\n    position: fixed;\n    inset: 0;\n    z-index: 1040;\n    background-color: color-mix(in oklch, var(--offcanvas-backdrop-bg) var(--offcanvas-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--offcanvas-backdrop-blur));\n  }\n  .offcanvas-backdrop.fade {\n    opacity: 0;\n  }\n  .offcanvas-backdrop.show {\n    opacity: 1;\n  }\n  .offcanvas-header {\n    display: flex;\n    align-items: center;\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n  }\n  .offcanvas-header .btn-close {\n    padding: calc(var(--offcanvas-padding-y) * 0.5) calc(var(--offcanvas-padding-x) * 0.5);\n    margin-inline-start: auto;\n    margin-inline-end: calc(-0.5 * var(--offcanvas-padding-x));\n    margin-top: calc(-0.5 * var(--offcanvas-padding-y));\n    margin-bottom: calc(-0.5 * var(--offcanvas-padding-y));\n  }\n  .offcanvas-title {\n    margin-bottom: 0;\n    line-height: var(--offcanvas-title-line-height);\n  }\n  .offcanvas-body {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    gap: var(--offcanvas-padding-y);\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n    overflow-y: auto;\n  }\n  .offcanvas-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: 0.5rem;\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n    border-block-start: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n  }\n}\n@layer components {\n  .pagination {\n    --pagination-min-height: var(--btn-input-min-height);\n    --pagination-padding-x: var(--btn-input-padding-x);\n    --pagination-padding-y: var(--btn-input-padding-y);\n    --pagination-font-size: var(--btn-input-font-size);\n    --pagination-color: var(--link-color);\n    --pagination-bg: var(--bg-body);\n    --pagination-border-width: var(--border-width);\n    --pagination-border-color: var(--border-color);\n    --pagination-border-radius: var(--btn-input-border-radius);\n    --pagination-hover-color: var(--link-hover-color);\n    --pagination-hover-bg: var(--bg-1);\n    --pagination-hover-border-color: var(--border-color);\n    --pagination-focus-color: var(--link-hover-color);\n    --pagination-focus-bg: var(--bg-2);\n    --pagination-active-color: var(--primary-contrast);\n    --pagination-active-bg: var(--primary-bg);\n    --pagination-active-border-color: var(--primary-bg);\n    --pagination-disabled-color: var(--fg-3);\n    --pagination-disabled-bg: var(--bg-2);\n    --pagination-disabled-border-color: var(--border-color);\n    display: flex;\n    padding-inline-start: 0;\n    list-style: none;\n  }\n  .page-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: var(--pagination-min-height);\n    padding: var(--pagination-padding-y) var(--pagination-padding-x);\n    font-size: var(--pagination-font-size);\n    color: var(--pagination-color);\n    text-decoration: none;\n    background-color: var(--pagination-bg);\n    border: var(--pagination-border-width) solid var(--pagination-border-color);\n    transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .page-link {\n      transition: none;\n    }\n  }\n  .page-link:hover {\n    z-index: 2;\n    color: var(--pagination-hover-color);\n    background-color: var(--pagination-hover-bg);\n    border-color: var(--pagination-hover-border-color);\n  }\n  .page-link:focus-visible {\n    z-index: 3;\n    color: var(--pagination-focus-color);\n    background-color: var(--pagination-focus-bg);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .page-link.active, .active > .page-link {\n    z-index: 3;\n    color: var(--pagination-active-color);\n    background-color: var(--pagination-active-bg);\n    border-color: var(--pagination-active-border-color);\n  }\n  .page-link.disabled, .disabled > .page-link {\n    color: var(--pagination-disabled-color);\n    pointer-events: none;\n    background-color: var(--pagination-disabled-bg);\n    border-color: var(--pagination-disabled-border-color);\n  }\n  .page-item:not(:first-child) .page-link {\n    margin-inline-start: calc(-1 * var(--pagination-border-width));\n  }\n  .page-item:first-child .page-link {\n    border-start-start-radius: var(--pagination-border-radius);\n    border-end-start-radius: var(--pagination-border-radius);\n  }\n  .page-item:last-child .page-link {\n    border-start-end-radius: var(--pagination-border-radius);\n    border-end-end-radius: var(--pagination-border-radius);\n  }\n  .pagination-sm {\n    --pagination-min-height: var(--bs-btn-input-sm-min-height);\n    --pagination-padding-y: var(--btn-input-sm-padding-y);\n    --pagination-padding-x: var(--btn-input-sm-padding-x);\n    --pagination-font-size: var(--btn-input-sm-font-size);\n    --pagination-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .pagination-lg {\n    --pagination-min-height: var(--bs-btn-input-lg-min-height);\n    --pagination-padding-y: var(--btn-input-lg-padding-y);\n    --pagination-padding-x: var(--btn-input-lg-padding-x);\n    --pagination-font-size: var(--btn-input-lg-font-size);\n    --pagination-border-radius: var(--btn-input-lg-border-radius);\n  }\n}\n@layer components {\n  .placeholder {\n    --placeholder-opacity-max: 0.5;\n    --placeholder-opacity-min: 0.2;\n    display: inline-block;\n    min-height: 1em;\n    vertical-align: middle;\n    cursor: wait;\n    background-color: currentcolor;\n    opacity: var(--placeholder-opacity-max);\n  }\n  .placeholder.btn::before {\n    display: inline-block;\n    content: \"\";\n  }\n  .placeholder-xs {\n    min-height: 0.6em;\n  }\n  .placeholder-sm {\n    min-height: 0.8em;\n  }\n  .placeholder-lg {\n    min-height: 1.2em;\n  }\n  .placeholder-glow .placeholder {\n    animation: placeholder-glow 2s ease-in-out infinite;\n  }\n  @keyframes placeholder-glow {\n    50% {\n      opacity: var(--placeholder-opacity-min);\n    }\n  }\n  .placeholder-wave {\n    mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, calc(1 - var(--placeholder-opacity-min))) 75%, #000 95%);\n    mask-size: 200% 100%;\n    animation: placeholder-wave 2s linear infinite;\n  }\n  @keyframes placeholder-wave {\n    100% {\n      mask-position: -200% 0%;\n    }\n  }\n}\n@layer components {\n  .popover {\n    --popover-zindex: 1070;\n    --popover-max-width: 280px;\n    --popover-font-size: var(--font-size-sm);\n    --popover-bg: var(--bg-body);\n    --popover-border-width: var(--border-width);\n    --popover-border-color: var(--border-color-translucent);\n    --popover-border-radius: var(--border-radius-lg);\n    --popover-inner-border-radius: calc(var(--border-radius-lg) - var(--border-width));\n    --popover-box-shadow: var(--box-shadow);\n    --popover-header-padding-x: 1rem;\n    --popover-header-padding-y: 0.75rem;\n    --popover-header-font-size: var(--font-size-sm);\n    --popover-header-color: inherit;\n    --popover-header-bg: var(--bg-1);\n    --popover-body-padding-x: 1rem;\n    --popover-body-padding-y: 0.75rem;\n    --popover-body-color: var(--fg-body);\n    --popover-arrow-width: 1rem;\n    --popover-arrow-height: 0.5rem;\n    --popover-arrow-border: var(--popover-border-color);\n    z-index: var(--popover-zindex);\n    display: block;\n    max-width: var(--popover-max-width);\n    font-family: var(--body-font-family);\n    font-style: normal;\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    text-align: start;\n    text-decoration: none;\n    text-shadow: none;\n    text-transform: none;\n    letter-spacing: normal;\n    word-break: normal;\n    white-space: normal;\n    word-spacing: normal;\n    line-break: auto;\n    font-size: var(--popover-font-size);\n    word-wrap: break-word;\n    background-color: var(--popover-bg);\n    background-clip: padding-box;\n    border: var(--popover-border-width) solid var(--popover-border-color);\n    border-radius: var(--popover-border-radius);\n    box-shadow: var(--popover-box-shadow);\n  }\n  .popover .popover-arrow {\n    display: block;\n    width: var(--popover-arrow-width);\n    height: var(--popover-arrow-height);\n  }\n  .popover .popover-arrow::before, .popover .popover-arrow::after {\n    position: absolute;\n    display: block;\n    content: \"\";\n    border-color: transparent;\n    border-style: solid;\n    border-width: 0;\n  }\n  .bs-popover-top > .popover-arrow, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow {\n    bottom: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n  }\n  .bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::after {\n    border-width: var(--popover-arrow-height) calc(var(--popover-arrow-width) * 0.5) 0;\n  }\n  .bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::before {\n    bottom: 0;\n    border-block-start-color: var(--popover-arrow-border);\n  }\n  .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::after {\n    bottom: var(--popover-border-width);\n    border-block-start-color: var(--popover-bg);\n  }\n  .bs-popover-end > .popover-arrow, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow {\n    left: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n    width: var(--popover-arrow-height);\n    height: var(--popover-arrow-width);\n  }\n  .bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::after {\n    border-width: calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height) calc(var(--popover-arrow-width) * 0.5) 0;\n  }\n  .bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::before {\n    left: 0;\n    border-inline-end-color: var(--popover-arrow-border);\n  }\n  .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::after {\n    left: var(--popover-border-width);\n    border-inline-end-color: var(--popover-bg);\n  }\n  .bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow {\n    top: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n  }\n  .bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::after {\n    border-width: 0 calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height);\n  }\n  .bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::before {\n    top: 0;\n    border-block-end-color: var(--popover-arrow-border);\n  }\n  .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::after {\n    top: var(--popover-border-width);\n    border-block-end-color: var(--popover-bg);\n  }\n  .bs-popover-bottom .popover-header::before, .bs-popover-auto[data-bs-placement^=bottom] .popover-header::before {\n    position: absolute;\n    top: 0;\n    left: 50%;\n    display: block;\n    width: var(--popover-arrow-width);\n    margin-inline-start: calc(-0.5 * var(--popover-arrow-width));\n    content: \"\";\n    border-block-end: var(--popover-border-width) solid var(--popover-header-bg);\n  }\n  .bs-popover-start > .popover-arrow, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow {\n    right: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n    width: var(--popover-arrow-height);\n    height: var(--popover-arrow-width);\n  }\n  .bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::after {\n    border-width: calc(var(--popover-arrow-width) * 0.5) 0 calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height);\n  }\n  .bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::before {\n    right: 0;\n    border-inline-start-color: var(--popover-arrow-border);\n  }\n  .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::after {\n    right: var(--popover-border-width);\n    border-inline-start-color: var(--popover-bg);\n  }\n  .popover-header {\n    padding: var(--popover-header-padding-y) var(--popover-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--popover-header-font-size);\n    color: var(--popover-header-color);\n    background-color: var(--popover-header-bg);\n    border-block-end: var(--popover-border-width) solid var(--popover-border-color);\n    border-start-start-radius: var(--popover-inner-border-radius);\n    border-start-end-radius: var(--popover-inner-border-radius);\n  }\n  .popover-header:empty {\n    display: none;\n  }\n  .popover-body {\n    padding: var(--popover-body-padding-y) var(--popover-body-padding-x);\n    color: var(--popover-body-color);\n  }\n}\n@layer components {\n  @keyframes progress-bar-stripes {\n    0% {\n      background-position-x: var(--progress-height);\n    }\n  }\n  .progress,\n  .progress-stacked {\n    --progress-height: 1rem;\n    --progress-font-size: var(--font-size-sm);\n    --progress-bg: var(--bg-2);\n    --progress-border-radius: var(--border-radius);\n    --progress-box-shadow: var(--box-shadow-inset);\n    --progress-bar-color: var(--white);\n    --progress-bar-bg: var(--primary-bg);\n    --progress-bar-transition: width 0.6s ease;\n    --progress-bar-animation: progress-bar-stripes 1s linear infinite;\n    display: flex;\n    height: var(--progress-height);\n    overflow: hidden;\n    font-size: var(--progress-font-size);\n    background-color: var(--progress-bg);\n    border-radius: var(--progress-border-radius);\n    box-shadow: var(--progress-box-shadow);\n  }\n  .progress-bar {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    overflow: hidden;\n    color: var(--theme-contrast, var(--progress-bar-color));\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--theme-bg, var(--progress-bar-bg));\n    transition: var(--progress-bar-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .progress-bar {\n      transition: none;\n    }\n  }\n  .progress-bar-striped {\n    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%, transparent);\n    background-size: var(--progress-height) var(--progress-height);\n  }\n  .progress-stacked > .progress {\n    overflow: visible;\n  }\n  .progress-stacked > .progress > .progress-bar {\n    width: 100%;\n  }\n  .progress-bar-animated {\n    animation: var(--progress-bar-animation);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .progress-bar-animated {\n      animation: none;\n    }\n  }\n}\n@layer components {\n  .spinner-grow,\n  .spinner-border {\n    display: inline-block;\n    flex-shrink: 0;\n    width: var(--spinner-width);\n    height: var(--spinner-height);\n    vertical-align: var(--spinner-vertical-align);\n    border-radius: 50%;\n    animation: var(--spinner-animation-speed) linear infinite var(--spinner-animation-name);\n  }\n  @keyframes spinner-border {\n    to {\n      transform: rotate(360deg);\n    }\n  }\n  .spinner-border {\n    --spinner-width: 2rem;\n    --spinner-height: 2rem;\n    --spinner-vertical-align: -0.125em;\n    --spinner-border-width: 0.25em;\n    --spinner-animation-speed: 0.75s;\n    --spinner-animation-name: spinner-border;\n    border: var(--spinner-border-width) solid currentcolor;\n    border-inline-end-color: transparent;\n  }\n  .spinner-border-sm {\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    --spinner-border-width: .2em;\n  }\n  @keyframes spinner-grow {\n    0% {\n      transform: scale(0);\n    }\n    50% {\n      opacity: 1;\n      transform: none;\n    }\n  }\n  .spinner-grow {\n    --spinner-width: 2rem;\n    --spinner-height: 2rem;\n    --spinner-vertical-align: -0.125em;\n    --spinner-animation-speed: 0.75s;\n    --spinner-animation-name: spinner-grow;\n    background-color: currentcolor;\n    opacity: 0;\n  }\n  .spinner-grow-sm {\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .spinner-border,\n    .spinner-grow {\n      --spinner-animation-speed: 1.5s;\n    }\n  }\n}\n.stepper {\n  --stepper-size: 2rem;\n  --stepper-gap: 1rem;\n  --stepper-bg: var(--bg-2);\n  --stepper-track-size: 0.25rem;\n  --stepper-active-color: var(--primary-contrast);\n  --stepper-active-bg: var(--primary-bg);\n  display: grid;\n  grid-auto-rows: 1fr;\n  grid-auto-flow: row;\n  gap: var(--stepper-gap);\n  padding-left: 0;\n  list-style: none;\n  counter-reset: stepper;\n}\n\n.stepper-item {\n  position: relative;\n  display: grid;\n  grid-template-rows: auto;\n  grid-template-columns: var(--stepper-size) auto;\n  gap: 0.5rem;\n  place-items: center;\n  justify-items: start;\n  text-align: center;\n  text-decoration: none;\n}\n.stepper-item::before {\n  position: relative;\n  z-index: 1;\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: center;\n  width: var(--stepper-size);\n  height: var(--stepper-size);\n  padding: 0.5rem;\n  font-weight: 600;\n  line-height: 1;\n  text-align: center;\n  content: counter(stepper);\n  counter-increment: stepper;\n  background-color: var(--stepper-bg);\n  border-radius: 50%;\n}\n.stepper-item::after {\n  position: absolute;\n  top: calc(var(--stepper-gap) * -1);\n  bottom: 100%;\n  left: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n  width: var(--stepper-track-size);\n  content: \"\";\n  background-color: var(--stepper-bg);\n}\n.stepper-item:first-child::after {\n  display: none;\n}\n.stepper-item.active::before, .stepper-item.active::after {\n  color: var(--theme-contrast, var(--stepper-active-color));\n  background-color: var(--theme-bg, var(--stepper-active-bg));\n}\n\n.stepper-horizontal {\n  display: inline-grid;\n  grid-auto-columns: 1fr;\n  grid-auto-flow: column;\n}\n.stepper-horizontal .stepper-item {\n  grid-template-rows: repeat(2, var(--stepper-size));\n  grid-template-columns: auto;\n  justify-items: center;\n}\n.stepper-horizontal .stepper-item::after {\n  top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n  right: 0;\n  bottom: auto;\n  left: calc(-50% - var(--stepper-gap));\n  width: auto;\n  height: var(--stepper-track-size);\n}\n.stepper-horizontal .stepper-item:last-child::after {\n  right: 50%;\n}\n\n@media (width >= 576px) {\n  .stepper-horizontal-sm {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal-sm .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n  }\n  .stepper-horizontal-sm .stepper-item::after {\n    top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    right: 0;\n    bottom: auto;\n    left: calc(-50% - var(--stepper-gap));\n    width: auto;\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal-sm .stepper-item:last-child::after {\n    right: 50%;\n  }\n}\n@media (width >= 768px) {\n  .stepper-horizontal-md {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal-md .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n  }\n  .stepper-horizontal-md .stepper-item::after {\n    top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    right: 0;\n    bottom: auto;\n    left: calc(-50% - var(--stepper-gap));\n    width: auto;\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal-md .stepper-item:last-child::after {\n    right: 50%;\n  }\n}\n@media (width >= 1024px) {\n  .stepper-horizontal-lg {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal-lg .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n  }\n  .stepper-horizontal-lg .stepper-item::after {\n    top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    right: 0;\n    bottom: auto;\n    left: calc(-50% - var(--stepper-gap));\n    width: auto;\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal-lg .stepper-item:last-child::after {\n    right: 50%;\n  }\n}\n@media (width >= 1280px) {\n  .stepper-horizontal-xl {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal-xl .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n  }\n  .stepper-horizontal-xl .stepper-item::after {\n    top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    right: 0;\n    bottom: auto;\n    left: calc(-50% - var(--stepper-gap));\n    width: auto;\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal-xl .stepper-item:last-child::after {\n    right: 50%;\n  }\n}\n@media (width >= 1536px) {\n  .stepper-horizontal-2xl {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal-2xl .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n  }\n  .stepper-horizontal-2xl .stepper-item::after {\n    top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    right: 0;\n    bottom: auto;\n    left: calc(-50% - var(--stepper-gap));\n    width: auto;\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal-2xl .stepper-item:last-child::after {\n    right: 50%;\n  }\n}\n.stepper-overflow {\n  container-type: inline-size;\n  overflow-x: auto;\n  overscroll-behavior-x: contain;\n  -webkit-overflow-scrolling: touch;\n}\n.stepper-overflow > .stepper {\n  width: max-content;\n  min-width: 100%;\n}\n\n@layer components {\n  .toast {\n    --toast-zindex: 1090;\n    --toast-padding-x: 0.75rem;\n    --toast-padding-y: 0.5rem;\n    --toast-spacing: 1.5rem;\n    --toast-max-width: 350px;\n    --toast-font-size: 0.875rem;\n    --toast-bg: rgba(var(--body-bg-rgb), 0.85);\n    --toast-border-width: var(--border-width);\n    --toast-border-color: var(--border-color-translucent);\n    --toast-border-radius: var(--border-radius);\n    --toast-box-shadow: var(--box-shadow);\n    --toast-header-color: var(--fg-3);\n    --toast-header-bg: rgba(var(--body-bg-rgb), 0.85);\n    --toast-header-border-color: var(--border-color-translucent);\n    width: var(--toast-max-width);\n    max-width: 100%;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color);\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--toast-border-color);\n    box-shadow: var(--toast-box-shadow);\n    border-radius: var(--toast-border-radius);\n  }\n  .toast.showing {\n    opacity: 0;\n  }\n  .toast:not(.show) {\n    display: none;\n  }\n  .toast-container {\n    --toast-zindex: 1090;\n    position: absolute;\n    z-index: var(--toast-zindex);\n    width: max-content;\n    max-width: 100%;\n    pointer-events: none;\n  }\n  .toast-container > :not(:last-child) {\n    margin-bottom: var(--toast-spacing);\n  }\n  .toast-header {\n    display: flex;\n    align-items: center;\n    padding: var(--toast-padding-y) var(--toast-padding-x);\n    color: var(--toast-header-color);\n    background-color: var(--toast-header-bg);\n    background-clip: padding-box;\n    border-block-end: var(--toast-border-width) solid var(--toast-header-border-color);\n    border-start-start-radius: calc(var(--toast-border-radius) - var(--toast-border-width));\n    border-start-end-radius: calc(var(--toast-border-radius) - var(--toast-border-width));\n  }\n  .toast-header .btn-close {\n    margin-inline-start: var(--toast-padding-x);\n    margin-inline-end: calc(-0.5 * var(--toast-padding-x));\n  }\n  .toast-body {\n    padding: var(--toast-padding-x);\n    word-wrap: break-word;\n  }\n}\n.fade {\n  transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n  .fade {\n    transition: none;\n  }\n}\n.fade:not(.show) {\n  opacity: 0;\n}\n\n.collapse:not(.show) {\n  display: none;\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing {\n    transition: none;\n  }\n}\n.collapsing.collapse-horizontal {\n  width: 0;\n  height: auto;\n  transition: width 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing.collapse-horizontal {\n    transition: none;\n  }\n}\n\n@layer helpers {\n  .focus-ring:focus-visible {\n    outline: var(--focus-ring);\n  }\n}\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: 0.375rem;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, 0.5));\n    text-underline-offset: 0.25em;\n    backface-visibility: hidden;\n  }\n  .icon-link > .bi {\n    flex-shrink: 0;\n    width: 1em;\n    height: 1em;\n    fill: currentcolor;\n    transition: 0.2s ease-in-out transform;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .icon-link > .bi {\n      transition: none;\n    }\n  }\n  .icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {\n    transform: var(--icon-link-transform, translate3d(0.25em, 0, 0));\n  }\n}\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: 1030;\n  }\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: 1030;\n  }\n  .sticky-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n  .sticky-bottom {\n    position: sticky;\n    bottom: 0;\n    z-index: 1020;\n  }\n  @media (width >= 576px) {\n    .sticky-sm-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-sm-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 768px) {\n    .sticky-md-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-md-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1024px) {\n    .sticky-lg-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-lg-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1280px) {\n    .sticky-xl-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-xl-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1536px) {\n    .sticky-2xl-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-2xl-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n}\n@layer helpers {\n  .stack-container {\n    container-type: inline-size;\n  }\n  [class*=hstack],\n  [class*=vstack] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n  .vstack {\n    --stack-direction: column;\n    --stack-align-items: stretch;\n  }\n  .hstack {\n    --stack-direction: row;\n    --stack-align-items: flex-start;\n  }\n  @container (width >= 576px) {\n    .vstack-sm {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 576px) {\n    .hstack-sm {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 768px) {\n    .vstack-md {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 768px) {\n    .hstack-md {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1024px) {\n    .vstack-lg {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1024px) {\n    .hstack-lg {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1280px) {\n    .vstack-xl {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1280px) {\n    .hstack-xl {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1536px) {\n    .vstack-2xl {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1536px) {\n    .hstack-2xl {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n}\n@layer helpers {\n  .theme-primary {\n    --theme-base: var(--primary-base);\n    --theme-text: var(--primary-text);\n    --theme-text-emphasis: var(--primary-text-emphasis);\n    --theme-bg: var(--primary-bg);\n    --theme-bg-subtle: var(--primary-bg-subtle);\n    --theme-bg-muted: var(--primary-bg-muted);\n    --theme-border: var(--primary-border);\n    --theme-focus-ring: var(--primary-focus-ring);\n    --theme-contrast: var(--primary-contrast);\n  }\n  .theme-accent {\n    --theme-base: var(--accent-base);\n    --theme-text: var(--accent-text);\n    --theme-text-emphasis: var(--accent-text-emphasis);\n    --theme-bg: var(--accent-bg);\n    --theme-bg-subtle: var(--accent-bg-subtle);\n    --theme-bg-muted: var(--accent-bg-muted);\n    --theme-border: var(--accent-border);\n    --theme-focus-ring: var(--accent-focus-ring);\n    --theme-contrast: var(--accent-contrast);\n  }\n  .theme-success {\n    --theme-base: var(--success-base);\n    --theme-text: var(--success-text);\n    --theme-text-emphasis: var(--success-text-emphasis);\n    --theme-bg: var(--success-bg);\n    --theme-bg-subtle: var(--success-bg-subtle);\n    --theme-bg-muted: var(--success-bg-muted);\n    --theme-border: var(--success-border);\n    --theme-focus-ring: var(--success-focus-ring);\n    --theme-contrast: var(--success-contrast);\n  }\n  .theme-danger {\n    --theme-base: var(--danger-base);\n    --theme-text: var(--danger-text);\n    --theme-text-emphasis: var(--danger-text-emphasis);\n    --theme-bg: var(--danger-bg);\n    --theme-bg-subtle: var(--danger-bg-subtle);\n    --theme-bg-muted: var(--danger-bg-muted);\n    --theme-border: var(--danger-border);\n    --theme-focus-ring: var(--danger-focus-ring);\n    --theme-contrast: var(--danger-contrast);\n  }\n  .theme-warning {\n    --theme-base: var(--warning-base);\n    --theme-text: var(--warning-text);\n    --theme-text-emphasis: var(--warning-text-emphasis);\n    --theme-bg: var(--warning-bg);\n    --theme-bg-subtle: var(--warning-bg-subtle);\n    --theme-bg-muted: var(--warning-bg-muted);\n    --theme-border: var(--warning-border);\n    --theme-focus-ring: var(--warning-focus-ring);\n    --theme-contrast: var(--warning-contrast);\n  }\n  .theme-info {\n    --theme-base: var(--info-base);\n    --theme-text: var(--info-text);\n    --theme-text-emphasis: var(--info-text-emphasis);\n    --theme-bg: var(--info-bg);\n    --theme-bg-subtle: var(--info-bg-subtle);\n    --theme-bg-muted: var(--info-bg-muted);\n    --theme-border: var(--info-border);\n    --theme-focus-ring: var(--info-focus-ring);\n    --theme-contrast: var(--info-contrast);\n  }\n  .theme-inverse {\n    --theme-base: var(--inverse-base);\n    --theme-text: var(--inverse-text);\n    --theme-text-emphasis: var(--inverse-text-emphasis);\n    --theme-bg: var(--inverse-bg);\n    --theme-bg-subtle: var(--inverse-bg-subtle);\n    --theme-bg-muted: var(--inverse-bg-muted);\n    --theme-border: var(--inverse-border);\n    --theme-focus-ring: var(--inverse-focus-ring);\n    --theme-contrast: var(--inverse-contrast);\n  }\n  .theme-secondary {\n    --theme-base: var(--secondary-base);\n    --theme-text: var(--secondary-text);\n    --theme-text-emphasis: var(--secondary-text-emphasis);\n    --theme-bg: var(--secondary-bg);\n    --theme-bg-subtle: var(--secondary-bg-subtle);\n    --theme-bg-muted: var(--secondary-bg-muted);\n    --theme-border: var(--secondary-border);\n    --theme-focus-ring: var(--secondary-focus-ring);\n    --theme-contrast: var(--secondary-contrast);\n  }\n}\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) {\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border: 0 !important;\n  }\n  .visually-hidden:not(caption),\n  .visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {\n    position: absolute !important;\n  }\n  .visually-hidden *,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) * {\n    overflow: hidden !important;\n  }\n}\n@layer helpers {\n  .stretched-link::after {\n    position: absolute;\n    inset: 0;\n    z-index: 1;\n    content: \"\";\n  }\n}\n@layer helpers {\n  .text-truncate {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n@layer utilities {\n  .align-baseline {\n    vertical-align: baseline;\n  }\n  .align-top {\n    vertical-align: top;\n  }\n  .align-middle {\n    vertical-align: middle;\n  }\n  .align-bottom {\n    vertical-align: bottom;\n  }\n  .align-text-bottom {\n    vertical-align: text-bottom;\n  }\n  .align-text-top {\n    vertical-align: text-top;\n  }\n  [class*=ratio-] {\n    aspect-ratio: var(--ratio);\n  }\n  .ratio-auto {\n    --ratio: auto;\n  }\n  .ratio-1x1 {\n    --ratio: 1 / 1;\n  }\n  .ratio-4x3 {\n    --ratio: 4 / 3;\n  }\n  .ratio-16x9 {\n    --ratio: 16 / 9;\n  }\n  .ratio-21x9 {\n    --ratio: 21 / 9;\n  }\n  .float-start {\n    float: inline-start;\n  }\n  .float-end {\n    float: inline-end;\n  }\n  .float-none {\n    float: none;\n  }\n  .object-fit-contain {\n    object-fit: contain;\n  }\n  .object-fit-cover {\n    object-fit: cover;\n  }\n  .object-fit-fill {\n    object-fit: fill;\n  }\n  .object-fit-scale {\n    object-fit: scale-down;\n  }\n  .object-fit-none {\n    object-fit: none;\n  }\n  .opacity-0 {\n    opacity: 0;\n  }\n  .opacity-25 {\n    opacity: 0.25;\n  }\n  .opacity-50 {\n    opacity: 0.5;\n  }\n  .opacity-75 {\n    opacity: 0.75;\n  }\n  .opacity-100 {\n    opacity: 1;\n  }\n  .overflow-auto {\n    overflow: auto;\n  }\n  .overflow-hidden {\n    overflow: hidden;\n  }\n  .overflow-visible {\n    overflow: visible;\n  }\n  .overflow-scroll {\n    overflow: scroll;\n  }\n  .overflow-x-auto {\n    overflow-x: auto;\n  }\n  .overflow-x-hidden {\n    overflow-x: hidden;\n  }\n  .overflow-x-visible {\n    overflow-x: visible;\n  }\n  .overflow-x-scroll {\n    overflow-x: scroll;\n  }\n  .overflow-y-auto {\n    overflow-y: auto;\n  }\n  .overflow-y-hidden {\n    overflow-y: hidden;\n  }\n  .overflow-y-visible {\n    overflow-y: visible;\n  }\n  .overflow-y-scroll {\n    overflow-y: scroll;\n  }\n  .d-inline {\n    display: inline;\n  }\n  .d-inline-block {\n    display: inline-block;\n  }\n  .d-block {\n    display: block;\n  }\n  .d-grid {\n    display: grid;\n  }\n  .d-inline-grid {\n    display: inline-grid;\n  }\n  .d-table {\n    display: table;\n  }\n  .d-table-row {\n    display: table-row;\n  }\n  .d-table-cell {\n    display: table-cell;\n  }\n  .d-flex {\n    display: flex;\n  }\n  .d-inline-flex {\n    display: inline-flex;\n  }\n  .d-contents {\n    display: contents;\n  }\n  .d-flow-root {\n    display: flow-root;\n  }\n  .d-none {\n    display: none;\n  }\n  .shadow {\n    box-shadow: var(--box-shadow);\n  }\n  .shadow-sm {\n    box-shadow: var(--box-shadow-sm);\n  }\n  .shadow-lg {\n    box-shadow: var(--box-shadow-lg);\n  }\n  .shadow-none {\n    box-shadow: none;\n  }\n  .focus-ring-primary {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-accent {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-success {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-danger {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-warning {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  }\n  .focus-ring-info {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-inverse {\n    --focus-ring-color: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  }\n  .focus-ring-secondary {\n    --focus-ring-color: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  }\n  .position-static {\n    position: static;\n  }\n  .position-relative {\n    position: relative;\n  }\n  .position-absolute {\n    position: absolute;\n  }\n  .position-fixed {\n    position: fixed;\n  }\n  .position-sticky {\n    position: sticky;\n  }\n  .top-0 {\n    top: 0;\n  }\n  .top-50 {\n    top: 50%;\n  }\n  .top-100 {\n    top: 100%;\n  }\n  .bottom-0 {\n    bottom: 0;\n  }\n  .bottom-50 {\n    bottom: 50%;\n  }\n  .bottom-100 {\n    bottom: 100%;\n  }\n  .start-0 {\n    left: 0;\n  }\n  .start-50 {\n    left: 50%;\n  }\n  .start-100 {\n    left: 100%;\n  }\n  .end-0 {\n    right: 0;\n  }\n  .end-50 {\n    right: 50%;\n  }\n  .end-100 {\n    right: 100%;\n  }\n  .translate-middle {\n    transform: translate(-50%, -50%);\n  }\n  .translate-middle-x {\n    transform: translateX(-50%);\n  }\n  .translate-middle-y {\n    transform: translateY(-50%);\n  }\n  .border {\n    border: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-0 {\n    border: 0;\n  }\n  .border-top {\n    border-block-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-top-0 {\n    border-block-start: 0;\n  }\n  .border-end {\n    border-inline-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-end-0 {\n    border-inline-end: 0;\n  }\n  .border-bottom {\n    border-block-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-bottom-0 {\n    border-block-end: 0;\n  }\n  .border-start {\n    border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-start-0 {\n    border-inline-start: 0;\n  }\n  .border-block {\n    border-block: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-block-0 {\n    border-block: 0;\n  }\n  .border-inline {\n    border-inline: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-inline-0 {\n    border-inline: 0;\n  }\n  .border-primary {\n    --border-color: var(--blue-500);\n    border-color: var(--border-color);\n  }\n  .border-accent {\n    --border-color: var(--indigo-500);\n    border-color: var(--border-color);\n  }\n  .border-success {\n    --border-color: var(--green-500);\n    border-color: var(--border-color);\n  }\n  .border-danger {\n    --border-color: var(--red-500);\n    border-color: var(--border-color);\n  }\n  .border-warning {\n    --border-color: var(--yellow-500);\n    border-color: var(--border-color);\n  }\n  .border-info {\n    --border-color: var(--cyan-500);\n    border-color: var(--border-color);\n  }\n  .border-inverse {\n    --border-color: light-dark(var(--gray-900), var(--gray-025));\n    border-color: var(--border-color);\n  }\n  .border-secondary {\n    --border-color: light-dark(var(--gray-100), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-bg {\n    --border-color: var(--bg-body);\n    border-color: var(--border-color);\n  }\n  .border-body {\n    --border-color: light-dark(var(--gray-300), var(--gray-800));\n    border-color: var(--border-color);\n  }\n  .border-muted {\n    --border-color: light-dark(var(--gray-200), var(--gray-800));\n    border-color: var(--border-color);\n  }\n  .border-subtle {\n    --border-color: light-dark(var(--gray-100), var(--gray-900));\n    border-color: var(--border-color);\n  }\n  .border-emphasized {\n    --border-color: light-dark(var(--gray-400), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-white {\n    --border-color: var(--white);\n    border-color: var(--border-color);\n  }\n  .border-black {\n    --border-color: var(--black);\n    border-color: var(--border-color);\n  }\n  .border-subtle-primary {\n    --border-color: light-dark(var(--blue-300), var(--blue-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-accent {\n    --border-color: light-dark(var(--indigo-300), var(--indigo-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-success {\n    --border-color: light-dark(var(--green-300), var(--green-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-danger {\n    --border-color: light-dark(var(--red-300), var(--red-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-warning {\n    --border-color: light-dark(var(--yellow-300), var(--yellow-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-info {\n    --border-color: light-dark(var(--cyan-300), var(--cyan-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-inverse {\n    --border-color: light-dark(var(--gray-400), var(--gray-100));\n    border-color: var(--border-color);\n  }\n  .border-subtle-secondary {\n    --border-color: light-dark(var(--gray-300), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-1 {\n    border-width: 1px;\n  }\n  .border-2 {\n    border-width: 2px;\n  }\n  .border-3 {\n    border-width: 3px;\n  }\n  .border-4 {\n    border-width: 4px;\n  }\n  .border-5 {\n    border-width: 5px;\n  }\n  .border-10 {\n    border-color: color-mix(in oklch, var(--border-color) 10%, transparent);\n  }\n  .border-20 {\n    border-color: color-mix(in oklch, var(--border-color) 20%, transparent);\n  }\n  .border-30 {\n    border-color: color-mix(in oklch, var(--border-color) 30%, transparent);\n  }\n  .border-40 {\n    border-color: color-mix(in oklch, var(--border-color) 40%, transparent);\n  }\n  .border-50 {\n    border-color: color-mix(in oklch, var(--border-color) 50%, transparent);\n  }\n  .border-60 {\n    border-color: color-mix(in oklch, var(--border-color) 60%, transparent);\n  }\n  .border-70 {\n    border-color: color-mix(in oklch, var(--border-color) 70%, transparent);\n  }\n  .border-80 {\n    border-color: color-mix(in oklch, var(--border-color) 80%, transparent);\n  }\n  .border-90 {\n    border-color: color-mix(in oklch, var(--border-color) 90%, transparent);\n  }\n  .border-100 {\n    border-color: var(--border-color);\n  }\n  .w-1 {\n    width: 1rem;\n  }\n  .w-2 {\n    width: 2rem;\n  }\n  .w-3 {\n    width: 3rem;\n  }\n  .w-4 {\n    width: 4rem;\n  }\n  .w-5 {\n    width: 5rem;\n  }\n  .w-6 {\n    width: 6rem;\n  }\n  .w-7 {\n    width: 7rem;\n  }\n  .w-8 {\n    width: 8rem;\n  }\n  .w-9 {\n    width: 9rem;\n  }\n  .w-10 {\n    width: 10rem;\n  }\n  .w-11 {\n    width: 11rem;\n  }\n  .w-12 {\n    width: 12rem;\n  }\n  .w-25 {\n    width: 25%;\n  }\n  .w-50 {\n    width: 50%;\n  }\n  .w-75 {\n    width: 75%;\n  }\n  .w-100 {\n    width: 100%;\n  }\n  .w-auto {\n    width: auto;\n  }\n  .w-min {\n    width: min-content;\n  }\n  .w-max {\n    width: max-content;\n  }\n  .w-fit {\n    width: fit-content;\n  }\n  .max-w-100 {\n    max-width: 100%;\n  }\n  .min-w-0 {\n    min-width: 0;\n  }\n  .min-w-100 {\n    min-width: 100%;\n  }\n  .vw-100 {\n    width: 100vw;\n  }\n  .min-vw-100 {\n    min-width: 100vw;\n  }\n  .h-25 {\n    height: 25%;\n  }\n  .h-50 {\n    height: 50%;\n  }\n  .h-75 {\n    height: 75%;\n  }\n  .h-100 {\n    height: 100%;\n  }\n  .h-auto {\n    height: auto;\n  }\n  .h-min {\n    height: min-content;\n  }\n  .h-max {\n    height: max-content;\n  }\n  .h-fit {\n    height: fit-content;\n  }\n  .max-h-100 {\n    max-height: 100%;\n  }\n  .min-h-0 {\n    min-height: 0;\n  }\n  .min-h-100 {\n    min-height: 100%;\n  }\n  .vh-100 {\n    height: 100vh;\n  }\n  .min-vh-100 {\n    min-height: 100vh;\n  }\n  .flex-fill {\n    flex: 1 1 auto;\n  }\n  .flex-row {\n    flex-direction: row;\n  }\n  .flex-column {\n    flex-direction: column;\n  }\n  .flex-row-reverse {\n    flex-direction: row-reverse;\n  }\n  .flex-column-reverse {\n    flex-direction: column-reverse;\n  }\n  .flex-grow-0 {\n    flex-grow: 0;\n  }\n  .flex-grow-1 {\n    flex-grow: 1;\n  }\n  .flex-shrink-0 {\n    flex-shrink: 0;\n  }\n  .flex-shrink-1 {\n    flex-shrink: 1;\n  }\n  .flex-wrap {\n    flex-wrap: wrap;\n  }\n  .flex-nowrap {\n    flex-wrap: nowrap;\n  }\n  .flex-wrap-reverse {\n    flex-wrap: wrap-reverse;\n  }\n  .justify-content-start {\n    justify-content: flex-start;\n  }\n  .justify-content-end {\n    justify-content: flex-end;\n  }\n  .justify-content-center {\n    justify-content: center;\n  }\n  .justify-content-between {\n    justify-content: space-between;\n  }\n  .justify-content-around {\n    justify-content: space-around;\n  }\n  .justify-content-evenly {\n    justify-content: space-evenly;\n  }\n  .justify-items-start {\n    justify-items: start;\n  }\n  .justify-items-end {\n    justify-items: end;\n  }\n  .justify-items-center {\n    justify-items: center;\n  }\n  .justify-items-stretch {\n    justify-items: stretch;\n  }\n  .justify-self-start {\n    justify-self: flex-start;\n  }\n  .justify-self-end {\n    justify-self: flex-end;\n  }\n  .justify-self-center {\n    justify-self: center;\n  }\n  .align-items-start {\n    align-items: flex-start;\n  }\n  .align-items-end {\n    align-items: flex-end;\n  }\n  .align-items-center {\n    align-items: center;\n  }\n  .align-items-baseline {\n    align-items: baseline;\n  }\n  .align-items-stretch {\n    align-items: stretch;\n  }\n  .align-content-start {\n    align-content: flex-start;\n  }\n  .align-content-end {\n    align-content: flex-end;\n  }\n  .align-content-center {\n    align-content: center;\n  }\n  .align-content-between {\n    align-content: space-between;\n  }\n  .align-content-around {\n    align-content: space-around;\n  }\n  .align-content-stretch {\n    align-content: stretch;\n  }\n  .align-self-auto {\n    align-self: auto;\n  }\n  .align-self-start {\n    align-self: flex-start;\n  }\n  .align-self-end {\n    align-self: flex-end;\n  }\n  .align-self-center {\n    align-self: center;\n  }\n  .align-self-baseline {\n    align-self: baseline;\n  }\n  .align-self-stretch {\n    align-self: stretch;\n  }\n  .place-items-start {\n    place-items: start;\n  }\n  .place-items-end {\n    place-items: end;\n  }\n  .place-items-center {\n    place-items: center;\n  }\n  .place-items-stretch {\n    place-items: stretch;\n  }\n  .grid-cols-3 {\n    --columns: 3;\n  }\n  .grid-cols-4 {\n    --columns: 4;\n  }\n  .grid-cols-6 {\n    --columns: 6;\n  }\n  .grid-cols-fill {\n    grid-column: 1 / -1;\n  }\n  .grid-auto-flow-row {\n    grid-auto-flow: row;\n  }\n  .grid-auto-flow-column {\n    grid-auto-flow: column;\n  }\n  .grid-auto-flow-dense {\n    grid-auto-flow: dense;\n  }\n  .order-first {\n    order: -1;\n  }\n  .order-0 {\n    order: 0;\n  }\n  .order-1 {\n    order: 1;\n  }\n  .order-2 {\n    order: 2;\n  }\n  .order-3 {\n    order: 3;\n  }\n  .order-4 {\n    order: 4;\n  }\n  .order-5 {\n    order: 5;\n  }\n  .order-last {\n    order: 6;\n  }\n  .m--2 {\n    margin: -0.5rem;\n  }\n  .m--1 {\n    margin: -0.25rem;\n  }\n  .m-0 {\n    margin: 0;\n  }\n  .m-1 {\n    margin: 0.25rem;\n  }\n  .m-2 {\n    margin: 0.5rem;\n  }\n  .m-3 {\n    margin: 1rem;\n  }\n  .m-4 {\n    margin: 1.5rem;\n  }\n  .m-5 {\n    margin: 3rem;\n  }\n  .m-auto {\n    margin: auto;\n  }\n  .mx--2 {\n    margin-inline: -0.5rem;\n  }\n  .mx--1 {\n    margin-inline: -0.25rem;\n  }\n  .mx-0 {\n    margin-inline: 0;\n  }\n  .mx-1 {\n    margin-inline: 0.25rem;\n  }\n  .mx-2 {\n    margin-inline: 0.5rem;\n  }\n  .mx-3 {\n    margin-inline: 1rem;\n  }\n  .mx-4 {\n    margin-inline: 1.5rem;\n  }\n  .mx-5 {\n    margin-inline: 3rem;\n  }\n  .mx-auto {\n    margin-inline: auto;\n  }\n  .my--2 {\n    margin-block: -0.5rem;\n  }\n  .my--1 {\n    margin-block: -0.25rem;\n  }\n  .my-0 {\n    margin-block: 0;\n  }\n  .my-1 {\n    margin-block: 0.25rem;\n  }\n  .my-2 {\n    margin-block: 0.5rem;\n  }\n  .my-3 {\n    margin-block: 1rem;\n  }\n  .my-4 {\n    margin-block: 1.5rem;\n  }\n  .my-5 {\n    margin-block: 3rem;\n  }\n  .my-auto {\n    margin-block: auto;\n  }\n  .mt--2 {\n    margin-block-start: -0.5rem;\n  }\n  .mt--1 {\n    margin-block-start: -0.25rem;\n  }\n  .mt-0 {\n    margin-block-start: 0;\n  }\n  .mt-1 {\n    margin-block-start: 0.25rem;\n  }\n  .mt-2 {\n    margin-block-start: 0.5rem;\n  }\n  .mt-3 {\n    margin-block-start: 1rem;\n  }\n  .mt-4 {\n    margin-block-start: 1.5rem;\n  }\n  .mt-5 {\n    margin-block-start: 3rem;\n  }\n  .mt-auto {\n    margin-block-start: auto;\n  }\n  .me--2 {\n    margin-inline-end: -0.5rem;\n  }\n  .me--1 {\n    margin-inline-end: -0.25rem;\n  }\n  .me-0 {\n    margin-inline-end: 0;\n  }\n  .me-1 {\n    margin-inline-end: 0.25rem;\n  }\n  .me-2 {\n    margin-inline-end: 0.5rem;\n  }\n  .me-3 {\n    margin-inline-end: 1rem;\n  }\n  .me-4 {\n    margin-inline-end: 1.5rem;\n  }\n  .me-5 {\n    margin-inline-end: 3rem;\n  }\n  .me-auto {\n    margin-inline-end: auto;\n  }\n  .mb--2 {\n    margin-block-end: -0.5rem;\n  }\n  .mb--1 {\n    margin-block-end: -0.25rem;\n  }\n  .mb-0 {\n    margin-block-end: 0;\n  }\n  .mb-1 {\n    margin-block-end: 0.25rem;\n  }\n  .mb-2 {\n    margin-block-end: 0.5rem;\n  }\n  .mb-3 {\n    margin-block-end: 1rem;\n  }\n  .mb-4 {\n    margin-block-end: 1.5rem;\n  }\n  .mb-5 {\n    margin-block-end: 3rem;\n  }\n  .mb-auto {\n    margin-block-end: auto;\n  }\n  .ms--2 {\n    margin-inline-start: -0.5rem;\n  }\n  .ms--1 {\n    margin-inline-start: -0.25rem;\n  }\n  .ms-0 {\n    margin-inline-start: 0;\n  }\n  .ms-1 {\n    margin-inline-start: 0.25rem;\n  }\n  .ms-2 {\n    margin-inline-start: 0.5rem;\n  }\n  .ms-3 {\n    margin-inline-start: 1rem;\n  }\n  .ms-4 {\n    margin-inline-start: 1.5rem;\n  }\n  .ms-5 {\n    margin-inline-start: 3rem;\n  }\n  .ms-auto {\n    margin-inline-start: auto;\n  }\n  .p--2 {\n    padding: -0.5rem;\n  }\n  .p--1 {\n    padding: -0.25rem;\n  }\n  .p-0 {\n    padding: 0;\n  }\n  .p-1 {\n    padding: 0.25rem;\n  }\n  .p-2 {\n    padding: 0.5rem;\n  }\n  .p-3 {\n    padding: 1rem;\n  }\n  .p-4 {\n    padding: 1.5rem;\n  }\n  .p-5 {\n    padding: 3rem;\n  }\n  .px--2 {\n    padding-inline: -0.5rem;\n  }\n  .px--1 {\n    padding-inline: -0.25rem;\n  }\n  .px-0 {\n    padding-inline: 0;\n  }\n  .px-1 {\n    padding-inline: 0.25rem;\n  }\n  .px-2 {\n    padding-inline: 0.5rem;\n  }\n  .px-3 {\n    padding-inline: 1rem;\n  }\n  .px-4 {\n    padding-inline: 1.5rem;\n  }\n  .px-5 {\n    padding-inline: 3rem;\n  }\n  .py--2 {\n    padding-block: -0.5rem;\n  }\n  .py--1 {\n    padding-block: -0.25rem;\n  }\n  .py-0 {\n    padding-block: 0;\n  }\n  .py-1 {\n    padding-block: 0.25rem;\n  }\n  .py-2 {\n    padding-block: 0.5rem;\n  }\n  .py-3 {\n    padding-block: 1rem;\n  }\n  .py-4 {\n    padding-block: 1.5rem;\n  }\n  .py-5 {\n    padding-block: 3rem;\n  }\n  .pt--2 {\n    padding-block-start: -0.5rem;\n  }\n  .pt--1 {\n    padding-block-start: -0.25rem;\n  }\n  .pt-0 {\n    padding-block-start: 0;\n  }\n  .pt-1 {\n    padding-block-start: 0.25rem;\n  }\n  .pt-2 {\n    padding-block-start: 0.5rem;\n  }\n  .pt-3 {\n    padding-block-start: 1rem;\n  }\n  .pt-4 {\n    padding-block-start: 1.5rem;\n  }\n  .pt-5 {\n    padding-block-start: 3rem;\n  }\n  .pe--2 {\n    padding-inline-end: -0.5rem;\n  }\n  .pe--1 {\n    padding-inline-end: -0.25rem;\n  }\n  .pe-0 {\n    padding-inline-end: 0;\n  }\n  .pe-1 {\n    padding-inline-end: 0.25rem;\n  }\n  .pe-2 {\n    padding-inline-end: 0.5rem;\n  }\n  .pe-3 {\n    padding-inline-end: 1rem;\n  }\n  .pe-4 {\n    padding-inline-end: 1.5rem;\n  }\n  .pe-5 {\n    padding-inline-end: 3rem;\n  }\n  .pb--2 {\n    padding-block-end: -0.5rem;\n  }\n  .pb--1 {\n    padding-block-end: -0.25rem;\n  }\n  .pb-0 {\n    padding-block-end: 0;\n  }\n  .pb-1 {\n    padding-block-end: 0.25rem;\n  }\n  .pb-2 {\n    padding-block-end: 0.5rem;\n  }\n  .pb-3 {\n    padding-block-end: 1rem;\n  }\n  .pb-4 {\n    padding-block-end: 1.5rem;\n  }\n  .pb-5 {\n    padding-block-end: 3rem;\n  }\n  .ps--2 {\n    padding-inline-start: -0.5rem;\n  }\n  .ps--1 {\n    padding-inline-start: -0.25rem;\n  }\n  .ps-0 {\n    padding-inline-start: 0;\n  }\n  .ps-1 {\n    padding-inline-start: 0.25rem;\n  }\n  .ps-2 {\n    padding-inline-start: 0.5rem;\n  }\n  .ps-3 {\n    padding-inline-start: 1rem;\n  }\n  .ps-4 {\n    padding-inline-start: 1.5rem;\n  }\n  .ps-5 {\n    padding-inline-start: 3rem;\n  }\n  .gap--2 {\n    gap: -0.5rem;\n  }\n  .gap--1 {\n    gap: -0.25rem;\n  }\n  .gap-0 {\n    gap: 0;\n  }\n  .gap-1 {\n    gap: 0.25rem;\n  }\n  .gap-2 {\n    gap: 0.5rem;\n  }\n  .gap-3 {\n    gap: 1rem;\n  }\n  .gap-4 {\n    gap: 1.5rem;\n  }\n  .gap-5 {\n    gap: 3rem;\n  }\n  .row-gap--2 {\n    row-gap: -0.5rem;\n  }\n  .row-gap--1 {\n    row-gap: -0.25rem;\n  }\n  .row-gap-0 {\n    row-gap: 0;\n  }\n  .row-gap-1 {\n    row-gap: 0.25rem;\n  }\n  .row-gap-2 {\n    row-gap: 0.5rem;\n  }\n  .row-gap-3 {\n    row-gap: 1rem;\n  }\n  .row-gap-4 {\n    row-gap: 1.5rem;\n  }\n  .row-gap-5 {\n    row-gap: 3rem;\n  }\n  .column-gap--2 {\n    column-gap: -0.5rem;\n  }\n  .column-gap--1 {\n    column-gap: -0.25rem;\n  }\n  .column-gap-0 {\n    column-gap: 0;\n  }\n  .column-gap-1 {\n    column-gap: 0.25rem;\n  }\n  .column-gap-2 {\n    column-gap: 0.5rem;\n  }\n  .column-gap-3 {\n    column-gap: 1rem;\n  }\n  .column-gap-4 {\n    column-gap: 1.5rem;\n  }\n  .column-gap-5 {\n    column-gap: 3rem;\n  }\n  .font-monospace {\n    font-family: var(--font-mono);\n  }\n  .font-body {\n    font-family: var(--body-font-family);\n  }\n  .fs-xs {\n    font-size: var(--font-size-xs);\n  }\n  .fs-sm {\n    font-size: var(--font-size-sm);\n  }\n  .fs-md {\n    font-size: var(--font-size-md);\n  }\n  .fs-lg {\n    font-size: var(--font-size-lg);\n  }\n  .fs-xl {\n    font-size: var(--font-size-xl);\n  }\n  .fs-2xl {\n    font-size: var(--font-size-2xl);\n  }\n  .fs-3xl {\n    font-size: var(--font-size-3xl);\n  }\n  .fs-4xl {\n    font-size: var(--font-size-4xl);\n  }\n  .fs-5xl {\n    font-size: var(--font-size-5xl);\n  }\n  .fs-6xl {\n    font-size: var(--font-size-6xl);\n  }\n  .text-xs {\n    font-size: var(--font-size-xs);\n    line-height: var(--line-height-xs);\n  }\n  .text-sm {\n    font-size: var(--font-size-sm);\n    line-height: var(--line-height-sm);\n  }\n  .text-md {\n    font-size: var(--font-size-md);\n    line-height: var(--line-height-md);\n  }\n  .text-lg {\n    font-size: var(--font-size-lg);\n    line-height: var(--line-height-lg);\n  }\n  .text-xl {\n    font-size: var(--font-size-xl);\n    line-height: var(--line-height-xl);\n  }\n  .text-2xl {\n    font-size: var(--font-size-2xl);\n    line-height: var(--line-height-2xl);\n  }\n  .text-3xl {\n    font-size: var(--font-size-3xl);\n    line-height: var(--line-height-3xl);\n  }\n  .text-4xl {\n    font-size: var(--font-size-4xl);\n    line-height: var(--line-height-4xl);\n  }\n  .text-5xl {\n    font-size: var(--font-size-5xl);\n    line-height: var(--line-height-5xl);\n  }\n  .text-6xl {\n    font-size: var(--font-size-6xl);\n    line-height: var(--line-height-6xl);\n  }\n  .fst-italic {\n    font-style: italic;\n  }\n  .fst-normal {\n    font-style: normal;\n  }\n  .fw-lighter {\n    font-weight: lighter;\n  }\n  .fw-light {\n    font-weight: 300;\n  }\n  .fw-normal {\n    font-weight: 400;\n  }\n  .fw-medium {\n    font-weight: 500;\n  }\n  .fw-semibold {\n    font-weight: 600;\n  }\n  .fw-bold {\n    font-weight: 700;\n  }\n  .fw-bolder {\n    font-weight: bolder;\n  }\n  .lh-1 {\n    line-height: 1;\n  }\n  .lh-sm {\n    line-height: 1.25;\n  }\n  .lh-base {\n    line-height: 1.5;\n  }\n  .lh-lg {\n    line-height: 2;\n  }\n  .text-start {\n    text-align: start;\n  }\n  .text-end {\n    text-align: end;\n  }\n  .text-center {\n    text-align: center;\n  }\n  .text-decoration-none {\n    text-decoration: none;\n  }\n  .text-decoration-underline {\n    text-decoration: underline;\n  }\n  .text-decoration-line-through {\n    text-decoration: line-through;\n  }\n  .text-lowercase {\n    text-transform: lowercase;\n  }\n  .text-uppercase {\n    text-transform: uppercase;\n  }\n  .text-capitalize {\n    text-transform: capitalize;\n  }\n  .text-wrap {\n    white-space: wrap;\n  }\n  .text-nowrap {\n    white-space: nowrap;\n  }\n  .text-balance {\n    white-space: balance;\n  }\n  .text-pretty {\n    white-space: pretty;\n  }\n  .text-break {\n    word-wrap: break-word;\n    word-break: break-word;\n  }\n  .fg-primary {\n    --fg: light-dark(var(--blue-600), var(--blue-400));\n    color: var(--fg);\n  }\n  .fg-accent {\n    --fg: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n    color: var(--fg);\n  }\n  .fg-success {\n    --fg: light-dark(var(--green-600), var(--green-400));\n    color: var(--fg);\n  }\n  .fg-danger {\n    --fg: light-dark(var(--red-600), var(--red-400));\n    color: var(--fg);\n  }\n  .fg-warning {\n    --fg: light-dark(var(--yellow-700), var(--yellow-400));\n    color: var(--fg);\n  }\n  .fg-info {\n    --fg: light-dark(var(--cyan-600), var(--cyan-400));\n    color: var(--fg);\n  }\n  .fg-inverse {\n    --fg: light-dark(var(--gray-900), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-secondary {\n    --fg: light-dark(var(--gray-600), var(--gray-400));\n    color: var(--fg);\n  }\n  .fg-body {\n    --fg: light-dark(var(--gray-900), var(--gray-050));\n    color: var(--fg);\n  }\n  .fg-1 {\n    --fg: light-dark(var(--gray-800), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-2 {\n    --fg: light-dark(var(--gray-700), var(--gray-300));\n    color: var(--fg);\n  }\n  .fg-3 {\n    --fg: light-dark(var(--gray-600), var(--gray-500));\n    color: var(--fg);\n  }\n  .fg-4 {\n    --fg: light-dark(var(--gray-500), var(--gray-600));\n    color: var(--fg);\n  }\n  .fg-white {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-black {\n    --fg: var(--black);\n    color: var(--fg);\n  }\n  .fg-inherit {\n    --fg: inherit;\n    color: var(--fg);\n  }\n  .fg-emphasis-primary {\n    --fg: light-dark(var(--blue-800), var(--blue-200));\n    color: var(--fg);\n  }\n  .fg-emphasis-accent {\n    --fg: light-dark(var(--indigo-800), var(--indigo-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-success {\n    --fg: light-dark(var(--green-800), var(--green-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-danger {\n    --fg: light-dark(var(--red-800), var(--red-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-warning {\n    --fg: light-dark(var(--yellow-800), var(--yellow-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-info {\n    --fg: light-dark(var(--cyan-800), var(--cyan-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-inverse {\n    --fg: light-dark(var(--gray-975), var(--white));\n    color: var(--fg);\n  }\n  .fg-emphasis-secondary {\n    --fg: light-dark(var(--gray-800), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-contrast-primary {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-accent {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-success {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-danger {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-warning {\n    --fg: var(--gray-900);\n    color: var(--fg);\n  }\n  .fg-contrast-info {\n    --fg: var(--gray-900);\n    color: var(--fg);\n  }\n  .fg-contrast-inverse {\n    --fg: light-dark(var(--white), var(--gray-900));\n    color: var(--fg);\n  }\n  .fg-contrast-secondary {\n    --fg: light-dark(var(--gray-900), var(--white));\n    color: var(--fg);\n  }\n  .fg-10 {\n    color: color-mix(in oklch, var(--fg) 10%, transparent);\n  }\n  .fg-20 {\n    color: color-mix(in oklch, var(--fg) 20%, transparent);\n  }\n  .fg-30 {\n    color: color-mix(in oklch, var(--fg) 30%, transparent);\n  }\n  .fg-40 {\n    color: color-mix(in oklch, var(--fg) 40%, transparent);\n  }\n  .fg-50 {\n    color: color-mix(in oklch, var(--fg) 50%, transparent);\n  }\n  .fg-60 {\n    color: color-mix(in oklch, var(--fg) 60%, transparent);\n  }\n  .fg-70 {\n    color: color-mix(in oklch, var(--fg) 70%, transparent);\n  }\n  .fg-80 {\n    color: color-mix(in oklch, var(--fg) 80%, transparent);\n  }\n  .fg-90 {\n    color: color-mix(in oklch, var(--fg) 90%, transparent);\n  }\n  .fg-100 {\n    color: var(--fg);\n  }\n  .link-10 {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .link-10-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .link-20 {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .link-20-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .link-30 {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .link-30-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .link-40 {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .link-40-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .link-50 {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .link-50-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .link-60 {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .link-60-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .link-70 {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .link-70-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .link-80 {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .link-80-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .link-90 {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-90-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-100 {\n    color: var(--link-color);\n  }\n  .link-100-hover:hover {\n    color: var(--link-color);\n  }\n  .underline-offset-1 {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-1-hover:hover {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-2 {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-2-hover:hover {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-3 {\n    text-underline-offset: 0.375em;\n  }\n  .underline-offset-3-hover:hover {\n    text-underline-offset: 0.375em;\n  }\n  .underline-primary {\n    text-decoration-color: light-dark(var(--blue-600), var(--blue-400));\n  }\n  .underline-accent {\n    text-decoration-color: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  }\n  .underline-success {\n    text-decoration-color: light-dark(var(--green-600), var(--green-400));\n  }\n  .underline-danger {\n    text-decoration-color: light-dark(var(--red-600), var(--red-400));\n  }\n  .underline-warning {\n    text-decoration-color: light-dark(var(--yellow-700), var(--yellow-400));\n  }\n  .underline-info {\n    text-decoration-color: light-dark(var(--cyan-600), var(--cyan-400));\n  }\n  .underline-inverse {\n    text-decoration-color: light-dark(var(--gray-900), var(--gray-200));\n  }\n  .underline-secondary {\n    text-decoration-color: light-dark(var(--gray-600), var(--gray-400));\n  }\n  .underline-10 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .underline-10-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .underline-20 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .underline-20-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .underline-30 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .underline-30-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .underline-40 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .underline-40-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .underline-50 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .underline-50-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .underline-60 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .underline-60-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .underline-70 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .underline-70-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .underline-80 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .underline-80-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .underline-90 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .underline-90-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .underline-100 {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-100-hover:hover {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-thickness-1 {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-1-hover:hover {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-2 {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-2-hover:hover {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-3 {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-3-hover:hover {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-4 {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-4-hover:hover {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-5 {\n    text-decoration-thickness: 5px;\n  }\n  .underline-thickness-5-hover:hover {\n    text-decoration-thickness: 5px;\n  }\n  .bg-primary {\n    --bg: var(--blue-500);\n    background-color: var(--bg);\n  }\n  .bg-accent {\n    --bg: var(--indigo-500);\n    background-color: var(--bg);\n  }\n  .bg-success {\n    --bg: var(--green-500);\n    background-color: var(--bg);\n  }\n  .bg-danger {\n    --bg: var(--red-500);\n    background-color: var(--bg);\n  }\n  .bg-warning {\n    --bg: var(--yellow-500);\n    background-color: var(--bg);\n  }\n  .bg-info {\n    --bg: var(--cyan-500);\n    background-color: var(--bg);\n  }\n  .bg-inverse {\n    --bg: light-dark(var(--gray-900), var(--gray-025));\n    background-color: var(--bg);\n  }\n  .bg-secondary {\n    --bg: light-dark(var(--gray-100), var(--gray-600));\n    background-color: var(--bg);\n  }\n  .bg-body {\n    --bg: light-dark(var(--white), var(--gray-975));\n    background-color: var(--bg);\n  }\n  .bg-1 {\n    --bg: light-dark(var(--gray-025), var(--gray-950));\n    background-color: var(--bg);\n  }\n  .bg-2 {\n    --bg: light-dark(var(--gray-050), var(--gray-900));\n    background-color: var(--bg);\n  }\n  .bg-3 {\n    --bg: light-dark(var(--gray-100), var(--gray-800));\n    background-color: var(--bg);\n  }\n  .bg-4 {\n    --bg: light-dark(var(--gray-200), var(--gray-700));\n    background-color: var(--bg);\n  }\n  .bg-white {\n    --bg: var(--white);\n    background-color: var(--bg);\n  }\n  .bg-black {\n    --bg: var(--black);\n    background-color: var(--bg);\n  }\n  .bg-transparent {\n    --bg: transparent;\n    background-color: var(--bg);\n  }\n  .bg-inherit {\n    --bg: inherit;\n    background-color: var(--bg);\n  }\n  .bg-subtle-primary {\n    --bg: light-dark(var(--blue-100), var(--blue-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-accent {\n    --bg: light-dark(var(--indigo-100), var(--indigo-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-success {\n    --bg: light-dark(var(--green-100), var(--green-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-danger {\n    --bg: light-dark(var(--red-100), var(--red-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-warning {\n    --bg: light-dark(var(--yellow-100), var(--yellow-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-info {\n    --bg: light-dark(var(--cyan-100), var(--cyan-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-inverse {\n    --bg: light-dark(var(--gray-100), var(--gray-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-secondary {\n    --bg: light-dark(var(--gray-050), var(--gray-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-primary {\n    --bg: light-dark(var(--blue-200), var(--blue-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-accent {\n    --bg: light-dark(var(--indigo-200), var(--indigo-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-success {\n    --bg: light-dark(var(--green-200), var(--green-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-danger {\n    --bg: light-dark(var(--red-200), var(--red-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-warning {\n    --bg: light-dark(var(--yellow-200), var(--yellow-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-info {\n    --bg: light-dark(var(--cyan-200), var(--cyan-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-inverse {\n    --bg: light-dark(var(--gray-200), var(--gray-300));\n    background-color: var(--bg);\n  }\n  .bg-muted-secondary {\n    --bg: light-dark(var(--gray-100), var(--gray-700));\n    background-color: var(--bg);\n  }\n  .bg-10 {\n    background-color: color-mix(in oklch, var(--bg) 10%, transparent);\n  }\n  .bg-20 {\n    background-color: color-mix(in oklch, var(--bg) 20%, transparent);\n  }\n  .bg-30 {\n    background-color: color-mix(in oklch, var(--bg) 30%, transparent);\n  }\n  .bg-40 {\n    background-color: color-mix(in oklch, var(--bg) 40%, transparent);\n  }\n  .bg-50 {\n    background-color: color-mix(in oklch, var(--bg) 50%, transparent);\n  }\n  .bg-60 {\n    background-color: color-mix(in oklch, var(--bg) 60%, transparent);\n  }\n  .bg-70 {\n    background-color: color-mix(in oklch, var(--bg) 70%, transparent);\n  }\n  .bg-80 {\n    background-color: color-mix(in oklch, var(--bg) 80%, transparent);\n  }\n  .bg-90 {\n    background-color: color-mix(in oklch, var(--bg) 90%, transparent);\n  }\n  .bg-100 {\n    background-color: var(--bg);\n  }\n  .theme-contrast {\n    background-color: var(--theme-bg);\n    color: var(--theme-contrast);\n  }\n  .theme-subtle {\n    background-color: var(--theme-bg-subtle);\n    color: var(--theme-text);\n  }\n  .theme-muted {\n    background-color: var(--theme-bg-muted);\n    color: var(--theme-text-emphasis);\n  }\n  .theme-border {\n    border: var(--border-width) solid var(--theme-border);\n  }\n  .bg-gradient {\n    background-image: var(--gradient);\n  }\n  .user-select-all {\n    user-select: all;\n  }\n  .user-select-auto {\n    user-select: auto;\n  }\n  .user-select-none {\n    user-select: none;\n  }\n  .pe-none {\n    pointer-events: none;\n  }\n  .pe-auto {\n    pointer-events: auto;\n  }\n  .rounded {\n    border-radius: var(--border-radius);\n  }\n  .rounded-0 {\n    border-radius: 0;\n  }\n  .rounded-1 {\n    border-radius: var(--border-radius-sm);\n  }\n  .rounded-2 {\n    border-radius: var(--border-radius);\n  }\n  .rounded-3 {\n    border-radius: var(--border-radius-lg);\n  }\n  .rounded-4 {\n    border-radius: var(--border-radius-xl);\n  }\n  .rounded-5 {\n    border-radius: var(--border-radius-2xl);\n  }\n  .rounded-circle {\n    border-radius: 50%;\n  }\n  .rounded-pill {\n    border-radius: var(--border-radius-pill);\n  }\n  .rounded-top {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-top-0 {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .rounded-top-1 {\n    border-start-start-radius: var(--border-radius-sm);\n    border-start-end-radius: var(--border-radius-sm);\n  }\n  .rounded-top-2 {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-top-3 {\n    border-start-start-radius: var(--border-radius-lg);\n    border-start-end-radius: var(--border-radius-lg);\n  }\n  .rounded-top-4 {\n    border-start-start-radius: var(--border-radius-xl);\n    border-start-end-radius: var(--border-radius-xl);\n  }\n  .rounded-top-5 {\n    border-start-start-radius: var(--border-radius-2xl);\n    border-start-end-radius: var(--border-radius-2xl);\n  }\n  .rounded-top-circle {\n    border-start-start-radius: 50%;\n    border-start-end-radius: 50%;\n  }\n  .rounded-top-pill {\n    border-start-start-radius: var(--border-radius-pill);\n    border-start-end-radius: var(--border-radius-pill);\n  }\n  .rounded-end {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-end-0 {\n    border-end-end-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-end-1 {\n    border-end-end-radius: var(--border-radius-sm);\n    border-end-start-radius: var(--border-radius-sm);\n  }\n  .rounded-end-2 {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-end-3 {\n    border-end-end-radius: var(--border-radius-lg);\n    border-end-start-radius: var(--border-radius-lg);\n  }\n  .rounded-end-4 {\n    border-end-end-radius: var(--border-radius-xl);\n    border-end-start-radius: var(--border-radius-xl);\n  }\n  .rounded-end-5 {\n    border-end-end-radius: var(--border-radius-2xl);\n    border-end-start-radius: var(--border-radius-2xl);\n  }\n  .rounded-end-circle {\n    border-end-end-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-end-pill {\n    border-end-end-radius: var(--border-radius-pill);\n    border-end-start-radius: var(--border-radius-pill);\n  }\n  .rounded-bottom {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-bottom-0 {\n    border-end-end-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-bottom-1 {\n    border-end-end-radius: var(--border-radius-sm);\n    border-end-start-radius: var(--border-radius-sm);\n  }\n  .rounded-bottom-2 {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-bottom-3 {\n    border-end-end-radius: var(--border-radius-lg);\n    border-end-start-radius: var(--border-radius-lg);\n  }\n  .rounded-bottom-4 {\n    border-end-end-radius: var(--border-radius-xl);\n    border-end-start-radius: var(--border-radius-xl);\n  }\n  .rounded-bottom-5 {\n    border-end-end-radius: var(--border-radius-2xl);\n    border-end-start-radius: var(--border-radius-2xl);\n  }\n  .rounded-bottom-circle {\n    border-end-end-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-bottom-pill {\n    border-end-end-radius: var(--border-radius-pill);\n    border-end-start-radius: var(--border-radius-pill);\n  }\n  .rounded-start {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-start-0 {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .rounded-start-1 {\n    border-start-start-radius: var(--border-radius-sm);\n    border-start-end-radius: var(--border-radius-sm);\n  }\n  .rounded-start-2 {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-start-3 {\n    border-start-start-radius: var(--border-radius-lg);\n    border-start-end-radius: var(--border-radius-lg);\n  }\n  .rounded-start-4 {\n    border-start-start-radius: var(--border-radius-xl);\n    border-start-end-radius: var(--border-radius-xl);\n  }\n  .rounded-start-5 {\n    border-start-start-radius: var(--border-radius-2xl);\n    border-start-end-radius: var(--border-radius-2xl);\n  }\n  .rounded-start-circle {\n    border-start-start-radius: 50%;\n    border-start-end-radius: 50%;\n  }\n  .rounded-start-pill {\n    border-start-start-radius: var(--border-radius-pill);\n    border-start-end-radius: var(--border-radius-pill);\n  }\n  .visible {\n    visibility: visible;\n  }\n  .invisible {\n    visibility: hidden;\n  }\n  .z-n1 {\n    z-index: -1;\n  }\n  .z-0 {\n    z-index: 0;\n  }\n  .z-1 {\n    z-index: 1;\n  }\n  .z-2 {\n    z-index: 2;\n  }\n  .z-3 {\n    z-index: 3;\n  }\n  @media (width >= 576px) {\n    .float-sm-start {\n      float: inline-start;\n    }\n    .float-sm-end {\n      float: inline-end;\n    }\n    .float-sm-none {\n      float: none;\n    }\n    .object-fit-sm-contain {\n      object-fit: contain;\n    }\n    .object-fit-sm-cover {\n      object-fit: cover;\n    }\n    .object-fit-sm-fill {\n      object-fit: fill;\n    }\n    .object-fit-sm-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-sm-none {\n      object-fit: none;\n    }\n    .d-sm-inline {\n      display: inline;\n    }\n    .d-sm-inline-block {\n      display: inline-block;\n    }\n    .d-sm-block {\n      display: block;\n    }\n    .d-sm-grid {\n      display: grid;\n    }\n    .d-sm-inline-grid {\n      display: inline-grid;\n    }\n    .d-sm-table {\n      display: table;\n    }\n    .d-sm-table-row {\n      display: table-row;\n    }\n    .d-sm-table-cell {\n      display: table-cell;\n    }\n    .d-sm-flex {\n      display: flex;\n    }\n    .d-sm-inline-flex {\n      display: inline-flex;\n    }\n    .d-sm-contents {\n      display: contents;\n    }\n    .d-sm-flow-root {\n      display: flow-root;\n    }\n    .d-sm-none {\n      display: none;\n    }\n    .flex-sm-fill {\n      flex: 1 1 auto;\n    }\n    .flex-sm-row {\n      flex-direction: row;\n    }\n    .flex-sm-column {\n      flex-direction: column;\n    }\n    .flex-sm-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-sm-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-sm-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-sm-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-sm-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-sm-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-sm-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-sm-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-sm-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-sm-start {\n      justify-content: flex-start;\n    }\n    .justify-content-sm-end {\n      justify-content: flex-end;\n    }\n    .justify-content-sm-center {\n      justify-content: center;\n    }\n    .justify-content-sm-between {\n      justify-content: space-between;\n    }\n    .justify-content-sm-around {\n      justify-content: space-around;\n    }\n    .justify-content-sm-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-sm-start {\n      justify-items: start;\n    }\n    .justify-items-sm-end {\n      justify-items: end;\n    }\n    .justify-items-sm-center {\n      justify-items: center;\n    }\n    .justify-items-sm-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-sm-start {\n      justify-self: flex-start;\n    }\n    .justify-self-sm-end {\n      justify-self: flex-end;\n    }\n    .justify-self-sm-center {\n      justify-self: center;\n    }\n    .align-items-sm-start {\n      align-items: flex-start;\n    }\n    .align-items-sm-end {\n      align-items: flex-end;\n    }\n    .align-items-sm-center {\n      align-items: center;\n    }\n    .align-items-sm-baseline {\n      align-items: baseline;\n    }\n    .align-items-sm-stretch {\n      align-items: stretch;\n    }\n    .align-content-sm-start {\n      align-content: flex-start;\n    }\n    .align-content-sm-end {\n      align-content: flex-end;\n    }\n    .align-content-sm-center {\n      align-content: center;\n    }\n    .align-content-sm-between {\n      align-content: space-between;\n    }\n    .align-content-sm-around {\n      align-content: space-around;\n    }\n    .align-content-sm-stretch {\n      align-content: stretch;\n    }\n    .align-self-sm-auto {\n      align-self: auto;\n    }\n    .align-self-sm-start {\n      align-self: flex-start;\n    }\n    .align-self-sm-end {\n      align-self: flex-end;\n    }\n    .align-self-sm-center {\n      align-self: center;\n    }\n    .align-self-sm-baseline {\n      align-self: baseline;\n    }\n    .align-self-sm-stretch {\n      align-self: stretch;\n    }\n    .place-items-sm-start {\n      place-items: start;\n    }\n    .place-items-sm-end {\n      place-items: end;\n    }\n    .place-items-sm-center {\n      place-items: center;\n    }\n    .place-items-sm-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-sm-3 {\n      --columns: 3;\n    }\n    .grid-cols-sm-4 {\n      --columns: 4;\n    }\n    .grid-cols-sm-6 {\n      --columns: 6;\n    }\n    .grid-cols-sm-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-sm-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-sm-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-sm-dense {\n      grid-auto-flow: dense;\n    }\n    .order-sm-first {\n      order: -1;\n    }\n    .order-sm-0 {\n      order: 0;\n    }\n    .order-sm-1 {\n      order: 1;\n    }\n    .order-sm-2 {\n      order: 2;\n    }\n    .order-sm-3 {\n      order: 3;\n    }\n    .order-sm-4 {\n      order: 4;\n    }\n    .order-sm-5 {\n      order: 5;\n    }\n    .order-sm-last {\n      order: 6;\n    }\n    .m-sm--2 {\n      margin: -0.5rem;\n    }\n    .m-sm--1 {\n      margin: -0.25rem;\n    }\n    .m-sm-0 {\n      margin: 0;\n    }\n    .m-sm-1 {\n      margin: 0.25rem;\n    }\n    .m-sm-2 {\n      margin: 0.5rem;\n    }\n    .m-sm-3 {\n      margin: 1rem;\n    }\n    .m-sm-4 {\n      margin: 1.5rem;\n    }\n    .m-sm-5 {\n      margin: 3rem;\n    }\n    .m-sm-auto {\n      margin: auto;\n    }\n    .mx-sm--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-sm--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-sm-0 {\n      margin-inline: 0;\n    }\n    .mx-sm-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-sm-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-sm-3 {\n      margin-inline: 1rem;\n    }\n    .mx-sm-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-sm-5 {\n      margin-inline: 3rem;\n    }\n    .mx-sm-auto {\n      margin-inline: auto;\n    }\n    .my-sm--2 {\n      margin-block: -0.5rem;\n    }\n    .my-sm--1 {\n      margin-block: -0.25rem;\n    }\n    .my-sm-0 {\n      margin-block: 0;\n    }\n    .my-sm-1 {\n      margin-block: 0.25rem;\n    }\n    .my-sm-2 {\n      margin-block: 0.5rem;\n    }\n    .my-sm-3 {\n      margin-block: 1rem;\n    }\n    .my-sm-4 {\n      margin-block: 1.5rem;\n    }\n    .my-sm-5 {\n      margin-block: 3rem;\n    }\n    .my-sm-auto {\n      margin-block: auto;\n    }\n    .mt-sm--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-sm--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-sm-0 {\n      margin-block-start: 0;\n    }\n    .mt-sm-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-sm-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-sm-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-sm-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-sm-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-sm-auto {\n      margin-block-start: auto;\n    }\n    .me-sm--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-sm--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-sm-0 {\n      margin-inline-end: 0;\n    }\n    .me-sm-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-sm-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-sm-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-sm-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-sm-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-sm-auto {\n      margin-inline-end: auto;\n    }\n    .mb-sm--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-sm--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-sm-0 {\n      margin-block-end: 0;\n    }\n    .mb-sm-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-sm-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-sm-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-sm-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-sm-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-sm-auto {\n      margin-block-end: auto;\n    }\n    .ms-sm--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-sm--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-sm-0 {\n      margin-inline-start: 0;\n    }\n    .ms-sm-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-sm-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-sm-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-sm-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-sm-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-sm-auto {\n      margin-inline-start: auto;\n    }\n    .p-sm--2 {\n      padding: -0.5rem;\n    }\n    .p-sm--1 {\n      padding: -0.25rem;\n    }\n    .p-sm-0 {\n      padding: 0;\n    }\n    .p-sm-1 {\n      padding: 0.25rem;\n    }\n    .p-sm-2 {\n      padding: 0.5rem;\n    }\n    .p-sm-3 {\n      padding: 1rem;\n    }\n    .p-sm-4 {\n      padding: 1.5rem;\n    }\n    .p-sm-5 {\n      padding: 3rem;\n    }\n    .px-sm--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-sm--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-sm-0 {\n      padding-inline: 0;\n    }\n    .px-sm-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-sm-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-sm-3 {\n      padding-inline: 1rem;\n    }\n    .px-sm-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-sm-5 {\n      padding-inline: 3rem;\n    }\n    .py-sm--2 {\n      padding-block: -0.5rem;\n    }\n    .py-sm--1 {\n      padding-block: -0.25rem;\n    }\n    .py-sm-0 {\n      padding-block: 0;\n    }\n    .py-sm-1 {\n      padding-block: 0.25rem;\n    }\n    .py-sm-2 {\n      padding-block: 0.5rem;\n    }\n    .py-sm-3 {\n      padding-block: 1rem;\n    }\n    .py-sm-4 {\n      padding-block: 1.5rem;\n    }\n    .py-sm-5 {\n      padding-block: 3rem;\n    }\n    .pt-sm--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-sm--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-sm-0 {\n      padding-block-start: 0;\n    }\n    .pt-sm-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-sm-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-sm-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-sm-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-sm-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-sm--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-sm--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-sm-0 {\n      padding-inline-end: 0;\n    }\n    .pe-sm-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-sm-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-sm-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-sm-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-sm-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-sm--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-sm--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-sm-0 {\n      padding-block-end: 0;\n    }\n    .pb-sm-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-sm-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-sm-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-sm-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-sm-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-sm--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-sm--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-sm-0 {\n      padding-inline-start: 0;\n    }\n    .ps-sm-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-sm-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-sm-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-sm-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-sm-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-sm--2 {\n      gap: -0.5rem;\n    }\n    .gap-sm--1 {\n      gap: -0.25rem;\n    }\n    .gap-sm-0 {\n      gap: 0;\n    }\n    .gap-sm-1 {\n      gap: 0.25rem;\n    }\n    .gap-sm-2 {\n      gap: 0.5rem;\n    }\n    .gap-sm-3 {\n      gap: 1rem;\n    }\n    .gap-sm-4 {\n      gap: 1.5rem;\n    }\n    .gap-sm-5 {\n      gap: 3rem;\n    }\n    .row-gap-sm--2 {\n      row-gap: -0.5rem;\n    }\n    .row-gap-sm--1 {\n      row-gap: -0.25rem;\n    }\n    .row-gap-sm-0 {\n      row-gap: 0;\n    }\n    .row-gap-sm-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-sm-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-sm-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-sm-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-sm-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-sm--2 {\n      column-gap: -0.5rem;\n    }\n    .column-gap-sm--1 {\n      column-gap: -0.25rem;\n    }\n    .column-gap-sm-0 {\n      column-gap: 0;\n    }\n    .column-gap-sm-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-sm-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-sm-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-sm-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-sm-5 {\n      column-gap: 3rem;\n    }\n    .text-sm-start {\n      text-align: start;\n    }\n    .text-sm-end {\n      text-align: end;\n    }\n    .text-sm-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 768px) {\n    .float-md-start {\n      float: inline-start;\n    }\n    .float-md-end {\n      float: inline-end;\n    }\n    .float-md-none {\n      float: none;\n    }\n    .object-fit-md-contain {\n      object-fit: contain;\n    }\n    .object-fit-md-cover {\n      object-fit: cover;\n    }\n    .object-fit-md-fill {\n      object-fit: fill;\n    }\n    .object-fit-md-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-md-none {\n      object-fit: none;\n    }\n    .d-md-inline {\n      display: inline;\n    }\n    .d-md-inline-block {\n      display: inline-block;\n    }\n    .d-md-block {\n      display: block;\n    }\n    .d-md-grid {\n      display: grid;\n    }\n    .d-md-inline-grid {\n      display: inline-grid;\n    }\n    .d-md-table {\n      display: table;\n    }\n    .d-md-table-row {\n      display: table-row;\n    }\n    .d-md-table-cell {\n      display: table-cell;\n    }\n    .d-md-flex {\n      display: flex;\n    }\n    .d-md-inline-flex {\n      display: inline-flex;\n    }\n    .d-md-contents {\n      display: contents;\n    }\n    .d-md-flow-root {\n      display: flow-root;\n    }\n    .d-md-none {\n      display: none;\n    }\n    .flex-md-fill {\n      flex: 1 1 auto;\n    }\n    .flex-md-row {\n      flex-direction: row;\n    }\n    .flex-md-column {\n      flex-direction: column;\n    }\n    .flex-md-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-md-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-md-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-md-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-md-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-md-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-md-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-md-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-md-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-md-start {\n      justify-content: flex-start;\n    }\n    .justify-content-md-end {\n      justify-content: flex-end;\n    }\n    .justify-content-md-center {\n      justify-content: center;\n    }\n    .justify-content-md-between {\n      justify-content: space-between;\n    }\n    .justify-content-md-around {\n      justify-content: space-around;\n    }\n    .justify-content-md-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-md-start {\n      justify-items: start;\n    }\n    .justify-items-md-end {\n      justify-items: end;\n    }\n    .justify-items-md-center {\n      justify-items: center;\n    }\n    .justify-items-md-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-md-start {\n      justify-self: flex-start;\n    }\n    .justify-self-md-end {\n      justify-self: flex-end;\n    }\n    .justify-self-md-center {\n      justify-self: center;\n    }\n    .align-items-md-start {\n      align-items: flex-start;\n    }\n    .align-items-md-end {\n      align-items: flex-end;\n    }\n    .align-items-md-center {\n      align-items: center;\n    }\n    .align-items-md-baseline {\n      align-items: baseline;\n    }\n    .align-items-md-stretch {\n      align-items: stretch;\n    }\n    .align-content-md-start {\n      align-content: flex-start;\n    }\n    .align-content-md-end {\n      align-content: flex-end;\n    }\n    .align-content-md-center {\n      align-content: center;\n    }\n    .align-content-md-between {\n      align-content: space-between;\n    }\n    .align-content-md-around {\n      align-content: space-around;\n    }\n    .align-content-md-stretch {\n      align-content: stretch;\n    }\n    .align-self-md-auto {\n      align-self: auto;\n    }\n    .align-self-md-start {\n      align-self: flex-start;\n    }\n    .align-self-md-end {\n      align-self: flex-end;\n    }\n    .align-self-md-center {\n      align-self: center;\n    }\n    .align-self-md-baseline {\n      align-self: baseline;\n    }\n    .align-self-md-stretch {\n      align-self: stretch;\n    }\n    .place-items-md-start {\n      place-items: start;\n    }\n    .place-items-md-end {\n      place-items: end;\n    }\n    .place-items-md-center {\n      place-items: center;\n    }\n    .place-items-md-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-md-3 {\n      --columns: 3;\n    }\n    .grid-cols-md-4 {\n      --columns: 4;\n    }\n    .grid-cols-md-6 {\n      --columns: 6;\n    }\n    .grid-cols-md-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-md-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-md-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-md-dense {\n      grid-auto-flow: dense;\n    }\n    .order-md-first {\n      order: -1;\n    }\n    .order-md-0 {\n      order: 0;\n    }\n    .order-md-1 {\n      order: 1;\n    }\n    .order-md-2 {\n      order: 2;\n    }\n    .order-md-3 {\n      order: 3;\n    }\n    .order-md-4 {\n      order: 4;\n    }\n    .order-md-5 {\n      order: 5;\n    }\n    .order-md-last {\n      order: 6;\n    }\n    .m-md--2 {\n      margin: -0.5rem;\n    }\n    .m-md--1 {\n      margin: -0.25rem;\n    }\n    .m-md-0 {\n      margin: 0;\n    }\n    .m-md-1 {\n      margin: 0.25rem;\n    }\n    .m-md-2 {\n      margin: 0.5rem;\n    }\n    .m-md-3 {\n      margin: 1rem;\n    }\n    .m-md-4 {\n      margin: 1.5rem;\n    }\n    .m-md-5 {\n      margin: 3rem;\n    }\n    .m-md-auto {\n      margin: auto;\n    }\n    .mx-md--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-md--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-md-0 {\n      margin-inline: 0;\n    }\n    .mx-md-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-md-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-md-3 {\n      margin-inline: 1rem;\n    }\n    .mx-md-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-md-5 {\n      margin-inline: 3rem;\n    }\n    .mx-md-auto {\n      margin-inline: auto;\n    }\n    .my-md--2 {\n      margin-block: -0.5rem;\n    }\n    .my-md--1 {\n      margin-block: -0.25rem;\n    }\n    .my-md-0 {\n      margin-block: 0;\n    }\n    .my-md-1 {\n      margin-block: 0.25rem;\n    }\n    .my-md-2 {\n      margin-block: 0.5rem;\n    }\n    .my-md-3 {\n      margin-block: 1rem;\n    }\n    .my-md-4 {\n      margin-block: 1.5rem;\n    }\n    .my-md-5 {\n      margin-block: 3rem;\n    }\n    .my-md-auto {\n      margin-block: auto;\n    }\n    .mt-md--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-md--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-md-0 {\n      margin-block-start: 0;\n    }\n    .mt-md-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-md-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-md-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-md-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-md-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-md-auto {\n      margin-block-start: auto;\n    }\n    .me-md--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-md--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-md-0 {\n      margin-inline-end: 0;\n    }\n    .me-md-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-md-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-md-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-md-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-md-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-md-auto {\n      margin-inline-end: auto;\n    }\n    .mb-md--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-md--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-md-0 {\n      margin-block-end: 0;\n    }\n    .mb-md-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-md-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-md-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-md-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-md-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-md-auto {\n      margin-block-end: auto;\n    }\n    .ms-md--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-md--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-md-0 {\n      margin-inline-start: 0;\n    }\n    .ms-md-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-md-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-md-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-md-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-md-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-md-auto {\n      margin-inline-start: auto;\n    }\n    .p-md--2 {\n      padding: -0.5rem;\n    }\n    .p-md--1 {\n      padding: -0.25rem;\n    }\n    .p-md-0 {\n      padding: 0;\n    }\n    .p-md-1 {\n      padding: 0.25rem;\n    }\n    .p-md-2 {\n      padding: 0.5rem;\n    }\n    .p-md-3 {\n      padding: 1rem;\n    }\n    .p-md-4 {\n      padding: 1.5rem;\n    }\n    .p-md-5 {\n      padding: 3rem;\n    }\n    .px-md--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-md--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-md-0 {\n      padding-inline: 0;\n    }\n    .px-md-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-md-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-md-3 {\n      padding-inline: 1rem;\n    }\n    .px-md-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-md-5 {\n      padding-inline: 3rem;\n    }\n    .py-md--2 {\n      padding-block: -0.5rem;\n    }\n    .py-md--1 {\n      padding-block: -0.25rem;\n    }\n    .py-md-0 {\n      padding-block: 0;\n    }\n    .py-md-1 {\n      padding-block: 0.25rem;\n    }\n    .py-md-2 {\n      padding-block: 0.5rem;\n    }\n    .py-md-3 {\n      padding-block: 1rem;\n    }\n    .py-md-4 {\n      padding-block: 1.5rem;\n    }\n    .py-md-5 {\n      padding-block: 3rem;\n    }\n    .pt-md--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-md--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-md-0 {\n      padding-block-start: 0;\n    }\n    .pt-md-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-md-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-md-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-md-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-md-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-md--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-md--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-md-0 {\n      padding-inline-end: 0;\n    }\n    .pe-md-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-md-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-md-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-md-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-md-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-md--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-md--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-md-0 {\n      padding-block-end: 0;\n    }\n    .pb-md-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-md-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-md-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-md-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-md-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-md--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-md--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-md-0 {\n      padding-inline-start: 0;\n    }\n    .ps-md-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-md-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-md-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-md-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-md-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-md--2 {\n      gap: -0.5rem;\n    }\n    .gap-md--1 {\n      gap: -0.25rem;\n    }\n    .gap-md-0 {\n      gap: 0;\n    }\n    .gap-md-1 {\n      gap: 0.25rem;\n    }\n    .gap-md-2 {\n      gap: 0.5rem;\n    }\n    .gap-md-3 {\n      gap: 1rem;\n    }\n    .gap-md-4 {\n      gap: 1.5rem;\n    }\n    .gap-md-5 {\n      gap: 3rem;\n    }\n    .row-gap-md--2 {\n      row-gap: -0.5rem;\n    }\n    .row-gap-md--1 {\n      row-gap: -0.25rem;\n    }\n    .row-gap-md-0 {\n      row-gap: 0;\n    }\n    .row-gap-md-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-md-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-md-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-md-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-md-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-md--2 {\n      column-gap: -0.5rem;\n    }\n    .column-gap-md--1 {\n      column-gap: -0.25rem;\n    }\n    .column-gap-md-0 {\n      column-gap: 0;\n    }\n    .column-gap-md-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-md-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-md-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-md-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-md-5 {\n      column-gap: 3rem;\n    }\n    .text-md-start {\n      text-align: start;\n    }\n    .text-md-end {\n      text-align: end;\n    }\n    .text-md-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1024px) {\n    .float-lg-start {\n      float: inline-start;\n    }\n    .float-lg-end {\n      float: inline-end;\n    }\n    .float-lg-none {\n      float: none;\n    }\n    .object-fit-lg-contain {\n      object-fit: contain;\n    }\n    .object-fit-lg-cover {\n      object-fit: cover;\n    }\n    .object-fit-lg-fill {\n      object-fit: fill;\n    }\n    .object-fit-lg-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-lg-none {\n      object-fit: none;\n    }\n    .d-lg-inline {\n      display: inline;\n    }\n    .d-lg-inline-block {\n      display: inline-block;\n    }\n    .d-lg-block {\n      display: block;\n    }\n    .d-lg-grid {\n      display: grid;\n    }\n    .d-lg-inline-grid {\n      display: inline-grid;\n    }\n    .d-lg-table {\n      display: table;\n    }\n    .d-lg-table-row {\n      display: table-row;\n    }\n    .d-lg-table-cell {\n      display: table-cell;\n    }\n    .d-lg-flex {\n      display: flex;\n    }\n    .d-lg-inline-flex {\n      display: inline-flex;\n    }\n    .d-lg-contents {\n      display: contents;\n    }\n    .d-lg-flow-root {\n      display: flow-root;\n    }\n    .d-lg-none {\n      display: none;\n    }\n    .flex-lg-fill {\n      flex: 1 1 auto;\n    }\n    .flex-lg-row {\n      flex-direction: row;\n    }\n    .flex-lg-column {\n      flex-direction: column;\n    }\n    .flex-lg-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-lg-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-lg-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-lg-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-lg-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-lg-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-lg-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-lg-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-lg-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-lg-start {\n      justify-content: flex-start;\n    }\n    .justify-content-lg-end {\n      justify-content: flex-end;\n    }\n    .justify-content-lg-center {\n      justify-content: center;\n    }\n    .justify-content-lg-between {\n      justify-content: space-between;\n    }\n    .justify-content-lg-around {\n      justify-content: space-around;\n    }\n    .justify-content-lg-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-lg-start {\n      justify-items: start;\n    }\n    .justify-items-lg-end {\n      justify-items: end;\n    }\n    .justify-items-lg-center {\n      justify-items: center;\n    }\n    .justify-items-lg-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-lg-start {\n      justify-self: flex-start;\n    }\n    .justify-self-lg-end {\n      justify-self: flex-end;\n    }\n    .justify-self-lg-center {\n      justify-self: center;\n    }\n    .align-items-lg-start {\n      align-items: flex-start;\n    }\n    .align-items-lg-end {\n      align-items: flex-end;\n    }\n    .align-items-lg-center {\n      align-items: center;\n    }\n    .align-items-lg-baseline {\n      align-items: baseline;\n    }\n    .align-items-lg-stretch {\n      align-items: stretch;\n    }\n    .align-content-lg-start {\n      align-content: flex-start;\n    }\n    .align-content-lg-end {\n      align-content: flex-end;\n    }\n    .align-content-lg-center {\n      align-content: center;\n    }\n    .align-content-lg-between {\n      align-content: space-between;\n    }\n    .align-content-lg-around {\n      align-content: space-around;\n    }\n    .align-content-lg-stretch {\n      align-content: stretch;\n    }\n    .align-self-lg-auto {\n      align-self: auto;\n    }\n    .align-self-lg-start {\n      align-self: flex-start;\n    }\n    .align-self-lg-end {\n      align-self: flex-end;\n    }\n    .align-self-lg-center {\n      align-self: center;\n    }\n    .align-self-lg-baseline {\n      align-self: baseline;\n    }\n    .align-self-lg-stretch {\n      align-self: stretch;\n    }\n    .place-items-lg-start {\n      place-items: start;\n    }\n    .place-items-lg-end {\n      place-items: end;\n    }\n    .place-items-lg-center {\n      place-items: center;\n    }\n    .place-items-lg-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-lg-3 {\n      --columns: 3;\n    }\n    .grid-cols-lg-4 {\n      --columns: 4;\n    }\n    .grid-cols-lg-6 {\n      --columns: 6;\n    }\n    .grid-cols-lg-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-lg-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-lg-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-lg-dense {\n      grid-auto-flow: dense;\n    }\n    .order-lg-first {\n      order: -1;\n    }\n    .order-lg-0 {\n      order: 0;\n    }\n    .order-lg-1 {\n      order: 1;\n    }\n    .order-lg-2 {\n      order: 2;\n    }\n    .order-lg-3 {\n      order: 3;\n    }\n    .order-lg-4 {\n      order: 4;\n    }\n    .order-lg-5 {\n      order: 5;\n    }\n    .order-lg-last {\n      order: 6;\n    }\n    .m-lg--2 {\n      margin: -0.5rem;\n    }\n    .m-lg--1 {\n      margin: -0.25rem;\n    }\n    .m-lg-0 {\n      margin: 0;\n    }\n    .m-lg-1 {\n      margin: 0.25rem;\n    }\n    .m-lg-2 {\n      margin: 0.5rem;\n    }\n    .m-lg-3 {\n      margin: 1rem;\n    }\n    .m-lg-4 {\n      margin: 1.5rem;\n    }\n    .m-lg-5 {\n      margin: 3rem;\n    }\n    .m-lg-auto {\n      margin: auto;\n    }\n    .mx-lg--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-lg--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-lg-0 {\n      margin-inline: 0;\n    }\n    .mx-lg-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-lg-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-lg-3 {\n      margin-inline: 1rem;\n    }\n    .mx-lg-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-lg-5 {\n      margin-inline: 3rem;\n    }\n    .mx-lg-auto {\n      margin-inline: auto;\n    }\n    .my-lg--2 {\n      margin-block: -0.5rem;\n    }\n    .my-lg--1 {\n      margin-block: -0.25rem;\n    }\n    .my-lg-0 {\n      margin-block: 0;\n    }\n    .my-lg-1 {\n      margin-block: 0.25rem;\n    }\n    .my-lg-2 {\n      margin-block: 0.5rem;\n    }\n    .my-lg-3 {\n      margin-block: 1rem;\n    }\n    .my-lg-4 {\n      margin-block: 1.5rem;\n    }\n    .my-lg-5 {\n      margin-block: 3rem;\n    }\n    .my-lg-auto {\n      margin-block: auto;\n    }\n    .mt-lg--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-lg--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-lg-0 {\n      margin-block-start: 0;\n    }\n    .mt-lg-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-lg-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-lg-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-lg-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-lg-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-lg-auto {\n      margin-block-start: auto;\n    }\n    .me-lg--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-lg--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-lg-0 {\n      margin-inline-end: 0;\n    }\n    .me-lg-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-lg-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-lg-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-lg-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-lg-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-lg-auto {\n      margin-inline-end: auto;\n    }\n    .mb-lg--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-lg--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-lg-0 {\n      margin-block-end: 0;\n    }\n    .mb-lg-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-lg-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-lg-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-lg-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-lg-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-lg-auto {\n      margin-block-end: auto;\n    }\n    .ms-lg--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-lg--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-lg-0 {\n      margin-inline-start: 0;\n    }\n    .ms-lg-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-lg-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-lg-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-lg-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-lg-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-lg-auto {\n      margin-inline-start: auto;\n    }\n    .p-lg--2 {\n      padding: -0.5rem;\n    }\n    .p-lg--1 {\n      padding: -0.25rem;\n    }\n    .p-lg-0 {\n      padding: 0;\n    }\n    .p-lg-1 {\n      padding: 0.25rem;\n    }\n    .p-lg-2 {\n      padding: 0.5rem;\n    }\n    .p-lg-3 {\n      padding: 1rem;\n    }\n    .p-lg-4 {\n      padding: 1.5rem;\n    }\n    .p-lg-5 {\n      padding: 3rem;\n    }\n    .px-lg--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-lg--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-lg-0 {\n      padding-inline: 0;\n    }\n    .px-lg-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-lg-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-lg-3 {\n      padding-inline: 1rem;\n    }\n    .px-lg-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-lg-5 {\n      padding-inline: 3rem;\n    }\n    .py-lg--2 {\n      padding-block: -0.5rem;\n    }\n    .py-lg--1 {\n      padding-block: -0.25rem;\n    }\n    .py-lg-0 {\n      padding-block: 0;\n    }\n    .py-lg-1 {\n      padding-block: 0.25rem;\n    }\n    .py-lg-2 {\n      padding-block: 0.5rem;\n    }\n    .py-lg-3 {\n      padding-block: 1rem;\n    }\n    .py-lg-4 {\n      padding-block: 1.5rem;\n    }\n    .py-lg-5 {\n      padding-block: 3rem;\n    }\n    .pt-lg--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-lg--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-lg-0 {\n      padding-block-start: 0;\n    }\n    .pt-lg-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-lg-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-lg-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-lg-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-lg-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-lg--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-lg--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-lg-0 {\n      padding-inline-end: 0;\n    }\n    .pe-lg-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-lg-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-lg-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-lg-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-lg-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-lg--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-lg--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-lg-0 {\n      padding-block-end: 0;\n    }\n    .pb-lg-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-lg-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-lg-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-lg-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-lg-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-lg--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-lg--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-lg-0 {\n      padding-inline-start: 0;\n    }\n    .ps-lg-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-lg-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-lg-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-lg-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-lg-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-lg--2 {\n      gap: -0.5rem;\n    }\n    .gap-lg--1 {\n      gap: -0.25rem;\n    }\n    .gap-lg-0 {\n      gap: 0;\n    }\n    .gap-lg-1 {\n      gap: 0.25rem;\n    }\n    .gap-lg-2 {\n      gap: 0.5rem;\n    }\n    .gap-lg-3 {\n      gap: 1rem;\n    }\n    .gap-lg-4 {\n      gap: 1.5rem;\n    }\n    .gap-lg-5 {\n      gap: 3rem;\n    }\n    .row-gap-lg--2 {\n      row-gap: -0.5rem;\n    }\n    .row-gap-lg--1 {\n      row-gap: -0.25rem;\n    }\n    .row-gap-lg-0 {\n      row-gap: 0;\n    }\n    .row-gap-lg-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-lg-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-lg-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-lg-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-lg-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-lg--2 {\n      column-gap: -0.5rem;\n    }\n    .column-gap-lg--1 {\n      column-gap: -0.25rem;\n    }\n    .column-gap-lg-0 {\n      column-gap: 0;\n    }\n    .column-gap-lg-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-lg-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-lg-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-lg-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-lg-5 {\n      column-gap: 3rem;\n    }\n    .text-lg-start {\n      text-align: start;\n    }\n    .text-lg-end {\n      text-align: end;\n    }\n    .text-lg-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1280px) {\n    .float-xl-start {\n      float: inline-start;\n    }\n    .float-xl-end {\n      float: inline-end;\n    }\n    .float-xl-none {\n      float: none;\n    }\n    .object-fit-xl-contain {\n      object-fit: contain;\n    }\n    .object-fit-xl-cover {\n      object-fit: cover;\n    }\n    .object-fit-xl-fill {\n      object-fit: fill;\n    }\n    .object-fit-xl-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-xl-none {\n      object-fit: none;\n    }\n    .d-xl-inline {\n      display: inline;\n    }\n    .d-xl-inline-block {\n      display: inline-block;\n    }\n    .d-xl-block {\n      display: block;\n    }\n    .d-xl-grid {\n      display: grid;\n    }\n    .d-xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-xl-table {\n      display: table;\n    }\n    .d-xl-table-row {\n      display: table-row;\n    }\n    .d-xl-table-cell {\n      display: table-cell;\n    }\n    .d-xl-flex {\n      display: flex;\n    }\n    .d-xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-xl-contents {\n      display: contents;\n    }\n    .d-xl-flow-root {\n      display: flow-root;\n    }\n    .d-xl-none {\n      display: none;\n    }\n    .flex-xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-xl-row {\n      flex-direction: row;\n    }\n    .flex-xl-column {\n      flex-direction: column;\n    }\n    .flex-xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-xl-center {\n      justify-content: center;\n    }\n    .justify-content-xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-xl-start {\n      justify-items: start;\n    }\n    .justify-items-xl-end {\n      justify-items: end;\n    }\n    .justify-items-xl-center {\n      justify-items: center;\n    }\n    .justify-items-xl-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-xl-start {\n      justify-self: flex-start;\n    }\n    .justify-self-xl-end {\n      justify-self: flex-end;\n    }\n    .justify-self-xl-center {\n      justify-self: center;\n    }\n    .align-items-xl-start {\n      align-items: flex-start;\n    }\n    .align-items-xl-end {\n      align-items: flex-end;\n    }\n    .align-items-xl-center {\n      align-items: center;\n    }\n    .align-items-xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-xl-start {\n      align-content: flex-start;\n    }\n    .align-content-xl-end {\n      align-content: flex-end;\n    }\n    .align-content-xl-center {\n      align-content: center;\n    }\n    .align-content-xl-between {\n      align-content: space-between;\n    }\n    .align-content-xl-around {\n      align-content: space-around;\n    }\n    .align-content-xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-xl-auto {\n      align-self: auto;\n    }\n    .align-self-xl-start {\n      align-self: flex-start;\n    }\n    .align-self-xl-end {\n      align-self: flex-end;\n    }\n    .align-self-xl-center {\n      align-self: center;\n    }\n    .align-self-xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-xl-start {\n      place-items: start;\n    }\n    .place-items-xl-end {\n      place-items: end;\n    }\n    .place-items-xl-center {\n      place-items: center;\n    }\n    .place-items-xl-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-xl-3 {\n      --columns: 3;\n    }\n    .grid-cols-xl-4 {\n      --columns: 4;\n    }\n    .grid-cols-xl-6 {\n      --columns: 6;\n    }\n    .grid-cols-xl-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-xl-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-xl-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-xl-dense {\n      grid-auto-flow: dense;\n    }\n    .order-xl-first {\n      order: -1;\n    }\n    .order-xl-0 {\n      order: 0;\n    }\n    .order-xl-1 {\n      order: 1;\n    }\n    .order-xl-2 {\n      order: 2;\n    }\n    .order-xl-3 {\n      order: 3;\n    }\n    .order-xl-4 {\n      order: 4;\n    }\n    .order-xl-5 {\n      order: 5;\n    }\n    .order-xl-last {\n      order: 6;\n    }\n    .m-xl--2 {\n      margin: -0.5rem;\n    }\n    .m-xl--1 {\n      margin: -0.25rem;\n    }\n    .m-xl-0 {\n      margin: 0;\n    }\n    .m-xl-1 {\n      margin: 0.25rem;\n    }\n    .m-xl-2 {\n      margin: 0.5rem;\n    }\n    .m-xl-3 {\n      margin: 1rem;\n    }\n    .m-xl-4 {\n      margin: 1.5rem;\n    }\n    .m-xl-5 {\n      margin: 3rem;\n    }\n    .m-xl-auto {\n      margin: auto;\n    }\n    .mx-xl--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-xl--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-xl-0 {\n      margin-inline: 0;\n    }\n    .mx-xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-xl-auto {\n      margin-inline: auto;\n    }\n    .my-xl--2 {\n      margin-block: -0.5rem;\n    }\n    .my-xl--1 {\n      margin-block: -0.25rem;\n    }\n    .my-xl-0 {\n      margin-block: 0;\n    }\n    .my-xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-xl-3 {\n      margin-block: 1rem;\n    }\n    .my-xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-xl-5 {\n      margin-block: 3rem;\n    }\n    .my-xl-auto {\n      margin-block: auto;\n    }\n    .mt-xl--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-xl--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-xl-auto {\n      margin-block-start: auto;\n    }\n    .me-xl--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-xl--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-xl--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-xl--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-xl--2 {\n      padding: -0.5rem;\n    }\n    .p-xl--1 {\n      padding: -0.25rem;\n    }\n    .p-xl-0 {\n      padding: 0;\n    }\n    .p-xl-1 {\n      padding: 0.25rem;\n    }\n    .p-xl-2 {\n      padding: 0.5rem;\n    }\n    .p-xl-3 {\n      padding: 1rem;\n    }\n    .p-xl-4 {\n      padding: 1.5rem;\n    }\n    .p-xl-5 {\n      padding: 3rem;\n    }\n    .px-xl--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-xl--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-xl-0 {\n      padding-inline: 0;\n    }\n    .px-xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-xl--2 {\n      padding-block: -0.5rem;\n    }\n    .py-xl--1 {\n      padding-block: -0.25rem;\n    }\n    .py-xl-0 {\n      padding-block: 0;\n    }\n    .py-xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-xl-3 {\n      padding-block: 1rem;\n    }\n    .py-xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-xl--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-xl--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-xl--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-xl--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-xl--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-xl--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-xl--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-xl--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-xl-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-xl--2 {\n      gap: -0.5rem;\n    }\n    .gap-xl--1 {\n      gap: -0.25rem;\n    }\n    .gap-xl-0 {\n      gap: 0;\n    }\n    .gap-xl-1 {\n      gap: 0.25rem;\n    }\n    .gap-xl-2 {\n      gap: 0.5rem;\n    }\n    .gap-xl-3 {\n      gap: 1rem;\n    }\n    .gap-xl-4 {\n      gap: 1.5rem;\n    }\n    .gap-xl-5 {\n      gap: 3rem;\n    }\n    .row-gap-xl--2 {\n      row-gap: -0.5rem;\n    }\n    .row-gap-xl--1 {\n      row-gap: -0.25rem;\n    }\n    .row-gap-xl-0 {\n      row-gap: 0;\n    }\n    .row-gap-xl-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-xl-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-xl-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-xl-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-xl-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-xl--2 {\n      column-gap: -0.5rem;\n    }\n    .column-gap-xl--1 {\n      column-gap: -0.25rem;\n    }\n    .column-gap-xl-0 {\n      column-gap: 0;\n    }\n    .column-gap-xl-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-xl-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-xl-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-xl-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-xl-5 {\n      column-gap: 3rem;\n    }\n    .text-xl-start {\n      text-align: start;\n    }\n    .text-xl-end {\n      text-align: end;\n    }\n    .text-xl-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1536px) {\n    .float-2xl-start {\n      float: inline-start;\n    }\n    .float-2xl-end {\n      float: inline-end;\n    }\n    .float-2xl-none {\n      float: none;\n    }\n    .object-fit-2xl-contain {\n      object-fit: contain;\n    }\n    .object-fit-2xl-cover {\n      object-fit: cover;\n    }\n    .object-fit-2xl-fill {\n      object-fit: fill;\n    }\n    .object-fit-2xl-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-2xl-none {\n      object-fit: none;\n    }\n    .d-2xl-inline {\n      display: inline;\n    }\n    .d-2xl-inline-block {\n      display: inline-block;\n    }\n    .d-2xl-block {\n      display: block;\n    }\n    .d-2xl-grid {\n      display: grid;\n    }\n    .d-2xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-2xl-table {\n      display: table;\n    }\n    .d-2xl-table-row {\n      display: table-row;\n    }\n    .d-2xl-table-cell {\n      display: table-cell;\n    }\n    .d-2xl-flex {\n      display: flex;\n    }\n    .d-2xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-2xl-contents {\n      display: contents;\n    }\n    .d-2xl-flow-root {\n      display: flow-root;\n    }\n    .d-2xl-none {\n      display: none;\n    }\n    .flex-2xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-2xl-row {\n      flex-direction: row;\n    }\n    .flex-2xl-column {\n      flex-direction: column;\n    }\n    .flex-2xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-2xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-2xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-2xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-2xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-2xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-2xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-2xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-2xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-2xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-2xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-2xl-center {\n      justify-content: center;\n    }\n    .justify-content-2xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-2xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-2xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-2xl-start {\n      justify-items: start;\n    }\n    .justify-items-2xl-end {\n      justify-items: end;\n    }\n    .justify-items-2xl-center {\n      justify-items: center;\n    }\n    .justify-items-2xl-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-2xl-start {\n      justify-self: flex-start;\n    }\n    .justify-self-2xl-end {\n      justify-self: flex-end;\n    }\n    .justify-self-2xl-center {\n      justify-self: center;\n    }\n    .align-items-2xl-start {\n      align-items: flex-start;\n    }\n    .align-items-2xl-end {\n      align-items: flex-end;\n    }\n    .align-items-2xl-center {\n      align-items: center;\n    }\n    .align-items-2xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-2xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-2xl-start {\n      align-content: flex-start;\n    }\n    .align-content-2xl-end {\n      align-content: flex-end;\n    }\n    .align-content-2xl-center {\n      align-content: center;\n    }\n    .align-content-2xl-between {\n      align-content: space-between;\n    }\n    .align-content-2xl-around {\n      align-content: space-around;\n    }\n    .align-content-2xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-2xl-auto {\n      align-self: auto;\n    }\n    .align-self-2xl-start {\n      align-self: flex-start;\n    }\n    .align-self-2xl-end {\n      align-self: flex-end;\n    }\n    .align-self-2xl-center {\n      align-self: center;\n    }\n    .align-self-2xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-2xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-2xl-start {\n      place-items: start;\n    }\n    .place-items-2xl-end {\n      place-items: end;\n    }\n    .place-items-2xl-center {\n      place-items: center;\n    }\n    .place-items-2xl-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-2xl-3 {\n      --columns: 3;\n    }\n    .grid-cols-2xl-4 {\n      --columns: 4;\n    }\n    .grid-cols-2xl-6 {\n      --columns: 6;\n    }\n    .grid-cols-2xl-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-2xl-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-2xl-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-2xl-dense {\n      grid-auto-flow: dense;\n    }\n    .order-2xl-first {\n      order: -1;\n    }\n    .order-2xl-0 {\n      order: 0;\n    }\n    .order-2xl-1 {\n      order: 1;\n    }\n    .order-2xl-2 {\n      order: 2;\n    }\n    .order-2xl-3 {\n      order: 3;\n    }\n    .order-2xl-4 {\n      order: 4;\n    }\n    .order-2xl-5 {\n      order: 5;\n    }\n    .order-2xl-last {\n      order: 6;\n    }\n    .m-2xl--2 {\n      margin: -0.5rem;\n    }\n    .m-2xl--1 {\n      margin: -0.25rem;\n    }\n    .m-2xl-0 {\n      margin: 0;\n    }\n    .m-2xl-1 {\n      margin: 0.25rem;\n    }\n    .m-2xl-2 {\n      margin: 0.5rem;\n    }\n    .m-2xl-3 {\n      margin: 1rem;\n    }\n    .m-2xl-4 {\n      margin: 1.5rem;\n    }\n    .m-2xl-5 {\n      margin: 3rem;\n    }\n    .m-2xl-auto {\n      margin: auto;\n    }\n    .mx-2xl--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-2xl--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-2xl-0 {\n      margin-inline: 0;\n    }\n    .mx-2xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-2xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-2xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-2xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-2xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-2xl-auto {\n      margin-inline: auto;\n    }\n    .my-2xl--2 {\n      margin-block: -0.5rem;\n    }\n    .my-2xl--1 {\n      margin-block: -0.25rem;\n    }\n    .my-2xl-0 {\n      margin-block: 0;\n    }\n    .my-2xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-2xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-2xl-3 {\n      margin-block: 1rem;\n    }\n    .my-2xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-2xl-5 {\n      margin-block: 3rem;\n    }\n    .my-2xl-auto {\n      margin-block: auto;\n    }\n    .mt-2xl--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-2xl--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-2xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-2xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-2xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-2xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-2xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-2xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-2xl-auto {\n      margin-block-start: auto;\n    }\n    .me-2xl--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-2xl--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-2xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-2xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-2xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-2xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-2xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-2xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-2xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-2xl--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-2xl--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-2xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-2xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-2xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-2xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-2xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-2xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-2xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-2xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-2xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-2xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-2xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-2xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-2xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-2xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-2xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-2xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-2xl--2 {\n      padding: -0.5rem;\n    }\n    .p-2xl--1 {\n      padding: -0.25rem;\n    }\n    .p-2xl-0 {\n      padding: 0;\n    }\n    .p-2xl-1 {\n      padding: 0.25rem;\n    }\n    .p-2xl-2 {\n      padding: 0.5rem;\n    }\n    .p-2xl-3 {\n      padding: 1rem;\n    }\n    .p-2xl-4 {\n      padding: 1.5rem;\n    }\n    .p-2xl-5 {\n      padding: 3rem;\n    }\n    .px-2xl--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-2xl--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-2xl-0 {\n      padding-inline: 0;\n    }\n    .px-2xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-2xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-2xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-2xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-2xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-2xl--2 {\n      padding-block: -0.5rem;\n    }\n    .py-2xl--1 {\n      padding-block: -0.25rem;\n    }\n    .py-2xl-0 {\n      padding-block: 0;\n    }\n    .py-2xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-2xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-2xl-3 {\n      padding-block: 1rem;\n    }\n    .py-2xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-2xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-2xl--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-2xl--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-2xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-2xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-2xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-2xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-2xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-2xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-2xl--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-2xl--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-2xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-2xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-2xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-2xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-2xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-2xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-2xl--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-2xl--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-2xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-2xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-2xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-2xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-2xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-2xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-2xl--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-2xl--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-2xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-2xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-2xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-2xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-2xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-2xl-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-2xl--2 {\n      gap: -0.5rem;\n    }\n    .gap-2xl--1 {\n      gap: -0.25rem;\n    }\n    .gap-2xl-0 {\n      gap: 0;\n    }\n    .gap-2xl-1 {\n      gap: 0.25rem;\n    }\n    .gap-2xl-2 {\n      gap: 0.5rem;\n    }\n    .gap-2xl-3 {\n      gap: 1rem;\n    }\n    .gap-2xl-4 {\n      gap: 1.5rem;\n    }\n    .gap-2xl-5 {\n      gap: 3rem;\n    }\n    .row-gap-2xl--2 {\n      row-gap: -0.5rem;\n    }\n    .row-gap-2xl--1 {\n      row-gap: -0.25rem;\n    }\n    .row-gap-2xl-0 {\n      row-gap: 0;\n    }\n    .row-gap-2xl-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-2xl-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-2xl-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-2xl-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-2xl-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-2xl--2 {\n      column-gap: -0.5rem;\n    }\n    .column-gap-2xl--1 {\n      column-gap: -0.25rem;\n    }\n    .column-gap-2xl-0 {\n      column-gap: 0;\n    }\n    .column-gap-2xl-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-2xl-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-2xl-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-2xl-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-2xl-5 {\n      column-gap: 3rem;\n    }\n    .text-2xl-start {\n      text-align: start;\n    }\n    .text-2xl-end {\n      text-align: end;\n    }\n    .text-2xl-center {\n      text-align: center;\n    }\n  }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */\n","$file: \"\" !default;\n\n/*!\n  * Bootstrap #{$file} v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n","// stylelint-disable hue-degree-notation, @stylistic/number-leading-zero\n\n@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// Easily convert colors to oklch() with https://oklch.com/\n\n$white: #fff !default;\n$black: #000 !default;\n\n// scss-docs-start colors-list\n$blue: oklch(60% 0.24 240) !default;\n$indigo: oklch(56% 0.26 288) !default;\n$violet: oklch(56% 0.24 300) !default;\n$purple: oklch(56% 0.24 320) !default;\n$pink: oklch(60% 0.22 4) !default;\n$red: oklch(60% 0.22 20) !default;\n$orange: oklch(70% 0.22 52) !default;\n$amber: oklch(79% 0.2 78) !default;\n$yellow: oklch(88% 0.24 88) !default;\n$lime: oklch(65% 0.24 135) !default;\n$green: oklch(64% 0.22 160) !default;\n$teal: oklch(68% 0.22 190) !default;\n$cyan: oklch(69% 0.22 220) !default;\n$brown: oklch(60% 0.12 54) !default;\n$gray: oklch(60% 0.02 245) !default;\n$pewter: oklch(65% 0.01 290) !default;\n// scss-docs-end colors-list\n\n// scss-docs-start colors-map\n$colors: () !default;\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$colors: defaults(\n  (\n    \"blue\": $blue,\n    \"indigo\": $indigo,\n    \"violet\": $violet,\n    \"purple\": $purple,\n    \"pink\": $pink,\n    \"red\": $red,\n    \"orange\": $orange,\n    \"amber\": $amber,\n    \"yellow\": $yellow,\n    \"lime\": $lime,\n    \"green\": $green,\n    \"teal\": $teal,\n    \"cyan\": $cyan,\n    \"brown\": $brown,\n    \"gray\": $gray,\n    \"pewter\": $pewter,\n  ),\n  $colors\n);\n// scss-docs-end colors-map\n\n// scss-docs-start color-mix-options\n$color-mix-space: lab !default;\n$tint-color: var(--white) !default;\n$shade-color: var(--black) !default;\n\n$color-tints: (\n  \"025\": 94%,\n  \"050\": 90%,\n  \"100\": 80%,\n  \"200\": 60%,\n  \"300\": 40%,\n  \"400\": 20%,\n) !default;\n\n$color-shades: (\n  \"600\": 16%,\n  \"700\": 32%,\n  \"800\": 48%,\n  \"900\": 64%,\n  \"950\": 76%,\n  \"975\": 88%,\n) !default;\n// scss-docs-end color-mix-options\n\n// scss-docs-start color-tokens\n$color-tokens: () !default;\n\n$-color-defaults: () !default;\n@each $color, $value in $colors {\n  @each $stop, $percent in $color-tints {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$tint-color} #{$percent}, #{$value}));\n  }\n  $-color-defaults: map.set($-color-defaults, --#{$color}-500, #{$value});\n  @each $stop, $percent in $color-shades {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$shade-color} #{$percent}, #{$value}));\n  }\n}\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$color-tokens: defaults($-color-defaults, $color-tokens);\n// scss-docs-end color-tokens\n\n:root {\n  @include tokens($color-tokens);\n}\n","// Mixin to output tokens as CSS custom properties\n\n// scss-docs-start mixin-tokens\n@mixin tokens($map) {\n  @each $prop, $value in $map {\n    #{$prop}: #{$value};\n  }\n}\n// scss-docs-end mixin-tokens\n","@use \"sass:map\";\n@use \"colors\" as *;\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"theme\" as *;\n@use \"mixins/tokens\" as *;\n@use \"forms/form-variables\" as *;\n\n// mdo-do: do we need theme?\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n\n$root-tokens: () !default;\n\n// scss-docs-start root-tokens\n// stylelint-disable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: defaults(\n  (\n    --black: #{$black},\n    --white: #{$white},\n\n    --gradient: #{$gradient},\n\n    // scss-docs-start root-font-size-variables\n    --font-size-base: 1rem,\n    --font-size-xs: .75rem,\n    --font-size-sm: .875rem,\n    --font-size-md: 1rem,\n    --font-size-lg: clamp(1.25rem, 1rem + .625vw, 1.5rem),\n    --font-size-xl: clamp(1.5rem, 1.1rem + .75vw, 1.75rem),\n    --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem),\n    --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem),\n    --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem),\n    --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem),\n    --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem),\n\n    --line-height-xs: 1.25,\n    --line-height-sm: 1.5,\n    --line-height-md: 1.5,\n    --line-height-lg: 1.5,\n    --line-height-xl: calc(2.5 / 1.75),\n    --line-height-2xl: calc(3 / 2.25),\n    --line-height-3xl: 1.2,\n    --line-height-4xl: 1.1,\n    --line-height-5xl: 1.1,\n    --line-height-6xl: 1,\n    // scss-docs-end root-font-size-variables\n\n    // scss-docs-start root-font-weight-variables\n    --font-weight-lighter: lighter,\n    --font-weight-light: 300,\n    --font-weight-normal: 400,\n    --font-weight-medium: 500,\n    --font-weight-semibold: 600,\n    --font-weight-bold: 700,\n    --font-weight-bolder: bolder,\n    // scss-docs-end root-font-weight-variables\n\n    // scss-docs-start root-body-variables\n    --body-font-family: system-ui,\n    --body-font-size: var(--font-size-base),\n    --body-font-weight: #{$font-weight-base},\n    --body-line-height: #{$line-height-base},\n\n    --heading-color: #{$headings-color},\n\n    --hr-border-color: var(--border-color),\n\n    --link-color: light-dark(var(--primary-base), var(--primary-text)),\n    --link-decoration: #{$link-decoration},\n    --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000),\n\n    --font-mono: \"SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace\",\n    --code-font-size: 95%,\n    --code-color: var(--fg-2),\n\n    // scss-docs-start root-border-var\n    --border-width: #{$border-width},\n    --border-style: #{$border-style},\n    --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700)),\n    --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    // scss-docs-end root-border-var\n\n    // scss-docs-start root-border-radius-var\n    --border-radius: .5rem,\n    --border-radius-xs: .375rem,\n    --border-radius-sm: .5rem,\n    --border-radius-lg: .75rem,\n    --border-radius-xl: 1rem,\n    --border-radius-2xl: 2rem,\n    --border-radius-pill: 50rem,\n    // scss-docs-end root-border-radius-var\n\n    // scss-docs-start root-box-shadow-variables\n    --box-shadow: 0 .5rem 1rem rgb(0 0 0 / 15%),\n    --box-shadow-sm: 0 .125rem .25rem rgb(0 0 0 / 7.5%),\n    --box-shadow-lg: 0 1rem 3rem rgb(0 0 0 / 17.5%),\n    --box-shadow-inset: inset 0 1px 2px rgb(0 0 0 / 7.5%),\n    // scss-docs-end root-box-shadow-variables\n\n    --spacer: 1rem,\n\n    // scss-docs-start root-focus-variables\n    --focus-ring-width: 3px,\n    --focus-ring-offset: 1px,\n    --focus-ring-color: var(--primary-focus-ring),\n    --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color),\n    // scss-docs-end root-focus-variables\n\n    // scss-docs-start root-form-variables\n    --control-checked-bg: var(--primary-base),\n    --control-checked-border-color: var(--control-checked-bg),\n    --control-active-bg: var(--primary-base),\n    --control-active-border-color: var(--control-active-bg),\n    --control-disabled-bg: var(--bg-3),\n    --control-disabled-opacity: .65,\n\n    --btn-input-fg: var(--fg-body),\n    --btn-input-bg: var(--bg-body),\n\n    --btn-input-min-height: 2.375rem,\n    --btn-input-padding-y: .375rem,\n    --btn-input-padding-x: .75rem,\n    --btn-input-font-size: var(--font-size-base),\n    --btn-input-line-height: var(--line-height-base),\n    --btn-input-border-radius: var(--border-radius),\n\n    --btn-input-xs-min-height: 1.5rem,\n    --btn-input-xs-padding-y: .125rem,\n    --btn-input-xs-padding-x: .5rem,\n    --btn-input-xs-font-size: var(--font-size-xs),\n    --btn-input-xs-line-height: 1.125,\n    --btn-input-xs-border-radius: var(--border-radius-xs),\n\n    --btn-input-sm-min-height: 2rem,\n    --btn-input-sm-padding-y: .25rem,\n    --btn-input-sm-padding-x: .625rem,\n    --btn-input-sm-font-size: var(--font-size-sm),\n    --btn-input-sm-line-height: var(--line-height-sm),\n    --btn-input-sm-border-radius: var(--border-radius-sm),\n\n    --btn-input-lg-min-height: 2.75rem,\n    --btn-input-lg-padding-y: .5rem,\n    --btn-input-lg-padding-x: 1rem,\n    --btn-input-lg-font-size: var(--font-size-md),\n    --btn-input-lg-line-height: var(--line-height-md),\n    --btn-input-lg-border-radius: var(--border-radius-lg),\n    // scss-docs-end root-form-variables\n\n    // scss-docs-start root-form-validation-variables\n    --form-valid-color: #{$form-valid-color},\n    --form-valid-border-color: #{$form-valid-border-color},\n    --form-invalid-color: #{$form-invalid-color},\n    --form-invalid-border-color: #{$form-invalid-border-color},\n    // scss-docs-end root-form-validation-variables\n  ),\n  $root-tokens\n);\n// stylelint-enable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// scss-docs-end root-tokens\n\n// scss-docs-start root-theme-tokens\n// Generate semantic theme colors\n@each $color-name, $color-map in $theme-colors {\n  @each $key, $value in $color-map {\n    $root-tokens: map.set($root-tokens, --#{$color-name}-#{$key}, $value);\n  }\n}\n\n// Generate background tokens\n@each $key, $value in $theme-bgs {\n  $root-tokens: map.set($root-tokens, --bg-#{$key}, $value);\n}\n\n// Generate foreground tokens\n@each $key, $value in $theme-fgs {\n  $root-tokens: map.set($root-tokens, --fg-#{$key}, $value);\n}\n\n// Generate border tokens\n@each $key, $value in $theme-borders {\n  $root-tokens: map.set($root-tokens, --border-#{$key}, $value);\n}\n// scss-docs-end root-theme-tokens\n\n// Generate breakpoint tokens\n@each $name, $value in $breakpoints {\n  $root-tokens: map.set($root-tokens, --breakpoint-#{$name}, $value);\n}\n\n:root {\n  @include tokens($root-tokens);\n\n  color-scheme: light dark;\n}\n\n[data-bs-theme=\"dark\"] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=\"light\"] {\n  color-scheme: light;\n}\n","@use \"../colors\" as *;\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../variables\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n$reboot-kbd-tokens: () !default;\n\n// scss-docs-start reboot-kbd-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-kbd-tokens: defaults(\n  (\n    --kbd-padding-y: .125rem,\n    --kbd-padding-x: .25rem,\n    --kbd-font-size: var(--font-size-xs),\n    --kbd-color: var(--bg-body),\n    --kbd-bg: var(--fg-2),\n    --kbd-border-radius: var(--border-radius-sm),\n  ),\n  $reboot-kbd-tokens\n);\n// scss-docs-end reboot-kbd-tokens\n\n$reboot-mark-tokens: () !default;\n\n// scss-docs-start reboot-mark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-mark-tokens: defaults(\n  (\n    --mark-padding: .1875em,\n    --mark-color: var(--fg-body),\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900)),\n  ),\n  $reboot-mark-tokens\n);\n// scss-docs-end reboot-mark-tokens\n\n@layer reboot {\n  // Reboot\n  //\n  // Normalization of HTML elements, manually forked from Normalize.css to remove\n  // styles targeting irrelevant browsers while applying new styles.\n  //\n  // Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n  // Document\n  //\n  // Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n\n  // Root\n  //\n  // Ability to the value of the root font sizes, affecting the value of `rem`.\n  // null by default, thus nothing is generated.\n\n  :root {\n    // Assume browser default font-size of 16px, or a user's preference\n    accent-color: var(--primary-base);\n\n    @if $enable-smooth-scroll {\n      @media (prefers-reduced-motion: no-preference) {\n        scroll-behavior: smooth;\n      }\n    }\n  }\n\n  // Body\n  //\n  // 1. Remove the margin in all browsers.\n  // 2. As a best practice, apply a default `background-color`.\n  // 3. Prevent adjustments of font size after orientation changes in iOS.\n  // 4. Change the default tap highlight to be completely transparent in iOS.\n\n  // scss-docs-start reboot-body-rules\n  body {\n    margin: 0; // 1\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body); // 2\n    -webkit-text-size-adjust: 100%; // 3\n    -webkit-tap-highlight-color: rgba($black, 0); // 4\n  }\n  // scss-docs-end reboot-body-rules\n\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n\n  // Typography\n  //\n  // 1. Remove top margins from headings\n  //    By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n  //    margin for easier control within type scales as it avoids margin collapsing.\n\n  %heading {\n    margin-top: 0; // 1\n    margin-bottom: $headings-margin-bottom;\n    font-family: $headings-font-family;\n    font-style: $headings-font-style;\n    font-weight: $headings-font-weight;\n    line-height: $headings-line-height;\n    color: var(--heading-color);\n  }\n\n  h1,\n  .h1 {\n    @extend %heading;\n    font-size: $h1-font-size;\n  }\n\n  h2,\n  .h2 {\n    @extend %heading;\n    font-size: $h2-font-size;\n  }\n\n  h3,\n  .h3 {\n    @extend %heading;\n    font-size: $h3-font-size;\n  }\n\n  h4,\n  .h4 {\n    @extend %heading;\n    font-size: $h4-font-size;\n  }\n\n  h5,\n  .h5 {\n    @extend %heading;\n    font-size: $h5-font-size;\n  }\n\n  h6,\n  .h6 {\n    @extend %heading;\n    font-size: $h6-font-size;\n  }\n\n  // Reset margins on paragraphs\n  //\n  // Similarly, the top margin on `<p>`s get reset. However, we also reset the\n  // bottom margin to use `rem` units instead of `em`.\n\n  p {\n    margin-top: 0;\n    margin-bottom: $paragraph-margin-bottom;\n  }\n\n  // Abbreviations\n  //\n  // 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n  // 2. Add explicit cursor to indicate changed behavior.\n  // 3. Prevent the text-decoration to be skipped.\n\n  abbr[title] {\n    text-decoration: underline dotted; // 1\n    cursor: help; // 2\n    text-decoration-skip-ink: none; // 3\n  }\n\n  // Address\n\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n\n  // Lists\n\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n\n  dt {\n    font-weight: $dt-font-weight;\n  }\n\n  // 1. Undo browser default\n\n  dd {\n    margin-inline-start: 0; // 1\n    margin-bottom: .5rem;\n  }\n\n  // Blockquote\n\n  blockquote {\n    margin: 0 0 1rem;\n    > * {\n      margin-block: 0;\n    }\n  }\n\n  // Strong\n  //\n  // Add the correct font weight in Chrome, Edge, and Safari\n\n  b,\n  strong {\n    font-weight: $font-weight-bolder;\n  }\n\n  // Small\n  //\n  // Add the correct font size in all browsers\n\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n\n  // Mark\n\n  mark,\n  .mark {\n    @include tokens($reboot-mark-tokens);\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n\n  // Sub and Sup\n  //\n  // Prevent `sub` and `sup` elements from affecting the line height in\n  // all browsers.\n\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, .75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n\n  sub { bottom: -.25em; }\n  sup { top: -.5em; }\n\n  // Links\n\n  a {\n    color: var(--theme-text, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: $link-underline-offset;\n\n    &:hover {\n      // --link-color: var(--link-hover-color);\n      // --link-decoration: var(--link-hover-decoration, var(--link-decoration));\n      color: var(--theme-text-emphasis, var(--link-hover-color));\n      text-decoration: var(--link-hover-decoration, var(--link-decoration));\n    }\n  }\n\n  // And undo these styles for placeholder links/named anchors (without href).\n  // It would be more straightforward to just use a[href] in previous block, but that\n  // causes specificity issues in many other styles that are too complex to fix.\n  // See https://github.com/twbs/bootstrap/issues/19402\n\n  a:not([href]):not([class]) {\n    &,\n    &:hover {\n      color: inherit;\n      text-decoration: none;\n    }\n  }\n\n  // Code\n\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n  }\n\n  // 1. Remove browser default top margin\n  // 2. Reset browser default of `1em` to use `rem`s\n  // 3. Don't allow content to break outside\n\n  pre {\n    display: block;\n    margin-top: 0; // 1\n    margin-bottom: 1rem; // 2\n    overflow: auto; // 3\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n\n    // Account for some code outputs that place code tags in pre tags\n    code {\n      font-size: inherit;\n      color: inherit;\n      word-break: normal;\n    }\n  }\n\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n\n    // Streamline the style when inside anchors to avoid broken underline and more\n    a > & {\n      color: inherit;\n    }\n  }\n\n  kbd {\n    @include tokens($reboot-kbd-tokens);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    @include border-radius(var(--kbd-border-radius));\n\n    kbd {\n      padding: 0;\n      font-size: 1em;\n      font-weight: inherit; // mdo-do: check if this is needed\n    }\n  }\n\n  // Figures\n  //\n  // Apply a consistent margin strategy (matches our type styles).\n\n  figure {\n    margin: 0 0 1rem;\n  }\n\n  // Images and content\n\n  img,\n  svg {\n    vertical-align: middle;\n  }\n\n  // Tables\n  //\n  // Prevent double borders\n\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n\n  caption {\n    // padding-top: $table-cell-padding-y;\n    // padding-bottom: $table-cell-padding-y;\n    // color: $table-caption-color;\n    padding-block: .5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n\n  // 1. Removes font-weight bold by inheriting\n  // 2. Matches default `<td>` alignment by inheriting `text-align`.\n  // 3. Fix alignment for Safari\n\n  th {\n    // font-weight: $table-th-font-weight; // 1 // mdo-do: it's null by default. maybe we remove?\n    text-align: inherit; // 2\n    text-align: -webkit-match-parent; // 3\n  }\n\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n\n  // Forms\n  //\n  // 1. Allow labels to use `margin` for spacing.\n\n  label {\n    display: inline-block; // 1\n  }\n\n  // Remove the default `border-radius` that macOS Chrome adds.\n  // See https://github.com/twbs/bootstrap/issues/24093\n\n  button {\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 0;\n  }\n\n  // Explicitly remove focus outline in Chromium when it shouldn't be\n  // visible (e.g. as result of mouse click or touch tap). It already\n  // should be doing this automatically, but seems to currently be\n  // confused and applies its very visible two-tone outline anyway.\n\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n\n  // 1. Remove the margin in Firefox and Safari\n\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0; // 1\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n\n  // Remove the inheritance of text transform in Firefox\n  button,\n  select {\n    text-transform: none;\n  }\n  // Set the cursor for non-`<button>` buttons\n  //\n  // Details at https://github.com/twbs/bootstrap/pull/30562\n  [role=\"button\"] {\n    cursor: pointer;\n  }\n\n  select {\n    // Remove the inheritance of word-wrap in Safari.\n    // See https://github.com/twbs/bootstrap/issues/24990\n    word-wrap: normal;\n\n    // Undo the opacity change from Chrome\n    &:disabled {\n      opacity: 1;\n    }\n  }\n\n  // Remove the dropdown arrow only from text type inputs built with datalists in Chrome.\n  // See https://stackoverflow.com/a/54997118\n\n  [list]:not([type=\"date\"]):not([type=\"datetime-local\"]):not([type=\"month\"]):not([type=\"week\"]):not([type=\"time\"])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n\n  // 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n  //    controls in Android 4.\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n  // 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\n  button,\n  [type=\"button\"], // 1\n  [type=\"reset\"],\n  [type=\"submit\"] {\n    -webkit-appearance: button; // 2\n\n    @if $enable-button-pointers {\n      &:not(:disabled) {\n        cursor: pointer; // 3\n      }\n    }\n  }\n\n  // Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\n\n  ::-moz-focus-inner {\n    padding: 0;\n    border-style: none;\n  }\n\n  // 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\n  textarea {\n    resize: vertical; // 1\n  }\n\n  // 1. Browsers set a default `min-width: min-content;` on fieldsets,\n  //    unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n  //    So we reset that to ensure fieldsets behave more like a standard block element.\n  //    See https://github.com/twbs/bootstrap/issues/12359\n  //    and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n  // 2. Reset the default outline behavior of fieldsets so they don't affect page layout.\n\n  fieldset {\n    min-width: 0; // 1\n    padding: 0; // 2\n    margin: 0; // 2\n    border: 0; // 2\n  }\n\n  // 1. By using `float: inline-start`, the legend will behave like a block element.\n  //    This way the border of a fieldset wraps around the legend if present.\n  // 2. Fix wrapping bug.\n  //    See https://github.com/twbs/bootstrap/issues/29712\n\n  legend {\n    float: inline-start; // 1\n    width: 100%;\n    padding: 0;\n    margin-bottom: $legend-margin-bottom;\n    font-size: $legend-font-size;\n    font-weight: $legend-font-weight;\n    line-height: inherit;\n\n    + * {\n      clear: inline-start; // 2\n    }\n  }\n\n  // Fix height of inputs with a type of datetime-local, date, month, week, or time\n  // See https://github.com/twbs/bootstrap/issues/18842\n\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-ampm-field,\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n\n  ::-webkit-inner-spin-button {\n    height: auto;\n  }\n\n  // 1. This overrides the extra rounded corners on search inputs in iOS so that our\n  //    `.form-control` class can properly style them. Note that this cannot simply\n  //    be added to `.form-control` as it's not specific enough. For details, see\n  //    https://github.com/twbs/bootstrap/issues/11586.\n  // 2. Correct the outline style in Safari.\n\n  [type=\"search\"] {\n    -webkit-appearance: textfield; // 1\n    outline-offset: -2px; // 2\n\n    // 3. Better affordance and consistent appearance for search cancel button\n    &::-webkit-search-cancel-button {\n      cursor: pointer;\n      filter: grayscale(1);\n    }\n  }\n\n  // A few input types should stay LTR regardless of document direction\n  // See https://rtlstyling.com/posts/rtl-styling#form-inputs\n\n  [type=\"tel\"],\n  [type=\"url\"],\n  [type=\"email\"],\n  [type=\"number\"] {\n    direction: ltr;\n  }\n\n  // Remove the inner padding in Chrome and Safari on macOS.\n\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n\n  // Remove padding around color pickers in webkit browsers\n\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n\n  // 1. Inherit font family and line height for file input buttons\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n\n  ::file-selector-button {\n    font: inherit; // 1\n    -webkit-appearance: button; // 2\n  }\n\n  // Correct element displays\n\n  output {\n    display: inline-block;\n  }\n\n  // Remove border from iframe\n\n  iframe {\n    border: 0;\n  }\n\n  // Summary\n  //\n  // 1. Add the correct display in all browsers\n\n  summary {\n    display: list-item; // 1\n    cursor: pointer;\n  }\n\n  // Progress\n  //\n  // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\n  progress {\n    vertical-align: baseline;\n  }\n\n  // Hidden attribute\n  //\n  // Always hide an element with the `hidden` HTML attribute.\n\n  [hidden] {\n    display: none !important;\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n\n// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $btn-padding-y-lg.\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `<body>` element.\n\n// $body-text-align:           null !default;\n\n// Links\n//\n// Style anchor elements.\n\n// $link-color:                              var !default;\n$link-decoration:                         underline !default;\n$link-underline-offset:                   .2em !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap:               .375rem !default;\n$icon-link-underline-offset:  .25em !default;\n$icon-link-icon-size:         1em !default;\n$icon-link-icon-transition:   .2s ease-in-out transform !default;\n$icon-link-icon-transform:    translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n$border-style:                solid !default;\n$border-color:                color-mix(in oklch, var(--gray-100), var(--gray-200)) !default;\n// scss-docs-end border-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"auto\": auto,\n  \"1x1\": #{\"1 / 1\"},\n  \"4x3\": #{\"4 / 3\"},\n  \"16x9\": #{\"16 / 9\"},\n  \"21x9\": #{\"21 / 9\"}\n) !default;\n// scss-docs-end aspect-ratios\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// $font-family-sans-serif:      system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n// $font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// $font-family-base:            var(--font-sans-serif) !default;\n// $font-family-code:            var(--font-monospace) !default;\n\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-medium:          500 !default;\n$font-weight-semibold:        600 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n\n$h1-font-size: var(--font-size-3xl) !default;\n$h2-font-size: var(--font-size-2xl) !default;\n$h3-font-size: var(--font-size-xl) !default;\n$h4-font-size: var(--font-size-lg) !default;\n$h5-font-size: var(--font-size-md) !default;\n$h6-font-size: var(--font-size-sm) !default;\n// scss-docs-end font-variables\n\n// Font sizes with line-height for utilities\n$font-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$font-sizes: defaults(\n  (\n    \"xs\": (\n      \"font-size\": var(--font-size-xs),\n      \"line-height\": var(--line-height-xs)\n    ),\n    \"sm\": (\n      \"font-size\": var(--font-size-sm),\n      \"line-height\": var(--line-height-sm)\n    ),\n    \"md\": (\n      \"font-size\": var(--font-size-md),\n      \"line-height\": var(--line-height-md)\n    ),\n    \"lg\": (\n      \"font-size\": var(--font-size-lg),\n      \"line-height\": var(--line-height-lg)\n    ),\n    \"xl\": (\n      \"font-size\": var(--font-size-xl),\n      \"line-height\": var(--line-height-xl)\n    ),\n    \"2xl\": (\n      \"font-size\": var(--font-size-2xl),\n      \"line-height\": var(--line-height-2xl)\n    ),\n    \"3xl\": (\n      \"font-size\": var(--font-size-3xl),\n      \"line-height\": var(--line-height-3xl)\n    ),\n    \"4xl\": (\n      \"font-size\": var(--font-size-4xl),\n      \"line-height\": var(--line-height-4xl)\n    ),\n    \"5xl\": (\n      \"font-size\": var(--font-size-5xl),\n      \"line-height\": var(--line-height-5xl)\n    ),\n    \"6xl\": (\n      \"font-size\": var(--font-size-6xl),\n      \"line-height\": var(--line-height-6xl)\n    ),\n  ),\n  $font-sizes\n);\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start type-variables\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n// $list-inline-padding:         .5rem !default;\n// scss-docs-end type-variables\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown:                   1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-dialog:                     1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n$zindex-toast:                      1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n  n1: -1,\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n","@use \"sass:list\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n  $return: ();\n  @each $value in $radius {\n    @if meta.type-of($value) == number {\n      $return: list.append($return, math.max($value, 0));\n    } @else {\n      $return: list.append($return, $value);\n    }\n  }\n  @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: var(--border-radius), $fallback-border-radius: false) {\n  @if $enable-rounded {\n    border-radius: valid-radius($radius);\n  }\n  @else if $fallback-border-radius != false {\n    border-radius: $fallback-border-radius;\n  }\n}\n\n@mixin border-top-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n// scss-docs-end border-radius-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/lists\" as *;\n@use \"../mixins/tokens\" as *;\n\n$blockquote-tokens: () !default;\n\n// scss-docs-start blockquote-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$blockquote-tokens: defaults(\n  (\n    --blockquote-gap: calc(var(--spacer) / 2),\n    --blockquote-padding-x: var(--spacer),\n    --blockquote-margin-y: 1rem,\n    --blockquote-font-size: var(--font-size-md),\n    --blockquote-border-width: .25rem,\n    --blockquote-border-color: var(--border-color),\n    --blockquote-footer-font-size: var(--font-size-sm),\n    --blockquote-footer-color: var(--fg-3),\n  ),\n  $blockquote-tokens\n);\n// scss-docs-end blockquote-tokens\n\n@layer content {\n  //\n  // Lists\n  //\n\n  .list-unstyled {\n    @include list-unstyled();\n  }\n\n  // Inline turns list items into inline-block\n  .list-inline {\n    @include list-unstyled();\n  }\n  .list-inline-item {\n    display: inline-block;\n\n    &:not(:last-child) {\n      margin-inline-end: var(--list-inline-padding, var(--spacer) / 2);\n    }\n  }\n\n  //\n  // Misc\n  //\n\n  // Builds on `abbr`\n  .initialism {\n    font-size: var(--initialism-font-size, var(--font-size-xs));\n    text-transform: uppercase;\n  }\n\n  // Blockquotes\n  .blockquote {\n    @include tokens($blockquote-tokens);\n    display: flex;\n    flex-direction: column;\n    gap: var(--blockquote-gap);\n    padding-inline-start: var(--blockquote-padding-x);\n    margin-bottom: var(--blockquote-margin-y);\n    font-size: var(--blockquote-font-size);\n    border-inline-start: var(--blockquote-border-width) solid var(--blockquote-border-color);\n\n    > * {\n      margin-bottom: 0;\n    }\n  }\n\n  // stylelint-disable-next-line selector-no-qualifying-type\n  figure.blockquote {\n    blockquote {\n      margin-bottom: 0;\n    }\n  }\n\n  .blockquote-footer {\n    font-size: var(--blockquote-footer-font-size);\n    color: var(--blockquote-footer-color);\n\n    &::before {\n      content: \"\\2014\\00A0\"; // em dash, nbsp\n    }\n  }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n  padding-inline-start: 0;\n  list-style: none;\n}\n","@use \"sass:map\";\n@use \"../config\" as *;\n@use \"../variables\" as *;\n@use \"../functions\" as *;\n@use \"../layout/breakpoints\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$table-tokens: () !default;\n\n// scss-docs-start table-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$table-tokens: defaults(\n  (\n    --table-cell-padding-y: .5rem,\n    --table-cell-padding-x: .5rem,\n    --table-cell-vertical-align: top,\n    --table-color: var(--fg-body),\n    --table-bg: var(--bg-body),\n    --table-accent-bg: transparent,\n    --table-border-width: var(--border-width),\n    --table-border-color: var(--border-color),\n    --table-group-separator-color: currentcolor,\n    --table-striped-color: var(--table-color),\n    --table-striped-bg-factor: .05,\n    --table-striped-bg: color-mix(in srgb, var(--table-color) var(--table-striped-bg-factor), transparent),\n    --table-active-color: var(--table-color),\n    --table-active-bg-factor: .1,\n    --table-active-bg: color-mix(in srgb, var(--table-color) var(--table-active-bg-factor), transparent),\n    --table-hover-color: var(--table-color),\n    --table-hover-bg-factor: .075,\n    --table-hover-bg: color-mix(in srgb, var(--table-color) var(--table-hover-bg-factor), transparent),\n  ),\n  $table-tokens\n);\n// scss-docs-end table-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n//\n// Basic Bootstrap table\n//\n\n@layer content {\n  .table {\n    @include tokens($table-tokens);\n\n    // Reset needed for nesting tables\n    --table-color-type: initial;\n    --table-bg-type: initial;\n    --table-color-state: initial;\n    --table-bg-state: initial;\n    // End of reset\n\n    width: 100%;\n    margin-bottom: $spacer;\n    vertical-align: var(--table-cell-vertical-align);\n    border-color: var(--theme-border, var(--table-border-color));\n\n    // Target th & td\n    // We need the child combinator to prevent styles leaking to nested tables which doesn't have a `.table` class.\n    // We use the universal selectors here to simplify the selector (else we would need 6 different selectors).\n    // Another advantage is that this generates less code and makes the selector less specific making it easier to override.\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      padding: var(--table-cell-padding-y) var(--table-cell-padding-x);\n      // Following the precept of cascades: https://codepen.io/miriamsuzanne/full/vYNgodb\n      color: var(--table-color-state, var(--table-color-type, var(--theme-text, var(--table-color))));\n      background-color: var(--theme-bg-subtle, var(--table-bg));\n      border-block-end-width: var(--table-border-width);\n      box-shadow: inset 0 0 0 9999px var(--table-bg-state, var(--table-bg-type, var(--theme-bg-subtle, var(--table-accent-bg))));\n    }\n\n    > tbody {\n      vertical-align: inherit;\n    }\n\n    > thead {\n      vertical-align: bottom;\n    }\n  }\n\n  .table-group-divider {\n    border-block-start: calc(var(--table-border-width) * 2) solid var(--table-group-separator-color);\n  }\n\n  //\n  // Change placement of captions with a class\n  //\n\n  .caption-top {\n    caption-side: top;\n  }\n\n  //\n  // Condensed table w/ half padding\n  //\n\n  .table-sm {\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      --table-cell-padding-y: .25rem;\n      --table-cell-padding-x: .25rem;\n    }\n  }\n\n  // Border versions\n  //\n  // Add or remove borders all around the table and between all the columns.\n  //\n  // When borders are added on all sides of the cells, the corners can render odd when\n  // these borders do not have the same color or if they are semi-transparent.\n  // Therefore we add top and border bottoms to the `tr`s and left and right borders\n  // to the `td`s or `th`s\n\n  .table-bordered {\n    > :not(caption) > * {\n      border-width: var(--table-border-width) 0;\n\n      // stylelint-disable-next-line selector-max-universal\n      > * {\n        border-width: 0 var(--table-border-width);\n      }\n    }\n  }\n\n  .table-borderless {\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      border-block-end-width: 0;\n    }\n\n    > :not(:first-child) {\n      border-block-start-width: 0;\n    }\n  }\n\n  // Zebra-striping\n  //\n  // Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n  // For rows\n  .table-striped {\n    > tbody > tr:nth-of-type(#{$table-striped-order}) > * {\n      --table-color-type: var(--theme-text, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-striped-bg-factor), transparent);\n    }\n  }\n\n  // For columns\n  .table-striped-columns {\n    > :not(caption) > tr > :nth-child(#{$table-striped-columns-order}) {\n      --table-color-type: var(--theme-text, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-striped-bg-factor), transparent);\n    }\n  }\n\n  // Active table\n  //\n  // The `.table-active` class can be added to highlight rows or cells\n\n  .table-active {\n    --table-color-state: var(--theme-text, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-active-bg-factor), transparent);\n  }\n\n  // Hover effect\n  //\n  // Placed here since it has to come after the potential zebra striping\n\n  .table-hover {\n    > tbody > tr:hover > * {\n      --table-color-state: var(--theme-text, var(--table-hover-color));\n      --table-bg-state: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-hover-bg-factor), transparent);\n    }\n  }\n\n  // Responsive tables\n  //\n  // Generate series of `.table-responsive-*` classes for configuring the screen\n  // size of where your table will overflow.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-down($breakpoint) {\n      .table-responsive#{$infix} {\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n      }\n    }\n  }\n}\n","// Configuration\n//\n// Variables and settings not related to theme, components, and more go here. It does include layout.\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              true !default;\n$enable-gradients:            false !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        true !default;\n$enable-grid-classes:         true !default;\n$enable-container-classes:    true !default;\n$enable-cssgrid:              true !default;\n$enable-button-pointers:      true !default;\n$enable-validation-icons:     true !default;\n// $enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n\n$enable-dark-mode:            true !default;\n$color-mode-type:             data !default; // `data` or `media-query`\n\n// more to come here…\n\n$color-mode-type:          \"media-query\" !default;\n$color-contrast-dark:      #000 !default;\n$color-contrast-light:     #fff !default;\n$min-contrast-ratio:         4.5 !default;\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  -2: $spacer * -.5,\n  -1: $spacer * -.25,\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n$sizes: (\n  1: $spacer,\n  2: calc($spacer * 2),\n  3: calc($spacer * 3),\n  4: calc($spacer * 4),\n  5: calc($spacer * 5),\n  6: calc($spacer * 6),\n  7: calc($spacer * 7),\n  8: calc($spacer * 8),\n  9: calc($spacer * 9),\n  10: calc($spacer * 10),\n  11: calc($spacer * 11),\n  12: calc($spacer * 12),\n) !default;\n\n// Breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start breakpoints\n$breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 1024px,\n  xl: 1280px,\n  2xl: 1536px\n) !default;\n// scss-docs-end breakpoints\n\n// @include _assert-ascending($breakpoints, \"$breakpoints\");\n// @include _assert-starts-at-zero($breakpoints, \"$breakpoints\");\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-x: 1.5rem !default;\n$grid-gutter-y: 0 !default;\n$grid-row-columns: 6 !default;\n\n$gutters: $spacers !default;\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1200px,\n  2xl: 1440px\n) !default;\n// scss-docs-end container-max-widths\n\n$container-padding-x: $grid-gutter-x !default;\n\n$utilities: () !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"../config\" as *;\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px)\n//\n// The map defined in the `$breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl 2xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $breakpoints, $breakpoint-names: map.keys($breakpoints)) {\n  $n: list.index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoint-names}`\";\n  }\n  // Use @if/@else because list.nth would error if evaluated when $n equals list length\n  @if $n < list.length($breakpoint-names) {\n    @return list.nth($breakpoint-names, $n + 1);\n  } @else {\n    @return null;\n  }\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $breakpoints) {\n  $min: map.get($breakpoints, $name);\n  @return if(sass($min != 0): $min; else: null);\n}\n\n// Maximum breakpoint width for range media queries.\n// Returns the breakpoint value to use as an upper bound in range queries.\n//\n//    >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n//    >> breakpoint-max(xxl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    null\n@function breakpoint-max($name, $breakpoints: $breakpoints) {\n  @if $name == null {\n    @return null;\n  }\n  $max: map.get($breakpoints, $name);\n  @return if(sass($max and $max > 0): $max; else: null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $breakpoints) {\n  @return if(sass(breakpoint-min($name, $breakpoints) == null): \"\"; else: \"-#{$name}\");\n}\n\n// Iterate all breakpoints and provide the current name and infix.\n//\n//    @include loop-breakpoints-up() using ($breakpoint, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-up($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n    @content($breakpoint, $infix);\n  }\n}\n\n// Iterate all breakpoints and provide the current name, next name, and next infix.\n//\n//    @include loop-breakpoints-down() using ($breakpoint, $next, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-down($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $next: breakpoint-next($breakpoint, $breakpoints);\n    $infix: breakpoint-infix($next, $breakpoints);\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Backwards-compatible alias for next/down breakpoint loops.\n@mixin loop-breakpoints($breakpoints: $breakpoints) {\n  @include loop-breakpoints-down($breakpoints) using ($breakpoint, $next, $infix) {\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (width >= $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (width < $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n\n// Container queries\n//\n// Container queries allow elements to respond to the size of a containing element\n// rather than the viewport. These mixins mirror the media-breakpoint-* mixins above.\n//\n// scss-docs-start container-query-mixins\n\n// Set an element as a query container.\n//\n//    @include set-container();                    // container-type: inline-size\n//    @include set-container(size);                // container-type: size\n//    @include set-container(inline-size, sidebar); // container: sidebar / inline-size\n//\n@mixin set-container($type: inline-size, $name: null) {\n  @if $name {\n    container: #{$name} / #{$type};\n  } @else {\n    container-type: #{$type};\n  }\n}\n\n// Container query of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider within the container.\n//\n//    @include container-breakpoint-up(md) { ... }\n//    @include container-breakpoint-up(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-up($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower within the container.\n//\n//    @include container-breakpoint-down(lg) { ... }\n//    @include container-breakpoint-down(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-down($name, $container-name: null, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @if $container-name {\n      @container #{$container-name} (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints within the container.\n//\n//    @include container-breakpoint-between(md, xl) { ... }\n//    @include container-breakpoint-between(md, xl, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-between($lower, $upper, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($lower, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($upper, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Container query between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint within the container.\n//\n//    @include container-breakpoint-only(md) { ... }\n//    @include container-breakpoint-only(md, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-only($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($name, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($next, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n// scss-docs-end container-query-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/image\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/tokens\" as *;\n\n$thumbnail-tokens: () !default;\n\n// scss-docs-start thumbnail-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$thumbnail-tokens: defaults(\n  (\n    --thumbnail-padding: .25rem,\n    --thumbnail-bg: var(--bg-body),\n    --thumbnail-border-width: var(--border-width),\n    --thumbnail-border-color: var(--border-color),\n    --thumbnail-border-radius: var(--border-radius),\n    --thumbnail-box-shadow: var(--box-shadow-sm),\n  ),\n  $thumbnail-tokens\n);\n// scss-docs-end thumbnail-tokens\n\n$figure-tokens: () !default;\n\n// scss-docs-start figure-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$figure-tokens: defaults(\n  (\n    --figure-gap: calc(var(--spacer) * .5),\n    --figure-caption-font-size: var(--font-size-sm),\n    --figure-caption-color: var(--fg-3),\n  ),\n  $figure-tokens\n);\n// scss-docs-end figure-tokens\n\n@layer content {\n  // Responsive images (ensure images don't scale beyond their parents)\n  //\n  // This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.\n  // We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n  // and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n  // which weren't expecting the images within themselves to be involuntarily resized.\n  // See also https://github.com/twbs/bootstrap/issues/18178\n  .img-fluid {\n    @include img-fluid();\n  }\n\n  .img-thumbnail {\n    @include tokens($thumbnail-tokens);\n    padding: var(--thumbnail-padding);\n    background-color: var(--thumbnail-bg);\n    border: var(--thumbnail-border-width) solid var(--thumbnail-border-color);\n    @include border-radius(var(--thumbnail-border-radius));\n    @include box-shadow(var(--thumbnail-box-shadow));\n\n    // Keep them at most 100% wide\n    @include img-fluid();\n  }\n\n  .figure {\n    @include tokens($figure-tokens);\n    // Ensures the caption's text aligns with the image.\n    display: flex;\n    flex-direction: column;\n    gap: var(--figure-gap);\n  }\n\n  .figure-caption {\n    font-size: var(--figure-caption-font-size);\n    color: var(--figure-caption-color);\n  }\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n  // Part 1: Set a maximum relative to the parent\n  max-width: 100%;\n  // Part 2: Override the height to auto, otherwise images will be stretched\n  // when setting a width and height attribute on the img element.\n  height: auto;\n}\n","@use \"sass:list\";\n@use \"../config\" as *;\n\n@mixin box-shadow($shadow...) {\n  @if $enable-shadows {\n    $result: ();\n    $has-single-value: false;\n    $single-value: null;\n\n    @each $value in $shadow {\n      @if $value != null {\n        @if $value == none or $value == initial or $value == inherit or $value == unset {\n          $has-single-value: true;\n          $single-value: $value;\n        } @else {\n          $result: list.append($result, $value, \"comma\");\n        }\n      }\n    }\n\n    @if $has-single-value {\n      box-shadow: $single-value;\n    } @else if (list.length($result) > 0) {\n      box-shadow: $result;\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$prose-tokens: () !default;\n\n// scss-docs-start prose-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$prose-tokens: defaults(\n  (\n    --content-font-size: 1rem,\n    --content-gap: 20px,\n    --heading-color: light-dark(var(--gray-900), var(--white)),\n  ),\n  $prose-tokens\n);\n// scss-docs-end prose-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer content {\n  .prose {\n    @include tokens($prose-tokens);\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--content-gap);\n    max-width: 1000px;\n    margin-inline: auto;\n    font-size: var(--content-font-size);\n    line-height: 1.5;\n\n    @media (width >= 1024px) {\n      --content-font-size: var(--font-size-md);\n      --content-gap: 24px;\n    }\n\n    :where(p, ul, ol, dl, pre, table, blockquote):not(:where(.not-prose, .not-prose *)) {\n      margin-block: 0;\n    }\n\n    :where(ul, ol):not([class]):not(:where(.not-prose, .not-prose *)) li:not(:last-child) {\n      margin-bottom: calc(var(--content-gap) / 4);\n    }\n\n    :where(li ul, li ol):not(:where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) / 4);\n    }\n\n    :where(hr):not(:where(.not-prose, .not-prose *)) {\n      margin: calc(var(--content-gap) * 1.5) 0;\n      border: 0;\n      border-block-start: var(--border-width) solid var(--hr-border-color);\n    }\n\n    :where(h1, h2, h3, h4, h5, h6):not([class]):not(:where(.not-prose, .not-prose *)) {\n      margin-top: 0;\n      margin-bottom: calc(var(--content-gap) / -2);\n      font-weight: 500;\n      line-height: 1.25;\n\n      code {\n        font-weight: 600;\n        color: inherit;\n      }\n    }\n\n    :where(h1, h2):not(:first-child):not(:where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) * .75);\n    }\n\n    :where(h3, h4, h5, h6):not(:first-child):not(:where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) * .5);\n    }\n\n    :where(h1):not(:where(.not-prose, .not-prose *)) {\n      font-size: 2.25em;\n      line-height: 1.1;\n    }\n    :where(h2):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.75em;\n    }\n    :where(h3):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.5em;\n    }\n    :where(h4):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.25em;\n    }\n    :where(h5):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.125em;\n    }\n    :where(h6):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1em;\n    }\n\n    :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n      color: var(--link-color);\n      text-decoration: underline;\n      text-decoration-color: color-mix(in srgb, var(--link-color) 25%, transparent);\n      text-underline-offset: 4px;\n      @include transition(.1s text-decoration-color ease-in-out);\n\n      &:hover {\n        text-decoration-color: var(--link-hover-color);\n      }\n    }\n\n    :where(img):not(:where(.not-prose, .not-prose *)) {\n      max-width: 100%;\n    }\n\n    :where(blockquote):not(:where(.not-prose, .not-prose *)) {\n      padding-inline-start: calc(var(--content-gap) / 2);\n      margin: 0;\n      border-inline-start: 4px solid var(--border-color);\n    }\n\n    :where(table):not(:where(.not-prose, .not-prose *)) {\n      width: 100%;\n      border-spacing: 0;\n      border-collapse: collapse;\n    }\n\n    :where(table:not([class])):not(:where(.not-prose, .not-prose *)) {\n      td,\n      th {\n        padding: 6px 12px;\n        text-align: inherit;\n        border: 1px solid var(--border-color);\n      }\n    }\n\n    :where(dt):not(:where(.not-prose, .not-prose *)) {\n      font-weight: 500;\n    }\n\n    :where(video, img):not(:where(.not-prose, .not-prose *)) {\n      max-width: 100%;\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n@mixin transition($transition...) {\n  @if list.length($transition) == 0 {\n    $transition: $transition-base;\n  }\n\n  @if list.length($transition) > 1 {\n    @each $value in $transition {\n      @if $value == null or $value == none {\n        @warn \"The keyword 'none' or 'null' must be used as a single argument.\";\n      }\n    }\n  }\n\n  @if $enable-transitions {\n    @if list.nth($transition, 1) != null {\n      transition: $transition;\n    }\n\n    @if $enable-reduced-motion and list.nth($transition, 1) != null and list.nth($transition, 1) != none {\n      @media (prefers-reduced-motion: reduce) {\n        transition: none;\n      }\n    }\n  }\n}\n","@use \"../config\" as *;\n@use \"breakpoints\" as *;\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n  --gutter-x: #{$gutter};\n  --gutter-y: 0;\n  width: 100%;\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-inline: auto;\n}\n\n@layer layout {\n  @if $enable-container-classes {\n    // Single container class with breakpoint max-widths\n    .container,\n    // 100% wide container at all breakpoints\n    .container-fluid {\n      @include make-container();\n    }\n\n    // Responsive containers that are 100% wide until a breakpoint\n    @each $breakpoint, $container-max-width in $container-max-widths {\n      .container-#{$breakpoint} {\n        @extend .container-fluid;\n      }\n\n      @include media-breakpoint-up($breakpoint, $breakpoints) {\n        // Extend each breakpoint which is smaller or equal to the current breakpoint\n        $extend-breakpoint: true;\n\n        %responsive-container-#{$breakpoint} {\n          max-width: $container-max-width;\n        }\n\n        @each $name, $width in $breakpoints {\n          @if ($extend-breakpoint) {\n            .container#{breakpoint-infix($name, $breakpoints)} {\n              @extend %responsive-container-#{$breakpoint};\n            }\n\n            // Once the current breakpoint is reached, stop extending\n            @if ($breakpoint == $name) {\n              $extend-breakpoint: false;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"../config\" as *;\n@use \"../mixins/grid\" as *;\n\n// mdo-do\n// - check gap utilities as replacement for gutter classes from v5\n\n@layer layout {\n  @if $enable-grid-classes {\n    .row {\n      @include make-row();\n\n      > * {\n        @include make-col-ready();\n      }\n    }\n\n    @include make-grid-columns();\n  }\n\n  @if $enable-cssgrid {\n    .grid {\n      --columns: #{$grid-columns};\n      --rows: 1;\n      --gap: #{$grid-gutter-x};\n\n      display: grid;\n      grid-template-rows: repeat(var(--rows), 1fr);\n      grid-template-columns: repeat(var(--columns), 1fr);\n      gap: var(--gap);\n\n    }\n\n    @include make-cssgrid();\n  }\n\n  // mdo-do: add to utilities?\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n\n  .grid-fill {\n    --gap: #{$grid-gutter-x};\n\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n\n  // .g-col-auto {\n  //   grid-column: auto;\n  // }\n\n  // mdo-do: add to utilities?\n  // .grid-cols-3 {\n  //   --columns: 3;\n  // }\n  // .grid-cols-4 {\n  //   --columns: 4;\n  // }\n  // .grid-cols-6 {\n  //   --columns: 6;\n  // }\n\n  // .grid-full {\n  //   grid-column: 1 / -1;\n  // }\n}\n","@use \"sass:map\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n\n// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter-x: $grid-gutter-x, $gutter-y: $grid-gutter-y) {\n  --gutter-x: #{$gutter-x};\n  --gutter-y: #{$gutter-y};\n  display: flex;\n  flex-wrap: wrap;\n  // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n  margin-inline: calc(-.5 * var(--gutter-x));\n  margin-top: calc(-1 * var(--gutter-y));\n}\n\n@mixin make-col-ready() {\n  // Add box sizing if only the grid is loaded\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  box-sizing: if(sass(meta.variable-exists(include-column-box-sizing) and $include-column-box-sizing): border-box; else: null);\n  // Prevent columns from becoming too narrow when at smaller grid tiers by\n  // always setting `width: 100%;`. This works because we set the width\n  // later on to override this initial width.\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-top: var(--gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n  @if $size {\n    flex: 0 0 auto;\n    width: math.percentage(math.div($size, $columns));\n\n  } @else {\n    flex: 1 1 0;\n    max-width: 100%;\n  }\n}\n\n@mixin make-col-auto() {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n  $num: math.div($size, $columns);\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  margin-inline-start: if(sass($num == 0): 0; else: math.percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n  > * {\n    flex: 0 0 auto;\n    width: math.percentage(math.div(1, $count));\n  }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-x, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n      .col#{$infix} {\n        flex: 1 0 0;\n      }\n\n      .row-cols#{$infix}-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .row-cols#{$infix}-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .col#{$infix}-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .col#{$infix}-#{$i} {\n            @include make-col($i, $columns);\n          }\n        }\n\n        // `$columns - 1` because offsetting by the width of an entire row isn't possible\n        @for $i from 0 through ($columns - 1) {\n          @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .offset#{$infix}-#{$i} {\n              @include make-col-offset($i, $columns);\n            }\n          }\n        }\n      }\n\n      // Gutters\n      //\n      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n      @each $key, $value in $gutters {\n        .g#{$infix}-#{$key},\n        .gx#{$infix}-#{$key} {\n          --gutter-x: #{$value};\n        }\n\n        .g#{$infix}-#{$key},\n        .gy#{$infix}-#{$key} {\n          --gutter-y: #{$value};\n        }\n      }\n    }\n  }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .g-col#{$infix}-#{$i} {\n            grid-column: auto / span $i;\n          }\n        }\n\n        // Start with `1` because `0` is an invalid value.\n        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n        @for $i from 1 through ($columns - 1) {\n          .g-start#{$infix}-#{$i} {\n            grid-column-start: $i;\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"../functions\" as *;\n\n$form-label-tokens: () !default;\n\n// scss-docs-start form-label-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-label-tokens: defaults(\n  (\n    --label-margin-bottom: calc(var(--spacer) / 2),\n    --label-font-size: null,\n    --label-font-style: null,\n    --label-font-weight: null,\n    --label-color: null,\n  ),\n  $form-label-tokens\n);\n// scss-docs-end form-label-tokens\n\n@layer forms {\n  .form-label,\n  .col-form-label {\n    font-size: var(--label-font-size, var(--font-size-sm));\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, inherit);\n    color: var(--label-color, var(--fg-body));\n  }\n\n  .form-label {\n    margin-bottom: var(--label-margin-bottom, calc(var(--spacer) / 2));\n  }\n\n  // For use with horizontal and inline forms, when you need the label (or legend)\n  // text to align with the form controls.\n  .col-form-label {\n    --label-padding-y: calc(var(--btn-input-padding-y) + var(--border-width));\n    padding-block: var(--label-padding-y);\n    margin-bottom: 0; // Override the `<legend>` default\n  }\n\n  .col-form-label-lg {\n    --label-padding-y: calc(var(--btn-input-lg-padding-y) + var(--border-width));\n    font-size: var(--btn-input-lg-font-size);\n  }\n\n  .col-form-label-sm {\n    --label-padding-y: calc(var(--btn-input-sm-padding-y) + var(--border-width));\n    font-size: var(--btn-input-sm-font-size);\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/tokens\" as *;\n\n$form-text-tokens: () !default;\n\n// scss-docs-start form-text-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-text-tokens: defaults(\n  (\n    --form-text-margin-top: .25rem,\n    --form-text-font-size: var(--font-size-sm),\n    --form-text-font-style: null,\n    --form-text-font-weight: null,\n    --form-text-color: var(--fg-3),\n  ),\n  $form-text-tokens\n);\n// scss-docs-end form-text-tokens\n\n@layer forms {\n  .form-text {\n    @include tokens($form-text-tokens);\n\n    margin-top: var(--form-text-margin-top);\n    font-size: var(--form-text-font-size);\n    font-style: var(--form-text-font-style);\n    font-weight: var(--form-text-font-weight);\n    color: var(--form-text-color);\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/gradients\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$form-control-tokens: () !default;\n\n// scss-docs-start form-control-tokens\n// stylelint-disable custom-property-no-missing-var-function\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-control-tokens: defaults(\n  (\n    --control-min-height: var(--btn-input-min-height),\n    --control-padding-y: var(--btn-input-padding-y),\n    --control-padding-x: var(--btn-input-padding-x),\n    --control-font-size: var(--btn-input-font-size),\n    --control-line-height: var(--btn-input-line-height),\n    --control-fg: var(--btn-input-fg),\n    --control-bg: var(--btn-input-bg),\n    --control-border-width: var(--border-width),\n    --control-border-color: var(--border-color),\n    --control-border-radius: var(--border-radius),\n    --control-box-shadow: var(--box-shadow-inset),\n    --control-action-bg: var(--bg-1),\n    --control-action-hover-bg: var(--bg-2),\n    --control-transition-property: \"border-color, box-shadow\",\n    --control-transition-timing: .15s ease-in-out,\n    --control-transition: var(--control-transition-property) var(--control-transition-timing),\n    --control-placeholder-color: var(--fg-3),\n    --control-disabled-color: var(--control-fg),\n    --control-disabled-bg: var(--bg-2),\n    --control-disabled-border-color: var(--control-border-color),\n    --control-select-bg: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#00000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>\"))},\n    --control-select-bg-position: right .75rem center,\n    --control-select-bg-size: 16px 12px,\n    --control-select-bg-dark: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>\"))},\n  ),\n  $form-control-tokens\n);\n// scss-docs-end form-control-tokens\n\n// scss-docs-start form-control-sizes\n$form-control-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-control-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $form-control-sizes\n);\n// scss-docs-end form-control-sizes\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .form-control {\n    @include tokens($form-control-tokens);\n\n    display: flex;\n    width: 100%;\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    font-size: var(--control-font-size);\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    appearance: none;\n    background-color: var(--control-bg);\n    background-clip: padding-box;\n    border: var(--control-border-width) solid var(--control-border-color);\n    @include border-radius(var(--control-border-radius), 0);\n    @include box-shadow(var(--control-box-shadow));\n    @include transition(var(--control-transition));\n\n    // Customize the `:focus` state to imitate native WebKit styles.\n    &:focus-visible {\n      --focus-ring-offset: -1px;\n      @include focus-ring(true);\n    }\n\n    // Placeholder\n    &::placeholder {\n      color: var(--control-placeholder-color);\n      // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.\n      opacity: 1;\n    }\n\n    // Disabled inputs\n    //\n    // HTML5 says that controls under a fieldset > legend:first-child won't be\n    // disabled if the fieldset is disabled. Due to implementation difficulty, we\n    // don't honor that edge case; we style them as disabled anyway.\n    &:disabled {\n      color: var(--control-disabled-color);\n      background-color: var(--control-disabled-bg);\n      border-color: var(--control-disabled-border-color);\n      // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.\n      opacity: 1;\n    }\n\n    // Date and time inputs\n    // &::-webkit-date-and-time-value {\n    //   // On Android Chrome, form-control's \"width: 100%\" makes the input width too small\n    //   // Tested under Android 11 / Chrome 89, Android 12 / Chrome 100, Android 13 / Chrome 109\n    //   //\n    //   // On iOS Safari, form-control's \"appearance: none\" + \"width: 100%\" makes the input width too small\n    //   // Tested under iOS 16.2 / Safari 16.2\n    //   min-width: 85px; // Seems to be a good minimum safe width\n\n    //   // Add some height to date inputs on iOS\n    //   // https://github.com/twbs/bootstrap/issues/23307\n    //   // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved\n    //   // Multiply line-height by 1em if it has no unit\n    //   height: 1.5em;\n\n    //   // Android Chrome type=\"date\" is taller than the other inputs\n    //   // because of \"margin: 1px 24px 1px 4px\" inside the shadow DOM\n    //   // Tested under Android 11 / Chrome 89, Android 12 / Chrome 100, Android 13 / Chrome 109\n    //   margin: 0;\n    //   background-color: var(--red-500);\n    // }\n\n    // Prevent excessive date input height in Webkit\n    // https://github.com/twbs/bootstrap/issues/34433\n\n    // mdo-do: need to check this stuff out across browsers\n    &::-webkit-datetime-edit {\n      display: block;\n      height: 1.5rem;\n      padding: 0;\n      margin-bottom: -.125rem;\n    }\n    &::-webkit-datetime-edit-fields-wrapper {\n      height: 1.5rem;\n    }\n\n    // File inputs\n    &[type=\"file\"] {\n      overflow: hidden; // prevent pseudo element button overlap\n\n      &:not(:disabled):not([readonly]) {\n        cursor: pointer;\n      }\n    }\n    &::file-selector-button {\n      min-height: var(--control-min-height);\n      padding: var(--control-padding-y) var(--control-padding-x);\n      margin: calc(var(--control-padding-y) * -1) calc(var(--control-padding-x) * -1);\n      margin-inline-end: var(--control-padding-x);\n      color: var(--control-fg);\n      @include gradient-bg(var(--control-action-bg));\n      pointer-events: none;\n      border-color: inherit;\n      border-style: solid;\n      border-width: 0;\n      border-inline-end-width: var(--control-border-width);\n      border-radius: 0; // stylelint-disable-line property-disallowed-list\n      @include transition(var(--control-transition));\n    }\n\n    &:hover:not(:disabled):not([readonly])::file-selector-button {\n      background-color: var(--control-action-hover-bg);\n    }\n  }\n\n  // Readonly controls as plain text\n  //\n  // Apply class to a readonly input to make it appear like regular plain\n  // text (without any border, background color, focus indicator)\n\n  .form-control-plaintext {\n    display: block;\n    width: 100%;\n    padding: var(--control-padding-y) 0;\n    margin-bottom: 0; // match inputs if this class comes on inputs with default margins\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    background-color: transparent;\n    border: solid transparent;\n    border-width: var(--control-border-width) 0;\n\n    &:focus {\n      outline: 0;\n    }\n\n    &.form-control-sm,\n    &.form-control-lg {\n      padding-inline: 0;\n    }\n  }\n\n  // stylelint-disable selector-no-qualifying-type\n  select.form-control {\n    padding-inline-end: calc(var(--control-padding-x) * 3);\n    background-image: var(--control-select-bg);\n    background-repeat: no-repeat;\n    background-position: var(--control-select-bg-position);\n    background-size: var(--control-select-bg-size);\n\n    &[multiple],\n    &[size]:not([size=\"1\"]) {\n      padding-inline-end: var(--control-padding-x);\n      background-image: none;\n    }\n  }\n\n  @media (prefers-color-scheme: dark) {\n    select.form-control {\n      background-image: var(--control-select-bg-dark);\n    }\n  }\n  // stylelint-enable selector-no-qualifying-type\n\n  // Form control sizing\n  //\n  // Build on `.form-control` with modifier classes to decrease or increase the\n  // height and font-size of form controls.\n  //\n  // Repeated in `_input_group.scss` to avoid Sass extend issues.\n  @each $size, $_ in $form-control-sizes {\n    .form-control-#{$size} {\n      --control-min-height: var(--btn-input-#{$size}-min-height);\n      --control-padding-y: var(--btn-input-#{$size}-padding-y);\n      --control-padding-x: var(--btn-input-#{$size}-padding-x);\n      --control-font-size: var(--btn-input-#{$size}-font-size);\n      --control-line-height: var(--btn-input-#{$size}-line-height);\n      --control-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n\n  .form-control-color {\n    width: var(--control-min-height);\n    padding: var(--control-padding-y);\n\n    &:not(:disabled):not([readonly]) {\n      cursor: pointer;\n    }\n\n    &::-moz-color-swatch {\n      border: 0 !important; // stylelint-disable-line declaration-no-important\n      @include border-radius(var(--border-radius-sm));\n    }\n\n    &::-webkit-color-swatch {\n      border: 0 !important; // stylelint-disable-line declaration-no-important\n      @include border-radius(var(--border-radius-sm));\n    }\n  }\n\n  // Ghost input - removes all visual styling\n  // Used inside custom wrappers that handle their own styling\n  .form-ghost {\n    display: block;\n    width: 100%;\n    padding: 0;\n    font: inherit;\n    color: inherit;\n    appearance: none;\n    background: transparent;\n    border: 0;\n\n    &:focus {\n      outline: 0;\n    }\n\n    &::placeholder {\n      color: var(--fg-3);\n      opacity: 1;\n    }\n\n    &:disabled {\n      color: var(--fg-4);\n      cursor: not-allowed;\n    }\n  }\n}\n","@mixin focus-ring($offset: false, $color: null) {\n  @if $color != null {\n    outline: var(--focus-ring-width) solid #{$color};\n  } @else {\n    outline: var(--focus-ring);\n  }\n  @if $offset {\n    outline-offset: var(--focus-ring-offset);\n  }\n}\n","@use \"../colors\" as *;\n@use \"../config\" as *;\n\n// Gradients\n\n// scss-docs-start gradient-bg-mixin\n@mixin gradient-bg($color: null) {\n  background-color: $color;\n\n  @if $enable-gradients {\n    background-image: var(--gradient);\n  }\n}\n// scss-docs-end gradient-bg-mixin\n\n// scss-docs-start gradient-mixins\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: var(--gray-700), $end-color: var(--gray-800), $start-percent: 0%, $end-percent: 100%) {\n  background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: var(--gray-700), $end-color: var(--gray-800), $start-percent: null, $end-percent: null) {\n  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n}\n\n@mixin gradient-directional($start-color: var(--gray-700), $end-color: var(--gray-800), $deg: 45deg) {\n  background-image: linear-gradient($deg, $start-color, $end-color);\n}\n\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-radial($inner-color: var(--gray-700), $outer-color: var(--gray-800)) {\n  background-image: radial-gradient(circle, $inner-color, $outer-color);\n}\n\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\n  background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n// scss-docs-end gradient-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$check-tokens: () !default;\n\n// scss-docs-start check-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$check-tokens: defaults(\n  (\n    --check-size: 1.25rem,\n    --check-margin-block: .125rem,\n    --check-bg: transparent,\n    --check-border-color: var(--border-color),\n    --check-border-radius: .375rem,\n    --check-checked-bg: var(--control-checked-bg),\n    --check-checked-border-color: var(--control-checked-border-color),\n    --check-indeterminate-bg: var(--control-checked-bg),\n    --check-indeterminate-border-color: var(--control-checked-border-color),\n    --check-active-bg: var(--control-active-bg),\n    --check-active-border-color: var(--control-active-border-color),\n    --check-disabled-bg: var(--control-disabled-bg),\n    --check-disabled-opacity: var(--control-disabled-opacity),\n  ),\n  $check-tokens\n);\n// scss-docs-end check-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .checkgroup {\n    display: flex;\n    gap: var(--gap, .5rem);\n    align-items: var(--align-items, start);\n\n    .description {\n      color: var(--fg-3);\n    }\n  }\n\n  .check {\n    @include tokens($check-tokens);\n\n    display: grid;\n    grid-template-columns: repeat(1, minmax(0, 1fr));\n    margin-block: var(--check-margin-block);\n\n    :where(svg, input) {\n      flex-shrink: 0;\n      grid-row-start: 1;\n      grid-column-start: 1;\n      width: var(--check-size);\n      height: var(--check-size);\n    }\n\n    :where(input) {\n      appearance: none;\n      // later: maybe set a tertiary bg color?\n      background-color: var(--theme-bg, var(--check-bg));\n      border: 1px solid var(--theme-bg, var(--check-border-color));\n      // stylelint-disable-next-line property-disallowed-list\n      border-radius: .3em;\n    }\n\n    :where(input:checked, input:indeterminate) {\n      background-color: var(--theme-bg, var(--check-checked-bg));\n      border-color: var(--theme-bg, var(--check-checked-border-color));\n    }\n\n    :where(input:focus-visible) {\n      @include focus-ring(true);\n    }\n\n    &:has(input:checked) .checked,\n    &:has(input:indeterminate) .indeterminate {\n      display: block;\n      color: var(--theme-contrast, var(--primary-contrast));\n      stroke: currentcolor;\n    }\n\n    &:has(input:disabled) {\n      --check-bg: var(--check-disabled-bg);\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n    &:has(input:disabled:checked) {\n      opacity: var(--check-disabled-opacity);\n    }\n\n    :where(svg) {\n      pointer-events: none;\n    }\n\n    :where(svg path) {\n      display: none;\n    }\n  }\n\n  .check-sm {\n    --check-size: 1rem;\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: 0;\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$radio-tokens: () !default;\n\n// scss-docs-start radio-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$radio-tokens: defaults(\n  (\n    --radio-size: 1.25rem,\n    --radio-margin-block: .125rem,\n    --radio-bg: transparent,\n    --radio-border-color: var(--border-color),\n    --radio-checked-bg: var(--control-checked-bg),\n    --radio-checked-border-color: var(--control-checked-border-color),\n    --radio-disabled-bg: var(--control-disabled-bg),\n    --radio-disabled-opacity: var(--control-disabled-opacity),\n  ),\n  $radio-tokens\n);\n// scss-docs-end radio-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .radiogroup {\n    display: flex;\n    gap: var(--gap, .5rem);\n    align-items: var(--align-items, start);\n\n    .description {\n      color: var(--fg-3);\n    }\n  }\n\n  .radio {\n    @include tokens($radio-tokens);\n\n    position: relative;\n    flex-shrink: 0;\n    width: var(--radio-size);\n    height: var(--radio-size);\n    margin-block: var(--radio-margin-block);\n    appearance: none;\n    background-color: var(--theme-bg, var(--radio-bg));\n    border: 1px solid var(--theme-bg, var(--radio-border-color));\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 50%;\n\n    &:checked {\n      color: var(--theme-contrast, var(--primary-contrast));\n      background-color: var(--theme-bg, var(--radio-checked-bg));\n      border-color: var(--theme-bg, var(--radio-checked-border-color));\n\n      &::before {\n        position: absolute;\n        inset: .25rem;\n        content: \"\";\n        background-color: currentcolor;\n        // stylelint-disable-next-line property-disallowed-list\n        border-radius: 50%;\n      }\n    }\n\n    &:disabled {\n      --radio-bg: var(--radio-disabled-bg);\n\n      ~ label {\n        color: var(--secondary-text);\n        cursor: default;\n      }\n    }\n\n    &:focus-visible {\n      @include focus-ring(true);\n    }\n  }\n\n  .radio-sm {\n    --radio-size: 1rem;\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: 0;\n  }\n}\n","@use \"../colors\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$switch-tokens: () !default;\n\n// scss-docs-start switch-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$switch-tokens: defaults(\n  (\n    --switch-height: 1.25rem,\n    --switch-width: calc(var(--switch-height) * 1.5),\n    --switch-padding: .0625rem,\n    --switch-margin-block: .125rem,\n    --switch-bg: var(--bg-3),\n    --switch-border-width: var(--border-width),\n    --switch-border-color: var(--border-color),\n    --switch-indicator-bg: var(--white),\n    --switch-checked-bg: var(--control-checked-bg),\n    --switch-checked-border-color: var(--switch-checked-bg),\n    --switch-checked-indicator-bg: var(--white),\n    --switch-disabled-bg: var(--control-disabled-bg),\n    --switch-disabled-indicator-bg: var(--fg-3),\n  ),\n  $switch-tokens\n);\n// scss-docs-end switch-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .switch {\n    @include tokens($switch-tokens);\n\n    position: relative;\n    display: flex;\n    flex-shrink: 0;\n    align-items: stretch;\n    justify-content: flex-start;\n    width: var(--switch-width);\n    height: var(--switch-height);\n    padding: var(--switch-padding);\n    margin-block: var(--switch-margin-block);\n    background-color: var(--switch-bg);\n    border: var(--switch-border-width) solid var(--switch-border-color);\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 10rem;\n    box-shadow: inset 0 1px 2px rgba($black, .05);\n    // stylelint-disable-next-line property-disallowed-list\n    transition: .15s ease-in-out;\n    transition-property: padding-inline-start, background-color;\n\n    &::before {\n      flex-shrink: 0;\n      width: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2);\n      height: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2);\n      content: \"\";\n      background-color: var(--theme-contrast, var(--switch-indicator-bg));\n      // stylelint-disable-next-line property-disallowed-list\n      border-radius: 50%;\n      box-shadow: 0 1px 2px rgba($black, .1);\n    }\n\n    input {\n      position: absolute;\n      inset: 0;\n      appearance: none;\n      background-color: transparent;\n      outline: 0;\n    }\n\n    &:focus-within {\n      @include focus-ring(true);\n    }\n\n    &:has(input:checked) {\n      padding-inline-start: calc(var(--switch-height) / 2 + var(--switch-padding));\n      background-color: var(--theme-bg, var(--switch-checked-bg));\n      border-color: var(--theme-bg, var(--switch-checked-border-color));\n    }\n\n    &:has(input:disabled) {\n      --switch-bg: var(--switch-disabled-bg);\n      --switch-indicator-bg: var(--switch-disabled-indicator-bg);\n\n      &::before { opacity: .4; }\n\n      ~ label {\n        color: var(--secondary-text);\n        cursor: default;\n      }\n    }\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: 0;\n  }\n}\n","@use \"../colors\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/transition\" as *;\n@use \"../mixins/gradients\" as *;\n@use \"../mixins/tokens\" as *;\n\n$range-tokens: () !default;\n\n// scss-docs-start range-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$range-tokens: defaults(\n  (\n    --range-track-width: 100%,\n    --range-track-height: .5rem,\n    --range-track-cursor: pointer,\n    --range-track-bg: var(--bg-3),\n    --range-track-border-radius: 1rem,\n    --range-track-box-shadow: var(--box-shadow-inset),\n    --range-thumb-width: 1rem,\n    --range-thumb-height: var(--range-thumb-width),\n    --range-thumb-bg: var(--primary-base),\n    --range-thumb-border: 0,\n    --range-thumb-border-radius: 1rem,\n    --range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1),\n    --range-thumb-active-bg: color-mix(in oklch, var(--primary-base) 70%, var(--bg-body)),\n    --range-thumb-disabled-bg: var(--fg-3),\n    --range-thumb-transition-property: \"background-color, border-color, box-shadow\",\n    --range-thumb-transition-timing: .15s ease-in-out,\n    --range-thumb-transition: var(--range-thumb-transition-property) var(--range-thumb-transition-timing),\n  ),\n  $range-tokens\n);\n// scss-docs-end range-tokens\n\n// scss-docs-start range-mixins\n@mixin range-thumb() {\n  width: var(--range-thumb-width);\n  height: var(--range-thumb-height);\n  appearance: none;\n  @include gradient-bg(var(--range-thumb-bg));\n  border: var(--range-thumb-border);\n  @include border-radius(var(--range-thumb-border-radius));\n  @include box-shadow(var(--range-thumb-box-shadow));\n  @include transition(var(--range-thumb-transition));\n\n  &:active {\n    @include gradient-bg(var(--range-thumb-active-bg));\n  }\n}\n\n@mixin range-track() {\n  width: var(--range-track-width);\n  height: var(--range-track-height);\n  color: transparent; // Why?\n  cursor: var(--range-track-cursor);\n  background-color: var(--range-track-bg);\n  border-color: transparent; // Firefox specific?\n  @include border-radius(var(--range-track-border-radius));\n  @include box-shadow(var(--range-track-box-shadow));\n}\n// scss-docs-end range-mixins\n\n@layer forms {\n  .form-range {\n    @include tokens($range-tokens);\n\n    width: 100%;\n    height: calc(var(--range-thumb-height) + (var(--focus-ring-width) * 2));\n    padding: 0; // Need to reset padding\n    appearance: none;\n    background-color: transparent;\n\n    &:focus {\n      outline: 0;\n\n      // Pseudo-elements must be split across multiple rulesets to have an effect.\n      &::-webkit-slider-thumb {\n        @include focus-ring(true);\n        --focus-ring-offset: 1px;\n      }\n      &::-moz-range-thumb     {\n        @include focus-ring(true);\n        --focus-ring-offset: 1px;\n      }\n    }\n\n    &::-moz-focus-outer {\n      border: 0;\n    }\n\n    &::-webkit-slider-thumb {\n      @include range-thumb();\n      margin-top: calc((var(--range-track-height) - var(--range-thumb-height)) * .5); // Webkit specific\n    }\n\n    &::-moz-range-thumb {\n      @include range-thumb();\n    }\n\n    &::-webkit-slider-runnable-track {\n      @include range-track();\n    }\n\n    &::-moz-range-track {\n      @include range-track();\n    }\n\n    &:disabled {\n      pointer-events: none;\n\n      &::-webkit-slider-thumb {\n        background-color: var(--range-thumb-disabled-bg);\n      }\n\n      &::-moz-range-thumb {\n        background-color: var(--range-thumb-disabled-bg);\n      }\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$form-floating-tokens: () !default;\n\n// scss-docs-start form-floating-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-floating-tokens: defaults(\n  (\n    --form-floating-height: calc(3.5rem + (var(--border-width) * 2)),\n    --form-floating-line-height: 1.25,\n    --form-floating-padding-x: var(--btn-input-padding-x),\n    --form-floating-padding-y: 1rem,\n    --form-floating-input-padding-t: 1.625rem,\n    --form-floating-input-padding-b: .625rem,\n    --form-floating-label-height: 1.5em,\n    --form-floating-label-opacity: .65,\n    --form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem),\n    --form-floating-label-disabled-color: var(--fg-3),\n    --form-floating-transition-property: \"opacity, transform\",\n    --form-floating-transition-timing: .1s ease-in-out,\n    --form-floating-transition: var(--form-floating-transition-property) var(--form-floating-transition-timing),\n  ),\n  $form-floating-tokens\n);\n// scss-docs-end form-floating-tokens\n\n@layer forms {\n  .form-floating {\n    @include tokens($form-floating-tokens);\n\n    position: relative;\n\n    > label {\n      position: absolute;\n      inset-block-start: 0;\n      inset-inline-start: 0;\n      z-index: 2;\n      display: flex;\n      align-items: center;\n      max-width: 100%;\n      height: 100%; // allow textareas\n      padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n      overflow: hidden;\n      color: color-mix(in oklch, var(--fg-body) var(--form-floating-label-opacity), transparent);\n      text-align: start;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n      pointer-events: none;\n      border: var(--input-btn-border-width) solid transparent; // Required for aligning label's text with the input as it affects inner box model\n      transform-origin: 0 0;\n      @include transition(var(--form-floating-transition));\n    }\n\n    > .form-control,\n    > .form-control-plaintext {\n      height: var(--form-floating-height);\n      min-height: var(--form-floating-height);\n      padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n      line-height: var(--form-floating-line-height);\n\n      &::placeholder {\n        color: transparent;\n      }\n\n      &:focus,\n      &:not(:placeholder-shown) {\n        padding-top: var(--form-floating-input-padding-t);\n        padding-bottom: var(--form-floating-input-padding-b);\n      }\n      // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n      &:-webkit-autofill {\n        padding-top: var(--form-floating-input-padding-t);\n        padding-bottom: var(--form-floating-input-padding-b);\n      }\n    }\n\n    > .form-control:focus,\n    > .form-control:not(:placeholder-shown),\n    > .form-control-plaintext {\n      ~ label {\n        transform: var(--form-floating-label-transform);\n      }\n    }\n\n    // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n    > .form-control:-webkit-autofill {\n      ~ label {\n        transform: var(--form-floating-label-transform);\n      }\n    }\n    > textarea:focus,\n    > textarea:not(:placeholder-shown) {\n      ~ label::after {\n        position: absolute;\n        inset: var(--form-floating-padding-y) calc(var(--form-floating-padding-x) * .5);\n        z-index: -1;\n        height: var(--form-floating-label-height);\n        content: \"\";\n        background-color: var(--control-bg);\n        @include border-radius(var(--btn-input-border-radius));\n      }\n    }\n    > textarea:disabled ~ label::after {\n      background-color: var(--control-disabled-bg);\n    }\n\n    > .form-control-plaintext {\n      ~ label {\n        border-width: var(--control-border-width) 0; // Required to properly position label text - as explained above\n      }\n    }\n\n    > :disabled ~ label,\n    > .form-control:disabled ~ label { // Required for `.form-control`s because of specificity\n      color: var(--form-floating-label-disabled-color);\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"sass:string\";\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"form-variables\" as *;\n\n$input-group-addon-tokens: () !default;\n\n// scss-docs-start input-group-addon-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$input-group-addon-tokens: defaults(\n  (\n    --input-group-addon-padding-y: var(--btn-input-padding-y),\n    --input-group-addon-padding-x: var(--btn-input-padding-x),\n    --input-group-addon-font-size: var(--btn-input-font-size),\n    --input-group-addon-line-height: var(--btn-input-line-height),\n    --input-group-addon-color: var(--fg-body),\n    --input-group-addon-bg: var(--bg-2),\n    --input-group-addon-border-color: var(--border-color),\n  ),\n  $input-group-addon-tokens\n);\n// scss-docs-end input-group-addon-tokens\n\n// scss-docs-start input-group-sizes\n$input-group-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$input-group-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $input-group-sizes\n);\n// scss-docs-end input-group-sizes\n\n@layer components {\n  .input-group {\n    @include tokens($input-group-addon-tokens);\n\n    position: relative;\n    display: flex;\n    flex-wrap: wrap; // For form validation feedback\n    align-items: stretch;\n    width: 100%;\n\n    > .form-control,\n    > .form-floating {\n      position: relative; // For focus state's z-index\n      flex: 1 1 auto;\n      width: 1%;\n      min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size\n    }\n\n    // Bring the \"active\" form control to the top of surrounding elements\n    > .form-control:focus,\n    > .form-floating:focus-within {\n      z-index: 5;\n    }\n\n    // Ensure buttons are always above inputs for more visually pleasing borders.\n    // This isn't needed for `.input-group-text` since it shares the same border-color\n    // as our inputs.\n    > .input-group-btn {\n      position: relative;\n      z-index: 2;\n\n      &:focus {\n        z-index: 5;\n      }\n    }\n  }\n\n  // Textual addons\n  //\n  // Serves as a catch-all element for any text or radio/checkbox input you wish\n  // to prepend or append to an input.\n\n  .input-group-text {\n    display: flex;\n    align-items: center;\n    padding: var(--input-group-addon-padding-y) var(--input-group-addon-padding-x);\n    font-size: var(--input-group-addon-font-size); // Match inputs\n    // font-weight: $input-group-addon-font-weight;\n    line-height: var(--input-group-addon-line-height);\n    color: var(--input-group-addon-color);\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--input-group-addon-bg);\n    border: var(--border-width) solid var(--input-group-addon-border-color);\n    @include border-radius(var(--btn-input-border-radius));\n  }\n\n  // Sizing\n  //\n  // Remix the default form control sizing classes into new ones for easier\n  // manipulation.\n\n  @each $size, $_ in $input-group-sizes {\n    .input-group-#{$size} {\n      > .form-control,\n      > .input-group-text,\n      > .btn {\n        min-height: var(--btn-input-#{$size}-min-height);\n        padding: var(--btn-input-#{$size}-padding-y) var(--btn-input-#{$size}-padding-x);\n        font-size: var(--btn-input-#{$size}-font-size);\n        @include border-radius(var(--btn-input-#{$size}-border-radius));\n      }\n    }\n  }\n\n  // Rounded corners\n  //\n  // These rulesets must come after the sizing ones to properly override sm and lg\n  // border-radius values when extending. They're more specific than we'd like\n  // with the `.input-group >` part, but without it, we cannot override the sizing.\n\n  // stylelint-disable-next-line no-duplicate-selectors\n  .input-group {\n\n    $validation-messages: \"\";\n    &:not(.has-validation) {\n      > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n      > .dropdown-toggle:nth-last-child(n + 3),\n      > .form-floating:not(:last-child) > .form-control,\n      > .form-floating:not(:last-child) > .form-select {\n        @include border-end-radius(0);\n      }\n    }\n\n    &.has-validation {\n      > :nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n      > .dropdown-toggle:nth-last-child(n + 4),\n      > .form-floating:nth-last-child(n + 3) > .form-control,\n      > .form-floating:nth-last-child(n + 3) > .form-select {\n        @include border-end-radius(0);\n      }\n    }\n\n    > :not(:first-child):not(.dropdown-menu)#{$validation-messages} {\n      margin-inline-start: calc(-1 * var(--border-width));\n      @include border-start-radius(0);\n    }\n\n    > .form-floating:not(:first-child) > .form-control,\n    > .form-floating:not(:first-child) > .form-select {\n      @include border-start-radius(0);\n    }\n    @each $state in map.keys($form-validation-states) {\n      $validation-messages: $validation-messages + \":not(.\" + string.unquote($state) + \"-tooltip)\" + \":not(.\" + string.unquote($state) + \"-feedback)\";\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$strength-tokens: () !default;\n\n// scss-docs-start strength-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$strength-tokens: defaults(\n  (\n    --strength-height: .375rem,\n    --strength-gap: .25rem,\n    --strength-margin-top: .25rem,\n    --strength-border-radius: var(--border-radius-pill),\n    --strength-bg: var(--bg-2),\n    --strength-color: var(--bg-2),\n    --strength-weak-color: var(--danger-bg),\n    --strength-fair-color: var(--warning-bg),\n    --strength-good-color: var(--info-bg),\n    --strength-strong-color: var(--success-bg),\n  ),\n  $strength-tokens\n);\n// scss-docs-end strength-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start strength-levels\n$strength-levels: weak, fair, good, strong !default;\n// scss-docs-end strength-levels\n\n$strength-transition: background-color .2s ease-in-out, width .3s ease-in-out !default;\n\n@layer forms {\n  // Strength meter container\n  .strength {\n    @include tokens($strength-tokens);\n\n    display: flex;\n    gap: var(--strength-gap);\n    width: 100%;\n    margin-top: var(--strength-margin-top);\n  }\n\n  // Individual strength segments\n  .strength-segment {\n    flex: 1;\n    height: var(--strength-height);\n    background-color: var(--strength-bg);\n    @include border-radius(var(--strength-border-radius));\n    @include transition($strength-transition);\n\n    // Filled state\n    &.active {\n      background-color: var(--strength-color);\n    }\n  }\n\n  @each $level in $strength-levels {\n    .strength[data-bs-strength=\"#{$level}\"] {\n      --strength-color: var(--strength-#{$level}-color);\n    }\n  }\n  // Optional text feedback\n  .strength-text {\n    display: block;\n    margin-top: var(--strength-margin-top);\n    font-size: var(--font-size-xs);\n    color: var(--strength-color, var(--fg-3));\n    @include transition(color .2s ease-in-out);\n\n    // Hide when empty\n    &:empty {\n      display: none;\n    }\n  }\n\n  // Alternative: Single bar variant (like a progress bar)\n  .strength-bar {\n    @include tokens($strength-tokens);\n\n    --strength-color: transparent;\n    --strength-width: 0%;\n\n    width: 100%;\n    height: var(--strength-height);\n    margin-top: var(--strength-margin-top);\n    overflow: hidden;\n    background-color: var(--strength-bg);\n    @include border-radius(var(--strength-border-radius));\n\n    &::after {\n      display: block;\n      width: var(--strength-width);\n      height: 100%;\n      content: \"\";\n      background-color: var(--strength-color);\n      @include border-radius(var(--strength-border-radius));\n      @include transition($strength-transition);\n    }\n\n    @each $level in $strength-levels {\n      &[data-bs-strength=\"#{$level}\"] {\n        --strength-color: var(--strength-#{$level}-color);\n        --strength-width: #{list.index($strength-levels, $level) * 25%};\n      }\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$otp-tokens: () !default;\n\n// scss-docs-start otp-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$otp-tokens: defaults(\n  (\n    --otp-size: var(--btn-input-lg-min-height),\n    --otp-font-size: var(--btn-input-font-size),\n    --otp-gap: .5rem,\n  ),\n  $otp-tokens\n);\n// scss-docs-end otp-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start otp-sizes\n$otp-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$otp-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $otp-sizes\n);\n// scss-docs-end otp-sizes\n\n@layer components {\n  .otp {\n    @include tokens($otp-tokens);\n\n    display: inline-flex;\n    gap: var(--otp-gap);\n\n    .form-control {\n      width: var(--otp-size);\n      min-height: var(--otp-size);\n      padding: 0;\n      font-size: var(--otp-font-size);\n      font-weight: 500;\n      line-height: 1;\n      text-align: center;\n      @include border-radius(var(--otp-border-radius, var(--btn-input-border-radius)));\n\n      // Remove default number spinners\n      &::-webkit-outer-spin-button,\n      &::-webkit-inner-spin-button {\n        margin: 0;\n        appearance: none;\n      }\n\n      &[type=\"number\"] {\n        appearance: textfield;\n      }\n\n      &:focus,\n      &:focus-visible {\n        z-index: 1;\n      }\n    }\n\n    &.is-valid .form-control,\n    .was-validated &:valid .form-control {\n      border-color: var(--form-valid-border-color);\n\n      &:focus {\n        --focus-ring-color: rgba(var(--success-rgb), .25);\n        border-color: var(--form-valid-border-color);\n      }\n    }\n\n    &.is-invalid .form-control,\n    .was-validated &:invalid .form-control {\n      border-color: var(--form-invalid-border-color);\n\n      &:focus {\n        --focus-ring-color: rgba(var(--danger-rgb), .25);\n        border-color: var(--form-invalid-border-color);\n      }\n    }\n  }\n\n  // When used with .input-group, disable the gap and prevent inputs from stretching\n  .otp.input-group {\n    gap: 0;\n    width: auto; // Override input-group's width: 100%\n\n    .form-control {\n      flex: 0 0 auto; // Don't grow or shrink, use fixed width\n    }\n  }\n\n  .otp-separator {\n    display: flex;\n    align-items: center;\n    padding-inline: var(--otp-gap);\n    font-size: var(--otp-font-size);\n    color: var(--fg-4);\n    user-select: none;\n  }\n\n  @each $size, $_ in $otp-sizes {\n    .otp-#{$size} {\n      --otp-size: var(--btn-input-#{$size}-min-height);\n      --otp-font-size: var(--btn-input-#{$size}-font-size);\n      --otp-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n$form-adorn-tokens: () !default;\n\n// scss-docs-start form-adorn-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-adorn-tokens: defaults(\n  (\n    --form-adorn-gap: .375rem,\n    --form-adorn-icon-size: 1rem,\n    --form-adorn-icon-color: var(--fg-2),\n  ),\n  $form-adorn-tokens\n);\n// scss-docs-end form-adorn-tokens\n\n@layer forms {\n  .form-adorn {\n    @include tokens($form-adorn-tokens);\n\n    gap: var(--form-adorn-gap);\n    align-items: center;\n\n    // Prevent default `.form-control` focus\n    &:focus-visible {\n      outline: 0;\n    }\n\n    &:focus-within {\n      --focus-ring-offset: -1px;\n      border-color: var(--focus-ring-color);\n      @include focus-ring(true);\n    }\n\n    // Ghost input fills remaining space\n    > .form-ghost {\n      flex: 1;\n      min-width: 0; // Prevent text overflow\n    }\n\n    &.form-adorn-end > .form-ghost {\n      order: -1;\n    }\n  }\n\n  .form-adorn-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n\n    > svg {\n      width: var(--form-adorn-icon-size);\n      height: var(--form-adorn-icon-size);\n    }\n  }\n\n  .form-adorn-text {\n    flex-shrink: 0;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n    user-select: none;\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n$chip-input-tokens: () !default;\n\n// scss-docs-start chip-input-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$chip-input-tokens: defaults(\n  (\n    --chip-input-padding-y: .75rem,\n    --chip-input-padding-x: .75rem,\n    --chip-input-gap: .375rem,\n    --chip-input-ghost-min-width: 5rem,\n    --control-fg: var(--btn-input-fg),\n    --control-bg: var(--btn-input-bg),\n    --control-border-width: var(--border-width),\n    --control-border-color: var(--border-color),\n    --control-border-radius: var(--border-radius),\n  ),\n  $chip-input-tokens\n);\n// scss-docs-end chip-input-tokens\n\n@layer forms {\n  .chip-input {\n    @include tokens($chip-input-tokens);\n\n    // Flexbox wrapping layout\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--chip-input-gap);\n    align-items: center;\n    padding: var(--chip-input-padding-y) var(--chip-input-padding-x);\n\n    color: var(--control-fg);\n    background-color: var(--control-bg);\n    border: var(--control-border-width) solid var(--control-border-color);\n    @include border-radius(var(--control-border-radius), 0);\n\n    // Focus state when ghost input is focused\n    &:focus-within {\n      --focus-ring-offset: -1px;\n      border-color: var(--focus-ring-color);\n      @include focus-ring(true);\n    }\n\n    // Ghost input fills remaining space\n    > .form-ghost {\n      flex: 1 1 0;\n      min-width: var(--chip-input-ghost-min-width);\n      min-height: 1.75rem;\n    }\n\n    // Disabled state\n    &.disabled,\n    &:has(.form-ghost:disabled) {\n      background-color: var(--bg-2);\n      opacity: 1;\n\n      > .chip {\n        opacity: var(--control-disabled-opacity);\n\n        .chip-dismiss {\n          pointer-events: none;\n        }\n      }\n\n      > .form-ghost {\n        cursor: not-allowed;\n      }\n    }\n  }\n\n  // Theme cascade: .chip-input.theme-* passes theme to child chips\n  // Chips inherit theme variables from parent\n  // @each $color-name, $theme-props in $theme-map {\n  //   .chip-input.theme-#{$color-name} > .chip {\n  //     // Subtle default state\n  //     --chip-color: var(--theme-text);\n  //     --chip-bg: var(--theme-bg-subtle);\n\n  //     // Selected/active solid state\n  //     --chip-selected-color: var(--theme-contrast);\n  //     --chip-selected-bg: var(--theme-bg);\n  //     --chip-selected-border-color: var(--theme-bg);\n  //   }\n  // }\n\n  // // Sizing variants\n  // .chip-input-sm {\n  //   --control-min-height: #{$control-min-height-sm};\n  //   --control-padding-y: #{$control-padding-y-sm};\n  //   --control-padding-x: #{$control-padding-x-sm};\n  //   --control-font-size: #{$control-font-size-sm};\n  //   --control-line-height: #{$control-line-height-sm};\n  //   --control-border-radius: #{$control-border-radius-sm};\n  //   --chip-input-gap: .25rem;\n  //   --chip-input-chip-font-size: .8125em;\n  // }\n\n  // .chip-input-lg {\n  //   --control-min-height: #{$control-min-height-lg};\n  //   --control-padding-y: #{$control-padding-y-lg};\n  //   --control-padding-x: #{$control-padding-x-lg};\n  //   --control-font-size: #{$control-font-size-lg};\n  //   --control-line-height: #{$control-line-height-lg};\n  //   --control-border-radius: #{$control-border-radius-lg};\n  //   --chip-input-gap: .5rem;\n  //   --chip-input-chip-font-size: .9375em;\n  // }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/reset-text\" as *;\n@use \"mixins/tokens\" as *;\n\n$tooltip-tokens: () !default;\n\n// scss-docs-start tooltip-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$tooltip-tokens: defaults(\n  (\n    --tooltip-zindex: #{$zindex-tooltip},\n    --tooltip-max-width: 200px,\n    --tooltip-padding-x: #{$spacer * .75},\n    --tooltip-padding-y: #{$spacer * .375},\n    --tooltip-font-size: var(--font-size-sm),\n    --tooltip-color: var(--bg-body),\n    --tooltip-bg: var(--fg-body),\n    --tooltip-border-radius: var(--border-radius),\n    --tooltip-opacity: .95,\n    --tooltip-arrow-width: .8rem,\n    --tooltip-arrow-height: .4rem,\n  ),\n  $tooltip-tokens\n);\n// scss-docs-end tooltip-tokens\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y:     var(--tooltip-padding-y) !default;\n$form-feedback-tooltip-padding-x:     var(--tooltip-padding-x) !default;\n$form-feedback-tooltip-font-size:     var(--tooltip-font-size) !default;\n$form-feedback-tooltip-line-height:   null !default;\n$form-feedback-tooltip-opacity:       var(--tooltip-opacity) !default;\n$form-feedback-tooltip-border-radius: var(--tooltip-border-radius) !default;\n// scss-docs-end tooltip-feedback-variables\n\n@layer components {\n  .tooltip {\n    @include tokens($tooltip-tokens);\n\n    z-index: var(--tooltip-zindex);\n    display: block;\n    // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n    // So reset our font and text properties to avoid inheriting weird values.\n    @include reset-text();\n    font-size: var(--tooltip-font-size);\n    // Allow breaking very long words so they don't overflow the tooltip's bounds\n    word-wrap: break-word;\n    opacity: 0;\n\n    &.show { opacity: var(--tooltip-opacity); }\n\n    .tooltip-arrow {\n      display: block;\n      width: var(--tooltip-arrow-width);\n      height: var(--tooltip-arrow-height);\n\n      &::before {\n        position: absolute;\n        content: \"\";\n        border-color: transparent;\n        border-style: solid;\n      }\n    }\n  }\n\n  .bs-tooltip-top .tooltip-arrow {\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n\n    &::before {\n      top: -1px;\n      border-width: var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * .5) 0;\n      border-block-start-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-end .tooltip-arrow {\n    left: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n\n    &::before {\n      right: -1px;\n      border-width: calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * .5) 0;\n      border-inline-end-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-bottom .tooltip-arrow {\n    top: calc(-1 * var(--tooltip-arrow-height));\n\n    &::before {\n      bottom: -1px;\n      border-width: 0 calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height);\n      border-block-end-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-start .tooltip-arrow {\n    right: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n\n    &::before {\n      left: -1px;\n      border-width: calc(var(--tooltip-arrow-width) * .5) 0 calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height);\n      border-inline-start-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-auto {\n    &[data-bs-placement^=\"top\"] {\n      @extend .bs-tooltip-top;\n    }\n    &[data-bs-placement^=\"right\"] {\n      @extend .bs-tooltip-end;\n    }\n    &[data-bs-placement^=\"bottom\"] {\n      @extend .bs-tooltip-bottom;\n    }\n    &[data-bs-placement^=\"left\"] {\n      @extend .bs-tooltip-start;\n    }\n  }\n\n  // Wrapper for the tooltip content\n  .tooltip-inner {\n    max-width: var(--tooltip-max-width);\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    color: var(--tooltip-color);\n    text-align: center;\n    background-color: var(--tooltip-bg);\n    @include border-radius(var(--tooltip-border-radius));\n  }\n}\n","@mixin reset-text {\n  font-family: var(--body-font-family);\n  // We deliberately do NOT reset font-size or overflow-wrap / word-wrap.\n  font-style: normal;\n  font-weight: var(--body-font-weight);\n  line-height: var(--body-line-height);\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  white-space: normal;\n  word-spacing: normal;\n  line-break: auto;\n}\n","@use \"../config\" as *;\n@use \"../variables\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"form-variables\" as *;\n@use \"../tooltip\" as *; // bring in tooltip variables\n\n// Form validation\n//\n// Provide feedback to users when form field values are valid or invalid. Works\n// primarily for client-side validation via scoped `:invalid` and `:valid`\n// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for\n// server-side validation.\n\n// This mixin uses an `if()` technique to be compatible with Dart Sass\n// See https://github.com/sass/sass/issues/1873#issuecomment-152293725 for more details\n\n// scss-docs-start form-validation-mixins\n@mixin form-validation-state-selector($state) {\n  @if ($state == \"valid\" or $state == \"invalid\") {\n    .was-validated #{if(sass(&): \"&\"; else: \"\")}:#{$state},\n    #{if(sass(&): \"&\"; else: \"\")}.is-#{$state} {\n      @content;\n    }\n  } @else {\n    #{if(sass(&): \"&\"; else: \"\")}.is-#{$state} {\n      @content;\n    }\n  }\n}\n\n@mixin form-validation-state(\n  $state,\n  $color,\n  $icon,\n  $tooltip-color: color-contrast($color),\n  $tooltip-bg-color: rgba($color, $form-feedback-tooltip-opacity),\n  $focus-ring-color: null, // mdo-do: fix\n  $border-color: $color\n) {\n  .#{$state}-feedback {\n    display: none;\n    width: 100%;\n    margin-top: $form-feedback-margin-top;\n    font-size: $form-feedback-font-size;\n    font-style: $form-feedback-font-style;\n    color: $color;\n  }\n\n  .#{$state}-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%; // Contain to parent when possible\n    padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\n    margin-top: .1rem;\n    font-size: $form-feedback-tooltip-font-size;\n    line-height: $form-feedback-tooltip-line-height;\n    color: $tooltip-color;\n    background-color: $tooltip-bg-color;\n    @include border-radius($form-feedback-tooltip-border-radius);\n  }\n\n  @include form-validation-state-selector($state) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip {\n      display: block;\n    }\n  }\n\n  .form-control {\n    @include form-validation-state-selector($state) {\n      border-color: $border-color;\n\n      @if $enable-validation-icons {\n        padding-inline-end: calc(var(--control-padding-x) * 3.5);\n        background-image: escape-svg($icon);\n        background-repeat: no-repeat;\n        background-position: right var(--control-padding-x) center;\n        background-size: 1rem;\n      }\n\n      &:focus-visible {\n        @include focus-ring(true, $color: $focus-ring-color);\n        border-color: $border-color;\n      }\n    }\n\n    &::-webkit-contacts-auto-fill-button {\n      @if $enable-validation-icons {\n        // margin-inline-end: calc(var(--control-padding-x) * 3);\n      }\n    }\n  }\n\n  // stylelint-disable-next-line selector-no-qualifying-type\n  textarea.form-control {\n    @include form-validation-state-selector($state) {\n      @if $enable-validation-icons {\n        // padding-inline-end: $input-height-inner;\n        background-position: right var(--control-padding-x) top var(--control-padding-x);\n        // background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\n      }\n    }\n  }\n\n  .form-control-color {\n    @include form-validation-state-selector($state) {\n      @if $enable-validation-icons {\n        // width: add($form-color-width, $input-height-inner);\n      }\n    }\n  }\n\n  .form-check-input {\n    @include form-validation-state-selector($state) {\n      border-color: $border-color;\n\n      &:checked {\n        background-color: $color;\n      }\n\n      &:focus {\n        // box-shadow: $focus-box-shadow;\n      }\n\n      ~ .form-check-label {\n        color: $color;\n      }\n    }\n  }\n  .form-check-inline .form-check-input {\n    ~ .#{$state}-feedback {\n      margin-inline-start: .5em;\n    }\n  }\n\n  .input-group {\n    > .form-control:not(:focus),\n    > .form-select:not(:focus),\n    > .form-floating:not(:focus-within) {\n      @include form-validation-state-selector($state) {\n        @if $state == \"valid\" {\n          z-index: 3;\n        } @else if $state == \"invalid\" {\n          z-index: 4;\n        }\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-mixins\n\n@layer components {\n  // scss-docs-start form-validation-states-loop\n  @each $state, $data in $form-validation-states {\n    @include form-validation-state($state, $data...);\n  }\n  // scss-docs-end form-validation-states-loop\n}\n","// scss-docs-start form-feedback-variables\n$form-feedback-margin-top:          .5rem !default;\n$form-feedback-font-size:           var(--font-size-xs) !default;\n$form-feedback-font-style:          null !default;\n$form-feedback-valid-color:         var(--success-text) !default;\n$form-feedback-invalid-color:       var(--danger-text) !default;\n\n$form-feedback-icon-valid-color:    #00a748 !default;\n$form-feedback-icon-valid:          url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1'/></svg>\") !default;\n$form-feedback-icon-invalid-color:  #dd0d37 !default;\n$form-feedback-icon-invalid:        url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-colors\n$form-valid-color:                  $form-feedback-valid-color !default;\n$form-valid-border-color:           $form-feedback-valid-color !default;\n$form-invalid-color:                $form-feedback-invalid-color !default;\n$form-invalid-border-color:         $form-feedback-invalid-color !default;\n// scss-docs-end form-validation-colors\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n  \"valid\": (\n    \"color\": var(--form-valid-color),\n    \"icon\": $form-feedback-icon-valid,\n    \"tooltip-color\": var(--success-contrast),\n    \"tooltip-bg-color\": var(--success-bg),\n    \"focus-ring-color\": var(--success-focus-ring),\n    \"border-color\": var(--success-border),\n  ),\n  \"invalid\": (\n    \"color\": var(--form-invalid-color),\n    \"icon\": $form-feedback-icon-invalid,\n    \"tooltip-color\": var(--danger-contrast),\n    \"tooltip-bg-color\": var(--danger-bg),\n    \"focus-ring-color\": var(--danger-focus-ring),\n    \"border-color\": var(--danger-border),\n  )\n) !default;\n// scss-docs-end form-validation-states\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n@use \"sass:string\";\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n$button-tokens: () !default;\n\n// scss-docs-start btn-tokens\n$button-tokens: defaults(\n  (\n    --btn-min-height: var(--btn-input-min-height),\n    --btn-padding-x: var(--btn-input-padding-x),\n    --btn-padding-y: var(--btn-input-padding-y),\n    --btn-font-size: var(--btn-input-font-size),\n    --btn-font-weight: var(--btn-input-font-weight),\n    --btn-line-height: var(--btn-input-line-height),\n    --btn-color: var(--fg-body),\n    --btn-white-space: nowrap,\n    --btn-border-width: var(--border-width),\n    --btn-border-color: transparent,\n    --btn-border-radius: var(--border-radius),\n    --btn-hover-border-color: transparent,\n    --btn-disabled-opacity: .65,\n    --btn-transition-timing: .15s ease-in-out,\n    --btn-transition-property: \"color, background-color, border-color, box-shadow\",\n    --btn-transition: var(--btn-transition-property) var(--btn-transition-timing),\n  ),\n  $button-tokens\n);\n// scss-docs-end btn-tokens\n\n$button-link-tokens: () !default;\n\n// scss-docs-start button-link-tokens\n$button-link-tokens: defaults(\n  (\n    --btn-font-weight: var(--font-weight-normal),\n    --btn-color: var(--link-color),\n    --btn-bg: transparent,\n    --btn-border-color: transparent,\n    --btn-hover-color: var(--link-hover-color),\n    --btn-hover-bg: transparent,\n    --btn-hover-border-color: transparent,\n    --btn-active-color: var(--link-hover-color),\n    --btn-active-bg: transparent,\n    --btn-active-border-color: transparent,\n    --btn-disabled-color: var(--fg-3),\n    --btn-disabled-border-color: transparent,\n  ),\n  $button-link-tokens\n);\n// scss-docs-end button-link-tokens\n\n$button-styled-tokens: () !default;\n\n// scss-docs-start button-styled-tokens\n$button-styled-tokens: defaults(\n  (\n    --btn-gradient-start: rgb(255 255 255 / 12.5%),\n    --btn-gradient-end: rgb(0 0 0 / 7.5%) ,\n    --btn-border-mix-color: #000,\n    --btn-border-mix-amount: 10%,\n    --btn-border-hover-mix-amount: 12.5%,\n    --btn-border-active-mix-amount: 20%,\n    --btn-shadow: \"0 1px 2px rgb(0 0 0 / 15%), inset 0 1px 0 rgb(255 255 255 / 10%)\",\n    --btn-active-shadow: inset 0 2px 4px rgba(0, 0, 0, .15) ,\n  ),\n  $button-styled-tokens\n);\n// scss-docs-end button-styled-tokens\n\n// scss-docs-start button-sizes\n$button-sizes: () !default;\n$button-sizes: defaults(\n  (\"xs\", \"sm\", \"lg\"),\n  $button-sizes\n);\n// scss-docs-end button-sizes\n\n$button-variants: () !default;\n\n// scss-docs-start btn-variants\n$button-variants: defaults(\n  (\n    \"solid\": (\n      \"base\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      ),\n      \"hover\": (\n        \"bg\": \"bg\",\n        \"border-color\": \"bg\",\n        \"color\": \"contrast\"\n      ),\n      \"active\": (\n        \"bg\": \"bg\",\n        \"border-color\": \"bg\",\n        \"color\": \"contrast\"\n      )\n    ),\n    \"outline\": (\n      \"base\": (\n        \"bg\": \"transparent\",\n        \"color\": \"text\",\n        \"border-color\": \"border\"\n      ),\n      \"hover\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      ),\n      \"active\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      )\n    ),\n    \"subtle\": (\n      \"base\": (\n        \"bg\": \"bg-subtle\",\n        \"color\": \"text\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"bg\": (\"bg-muted\", \"bg-subtle\"),\n        \"color\": \"text-emphasis\"\n      ),\n      \"active\": (\n        \"bg\": \"bg-subtle\",\n        \"color\": \"text-emphasis\"\n      )\n    ),\n    \"text\": (\n      \"base\": (\n        \"color\": \"text\",\n        \"bg\": \"transparent\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"color\": \"text\",\n        \"bg\": \"bg-subtle\"\n      ),\n      \"active\": (\n        \"color\": \"text\",\n        \"bg\": \"bg-subtle\"\n      )\n    )\n  ),\n  $button-variants\n);\n// scss-docs-end btn-variants\n// stylelint-enable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n//\n// Base styles\n//\n\n// scss-docs-start btn-variant-selectors\n$btn-variant-selectors: (string.unquote(\".btn\"), string.unquote(\".btn-link\"), string.unquote(\".btn-icon\")) !default;\n@each $variant, $config in $button-variants {\n  $btn-variant-selectors: list.append($btn-variant-selectors, string.unquote(\".btn-#{$variant}\"), comma);\n}\n// scss-docs-end btn-variant-selectors\n\n@layer components {\n  #{$btn-variant-selectors} {\n    @include tokens($button-tokens);\n\n    display: inline-flex;\n    gap: var(--btn-gap, .25rem);\n    align-items: center;\n    justify-content: center;\n    min-height: var(--btn-min-height);\n    padding: var(--btn-padding-y) var(--btn-padding-x);\n    // font-family: var(--btn-font-family);\n    font-size: var(--btn-font-size);\n    font-weight: var(--btn-font-weight);\n    line-height: var(--btn-line-height);\n    color: var(--btn-color);\n    text-decoration: none;\n    white-space: var(--btn-white-space);\n    vertical-align: middle;\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    cursor: if(sass($enable-button-pointers): pointer; else: null);\n    user-select: none;\n    background-color: var(--btn-bg, var(--bg-2));\n    border: var(--btn-border-width) solid var(--btn-border-color);\n    @include border-radius(var(--btn-border-radius));\n    @include transition(var(--btn-transition));\n\n    &:hover {\n      color: var(--btn-hover-color);\n      background-color: var(--btn-hover-bg, var(--bg-3));\n      border-color: var(--btn-hover-border-color);\n    }\n\n    &:focus-visible {\n      @include focus-ring(true);\n      --focus-ring-offset: 1px;\n    }\n\n    &.active,\n    &.show {\n      color: var(--btn-active-color);\n      background-color: var(--btn-active-bg, var(--bg-3));\n      border-color: var(--btn-active-border-color);\n\n      &:focus-visible {\n        @include focus-ring(true);\n      }\n    }\n\n    &:disabled,\n    &.disabled,\n    fieldset:disabled & {\n      color: var(--btn-disabled-color);\n      pointer-events: none;\n      background-color: var(--btn-disabled-bg, var(--bg-1));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-disabled-border-color);\n      opacity: var(--btn-disabled-opacity);\n    }\n  }\n\n  // Main button style generator mixin\n  // Generate button variant classes (e.g., .btn-solid, .btn-outline, etc.)\n  // scss-docs-start btn-variant-mixin\n  @each $variant, $config in $button-variants {\n    .btn-#{$variant} {\n      @each $property, $value in map.get($button-variants, $variant, \"base\") {\n        @if $value == \"transparent\" {\n          --btn-#{$property}: transparent;\n        } @else {\n          --btn-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      @each $property, $value in map.get($button-variants, $variant, \"active\") {\n        @if $value == \"transparent\" {\n          --btn-active-#{$property}: transparent;\n        } @else if $value == \"bg-subtle\" {\n          --btn-active-#{$property}: var(--theme-#{$value});\n        } @else {\n          --btn-active-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .9) calc(c * 1.15) h);\n        }\n      }\n      @each $property, $value in map.get($button-variants, $variant, \"base\") {\n        @if $value == \"transparent\" {\n          --btn-disabled-#{$property}: transparent;\n        } @else {\n          --btn-disabled-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      &:hover {\n        @each $property, $value in map.get($button-variants, $variant, \"hover\") {\n          @if $value == \"transparent\" {\n            --btn-hover-#{$property}: transparent;\n          } @else if meta.type-of($value) == \"list\" {\n            $first-value: list.nth($value, 1);\n            $second-value: list.nth($value, 2);\n            --btn-hover-#{$property}: color-mix(in oklch, var(--theme-#{$first-value}) 50%, var(--theme-#{$second-value}));\n          } @else if $value == \"bg-subtle\" {\n            --btn-hover-#{$property}: var(--theme-#{$value});\n          } @else {\n            --btn-hover-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .95) calc(c * 1.1) h);\n          }\n        }\n      }\n\n      &:focus-visible {\n        outline-color: var(--theme-focus-ring);\n      }\n\n      &:active,\n      &.active,\n      &.btn-check:has(input:checked) {\n        @each $property, $value in map.get($button-variants, $variant, \"active\") {\n          @if $value == \"transparent\" {\n            --btn-active-#{$property}: transparent;\n          } @else if $value == \"bg-subtle\" {\n            --btn-active-#{$property}: var(--theme-#{$value});\n          } @else {\n            --btn-active-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .9) calc(c * 1.15) h);\n          }\n        }\n      }\n\n      // Disabled state for toggle buttons\n      &:disabled,\n      &.disabled,\n      &.btn-check:has(input:disabled) {\n        @each $property, $value in map.get($button-variants, $variant, \"base\") {\n          @if $value == \"transparent\" {\n            --btn-disabled-#{$property}: transparent;\n          } @else {\n            --btn-disabled-#{$property}: var(--theme-#{$value});\n          }\n        }\n      }\n    }\n  }\n  // scss-docs-end btn-variant-mixin\n\n  //\n  // Link buttons\n  //\n\n  // Make a button look and behave like a link\n  .btn-link {\n    @include tokens($button-link-tokens);\n\n    color: var(--theme-text, var(--btn-color));\n    text-decoration: var(--link-decoration);\n\n    @if $enable-gradients {\n      background-image: none;\n    }\n\n    &:focus-visible {\n      color: var(--theme-text, var(--btn-color));\n    }\n\n    &:hover {\n      color: var(--theme-text-emphasis, var(--btn-hover-color));\n    }\n\n    // No need for an active state here\n  }\n\n  //\n  // Button Sizes\n  //\n\n  // Generate button size classes from the $button-sizes map\n  // Skip \"md\" as it's the default size for .btn\n\n  // scss-docs-start btn-sizes-loop\n  @each $size, $_ in $button-sizes {\n    .btn-#{$size},\n    .btn-group-#{$size} > [class*=\"btn-\"] {\n      --btn-min-height: var(--btn-input-#{$size}-min-height);\n      --btn-padding-y: var(--btn-input-#{$size}-padding-y);\n      --btn-padding-x: var(--btn-input-#{$size}-padding-x);\n      --btn-font-size: var(--btn-input-#{$size}-font-size);\n      --btn-line-height: var(--btn-input-#{$size}-line-height);\n      --btn-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n  // scss-docs-end btn-sizes-loop\n\n  .btn-icon {\n    align-items: center;\n    justify-content: center;\n    aspect-ratio: 1;\n    padding: 0;\n  }\n\n  //\n  // Toggle buttons (.btn-check)\n  //\n  // Checkbox and radio inputs that look like buttons. Add .btn-check to a\n  // label with button classes, with the input nested inside.\n  //\n  // Example: <label class=\"btn-check btn-solid theme-primary\"><input type=\"checkbox\">Toggle</label>\n\n  .btn-check {\n    > input {\n      position: absolute;\n      clip: rect(0, 0, 0, 0);\n      pointer-events: none;\n    }\n\n    &:has(input:checked) {\n      color: var(--btn-active-color);\n      background-color: var(--btn-active-bg, var(--bg-3));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-active-border-color);\n      @include box-shadow(var(--btn-active-shadow));\n    }\n\n    &:has(input:focus-visible) {\n      @include focus-ring(true);\n      --focus-ring-offset: 1px;\n    }\n\n    &:has(input:disabled) {\n      color: var(--btn-disabled-color);\n      pointer-events: none;\n      background-color: var(--btn-disabled-bg, var(--bg-1));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-disabled-border-color);\n      opacity: var(--btn-disabled-opacity);\n      @include box-shadow(none);\n    }\n  }\n\n  //\n  // Styled buttons\n  //\n  // Add visual depth with gradients and shadows. Customize via CSS variables.\n\n  .btn-styled {\n    @include tokens($button-styled-tokens);\n\n    background-image:\n      linear-gradient(\n        to bottom,\n        var(--btn-gradient-start),\n        var(--btn-gradient-end)\n      );\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-mix-amount));\n    box-shadow: var(--btn-shadow);\n\n    &:hover {\n      background-image:\n        linear-gradient(\n          to bottom,\n          var(--btn-gradient-start),\n          var(--btn-gradient-end)\n        );\n      border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-hover-mix-amount));\n    }\n\n    &:active,\n    &.active {\n      background-image: none;\n      border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-active-mix-amount));\n      box-shadow: var(--btn-active-shadow);\n    }\n\n    &:disabled,\n    &.disabled {\n      background-image: none;\n      box-shadow: none;\n    }\n  }\n}\n","@use \"../mixins/border-radius\" as *;\n\n@layer components {\n  // Make the div behave like a button\n  .btn-group,\n  .btn-group-vertical {\n    position: relative;\n    display: inline-flex;\n    vertical-align: middle; // match .btn alignment given font-size hack above\n\n    > [class*=\"btn-\"] {\n      position: relative;\n      flex: 1 1 auto;\n\n      &:hover {\n        z-index: 1;\n      }\n    }\n\n    > .btn-check:has(input:checked),\n    > [class*=\"btn-\"]:active,\n    > [class*=\"btn-\"].active {\n      z-index: 2;\n    }\n\n    > .btn-check:has(input:focus),\n    > [class*=\"btn-\"]:focus {\n      z-index: 3;\n    }\n  }\n\n  // Optional: Group multiple button groups together for a toolbar\n  .btn-toolbar {\n    display: flex;\n    flex-wrap: wrap;\n    gap: .5rem;\n    justify-content: flex-start;\n\n    .input-group {\n      width: auto;\n    }\n  }\n\n  .btn-group {\n    @include border-radius(var(--btn-border-radius));\n\n    // Prevent double borders when buttons are next to each other\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) {\n      margin-inline-start: calc(-1 * var(--btn-border-width));\n    }\n\n    // Reset rounded corners\n    > [class*=\"btn-\"]:not(:last-child):not(.dropdown-toggle),\n    > .btn-group:not(:last-child) > [class*=\"btn-\"] {\n      @include border-end-radius(0);\n    }\n\n    // The left radius should be 0 if the button is not the first child\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) > [class*=\"btn-\"] {\n      @include border-start-radius(0);\n    }\n  }\n\n  //\n  // Split button dropdowns\n  //\n\n  .dropdown-toggle-split {\n    padding-inline: calc(var(--btn-padding-x) * .75);\n\n    &::after,\n    .dropup &::after,\n    .dropend &::after {\n      margin-inline-start: 0;\n    }\n\n    .dropstart &::before {\n      margin-inline-end: 0;\n    }\n  }\n\n  //\n  // Vertical button groups\n  //\n\n  .btn-group-vertical {\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: center;\n\n    > [class*=\"btn-\"],\n    > .btn-group {\n      width: 100%;\n    }\n\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) {\n      margin-top: calc(-1 * var(--btn-border-width));\n    }\n\n    // Reset rounded corners\n    > [class*=\"btn-\"]:not(:last-child):not(.dropdown-toggle),\n    > .btn-group:not(:last-child) > [class*=\"btn-\"] {\n      @include border-bottom-radius(0);\n    }\n\n    // The top radius should be 0 if the button is not the first child\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) > [class*=\"btn-\"] {\n      @include border-top-radius(0);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n$btn-close-tokens: () !default;\n\n// scss-docs-start btn-close-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$btn-close-tokens: defaults(\n  (\n    --btn-close-size: 1.25rem,\n    --btn-close-color: var(--fg-body),\n    --btn-close-opacity: .5,\n    --btn-close-hover-opacity: .75,\n    --btn-close-focus-opacity: .85,\n    --btn-close-disabled-opacity: .25,\n  ),\n  $btn-close-tokens\n);\n// scss-docs-end btn-close-tokens\n\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n@layer components {\n  .btn-close {\n    @include tokens($btn-close-tokens);\n\n    box-sizing: content-box;\n    width: var(--btn-close-size);\n    height: var(--btn-close-size);\n    padding: 0;\n    color: var(--btn-close-color);\n    background: transparent; // for button elements\n    border: 0; // for button elements\n    @include border-radius(var(--border-radius-sm));\n    opacity: var(--btn-close-opacity);\n\n    > svg {\n      display: block;\n      width: 100%;\n      height: 100%;\n      fill: currentcolor;\n    }\n\n    // Override <a>'s hover style\n    &:hover {\n      color: var(--btn-close-color);\n      text-decoration: none;\n      opacity: var(--btn-close-hover-opacity);\n    }\n\n    &:focus-visible {\n      opacity: var(--btn-close-focus-opacity);\n      @include focus-ring();\n    }\n\n    &:disabled,\n    &.disabled {\n      pointer-events: none;\n      user-select: none;\n      opacity: var(--btn-close-disabled-opacity);\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/tokens\" as *;\n\n$accordion-tokens: () !default;\n\n// scss-docs-start accordion-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$accordion-tokens: defaults(\n  (\n    --accordion-padding-x: 1.25rem,\n    --accordion-padding-y: 1rem,\n    --accordion-color: var(--fg-body),\n    --accordion-bg: var(--bg-body),\n    --accordion-transition-property: \"color, background-color, border-radius\",\n    --accordion-transition-timing: \".15s ease-in-out\",\n    --accordion-transition: var(--accordion-transition-property) var(--accordion-timing),\n    --accordion-border-color: var(--border-color),\n    --accordion-border-width: var(--border-width),\n    --accordion-border-radius: var(--accordion-radius, var(--border-radius-lg)),\n    --accordion-btn-color: var(--fg-2),\n    --accordion-btn-bg: var(--bg-body),\n    --accordion-btn-icon-width: 1rem,\n    --accordion-btn-icon-transform: rotate(-180deg),\n    --accordion-btn-icon-transition: transform .2s ease-in-out,\n    --accordion-active-color: var(--fg),\n    --accordion-active-bg: var(--bg-2),\n  ),\n  $accordion-tokens\n);\n// scss-docs-end accordion-tokens\n\n@layer components {\n  .accordion {\n    @include tokens($accordion-tokens);\n  }\n\n  .accordion-header {\n    display: flex;\n    align-items: center;\n    width: 100%;\n    padding: var(--accordion-btn-padding-y, var(--accordion-padding-y)) var(--accordion-btn-padding-x, var(--accordion-padding-x));\n    font-size: var(--accordion-font-size, var(--font-size-base));\n    color: var(--accordion-btn-color);\n    text-align: start;\n    list-style: none; // Remove default marker\n    cursor: pointer;\n    background-color: var(--accordion-btn-bg);\n    @include transition(var(--accordion-transition));\n\n    .accordion-icon {\n      flex-shrink: 0;\n      width: var(--accordion-btn-icon-width);\n      height: var(--accordion-btn-icon-width);\n      margin-inline-start: auto;\n      color: currentcolor;\n      @include transition(var(--accordion-btn-icon-transition));\n    }\n\n    &:hover {\n      z-index: 2;\n    }\n\n    &:focus-visible {\n      position: relative;\n      z-index: 3;\n      @include focus-ring(true);\n      outline-offset: -1px;\n    }\n  }\n\n  .accordion-item {\n    color: var(--accordion-color);\n    background-color: var(--accordion-bg);\n    border: var(--accordion-border-width) solid var(--accordion-border-color);\n\n    &:first-of-type {\n      @include border-top-radius(var(--accordion-border-radius));\n\n      > .accordion-header {\n        @include border-top-radius(calc(var(--accordion-border-radius) - var(--accordion-border-width)));\n      }\n    }\n\n    &:not(:first-of-type) {\n      border-block-start: 0;\n    }\n\n    // Only set a border-radius on the last item if the accordion is collapsed\n    &:last-of-type {\n      @include border-bottom-radius(var(--accordion-border-radius));\n\n      > .accordion-header {\n        @include border-bottom-radius(calc(var(--accordion-border-radius) - var(--accordion-border-width)));\n      }\n\n      > .accordion-body {\n        @include border-bottom-radius(var(--accordion-border-radius));\n      }\n    }\n\n    // Open state - details[open] applies these styles\n    &[open] {\n      border-color: var(--theme-border, var(--accordion-border-color));\n\n      > .accordion-header {\n        color: var(--theme-text, var(--accordion-active-color));\n        background-color: var(--theme-bg-subtle, var(--accordion-active-bg));\n        box-shadow: inset 0 calc(-1 * var(--accordion-border-width)) 0 var(--theme-border, var(--accordion-border-color));\n\n        .accordion-icon {\n          transform: var(--accordion-btn-icon-transform);\n        }\n      }\n\n      // Remove bottom radius from header when open (even on last item)\n      &:last-of-type > .accordion-header {\n        @include border-bottom-radius(0);\n      }\n    }\n  }\n\n  .accordion-body {\n    padding: var(--accordion-body-padding-y, var(--accordion-padding-y)) var(--accordion-body-padding-x, var(--accordion-padding-x));\n  }\n\n\n  // Flush accordion items\n  //\n  // Remove borders and border-radius to keep accordion items edge-to-edge.\n\n  .accordion-flush {\n    > .accordion-item {\n      border-inline: 0;\n      @include border-radius(0);\n\n      &:first-child {\n        border-block-start: 0;\n      }\n\n      &:last-child {\n        border-block-end: 0;\n      }\n\n      > .accordion-header,\n      > .accordion-body {\n        @include border-radius(0);\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$alert-tokens: () !default;\n\n// scss-docs-start alert-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$alert-tokens: defaults(\n  (\n    --alert-gap: #{$spacer * .75},\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1)),\n    --alert-padding-x: #{$spacer},\n    --alert-padding-y: #{$spacer},\n    --alert-color: var(--theme-text, inherit),\n    --alert-border-color: var(--theme-border, var(--border-color)),\n    --alert-border: var(--border-width) solid var(--alert-border-color),\n    --alert-border-radius: var(--border-radius),\n    --alert-link-color: inherit,\n    --hr-border-color: var(--theme-border, var(--border-color)),\n  ),\n  $alert-tokens\n);\n// scss-docs-end alert-tokens\n\n@layer components {\n  .alert {\n    @include tokens($alert-tokens);\n\n    display: flex;\n    gap: var(--alert-gap);\n    align-items: start;\n    padding: var(--alert-padding-y) var(--alert-padding-x);\n    color: var(--alert-color);\n    background-color: var(--alert-bg);\n    border: var(--alert-border);\n    @include border-radius(var(--alert-border-radius));\n  }\n\n  .alert-heading {\n    // Specified to prevent conflicts of changing $headings-color\n    color: inherit;\n  }\n\n  // Provide class for links that match alerts\n  .alert-link {\n    font-weight: var(--font-weight-semibold);\n    color: var(--alert-link-color);\n  }\n}\n","@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n$avatar-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start avatar-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$avatar-tokens: defaults(\n  (\n    --avatar-size: 2.5rem,\n    --avatar-border-radius: 50%,\n    --avatar-border-width: 2px,\n    --avatar-border-color: var(--bg-body),\n    --avatar-bg: var(--bg-2),\n    --avatar-color: var(--fg-body),\n    // --avatar-font-weight: var(--font-weight-medium), // Defaults to fallback\n    --avatar-status-size: .75rem,\n    --avatar-status-border-width: 2px,\n    --avatar-status-border-color: var(--bg-body),\n    --avatar-stack-spacing: -.3,\n    --avatar-stack-transition: \"transform .2s ease-in-out\",\n  ),\n  $avatar-tokens\n);\n// scss-docs-end avatar-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start avatar-sizes\n$avatar-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$avatar-sizes: defaults(\n  (\n    \"xs\": (\n      size: 1.5rem,\n      status-size: .625rem,\n    ),\n    \"sm\": (\n      size: 2rem,\n    ),\n    \"lg\": (\n      size: 3rem,\n      status-size: 1rem,\n    ),\n    \"xl\": (\n      size: 4rem,\n      status-size: 1.25rem,\n    ),\n  ),\n  $avatar-sizes\n);\n// scss-docs-end avatar-sizes\n\n@layer components {\n  .avatar {\n    @include tokens($avatar-tokens);\n\n    position: relative;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--avatar-size);\n    height: var(--avatar-size);\n    font-size: calc(var(--avatar-size) * .4);\n    font-weight: var(--avatar-font-weight, var(--font-weight-medium));\n    line-height: 1;\n    color: var(--theme-contrast, var(--avatar-color));\n    text-transform: uppercase;\n    vertical-align: middle;\n    background-color: var(--theme-bg, var(--avatar-bg));\n    @include border-radius(var(--avatar-border-radius));\n  }\n\n  .avatar-subtle {\n    color: var(--theme-text, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n\n  .avatar-img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    @include border-radius(inherit);\n  }\n\n  .avatar-status {\n    position: absolute;\n    right: calc(var(--avatar-status-border-width) * -1);\n    bottom: calc(var(--avatar-status-border-width) * -1);\n    width: var(--avatar-status-size);\n    height: var(--avatar-status-size);\n    background-color: var(--gray-400);\n    border: var(--avatar-status-border-width) solid var(--avatar-status-border-color);\n    @include border-radius(50%);\n\n    &.status-online {\n      background-color: var(--green-500);\n    }\n\n    &.status-offline {\n      background-color: var(--gray-400);\n      @include border-radius(20%);\n    }\n\n    &.status-busy {\n      background-color: var(--red-500);\n      @include border-radius(20%);\n    }\n\n    &.status-away {\n      background-color: var(--yellow-500);\n    }\n  }\n\n  .avatar-stack {\n    display: inline-flex;\n    flex-direction: row-reverse;\n\n    .avatar {\n      // Stack spacing is calculated as a percentage of avatar size\n      margin-left: calc(var(--avatar-size) * var(--avatar-stack-spacing));\n      border: var(--avatar-border-width) solid var(--avatar-border-color);\n      mask-image: none;\n      @include transition(var(--avatar-stack-transition));\n\n      &:last-child {\n        margin-left: 0;\n      }\n\n      &:hover {\n        z-index: 1;\n        transform: translateY(-2px);\n      }\n    }\n  }\n\n  @each $size, $tokens in $avatar-sizes {\n    .avatar-#{$size},\n    .avatar-stack-#{$size} {\n      --avatar-size: #{map.get($tokens, size)};\n\n      @if map.has-key($tokens, status-size) {\n        --avatar-status-size: #{map.get($tokens, status-size)};\n      }\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/tokens\" as *;\n\n$badge-tokens: () !default;\n\n// scss-docs-start badge-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$badge-tokens: defaults(\n  (\n    --badge-padding-x: .625em,\n    --badge-padding-y: .25em,\n    --badge-font-size: clamp(12px, .75em, .75em),\n    --badge-font-weight: var(--font-weight-semibold),\n    --badge-color: inherit,\n    --badge-bg: var(--bg-2),\n    --badge-border-width: var(--border-width),\n    --badge-border-color: transparent,\n    --badge-border-radius: var(--border-radius-lg),\n  ),\n  $badge-tokens\n);\n// scss-docs-end badge-tokens\n\n// scss-docs-start badge-variants\n$badge-variants: (\n  \"subtle\": (\n    \"color\": \"text\",\n    \"bg\": \"bg-subtle\",\n    \"border-color\": \"transparent\"\n  ),\n  \"outline\": (\n    \"color\": \"text\",\n    \"bg\": \"transparent\",\n    \"border-color\": \"border\"\n  )\n) !default;\n// scss-docs-end badge-variants\n\n@layer components {\n  .badge {\n    @include tokens($badge-tokens);\n\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 1.375rem;\n    padding: var(--badge-padding-y) var(--badge-padding-x);\n    font-size: var(--badge-font-size);\n    font-weight: var(--badge-font-weight);\n    line-height: 1;\n    color: var(--theme-contrast, var(--badge-color));\n    text-align: center;\n    white-space: nowrap;\n    vertical-align: baseline;\n    background-color: var(--theme-bg, var(--badge-bg));\n    border: var(--badge-border-width) solid var(--badge-border-color);\n    @include border-radius(var(--badge-border-radius));\n    @include gradient-bg();\n\n    // Empty badges collapse automatically\n    &:empty {\n      display: none;\n    }\n  }\n\n  // Quick fix for badges in buttons\n  .btn .badge {\n    position: relative;\n    top: -1px;\n  }\n\n  // scss-docs-start badge-variant-loop\n  @each $variant, $properties in $badge-variants {\n    .badge-#{$variant} {\n      @each $property, $value in $properties {\n        @if $value == \"transparent\" {\n          --badge-#{$property}: transparent;\n        } @else {\n          --badge-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      color: var(--badge-color);\n      background-color: var(--badge-bg);\n      border-color: var(--badge-border-color);\n    }\n  }\n  // scss-docs-end badge-variant-loop\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n$breadcrumb-tokens: () !default;\n\n// scss-docs-start breadcrumb-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$breadcrumb-tokens: defaults(\n  (\n    --breadcrumb-margin-bottom: 1rem,\n    --breadcrumb-font-size: inherit,\n    --breadcrumb-bg: transparent,\n    --breadcrumb-border-radius: var(--border-radius),\n    --breadcrumb-divider-color: var(--fg-4),\n    --breadcrumb-link-padding-x: .75rem,\n    --breadcrumb-link-padding-y: .25rem,\n    --breadcrumb-link-color: var(--fg-3),\n    --breadcrumb-link-hover-color: var(--fg-2),\n    --breadcrumb-link-hover-bg: var(--bg-1),\n    --breadcrumb-link-active-color: var(--fg-1),\n    --breadcrumb-link-border-radius: var(--border-radius-lg),\n  ),\n  $breadcrumb-tokens\n);\n// scss-docs-end breadcrumb-tokens\n\n@layer components {\n  .breadcrumb {\n    @include tokens($breadcrumb-tokens);\n\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    padding: var(--breadcrumb-padding-y, 0) var(--breadcrumb-padding-x, 0);\n    font-size: var(--breadcrumb-font-size);\n    list-style: none;\n    background-color: var(--breadcrumb-bg);\n    @include border-radius(var(--breadcrumb-border-radius));\n  }\n\n  .breadcrumb-item {\n    display: flex;\n  }\n\n  .breadcrumb-divider {\n    margin-inline: calc(var(--breadcrumb-link-padding-x) / 4);\n    color: var(--breadcrumb-divider-color);\n  }\n\n  .breadcrumb-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 2.25rem;\n    padding: var(--breadcrumb-link-padding-y) var(--breadcrumb-link-padding-x);\n    color: var(--breadcrumb-link-color);\n    text-decoration: none;\n    @include border-radius(var(--breadcrumb-link-border-radius));\n    @include transition(.1s text-decoration-color ease-in-out);\n\n    &:hover {\n      z-index: 2;\n      color: var(--breadcrumb-link-hover-color);\n      background-color: var(--breadcrumb-link-hover-bg);\n    }\n\n    &.active {\n      color: var(--breadcrumb-link-active-color);\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/tokens\" as *;\n\n$chip-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start chip-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$chip-tokens: defaults(\n  (\n    --chip-height: 1.75rem,\n    --chip-padding-x: .625rem,\n    --chip-gap: .3125rem,\n    --chip-border-radius: var(--border-radius-pill),\n    --chip-img-size: 1.25rem,\n    --chip-icon-size: 1rem,\n    --chip-dismiss-size: 1rem,\n    --chip-dismiss-opacity: .65,\n    --chip-dismiss-hover-opacity: 1,\n    --chip-color: var(--theme-text, var(--fg-body)),\n    --chip-bg: var(--theme-bg-subtle, var(--bg-2)),\n    --chip-border-color: transparent,\n    --chip-selected-color: var(--theme-contrast, var(--primary-contrast)),\n    --chip-selected-bg: var(--theme-bg, var(--primary-bg)),\n    --chip-selected-border-color: var(--theme-bg, var(--primary-bg)),\n  ),\n  $chip-tokens\n);\n// scss-docs-end chip-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .chip {\n    @include tokens($chip-tokens);\n\n    display: inline-flex;\n    gap: var(--chip-gap);\n    align-items: center;\n    height: var(--chip-height);\n    padding-inline: var(--chip-padding-x);\n    font-size: var(--chip-font-size, var(--font-size-sm));\n    font-weight: var(--chip-font-weight, var(--font-weight-base));\n    line-height: var(--chip-line-height, 1.25rem);\n    color: var(--chip-color);\n    text-decoration: none;\n    white-space: nowrap;\n    vertical-align: middle;\n    cursor: pointer;\n    background-color: var(--chip-bg);\n    border: var(--border-width) solid var(--chip-border-color);\n    @include border-radius(var(--chip-border-radius));\n\n    &:hover {\n      --chip-bg: var(--theme-bg-muted, var(--bg-3));\n    }\n\n    &:focus-visible {\n      outline: 0;\n      // @include focus-ring();\n    }\n\n    &.active {\n      --chip-color: var(--chip-selected-color);\n      --chip-bg: var(--chip-selected-bg);\n      --chip-border-color: var(--chip-selected-border-color);\n\n      &:hover {\n        --chip-bg: var(--chip-selected-bg);\n        opacity: .9;\n      }\n    }\n\n    &.disabled,\n    &:disabled {\n      pointer-events: none;\n      opacity: .65;\n    }\n  }\n\n  .chip-img {\n    width: var(--chip-img-size);\n    height: var(--chip-img-size);\n    @include border-radius(50%);\n\n    &:first-child {\n      margin-inline-start: -.375rem;\n    }\n  }\n\n  // Chip icon (left side)\n  .chip-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    margin-inline-start: calc(var(--chip-gap) * -.25);\n\n    > svg {\n      display: block; // Prevents baseline alignment issues\n      width: var(--chip-icon-size);\n      height: var(--chip-icon-size);\n    }\n\n    > img {\n      width: var(--chip-icon-size);\n      height: var(--chip-icon-size);\n      object-fit: cover;\n      @include border-radius(50%);\n    }\n  }\n\n  // Dismiss button (right side)\n  .chip-dismiss {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--chip-min-height);\n    height: var(--chip-min-height);\n    padding: 0;\n    // margin-inline-start: calc(var(--chip-padding-x) * -.5);\n    margin-inline-end: calc(var(--chip-padding-x) * -.25);\n    color: inherit;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    opacity: var(--chip-dismiss-opacity);\n    // @include transition(opacity .15s ease-in-out);\n\n    &:hover {\n      opacity: var(--chip-dismiss-hover-opacity);\n    }\n\n    &:focus-visible {\n      outline: 0;\n      opacity: 1;\n      @include focus-ring();\n    }\n\n    > svg {\n      display: block; // Prevents baseline alignment issues\n      width: var(--chip-dismiss-size);\n      height: var(--chip-dismiss-size);\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/tokens\" as *;\n@use \"layout/breakpoints\" as *;\n\n$card-tokens: () !default;\n\n// scss-docs-start card-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$card-tokens: defaults(\n  (\n    --card-spacer-y: #{$spacer},\n    --card-spacer-x: #{$spacer},\n    --card-subtitle-color: inherit,\n    --card-border-width: var(--border-width),\n    --card-border-color: var(--border-color-translucent),\n    --card-border-radius: var(--border-radius-lg),\n    --card-box-shadow: none,\n    --card-inner-border-radius: calc(var(--border-radius-lg) - var(--border-width)),\n    --card-cap-padding-y: #{$spacer * .75},\n    --card-cap-padding-x: #{$spacer},\n    --card-cap-bg: var(--bg-1),\n    --card-cap-color: inherit,\n    --card-height: auto,\n    --card-color: inherit,\n    --card-bg: var(--bg-body),\n    --card-img-overlay-padding: #{$spacer},\n    --card-group-margin: #{$grid-gutter-x * .5},\n    --card-body-gap: #{$spacer * .5},\n  ),\n  $card-tokens\n);\n// scss-docs-end card-tokens\n\n@layer components {\n  .card {\n    @include tokens($card-tokens);\n\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106\n    height: var(--card-height);\n    color: var(--fg-body);\n    word-wrap: break-word;\n    background-color: var(--card-bg);\n    // border: var(--card-border-width) solid var(--card-border-color);\n    // @include border-radius(var(--card-border-radius));\n    @include box-shadow(var(--card-box-shadow));\n\n    > hr {\n      margin-inline: 0;\n    }\n  }\n\n  .card-body {\n    display: flex;\n    // Enable `flex-grow: 1` for decks and groups so that card blocks take up\n    // as much space as possible, ensuring footers are aligned to the bottom.\n    flex: 1 1 auto;\n    flex-direction: column;\n    gap: var(--card-body-gap);\n    align-items: flex-start;\n    padding: var(--card-spacer-y) var(--card-spacer-x);\n    color: var(--card-color);\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n\n    > * {\n      margin-block: 0;\n    }\n  }\n\n  .card-body,\n  .card-list {\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n\n    &:first-child {\n      @include border-top-radius(var(--card-border-radius));\n      border-top-width: var(--card-border-width);\n    }\n\n    &:last-child {\n      @include border-bottom-radius(var(--card-border-radius));\n      border-bottom-width: var(--card-border-width);\n    }\n\n    &:not(:first-child):not(:last-child) {\n      border-block-end-width: var(--card-border-width);\n    }\n  }\n\n  .card-title,\n  .card-subtitle,\n  .card-text {\n    align-self: stretch;\n  }\n\n  .card-subtitle {\n    margin-top: calc(var(--card-body-gap) * -.5);\n  }\n\n  .card-header {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    margin-bottom: 0; // Removes the default margin-bottom of <hN>\n    color: var(--theme-contrast, var(--card-cap-color));\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n\n    &:first-child {\n      @include border-radius(var(--card-inner-border-radius) var(--card-inner-border-radius) 0 0);\n    }\n  }\n\n  .card-footer {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    color: var(--card-cap-color);\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n\n    &:last-child {\n      @include border-radius(0 0 var(--card-inner-border-radius) var(--card-inner-border-radius));\n    }\n  }\n\n  .card-subtle {\n    border-color: var(--theme-border, var(--card-border-color));\n\n    .card-header {\n      color: var(--theme-text-emphasis, currentcolor);\n      background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n\n    .card-footer {\n      color: var(--theme-text-emphasis, currentcolor);\n      background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n\n    .card-body,\n    .card-list {\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n  }\n\n  //\n  // Header navs\n  //\n\n  // Combined selector because of specificity match with `.nav` base class\n  .nav.card-header-tabs {\n    margin-inline: calc(-.5 * var(--card-cap-padding-x));\n    margin-bottom: calc(-1 * var(--card-cap-padding-y));\n    border-block-end: 0;\n\n    .nav-link.active {\n      background-color: var(--card-bg);\n      border-block-end-color: var(--card-bg);\n    }\n  }\n\n  // Card image\n  .card-img-overlay {\n    position: absolute;\n    inset: 0;\n    padding: var(--card-img-overlay-padding);\n    @include border-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img,\n  .card-img-top,\n  .card-img-bottom {\n    width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n    outline: var(--card-border-width) solid var(--card-border-color);\n    outline-offset: calc(var(--card-border-width) * -1);\n  }\n\n  .card-img,\n  .card-img-top {\n    @include border-top-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img,\n  .card-img-bottom {\n    @include border-bottom-radius(var(--card-inner-border-radius));\n  }\n\n  .card-row {\n    flex-direction: row;\n\n    .card-body,\n    .card-list {\n      border-width: var(--card-border-width) 0;\n      @include border-radius(0);\n\n      &:first-child {\n        @include border-start-radius(var(--card-inner-border-radius));\n        border-inline-start-width: var(--card-border-width);\n      }\n\n      &:last-child {\n        @include border-end-radius(var(--card-inner-border-radius));\n        border-inline-end-width: var(--card-border-width);\n      }\n\n      &:not(:first-child):not(:last-child) {\n        border-inline-end-width: var(--card-border-width);\n      }\n    }\n  }\n\n  .card-img-start {\n    @include border-start-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img-end {\n    @include border-end-radius(var(--card-inner-border-radius));\n  }\n\n  //\n  // Card groups\n  //\n\n  .card-group {\n    // The child selector allows nested `.card` within `.card-group`\n    // to display properly.\n    > .card {\n      margin-bottom: var(--card-group-margin);\n    }\n\n    @include media-breakpoint-up(sm) {\n      display: flex;\n      flex-flow: row wrap;\n      // The child selector allows nested `.card` within `.card-group`\n      // to display properly.\n      > .card {\n        flex: 1 0 0;\n        margin-bottom: 0;\n\n        + .card {\n          margin-inline-start: 0;\n          border-inline-start: 0;\n        }\n\n        // Handle rounded corners\n        @if $enable-rounded {\n          &:not(:last-child) {\n            @include border-end-radius(0);\n\n            > .card-img-top,\n            > .card-header {\n              border-start-end-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer {\n              border-end-end-radius: 0;\n            }\n          }\n\n          &:not(:first-child) {\n            @include border-start-radius(0);\n\n            > .card-img-top,\n            > .card-header {\n              border-start-start-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer {\n              border-end-start-radius: 0;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"colors\" as *;\n@use \"functions\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/color-mode\" as *;\n@use \"mixins/tokens\" as *;\n\n$carousel-tokens: () !default;\n\n// scss-docs-start carousel-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$carousel-tokens: defaults(\n  (\n    --carousel-control-color: #{$white},\n    --carousel-control-width: 15%,\n    --carousel-control-opacity: .5,\n    --carousel-control-hover-opacity: .9,\n    --carousel-control-transition: opacity .15s ease,\n    --carousel-control-icon-filter: none,\n    --carousel-indicator-width: 30px,\n    --carousel-indicator-height: 3px,\n    --carousel-indicator-hit-area-height: 10px,\n    --carousel-indicator-spacer: 3px,\n    --carousel-indicator-opacity: .5,\n    --carousel-indicator-active-bg: var(--white),\n    --carousel-indicator-active-opacity: 1,\n    --carousel-indicator-transition: opacity .6s ease,\n    --carousel-caption-width: 70%,\n    --carousel-caption-color: var(--white),\n    --carousel-caption-padding-y: 1.25rem,\n    --carousel-caption-spacer: 1.25rem,\n    --carousel-control-icon-width: 2rem,\n    --carousel-control-prev-icon-bg: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>\"),\n    --carousel-control-next-icon-bg: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>\"),\n    --carousel-transition-duration: .6s,\n    --carousel-transition: transform .6s ease-in-out,\n  ),\n  $carousel-tokens\n);\n// scss-docs-end carousel-tokens\n\n$carousel-dark-tokens: () !default;\n\n// scss-docs-start carousel-dark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$carousel-dark-tokens: defaults(\n  (\n    --carousel-indicator-active-bg: #{$black},\n    --carousel-caption-color: #{$black},\n    --carousel-control-icon-filter: invert(1) grayscale(100),\n  ),\n  $carousel-dark-tokens\n);\n// scss-docs-end carousel-dark-tokens\n\n// Notes on the classes:\n//\n// 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically)\n//    even when their scroll action started on a carousel, but for compatibility (with Firefox)\n//    we're preventing all actions instead\n// 2. The .carousel-item-start and .carousel-item-end is used to indicate where\n//    the active slide is heading.\n// 3. .active.carousel-item is the current slide.\n// 4. .active.carousel-item-start and .active.carousel-item-end is the current\n//    slide in its in-transition state. Only one of these occurs at a time.\n// 5. .carousel-item-next.carousel-item-start and .carousel-item-prev.carousel-item-end\n//    is the upcoming slide in transition.\n\n@layer components {\n  .carousel {\n    position: relative;\n    @include tokens($carousel-tokens);\n  }\n\n  .carousel.pointer-event {\n    touch-action: pan-y;\n  }\n\n  .carousel-inner {\n    position: relative;\n    display: flow-root;\n    width: 100%;\n    overflow: hidden;\n  }\n\n  .carousel-item {\n    position: relative;\n    display: none;\n    float: inline-start;\n    width: 100%;\n    margin-inline-end: -100%;\n    backface-visibility: hidden;\n    @include transition(var(--carousel-transition));\n  }\n\n  .carousel-item.active,\n  .carousel-item-next,\n  .carousel-item-prev {\n    display: block;\n  }\n\n  .carousel-item-next:not(.carousel-item-start),\n  .active.carousel-item-end {\n    transform: translateX(100%);\n  }\n\n  .carousel-item-prev:not(.carousel-item-end),\n  .active.carousel-item-start {\n    transform: translateX(-100%);\n  }\n\n  //\n  // Alternate transitions\n  //\n\n  .carousel-fade {\n    .carousel-item {\n      opacity: 0;\n      transition-property: opacity;\n      transform: none;\n    }\n\n    .carousel-item.active,\n    .carousel-item-next.carousel-item-start,\n    .carousel-item-prev.carousel-item-end {\n      z-index: 1;\n      opacity: 1;\n    }\n\n    .active.carousel-item-start,\n    .active.carousel-item-end {\n      z-index: 0;\n      opacity: 0;\n      @include transition(opacity 0s var(--carousel-transition-duration));\n    }\n  }\n\n  //\n  // Left/right controls for nav\n  //\n\n  .carousel-control-prev,\n  .carousel-control-next {\n    position: absolute;\n    inset-block: 0;\n    z-index: 1;\n    // Use flex for alignment (1-3)\n    display: flex; // 1. allow flex styles\n    align-items: center; // 2. vertically center contents\n    justify-content: center; // 3. horizontally center contents\n    width: var(--carousel-control-width);\n    padding: 0;\n    color: var(--carousel-control-color);\n    text-align: center;\n    background: none;\n    filter: var(--carousel-control-icon-filter);\n    border: 0;\n    opacity: var(--carousel-control-opacity);\n    @include transition(var(--carousel-control-transition));\n\n    // Hover/focus state\n    &:hover,\n    &:focus {\n      color: var(--carousel-control-color);\n      text-decoration: none;\n      outline: 0;\n      opacity: var(--carousel-control-hover-opacity);\n    }\n  }\n  .carousel-control-prev {\n    inset-inline-start: 0;\n    // stylelint-disable-next-line scss/at-function-named-arguments, @stylistic/function-whitespace-after\n    background-image: if(sass($enable-gradients): linear-gradient(90deg, rgba($black, .25), rgba($black, .001)); else: null);\n  }\n  .carousel-control-next {\n    inset-inline-end: 0;\n    // stylelint-disable-next-line scss/at-function-named-arguments, @stylistic/function-whitespace-after\n    background-image: if(sass($enable-gradients): linear-gradient(270deg, rgba($black, .25), rgba($black, .001)); else: null);\n  }\n\n  // Icons for within\n  .carousel-control-prev-icon,\n  .carousel-control-next-icon {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-repeat: no-repeat;\n    background-position: 50%;\n    background-size: 100% 100%;\n  }\n\n  .carousel-control-prev-icon {\n    background-image: var(--carousel-control-prev-icon-bg);\n  }\n\n  [dir=\"rtl\"] .carousel-control-prev-icon {\n    background-image: var(--carousel-control-next-icon-bg);\n  }\n\n  .carousel-control-next-icon {\n    background-image: var(--carousel-control-next-icon-bg);\n  }\n\n  [dir=\"rtl\"] .carousel-control-next-icon {\n    background-image: var(--carousel-control-prev-icon-bg);\n  }\n\n  // Optional indicator pips/controls\n  //\n  // Add a container (such as a list) with the following class and add an item (ideally a focusable control,\n  // like a button) with data-bs-target for each slide your carousel holds.\n\n  .carousel-indicators {\n    position: absolute;\n    inset: auto 0 0;\n    z-index: 2;\n    display: flex;\n    justify-content: center;\n    padding: 0;\n    // Use the .carousel-control's width as margin so we don't overlay those\n    margin-inline: var(--carousel-control-width);\n    margin-bottom: 1rem;\n\n    [data-bs-target] {\n      box-sizing: content-box;\n      flex: 0 1 auto;\n      width: var(--carousel-indicator-width);\n      height: var(--carousel-indicator-height);\n      padding: 0;\n      margin-inline: var(--carousel-indicator-spacer);\n      text-indent: -999px;\n      cursor: pointer;\n      background-color: var(--carousel-indicator-active-bg);\n      background-clip: padding-box;\n      border: 0;\n      // Use transparent borders to increase the hit area by 10px on top and bottom.\n      border-block: var(--carousel-indicator-hit-area-height) solid transparent;\n      opacity: var(--carousel-indicator-opacity);\n      @include transition(var(--carousel-indicator-transition));\n    }\n\n    .active {\n      opacity: var(--carousel-indicator-active-opacity);\n    }\n  }\n\n  // Optional captions\n  //\n  //\n\n  .carousel-caption {\n    position: absolute;\n    right: calc((100% - var(--carousel-caption-width)) * .5);\n    bottom: var(--carousel-caption-spacer);\n    left: calc((100% - var(--carousel-caption-width)) * .5);\n    padding-top: var(--carousel-caption-padding-y);\n    padding-bottom: var(--carousel-caption-padding-y);\n    color: var(--carousel-caption-color);\n    text-align: center;\n  }\n\n  // Dark mode carousel\n\n  @mixin carousel-dark() {\n    @include tokens($carousel-dark-tokens);\n  }\n\n  .carousel-dark {\n    @include carousel-dark();\n  }\n\n  @if $enable-dark-mode {\n    @include color-mode(dark, true) {\n      @include carousel-dark();\n    }\n  }\n}\n","@use \"../config\" as *;\n\n// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n  @if $color-mode-type == \"media-query\" {\n    @if $root == true {\n      @media (prefers-color-scheme: $mode) {\n        :root {\n          @content;\n        }\n      }\n    } @else {\n      @media (prefers-color-scheme: $mode) {\n        @content;\n      }\n    }\n  } @else {\n    [data-bs-theme=\"#{$mode}\"] {\n      @content;\n    }\n  }\n}\n// scss-docs-end color-mode-mixin\n","// stylelint-disable selector-max-attribute, property-disallowed-list, selector-no-qualifying-type -- VCP uses extensive data attributes and requires direct border-radius properties for range selection\n\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/tokens\" as *;\n\n$datepicker-tokens: () !default;\n\n// scss-docs-start datepicker-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$datepicker-tokens: defaults(\n  (\n    --datepicker-padding: 1rem,\n    --datepicker-bg: var(--bg-body),\n    --datepicker-color: var(--fg-body),\n    --datepicker-border-color: var(--border-color-translucent),\n    --datepicker-border-width: var(--border-width),\n    --datepicker-border-radius: var(--border-radius-lg),\n    --datepicker-box-shadow: var(--box-shadow),\n    --datepicker-font-size: var(--font-size-sm),\n    --datepicker-min-width: 280px,\n    --datepicker-zindex: #{$zindex-dropdown},\n    --datepicker-header-font-weight: 600,\n    --datepicker-weekday-color: var(--fg-3),\n    --datepicker-day-hover-bg: var(--bg-1),\n    --datepicker-day-selected-bg: var(--primary-bg),\n    --datepicker-day-selected-color: var(--primary-contrast),\n    --datepicker-day-today-bg: var(--bg-2),\n    --datepicker-day-today-color: var(--fg-1),\n    --datepicker-day-disabled-color: var(--fg-4),\n  ),\n  $datepicker-tokens\n);\n// scss-docs-end datepicker-tokens\n\n@layer components {\n  [data-vc=\"calendar\"] {\n    @include tokens($datepicker-tokens);\n\n    position: absolute;\n    z-index: var(--datepicker-zindex);\n    box-sizing: border-box;\n    display: flex;\n    flex-direction: column;\n    min-width: var(--datepicker-min-width);\n    padding: var(--datepicker-padding);\n    font-family: var(--font-sans-serif);\n    font-size: var(--datepicker-font-size);\n    color: var(--datepicker-color);\n    color-scheme: light dark;\n    background-color: var(--datepicker-bg);\n    border: var(--datepicker-border-width) solid var(--datepicker-border-color);\n    @include border-radius(var(--datepicker-border-radius));\n    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n\n    // Respond to Bootstrap's color mode system\n    &[data-bs-theme=\"light\"] {\n      color-scheme: light;\n    }\n\n    &[data-bs-theme=\"dark\"] {\n      color-scheme: dark;\n    }\n\n    // Catch-all for focus styles\n    button:focus-visible {\n      position: relative;\n      z-index: 1;\n      @include focus-ring();\n    }\n  }\n\n  [data-vc-calendar-hidden] {\n    pointer-events: none;\n    opacity: 0;\n  }\n\n  // Inline calendars\n  //\n  // Remove popover styling for more neutral styling\n  [data-vc=\"calendar\"]:not([data-vc-input]) {\n    position: relative;\n    width: fit-content;\n    padding: 0;\n    border: 0;\n    box-shadow: none;\n  }\n\n  [data-vc-position=\"bottom\"] {\n    margin-block-start: .25rem;\n  }\n\n  [data-vc-position=\"top\"] {\n    margin-block-end: -.25rem;\n  }\n\n  [data-vc-arrow] {\n    position: relative;\n    display: block;\n    width: 2rem;\n    height: 2rem;\n    color: var(--datepicker-color);\n    pointer-events: auto;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--border-radius));\n\n    &::before {\n      position: absolute;\n      inset: .25rem;\n      content: \"\";\n      background-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%236b7280' d='M12 16c-.3 0-.5-.1-.7-.3l-6-6c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l5.3 5.3 5.3-5.3c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-6 6c-.2.2-.4.3-.7.3'/></svg>\");\n      background-repeat: no-repeat;\n      background-position: center;\n    }\n\n    &:hover {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  [data-vc-arrow=\"prev\"]::before {\n    transform: rotate(90deg);\n  }\n\n  [data-vc-arrow=\"next\"]::before {\n    transform: rotate(-90deg);\n  }\n\n  // Grid layout\n  [data-vc=\"controls\"] {\n    position: absolute;\n    top: 0;\n    right: 0;\n    left: 0;\n    z-index: 20;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding-top: 1rem;\n    padding-right: 1rem;\n    padding-left: 1rem;\n    pointer-events: none;\n  }\n\n  [data-vc=\"grid\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-wrap: wrap;\n    gap: 1.75rem;\n  }\n\n  [data-vc=\"column\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    min-width: 240px;\n  }\n\n  //\n  // Header\n  //\n\n  [data-vc=\"header\"] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    margin-bottom: .75rem;\n  }\n\n  // Month and year\n  [data-vc-header=\"content\"] {\n    display: inline-flex;\n    flex-grow: 1;\n    align-items: center;\n    justify-content: center;\n    white-space: pre-wrap;\n  }\n\n  [data-vc=\"month\"],\n  [data-vc=\"year\"] {\n    padding: .25rem .5rem;\n    margin-inline: -.125rem;\n    font-size: 1rem;\n    font-weight: var(--datepicker-header-font-weight);\n    color: var(--datepicker-color);\n    // cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--border-radius));\n\n    &:disabled {\n      color: var(--datepicker-day-disabled-color);\n      pointer-events: none;\n    }\n\n    &:hover:not(:disabled) {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  [data-vc=\"content\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n  }\n\n  // Month/Year grids\n  [data-vc=\"months\"],\n  [data-vc=\"years\"] {\n    display: grid;\n    flex-grow: 1;\n    grid-template-columns: repeat(var(--vc-columns, 4), minmax(0, 1fr));\n    row-gap: 1rem;\n    column-gap: .25rem;\n    align-items: center;\n  }\n\n  [data-vc=\"years\"] {\n    --vc-columns: 5;\n  }\n\n  [data-vc-months-month],\n  [data-vc-years-year] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 2.5rem;\n    padding: .25rem;\n    font-size: .75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    text-align: center;\n    word-break: break-all;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--border-radius));\n\n    &:disabled {\n      color: var(--datepicker-day-disabled-color);\n      pointer-events: none;\n    }\n\n    &:hover:not(:disabled) {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n\n    &[data-vc-months-month-selected],\n    &[data-vc-years-year-selected] {\n      color: var(--datepicker-day-selected-color);\n      background-color: var(--datepicker-day-selected-bg);\n\n      &:hover {\n        color: var(--datepicker-day-selected-color);\n        background-color: var(--datepicker-day-selected-bg);\n      }\n    }\n  }\n\n  // Week days header\n  [data-vc=\"week\"] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    justify-items: center;\n    margin-bottom: .5rem;\n  }\n\n  [data-vc-week-day] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    padding: 0;\n    margin: 0;\n    font-size: .75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    background-color: transparent;\n    border: 0;\n  }\n\n  button[data-vc-week-day] {\n    cursor: pointer;\n  }\n\n  // Dates grid\n  [data-vc=\"dates\"] {\n    pointer-events: none;\n  }\n\n  [data-vc-dates=\"row\"] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    align-items: center;\n    justify-items: center;\n    width: 100%;\n  }\n\n  [data-vc-date] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    padding-top: .125rem;\n    padding-bottom: .125rem;\n    pointer-events: auto;\n\n    &:not(:has([data-vc-date-btn])),\n    &[data-vc-date-disabled],\n    &[data-vc-date-disabled] [data-vc-date-btn] {\n      pointer-events: none;\n    }\n  }\n\n  // Date button\n  [data-vc-date-btn] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    height: 100%;\n    min-height: 1.875rem;\n    padding: 0;\n    font-size: .75rem;\n    font-weight: 400;\n    line-height: 1rem;\n    color: var(--datepicker-color);\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--border-radius);\n\n    &:hover {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  // Today\n  [data-vc-date-today] [data-vc-date-btn] {\n    font-weight: 600;\n    color: var(--datepicker-day-today-color);\n    background-color: var(--datepicker-day-today-bg);\n  }\n\n  // Outside month\n  [data-vc-date-month=\"next\"] [data-vc-date-btn],\n  [data-vc-date-month=\"prev\"] [data-vc-date-btn] {\n    opacity: .5;\n  }\n\n  // Disabled\n  [data-vc-date-disabled] [data-vc-date-btn] {\n    color: var(--datepicker-day-disabled-color);\n  }\n\n  // Range selection styles\n  [data-vc-date-hover] [data-vc-date-btn] {\n    background-color: var(--datepicker-day-hover-bg);\n    border-radius: 0;\n  }\n\n  [data-vc-date-hover=\"first\"] [data-vc-date-btn] {\n    border-start-start-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n\n  [data-vc-date-hover=\"last\"] [data-vc-date-btn] {\n    border-start-end-radius: var(--border-radius);\n    border-end-end-radius: var(--border-radius);\n  }\n\n  [data-vc-date-hover=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--border-radius);\n  }\n\n  [data-vc-date-selected=\"middle\"] [data-vc-date-btn] {\n    border-radius: 0;\n    opacity: .8;\n  }\n\n  // Selected\n  [data-vc-date-selected] [data-vc-date-btn] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n\n  }\n\n  [data-vc-date-selected=\"first\"] [data-vc-date-btn] {\n    border-top-left-radius: var(--border-radius);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--border-radius);\n  }\n\n  [data-vc-date-selected=\"last\"] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--border-radius);\n    border-bottom-right-radius: var(--border-radius);\n    border-bottom-left-radius: 0;\n  }\n\n  [data-vc-date-selected=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--border-radius);\n  }\n}\n","@use \"sass:map\";\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n// Native <dialog> component\n// Uses the browser's native dialog element with showModal()/show()/close() APIs\n// Leverages native [open] attribute and ::backdrop pseudo-element\n\n// stylelint-disable custom-property-no-missing-var-function\n$dialog-tokens: () !default;\n\n// scss-docs-start dialog-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$dialog-tokens: defaults(\n  (\n    --dialog-padding: 1rem,\n    --dialog-width: 500px,\n    --dialog-margin: 1.75rem,\n    --dialog-color: var(--fg-body),\n    --dialog-bg: var(--bg-body),\n    --dialog-border-color: var(--border-color-translucent),\n    --dialog-border-width: var(--border-width),\n    --dialog-border-radius: var(--border-radius-lg),\n    --dialog-box-shadow: var(--box-shadow-lg),\n    --dialog-backdrop-bg: rgb(0 0 0 / 50%),\n    --dialog-backdrop-blur: 8px,\n    --dialog-header-padding: 1rem,\n    --dialog-header-border-color: var(--border-color),\n    --dialog-header-border-width: var(--border-width),\n    --dialog-footer-padding: 1rem,\n    --dialog-footer-border-color: var(--border-color),\n    --dialog-footer-border-width: var(--border-width),\n    --dialog-footer-gap: .5rem,\n  ),\n  $dialog-tokens\n);\n// scss-docs-end dialog-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start dialog-sizes\n$dialog-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$dialog-sizes: defaults(\n  (\n    sm: 280px,\n    lg: 800px,\n    xl: 1140px,\n  ),\n  $dialog-sizes\n);\n// scss-docs-end dialog-sizes\n\n@layer components {\n  // Prevent body scroll when dialog is open\n  .dialog-open {\n    overflow: hidden;\n    scrollbar-gutter: stable;\n  }\n\n  .dialog {\n    @include tokens($dialog-tokens);\n\n    // Reset native dialog styles\n    max-width: var(--dialog-width);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    color: var(--dialog-color);\n    background-color: var(--dialog-bg);\n    background-clip: padding-box;\n    border: var(--dialog-border-width) solid var(--dialog-border-color);\n    @include border-radius(var(--dialog-border-radius));\n    @include box-shadow(var(--dialog-box-shadow));\n\n    // Native backdrop styling via ::backdrop pseudo-element\n    &::backdrop {\n      background-color: var(--dialog-backdrop-bg);\n      backdrop-filter: blur(var(--dialog-backdrop-blur));\n    }\n\n    // Animation support using native [open] attribute\n    &.fade {\n      opacity: 0;\n      @include transition(opacity .15s linear);\n\n      &::backdrop {\n        opacity: 0;\n        @include transition(opacity .15s linear);\n      }\n\n      &[open] {\n        opacity: 1;\n\n        &::backdrop {\n          opacity: 1;\n        }\n      }\n    }\n\n    // Static backdrop \"bounce\" animation (modal dialogs only)\n    &.dialog-static {\n      transform: scale(1.02);\n    }\n\n    // Non-modal dialog positioning\n    // show() doesn't use the top layer, so we need explicit positioning and z-index\n    &.dialog-nonmodal {\n      position: fixed;\n      inset-block-start: 50%;\n      inset-inline-start: 50%;\n      z-index: $zindex-dialog;\n      margin-inline: 0;\n      transform: translate(-50%, -50%);\n    }\n\n    // Overflow dialog - scrollable viewport container with dialog box inside\n    &.dialog-overflow {\n      // Make dialog element the full-viewport scrollable container\n      position: fixed;\n      inset: 0;\n      width: 100%;\n      max-width: 100%;\n      height: 100%;\n      max-height: 100%;\n      padding: var(--dialog-margin);\n      margin: 0;\n      overflow-y: auto;\n      overscroll-behavior: contain;\n      background: transparent;\n      border: 0;\n      box-shadow: none;\n\n      // The visual dialog box is a child wrapper\n      > .dialog-box {\n        max-width: var(--dialog-width);\n        margin-block-end: var(--dialog-margin);\n        margin-inline: auto;\n        color: var(--dialog-color);\n        background-color: var(--dialog-bg);\n        background-clip: padding-box;\n        border: var(--dialog-border-width) solid var(--dialog-border-color);\n        @include border-radius(var(--dialog-border-radius));\n        @include box-shadow(var(--dialog-box-shadow));\n      }\n    }\n\n    // Scrollable dialog body (header/footer stay fixed)\n    &.dialog-scrollable[open] {\n      display: flex;\n      flex-direction: column;\n      max-height: calc(100% - var(--dialog-margin) * 2);\n\n      .dialog-body {\n        overflow-y: auto;\n      }\n    }\n  }\n\n  // Dialog sizes\n  @each $size, $value in $dialog-sizes {\n    .dialog-#{$size} { --dialog-width: #{$value}; }\n  }\n\n  // Fullscreen dialog\n  .dialog-fullscreen {\n    --dialog-width: 100vw;\n    --dialog-margin: 0;\n    --dialog-border-radius: 0;\n\n    width: 100%;\n    max-width: none;\n    height: 100%;\n    max-height: none;\n  }\n\n  // Responsive fullscreen dialogs\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    $postfix: if(sass($infix != \"\"): #{$infix}-down; else: \"\");\n\n    @if $postfix != \"\" {\n      @include media-breakpoint-down($breakpoint) {\n        .dialog-fullscreen#{$postfix} {\n          --dialog-width: 100vw;\n          --dialog-margin: 0;\n          --dialog-border-radius: 0;\n\n          width: 100%;\n          max-width: none;\n          height: 100%;\n          max-height: none;\n        }\n      }\n    }\n  }\n\n  // Dialog header\n  .dialog-header {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    padding: var(--dialog-header-padding);\n    border-block-end: var(--dialog-header-border-width) solid var(--dialog-header-border-color);\n\n    .btn-close {\n      margin-inline-start: auto;\n    }\n  }\n\n  // Dialog title\n  .dialog-title {\n    margin-bottom: 0;\n    font-size: var(--font-size-md);\n    line-height: 1.5;\n  }\n\n  // Dialog body\n  .dialog-body {\n    position: relative;\n    flex: 1 1 auto;\n    padding: var(--dialog-padding);\n    overflow-y: auto;\n  }\n\n  // Dialog footer\n  .dialog-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: var(--dialog-footer-gap);\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--dialog-footer-padding);\n    border-block-start: var(--dialog-footer-border-width) solid var(--dialog-footer-border-color);\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/tokens\" as *;\n\n$dropdown-tokens: () !default;\n\n// scss-docs-start dropdown-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$dropdown-tokens: defaults(\n  (\n    --dropdown-zindex: #{$zindex-dropdown},\n    --dropdown-gap: .125rem,\n    --dropdown-min-width: 10rem,\n    --dropdown-padding-x: .25rem,\n    --dropdown-padding-y: .25rem,\n    --dropdown-spacer: .125rem,\n    --dropdown-font-size: var(--font-size-sm),\n    --dropdown-color: var(--fg-body),\n    --dropdown-bg: var(--bg-body),\n    --dropdown-border-color: var(--border-color-translucent),\n    --dropdown-border-radius: var(--border-radius-lg),\n    --dropdown-border-width: var(--border-width),\n    --dropdown-inner-border-radius: calc(var(--dropdown-border-radius) - var(--dropdown-border-width)),\n    --dropdown-box-shadow: var(--box-shadow),\n    --dropdown-divider-bg: var(--border-color-translucent),\n    --dropdown-divider-margin-y: .125rem,\n    --dropdown-divider-margin-x: .25rem,\n    --dropdown-link-color: var(--fg-body),\n    --dropdown-link-hover-color: var(--fg-body),\n    --dropdown-link-hover-bg: var(--bg-1),\n    --dropdown-link-active-color: var(--primary-contrast),\n    --dropdown-link-active-bg: var(--primary-bg),\n    --dropdown-link-disabled-color: var(--fg-3),\n    --dropdown-item-gap: .5rem,\n    --dropdown-item-padding-x: .75rem,\n    --dropdown-item-padding-y: .25rem,\n    --dropdown-item-border-radius: var(--border-radius),\n    --dropdown-header-color: var(--fg-2),\n    --dropdown-header-padding-x: .75rem,\n    --dropdown-header-padding-y: .25rem,\n  ),\n  $dropdown-tokens\n);\n// scss-docs-end dropdown-tokens\n\n@layer components {\n  .dropdown {\n    position: relative;\n  }\n\n  .dropdown-menu {\n    @include tokens($dropdown-tokens);\n\n    position: absolute;\n    z-index: var(--dropdown-zindex);\n    display: none; // none by default, but flex on \"open\" of the menu\n    flex-direction: column;\n    gap: var(--dropdown-gap);\n    min-width: var(--dropdown-min-width);\n    padding: var(--dropdown-padding-y) var(--dropdown-padding-x);\n    margin: 0; // Override default margin of ul\n    font-size: var(--dropdown-font-size);\n    color: var(--dropdown-color);\n    text-align: start; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n    list-style: none;\n    background-color: var(--dropdown-bg);\n    background-clip: padding-box;\n    border: var(--dropdown-border-width) solid var(--dropdown-border-color);\n    @include border-radius(var(--dropdown-border-radius));\n    @include box-shadow(var(--dropdown-box-shadow));\n  }\n\n  .dropdown-menu.show {\n    display: flex;\n  }\n\n  .dropdown-divider {\n    height: 0;\n    margin: var(--dropdown-divider-margin-y) var(--dropdown-divider-margin-x);\n    overflow: hidden;\n    border-block-start: 1px solid var(--dropdown-divider-bg);\n    opacity: 1;\n  }\n\n  // Links, buttons, and more within the dropdown menu\n  //\n  // `<button>`-specific styles are denoted with `// For <button>s`\n  .dropdown-item {\n    display: flex;\n    gap: var(--dropdown-item-gap);\n    align-items: center;\n    width: 100%; // For `<button>`s\n    padding: var(--dropdown-item-padding-y) var(--dropdown-item-padding-x);\n    font-weight: $font-weight-normal;\n    color: var(--theme-text, var(--dropdown-link-color));\n    text-align: inherit; // For `<button>`s\n    text-decoration: none;\n    white-space: nowrap; // prevent links from randomly breaking onto new lines\n    background-color: transparent; // For `<button>`s\n    border: 0; // For `<button>`s\n    @include border-radius(var(--dropdown-item-border-radius, 0));\n\n    &:hover,\n    &:focus {\n      color: var(--theme-text, var(--dropdown-link-hover-color));\n      @include gradient-bg(var(--theme-bg-subtle, var(--dropdown-link-hover-bg)));\n    }\n\n    &.active,\n    &:active {\n      color: var(--theme-contrast, var(--dropdown-link-active-color));\n      @include gradient-bg(var(--theme-bg, var(--dropdown-link-active-bg)));\n    }\n\n    &.disabled,\n    &:disabled {\n      color: var(--dropdown-link-disabled-color);\n      pointer-events: none;\n      background-color: transparent;\n      // Remove CSS gradients if they're enabled\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n    }\n  }\n\n  .dropdown-header {\n    display: block;\n    padding: var(--dropdown-header-padding-y) var(--dropdown-header-padding-x);\n    margin-bottom: 0; // for use with heading elements\n    font-size: var(--font-size-sm);\n    color: var(--dropdown-header-color);\n    white-space: nowrap; // as with > li > a\n  }\n\n  .dropdown-item-text {\n    display: block;\n    padding: var(--dropdown-item-padding-y) var(--dropdown-item-padding-x);\n    color: var(--fg-2);\n  }\n\n  // scss-docs-start dropdown-submenu\n  // Submenus\n  //\n  // Nested dropdown menus with hover/click activation and keyboard support.\n\n  .dropdown-submenu {\n    position: relative;\n\n    > .dropdown-item {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n\n    > .dropdown-item::after {\n      display: inline-block;\n      flex-shrink: 0;\n      width: .375em;\n      height: .375em;\n      margin-inline-start: auto;\n      content: \"\";\n      border-color: currentcolor;\n      border-style: solid;\n      border-width: 0 .125em .125em 0;\n      transform: rotate(-45deg);\n\n      // RTL: flip the chevron direction\n      [dir=\"rtl\"] & {\n        transform: rotate(135deg);\n      }\n    }\n\n    // Submenu positioning (set by JS via Floating UI)\n    > .dropdown-menu {\n      top: 0;\n      // Offset to align with parent item\n      margin-top: calc(-1 * var(--dropdown-padding-y));\n    }\n\n    &:hover > .dropdown-item,\n    &:focus-within > .dropdown-item {\n      color: var(--dropdown-link-hover-color);\n      background-color: var(--dropdown-link-hover-bg);\n    }\n\n    &.show > .dropdown-item {\n      color: var(--dropdown-link-hover-color);\n      background-color: var(--dropdown-link-hover-bg);\n    }\n  }\n  // scss-docs-end dropdown-submenu\n}\n","@use \"sass:map\";\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/tokens\" as *;\n\n$list-group-tokens: () !default;\n\n// scss-docs-start list-group-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$list-group-tokens: defaults(\n  (\n    --list-group-color: var(--fg-body),\n    --list-group-bg: var(--bg-body),\n    --list-group-border-color: var(--border-color),\n    --list-group-border-width: var(--border-width),\n    --list-group-border-radius: var(--border-radius),\n    --list-group-item-padding-x: #{$spacer},\n    --list-group-item-padding-y: #{$spacer * .5},\n    --list-group-action-color: var(--fg-2),\n    --list-group-action-hover-color: var(--fg-1),\n    --list-group-action-hover-bg: var(--bg-1),\n    --list-group-action-active-color: var(--fg-body),\n    --list-group-action-active-bg: var(--bg-2),\n    --list-group-disabled-color: var(--fg-3),\n    --list-group-disabled-bg: var(--bg-body),\n    --list-group-active-color: var(--primary-contrast),\n    --list-group-active-bg: var(--primary-bg),\n    --list-group-active-border-color: var(--primary-bg),\n  ),\n  $list-group-tokens\n);\n// scss-docs-end list-group-tokens\n\n@layer components {\n  .list-group {\n    @include tokens($list-group-tokens);\n\n    display: flex;\n    flex-direction: column;\n\n    // No need to set list-style: none; since .list-group-item is block level\n    padding-inline-start: 0; // reset padding because ul and ol\n    margin-bottom: 0;\n    @include border-radius(var(--list-group-border-radius));\n  }\n\n  .list-group-numbered {\n    list-style-type: none;\n    counter-reset: section;\n\n    > .list-group-item::before {\n      // Increments only this instance of the section counter\n      content: counters(section, \".\") \". \";\n      counter-increment: section;\n    }\n  }\n\n  // Individual list items\n  //\n  // Use on `li`s or `div`s within the `.list-group` parent.\n\n  .list-group-item {\n    position: relative;\n    display: block;\n    padding: var(--list-group-item-padding-y) var(--list-group-item-padding-x);\n    color: var(--theme-text, var(--list-group-color));\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    text-decoration: if(sass($link-decoration == none): null);\n    background-color: var(--theme-bg-subtle, var(--list-group-bg));\n    border: var(--list-group-border-width) solid var(--theme-border, var(--list-group-border-color));\n\n    &:first-child {\n      @include border-top-radius(inherit);\n    }\n\n    &:last-child {\n      @include border-bottom-radius(inherit);\n    }\n\n    &.disabled,\n    &:disabled {\n      color: var(--list-group-disabled-color);\n      pointer-events: none;\n      background-color: var(--list-group-disabled-bg);\n    }\n\n    // Include both here for `<a>`s and `<button>`s\n    &.active {\n      z-index: 2; // Place active items above their siblings for proper border styling\n      color: var(--list-group-active-color);\n      background-color: var(--list-group-active-bg);\n      border-color: var(--list-group-active-border-color);\n    }\n\n    // stylelint-disable-next-line scss/selector-no-redundant-nesting-selector\n    & + .list-group-item {\n      border-block-start-width: 0;\n\n      &.active {\n        margin-top: calc(-1 * var(--list-group-border-width));\n        border-block-start-width: var(--list-group-border-width);\n      }\n    }\n  }\n\n  // Interactive list items\n  //\n  // Use anchor or button elements instead of `li`s or `div`s to create interactive\n  // list items. Includes an extra `.active` modifier class for selected items.\n\n  .list-group-item-action {\n    width: 100%; // For `<button>`s (anchors become 100% by default though)\n    color: var(--theme-text, var(--list-group-action-color));\n    text-align: inherit; // For `<button>`s (anchors inherit)\n    text-decoration: none;\n\n    &:not(.active) {\n      // Hover state\n      &:hover,\n      &:focus {\n        z-index: 1; // Place hover/focus items above their siblings for proper border styling\n        color: var(--theme-text-emphasis, var(--list-group-action-hover-color));\n        text-decoration: none;\n        background-color: var(--theme-bg-muted, var(--list-group-action-hover-bg));\n      }\n\n      &:active {\n        color: var(--theme-text-emphasis, var(--list-group-action-active-color));\n        background-color: var(--theme-bg-muted, var(--list-group-action-active-bg));\n      }\n    }\n  }\n\n  // Horizontal\n  //\n  // Change the layout of list group items from vertical (default) to horizontal.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      .list-group-horizontal#{$infix} {\n        flex-direction: row;\n\n        > .list-group-item {\n          &:first-child:not(:last-child) {\n            @include border-bottom-start-radius(var(--list-group-border-radius));\n            @include border-top-end-radius(0);\n          }\n\n          &:last-child:not(:first-child) {\n            @include border-top-end-radius(var(--list-group-border-radius));\n            @include border-bottom-start-radius(0);\n          }\n\n          &.active {\n            margin-top: 0;\n          }\n\n          + .list-group-item {\n            border-block-start-width: var(--list-group-border-width);\n            border-inline-start-width: 0;\n\n            &.active {\n              margin-inline-start: calc(-1 * var(--list-group-border-width));\n              border-inline-start-width: var(--list-group-border-width);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  // Flush list items\n  //\n  // Remove borders and border-radius to keep list group items edge-to-edge. Most\n  // useful within other components (e.g., cards).\n\n  .list-group-flush {\n    @include border-radius(0);\n\n    > .list-group-item {\n      border-width: 0 0 var(--list-group-border-width);\n\n      &:last-child {\n        border-block-end-width: 0;\n      }\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/tokens\" as *;\n@use \"mixins/transition\" as *;\n\n$nav-tokens: () !default;\n\n// scss-docs-start nav-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-tokens: defaults(\n  (\n    --nav-gap: .125rem,\n    --nav-link-gap: .5rem,\n    --nav-link-align: center,\n    --nav-link-justify: center,\n    --nav-link-padding-x: .75rem,\n    --nav-link-padding-y: .375rem,\n    --nav-link-color: var(--fg-2),\n    --nav-link-hover-color: var(--fg-1),\n    --nav-link-hover-bg: var(--bg-1),\n    --nav-link-active-color: var(--fg-body),\n    --nav-link-active-bg: var(--bg-2),\n    --nav-link-disabled-color: var(--fg-4),\n    --nav-link-transition-property: \"color, background-color, border-color\",\n    --nav-link-transition-timing: .15s ease-in-out,\n    --nav-link-transition: var(--nav-link-transition-property) var(--nav-link-transition-timing),\n  ),\n  $nav-tokens\n);\n// scss-docs-end nav-tokens\n\n$nav-tabs-tokens: () !default;\n\n// scss-docs-start nav-tabs-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-tabs-tokens: defaults(\n  (\n    --nav-tabs-border-width: var(--border-width),\n    --nav-tabs-border-color: var(--border-color),\n    --nav-tabs-border-radius: var(--border-radius),\n    --nav-tabs-link-hover-border-color: var(--border-subtle),\n    --nav-tabs-link-active-color: var(--fg-color),\n    --nav-tabs-link-active-bg: var(--bg-body),\n    --nav-tabs-link-active-border-color: var(--border-color) var(--border-color) var(--bg-body),\n  ),\n  $nav-tabs-tokens\n);\n// scss-docs-end nav-tabs-tokens\n\n$nav-pills-tokens: () !default;\n\n// scss-docs-start nav-pills-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-pills-tokens: defaults(\n  (\n    --nav-pills-link-active-color: var(--component-active-color),\n    --nav-pills-link-active-bg: var(--component-active-bg),\n  ),\n  $nav-pills-tokens\n);\n// scss-docs-end nav-pills-tokens\n\n$nav-underline-tokens: () !default;\n\n// scss-docs-start nav-underline-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-underline-tokens: defaults(\n  (\n    --nav-gap: 1rem,\n    --nav-link-active-bg: transparent,\n    --nav-underline-border-width: .125rem,\n    --nav-underline-link-active-color: var(--fg-color),\n  ),\n  $nav-underline-tokens\n);\n// scss-docs-end nav-underline-tokens\n\n// Base class\n//\n// Kickstart any navigation component with a set of style resets. Works with\n// `<nav>`s, `<ul>`s or `<ol>`s.\n\n@layer components {\n  .nav {\n    @include tokens($nav-tokens);\n\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style: none;\n  }\n\n  .nav-item {\n    display: flex;\n  }\n\n  .nav-link {\n    display: flex;\n    gap: var(--nav-link-gap);\n    align-items: var(--nav-link-align);\n    justify-content: var(--nav-link-justify);\n    padding: var(--nav-link-padding-y) var(--nav-link-padding-x);\n    font-weight: var(--nav-link-font-weight);\n    color: var(--nav-link-color);\n    text-decoration: none;\n    white-space: nowrap;\n    background: none;\n    border: 0;\n    @include border-radius(var(--border-radius));\n    // @include font-size(var(--nav-link-font-size));\n    @include transition(var(--nav-link-transition));\n\n    &:hover,\n    &:focus {\n      color: var(--nav-link-hover-color);\n      background-color: var(--nav-link-hover-bg);\n    }\n\n    &:focus-visible {\n      --focus-ring-offset: 1px;\n      color: var(--nav-link-hover-color);\n      @include focus-ring(true);\n    }\n\n    &.active,\n    &:active {\n      color: var(--nav-link-active-color);\n      background-color: var(--nav-link-active-bg);\n    }\n\n    // Disabled state lightens text\n    &.disabled,\n    &:disabled {\n      color: var(--nav-link-disabled-color);\n      pointer-events: none;\n      cursor: default;\n    }\n  }\n\n  //\n  // Tabs\n  //\n\n  .nav-tabs {\n    // scss-docs-start nav-tabs-css-vars\n    @include tokens($nav-tabs-tokens);\n    // scss-docs-end nav-tabs-css-vars\n\n    box-shadow: inset 0 calc(-1 * var(--nav-tabs-border-width)) 0 var(--nav-tabs-border-color);\n\n    .nav-link {\n      border: var(--nav-tabs-border-width) solid transparent;\n      border-bottom-color: var(--nav-tabs-border-color);\n      @include border-bottom-radius(0);\n\n      &:hover {\n        // Prevents active .nav-link tab overlapping focus outline of previous/next .nav-link\n        isolation: isolate;\n        border-color: var(--nav-tabs-link-hover-border-color);\n        border-bottom-color: var(--nav-tabs-border-color);\n      }\n    }\n\n    .nav-link.active,\n    .nav-item.show .nav-link {\n      color: var(--nav-tabs-link-active-color);\n      background-color: var(--nav-tabs-link-active-bg);\n      border-color: var(--nav-tabs-link-active-border-color);\n      border-bottom-color: var(--nav-tabs-link-active-bg);\n    }\n\n    .dropdown-menu {\n      // Make dropdown border overlap tab border\n      margin-top: calc(-1 * var(--nav-tabs-border-width));\n      // Remove the top rounded corners here since there is a hard edge above the menu\n      @include border-top-radius(0);\n    }\n  }\n\n  //\n  // Pills\n  //\n\n  .nav-pills {\n    // scss-docs-start nav-pills-css-vars\n    @include tokens($nav-pills-tokens);\n    // scss-docs-end nav-pills-css-vars\n\n    .nav-link.active,\n    .show > .nav-link {\n      color: var(--nav-pills-link-active-color);\n      @include gradient-bg(var(--nav-pills-link-active-bg));\n    }\n  }\n\n  //\n  // Underline\n  //\n\n  .nav-underline {\n    // scss-docs-start nav-underline-css-vars\n    @include tokens($nav-underline-tokens);\n    // scss-docs-end nav-underline-css-vars\n\n    .nav-link {\n      padding-inline: 0;\n      border-block-end: var(--nav-underline-border-width) solid transparent;\n      @include border-radius(0);\n\n      &:hover,\n      &:focus {\n        border-block-end-color: currentcolor;\n      }\n    }\n\n    .nav-link.active,\n    .show > .nav-link {\n      font-weight: $font-weight-bold;\n      color: var(--nav-underline-link-active-color);\n      border-block-end-color: currentcolor;\n    }\n  }\n\n  //\n  // Justified variants\n  //\n\n  .nav-fill {\n    > .nav-link,\n    .nav-item {\n      flex: 1 1 auto;\n      text-align: center;\n    }\n  }\n\n  .nav-justified {\n    > .nav-link,\n    .nav-item {\n      flex-grow: 1;\n      flex-basis: 0;\n      text-align: center;\n    }\n  }\n\n  .nav-fill,\n  .nav-justified {\n    .nav-item .nav-link {\n      width: 100%; // Make sure button will grow\n    }\n  }\n\n  // Tabbable tabs\n  //\n  // Hide tabbable panes to start, show them when `.active`\n\n  .tab-content {\n    > .tab-pane {\n      display: none;\n    }\n    > .active {\n      display: block;\n    }\n  }\n}\n","// Nav Overflow (Priority+ Pattern)\n//\n// A responsive navigation pattern that automatically moves items\n// to an overflow dropdown when space is limited.\n\n@layer components {\n  .nav-overflow {\n    flex-wrap: nowrap;\n    min-width: 0; // Allow flex child to shrink below content width\n  }\n\n  // Container item for overflow\n  .nav-overflow-item {\n    flex-shrink: 0;\n    margin-inline-start: auto;\n  }\n\n  // Hide items that have been moved to overflow\n  .nav-overflow [data-bs-nav-overflow=\"true\"] {\n    display: none;\n  }\n\n  // Preserve items that should never overflow\n  .nav-overflow-keep {\n    flex-shrink: 0;\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/tokens\" as *;\n@use \"mixins/transition\" as *;\n\n// mdo-do: fix nav-link-height and navbar-brand-height, which we previously calculated with font-size, line-height, and block padding\n\n// scss-docs-start navbar-breakpoints\n$navbar-breakpoints: $breakpoints !default;\n// scss-docs-end navbar-breakpoints\n\n$navbar-tokens: () !default;\n\n// scss-docs-start navbar-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-tokens: defaults(\n  (\n    --navbar-padding-x: 0,\n    --navbar-padding-y: .5rem,\n    --navbar-color: var(--fg-2),\n    --navbar-hover-color: var(--fg-1),\n    --navbar-disabled-color: var(--fg-3),\n    --navbar-active-color: var(--fg-body),\n    --navbar-brand-padding-y: .75rem,\n    --navbar-brand-margin-end: 1rem,\n    --navbar-brand-font-size: var(--font-size-md),\n    --navbar-brand-font-weight: var(--font-weight-medium),\n    --navbar-brand-color: var(--fg-body),\n    --navbar-brand-hover-color: var(--fg-body),\n    --navbar-nav-link-padding-x: .75rem,\n    --navbar-toggler-width: 2rem,\n    --navbar-toggler-padding-y: .25rem,\n    --navbar-toggler-padding-x: .75rem,\n    --navbar-toggler-font-size: var(--font-size-lg),\n    --navbar-toggler-border-color: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    --navbar-toggler-border-radius: var(--border-radius),\n    --navbar-toggler-transition: box-shadow .15s ease-in-out,\n  ),\n  $navbar-tokens\n);\n// scss-docs-end navbar-tokens\n\n$navbar-dark-tokens: () !default;\n\n// scss-docs-start navbar-dark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-dark-tokens: defaults(\n  (\n    --navbar-color: color-mix(in oklch, var(--white) .55, transparent),\n    --navbar-hover-color: color-mix(in oklch, var(--white) .75, transparent),\n    --navbar-disabled-color: color-mix(in oklch, var(--white) .25, transparent),\n    --navbar-active-color: var(--white),\n    --navbar-brand-color: var(--white),\n    --navbar-brand-hover-color: var(--white),\n    --navbar-toggler-border-color: color-mix(in oklch, var(--white) .1, transparent),\n  ),\n  $navbar-dark-tokens\n);\n// scss-docs-end navbar-dark-tokens\n\n@layer components {\n  // Base navbar\n  .navbar {\n    @include tokens($navbar-tokens);\n\n    position: relative;\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: space-between;\n    padding: var(--navbar-padding-y) var(--navbar-padding-x);\n    @include set-container();\n    @include gradient-bg();\n\n    // Container properties for nested containers\n    %container-flex-properties {\n      display: flex;\n      flex-wrap: inherit;\n      align-items: center;\n      justify-content: space-between;\n    }\n\n    > .container,\n    > .container-fluid {\n      @extend %container-flex-properties;\n    }\n\n    @each $breakpoint, $container-max-width in $container-max-widths {\n      > .container#{breakpoint-infix($breakpoint, $container-max-widths)} {\n        @extend %container-flex-properties;\n      }\n    }\n  }\n\n  // Navbar brand\n  //\n  // Used for brand, project, or site names.\n  .navbar-brand {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    margin-inline-end: var(--navbar-brand-margin-end);\n    font-size: var(--navbar-brand-font-size);\n    font-weight: var(--navbar-brand-font-weight);\n    color: var(--navbar-brand-color);\n    text-decoration: none;\n    white-space: nowrap;\n\n    &:hover,\n    &:focus {\n      color: var(--navbar-brand-hover-color);\n    }\n  }\n\n  // Navigation within navbars. Sets all nav-link CSS variables needed for\n  // proper styling.\n  //\n  // Relies on `.nav` base class.\n  .navbar-nav {\n    // scss-docs-start navbar-nav-css-vars\n    // Set all nav-link variables for self-contained styling\n    --nav-gap: .25rem;\n    --nav-link-gap: .5rem;\n    --nav-link-padding-x: .5rem;\n    --nav-link-padding-y: .5rem;\n    --nav-link-color: var(--navbar-color);\n    --nav-link-hover-color: var(--navbar-hover-color);\n    --nav-link-hover-bg: transparent;\n    --nav-link-active-color: var(--navbar-active-color);\n    --nav-link-active-bg: transparent;\n    --nav-link-disabled-color: var(--navbar-disabled-color);\n    // scss-docs-end navbar-nav-css-vars\n\n    display: flex;\n    flex-direction: column;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style: none;\n\n    .nav-link {\n      &.active,\n      &.show {\n        color: var(--navbar-active-color);\n      }\n    }\n  }\n\n  // Navbar text\n  //\n  // For adding text or inline elements to the navbar\n  .navbar-text {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    color: var(--navbar-color);\n\n    a,\n    a:hover,\n    a:focus {\n      color: var(--navbar-active-color);\n    }\n  }\n\n  // Button for toggling the navbar when in its collapsed state\n  .navbar-toggler {\n    --btn-bg: transparent;\n    --btn-hover-bg: var(--bg-2);\n  }\n\n  // scss-docs-start navbar-expand-loop\n  // Generate series of `.navbar-expand-*` responsive classes for configuring\n  // where your navbar collapses and expands. Uses container queries so the\n  // navbar responds to its own width, not the viewport width.\n\n  // Mixin for expanded state styles (applied to descendants)\n  @mixin navbar-expanded {\n    // Style the inner container since we can't style .navbar itself with container queries\n    > .container,\n    > .container-fluid,\n    %navbar-expand-container {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n\n    .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n\n    .navbar-toggler {\n      display: none !important; // stylelint-disable-line declaration-no-important\n    }\n\n    .offcanvas {\n      // stylelint-disable declaration-no-important\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      @include box-shadow(none);\n      @include transition(none);\n      // stylelint-enable declaration-no-important\n\n      .offcanvas-header {\n        display: none;\n      }\n\n      .offcanvas-body {\n        display: flex;\n        flex-grow: 0;\n        flex-direction: row;\n        align-items: center;\n        padding: 0;\n        overflow-y: visible;\n      }\n    }\n  }\n\n  // Always expanded (no responsive behavior)\n  .navbar-expand {\n    @include navbar-expanded();\n\n    // Also set on navbar itself for non-responsive case\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n\n  // Responsive navbar expand classes using container queries\n  @include loop-breakpoints-down($navbar-breakpoints) using ($breakpoint, $next, $infix) {\n    @if $next {\n      .navbar-expand#{$infix} {\n        @include container-breakpoint-up($next) {\n          @include navbar-expanded();\n        }\n      }\n    }\n  }\n  // scss-docs-end navbar-expand-loop\n\n  .navbar[data-bs-theme=\"dark\"] {\n    @include tokens($navbar-dark-tokens);\n  }\n}\n","@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/backdrop\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$offcanvas-tokens: () !default;\n\n// scss-docs-start offcanvas-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$offcanvas-tokens: defaults(\n  (\n    --offcanvas-inset: var(--spacer),\n    --offcanvas-zindex: #{$zindex-offcanvas},\n    --offcanvas-width: 400px,\n    --offcanvas-height: 30vh,\n    --offcanvas-padding-x: var(--spacer),\n    --offcanvas-padding-y: var(--spacer),\n    --offcanvas-color: var(--fg-body),\n    --offcanvas-bg: var(--bg-body),\n    --offcanvas-border-width: var(--border-width),\n    --offcanvas-border-color: var(--border-color-translucent),\n    --offcanvas-border-radius: var(--border-radius-lg),\n    --offcanvas-box-shadow: var(--box-shadow-lg),\n    --offcanvas-transition: transform .3s ease-in-out,\n    --offcanvas-title-line-height: 1.5,\n  ),\n  $offcanvas-tokens\n);\n// scss-docs-end offcanvas-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n$offcanvas-backdrop-tokens: () !default;\n\n// scss-docs-start offcanvas-backdrop-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$offcanvas-backdrop-tokens: defaults(\n  (\n    --offcanvas-backdrop-bg: var(--bg-body),\n    --offcanvas-backdrop-opacity: 25%,\n    --offcanvas-backdrop-blur: 8px,\n  ),\n  $offcanvas-backdrop-tokens\n);\n// scss-docs-end offcanvas-backdrop-tokens\n\n%offcanvas-css-vars {\n  @include tokens($offcanvas-tokens);\n}\n\n@layer components {\n  // Apply CSS vars to all offcanvas responsive variants\n  @include loop-breakpoints-down() using ($breakpoint, $next, $infix) {\n    .offcanvas#{$infix} {\n      @extend %offcanvas-css-vars;\n    }\n  }\n\n  // Responsive offcanvas styles\n  @include loop-breakpoints-down() using ($breakpoint, $next, $infix) {\n    .offcanvas#{$infix} {\n      @include media-breakpoint-down($next) {\n        position: fixed;\n        z-index: var(--offcanvas-zindex);\n        display: flex;\n        flex-direction: column;\n        max-width: calc(100% - var(--offcanvas-inset) * 2);\n        max-height: calc(100% - var(--offcanvas-inset) * 2);\n        color: var(--offcanvas-color);\n        visibility: hidden;\n        background-color: var(--offcanvas-bg);\n        background-clip: padding-box;\n        border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n        @include border-radius(var(--offcanvas-border-radius));\n        outline: 0;\n        @include box-shadow(var(--offcanvas-box-shadow));\n        @include transition(var(--offcanvas-transition));\n\n        // Placement: Start (left in LTR, right in RTL)\n        &.offcanvas-start {\n          inset-block: var(--offcanvas-inset);\n          inset-inline-start: var(--offcanvas-inset);\n          width: var(--offcanvas-width);\n          transform: translateX(-100%);\n\n          :root:dir(rtl) & {\n            transform: translateX(100%);\n          }\n        }\n\n        // Placement: End (right in LTR, left in RTL)\n        &.offcanvas-end {\n          inset-block: var(--offcanvas-inset);\n          inset-inline-end: var(--offcanvas-inset);\n          width: var(--offcanvas-width);\n          transform: translateX(100%);\n\n          :root:dir(rtl) & {\n            transform: translateX(-100%);\n          }\n        }\n\n        // Placement: Top\n        &.offcanvas-top {\n          inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n          height: var(--offcanvas-height);\n          transform: translateY(-100%);\n        }\n\n        // Placement: Bottom\n        &.offcanvas-bottom {\n          inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n          height: var(--offcanvas-height);\n          transform: translateY(100%);\n        }\n\n        // Fullscreen variant - covers entire viewport\n        &.offcanvas-fullscreen {\n          inset: var(--offcanvas-inset);\n          width: auto;\n          max-width: none;\n          height: auto;\n          max-height: none;\n          transform: translateY(100%);\n        }\n\n        // Show/hide states\n        &.showing,\n        &.show:not(.hiding) {\n          transform: none;\n        }\n\n        &.showing,\n        &.hiding,\n        &.show {\n          visibility: visible;\n        }\n      }\n\n      // Above breakpoint - show content inline (for responsive offcanvas)\n      @if not ($infix == \"\") {\n        @include media-breakpoint-up($next) {\n          --offcanvas-height: auto;\n          --offcanvas-border-width: 0;\n          background-color: transparent !important; // stylelint-disable-line declaration-no-important\n\n          .offcanvas-header {\n            display: none;\n          }\n\n          .offcanvas-body {\n            flex-grow: 0;\n            flex-direction: row;\n            padding: 0;\n            overflow-y: visible;\n            background-color: transparent !important; // stylelint-disable-line declaration-no-important\n          }\n        }\n      }\n    }\n  }\n\n  // Backdrop overlay\n  .offcanvas-backdrop {\n    @include tokens($offcanvas-backdrop-tokens);\n    @include overlay-backdrop($zindex-offcanvas-backdrop, var(--offcanvas-backdrop-bg), var(--offcanvas-backdrop-opacity), var(--offcanvas-backdrop-blur));\n  }\n\n  // Header with close button\n  .offcanvas-header {\n    display: flex;\n    align-items: center;\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n\n    .btn-close {\n      padding: calc(var(--offcanvas-padding-y) * .5) calc(var(--offcanvas-padding-x) * .5);\n      margin-inline-start: auto;\n      margin-inline-end: calc(-.5 * var(--offcanvas-padding-x));\n      margin-top: calc(-.5 * var(--offcanvas-padding-y));\n      margin-bottom: calc(-.5 * var(--offcanvas-padding-y));\n    }\n  }\n\n  // Title\n  .offcanvas-title {\n    margin-bottom: 0;\n    line-height: var(--offcanvas-title-line-height);\n  }\n\n  // Scrollable body\n  .offcanvas-body {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    gap: var(--offcanvas-padding-y);\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n    overflow-y: auto;\n  }\n\n  // Optional footer\n  .offcanvas-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: .5rem;\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n    border-block-start: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n  }\n}\n","// Shared between modals and offcanvases\n@mixin overlay-backdrop($zindex, $backdrop-bg, $backdrop-opacity, $backdrop-blur) {\n  position: fixed;\n  inset: 0;\n  z-index: $zindex;\n  background-color: color-mix(in oklch, var(--offcanvas-backdrop-bg) var(--offcanvas-backdrop-opacity), transparent);\n  @if $backdrop-blur {\n    backdrop-filter: blur($backdrop-blur);\n  }\n\n  // Fade for backdrop\n  &.fade { opacity: 0; }\n  &.show { opacity: 1; }\n}\n","@use \"functions\" as *;\n@use \"mixins/lists\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n// mdo-do: Update pagination to support variant themes\n\n// stylelint-disable custom-property-no-missing-var-function\n$pagination-tokens: () !default;\n\n// scss-docs-start pagination-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$pagination-tokens: defaults(\n  (\n    --pagination-min-height: var(--btn-input-min-height),\n    --pagination-padding-x: var(--btn-input-padding-x),\n    --pagination-padding-y: var(--btn-input-padding-y),\n    --pagination-font-size: var(--btn-input-font-size),\n    --pagination-color: var(--link-color),\n    --pagination-bg: var(--bg-body),\n    --pagination-border-width: var(--border-width),\n    --pagination-border-color: var(--border-color),\n    --pagination-border-radius: var(--btn-input-border-radius),\n    --pagination-hover-color: var(--link-hover-color),\n    --pagination-hover-bg: var(--bg-1),\n    --pagination-hover-border-color: var(--border-color),\n    --pagination-focus-color: var(--link-hover-color),\n    --pagination-focus-bg: var(--bg-2),\n    --pagination-active-color: var(--primary-contrast),\n    --pagination-active-bg: var(--primary-bg),\n    --pagination-active-border-color: var(--primary-bg),\n    --pagination-disabled-color: var(--fg-3),\n    --pagination-disabled-bg: var(--bg-2),\n    --pagination-disabled-border-color: var(--border-color),\n  ),\n  $pagination-tokens\n);\n// scss-docs-end pagination-tokens\n\n// scss-docs-start pagination-sizes\n$pagination-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$pagination-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $pagination-sizes\n);\n// scss-docs-end pagination-sizes\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .pagination {\n    @include tokens($pagination-tokens);\n\n    display: flex;\n    @include list-unstyled();\n  }\n\n  .page-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: var(--pagination-min-height);\n    padding: var(--pagination-padding-y) var(--pagination-padding-x);\n    font-size: var(--pagination-font-size);\n    color: var(--pagination-color);\n    text-decoration: none;\n    background-color: var(--pagination-bg);\n    border: var(--pagination-border-width) solid var(--pagination-border-color);\n    @include transition(color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out);\n\n    &:hover {\n      z-index: 2;\n      color: var(--pagination-hover-color);\n      background-color: var(--pagination-hover-bg);\n      border-color: var(--pagination-hover-border-color);\n    }\n\n    &:focus-visible {\n      z-index: 3;\n      color: var(--pagination-focus-color);\n      background-color: var(--pagination-focus-bg);\n      @include focus-ring(true);\n    }\n\n    &.active,\n    .active > & {\n      z-index: 3;\n      color: var(--pagination-active-color);\n      @include gradient-bg(var(--pagination-active-bg));\n      border-color: var(--pagination-active-border-color);\n    }\n\n    &.disabled,\n    .disabled > & {\n      color: var(--pagination-disabled-color);\n      pointer-events: none;\n      background-color: var(--pagination-disabled-bg);\n      border-color: var(--pagination-disabled-border-color);\n    }\n  }\n\n  .page-item {\n    &:not(:first-child) .page-link {\n      margin-inline-start: calc(-1 * var(--pagination-border-width));\n    }\n\n    &:first-child {\n      .page-link {\n        @include border-start-radius(var(--pagination-border-radius));\n      }\n    }\n\n    &:last-child {\n      .page-link {\n        @include border-end-radius(var(--pagination-border-radius));\n      }\n    }\n  }\n\n  //\n  // Sizing\n  //\n\n  // scss-docs-start pagination-sizes-loop\n  @each $size, $_ in $pagination-sizes {\n    .pagination-#{$size} {\n      --pagination-min-height: var(--bs-btn-input-#{$size}-min-height);\n      --pagination-padding-y: var(--btn-input-#{$size}-padding-y);\n      --pagination-padding-x: var(--btn-input-#{$size}-padding-x);\n      --pagination-font-size: var(--btn-input-#{$size}-font-size);\n      --pagination-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n  // scss-docs-end pagination-sizes-loop\n}\n","@use \"colors\" as *;\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n$placeholder-tokens: () !default;\n\n// scss-docs-start placeholder-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$placeholder-tokens: defaults(\n  (\n    --placeholder-opacity-max: .5,\n    --placeholder-opacity-min: .2,\n  ),\n  $placeholder-tokens\n);\n// scss-docs-end placeholder-tokens\n\n@layer components {\n  .placeholder {\n    @include tokens($placeholder-tokens);\n\n    display: inline-block;\n    min-height: 1em;\n    vertical-align: middle;\n    cursor: wait;\n    background-color: currentcolor;\n    opacity: var(--placeholder-opacity-max);\n\n    &.btn::before {\n      display: inline-block;\n      content: \"\";\n    }\n  }\n\n  // Sizing\n  .placeholder-xs {\n    min-height: .6em;\n  }\n\n  .placeholder-sm {\n    min-height: .8em;\n  }\n\n  .placeholder-lg {\n    min-height: 1.2em;\n  }\n\n  // Animation\n  .placeholder-glow {\n    .placeholder {\n      animation: placeholder-glow 2s ease-in-out infinite;\n    }\n  }\n\n  @keyframes placeholder-glow {\n    50% {\n      opacity: var(--placeholder-opacity-min);\n    }\n  }\n\n  .placeholder-wave {\n    mask-image: linear-gradient(130deg, $black 55%, rgba(0, 0, 0, calc(1 - var(--placeholder-opacity-min))) 75%, $black 95%);\n    mask-size: 200% 100%;\n    animation: placeholder-wave 2s linear infinite;\n  }\n\n  @keyframes placeholder-wave {\n    100% {\n      mask-position: -200% 0%;\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/reset-text\" as *;\n@use \"mixins/tokens\" as *;\n\n$popover-tokens: () !default;\n\n// scss-docs-start popover-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$popover-tokens: defaults(\n  (\n    --popover-zindex: #{$zindex-popover},\n    --popover-max-width: 280px,\n    --popover-font-size: var(--font-size-sm),\n    --popover-bg: var(--bg-body),\n    --popover-border-width: var(--border-width),\n    --popover-border-color: var(--border-color-translucent),\n    --popover-border-radius: var(--border-radius-lg),\n    --popover-inner-border-radius: calc(var(--border-radius-lg) - var(--border-width)),\n    --popover-box-shadow: var(--box-shadow),\n    --popover-header-padding-x: #{$spacer},\n    --popover-header-padding-y: #{$spacer * .75},\n    --popover-header-font-size: var(--font-size-sm),\n    --popover-header-color: #{$headings-color},\n    --popover-header-bg: var(--bg-1),\n    --popover-body-padding-x: #{$spacer},\n    --popover-body-padding-y: #{$spacer * .75},\n    --popover-body-color: var(--fg-body),\n    --popover-arrow-width: 1rem,\n    --popover-arrow-height: .5rem,\n    --popover-arrow-border: var(--popover-border-color),\n  ),\n  $popover-tokens\n);\n// scss-docs-end popover-tokens\n\n@layer components {\n  .popover {\n    // scss-docs-start popover-css-vars\n    @include tokens($popover-tokens);\n    // scss-docs-end popover-css-vars\n\n    z-index: var(--popover-zindex);\n    display: block;\n    max-width: var(--popover-max-width);\n    // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n    // So reset our font and text properties to avoid inheriting weird values.\n    @include reset-text();\n    font-size: var(--popover-font-size);\n    // Allow breaking very long words so they don't overflow the popover's bounds\n    word-wrap: break-word;\n    background-color: var(--popover-bg);\n    background-clip: padding-box;\n    border: var(--popover-border-width) solid var(--popover-border-color);\n    @include border-radius(var(--popover-border-radius));\n    @include box-shadow(var(--popover-box-shadow));\n\n    .popover-arrow {\n      display: block;\n      width: var(--popover-arrow-width);\n      height: var(--popover-arrow-height);\n\n      &::before,\n      &::after {\n        position: absolute;\n        display: block;\n        content: \"\";\n        border-color: transparent;\n        border-style: solid;\n        border-width: 0;\n      }\n    }\n  }\n\n  .bs-popover-top {\n    > .popover-arrow {\n      bottom: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n\n      &::before,\n      &::after {\n        border-width: var(--popover-arrow-height) calc(var(--popover-arrow-width) * .5) 0;\n      }\n\n      &::before {\n        bottom: 0;\n        border-block-start-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        bottom: var(--popover-border-width);\n        border-block-start-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-end {\n    > .popover-arrow {\n      left: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n      width: var(--popover-arrow-height);\n      height: var(--popover-arrow-width);\n\n      &::before,\n      &::after {\n        border-width: calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height) calc(var(--popover-arrow-width) * .5) 0;\n      }\n\n      &::before {\n        left: 0;\n        border-inline-end-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        left: var(--popover-border-width);\n        border-inline-end-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-bottom {\n    > .popover-arrow {\n      top: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n\n      &::before,\n      &::after {\n        border-width: 0 calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height);\n      }\n\n      &::before {\n        top: 0;\n        border-block-end-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        top: var(--popover-border-width);\n        border-block-end-color: var(--popover-bg);\n      }\n    }\n\n    // This will remove the popover-header's border just below the arrow\n    .popover-header::before {\n      position: absolute;\n      top: 0;\n      left: 50%;\n      display: block;\n      width: var(--popover-arrow-width);\n      margin-inline-start: calc(-.5 * var(--popover-arrow-width));\n      content: \"\";\n      border-block-end: var(--popover-border-width) solid var(--popover-header-bg);\n    }\n  }\n\n  .bs-popover-start {\n    > .popover-arrow {\n      right: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n      width: var(--popover-arrow-height);\n      height: var(--popover-arrow-width);\n\n      &::before,\n      &::after {\n        border-width: calc(var(--popover-arrow-width) * .5) 0 calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height);\n      }\n\n      &::before {\n        right: 0;\n        border-inline-start-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        right: var(--popover-border-width);\n        border-inline-start-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-auto {\n    &[data-bs-placement^=\"top\"] {\n      @extend .bs-popover-top;\n    }\n    &[data-bs-placement^=\"right\"] {\n      @extend .bs-popover-end;\n    }\n    &[data-bs-placement^=\"bottom\"] {\n      @extend .bs-popover-bottom;\n    }\n    &[data-bs-placement^=\"left\"] {\n      @extend .bs-popover-start;\n    }\n  }\n\n  // Offset the popover to account for the popover arrow\n  .popover-header {\n    padding: var(--popover-header-padding-y) var(--popover-header-padding-x);\n    margin-bottom: 0; // Reset the default from Reboot\n    font-size: var(--popover-header-font-size);\n    color: var(--popover-header-color);\n    background-color: var(--popover-header-bg);\n    border-block-end: var(--popover-border-width) solid var(--popover-border-color);\n    @include border-top-radius(var(--popover-inner-border-radius));\n\n    &:empty {\n      display: none;\n    }\n  }\n\n  .popover-body {\n    padding: var(--popover-body-padding-y) var(--popover-body-padding-x);\n    color: var(--popover-body-color);\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/tokens\" as *;\n\n$progress-tokens: () !default;\n\n// scss-docs-start progress-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$progress-tokens: defaults(\n  (\n    --progress-height: 1rem,\n    --progress-font-size: var(--font-size-sm),\n    --progress-bg: var(--bg-2),\n    --progress-border-radius: var(--border-radius),\n    --progress-box-shadow: var(--box-shadow-inset),\n    --progress-bar-color: var(--white),\n    --progress-bar-bg: var(--primary-bg),\n    --progress-bar-transition: width .6s ease,\n    --progress-bar-animation: progress-bar-stripes 1s linear infinite,\n  ),\n  $progress-tokens\n);\n// scss-docs-end progress-tokens\n\n// Disable animation if transitions are disabled\n\n@layer components {\n  // scss-docs-start progress-keyframes\n  @if $enable-transitions {\n    @keyframes progress-bar-stripes {\n      0% { background-position-x: var(--progress-height); }\n    }\n  }\n  // scss-docs-end progress-keyframes\n\n  .progress,\n  .progress-stacked {\n    @include tokens($progress-tokens);\n\n    display: flex;\n    height: var(--progress-height);\n    overflow: hidden;\n    font-size: var(--progress-font-size);\n    background-color: var(--progress-bg);\n    @include border-radius(var(--progress-border-radius));\n    @include box-shadow(var(--progress-box-shadow));\n  }\n\n  .progress-bar {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    overflow: hidden;\n    color: var(--theme-contrast, var(--progress-bar-color));\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--theme-bg, var(--progress-bar-bg));\n    @include transition(var(--progress-bar-transition));\n  }\n\n  .progress-bar-striped {\n    @include gradient-striped();\n    background-size: var(--progress-height) var(--progress-height);\n  }\n\n  .progress-stacked > .progress {\n    overflow: visible;\n  }\n\n  .progress-stacked > .progress > .progress-bar {\n    width: 100%;\n  }\n\n  @if $enable-transitions {\n    .progress-bar-animated {\n      animation: var(--progress-bar-animation);\n\n      @if $enable-reduced-motion {\n        @media (prefers-reduced-motion: reduce) {\n          animation: none;\n        }\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$spinner-border-tokens: () !default;\n\n// scss-docs-start spinner-border-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$spinner-border-tokens: defaults(\n  (\n    --spinner-width: 2rem,\n    --spinner-height: 2rem,\n    --spinner-vertical-align: -.125em,\n    --spinner-border-width: .25em,\n    --spinner-animation-speed: .75s,\n    --spinner-animation-name: spinner-border,\n  ),\n  $spinner-border-tokens\n);\n// scss-docs-end spinner-border-tokens\n\n$spinner-grow-tokens: () !default;\n\n// scss-docs-start spinner-grow-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$spinner-grow-tokens: defaults(\n  (\n    --spinner-width: 2rem,\n    --spinner-height: 2rem,\n    --spinner-vertical-align: -.125em,\n    --spinner-animation-speed: .75s,\n    --spinner-animation-name: spinner-grow,\n  ),\n  $spinner-grow-tokens\n);\n// scss-docs-end spinner-grow-tokens\n\n// stylelint-enable custom-property-no-missing-var-function\n\n//\n// Rotating border\n//\n\n@layer components {\n  // mdo-do: Refactor this to assume flex parent and remove `vertical-align`\n  .spinner-grow,\n  .spinner-border {\n    display: inline-block;\n    flex-shrink: 0;\n    width: var(--spinner-width);\n    height: var(--spinner-height);\n    vertical-align: var(--spinner-vertical-align);\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 50%;\n    animation: var(--spinner-animation-speed) linear infinite var(--spinner-animation-name);\n  }\n\n  // scss-docs-start spinner-border-keyframes\n  @keyframes spinner-border {\n    to { transform: rotate(360deg); }\n  }\n  // scss-docs-end spinner-border-keyframes\n\n  .spinner-border {\n    @include tokens($spinner-border-tokens);\n\n    border: var(--spinner-border-width) solid currentcolor;\n    border-inline-end-color: transparent;\n  }\n\n  .spinner-border-sm {\n    // scss-docs-start spinner-border-sm-css-vars\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    --spinner-border-width: .2em;\n    // scss-docs-end spinner-border-sm-css-vars\n  }\n\n  //\n  // Growing circle\n  //\n\n  // scss-docs-start spinner-grow-keyframes\n  @keyframes spinner-grow {\n    0% {\n      transform: scale(0);\n    }\n    50% {\n      opacity: 1;\n      transform: none;\n    }\n  }\n  // scss-docs-end spinner-grow-keyframes\n\n  .spinner-grow {\n    @include tokens($spinner-grow-tokens);\n\n    background-color: currentcolor;\n    opacity: 0;\n  }\n\n  .spinner-grow-sm {\n    // scss-docs-start spinner-grow-sm-css-vars\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    // scss-docs-end spinner-grow-sm-css-vars\n  }\n\n  @if $enable-reduced-motion {\n    @media (prefers-reduced-motion: reduce) {\n      .spinner-border,\n      .spinner-grow {\n        --spinner-animation-speed: 1.5s;\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$stepper-tokens: () !default;\n\n// scss-docs-start stepper-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$stepper-tokens: defaults(\n  (\n    --stepper-size: 2rem,\n    --stepper-gap: 1rem,\n    --stepper-bg: var(--bg-2),\n    --stepper-track-size: .25rem,\n    --stepper-active-color: var(--primary-contrast),\n    --stepper-active-bg: var(--primary-bg),\n  ),\n  $stepper-tokens\n);\n// scss-docs-end stepper-tokens\n\n// scss-docs-start stepper-horizontal-mixin\n@mixin stepper-horizontal() {\n  display: inline-grid;\n  grid-auto-columns: 1fr;\n  grid-auto-flow: column;\n\n  .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n\n    &::after {\n      top: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n      right: 0;\n      bottom: auto;\n      left: calc(-50% - var(--stepper-gap));\n      width: auto;\n      height: var(--stepper-track-size);\n    }\n\n    &:last-child::after {\n      right: 50%;\n    }\n  }\n}\n// scss-docs-end stepper-horizontal-mixin\n\n// scss-docs-start stepper-css\n.stepper {\n  // scss-docs-start stepper-css-vars\n  @include tokens($stepper-tokens);\n  // scss-docs-end stepper-css-vars\n\n  display: grid;\n  grid-auto-rows: 1fr;\n  grid-auto-flow: row;\n  gap: var(--stepper-gap);\n  padding-left: 0;\n  list-style: none;\n  counter-reset: stepper;\n}\n\n.stepper-item {\n  position: relative;\n  display: grid;\n  grid-template-rows: auto;\n  grid-template-columns: var(--stepper-size) auto;\n  gap: .5rem;\n  place-items: center;\n  justify-items: start;\n  text-align: center;\n  text-decoration: none;\n\n  // The counter\n  &::before {\n    position: relative;\n    z-index: 1;\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--stepper-size);\n    height: var(--stepper-size);\n    padding: .5rem;\n    font-weight: 600;\n    line-height: 1;\n    text-align: center;\n    content: counter(stepper);\n    counter-increment: stepper;\n    background-color: var(--stepper-bg);\n    @include border-radius(50%);\n  }\n\n  // Connecting lines\n  &::after {\n    position: absolute;\n    top: calc(var(--stepper-gap) * -1);\n    bottom: 100%;\n    left: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n    width: var(--stepper-track-size);\n    content: \"\";\n    background-color: var(--stepper-bg);\n  }\n\n  // Avoid sibling selector for easier CSS overrides\n  &:first-child::after {\n    display: none;\n  }\n\n  &.active {\n    &::before,\n    &::after {\n      color: var(--theme-contrast, var(--stepper-active-color));\n      background-color: var(--theme-bg, var(--stepper-active-bg));\n    }\n  }\n}\n\n@each $breakpoint in map.keys($breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    .stepper-horizontal#{$infix} {\n      @include stepper-horizontal();\n    }\n  }\n}\n\n// scss-docs-start stepper-overflow\n.stepper-overflow {\n  container-type: inline-size;\n  overflow-x: auto;\n  overscroll-behavior-x: contain;\n  -webkit-overflow-scrolling: touch;\n\n  > .stepper {\n    width: max-content;\n    min-width: 100%;\n  }\n}\n// scss-docs-end stepper-overflow\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$toast-tokens: () !default;\n\n// scss-docs-start toast-tokens\n// stylelint-disable custom-property-no-missing-var-function\n// stylelint-disable-next-line scss/dollar-variable-default\n$toast-tokens: defaults(\n  (\n    --toast-zindex: #{$zindex-toast},\n    --toast-padding-x: .75rem,\n    --toast-padding-y: .5rem,\n    --toast-spacing: #{$container-padding-x},\n    --toast-max-width: 350px,\n    --toast-font-size: .875rem,\n    --toast-color: null,\n    --toast-bg: rgba(var(--body-bg-rgb), .85),\n    --toast-border-width: var(--border-width),\n    --toast-border-color: var(--border-color-translucent),\n    --toast-border-radius: var(--border-radius),\n    --toast-box-shadow: var(--box-shadow),\n    --toast-header-color: var(--fg-3),\n    --toast-header-bg: rgba(var(--body-bg-rgb), .85),\n    --toast-header-border-color: var(--border-color-translucent),\n  ),\n  $toast-tokens\n);\n// stylelint-enable custom-property-no-missing-var-function\n// scss-docs-end toast-tokens\n\n@layer components {\n  .toast {\n    @include tokens($toast-tokens);\n\n    width: var(--toast-max-width);\n    max-width: 100%;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color);\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--toast-border-color);\n    box-shadow: var(--toast-box-shadow);\n    @include border-radius(var(--toast-border-radius));\n\n    &.showing {\n      opacity: 0;\n    }\n\n    &:not(.show) {\n      display: none;\n    }\n  }\n\n  .toast-container {\n    --toast-zindex: #{$zindex-toast};\n\n    position: absolute;\n    z-index: var(--toast-zindex);\n    width: max-content;\n    max-width: 100%;\n    pointer-events: none;\n\n    > :not(:last-child) {\n      margin-bottom: var(--toast-spacing);\n    }\n  }\n\n  .toast-header {\n    display: flex;\n    align-items: center;\n    padding: var(--toast-padding-y) var(--toast-padding-x);\n    color: var(--toast-header-color);\n    background-color: var(--toast-header-bg);\n    background-clip: padding-box;\n    border-block-end: var(--toast-border-width) solid var(--toast-header-border-color);\n    @include border-top-radius(calc(var(--toast-border-radius) - var(--toast-border-width)));\n\n    .btn-close {\n      margin-inline-start: var(--toast-padding-x);\n      margin-inline-end: calc(-.5 * var(--toast-padding-x));\n    }\n  }\n\n  .toast-body {\n    padding: var(--toast-padding-x);\n    word-wrap: break-word;\n  }\n}\n","@use \"variables\" as *;\n@use \"mixins/transition\" as *;\n\n.fade {\n  @include transition($transition-fade);\n\n  &:not(.show) {\n    opacity: 0;\n  }\n}\n\n// scss-docs-start collapse-classes\n.collapse {\n  &:not(.show) {\n    display: none;\n  }\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  @include transition($transition-collapse);\n\n  &.collapse-horizontal {\n    width: 0;\n    height: auto;\n    @include transition($transition-collapse-width);\n  }\n}\n// scss-docs-end collapse-classes\n","@layer helpers {\n  .focus-ring:focus-visible {\n    outline: var(--focus-ring);\n  }\n}\n","@use \"../variables\" as *;\n@use \"../mixins/transition\" as *;\n\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: $icon-link-gap;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, .5));\n    text-underline-offset: $icon-link-underline-offset;\n    backface-visibility: hidden;\n\n    > .bi {\n      flex-shrink: 0;\n      width: $icon-link-icon-size;\n      height: $icon-link-icon-size;\n      fill: currentcolor;\n      @include transition($icon-link-icon-transition);\n    }\n  }\n\n  .icon-link-hover {\n    &:hover,\n    &:focus-visible {\n      > .bi {\n        transform: var(--icon-link-transform, $icon-link-icon-transform);\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"../config\" as *;\n@use \"../variables\" as *;\n@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: $zindex-fixed;\n  }\n\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: $zindex-fixed;\n  }\n\n  // Responsive sticky top and bottom\n  @each $breakpoint in map.keys($breakpoints) {\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      .sticky#{$infix}-top {\n        position: sticky;\n        top: 0;\n        z-index: $zindex-sticky;\n      }\n\n      .sticky#{$infix}-bottom {\n        position: sticky;\n        bottom: 0;\n        z-index: $zindex-sticky;\n      }\n    }\n  }\n}\n","@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  // scss-docs-start stacks\n  .stack-container {\n    @include set-container();\n  }\n\n  [class*=\"hstack\"],\n  [class*=\"vstack\"] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n\n  @include loop-breakpoints-up() using ($breakpoint, $infix) {\n    .vstack#{$infix} {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: column;\n        --stack-align-items: stretch;\n      }\n    }\n    .hstack#{$infix} {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: row;\n        --stack-align-items: flex-start;\n      }\n    }\n  }\n  // scss-docs-end stacks\n}\n","@use \"../theme\" as *;\n\n// Generate theme modifier classes (e.g., .theme-primary, .theme-accent, etc.)\n@layer helpers {\n  @include generate-theme-classes();\n}\n","@use \"sass:meta\";\n@use \"sass:map\";\n\n@function theme-color-values($key) {\n  $result: ();\n\n  @each $color-name, $color-map in $theme-colors {\n    @if map.has-key($color-map, $key) {\n      $result: map.merge($result, ($color-name: map.get($color-map, $key)));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate opacity values using color-mix()\n@function theme-opacity-values($color-var, $opacities: $util-opacity) {\n  $result: ();\n\n  @each $key, $value in $opacities {\n    @if $key == 100 {\n      // For 100%, use direct variable reference (more efficient)\n      $result: map.merge($result, ($key: var($color-var)));\n    } @else {\n      // For other values, use color-mix()\n      $percentage: $key * 1%;\n      $result: map.merge($result, ($key: color-mix(in oklch, var($color-var) $percentage, transparent)));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate theme classes dynamically based on the keys in each theme color map\n@mixin generate-theme-classes() {\n  @each $color-name, $color-map in $theme-colors {\n    .theme-#{$color-name} {\n      @each $key, $value in $color-map {\n        --theme-#{$key}: var(--#{$color-name}-#{$key});\n      }\n    }\n  }\n}\n\n// Recursive mixin to handle nested maps\n@mixin create-css-vars($map, $parent-key: \"\") {\n  @each $key, $value in $map {\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    $current-key: if(sass($parent-key == \"\"): $key; else: \"#{$parent-key}-#{$key}\");\n\n    @if meta.type-of($value) == \"map\" {\n      @include create-css-vars($value, $current-key);\n    } @else {\n      --#{$current-key}: #{$value};\n    }\n  }\n}\n\n// scss-docs-start theme-colors\n$theme-colors: (\n  \"primary\": (\n    \"base\": var(--blue-500),\n    \"text\": light-dark(var(--blue-600), var(--blue-400)),\n    \"text-emphasis\": light-dark(var(--blue-800), var(--blue-200)),\n    \"bg\": var(--blue-500),\n    \"bg-subtle\": light-dark(var(--blue-100), var(--blue-900)),\n    \"bg-muted\": light-dark(var(--blue-200), var(--blue-800)),\n    \"border\": light-dark(var(--blue-300), var(--blue-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"accent\": (\n    \"base\": var(--indigo-500),\n    \"text\": light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300))),\n    \"text-emphasis\": light-dark(var(--indigo-800), var(--indigo-300)),\n    \"bg\": var(--indigo-500),\n    \"bg-subtle\": light-dark(var(--indigo-100), var(--indigo-900)),\n    \"bg-muted\": light-dark(var(--indigo-200), var(--indigo-800)),\n    \"border\": light-dark(var(--indigo-300), var(--indigo-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"success\": (\n    \"base\": var(--green-500),\n    \"text\": light-dark(var(--green-600), var(--green-400)),\n    \"text-emphasis\": light-dark(var(--green-800), var(--green-300)),\n    \"bg\": var(--green-500),\n    \"bg-subtle\": light-dark(var(--green-100), var(--green-900)),\n    \"bg-muted\": light-dark(var(--green-200), var(--green-800)),\n    \"border\": light-dark(var(--green-300), var(--green-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"danger\": (\n    \"base\": var(--red-500),\n    \"text\": light-dark(var(--red-600), var(--red-400)),\n    \"text-emphasis\": light-dark(var(--red-800), var(--red-300)),\n    \"bg\": var(--red-500),\n    \"bg-subtle\": light-dark(var(--red-100), var(--red-900)),\n    \"bg-muted\": light-dark(var(--red-200), var(--red-800)),\n    \"border\": light-dark(var(--red-300), var(--red-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"warning\": (\n    \"base\": var(--yellow-500),\n    \"text\": light-dark(var(--yellow-700), var(--yellow-400)),\n    \"text-emphasis\": light-dark(var(--yellow-800), var(--yellow-300)),\n    \"bg\": var(--yellow-500),\n    \"bg-subtle\": light-dark(var(--yellow-100), var(--yellow-900)),\n    \"bg-muted\": light-dark(var(--yellow-200), var(--yellow-800)),\n    \"border\": light-dark(var(--yellow-300), var(--yellow-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"info\": (\n    \"base\": var(--cyan-500),\n    \"text\": light-dark(var(--cyan-600), var(--cyan-400)),\n    \"text-emphasis\": light-dark(var(--cyan-800), var(--cyan-300)),\n    \"bg\": var(--cyan-500),\n    \"bg-subtle\": light-dark(var(--cyan-100), var(--cyan-900)),\n    \"bg-muted\": light-dark(var(--cyan-200), var(--cyan-800)),\n    \"border\": light-dark(var(--cyan-300), var(--cyan-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"inverse\": (\n    \"base\": var(--gray-900),\n    \"text\": light-dark(var(--gray-900), var(--gray-200)),\n    \"text-emphasis\": light-dark(var(--gray-975), var(--white)),\n    \"bg\": light-dark(var(--gray-900), var(--gray-025)),\n    \"bg-subtle\": light-dark(var(--gray-100), var(--gray-900)),\n    \"bg-muted\": light-dark(var(--gray-200), var(--gray-300)),\n    \"border\": light-dark(var(--gray-400), var(--gray-100)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--white), var(--gray-900))\n  ),\n  \"secondary\": (\n    \"base\": var(--gray-200),\n    \"text\": light-dark(var(--gray-600), var(--gray-400)),\n    \"text-emphasis\": light-dark(var(--gray-800), var(--gray-200)),\n    \"bg\": light-dark(var(--gray-100), var(--gray-600)),\n    \"bg-subtle\": light-dark(var(--gray-050), var(--gray-800)),\n    \"bg-muted\": light-dark(var(--gray-100), var(--gray-700)),\n    \"border\": light-dark(var(--gray-300), var(--gray-600)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--gray-900), var(--white))\n  )\n) !default;\n// scss-docs-end theme-colors\n\n// mdo-do: consider using muted, subtle, ghost or something instead of linear scale?\n$theme-bgs: (\n  \"body\": light-dark(var(--white), var(--gray-975)),\n  \"1\": light-dark(var(--gray-025), var(--gray-950)),\n  \"2\": light-dark(var(--gray-050), var(--gray-900)),\n  \"3\": light-dark(var(--gray-100), var(--gray-800)),\n  \"4\": light-dark(var(--gray-200), var(--gray-700)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"transparent\": transparent,\n  \"inherit\": inherit,\n) !default;\n\n$theme-fgs: (\n  \"body\": light-dark(var(--gray-900), var(--gray-050)),\n  \"1\": light-dark(var(--gray-800), var(--gray-200)),\n  \"2\": light-dark(var(--gray-700), var(--gray-300)),\n  \"3\": light-dark(var(--gray-600), var(--gray-500)),\n  \"4\": light-dark(var(--gray-500), var(--gray-600)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"inherit\": inherit,\n) !default;\n\n$theme-borders: (\n  \"bg\": var(--bg-body),\n  \"body\": light-dark(var(--gray-300), var(--gray-800)),\n  \"muted\": light-dark(var(--gray-200), var(--gray-800)),\n  \"subtle\": light-dark(var(--gray-100), var(--gray-900)),\n  \"emphasized\": light-dark(var(--gray-400), var(--gray-600)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n) !default;\n\n$util-opacity: (\n  10: .1,\n  20: .2,\n  30: .3,\n  40: .4,\n  50: .5,\n  60: .6,\n  70: .7,\n  80: .8,\n  90: .9,\n  100: 1\n) !default;\n","@use \"../mixins/visually-hidden\" as *;\n\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","// stylelint-disable declaration-no-important\n\n// Hide content visually while keeping it accessible to assistive technologies\n//\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin visually-hidden() {\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n\n  // Fix for positioned table caption that could become anonymous cells\n  &:not(caption) {\n    position: absolute !important;\n  }\n\n  // Fix to prevent overflowing children to become focusable\n  * {\n    overflow: hidden !important;\n  }\n}\n\n// Use to only display content when it's focused, or one of its child elements is focused\n// (i.e. when focus is within the element/container that the class was applied to)\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/WAI/WCAG22/Techniques/general/G1.html\n\n@mixin visually-hidden-focusable() {\n  &:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","@use \"../variables\" as *;\n\n@layer helpers {\n  .stretched-link {\n    &::#{$stretched-link-pseudo-element} {\n      position: absolute;\n      inset: 0;\n      z-index: $stretched-link-z-index;\n      content: \"\";\n    }\n  }\n}\n","@use \"../mixins/text-truncate\" as *;\n\n@layer helpers {\n  .text-truncate {\n    @include text-truncate();\n  }\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n","@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n@use \"../mixins/utilities\" as *;\n@use \"../utilities\" as *;\n\n@layer utilities {\n  // Loop over each breakpoint\n  @each $breakpoint in map.keys($breakpoints) {\n\n    // Generate media query if needed\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if meta.type-of($utility) == \"map\" and (map.get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix);\n        }\n      }\n    }\n  }\n\n  // Print utilities\n  @media print {\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Then check if the utility needs print styles\n      @if meta.type-of($utility) == \"map\" and map.get($utility, print) == true {\n        @include generate-utility($utility, \"-print\");\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n\n// stylelint-disable scss/dollar-variable-pattern\n\n// Utility generator\n\n// - Utilities can use three different types of selectors:\n//   - class: .class\n//   - attr-starts: [class^=\"class\"]\n//   - attr-includes: [class*=\"class\"]\n// - Utilities can generate regular CSS properties and CSS custom properties\n// - Utilities can be responsive or not\n// - Utilities can have state variants (e.g., hover, focus, active)\n// - Utilities can define local CSS variables\n//\n// CSS custom properties can be generated in two ways:\n//\n// 1. Property map with null values (CSS var receives the utility value):\n// \"bg-color\": (\n//   property: (\n//     \"--bg\": null,\n//     \"background-color\": var(--bg)\n//   ),\n//   class: bg,\n//   values: (\n//     primary: var(--blue-500),\n//   )\n// )\n// Generates:\n// .bg-primary {\n//   --bs-bg: var(--bs-blue-500);\n//   background-color: var(--bs-bg);\n// }\n//\n// 2. Variables map (static CSS custom properties on every class):\n// \"link-underline\": (\n//   property: text-decoration-color,\n//   class: link-underline,\n//   variables: (\n//     \"link-underline-opacity\": 1\n//   ),\n//   values: (...)\n// )\n// Generates:\n// .link-underline {\n//   --bs-link-underline-opacity: 1;\n//   text-decoration-color: ...;\n// }\n\n// Helper mixin to generate CSS properties for both legacy and property map approaches\n@mixin generate-properties($utility, $propertyMap, $properties, $value) {\n  @if $propertyMap != null {\n    // New Property-Value Mapping approach\n    @each $property, $defaultValue in $propertyMap {\n      // If value is a map, check if it has a key for this property\n      // Otherwise, use defaultValue (or $value if defaultValue is null)\n      $actualValue: $defaultValue;\n      @if meta.type-of($value) == \"map\" and map.has-key($value, $property) {\n        $actualValue: map.get($value, $property);\n      } @else if $defaultValue == null {\n        $actualValue: $value;\n      }\n      @if map.get($utility, important) {\n        #{$property}: $actualValue !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $actualValue;\n      }\n    }\n  } @else {\n    // Legacy approach\n    @each $property in $properties {\n      @if map.get($utility, important) {\n        #{$property}: $value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $value;\n      }\n    }\n  }\n}\n\n@mixin generate-utility($utility, $infix: \"\") {\n  // Validate required keys\n  @if not map.has-key($utility, property) {\n    @error \"Utility is missing required `property` key: #{$utility}\";\n  }\n  @if not map.has-key($utility, values) {\n    @error \"Utility is missing required `values` key: #{$utility}\";\n  }\n\n  // Warn on unknown keys (likely typos)\n  $valid-keys: property, values, class, selector, responsive, print, important, state, variables;\n  @each $key in map.keys($utility) {\n    @if not list.index($valid-keys, $key) {\n      @warn \"Unknown utility key `#{$key}` found. Valid keys are: #{$valid-keys}\";\n    }\n  }\n\n  // Determine if we're generating a class, or an attribute selector\n  $selectorType: \"class\";\n  @if map.has-key($utility, selector) {\n    $selectorType: map.get($utility, selector);\n    // Validate selector type\n    $valid-selectors: \"class\", \"attr-starts\", \"attr-includes\";\n    @if not list.index($valid-selectors, $selectorType) {\n      @error \"Invalid `selector` value `#{$selectorType}`. Must be one of: #{$valid-selectors}\";\n    }\n  }\n  // Then get the class name to use in a class (e.g., .class) or in a attribute selector (e.g., [class^=\"class\"])\n  $selectorClass: map.get($utility, class);\n\n  // Attribute selectors require a `class` key\n  @if $selectorType != \"class\" and not map.has-key($utility, class) {\n    @error \"Utility with `selector: #{$selectorType}` requires a `class` key.\";\n  }\n\n  // Get the list or map of values and ensure it's a map\n  $values: map.get($utility, values);\n  @if meta.type-of($values) != \"map\" {\n    @if meta.type-of($values) == \"list\" {\n      $list: ();\n      @each $value in $values {\n        $list: map.merge($list, ($value: $value));\n      }\n      $values: $list;\n    } @else {\n      $values: (null: $values);\n    }\n  }\n\n  // Calculate infix once, before the loop\n  // Note: $infix already includes the leading dash from breakpoint-infix()\n  // $infix: if($infix == \"\", \"\", \"-\" + $infix);\n\n  @each $key, $value in $values {\n    $properties: map.get($utility, property);\n    $propertyMap: null;\n    $customClass: \"\";\n\n    // Check if property is a map (new Property-Value Mapping approach)\n    // @debug \"Properties type: #{meta.type-of($properties)}\";\n    // @debug \"Properties: #{$properties}\";\n    @if meta.type-of($properties) == \"map\" {\n      $propertyMap: $properties;\n      // For property maps, we need to determine the class from the utility definition\n      $customClass: \"\";\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      }\n    } @else {\n      // Legacy approach: Multiple properties are possible, for example with vertical or horizontal margins or paddings\n      @if meta.type-of($properties) == \"string\" {\n        $properties: list.append((), $properties);\n      }\n      // Use custom class if present, otherwise use the first value from the list of properties\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      } @else {\n        $customClass: list.nth($properties, 1);\n      }\n      @if $customClass == null {\n        $customClass: \"\";\n      }\n    }\n\n    // Use custom CSS variable name if present, otherwise default to `class`\n    // mdo-do: restore?\n    // $css-variable-name: if(map.has-key($utility, css-variable-name), map.get($utility, css-variable-name), map.get($utility, class));\n\n    // State params to generate state variants\n    $state: ();\n    @if map.has-key($utility, state) {\n      $state: map.get($utility, state);\n    }\n\n    // $infix: if($customClass == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (e.g. with shadow class)\n    $customClassModifier: \"\";\n    @if $key {\n      @if $customClass == \"\" and $infix == \"\" {\n        $customClassModifier: $key;\n      } @else {\n        $customClassModifier: \"-\" + $key;\n      }\n    }\n\n    $selector: \"\";\n    @if $selectorType == \"class\" {\n      // Use the fallback of the first property if no `class` key is used\n      @if $customClass != \"\" {\n        $selector: \".#{$customClass + $infix + $customClassModifier}\";\n      } @else {\n        $selector: \".#{$selectorClass + $infix + $customClassModifier}\";\n      }\n    } @else if $selectorType == \"attr-starts\" {\n      $selector: \"[class^=\\\"#{$selectorClass}\\\"]\";\n    } @else if $selectorType == \"attr-includes\" {\n      $selector: \"[class*=\\\"#{$selectorClass}\\\"]\";\n    }\n\n    // @debug $utility;\n    // @debug $selectorType;\n    // @debug $selector;\n    // @debug $properties;\n    // @debug $values;\n\n    #{$selector} {\n      // Generate CSS custom properties (variables) if provided\n      // Variables receive the current utility value, then properties reference them\n      @if map.has-key($utility, variables) {\n        $variables: map.get($utility, variables);\n        @if meta.type-of($variables) == \"list\" {\n          // If variables is a list, each variable gets the utility value\n          @each $var-name in $variables {\n            --#{$var-name}: #{$value};\n          }\n        } @else if meta.type-of($variables) == \"map\" {\n          // If variables is a map, use the provided values (for static variables)\n          @each $var-key, $var-value in $variables {\n            --#{$var-key}: #{$var-value};\n          }\n        }\n      }\n      @include generate-properties($utility, $propertyMap, $properties, $value);\n    }\n\n    // Generate state variants\n    @if $state != () {\n      @each $state-variant in $state {\n        #{$selector}-#{$state-variant}:#{$state-variant} {\n          // Generate CSS custom properties (variables) if provided\n          @if map.has-key($utility, variables) {\n            $variables: map.get($utility, variables);\n            @if meta.type-of($variables) == \"list\" {\n              // If variables is a list, each variable gets the utility value\n              @each $var-name in $variables {\n                --#{$var-name}: #{$value};\n              }\n            } @else if meta.type-of($variables) == \"map\" {\n              // If variables is a map, use the provided values (for static variables)\n              @each $var-key, $var-value in $variables {\n                --#{$var-key}: #{$var-value};\n              }\n            }\n          }\n          @include generate-properties($utility, $propertyMap, $properties, $value);\n        }\n      }\n    }\n  }\n}\n"]}
\ No newline at end of file
+{"version":3,"sources":["bootstrap.css","../../scss/_banner.scss","../../scss/_colors.scss","../../scss/mixins/_tokens.scss","../../scss/_root.scss","../../scss/content/_reboot.scss","../../scss/_config.scss","../../scss/mixins/_border-radius.scss","../../scss/content/_type.scss","../../scss/mixins/_lists.scss","../../scss/content/_tables.scss","../../scss/layout/_breakpoints.scss","../../scss/content/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_box-shadow.scss","../../scss/content/_prose.scss","../../scss/mixins/_transition.scss","../../scss/layout/_containers.scss","../../scss/layout/_grid.scss","../../scss/mixins/_grid.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_focus-ring.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_check.scss","../../scss/forms/_radio.scss","../../scss/forms/_switch.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/forms/_strength.scss","../../scss/forms/_otp-input.scss","../../scss/forms/_form-adorn.scss","../../scss/forms/_chip-input.scss","../../scss/forms/_combobox.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/forms/_validation.scss","../../scss/forms/_form-variables.scss","../../scss/buttons/_button.scss","../../scss/buttons/_button-group.scss","../../scss/buttons/_close.scss","../../scss/_accordion.scss","../../scss/_alert.scss","../../scss/_avatar.scss","../../scss/_badge.scss","../../scss/_breadcrumb.scss","../../scss/_chip.scss","../../scss/_card.scss","../../scss/_carousel.scss","../../scss/mixins/_color-mode.scss","../../scss/_datepicker.scss","../../scss/_dialog.scss","../../scss/_menu.scss","../../scss/_list-group.scss","../../scss/_nav.scss","../../scss/_nav-overflow.scss","../../scss/_navbar.scss","../../scss/_offcanvas.scss","../../scss/mixins/_backdrop.scss","../../scss/_pagination.scss","../../scss/_placeholder.scss","../../scss/_popover.scss","../../scss/_progress.scss","../../scss/_spinner.scss","../../scss/_stepper.scss","../../scss/_toasts.scss","../../scss/_transitions.scss","../../scss/helpers/_focus-ring.scss","../../scss/helpers/_icon-link.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_theme-colors.scss","../../scss/_theme.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/utilities/_api.scss","../../scss/mixins/_utilities.scss"],"names":[],"mappings":"AAAA,gBAAgB;ACEhB;;;;GAAA;ACiGA;EC9FI,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,qCAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,uCAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,uCAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,uCAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,mCAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,mCAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,2EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,sCAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,oCAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,4EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,sCAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,qCAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,sCAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,8EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,qCAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,qCAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,qCAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,qCAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,6EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,uCAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;EAAA,+EAAA;AHkNJ;;AI9MA,0GAAA;AAoKA;EDxKI,gBAAA;EAAA,gBAAA;EAAA,+HAAA;EAAA,iCAAA;EAAA,2BAAA;EAAA,4BAAA;EAAA,4BAAA;EAAA,8BAAA;EAAA,0BAAA;EAAA,+BAAA;EAAA,gCAAA;EAAA,6CAAA;EAAA,0BAAA;EAAA,0BAAA;EAAA,2BAAA;EAAA,4CAAA;EAAA,2EAAA;EAAA,+BAAA;EAAA,0EAAA;EAAA,oGAAA;EAAA,wBAAA;EAAA,+BAAA;EAAA,sBAAA;EAAA,wBAAA;EAAA,8GAAA;EAAA,sFAAA;EAAA,0BAAA;EAAA,+BAAA;EAAA,6BAAA;EAAA,8BAAA;EAAA,2BAAA;EAAA,4BAAA;EAAA,8BAAA;EAAA,kDAAA;EAAA,2DAAA;EAAA,oDAAA;EAAA,2DAAA;EAAA,iBAAA;EAAA,0BAAA;EAAA,2BAAA;EAAA,mDAAA;EAAA,4EAAA;EAAA,+CAAA;EAAA,+DAAA;EAAA,8CAAA;EAAA,6DAAA;EAAA,wCAAA;EAAA,mCAAA;EAAA,oCAAA;EAAA,oCAAA;EAAA,mCAAA;EAAA,kCAAA;EAAA,iCAAA;EAAA,kDAAA;EAAA,sDAAA;EAAA,qDAAA;EAAA,oCAAA;EAAA,qCAAA;EAAA,mCAAA;EAAA,mDAAA;EAAA,oCAAA;EAAA,2DAAA;EAAA,kCAAA;EAAA,oCAAA;EAAA,qCAAA;EAAA,mDAAA;EAAA,uDAAA;EAAA,2DAAA;EAAA,qCAAA;EAAA,mCAAA;EAAA,iCAAA;EAAA,mDAAA;EAAA,uDAAA;EAAA,2DAAA;EAAA,6CAAA;EAAA,oDAAA;EAAA,8CAAA;EAAA,qDAAA;EAAA,0BAAA;EAAA,yBAAA;EAAA,2BAAA;EAAA,wBAAA;EAAA,uBAAA;EAAA,wBAAA;EAAA,yDAAA;EAAA,wBAAA;EAAA,0DAAA;EAAA,iCAAA;EAAA,sDAAA;EAAA,kCAAA;EAAA,yDAAA;EAAA,yBAAA;EAAA,yDAAA;EAAA,yBAAA;EAAA,iDAAA;EAAA,yBAAA;EAAA,yDAAA;EAAA,uBAAA;EAAA,qCAAA;EAAA,qEAAA;EAAA,8EAAA;EAAA,mCAAA;EAAA,0EAAA;EAAA,yEAAA;EAAA,uEAAA;EAAA,mKAAA;EAAA,sCAAA;EAAA,sCAAA;EAAA,mHAAA;EAAA,iFAAA;EAAA,oCAAA;EAAA,6EAAA;EAAA,4EAAA;EAAA,0EAAA;EAAA,sKAAA;EAAA,qCAAA;EAAA,sCAAA;EAAA,uEAAA;EAAA,gFAAA;EAAA,oCAAA;EAAA,4EAAA;EAAA,2EAAA;EAAA,yEAAA;EAAA,qKAAA;EAAA,sCAAA;EAAA,mCAAA;EAAA,kEAAA;EAAA,2EAAA;EAAA,iCAAA;EAAA,uEAAA;EAAA,sEAAA;EAAA,oEAAA;EAAA,gKAAA;EAAA,qCAAA;EAAA,uCAAA;EAAA,yEAAA;EAAA,kFAAA;EAAA,qCAAA;EAAA,8EAAA;EAAA,6EAAA;EAAA,2EAAA;EAAA,uKAAA;EAAA,yCAAA;EAAA,kCAAA;EAAA,kEAAA;EAAA,2EAAA;EAAA,gCAAA;EAAA,uEAAA;EAAA,sEAAA;EAAA,oEAAA;EAAA,gKAAA;EAAA,sCAAA;EAAA,qCAAA;EAAA,qEAAA;EAAA,2EAAA;EAAA,mEAAA;EAAA,0EAAA;EAAA,yEAAA;EAAA,uEAAA;EAAA,uHAAA;EAAA,sEAAA;EAAA,uCAAA;EAAA,uEAAA;EAAA,gFAAA;EAAA,qEAAA;EAAA,4EAAA;EAAA,2EAAA;EAAA,yEAAA;EAAA,yHAAA;EAAA,wEAAA;EAAA,6DAAA;EAAA,6DAAA;EAAA,6DAAA;EAAA,6DAAA;EAAA,6DAAA;EAAA,8BAAA;EAAA,8BAAA;EAAA,gCAAA;EAAA,wBAAA;EAAA,gEAAA;EAAA,6DAAA;EAAA,6DAAA;EAAA,6DAAA;EAAA,6DAAA;EAAA,8BAAA;EAAA,8BAAA;EAAA,wBAAA;EAAA,iCAAA;EAAA,oEAAA;EAAA,qEAAA;EAAA,sEAAA;EAAA,0EAAA;EAAA,kCAAA;EAAA,kCAAA;EAAA,qBAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,0BAAA;EAAA,0BAAA;EAAA,2BAAA;EC2KF,wBAAA;AJoPF;;AIjPA;EACE,kBAAA;AJoPF;;AIjPA;EACE,mBAAA;AJoPF;;AKtYA;EAYE;;;IAGE,sBAAA;EL8XF;EKtXA;IAEE,oCAAA;ELuXF;EKpXI;IALJ;MAMM,uBAAA;ILuXJ;EACF;EK3WA;IACE,SAAA;IACA,uCAAA;IACA,mCAAA;IACA,uCAAA;IACA,uCAAA;IACA,wBAAA;IACA,qCAAA;IACA,mCAAA;IACA,8BAAA;IACA,6CAAA;EL6WF;EKzWA;IACE,iDAAA;IACA,SAAA;IACA,0EAAA;EL2WF;EKlWA;;;;;;;IACE,aAAA;IACA,qBCqL0B;IDlL1B,gBCqL0B;IDpL1B,gBCqL0B;IDpL1B,8BAAA;ELwWF;EKrWA;;IAGE,kCAAA;ELsWF;EKnWA;;IAGE,kCAAA;ELoWF;EKjWA;;IAGE,iCAAA;ELkWF;EK/VA;;IAGE,iCAAA;ELgWF;EK7VA;;IAGE,iCAAA;EL8VF;EK3VA;;IAGE,iCAAA;EL4VF;EKpVA;IACE,aAAA;IACA,mBCsBwB;ENgU1B;EK7UA;IACE,yCAAA;IAAA,iCAAA;IACA,YAAA;IACA,sCAAA;IAAA,8BAAA;EL+UF;EK1UA;IACE,mBAAA;IACA,kBAAA;IACA,oBAAA;EL4UF;EKvUA;;IAEE,0BAAA;ELyUF;EKtUA;;;IAGE,aAAA;IACA,mBAAA;ELwUF;EKrUA;;;;IAIE,gBAAA;ELuUF;EKpUA;IACE,gBCwB0B;EN8S5B;EKjUA;IACE,sBAAA;IACA,qBAAA;ELmUF;EK9TA;IACE,gBAAA;ELgUF;EK/TE;IACE,eAAA;ELiUJ;EKzTA;;IAEE,mBAAA;EL2TF;EKpTA;;IAEE,2CAAA;ELsTF;EKjTA;;IF9OE,2BAAA;IAAA,kCAAA;IAAA,oEAAA;IEiPA,+BAAA;IACA,2BAAA;IACA,mCAAA;ELqTF;EK7SA;;IAEE,kBAAA;IACA,8CAAA;IACA,cAAA;IACA,wBAAA;EL+SF;EK5SA;IAAM,eAAA;EL+SN;EK9SA;IAAM,WAAA;ELiTN;EK7SA;IACE,iDAAA;IACA,kDAAA;IAAA,0CAAA;IACA,4BC7GsC;EN4ZxC;EK7SE;IAGE,gEAAA;IACA,mFAAA;IAAA,2EAAA;EL6SJ;EKnSE;IAEE,cAAA;IACA,qBAAA;ELoSJ;EK9RA;;;;IAIE,gCAAA;IACA,cAAA;ELgSF;EKzRA;IACE,cAAA;IACA,aAAA;IACA,mBAAA;IACA,cAAA;IACA,mCAAA;IACA,oCAAA;EL2RF;EKxRE;IACE,kBAAA;IACA,cAAA;IACA,kBAAA;EL0RJ;EKtRA;IACE,mCAAA;IACA,2BAAA;IACA,qBAAA;ELwRF;EKrRE;IACE,cAAA;ELuRJ;EKnRA;IF3UE,4BAAA;IAAA,2BAAA;IAAA,0CAAA;IAAA,iCAAA;IAAA,2BAAA;IAAA,kDAAA;IE6UA,wDAAA;IACA,kCAAA;IACA,0BAAA;IACA,kCAAA;IE7TA,0CAAA;EPwlBF;EKxRE;IACE,UAAA;IACA,cAAA;IACA,oBAAA;EL0RJ;EKlRA;IACE,gBAAA;ELoRF;EK/QA;;IAEE,sBAAA;ELiRF;EK1QA;IACE,oBAAA;IACA,yBAAA;EL4QF;EKzQA;IAIE,qBAAA;IACA,qBAAA;IACA,iBAAA;ELwQF;EKjQA;IAEE,mBAAA;IACA,gCAAA;ELkQF;EK/PA;;;;;;IAME,qBAAA;IACA,mBAAA;IACA,eAAA;ELiQF;EK1PA;IACE,qBAAA;EL4PF;EKtPA;IAEE,gBAAA;ELuPF;EK/OA;IACE,UAAA;ELiPF;EK5OA;;;;;IAKE,SAAA;IACA,oBAAA;IACA,kBAAA;IACA,oBAAA;EL8OF;EK1OA;;IAEE,oBAAA;EL4OF;EKvOA;IACE,eAAA;ELyOF;EKtOA;IAGE,iBAAA;ELsOF;EKnOE;IACE,UAAA;ELqOJ;EK9NA;IACE,wBAAA;ELgOF;EKxNA;;;;IAIE,0BAAA;EL0NF;EKvNI;;;;IACE,eAAA;EL4NN;EKrNA;IACE,UAAA;IACA,kBAAA;ELuNF;EKlNA;IACE,gBAAA;ELoNF;EK1MA;IACE,YAAA;IACA,UAAA;IACA,SAAA;IACA,SAAA;EL4MF;EKpMA;IACE,mBAAA;IACA,WAAA;IACA,UAAA;IACA,qBCpO0B;IDqO1B,iBCpO0B;IDsO1B,oBAAA;ELqMF;EKnME;IACE,mBAAA;ELqMJ;EK9LA;;;;;;;;;;;IAWE,UAAA;ELgMF;EK7LA;IACE,YAAA;EL+LF;EKtLA;IACE,6BAAA;IACA,oBAAA;ELwLF;EKrLE;IACE,eAAA;IACA,oBAAA;ELuLJ;EKhLA;;;;IAIE,cAAA;ELkLF;EK7KA;IACE,wBAAA;EL+KF;EK1KA;IACE,UAAA;EL4KF;EKtKA;IACE,aAAA;IACA,0BAAA;ELwKF;EKnKA;IACE,qBAAA;ELqKF;EKhKA;IACE,SAAA;ELkKF;EK3JA;IACE,kBAAA;IACA,eAAA;EL6JF;EKtJA;IACE,wBAAA;ELwJF;EKjJA;IACE,wBAAA;ELmJF;AACF;AQ5vBA;EAKE;ICxBA,uBAAA;IACA,gBAAA;ETmxBA;EQvvBA;IC7BA,uBAAA;IACA,gBAAA;ETuxBA;EQxvBA;IACE,qBAAA;ER0vBF;EQxvBE;IACE,oEAAA;ER0vBJ;EQjvBA;IACE,iEAAA;IACA,yBAAA;ERmvBF;EQ/uBA;ILlDE,+CAAA;IAAA,2CAAA;IAAA,8BAAA;IAAA,iDAAA;IAAA,qCAAA;IAAA,oDAAA;IAAA,wDAAA;IAAA,4CAAA;IKoDA,aAAA;IACA,sBAAA;IACA,6BAAA;IACA,oDAAA;IACA,4CAAA;IACA,yCAAA;IACA,8FAAA;ERwvBF;EQtvBE;IACE,gBAAA;ERwvBJ;EQlvBE;IACE,gBAAA;ERovBJ;EQhvBA;IACE,gDAAA;IACA,wCAAA;ERkvBF;EQhvBE;IACE,aAAA;ERkvBJ;AACF;AUzxBA;EACE;IPxCE,iCAAA;IAAA,iCAAA;IAAA,mCAAA;IAAA,mCAAA;IAAA,gCAAA;IAAA,iCAAA;IAAA,+CAAA;IAAA,+CAAA;IAAA,8CAAA;IAAA,+CAAA;IAAA,kCAAA;IAAA,+GAAA;IAAA,8CAAA;IAAA,gCAAA;IAAA,6GAAA;IAAA,6CAAA;IAAA,iCAAA;IAAA,2GAAA;IO4CA,8BAAA;IACA,2BAAA;IACA,+BAAA;IACA,4BAAA;IAGA,WAAA;IACA,mBJNK;IIOL,mDAAA;IACA,kEAAA;EVwyBF;EUjyBE;IACE,sEAAA;IAEA,2GAAA;IACA,+DAAA;IACA,oDAAA;IACA,sIAAA;EVkyBJ;EU/xBE;IACE,uBAAA;EViyBJ;EU9xBE;IACE,sBAAA;EVgyBJ;EU5xBA;IACE,sGAAA;EV8xBF;EUvxBA;IACE,iBAAA;EVyxBF;EUhxBE;IACE,iCAAA;IACA,iCAAA;EVkxBJ;EUpwBE;IACE,4CAAA;EVswBJ;EUnwBI;IACE,4CAAA;EVqwBN;EU9vBE;IACE,yBAAA;EVgwBJ;EU7vBE;IACE,2BAAA;EV+vBJ;EUrvBE;IACE,0EAAA;IACA,kIAAA;EVuvBJ;EUjvBE;IACE,0EAAA;IACA,kIAAA;EVmvBJ;EU3uBA;IACE,0EAAA;IACA,kIAAA;EV6uBF;EUruBE;IACE,yEAAA;IACA,iIAAA;EVuuBJ;EU1tBI;IACE,gBAAA;IACA,iCAAA;EV4tBN;EWnyBE;IDqEE;MACE,gBAAA;MACA,iCAAA;IViuBJ;EACF;EWzyBE;IDqEE;MACE,gBAAA;MACA,iCAAA;IVuuBJ;EACF;EW/yBE;IDqEE;MACE,gBAAA;MACA,iCAAA;IV6uBJ;EACF;EWrzBE;IDqEE;MACE,gBAAA;MACA,iCAAA;IVmvBJ;EACF;EW3zBE;IDqEE;MACE,gBAAA;MACA,iCAAA;IVyvBJ;EACF;AACF;AYn5BA;EAQE;IClCA,eAAA;IAGA,YAAA;Eb+6BA;EY54BA;IT5CE,+BAAA;IAAA,oCAAA;IAAA,mDAAA;IAAA,mDAAA;IAAA,qDAAA;IAAA,kDAAA;IS8CA,oCAAA;IACA,wCAAA;IACA,+EAAA;IL7BA,gDAAA;IODE,0CARa;IDJjB,eAAA;IAGA,YAAA;Eb87BA;EY/4BA;ITxDE,6CAAA;IAAA,qDAAA;IAAA,yCAAA;IS2DA,aAAA;IACA,sBAAA;IACA,yBAAA;EZk5BF;EY/4BA;IACE,6CAAA;IACA,qCAAA;EZi5BF;AACF;Aer8BA;EACE;IZhBE,4BAAA;IAAA,sBAAA;IAAA,mEAAA;IYkBA,kBAAA;IACA,aAAA;IACA,sBAAA;IACA,0BAAA;IACA,iBAAA;IACA,mBAAA;IACA,sCAAA;IACA,gBAAA;Efy8BF;Eev8BE;IAXF;MAYI,8CAAA;MACA,sBAAA;If08BF;EACF;Eex8BE;IACE,eAAA;Ef08BJ;Eev8BE;IACE,8CAAA;Efy8BJ;Eet8BE;IACE,2CAAA;Efw8BJ;Eer8BE;IACE,2CAAA;IACA,SAAA;IACA,0EAAA;Efu8BJ;Eep8BE;IACE,aAAA;IACA,+CAAA;IACA,gBAAA;IACA,iBAAA;Efs8BJ;Eep8BI;IACE,gBAAA;IACA,cAAA;Efs8BN;Eel8BE;IACE,8CAAA;Efo8BJ;Eej8BE;IACE,6CAAA;Efm8BJ;Eeh8BE;IACE,iBAAA;IACA,gBAAA;Efk8BJ;Eeh8BE;IACE,iBAAA;Efk8BJ;Eeh8BE;IACE,gBAAA;Efk8BJ;Eeh8BE;IACE,iBAAA;Efk8BJ;Eeh8BE;IACE,kBAAA;Efk8BJ;Eeh8BE;IACE,cAAA;Efk8BJ;Ee/7BE;IACE,2BAAA;IACA,0BAAA;IACA,gFAAA;IACA,0BAAA;IChFA,kDDiFA;Efi8BJ;EgB9gCI;IDwEF;MCvEI,gBAAA;IhBihCJ;EACF;Eep8BI;IACE,iDAAA;Efs8BN;Eel8BE;IACE,eAAA;Efo8BJ;Eej8BE;IACE,qDAAA;IACA,SAAA;IACA,qDAAA;Efm8BJ;Eeh8BE;IACE,WAAA;IACA,iBAAA;IACA,yBAAA;Efk8BJ;Ee97BI;;IAEE,iBAAA;IACA,mBAAA;IACA,wCAAA;Efg8BN;Ee57BE;IACE,gBAAA;Ef87BJ;Ee37BE;IACE,eAAA;Ef67BJ;AACF;AiBvjCA;EAGI;;;;;;;IAVF,qBAAA;IACA,gBAAA;IACA,WAAA;IACA,8CAAA;IACA,mBAAA;EjBwkCA;EW5+BE;IMtEI;MACE,gBXgFa;INq+BnB;EACF;EWj/BE;IMtEI;MACE,gBXgFa;IN0+BnB;EACF;EWt/BE;IMtEI;MACE,gBXgFa;IN++BnB;EACF;EW3/BE;IMtEI;MACE,iBXgFa;INo/BnB;EACF;EWhgCE;IMtEI;MACE,iBXgFa;INy/BnB;EACF;AACF;AkBzmCA;EAEI;ICGF,qBAAA;IACA,gBAAA;IACA,aAAA;IACA,eAAA;IAEA,8CAAA;IACA,yCAAA;EnBumCA;EkB7mCI;ICgBJ,cAAA;IACA,WAAA;IACA,eAAA;IACA,8CAAA;IACA,8BAAA;EnBgmCA;EmBhjCI;IACE,WAAA;EnBkjCN;EmB/iCI;IArCJ,cAAA;IACA,WAAA;EnBulCA;EmBxkCA;IACE,cAAA;IACA,WAAA;EnB0kCF;EmB5kCA;IACE,cAAA;IACA,UAAA;EnB8kCF;EmBhlCA;IACE,cAAA;IACA,qBAAA;EnBklCF;EmBplCA;IACE,cAAA;IACA,UAAA;EnBslCF;EmBxlCA;IACE,cAAA;IACA,UAAA;EnB0lCF;EmB5lCA;IACE,cAAA;IACA,qBAAA;EnB8lCF;EmB/jCI;IAjDJ,cAAA;IACA,WAAA;EnBmnCA;EmB7jCQ;IAjEN,cAAA;IACA,oBAAA;EnBioCF;EmBjkCQ;IAjEN,cAAA;IACA,qBAAA;EnBqoCF;EmBrkCQ;IAjEN,cAAA;IACA,UAAA;EnByoCF;EmBzkCQ;IAjEN,cAAA;IACA,qBAAA;EnB6oCF;EmB7kCQ;IAjEN,cAAA;IACA,qBAAA;EnBipCF;EmBjlCQ;IAjEN,cAAA;IACA,UAAA;EnBqpCF;EmBrlCQ;IAjEN,cAAA;IACA,qBAAA;EnBypCF;EmBzlCQ;IAjEN,cAAA;IACA,qBAAA;EnB6pCF;EmB7lCQ;IAjEN,cAAA;IACA,UAAA;EnBiqCF;EmBjmCQ;IAjEN,cAAA;IACA,qBAAA;EnBqqCF;EmBrmCQ;IAjEN,cAAA;IACA,qBAAA;EnByqCF;EmBzmCQ;IAjEN,cAAA;IACA,WAAA;EnB6qCF;EmBrmCU;IAxDV,kCAAA;EnBgqCA;EmBxmCU;IAxDV,mCAAA;EnBmqCA;EmB3mCU;IAxDV,wBAAA;EnBsqCA;EmB9mCU;IAxDV,mCAAA;EnByqCA;EmBjnCU;IAxDV,mCAAA;EnB4qCA;EmBpnCU;IAxDV,wBAAA;EnB+qCA;EmBvnCU;IAxDV,mCAAA;EnBkrCA;EmB1nCU;IAxDV,mCAAA;EnBqrCA;EmB7nCU;IAxDV,wBAAA;EnBwrCA;EmBhoCU;IAxDV,mCAAA;EnB2rCA;EmBnoCU;IAxDV,mCAAA;EnB8rCA;EmB3nCM;;IAEE,gBAAA;EnB6nCR;EmB1nCM;;IAEE,gBAAA;EnB4nCR;EmBnoCM;;IAEE,sBAAA;EnBqoCR;EmBloCM;;IAEE,sBAAA;EnBooCR;EmB3oCM;;IAEE,qBAAA;EnB6oCR;EmB1oCM;;IAEE,qBAAA;EnB4oCR;EmBnpCM;;IAEE,mBAAA;EnBqpCR;EmBlpCM;;IAEE,mBAAA;EnBopCR;EmB3pCM;;IAEE,qBAAA;EnB6pCR;EmB1pCM;;IAEE,qBAAA;EnB4pCR;EmBnqCM;;IAEE,mBAAA;EnBqqCR;EmBlqCM;;IAEE,mBAAA;EnBoqCR;EW1rCE;IQ1BE;MACE,WAAA;InButCJ;ImBptCE;MArCJ,cAAA;MACA,WAAA;InB4vCE;ImB7uCF;MACE,cAAA;MACA,WAAA;InB+uCA;ImBjvCF;MACE,cAAA;MACA,UAAA;InBmvCA;ImBrvCF;MACE,cAAA;MACA,qBAAA;InBuvCA;ImBzvCF;MACE,cAAA;MACA,UAAA;InB2vCA;ImB7vCF;MACE,cAAA;MACA,UAAA;InB+vCA;ImBjwCF;MACE,cAAA;MACA,qBAAA;InBmwCA;ImBpuCE;MAjDJ,cAAA;MACA,WAAA;InBwxCE;ImBluCM;MAjEN,cAAA;MACA,oBAAA;InBsyCA;ImBtuCM;MAjEN,cAAA;MACA,qBAAA;InB0yCA;ImB1uCM;MAjEN,cAAA;MACA,UAAA;InB8yCA;ImB9uCM;MAjEN,cAAA;MACA,qBAAA;InBkzCA;ImBlvCM;MAjEN,cAAA;MACA,qBAAA;InBszCA;ImBtvCM;MAjEN,cAAA;MACA,UAAA;InB0zCA;ImB1vCM;MAjEN,cAAA;MACA,qBAAA;InB8zCA;ImB9vCM;MAjEN,cAAA;MACA,qBAAA;InBk0CA;ImBlwCM;MAjEN,cAAA;MACA,UAAA;InBs0CA;ImBtwCM;MAjEN,cAAA;MACA,qBAAA;InB00CA;ImB1wCM;MAjEN,cAAA;MACA,qBAAA;InB80CA;ImB9wCM;MAjEN,cAAA;MACA,WAAA;InBk1CA;ImB1wCQ;MAxDV,sBAAA;InBq0CE;ImB7wCQ;MAxDV,kCAAA;InBw0CE;ImBhxCQ;MAxDV,mCAAA;InB20CE;ImBnxCQ;MAxDV,wBAAA;InB80CE;ImBtxCQ;MAxDV,mCAAA;InBi1CE;ImBzxCQ;MAxDV,mCAAA;InBo1CE;ImB5xCQ;MAxDV,wBAAA;InBu1CE;ImB/xCQ;MAxDV,mCAAA;InB01CE;ImBlyCQ;MAxDV,mCAAA;InB61CE;ImBryCQ;MAxDV,wBAAA;InBg2CE;ImBxyCQ;MAxDV,mCAAA;InBm2CE;ImB3yCQ;MAxDV,mCAAA;InBs2CE;ImBnyCI;;MAEE,gBAAA;InBqyCN;ImBlyCI;;MAEE,gBAAA;InBoyCN;ImB3yCI;;MAEE,sBAAA;InB6yCN;ImB1yCI;;MAEE,sBAAA;InB4yCN;ImBnzCI;;MAEE,qBAAA;InBqzCN;ImBlzCI;;MAEE,qBAAA;InBozCN;ImB3zCI;;MAEE,mBAAA;InB6zCN;ImB1zCI;;MAEE,mBAAA;InB4zCN;ImBn0CI;;MAEE,qBAAA;InBq0CN;ImBl0CI;;MAEE,qBAAA;InBo0CN;ImB30CI;;MAEE,mBAAA;InB60CN;ImB10CI;;MAEE,mBAAA;InB40CN;EACF;EWn2CE;IQ1BE;MACE,WAAA;InBg4CJ;ImB73CE;MArCJ,cAAA;MACA,WAAA;InBq6CE;ImBt5CF;MACE,cAAA;MACA,WAAA;InBw5CA;ImB15CF;MACE,cAAA;MACA,UAAA;InB45CA;ImB95CF;MACE,cAAA;MACA,qBAAA;InBg6CA;ImBl6CF;MACE,cAAA;MACA,UAAA;InBo6CA;ImBt6CF;MACE,cAAA;MACA,UAAA;InBw6CA;ImB16CF;MACE,cAAA;MACA,qBAAA;InB46CA;ImB74CE;MAjDJ,cAAA;MACA,WAAA;InBi8CE;ImB34CM;MAjEN,cAAA;MACA,oBAAA;InB+8CA;ImB/4CM;MAjEN,cAAA;MACA,qBAAA;InBm9CA;ImBn5CM;MAjEN,cAAA;MACA,UAAA;InBu9CA;ImBv5CM;MAjEN,cAAA;MACA,qBAAA;InB29CA;ImB35CM;MAjEN,cAAA;MACA,qBAAA;InB+9CA;ImB/5CM;MAjEN,cAAA;MACA,UAAA;InBm+CA;ImBn6CM;MAjEN,cAAA;MACA,qBAAA;InBu+CA;ImBv6CM;MAjEN,cAAA;MACA,qBAAA;InB2+CA;ImB36CM;MAjEN,cAAA;MACA,UAAA;InB++CA;ImB/6CM;MAjEN,cAAA;MACA,qBAAA;InBm/CA;ImBn7CM;MAjEN,cAAA;MACA,qBAAA;InBu/CA;ImBv7CM;MAjEN,cAAA;MACA,WAAA;InB2/CA;ImBn7CQ;MAxDV,sBAAA;InB8+CE;ImBt7CQ;MAxDV,kCAAA;InBi/CE;ImBz7CQ;MAxDV,mCAAA;InBo/CE;ImB57CQ;MAxDV,wBAAA;InBu/CE;ImB/7CQ;MAxDV,mCAAA;InB0/CE;ImBl8CQ;MAxDV,mCAAA;InB6/CE;ImBr8CQ;MAxDV,wBAAA;InBggDE;ImBx8CQ;MAxDV,mCAAA;InBmgDE;ImB38CQ;MAxDV,mCAAA;InBsgDE;ImB98CQ;MAxDV,wBAAA;InBygDE;ImBj9CQ;MAxDV,mCAAA;InB4gDE;ImBp9CQ;MAxDV,mCAAA;InB+gDE;ImB58CI;;MAEE,gBAAA;InB88CN;ImB38CI;;MAEE,gBAAA;InB68CN;ImBp9CI;;MAEE,sBAAA;InBs9CN;ImBn9CI;;MAEE,sBAAA;InBq9CN;ImB59CI;;MAEE,qBAAA;InB89CN;ImB39CI;;MAEE,qBAAA;InB69CN;ImBp+CI;;MAEE,mBAAA;InBs+CN;ImBn+CI;;MAEE,mBAAA;InBq+CN;ImB5+CI;;MAEE,qBAAA;InB8+CN;ImB3+CI;;MAEE,qBAAA;InB6+CN;ImBp/CI;;MAEE,mBAAA;InBs/CN;ImBn/CI;;MAEE,mBAAA;InBq/CN;EACF;EW5gDE;IQ1BE;MACE,WAAA;InByiDJ;ImBtiDE;MArCJ,cAAA;MACA,WAAA;InB8kDE;ImB/jDF;MACE,cAAA;MACA,WAAA;InBikDA;ImBnkDF;MACE,cAAA;MACA,UAAA;InBqkDA;ImBvkDF;MACE,cAAA;MACA,qBAAA;InBykDA;ImB3kDF;MACE,cAAA;MACA,UAAA;InB6kDA;ImB/kDF;MACE,cAAA;MACA,UAAA;InBilDA;ImBnlDF;MACE,cAAA;MACA,qBAAA;InBqlDA;ImBtjDE;MAjDJ,cAAA;MACA,WAAA;InB0mDE;ImBpjDM;MAjEN,cAAA;MACA,oBAAA;InBwnDA;ImBxjDM;MAjEN,cAAA;MACA,qBAAA;InB4nDA;ImB5jDM;MAjEN,cAAA;MACA,UAAA;InBgoDA;ImBhkDM;MAjEN,cAAA;MACA,qBAAA;InBooDA;ImBpkDM;MAjEN,cAAA;MACA,qBAAA;InBwoDA;ImBxkDM;MAjEN,cAAA;MACA,UAAA;InB4oDA;ImB5kDM;MAjEN,cAAA;MACA,qBAAA;InBgpDA;ImBhlDM;MAjEN,cAAA;MACA,qBAAA;InBopDA;ImBplDM;MAjEN,cAAA;MACA,UAAA;InBwpDA;ImBxlDM;MAjEN,cAAA;MACA,qBAAA;InB4pDA;ImB5lDM;MAjEN,cAAA;MACA,qBAAA;InBgqDA;ImBhmDM;MAjEN,cAAA;MACA,WAAA;InBoqDA;ImB5lDQ;MAxDV,sBAAA;InBupDE;ImB/lDQ;MAxDV,kCAAA;InB0pDE;ImBlmDQ;MAxDV,mCAAA;InB6pDE;ImBrmDQ;MAxDV,wBAAA;InBgqDE;ImBxmDQ;MAxDV,mCAAA;InBmqDE;ImB3mDQ;MAxDV,mCAAA;InBsqDE;ImB9mDQ;MAxDV,wBAAA;InByqDE;ImBjnDQ;MAxDV,mCAAA;InB4qDE;ImBpnDQ;MAxDV,mCAAA;InB+qDE;ImBvnDQ;MAxDV,wBAAA;InBkrDE;ImB1nDQ;MAxDV,mCAAA;InBqrDE;ImB7nDQ;MAxDV,mCAAA;InBwrDE;ImBrnDI;;MAEE,gBAAA;InBunDN;ImBpnDI;;MAEE,gBAAA;InBsnDN;ImB7nDI;;MAEE,sBAAA;InB+nDN;ImB5nDI;;MAEE,sBAAA;InB8nDN;ImBroDI;;MAEE,qBAAA;InBuoDN;ImBpoDI;;MAEE,qBAAA;InBsoDN;ImB7oDI;;MAEE,mBAAA;InB+oDN;ImB5oDI;;MAEE,mBAAA;InB8oDN;ImBrpDI;;MAEE,qBAAA;InBupDN;ImBppDI;;MAEE,qBAAA;InBspDN;ImB7pDI;;MAEE,mBAAA;InB+pDN;ImB5pDI;;MAEE,mBAAA;InB8pDN;EACF;EWrrDE;IQ1BE;MACE,WAAA;InBktDJ;ImB/sDE;MArCJ,cAAA;MACA,WAAA;InBuvDE;ImBxuDF;MACE,cAAA;MACA,WAAA;InB0uDA;ImB5uDF;MACE,cAAA;MACA,UAAA;InB8uDA;ImBhvDF;MACE,cAAA;MACA,qBAAA;InBkvDA;ImBpvDF;MACE,cAAA;MACA,UAAA;InBsvDA;ImBxvDF;MACE,cAAA;MACA,UAAA;InB0vDA;ImB5vDF;MACE,cAAA;MACA,qBAAA;InB8vDA;ImB/tDE;MAjDJ,cAAA;MACA,WAAA;InBmxDE;ImB7tDM;MAjEN,cAAA;MACA,oBAAA;InBiyDA;ImBjuDM;MAjEN,cAAA;MACA,qBAAA;InBqyDA;ImBruDM;MAjEN,cAAA;MACA,UAAA;InByyDA;ImBzuDM;MAjEN,cAAA;MACA,qBAAA;InB6yDA;ImB7uDM;MAjEN,cAAA;MACA,qBAAA;InBizDA;ImBjvDM;MAjEN,cAAA;MACA,UAAA;InBqzDA;ImBrvDM;MAjEN,cAAA;MACA,qBAAA;InByzDA;ImBzvDM;MAjEN,cAAA;MACA,qBAAA;InB6zDA;ImB7vDM;MAjEN,cAAA;MACA,UAAA;InBi0DA;ImBjwDM;MAjEN,cAAA;MACA,qBAAA;InBq0DA;ImBrwDM;MAjEN,cAAA;MACA,qBAAA;InBy0DA;ImBzwDM;MAjEN,cAAA;MACA,WAAA;InB60DA;ImBrwDQ;MAxDV,sBAAA;InBg0DE;ImBxwDQ;MAxDV,kCAAA;InBm0DE;ImB3wDQ;MAxDV,mCAAA;InBs0DE;ImB9wDQ;MAxDV,wBAAA;InBy0DE;ImBjxDQ;MAxDV,mCAAA;InB40DE;ImBpxDQ;MAxDV,mCAAA;InB+0DE;ImBvxDQ;MAxDV,wBAAA;InBk1DE;ImB1xDQ;MAxDV,mCAAA;InBq1DE;ImB7xDQ;MAxDV,mCAAA;InBw1DE;ImBhyDQ;MAxDV,wBAAA;InB21DE;ImBnyDQ;MAxDV,mCAAA;InB81DE;ImBtyDQ;MAxDV,mCAAA;InBi2DE;ImB9xDI;;MAEE,gBAAA;InBgyDN;ImB7xDI;;MAEE,gBAAA;InB+xDN;ImBtyDI;;MAEE,sBAAA;InBwyDN;ImBryDI;;MAEE,sBAAA;InBuyDN;ImB9yDI;;MAEE,qBAAA;InBgzDN;ImB7yDI;;MAEE,qBAAA;InB+yDN;ImBtzDI;;MAEE,mBAAA;InBwzDN;ImBrzDI;;MAEE,mBAAA;InBuzDN;ImB9zDI;;MAEE,qBAAA;InBg0DN;ImB7zDI;;MAEE,qBAAA;InB+zDN;ImBt0DI;;MAEE,mBAAA;InBw0DN;ImBr0DI;;MAEE,mBAAA;InBu0DN;EACF;EW91DE;IQ1BE;MACE,WAAA;InB23DJ;ImBx3DE;MArCJ,cAAA;MACA,WAAA;InBg6DE;ImBj5DF;MACE,cAAA;MACA,WAAA;InBm5DA;ImBr5DF;MACE,cAAA;MACA,UAAA;InBu5DA;ImBz5DF;MACE,cAAA;MACA,qBAAA;InB25DA;ImB75DF;MACE,cAAA;MACA,UAAA;InB+5DA;ImBj6DF;MACE,cAAA;MACA,UAAA;InBm6DA;ImBr6DF;MACE,cAAA;MACA,qBAAA;InBu6DA;ImBx4DE;MAjDJ,cAAA;MACA,WAAA;InB47DE;ImBt4DM;MAjEN,cAAA;MACA,oBAAA;InB08DA;ImB14DM;MAjEN,cAAA;MACA,qBAAA;InB88DA;ImB94DM;MAjEN,cAAA;MACA,UAAA;InBk9DA;ImBl5DM;MAjEN,cAAA;MACA,qBAAA;InBs9DA;ImBt5DM;MAjEN,cAAA;MACA,qBAAA;InB09DA;ImB15DM;MAjEN,cAAA;MACA,UAAA;InB89DA;ImB95DM;MAjEN,cAAA;MACA,qBAAA;InBk+DA;ImBl6DM;MAjEN,cAAA;MACA,qBAAA;InBs+DA;ImBt6DM;MAjEN,cAAA;MACA,UAAA;InB0+DA;ImB16DM;MAjEN,cAAA;MACA,qBAAA;InB8+DA;ImB96DM;MAjEN,cAAA;MACA,qBAAA;InBk/DA;ImBl7DM;MAjEN,cAAA;MACA,WAAA;InBs/DA;ImB96DQ;MAxDV,sBAAA;InBy+DE;ImBj7DQ;MAxDV,kCAAA;InB4+DE;ImBp7DQ;MAxDV,mCAAA;InB++DE;ImBv7DQ;MAxDV,wBAAA;InBk/DE;ImB17DQ;MAxDV,mCAAA;InBq/DE;ImB77DQ;MAxDV,mCAAA;InBw/DE;ImBh8DQ;MAxDV,wBAAA;InB2/DE;ImBn8DQ;MAxDV,mCAAA;InB8/DE;ImBt8DQ;MAxDV,mCAAA;InBigEE;ImBz8DQ;MAxDV,wBAAA;InBogEE;ImB58DQ;MAxDV,mCAAA;InBugEE;ImB/8DQ;MAxDV,mCAAA;InB0gEE;ImBv8DI;;MAEE,gBAAA;InBy8DN;ImBt8DI;;MAEE,gBAAA;InBw8DN;ImB/8DI;;MAEE,sBAAA;InBi9DN;ImB98DI;;MAEE,sBAAA;InBg9DN;ImBv9DI;;MAEE,qBAAA;InBy9DN;ImBt9DI;;MAEE,qBAAA;InBw9DN;ImB/9DI;;MAEE,mBAAA;InBi+DN;ImB99DI;;MAEE,mBAAA;InBg+DN;ImBv+DI;;MAEE,qBAAA;InBy+DN;ImBt+DI;;MAEE,qBAAA;InBw+DN;ImB/+DI;;MAEE,mBAAA;InBi/DN;ImB9+DI;;MAEE,mBAAA;InBg/DN;EACF;EkB5lEE;IACE,gBAAA;IACA,YAAA;IACA,gBAAA;IAEA,aAAA;IACA,+CAAA;IACA,qDAAA;IACA,kBAAA;ElB6lEJ;EmB5+DQ;IACE,wBAAA;EnB8+DV;EmB/+DQ;IACE,wBAAA;EnBi/DV;EmBl/DQ;IACE,wBAAA;EnBo/DV;EmBr/DQ;IACE,wBAAA;EnBu/DV;EmBx/DQ;IACE,wBAAA;EnB0/DV;EmB3/DQ;IACE,wBAAA;EnB6/DV;EmB9/DQ;IACE,wBAAA;EnBggEV;EmBjgEQ;IACE,wBAAA;EnBmgEV;EmBpgEQ;IACE,wBAAA;EnBsgEV;EmBvgEQ;IACE,yBAAA;EnBygEV;EmB1gEQ;IACE,yBAAA;EnB4gEV;EmB7gEQ;IACE,yBAAA;EnB+gEV;EmBxgEQ;IACE,oBAFS;EnB4gEnB;EmB3gEQ;IACE,oBAFS;EnB+gEnB;EmB9gEQ;IACE,oBAFS;EnBkhEnB;EmBjhEQ;IACE,oBAFS;EnBqhEnB;EmBphEQ;IACE,oBAFS;EnBwhEnB;EmBvhEQ;IACE,oBAFS;EnB2hEnB;EmB1hEQ;IACE,oBAFS;EnB8hEnB;EmB7hEQ;IACE,oBAFS;EnBiiEnB;EmBhiEQ;IACE,oBAFS;EnBoiEnB;EmBniEQ;IACE,qBAFS;EnBuiEnB;EmBtiEQ;IACE,qBAFS;EnB0iEnB;EWrlEE;IQoCM;MACE,wBAAA;InBojER;ImBrjEM;MACE,wBAAA;InBujER;ImBxjEM;MACE,wBAAA;InB0jER;ImB3jEM;MACE,wBAAA;InB6jER;ImB9jEM;MACE,wBAAA;InBgkER;ImBjkEM;MACE,wBAAA;InBmkER;ImBpkEM;MACE,wBAAA;InBskER;ImBvkEM;MACE,wBAAA;InBykER;ImB1kEM;MACE,wBAAA;InB4kER;ImB7kEM;MACE,yBAAA;InB+kER;ImBhlEM;MACE,yBAAA;InBklER;ImBnlEM;MACE,yBAAA;InBqlER;ImB9kEM;MACE,oBAFS;InBklEjB;ImBjlEM;MACE,oBAFS;InBqlEjB;ImBplEM;MACE,oBAFS;InBwlEjB;ImBvlEM;MACE,oBAFS;InB2lEjB;ImB1lEM;MACE,oBAFS;InB8lEjB;ImB7lEM;MACE,oBAFS;InBimEjB;ImBhmEM;MACE,oBAFS;InBomEjB;ImBnmEM;MACE,oBAFS;InBumEjB;ImBtmEM;MACE,oBAFS;InB0mEjB;ImBzmEM;MACE,qBAFS;InB6mEjB;ImB5mEM;MACE,qBAFS;InBgnEjB;EACF;EW5pEE;IQoCM;MACE,wBAAA;InB2nER;ImB5nEM;MACE,wBAAA;InB8nER;ImB/nEM;MACE,wBAAA;InBioER;ImBloEM;MACE,wBAAA;InBooER;ImBroEM;MACE,wBAAA;InBuoER;ImBxoEM;MACE,wBAAA;InB0oER;ImB3oEM;MACE,wBAAA;InB6oER;ImB9oEM;MACE,wBAAA;InBgpER;ImBjpEM;MACE,wBAAA;InBmpER;ImBppEM;MACE,yBAAA;InBspER;ImBvpEM;MACE,yBAAA;InBypER;ImB1pEM;MACE,yBAAA;InB4pER;ImBrpEM;MACE,oBAFS;InBypEjB;ImBxpEM;MACE,oBAFS;InB4pEjB;ImB3pEM;MACE,oBAFS;InB+pEjB;ImB9pEM;MACE,oBAFS;InBkqEjB;ImBjqEM;MACE,oBAFS;InBqqEjB;ImBpqEM;MACE,oBAFS;InBwqEjB;ImBvqEM;MACE,oBAFS;InB2qEjB;ImB1qEM;MACE,oBAFS;InB8qEjB;ImB7qEM;MACE,oBAFS;InBirEjB;ImBhrEM;MACE,qBAFS;InBorEjB;ImBnrEM;MACE,qBAFS;InBurEjB;EACF;EWnuEE;IQoCM;MACE,wBAAA;InBksER;ImBnsEM;MACE,wBAAA;InBqsER;ImBtsEM;MACE,wBAAA;InBwsER;ImBzsEM;MACE,wBAAA;InB2sER;ImB5sEM;MACE,wBAAA;InB8sER;ImB/sEM;MACE,wBAAA;InBitER;ImBltEM;MACE,wBAAA;InBotER;ImBrtEM;MACE,wBAAA;InButER;ImBxtEM;MACE,wBAAA;InB0tER;ImB3tEM;MACE,yBAAA;InB6tER;ImB9tEM;MACE,yBAAA;InBguER;ImBjuEM;MACE,yBAAA;InBmuER;ImB5tEM;MACE,oBAFS;InBguEjB;ImB/tEM;MACE,oBAFS;InBmuEjB;ImBluEM;MACE,oBAFS;InBsuEjB;ImBruEM;MACE,oBAFS;InByuEjB;ImBxuEM;MACE,oBAFS;InB4uEjB;ImB3uEM;MACE,oBAFS;InB+uEjB;ImB9uEM;MACE,oBAFS;InBkvEjB;ImBjvEM;MACE,oBAFS;InBqvEjB;ImBpvEM;MACE,oBAFS;InBwvEjB;ImBvvEM;MACE,qBAFS;InB2vEjB;ImB1vEM;MACE,qBAFS;InB8vEjB;EACF;EW1yEE;IQoCM;MACE,wBAAA;InBywER;ImB1wEM;MACE,wBAAA;InB4wER;ImB7wEM;MACE,wBAAA;InB+wER;ImBhxEM;MACE,wBAAA;InBkxER;ImBnxEM;MACE,wBAAA;InBqxER;ImBtxEM;MACE,wBAAA;InBwxER;ImBzxEM;MACE,wBAAA;InB2xER;ImB5xEM;MACE,wBAAA;InB8xER;ImB/xEM;MACE,wBAAA;InBiyER;ImBlyEM;MACE,yBAAA;InBoyER;ImBryEM;MACE,yBAAA;InBuyER;ImBxyEM;MACE,yBAAA;InB0yER;ImBnyEM;MACE,oBAFS;InBuyEjB;ImBtyEM;MACE,oBAFS;InB0yEjB;ImBzyEM;MACE,oBAFS;InB6yEjB;ImB5yEM;MACE,oBAFS;InBgzEjB;ImB/yEM;MACE,oBAFS;InBmzEjB;ImBlzEM;MACE,oBAFS;InBszEjB;ImBrzEM;MACE,oBAFS;InByzEjB;ImBxzEM;MACE,oBAFS;InB4zEjB;ImB3zEM;MACE,oBAFS;InB+zEjB;ImB9zEM;MACE,qBAFS;InBk0EjB;ImBj0EM;MACE,qBAFS;InBq0EjB;EACF;EWj3EE;IQoCM;MACE,wBAAA;InBg1ER;ImBj1EM;MACE,wBAAA;InBm1ER;ImBp1EM;MACE,wBAAA;InBs1ER;ImBv1EM;MACE,wBAAA;InBy1ER;ImB11EM;MACE,wBAAA;InB41ER;ImB71EM;MACE,wBAAA;InB+1ER;ImBh2EM;MACE,wBAAA;InBk2ER;ImBn2EM;MACE,wBAAA;InBq2ER;ImBt2EM;MACE,wBAAA;InBw2ER;ImBz2EM;MACE,yBAAA;InB22ER;ImB52EM;MACE,yBAAA;InB82ER;ImB/2EM;MACE,yBAAA;InBi3ER;ImB12EM;MACE,oBAFS;InB82EjB;ImB72EM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,mBA+CO;ElFkmQb;EkF7gQE;IApII,kBA+CO;ElFqmQb;EkFhhQE;IApII,gBA+CO;ElFwmQb;EkFnhQE;IApII,kBA+CO;ElF2mQb;EkFthQE;IApII,mBA+CO;ElF8mQb;EkFzhQE;IApII,kBA+CO;ElFinQb;EkF5hQE;IApII,eA+CO;ElFonQb;EkF/hQE;IApII,qBA+CO;ElFunQb;EkFliQE;IApII,cA+CO;ElF0nQb;EkFriQE;IApII,aA+CO;ElF6nQb;EkFxiQE;IApII,oBA+CO;ElFgoQb;EkF3iQE;IApII,cA+CO;ElFmoQb;EkF9iQE;IApII,kBA+CO;ElFsoQb;EkFjjQE;IApII,mBA+CO;ElFyoQb;EkFpjQE;IApII,aA+CO;ElF4oQb;EkFvjQE;IApII,oBA+CO;ElF+oQb;EkF1jQE;IApII,iBA+CO;ElFkpQb;EkF7jQE;IApII,kBA+CO;ElFqpQb;EkFhkQE;IApII,aA+CO;ElFwpQb;EkFnkQE;IApII,gCA0CG;ElFgqQT;EkFtkQE;IApII,mCA0CG;ElFmqQT;EkFzkQE;IApII,mCA0CG;ElFsqQT;EkF5kQE;IApII,gBA0CG;ElFyqQT;EkF/kQE;IApII,iKA0CG;ElF4qQT;EkFllQE;IApII,qKA0CG;ElF+qQT;EkFrlQE;IApII,mKA0CG;ElFkrQT;EkFxlQE;IApII,+JA0CG;ElFqrQT;EkF3lQE;IApII,qKA0CG;ElFwrQT;EkF9lQE;IApII,iKA0CG;ElF2rQT;EkFjmQE;IApII,qHA0CG;ElF8rQT;EkFpmQE;IApII,qHA0CG;ElFisQT;EkFvmQE;IApII,gBA+CO;ElF+rQb;EkF1mQE;IApII,kBA+CO;ElFksQb;EkF7mQE;IApII,kBA+CO;ElFqsQb;EkFhnQE;IApII,eA+CO;ElFwsQb;EkFnnQE;IApII,gBA+CO;ElF2sQb;EkFtnQE;IApII,MA0CG;ElFmtQT;EkFznQE;IApII,QA0CG;ElFstQT;EkF5nQE;IApII,SA0CG;ElFytQT;EkF/nQE;IApII,SA0CG;ElF4tQT;EkFloQE;IApII,WA0CG;ElF+tQT;EkFroQE;IApII,YA0CG;ElFkuQT;EkFxoQE;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G;ElFklRT;EkFx/QE;IApII,6BA0CG;ElFqlRT;EkF3/QE;IApII,6BA0CG;ElFwlRT;EkF9/QE;IApII,oBA0CG;ElF2lRT;EkFjgRE;IApII,kBA0CG;ElF8lRT;EkFpgRE;IApII,qBA0CG;ElFimRT;EkFvgRE;IApII,sBA0CG;ElFomRT;EkF1gRE;IApII,wBA0CG;ElFumRT;EkF7gRE;IApII,sBA0CG;ElF0mRT;EkFhhRE;IApII,oBA0CG;ElF6mRT;EkFnhRE;IApII,uBA0CG;ElFgnRT;EkFthRE;IApII,qBA0CG;ElFmnRT;EkFzhRE;IApII,mBA0CG;ElFsnRT;EkF5hRE;IApII,qBA0CG;ElFynRT;EkF/hRE;IApII,oBA0CG;ElF4nRT;EkFliRE;IApII,yBA0CG;ElF+nRT;EkFriRE;IApII,uBA0CG;ElFkoRT;EkFxiRE;IApII,qBA0CG;ElFqoRT;EkF3iRE;IApII,4BA0CG;ElFwoRT;EkF9iRE;IApII,2BA0CG;ElF2oRT;EkFjjRE;IApII,sBA0CG;ElF8oRT;EkFpjRE;IApII,gBA0CG;ElFipRT;EkFvjRE;IApII,sBA0CG;ElFopRT;EkF1jRE;IApII,oBA0CG;ElFupRT;EkF7jRE;IApII,kBA0CG;ElF0pRT;EkFhkRE;IApII,oBA0CG;ElF6pRT;EkFnkRE;IApII,mBA0CG;ElFgqRT;EkFtkRE;IApII,kBA0CG;ElFmqRT;EkFzkRE;IApII,gBA0CG;ElFsqRT;EkF5kRE;IApII,mBA0CG;ElFyqRT;EkF/kRE;IApII,oBA0CG;ElF4qRT;EkFllRE;IApII,qCA0CG;ElF+qRT;EkFrlRE;IApII,qCA0CG;ElFkrRT;EkFxlRE;IApII,qCA0CG;ElFqrRT;EkF3lRE;IApII,qCA0CG;ElFwrRT;EkF9lRE;IApII,mBA0CG;ElF2rRT;EkFjmRE;IApII,mBA+CO;ElFyrRb;EkFpmRE;IApII,sBA+CO;ElF4rRb;EkFvmRE;IApII,qBA+CO;ElF+rRb;EkF1mRE;IApII,SA0CG;ElFusRT;EkF7mRE;IApII,QA0CG;ElF0sRT;EkFhnRE;IApII,QA0CG;ElF6sRT;EkFnnRE;IApII,QA0CG;ElFgtRT;EkFtnRE;IApII,QA0CG;ElFmtRT;EkFznRE;IApII,QA0CG;ElFstRT;EkF5nRE;IApII,QA0CG;ElFytRT;EkF/nRE;IApII,QA0CG;ElF4tRT;EkFloRE;IApII,SA0CG;ElF+tRT;EkFroRE;IApII,eA0CG;ElFkuRT;EkFxoRE;IApII,cA0CG;ElFquRT;EkF3oRE;IApII,YA0CG;ElFwuRT;EkF9oRE;IApII,cA0CG;ElF2uRT;EkFjpRE;IApII,YA0CG;ElF8uRT;EkFppRE;IApII,YA0CG;ElFivRT;EkFvpRE;IApII,gBA0CG;ElFovRT;EkF1pRE;IApII,sBA0CG;ElFuvRT;EkF7pRE;IApII,qBA0CG;ElF0vRT;EkFhqRE;IApII,mBA0CG;ElF6vRT;EkFnqRE;IApII,qBA0CG;ElFgwRT;EkFtqRE;IApII,mBA0CG;ElFmwRT;EkFzqRE;IApII,mBA0CG;ElFswRT;EkF5qRE;IApII,eA0CG;ElFywRT;EkF/qRE;IApII,qBA0CG;ElF4wRT;EkFlrRE;IApII,oBA0CG;ElF+wRT;EkFrrRE;IApII,kBA0CG;ElFkxRT;EkFxrRE;IApII,oBA0CG;ElFqxRT;EkF3rRE;IApII,kBA0CG;ElFwxRT;EkF9rRE;IApII,kBA0CG;ElF2xRT;EkFjsRE;IApII,qBA0CG;ElF8xRT;EkFpsRE;IApII,2BA0CG;ElFiyRT;EkFvsRE;IApII,0BA0CG;ElFoyRT;EkF1sRE;IApII,wBA0CG;ElFuyRT;EkF7sRE;IApII,0BA0CG;ElF0yRT;EkFhtRE;IApII,wBA0CG;ElF6yRT;EkFntRE;IApII,wBA0CG;ElFgzRT;EkFttRE;IApII,oBA0CG;ElFmzRT;EkFztRE;IApII,0BA0CG;ElFszRT;EkF5tRE;IApII,yBA0CG;ElFyzRT;EkF/tRE;IApII,uBA0CG;ElF4zRT;EkFluRE;IApII,yBA0CG;ElF+zRT;EkFruRE;IApII,uBA0CG;ElFk0RT;EkFxuRE;IApII,uBA0CG;ElFq0RT;EkF3uRE;IApII,mBA0CG;ElFw0RT;EkF9uRE;IApII,yBA0CG;ElF20RT;EkFjvRE;IApII,wBA0CG;ElF80RT;EkFpvRE;IApII,sBA0CG;ElFi1RT;EkFvvRE;IApII,wBA0CG;ElFo1RT;EkF1vRE;IApII,sBA0CG;ElFu1RT;EkF7vRE;IApII,sBA0CG;ElF01RT;EkFhwRE;IApII,sBA0CG;ElF61RT;EkFnwRE;IApII,4BA0CG;ElFg2RT;EkFtwRE;IApII,2BA0CG;ElFm2RT;EkFzwRE;IApII,yBA0CG;ElFs2RT;EkF5wRE;IApII,2BA0CG;ElFy2RT;EkF/wRE;IApII,yBA0CG;ElF42RT;EkFlxRE;IApII,6BA0CG;ElF+2RT;EkFrxRE;IApII,4BA0CG;ElFk3RT;EkFxxRE;IApII,yBA0CG;ElFq3RT;EkF3xRE;IApII,UA0CG;ElFw3RT;EkF9xRE;IApII,gBA0CG;ElF23RT;EkFjyRE;IApII,eA0CG;ElF83RT;EkFpyRE;IApII,aA0CG;ElFi4RT;EkFvyRE;IApII,eA0CG;ElFo4RT;EkF1yRE;IApII,aA0CG;ElFu4RT;EkF7yRE;IApII,iBA0CG;ElF04RT;EkFhzRE;IApII,uBA0CG;ElF64RT;EkFnzRE;IApII,sBA0CG;ElFg5RT;EkFtzRE;IApII,oBA0CG;ElFm5RT;EkFzzRE;IApII,sBA0CG;ElFs5RT;EkF5zRE;IApII,oBA0CG;ElFy5RT;EkF/zRE;IApII,gBA0CG;ElF45RT;EkFl0RE;IApII,sBA0CG;ElF+5RT;EkFr0RE;IApII,qBA0CG;ElFk6RT;EkFx0RE;IApII,mBA0CG;ElFq6RT;EkF30RE;IApII,qBA0CG;ElFw6RT;EkF90RE;IApII,mBA0CG;ElF26RT;EkFj1RE;IApII,sBA0CG;ElF86RT;EkFp1RE;IApII,4BA0CG;ElFi7RT;EkFv1RE;IApII,2BA0CG;ElFo7RT;EkF11RE;IApII,yBA0CG;ElFu7RT;EkF71RE;IApII,2BA0CG;ElF07RT;EkFh2RE;IApII,yBA0CG;ElF67RT;EkFn2RE;IApII,qBA0CG;ElFg8RT;EkFt2RE;IApII,2BA0CG;ElFm8RT;EkFz2RE;IApII,0BA0CG;ElFs8RT;EkF52RE;IApII,wBA0CG;ElFy8RT;EkF/2RE;IApII,0BA0CG;ElF48RT;EkFl3RE;IApII,wBA0CG;ElF+8RT;EkFr3RE;IApII,oBA0CG;ElFk9RT;EkFx3RE;IApII,0BA0CG;ElFq9RT;EkF33RE;IApII,yBA0CG;ElFw9RT;EkF93RE;IApII,uBA0CG;ElF29RT;EkFj4RE;IApII,yBA0CG;ElF89RT;EkFp4RE;IApII,uBA0CG;ElFi+RT;EkFv4RE;IApII,uBA0CG;ElFo+RT;EkF14RE;IApII,6BA0CG;ElFu+RT;EkF74RE;IApII,4BA0CG;ElF0+RT;EkFh5RE;IApII,0BA0CG;ElF6+RT;EkFn5RE;IApII,4BA0CG;ElFg/RT;EkFt5RE;IApII,0BA0CG;ElFm/RT;EkFz5RE;IApII,MA0CG;ElFs/RT;EkF55RE;IApII,YA0CG;ElFy/RT;EkF/5RE;IApII,WA0CG;ElF4/RT;EkFl6RE;IApII,SA0CG;ElF+/RT;EkFr6RE;IApII,WA0CG;ElFkgST;EkFx6RE;IApII,SA0CG;ElFqgST;EkF36RE;IApII,UA0CG;ElFwgST;EkF96RE;IApII,gBA0CG;ElF2gST;EkFj7RE;IApII,eA0CG;ElF8gST;EkFp7RE;IApII,aA0CG;ElFihST;EkFv7RE;IApII,eA0CG;ElFohST;EkF17RE;IApII,aA0CG;ElFuhST;EkF77RE;IApII,kBA0CG;IA1CH,aA0CG;ElF0hST;EkFh8RE;IApII,wBA0CG;IA1CH,mBA0CG;ElF6hST;EkFn8RE;IApII,uBA0CG;IA1CH,kBA0CG;ElFgiST;EkFt8RE;IApII,qBA0CG;IA1CH,gBA0CG;ElFmiST;EkFz8RE;IApII,uBA0CG;IA1CH,kBA0CG;ElFsiST;EkF58RE;IApII,qBA0CG;IA1CH,gBA0CG;ElFyiST;EkF/8RE;IApII,gCA0CG;ElF4iST;EkFl9RE;IApII,uCA0CG;ElF+iST;EkFr9RE;IApII,kBA0CG;ElFkjST;EkFx9RE;IApII,mBA0CG;ElFqjST;EkF39RE;IApII,eA0CG;ElFwjST;EkF99RE;IApII,iDA0CG;ElF2jST;EkFj+RE;IApII,kDA0C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JA,8BA0CG;ElFu6ST;EkF70SE;IApII,6BA0CG;ElF06ST;EkFzzSM;IA3JA,6BA0CG;ElF66ST;EkFn1SE;IApII,8BA0CG;ElFg7ST;EkF/zSM;IA3JA,8BA0CG;ElFm7ST;EkFz1SE;IApII,yEA0CG;ElFs7ST;EkF51SE;IApII,wHA0CG;ElFy7ST;EkF/1SE;IApII,2EA0CG;ElF47ST;EkFl2SE;IApII,uEA0CG;ElF+7ST;EkFr2SE;IApII,6EA0CG;ElFk8ST;EkFx2SE;IApII,yEA0CG;ElFq8ST;EkF32SE;IApII,yEA0CG;ElFw8ST;EkF92SE;IApII,yEA0CG;ElF28ST;EkFj3SE;IApII,iFA0CG;ElF88ST;EkF71SM;IA3JA,iFA0CG;ElFi9ST;EkFv3SE;IApII,iFA0CG;ElFo9ST;EkFn2SM;IA3JA,iFA0CG;ElFu9ST;EkF73SE;IApII,iFA0CG;ElF09ST;EkFz2SM;IA3JA,iFA0CG;ElF69ST;EkFn4SE;IApII,iFA0CG;ElFg+ST;EkF/2SM;IA3JA,iFA0CG;ElFm+ST;EkFz4SE;IApII,iFA0CG;ElFs+ST;EkFr3SM;IA3JA,iFA0CG;ElFy+ST;EkF/4SE;IApII,iFA0CG;ElF4+ST;EkF33SM;IA3JA,iFA0CG;ElF++ST;EkFr5SE;IApII,iFA0CG;ElFk/ST;EkFj4SM;IA3JA,iFA0CG;ElFq/ST;EkF35SE;IApII,iFA0CG;ElFw/ST;EkFv4SM;IA3JA,iFA0CG;ElF2/ST;EkFj6SE;IApII,iFA0CG;ElF8/ST;EkF74SM;IA3JA,iFA0CG;ElFigTT;EkFv6SE;IApII,2CA0CG;ElFogTT;EkFn5SM;IA3JA,2CA0CG;ElFugTT;EkF76SE;IApII,8BA0CG;ElF0gTT;EkFz5SM;IA3JA,8BA0CG;ElF6gTT;EkFn7SE;IApII,8BA0CG;ElFghTT;EkF/5SM;IA3JA,8BA0CG;ElFmhTT;EkFz7SE;IApII,8BA0CG;ElFshTT;EkFr6SM;IA3JA,8BA0CG;ElFyhTT;EkF/7SE;IApII,8BA0CG;ElF4hTT;EkF36SM;IA3JA,8BA0CG;ElF+hTT;EkFr8SE;IApII,8BA0CG;E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A;MApII,mBA+CO;IlF4+TX;IkFv5TA;MApII,sBA+CO;IlF++TX;IkF15TA;MApII,2BA+CO;IlFk/TX;IkF75TA;MApII,8BA+CO;IlFq/TX;IkFh6TA;MApII,YA0CG;IlF6/TP;IkFn6TA;MApII,YA0CG;IlFggUP;IkFt6TA;MApII,cA0CG;IlFmgUP;IkFz6TA;MApII,cA0CG;IlFsgUP;IkF56TA;MApII,eA+CO;IlFogUX;IkF/6TA;MApII,iBA+CO;IlFugUX;IkFl7TA;MApII,uBA+CO;IlF0gUX;IkFr7TA;MApII,2BA0CG;IlFkhUP;IkFx7TA;MApII,yBA0CG;IlFqhUP;IkF37TA;MApII,uBA0CG;IlFwhUP;IkF97TA;MApII,8BA0CG;IlF2hUP;IkFj8TA;MApII,6BA0CG;IlF8hUP;IkFp8TA;MApII,6BA0CG;IlFiiUP;IkFv8TA;MApII,oBA0CG;IlFoiUP;IkF18TA;MApII,kBA0CG;IlFuiUP;IkF78TA;MApII,qBA0CG;IlF0iUP;IkFh9TA;MApII,sBA0CG;IlF6iUP;IkFn9TA;MApII,wBA0CG;IlFgjUP;IkFt9TA;MApII,sBA0CG;IlFmjUP;IkFz9TA;MApII,oBA0CG;IlFsjUP;IkF59TA;MApII,uBA0CG;IlFyjUP;IkF/9TA;MApII,qBA0CG;IlF4jUP;IkFl+TA;MApII,mBA0CG;IlF+jUP;IkFr+TA;MApII,qBA0CG;IlFkkUP;IkFx+TA;MApII,oBA0CG;IlFqkUP;IkF3+TA;MApII,yBA0CG;IlFwkUP;IkF9+TA;MApII,uBA0CG;IlF2kUP;IkFj/TA;MApII,qBA0CG;IlF8kUP;IkFp/TA;MApII,4BA0CG;IlFilUP;IkFv/TA;MApII,2BA0CG;IlFolUP;IkF1/TA;MApII,sBA0CG;IlFulUP;IkF7/TA;MApII,gBA0CG;IlF0lUP;IkFhgUA;MApII,sBA0CG;IlF6lUP;IkFngUA;MApII,oBA0CG;IlFgmUP;IkFtgUA;MApII,kBA0CG;IlFmmUP;IkFzgUA;MApII,oBA0CG;IlFsmUP;IkF5gUA;MApII,mBA0CG;IlFymUP;IkF/gUA;MApII,kBA0CG;IlF4mUP;IkFlhUA;MApII,gBA0CG;IlF+mUP;IkFrhUA;MApII,mBA0CG;IlFknUP;IkFxhUA;MApII,oBA0CG;IlFqnUP;IkF3hUA;MApII,qCA0CG;IlFwnUP;IkF9hUA;MApII,qCA0CG;IlF2nUP;IkFjiUA;MApII,qCA0CG;IlF8nUP;IkFpiUA;MApII,qCA0CG;IlFioUP;IkFviUA;MApII,mBA0CG;IlFooUP;IkF1iUA;MApII,mBA+CO;IlFkoUX;IkF7iUA;MApII,sBA+CO;IlFqoUX;IkFhjUA;MApII,qBA+CO;IlFwoUX;IkFnjUA;MApII,SA0CG;IlFgpUP;IkFtjUA;MApII,QA0CG;IlFmpUP;IkFzjUA;MApII,QA0CG;IlFspUP;IkF5jUA;MApII,QA0CG;IlFypUP;IkF/jUA;MApII,QA0CG;IlF4pUP;IkFlkUA;MApII,QA0CG;IlF+pUP;IkFrkUA;MApII,QA0CG;IlFkqUP;IkFxkUA;MApII,QA0CG;IlFqqUP;IkF3kUA;MApII,SA0CG;IlFwqUP;IkF9kUA;MApII,eA0CG;IlF2qUP;IkFjlUA;MApII,cA0CG;IlF8qUP;IkFplUA;MApII,YA0CG;IlFirUP;IkFvlUA;MApII,cA0CG;IlForUP;IkF1lUA;MApII,YA0CG;IlFurUP;IkF7lUA;MApII,YA0CG;IlF0rUP;IkFhmUA;MApII,gBA0CG;IlF6rUP;IkFnmUA;MApII,sBA0CG;IlFgsUP;IkFtmUA;MApII,qBA0CG;IlFmsUP;IkFzmUA;MApII,mBA0CG;IlFssUP;IkF5mUA;MApII,qBA0CG;IlFysUP;IkF/mUA;MApII,mBA0CG;IlF4sUP;IkFlnUA;MApII,mBA0CG;IlF+sUP;IkFrnUA;MApII,eA0CG;IlFktUP;IkFxnUA;MApII,qBA0CG;IlFqtUP;IkF3nUA;MApII,oBA0CG;IlFwtUP;IkF9nUA;MApII,kBA0CG;IlF2tUP;IkFjoUA;MApII,oBA0CG;IlF8tUP;IkFpoUA;MApII,kBA0CG;IlFiuUP;IkFvoUA;MApII,kBA0CG;IlFouUP;IkF1oUA;MApII,qBA0CG;IlFuuUP;IkF7oUA;MApII,2BA0CG;IlF0uUP;IkFhpUA;MApII,0BA0CG;IlF6uUP;IkFnpUA;MApII,wBA0CG;IlFgvUP;IkFtpUA;MApII,0BA0CG;IlFmvUP;IkFzpUA;MApII,wBA0CG;IlFsvUP;IkF5pUA;MApII,wBA0CG;IlFyvUP;IkF/pUA;MApII,oBA0CG;IlF4vUP;IkFlqUA;MApII,0BA0CG;IlF+vUP;IkFrqUA;MApII,yBA0CG;IlFkwUP;IkFxqUA;MApII,uBA0CG;IlFqwUP;IkF3qUA;MApII,yBA0CG;IlFwwUP;IkF9qUA;MApII,uBA0CG;IlF2wUP;IkFjrUA;MApII,uBA0CG;IlF8wUP;IkFprUA;MApII,mBA0CG;IlFixUP;IkFvrUA;MApII,yBA0CG;IlFoxUP;IkF1rUA;MApII,wBA0CG;IlFuxUP;IkF7rUA;MApII,sBA0CG;IlF0xUP;IkFhsUA;MApII,wBA0CG;IlF6xUP;IkFnsUA;MApII,sBA0CG;IlFgyUP;IkFtsUA;MApII,sBA0CG;IlFmyUP;IkFzsUA;MApII,sBA0CG;IlFsyUP;IkF5sUA;MApII,4BA0CG;IlFyyUP;IkF/sUA;MApII,2BA0CG;IlF4yUP;IkFltUA;MApII,yBA0CG;IlF+yUP;IkFrtUA;MApII,2BA0CG;IlFkzUP;IkFxtUA;MApII,yBA0CG;IlFqzUP;IkF3tUA;MApII,6BA0CG;IlFwzUP;IkF9tUA;MApII,4BA0CG;IlF2zUP;IkFjuUA;MApII,yBA0CG;IlF8zUP;IkFpuUA;MApII,UA0CG;IlFi0UP;IkFvuUA;MApII,gBA0CG;IlFo0UP;IkF1uUA;MApII,eA0CG;IlFu0UP;IkF7uUA;MApII,aA0CG;IlF00UP;IkFhvUA;MApII,eA0CG;IlF60UP;IkFnvUA;MApII,aA0CG;IlFg1UP;IkFtvUA;MApII,iBA0CG;IlFm1UP;IkFzvUA;MApII,uBA0CG;IlFs1UP;IkF5vUA;MApII,sBA0CG;IlFy1UP;IkF/vUA;MApII,oBA0CG;IlF41UP;IkFlwUA;MApII,sBA0CG;IlF+1UP;IkFrwUA;MApII,oBA0CG;IlFk2UP;IkFxwUA;MApII,gBA0CG;IlFq2UP;IkF3wUA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cA0CG;IlFolVP;IkF1/UA;MApII,cA0CG;IlFulVP;IkF7/UA;MApII,eA+CO;IlFqlVX;IkFhgVA;MApII,iBA+CO;IlFwlVX;IkFngVA;MApII,uBA+CO;IlF2lVX;IkFtgVA;MApII,2BA0CG;IlFmmVP;IkFzgVA;MApII,yBA0CG;IlFsmVP;IkF5gVA;MApII,uBA0CG;IlFymVP;IkF/gVA;MApII,8BA0CG;IlF4mVP;IkFlhVA;MApII,6BA0CG;IlF+mVP;IkFrhVA;MApII,6BA0CG;IlFknVP;IkFxhVA;MApII,oBA0CG;IlFqnVP;IkF3hVA;MApII,kBA0CG;IlFwnVP;IkF9hVA;MApII,qBA0CG;IlF2nVP;IkFjiVA;MApII,sBA0CG;IlF8nVP;IkFpiVA;MApII,wBA0CG;IlFioVP;IkFviVA;MApII,sBA0CG;IlFooVP;IkF1iVA;MApII,oBA0CG;IlFuoVP;IkF7iVA;MApII,uBA0CG;IlF0oVP;IkFhjVA;MApII,qBA0CG;IlF6oVP;IkFnjVA;MApII,mBA0CG;IlFgpVP;IkFtjVA;MApII,qBA0CG;IlFmpVP;IkFzjVA;MApII,oBA0CG;IlFspVP;IkF5jVA;MApII,yBA0CG;IlFypVP;IkF/jVA;MApII,uBA0CG;IlF4pVP;IkFlkVA;MApII,qBA0CG;IlF+pVP;IkFrkVA;MApII,4BA0CG;IlFkqVP;IkFxkVA;MApII,2BA0CG;IlFqqVP;IkF3kVA;MApII,sBA0CG;IlFwqVP;IkF9kVA;MApII,gBA0CG;IlF2qVP;IkFjlVA;MApII,sBA0CG;IlF8qVP;IkFplVA;MApII,oBA0CG;IlFirVP;IkFvlVA;MApII,kBA0CG;IlForVP;IkF1lVA;MApII,oBA0CG;IlFurVP;IkF7lVA;MApII,mBA0CG;IlF0rVP;IkFhmVA;MApII,kBA0CG;IlF6rVP;IkFnmVA;MApII,gBA0CG;IlFgsVP;IkFtmVA;MApII,mBA0CG;IlFmsVP;IkFzmVA;MApII,oBA0CG;IlFssVP;IkF5mVA;MApII,qCA0CG;IlFysVP;IkF/mVA;MApII,qCA0CG;IlF4sVP;IkFlnVA;MApII,qCA0CG;IlF+sVP;IkFrnVA;MApII,qCA0CG;IlFktVP;IkFxnVA;MApII,mBA0CG;IlFqtVP;IkF3nVA;MApII,mBA+CO;IlFmtVX;IkF9nVA;MApII,sBA+CO;IlFstVX;IkFjoVA;MApII,qBA+CO;IlFytVX;IkFpoVA;MApII,SA0CG;IlFiuVP;IkFvoVA;MApII,QA0CG;IlFouVP;IkF1oVA;MApII,QA0CG;IlFuuVP;IkF7oVA;MApII,QA0CG;IlF0uVP;IkFhpVA;MApII,QA0CG;IlF6uVP;IkFnpVA;MApII,QA0CG;IlFgvVP;IkFtpVA;MApII,QA0CG;IlFmvVP;IkFzpVA;MApII,QA0CG;IlFsvVP;IkF5pVA;MApII,SA0CG;IlFyvVP;IkF/pVA;MApII,eA0CG;IlF4vVP;IkFlqVA;MApII,cA0CG;IlF+vVP;IkFrqVA;MApII,YA0CG;IlFkwVP;IkFxqVA;MApII,cA0CG;IlFqwVP;IkF3qVA;MApII,YA0CG;IlFwwVP;IkF9qVA;MApII,YA0CG;IlF2wVP;IkFjrVA;MApII,gBA0CG;IlF8wVP;IkFprVA;MApII,sBA0CG;IlFixVP;IkFvrVA;MApII,qBA0CG;IlFoxVP;IkF1rVA;MApII,mBA0CG;IlFuxVP;IkF7rVA;MApII,qBA0CG;IlF0xVP;IkFhsVA;MApII,mBA0CG;IlF6xVP;IkFnsVA;MApII,mBA0CG;IlFgyVP;IkFtsVA;MApII,eA0CG;IlFmyVP;IkFzsVA;MApII,qBA0CG;IlFsyVP;IkF5sVA;MApII,oBA0CG;IlFyyVP;IkF/sVA;MApII,kBA0CG;IlF4yVP;IkFltVA;MApII,oBA0CG;IlF+yVP;IkFrtVA;MApII,kBA0CG;IlFkzVP;IkFxtVA;MApII,kBA0CG;IlFqzVP;IkF3tVA;MApII,qBA0CG;IlFwzVP;IkF9tVA;MApII,2BA0CG;IlF2zVP;IkFjuVA;MApII,0BA0CG;IlF8zVP;IkFpuVA;MApII,wBA0CG;IlFi0VP;IkFvuVA;MApII,0BA0CG;IlFo0VP;IkF1uVA;MApII,wBA0CG;IlFu0VP;IkF7uVA;MApII,wBA0CG;IlF00VP;IkFhvVA;MApII,oBA0CG;IlF60VP;IkFnvVA;MApII,0BA0CG;IlFg1VP;IkFtvVA;MApII,yBA0CG;IlFm1VP;IkFzvVA;MApII,uBA0CG;IlFs1VP;IkF5vVA;MApII,yBA0CG;IlFy1VP;IkF/vVA;MApII,uBA0CG;IlF41VP;IkFlwVA;MApII,uBA0CG;IlF+1VP;IkFrwVA;MApII,mBA0CG;IlFk2VP;IkFxwVA;MApII,yBA0CG;IlFq2VP;IkF3wVA;MApII,wBA0CG;IlFw2VP;IkF9wVA;MApII,sBA0CG;IlF22VP;IkFjxVA;MApII,wBA0CG;IlF82VP;IkFpxVA;MApII,sBA0CG;IlFi3VP;IkFvxVA;MApII,sBA0CG;IlFo3VP;IkF1xVA;MApII,sBA0CG;IlFu3VP;IkF7xVA;MApII,4BA0CG;IlF03VP;IkFhyVA;MApII,2BA0CG;IlF63VP;IkFnyVA;MApII,yBA0CG;IlFg4VP;IkFtyVA;MApII,2BA0CG;IlFm4VP;IkFzyVA;MApII,yBA0CG;IlFs4VP;IkF5yVA;MApII,6BA0CG;IlFy4VP;IkF/yVA;MApII,4BA0CG;IlF44VP;IkFlzVA;MApII,yBA0CG;IlF+4VP;IkFrzVA;MApII,UA0CG;IlFk5VP;IkFxzVA;MApII,gBA0CG;IlFq5VP;IkF3zVA;MApII,eA0CG;IlFw5VP;IkF9zVA;MApII,aA0CG;IlF25VP;IkFj0VA;MApII,eA0CG;IlF85VP;IkFp0VA;MApII,aA0CG;IlFi6VP;IkFv0VA;MApII,iBA0CG;IlFo6VP;IkF10VA;MApII,uBA0CG;IlFu6VP;IkF70VA;MApII,sBA0CG;IlF06VP;IkFh1VA;MApII,oBA0CG;IlF66VP;IkFn1VA;MApII,sBA0CG;IlFg7VP;IkFt1VA;MApII,oBA0CG;IlFm7VP;IkFz1VA;MApII,gBA0CG;IlFs7VP;IkF51VA;MApII,sBA0CG;IlFy7VP;IkF/1VA;MApII,qBA0CG;IlF47VP;IkFl2VA;MApII,mBA0CG;IlF+7VP;IkFr2VA;MApII,qBA0CG;IlFk8VP;IkFx2VA;MApII,mBA0CG;IlFq8VP;IkF32VA;MApII,sBA0CG;IlFw8VP;IkF92VA;MApII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FurWP;IkF7lWA;MApII,uBA0CG;IlF0rWP;IkFhmWA;MApII,8BA0CG;IlF6rWP;IkFnmWA;MApII,6BA0CG;IlFgsWP;IkFtmWA;MApII,6BA0CG;IlFmsWP;IkFzmWA;MApII,oBA0CG;IlFssWP;IkF5mWA;MApII,kBA0CG;IlFysWP;IkF/mWA;MApII,qBA0CG;IlF4sWP;IkFlnWA;MApII,sBA0CG;IlF+sWP;IkFrnWA;MApII,wBA0CG;IlFktWP;IkFxnWA;MApII,sBA0CG;IlFqtWP;IkF3nWA;MApII,oBA0CG;IlFwtWP;IkF9nWA;MApII,uBA0CG;IlF2tWP;IkFjoWA;MApII,qBA0CG;IlF8tWP;IkFpoWA;MApII,mBA0CG;IlFiuWP;IkFvoWA;MApII,qBA0CG;IlFouWP;IkF1oWA;MApII,oBA0CG;IlFuuWP;IkF7oWA;MApII,yBA0CG;IlF0uWP;IkFhpWA;MApII,uBA0CG;IlF6uWP;IkFnpWA;MApII,qBA0CG;IlFgvWP;IkFtpWA;MApII,4BA0CG;IlFmvWP;IkFzpWA;MApII,2BA0CG;IlFsvWP;IkF5pWA;MApII,sBA0CG;IlFyvWP;IkF/pWA;MApII,gBA0CG;IlF4vWP;IkFlqWA;MApII,sBA0CG;IlF+vWP;IkFrqWA;MApII,oBA0CG;IlFkwWP;IkFxqWA;MApII,kBA0CG;IlFqwWP;IkF3qWA;MApII,oBA0CG;IlFwwWP;IkF9qWA;MApII,mBA0CG;IlF2wWP;IkFjrWA;MApII,kBA0CG;IlF8wWP;IkFprWA;MApII,gBA0CG;IlFixWP;IkFvrWA;MApII,mBA0CG;IlFoxWP;IkF1rWA;MApII,oBA0CG;IlFuxWP;IkF7rWA;MApII,qCA0CG;IlF0xWP;IkFhsWA;MApII,qCA0CG;IlF6xWP;IkFnsWA;MApII,qCA0CG;IlFgyWP;IkFtsWA;MApII,qCA0CG;IlFmyWP;IkFzsWA;MApII,mBA0CG;IlFsyWP;IkF5sWA;MApII,mBA+CO;IlFoyWX;IkF/sWA;MApII,sBA+CO;IlFuyWX;IkFltWA;MApII,qBA+CO;IlF0yWX;IkFrtWA;MApII,SA0CG;IlFkzWP;IkFxtWA;MApII,QA0CG;IlFqzWP;IkF3tWA;MApII,QA0CG;IlFwzWP;IkF9tWA;MApII,QA0CG;IlF2zWP;IkFjuWA;MApII,QA0CG;IlF8zWP;IkFpuWA;MApII,QA0CG;IlFi0WP;IkFvuWA;MApII,QA0CG;IlFo0WP;IkF1uWA;MApII,QA0CG;IlFu0WP;IkF7uWA;MApII,SA0CG;IlF00WP;IkFhvWA;MApII,eA0CG;IlF60WP;IkFnvWA;MApII,cA0CG;IlFg1WP;IkFtvWA;MApII,YA0CG;IlFm1WP;IkFzvWA;MApII,cA0CG;IlFs1WP;IkF5vWA;MApII,YA0CG;IlFy1WP;IkF/vWA;MApII,YA0CG;IlF41WP;IkFlwWA;MApII,gBA0CG;IlF+1WP;IkFrwWA;MApII,sBA0CG;IlFk2WP;IkFxwWA;MApII,qBA0CG;IlFq2WP;IkF3wWA;MApII,mBA0CG;IlFw2WP;IkF9wWA;MApII,qBA0CG;IlF22WP;IkFjxWA;MApII,mBA0CG;IlF82WP;IkFpxWA;MApII,mBA0CG;IlFi3WP;IkFvxWA;MApII,eA0CG;IlFo3WP;IkF1xWA;MApII,qBA0CG;IlFu3WP;IkF7xWA;MApII,oBA0CG;IlF03WP;IkFhyWA;MApII,kBA0CG;IlF63WP;IkFnyWA;MApII,oBA0CG;IlFg4WP;IkFtyWA;MApII,kBA0CG;IlFm4WP;IkFzyWA;MApII,kBA0CG;IlFs4WP;IkF5yWA;MApII,qBA0CG;IlFy4WP;IkF/yWA;MApII,2BA0CG;IlF44WP;IkFlzWA;MApII,0BA0CG;IlF+4WP;IkFrzWA;MApII,wBA0CG;IlFk5WP;IkFxzWA;MApII,0BA0CG;IlFq5WP;IkF3zWA;MApII,wBA0CG;IlFw5WP;IkF9zWA;MApII,wBA0CG;IlF25WP;IkFj0WA;MApII,oBA0CG;IlF85WP;IkFp0WA;MApII,0BA0CG;IlFi6WP;IkFv0WA;MApII,yBA0CG;IlFo6WP;IkF10WA;MApII,uBA0CG;IlFu6WP;IkF70WA;MApII,yBA0CG;IlF06WP;IkFh1WA;MApII,uBA0CG;IlF66WP;IkFn1WA;MApII,uBA0CG;IlFg7WP;IkFt1WA;MApII,mBA0CG;IlFm7WP;IkFz1WA;MApII,yBA0CG;IlFs7WP;IkF51WA;MApII,wBA0CG;IlFy7WP;IkF/1WA;MApII,sBA0CG;IlF47WP;IkFl2WA;MApII,wBA0CG;IlF+7WP;IkFr2WA;MApII,sBA0CG;IlFk8WP;IkFx2WA;MApII,sBA0CG;IlFq8WP;IkF32WA;MApII,sBA0CG;IlFw8WP;IkF92WA;MApII,4BA0CG;IlF28WP;IkFj3WA;MApII,2BA0CG;IlF88WP;IkFp3WA;MApII,yBA0CG;IlFi9WP;IkFv3WA;MApII,2BA0CG;IlFo9WP;IkF13WA;MApII,yBA0CG;IlFu9WP;IkF73WA;MApII,6BA0CG;IlF09WP;IkFh4WA;MApII,4BA0CG;IlF69WP;IkFn4WA;MApII,yBA0CG;IlFg+WP;IkFt4WA;MApII,UA0CG;IlFm+WP;IkFz4WA;MApII,gBA0CG;IlFs+WP;IkF54WA;MApII,eA0CG;IlFy+WP;IkF/4WA;MApII,aA0CG;IlF4+WP;IkFl5WA;MApII,eA0CG;IlF++WP;IkFr5WA;MApII,aA0CG;IlFk/WP;IkFx5WA;MApII,iBA0CG;IlFq/WP;IkF35WA;MApII,uBA0CG;IlFw/WP;IkF95WA;MApII,sBA0CG;IlF2/WP;IkFj6WA;MApII,oBA0CG;IlF8/WP;IkFp6WA;MApII,sBA0CG;IlFigXP;IkFv6WA;MApII,oBA0CG;IlFogXP;IkF16WA;MApII,gBA0CG;IlFugXP;IkF76WA;MApII,sBA0CG;IlF0gXP;IkFh7WA;MApII,qBA0CG;IlF6gXP;IkFn7WA;MApII,mBA0CG;IlFghXP;IkFt7WA;MApII,qBA0CG;IlFmhXP;IkFz7WA;MApII,mBA0CG;IlFshXP;IkF57WA;MApII,sBA0CG;IlFyhXP;IkF/7WA;MApII,4BA0CG;IlF4hXP;IkFl8WA;MApII,2BA0CG;IlF+hXP;IkFr8WA;MApII,yBA0CG;IlFkiXP;IkFx8WA;MApII,2BA0CG;IlFqiXP;IkF38WA;MApII,yBA0CG;IlFwiXP;IkF98WA;MApII,qBA0CG;IlF2iXP;IkFj9WA;MApII,2BA0C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IkFhsXA;MApII,qBA0CG;IlF6xXP;IkFnsXA;MApII,sBA0CG;IlFgyXP;IkFtsXA;MApII,wBA0CG;IlFmyXP;IkFzsXA;MApII,sBA0CG;IlFsyXP;IkF5sXA;MApII,oBA0CG;IlFyyXP;IkF/sXA;MApII,uBA0CG;IlF4yXP;IkFltXA;MApII,qBA0CG;IlF+yXP;IkFrtXA;MApII,mBA0CG;IlFkzXP;IkFxtXA;MApII,qBA0CG;IlFqzXP;IkF3tXA;MApII,oBA0CG;IlFwzXP;IkF9tXA;MApII,yBA0CG;IlF2zXP;IkFjuXA;MApII,uBA0CG;IlF8zXP;IkFpuXA;MApII,qBA0CG;IlFi0XP;IkFvuXA;MApII,4BA0CG;IlFo0XP;IkF1uXA;MApII,2BA0CG;IlFu0XP;IkF7uXA;MApII,sBA0CG;IlF00XP;IkFhvXA;MApII,gBA0CG;IlF60XP;IkFnvXA;MApII,sBA0CG;IlFg1XP;IkFtvXA;MApII,oBA0CG;IlFm1XP;IkFzvXA;MApII,kBA0CG;IlFs1XP;IkF5vXA;MApII,oBA0CG;IlFy1XP;IkF/vXA;MApII,mBA0CG;IlF41XP;IkFlwXA;MApII,kBA0CG;IlF+1XP;IkFrwXA;MApII,gBA0CG;IlFk2XP;IkFxwXA;MApII,mBA0CG;IlFq2XP;IkF3wXA;MApII,oBA0CG;IlFw2XP;IkF9wXA;MApII,qCA0CG;IlF22XP;IkFjxXA;MApII,qCA0CG;IlF82XP;IkFpxXA;MApII,qCA0CG;IlFi3XP;IkFvxXA;MApII,qCA0CG;IlFo3XP;IkF1xXA;MApII,mBA0CG;IlFu3XP;IkF7xXA;MApII,mBA+CO;IlFq3XX;IkFhyXA;MApII,sBA+CO;IlFw3XX;IkFnyXA;MApII,qBA+CO;IlF23XX;IkFtyXA;MApII,SA0CG;IlFm4XP;IkFzyXA;MApII,QA0CG;IlFs4XP;IkF5yXA;MApII,QA0CG;IlFy4XP;IkF/yXA;MApII,QA0CG;IlF44XP;IkFlzXA;MApII,QA0CG;IlF+4XP;IkFrzXA;MApII,QA0CG;IlFk5XP;IkFxzXA;MApII,QA0CG;IlFq5XP;IkF3zXA;MApII,QA0CG;IlFw5XP;IkF9zXA;MApII,SA0CG;IlF25XP;IkFj0XA;MApII,eA0CG;IlF85XP;IkFp0XA;MApII,cA0CG;IlFi6XP;IkFv0XA;MApII,YA0CG;IlFo6XP;IkF10XA;MApII,cA0CG;IlFu6XP;IkF70XA;MApII,YA0CG;IlF06XP;IkFh1XA;MApII,YA0CG;IlF66XP;IkFn1XA;MApII,gBA0CG;IlFg7XP;IkFt1XA;MApII,sBA0CG;IlFm7XP;IkFz1XA;MApII,qBA0CG;IlFs7XP;IkF51XA;MApII,mBA0CG;IlFy7XP;IkF/1XA;MApII,qBA0CG;IlF47XP;IkFl2XA;MApII,mBA0CG;IlF+7XP;IkFr2XA;MApII,mBA0CG;IlFk8XP;IkFx2XA;MApII,eA0CG;IlFq8XP;IkF32XA;MApII,qBA0CG;IlFw8XP;IkF92XA;MApII,oBA0CG;IlF28XP;IkFj3XA;MApII,kBA0CG;IlF88XP;IkFp3XA;MApII,oBA0CG;IlFi9XP;IkFv3XA;MApII,kBA0CG;IlFo9XP;IkF13XA;MApII,kBA0CG;IlFu9XP;IkF73XA;MApII,qBA0CG;IlF09XP;IkFh4XA;MApII,2BA0CG;IlF69XP;IkFn4XA;MApII,0BA0CG;IlFg+XP;IkFt4XA;MApII,wBA0CG;IlFm+XP;IkFz4XA;MApII,0BA0CG;IlFs+XP;IkF54XA;MApII,wBA0CG;IlFy+XP;IkF/4XA;MApII,wBA0CG;IlF4+XP;IkFl5XA;MApII,oBA0CG;IlF++XP;IkFr5XA;MApII,0BA0CG;IlFk/XP;IkFx5XA;MApII,yBA0CG;IlFq/XP;IkF35XA;MApII,uBA0CG;IlFw/XP;IkF95XA;MApII,yBA0CG;IlF2/XP;IkFj6XA;MApII,uBA0CG;IlF8/XP;IkFp6XA;MApII,uBA0CG;IlFigYP;IkFv6XA;MApII,mBA0CG;IlFogYP;IkF16XA;MApII,yBA0CG;IlFugYP;IkF76XA;MApII,wBA0CG;IlF0gYP;IkFh7XA;MApII,sBA0CG;IlF6gYP;IkFn7XA;MApII,wBA0CG;IlFghYP;IkFt7XA;MApII,sBA0CG;IlFmhYP;IkFz7XA;MApII,sBA0CG;IlFshYP;IkF57XA;MApII,sBA0CG;IlFyhYP;IkF/7XA;MApII,4BA0CG;IlF4hYP;IkFl8XA;MApII,2BA0CG;IlF+hYP;IkFr8XA;MApII,yBA0CG;IlFkiYP;IkFx8XA;MApII,2BA0CG;IlFqiYP;IkF38XA;MApII,yBA0CG;IlFwiYP;IkF98XA;MApII,6BA0CG;IlF2iYP;IkFj9XA;MApII,4BA0CG;IlF8iYP;IkFp9XA;MApII,yBA0CG;IlFijYP;IkFv9XA;MApII,UA0CG;IlFojYP;IkF19XA;MApII,gBA0CG;IlFujYP;IkF79XA;MApII,eA0CG;IlF0jYP;IkFh+XA;MApII,aA0CG;IlF6jYP;IkFn+XA;MApII,eA0CG;IlFgkYP;IkFt+XA;MApII,aA0CG;IlFmkYP;IkFz+XA;MApII,iBA0CG;IlFskYP;IkF5+XA;MApII,uBA0CG;IlFykYP;IkF/+XA;MApII,sBA0CG;IlF4kYP;IkFl/XA;MApII,oBA0CG;IlF+kYP;IkFr/XA;MApII,sBA0CG;IlFklYP;IkFx/XA;MApII,oBA0CG;IlFqlYP;IkF3/XA;MApII,gBA0CG;IlFwlYP;IkF9/XA;MApII,sBA0CG;IlF2lYP;IkFjgYA;MApII,qBA0CG;IlF8lYP;IkFpgYA;MApII,mBA0CG;IlFimYP;IkFvgYA;MApII,qBA0CG;IlFomYP;IkF1gYA;MApII,mBA0CG;IlFumYP;IkF7gYA;MApII,sBA0CG;IlF0mYP;IkFhhYA;MApII,4BA0CG;IlF6mYP;IkFnhYA;MApII,2BA0CG;IlFgnYP;IkFthYA;MApII,yBA0CG;IlFmnYP;IkFzhYA;MApII,2BA0CG;IlFsnYP;IkF5hYA;MApII,yBA0CG;IlFynYP;IkF/hYA;MApII,qBA0CG;IlF4nYP;IkFliYA;MApII,2BA0CG;IlF+nYP;IkFriYA;MApII,0BA0CG;IlFkoYP;IkFxiYA;MApII,wBA0CG;IlFqoYP;IkF3iYA;MApII,0BA0CG;IlFwoYP;IkF9iYA;MApII,wBA0CG;IlF2oYP;IkFjjYA;MApII,oBA0CG;IlF8oYP;IkFpjYA;MApII,0BA0CG;IlFi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A;MApII,qBA0CG;IlFg4YP;IkFtyYA;MApII,mBA0CG;IlFm4YP;IkFzyYA;MApII,qBA0CG;IlFs4YP;IkF5yYA;MApII,oBA0CG;IlFy4YP;IkF/yYA;MApII,yBA0CG;IlF44YP;IkFlzYA;MApII,uBA0CG;IlF+4YP;IkFrzYA;MApII,qBA0CG;IlFk5YP;IkFxzYA;MApII,4BA0CG;IlFq5YP;IkF3zYA;MApII,2BA0CG;IlFw5YP;IkF9zYA;MApII,sBA0CG;IlF25YP;IkFj0YA;MApII,gBA0CG;IlF85YP;IkFp0YA;MApII,sBA0CG;IlFi6YP;IkFv0YA;MApII,oBA0CG;IlFo6YP;IkF10YA;MApII,kBA0CG;IlFu6YP;IkF70YA;MApII,oBA0CG;IlF06YP;IkFh1YA;MApII,mBA0CG;IlF66YP;IkFn1YA;MApII,kBA0CG;IlFg7YP;IkFt1YA;MApII,gBA0CG;IlFm7YP;IkFz1YA;MApII,mBA0CG;IlFs7YP;IkF51YA;MApII,oBA0CG;IlFy7YP;IkF/1YA;MApII,qCA0CG;IlF47YP;IkFl2YA;MApII,qCA0CG;IlF+7YP;IkFr2YA;MApII,qCA0CG;IlFk8YP;IkFx2YA;MApII,qCA0CG;IlFq8YP;IkF32YA;MApII,mBA0CG;IlFw8YP;IkF92YA;MApII,mBA+CO;IlFs8YX;IkFj3YA;MApII,sBA+CO;IlFy8YX;IkFp3YA;MApII,qBA+CO;IlF48YX;IkFv3YA;MApII,SA0CG;IlFo9YP;IkF13YA;MApII,QA0CG;IlFu9YP;IkF73YA;MApII,QA0CG;IlF09YP;IkFh4YA;MApII,QA0CG;IlF69YP;IkFn4YA;MApII,QA0CG;IlFg+YP;IkFt4YA;MApII,QA0CG;IlFm+YP;IkFz4YA;MApII,QA0CG;IlFs+YP;IkF54YA;MApII,QA0CG;IlFy+YP;IkF/4YA;MApII,SA0CG;IlF4+YP;IkFl5YA;MApII,eA0CG;IlF++YP;IkFr5YA;MApII,cA0CG;IlFk/YP;IkFx5YA;MApII,YA0CG;IlFq/YP;IkF35YA;MApII,cA0CG;IlFw/YP;IkF95YA;MApII,YA0CG;IlF2/YP;IkFj6YA;MApII,YA0CG;IlF8/YP;IkFp6YA;MApII,gBA0CG;IlFigZP;IkFv6YA;MApII,sBA0CG;IlFogZP;IkF16YA;MApII,qBA0CG;IlFugZP;IkF76YA;MApII,mBA0CG;IlF0gZP;IkFh7YA;MApII,qBA0CG;IlF6gZP;IkFn7YA;MApII,mBA0CG;IlFghZP;IkFt7YA;MApII,mBA0CG;IlFmhZP;IkFz7YA;MApII,eA0CG;IlFshZP;IkF57YA;MApII,qBA0CG;IlFyhZP;IkF/7YA;MApII,oBA0CG;IlF4hZP;IkFl8YA;MApII,kBA0CG;IlF+hZP;IkFr8YA;MApII,oBA0CG;IlFkiZP;IkFx8YA;MApII,kBA0CG;IlFqiZP;IkF38YA;MApII,kBA0CG;IlFwiZP;IkF98YA;MApII,qBA0CG;IlF2iZP;IkFj9YA;MApII,2BA0CG;IlF8iZP;IkFp9YA;MApII,0BA0CG;IlFijZP;IkFv9YA;MApII,wBA0CG;IlFojZP;IkF19YA;MApII,0BA0CG;IlFujZP;IkF79YA;MApII,wBA0CG;IlF0jZP;IkFh+YA;MApII,wBA0CG;IlF6jZP;IkFn+YA;MApII,oBA0CG;IlFgkZP;IkFt+YA;MApII,0BA0CG;IlFmkZP;IkFz+YA;MApII,yBA0CG;IlFskZP;IkF5+YA;MApII,uBA0CG;IlFykZP;IkF/+YA;MApII,yBA0CG;IlF4kZP;IkFl/YA;MApII,uBA0CG;IlF+kZP;IkFr/YA;MApII,uBA0CG;IlFklZP;IkFx/YA;MApII,mBA0CG;IlFqlZP;IkF3/YA;MApII,yBA0CG;IlFwlZP;IkF9/YA;MApII,wBA0CG;IlF2lZP;IkFjgZA;MApII,sBA0CG;IlF8lZP;IkFpgZA;MApII,wBA0CG;IlFimZP;IkFvgZA;MApII,sBA0CG;IlFomZP;IkF1gZA;MApII,sBA0CG;IlFumZP;IkF7gZA;MApII,sBA0CG;IlF0mZP;IkFhhZA;MApII,4BA0CG;IlF6mZP;IkFnhZA;MApII,2BA0CG;IlFgnZP;IkFthZA;MApII,yBA0CG;IlFmnZP;IkFzhZA;MApII,2BA0CG;IlFsnZP;IkF5hZA;MApII,yBA0CG;IlFynZP;IkF/hZA;MApII,6BA0CG;IlF4nZP;IkFliZA;MApII,4BA0CG;IlF+nZP;IkFriZA;MApII,yBA0CG;IlFkoZP;IkFxiZA;MApII,UA0CG;IlFqoZP;IkF3iZA;MApII,gBA0CG;IlFwoZP;IkF9iZA;MApII,eA0CG;IlF2oZP;IkFjjZA;MApII,aA0CG;IlF8oZP;IkFpjZA;MApII,eA0CG;IlFipZP;IkFvjZA;MApII,aA0CG;IlFopZP;IkF1jZA;MApII,iBA0CG;IlFupZP;IkF7jZA;MApII,uBA0CG;IlF0pZP;IkFhkZA;MApII,sBA0CG;IlF6pZP;IkFnkZA;MApII,oBA0CG;IlFgqZP;IkFtkZA;MApII,sBA0CG;IlFmqZP;IkFzkZA;MApII,oBA0CG;IlFsqZP;IkF5kZA;MApII,gBA0CG;IlFyqZP;IkF/kZA;MApII,sBA0CG;IlF4qZP;IkFllZA;MApII,qBA0CG;IlF+qZP;IkFrlZA;MApII,mBA0CG;IlFkrZP;IkFxlZA;MApII,qBA0CG;IlFqrZP;IkF3lZA;MApII,mBA0CG;IlFwrZP;IkF9lZA;MApII,sBA0CG;IlF2rZP;IkFjmZA;MApII,4BA0CG;IlF8rZP;IkFpmZA;MApII,2BA0CG;IlFisZP;IkFvmZA;MApII,yBA0CG;IlFosZP;IkF1mZA;MApII,2BA0CG;IlFusZP;IkF7mZA;MApII,yBA0CG;IlF0sZP;IkFhnZA;MApII,qBA0CG;IlF6sZP;IkFnnZA;MApII,2BA0CG;IlFgtZP;IkFtnZA;MApII,0BA0CG;IlFmtZP;IkFznZA;MApII,wBA0CG;IlFstZP;IkF5nZA;MApII,0BA0CG;IlFytZP;IkF/nZA;MApII,wBA0CG;IlF4tZP;IkFloZA;MApII,oBA0CG;IlF+tZP;IkFroZA;MApII,0BA0CG;IlFkuZP;IkFxoZA;MApII,yBA0CG;IlFquZP;IkF3oZA;MApII,uBA0CG;IlFwuZP;IkF9oZA;MApII,yBA0CG;IlF2uZP;IkFjpZA;MApII,uBA0CG;IlF8uZP;IkFppZA;MApII,uBA0CG;IlFivZP;IkFvpZA;MApII,6BA0CG;IlFovZP;IkF1pZA;MApII,4BA0CG;IlFuvZP;IkF7pZA;MApII,0BA0CG;IlF0vZP;IkFhqZA;MApII,4BA0CG;IlF6vZP;IkFnqZA;MApII,0BA0CG;IlFgwZP;IkFtqZA;MApII,MA0CG;IlFmwZP;IkFzqZA;MApII,YA0CG;IlFswZP;IkF5qZA;MApII,WA0CG;IlFywZP;IkF/qZA;MApII,SA0CG;IlF4wZP;IkFlrZA;MApII,WA0CG;IlF+wZP;IkFrrZA;MApII,SA0CG;IlFkxZP;IkFxrZA;MApII,UA0CG;IlFqxZP;IkF3rZA;MApII,gBA0CG;IlFwxZP;IkF9rZA;MApII,eA0CG;IlF2xZP;IkFjsZA;MApII,aA0CG;IlF8xZP;IkFpsZA;MApII,eA0CG;IlFiyZP;IkFvsZA;MApII,aA0CG;IlFoyZP;IkF1sZA;MApII,kBA0CG;MA1CH,aA0CG;IlFuyZP;IkF7sZA;MApII,wBA0CG;MA1CH,mBA0CG;IlF0yZP;IkFhtZA;MApII,uBA0CG;MA1CH,kBA0CG;IlF6yZP;IkFntZA;MApII,qBA0CG;MA1CH,gBA0CG;IlFgzZP;IkFttZA;MApII,uBA0CG;MA1CH,kBA0CG;IlFmzZP;IkFztZA;MApII,qBA0CG;MA1CH,gBA0CG;IlFszZP;IkF5tZA;MApII,iBA0CG;IlFyzZP;IkF/tZA;MApII,eA0CG;IlF4zZP;IkFluZA;MApII,kBA0CG;IlF+zZP;EACF;AACF","file":"bootstrap.css","sourcesContent":["@charset \"UTF-8\";\n/*!\n  * Bootstrap  v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n:root {\n  --blue-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.24 240deg));\n  --blue-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.24 240deg));\n  --blue-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.24 240deg));\n  --blue-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.24 240deg));\n  --blue-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.24 240deg));\n  --blue-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.24 240deg));\n  --blue-500: oklch(60% 0.24 240deg);\n  --blue-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.24 240deg));\n  --blue-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.24 240deg));\n  --blue-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.24 240deg));\n  --blue-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.24 240deg));\n  --blue-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.24 240deg));\n  --blue-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.24 240deg));\n  --indigo-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.26 288deg));\n  --indigo-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.26 288deg));\n  --indigo-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.26 288deg));\n  --indigo-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.26 288deg));\n  --indigo-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.26 288deg));\n  --indigo-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.26 288deg));\n  --indigo-500: oklch(56% 0.26 288deg);\n  --indigo-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.26 288deg));\n  --indigo-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.26 288deg));\n  --indigo-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.26 288deg));\n  --indigo-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.26 288deg));\n  --indigo-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.26 288deg));\n  --indigo-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.26 288deg));\n  --violet-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 300deg));\n  --violet-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 300deg));\n  --violet-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 300deg));\n  --violet-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 300deg));\n  --violet-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 300deg));\n  --violet-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 300deg));\n  --violet-500: oklch(56% 0.24 300deg);\n  --violet-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 300deg));\n  --violet-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 300deg));\n  --violet-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 300deg));\n  --violet-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 300deg));\n  --violet-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 300deg));\n  --violet-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 300deg));\n  --purple-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 320deg));\n  --purple-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 320deg));\n  --purple-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 320deg));\n  --purple-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 320deg));\n  --purple-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 320deg));\n  --purple-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 320deg));\n  --purple-500: oklch(56% 0.24 320deg);\n  --purple-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 320deg));\n  --purple-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 320deg));\n  --purple-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 320deg));\n  --purple-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 320deg));\n  --purple-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 320deg));\n  --purple-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 320deg));\n  --pink-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 4deg));\n  --pink-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 4deg));\n  --pink-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 4deg));\n  --pink-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 4deg));\n  --pink-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 4deg));\n  --pink-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 4deg));\n  --pink-500: oklch(60% 0.22 4deg);\n  --pink-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 4deg));\n  --pink-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 4deg));\n  --pink-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 4deg));\n  --pink-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 4deg));\n  --pink-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 4deg));\n  --pink-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 4deg));\n  --red-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 20deg));\n  --red-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 20deg));\n  --red-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 20deg));\n  --red-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 20deg));\n  --red-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 20deg));\n  --red-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 20deg));\n  --red-500: oklch(60% 0.22 20deg);\n  --red-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 20deg));\n  --red-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 20deg));\n  --red-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 20deg));\n  --red-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 20deg));\n  --red-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 20deg));\n  --red-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 20deg));\n  --orange-025: color-mix(in lab, var(--white) 94%, oklch(70% 0.22 52deg));\n  --orange-050: color-mix(in lab, var(--white) 90%, oklch(70% 0.22 52deg));\n  --orange-100: color-mix(in lab, var(--white) 80%, oklch(70% 0.22 52deg));\n  --orange-200: color-mix(in lab, var(--white) 60%, oklch(70% 0.22 52deg));\n  --orange-300: color-mix(in lab, var(--white) 40%, oklch(70% 0.22 52deg));\n  --orange-400: color-mix(in lab, var(--white) 20%, oklch(70% 0.22 52deg));\n  --orange-500: oklch(70% 0.22 52deg);\n  --orange-600: color-mix(in lab, var(--black) 16%, oklch(70% 0.22 52deg));\n  --orange-700: color-mix(in lab, var(--black) 32%, oklch(70% 0.22 52deg));\n  --orange-800: color-mix(in lab, var(--black) 48%, oklch(70% 0.22 52deg));\n  --orange-900: color-mix(in lab, var(--black) 64%, oklch(70% 0.22 52deg));\n  --orange-950: color-mix(in lab, var(--black) 76%, oklch(70% 0.22 52deg));\n  --orange-975: color-mix(in lab, var(--black) 88%, oklch(70% 0.22 52deg));\n  --amber-025: color-mix(in lab, var(--white) 94%, oklch(79% 0.2 78deg));\n  --amber-050: color-mix(in lab, var(--white) 90%, oklch(79% 0.2 78deg));\n  --amber-100: color-mix(in lab, var(--white) 80%, oklch(79% 0.2 78deg));\n  --amber-200: color-mix(in lab, var(--white) 60%, oklch(79% 0.2 78deg));\n  --amber-300: color-mix(in lab, var(--white) 40%, oklch(79% 0.2 78deg));\n  --amber-400: color-mix(in lab, var(--white) 20%, oklch(79% 0.2 78deg));\n  --amber-500: oklch(79% 0.2 78deg);\n  --amber-600: color-mix(in lab, var(--black) 16%, oklch(79% 0.2 78deg));\n  --amber-700: color-mix(in lab, var(--black) 32%, oklch(79% 0.2 78deg));\n  --amber-800: color-mix(in lab, var(--black) 48%, oklch(79% 0.2 78deg));\n  --amber-900: color-mix(in lab, var(--black) 64%, oklch(79% 0.2 78deg));\n  --amber-950: color-mix(in lab, var(--black) 76%, oklch(79% 0.2 78deg));\n  --amber-975: color-mix(in lab, var(--black) 88%, oklch(79% 0.2 78deg));\n  --yellow-025: color-mix(in lab, var(--white) 94%, oklch(88% 0.24 88deg));\n  --yellow-050: color-mix(in lab, var(--white) 90%, oklch(88% 0.24 88deg));\n  --yellow-100: color-mix(in lab, var(--white) 80%, oklch(88% 0.24 88deg));\n  --yellow-200: color-mix(in lab, var(--white) 60%, oklch(88% 0.24 88deg));\n  --yellow-300: color-mix(in lab, var(--white) 40%, oklch(88% 0.24 88deg));\n  --yellow-400: color-mix(in lab, var(--white) 20%, oklch(88% 0.24 88deg));\n  --yellow-500: oklch(88% 0.24 88deg);\n  --yellow-600: color-mix(in lab, var(--black) 16%, oklch(88% 0.24 88deg));\n  --yellow-700: color-mix(in lab, var(--black) 32%, oklch(88% 0.24 88deg));\n  --yellow-800: color-mix(in lab, var(--black) 48%, oklch(88% 0.24 88deg));\n  --yellow-900: color-mix(in lab, var(--black) 64%, oklch(88% 0.24 88deg));\n  --yellow-950: color-mix(in lab, var(--black) 76%, oklch(88% 0.24 88deg));\n  --yellow-975: color-mix(in lab, var(--black) 88%, oklch(88% 0.24 88deg));\n  --lime-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.24 135deg));\n  --lime-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.24 135deg));\n  --lime-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.24 135deg));\n  --lime-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.24 135deg));\n  --lime-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.24 135deg));\n  --lime-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.24 135deg));\n  --lime-500: oklch(65% 0.24 135deg);\n  --lime-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.24 135deg));\n  --lime-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.24 135deg));\n  --lime-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.24 135deg));\n  --lime-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.24 135deg));\n  --lime-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.24 135deg));\n  --lime-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.24 135deg));\n  --green-025: color-mix(in lab, var(--white) 94%, oklch(64% 0.22 160deg));\n  --green-050: color-mix(in lab, var(--white) 90%, oklch(64% 0.22 160deg));\n  --green-100: color-mix(in lab, var(--white) 80%, oklch(64% 0.22 160deg));\n  --green-200: color-mix(in lab, var(--white) 60%, oklch(64% 0.22 160deg));\n  --green-300: color-mix(in lab, var(--white) 40%, oklch(64% 0.22 160deg));\n  --green-400: color-mix(in lab, var(--white) 20%, oklch(64% 0.22 160deg));\n  --green-500: oklch(64% 0.22 160deg);\n  --green-600: color-mix(in lab, var(--black) 16%, oklch(64% 0.22 160deg));\n  --green-700: color-mix(in lab, var(--black) 32%, oklch(64% 0.22 160deg));\n  --green-800: color-mix(in lab, var(--black) 48%, oklch(64% 0.22 160deg));\n  --green-900: color-mix(in lab, var(--black) 64%, oklch(64% 0.22 160deg));\n  --green-950: color-mix(in lab, var(--black) 76%, oklch(64% 0.22 160deg));\n  --green-975: color-mix(in lab, var(--black) 88%, oklch(64% 0.22 160deg));\n  --teal-025: color-mix(in lab, var(--white) 94%, oklch(68% 0.22 190deg));\n  --teal-050: color-mix(in lab, var(--white) 90%, oklch(68% 0.22 190deg));\n  --teal-100: color-mix(in lab, var(--white) 80%, oklch(68% 0.22 190deg));\n  --teal-200: color-mix(in lab, var(--white) 60%, oklch(68% 0.22 190deg));\n  --teal-300: color-mix(in lab, var(--white) 40%, oklch(68% 0.22 190deg));\n  --teal-400: color-mix(in lab, var(--white) 20%, oklch(68% 0.22 190deg));\n  --teal-500: oklch(68% 0.22 190deg);\n  --teal-600: color-mix(in lab, var(--black) 16%, oklch(68% 0.22 190deg));\n  --teal-700: color-mix(in lab, var(--black) 32%, oklch(68% 0.22 190deg));\n  --teal-800: color-mix(in lab, var(--black) 48%, oklch(68% 0.22 190deg));\n  --teal-900: color-mix(in lab, var(--black) 64%, oklch(68% 0.22 190deg));\n  --teal-950: color-mix(in lab, var(--black) 76%, oklch(68% 0.22 190deg));\n  --teal-975: color-mix(in lab, var(--black) 88%, oklch(68% 0.22 190deg));\n  --cyan-025: color-mix(in lab, var(--white) 94%, oklch(69% 0.22 220deg));\n  --cyan-050: color-mix(in lab, var(--white) 90%, oklch(69% 0.22 220deg));\n  --cyan-100: color-mix(in lab, var(--white) 80%, oklch(69% 0.22 220deg));\n  --cyan-200: color-mix(in lab, var(--white) 60%, oklch(69% 0.22 220deg));\n  --cyan-300: color-mix(in lab, var(--white) 40%, oklch(69% 0.22 220deg));\n  --cyan-400: color-mix(in lab, var(--white) 20%, oklch(69% 0.22 220deg));\n  --cyan-500: oklch(69% 0.22 220deg);\n  --cyan-600: color-mix(in lab, var(--black) 16%, oklch(69% 0.22 220deg));\n  --cyan-700: color-mix(in lab, var(--black) 32%, oklch(69% 0.22 220deg));\n  --cyan-800: color-mix(in lab, var(--black) 48%, oklch(69% 0.22 220deg));\n  --cyan-900: color-mix(in lab, var(--black) 64%, oklch(69% 0.22 220deg));\n  --cyan-950: color-mix(in lab, var(--black) 76%, oklch(69% 0.22 220deg));\n  --cyan-975: color-mix(in lab, var(--black) 88%, oklch(69% 0.22 220deg));\n  --brown-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.12 54deg));\n  --brown-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.12 54deg));\n  --brown-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.12 54deg));\n  --brown-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.12 54deg));\n  --brown-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.12 54deg));\n  --brown-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.12 54deg));\n  --brown-500: oklch(60% 0.12 54deg);\n  --brown-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.12 54deg));\n  --brown-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.12 54deg));\n  --brown-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.12 54deg));\n  --brown-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.12 54deg));\n  --brown-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.12 54deg));\n  --brown-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.12 54deg));\n  --gray-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.02 245deg));\n  --gray-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.02 245deg));\n  --gray-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.02 245deg));\n  --gray-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.02 245deg));\n  --gray-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.02 245deg));\n  --gray-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.02 245deg));\n  --gray-500: oklch(60% 0.02 245deg);\n  --gray-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.02 245deg));\n  --gray-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.02 245deg));\n  --gray-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.02 245deg));\n  --gray-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.02 245deg));\n  --gray-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.02 245deg));\n  --gray-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.02 245deg));\n  --pewter-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.01 290deg));\n  --pewter-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.01 290deg));\n  --pewter-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.01 290deg));\n  --pewter-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.01 290deg));\n  --pewter-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.01 290deg));\n  --pewter-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.01 290deg));\n  --pewter-500: oklch(65% 0.01 290deg);\n  --pewter-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.01 290deg));\n  --pewter-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.01 290deg));\n  --pewter-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.01 290deg));\n  --pewter-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.01 290deg));\n  --pewter-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.01 290deg));\n  --pewter-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.01 290deg));\n}\n\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n:root {\n  --black: #000;\n  --white: #fff;\n  --gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent));\n  --font-weight-lighter: lighter;\n  --font-weight-light: 300;\n  --font-weight-normal: 400;\n  --font-weight-medium: 500;\n  --font-weight-semibold: 600;\n  --font-weight-bold: 700;\n  --font-weight-bolder: bolder;\n  --body-font-family: system-ui;\n  --body-font-size: var(--font-size-base);\n  --body-font-weight: 400;\n  --body-line-height: 1.5;\n  --heading-color: inherit;\n  --hr-border-color: var(--border-color);\n  --link-color: light-dark(var(--primary-base), var(--primary-text));\n  --link-decoration: underline;\n  --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000);\n  --font-mono: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;\n  --code-font-size: 95%;\n  --code-color: var(--fg-2);\n  --border-width: 1px;\n  --border-style: solid;\n  --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700));\n  --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent);\n  --border-radius: 0.5rem;\n  --border-radius-xs: 0.375rem;\n  --border-radius-sm: 0.5rem;\n  --border-radius-lg: 0.75rem;\n  --border-radius-xl: 1rem;\n  --border-radius-2xl: 2rem;\n  --border-radius-pill: 50rem;\n  --box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  --box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n  --box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n  --box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n  --spacer: 1rem;\n  --focus-ring-width: 3px;\n  --focus-ring-offset: 1px;\n  --focus-ring-color: var(--primary-focus-ring);\n  --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color);\n  --control-checked-bg: var(--primary-base);\n  --control-checked-border-color: var(--control-checked-bg);\n  --control-active-bg: var(--primary-base);\n  --control-active-border-color: var(--control-active-bg);\n  --control-disabled-bg: var(--bg-3);\n  --control-disabled-opacity: 0.65;\n  --btn-input-fg: var(--fg-body);\n  --btn-input-bg: var(--bg-body);\n  --btn-input-min-height: 2.375rem;\n  --btn-input-padding-y: 0.375rem;\n  --btn-input-padding-x: 0.75rem;\n  --btn-input-font-size: var(--font-size-base);\n  --btn-input-line-height: var(--line-height-base);\n  --btn-input-border-radius: var(--border-radius);\n  --btn-input-xs-min-height: 1.5rem;\n  --btn-input-xs-padding-y: 0.125rem;\n  --btn-input-xs-padding-x: 0.5rem;\n  --btn-input-xs-font-size: var(--font-size-xs);\n  --btn-input-xs-line-height: 1.125;\n  --btn-input-xs-border-radius: var(--border-radius-xs);\n  --btn-input-sm-min-height: 2rem;\n  --btn-input-sm-padding-y: 0.25rem;\n  --btn-input-sm-padding-x: 0.625rem;\n  --btn-input-sm-font-size: var(--font-size-sm);\n  --btn-input-sm-line-height: var(--line-height-sm);\n  --btn-input-sm-border-radius: var(--border-radius-sm);\n  --btn-input-lg-min-height: 2.75rem;\n  --btn-input-lg-padding-y: 0.5rem;\n  --btn-input-lg-padding-x: 1rem;\n  --btn-input-lg-font-size: var(--font-size-md);\n  --btn-input-lg-line-height: var(--line-height-md);\n  --btn-input-lg-border-radius: var(--border-radius-lg);\n  --form-valid-color: var(--success-text);\n  --form-valid-border-color: var(--success-text);\n  --form-invalid-color: var(--danger-text);\n  --form-invalid-border-color: var(--danger-text);\n  --font-size-xs: 0.75rem;\n  --line-height-xs: 1.25;\n  --font-size-sm: 0.875rem;\n  --line-height-sm: 1.5;\n  --font-size-md: 1rem;\n  --line-height-md: 1.5;\n  --font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  --line-height-lg: 1.5;\n  --font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  --line-height-xl: 1.4285714286;\n  --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  --line-height-2xl: 1.3333333333;\n  --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  --line-height-3xl: 1.2;\n  --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  --line-height-4xl: 1.1;\n  --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);\n  --line-height-5xl: 1.1;\n  --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  --line-height-6xl: 1;\n  --primary-base: var(--blue-500);\n  --primary-text: light-dark(var(--blue-600), var(--blue-400));\n  --primary-text-emphasis: light-dark(var(--blue-800), var(--blue-200));\n  --primary-bg: var(--blue-500);\n  --primary-bg-subtle: light-dark(var(--blue-100), var(--blue-900));\n  --primary-bg-muted: light-dark(var(--blue-200), var(--blue-800));\n  --primary-border: light-dark(var(--blue-300), var(--blue-600));\n  --primary-focus-ring: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  --primary-contrast: var(--white);\n  --accent-base: var(--indigo-500);\n  --accent-text: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  --accent-text-emphasis: light-dark(var(--indigo-800), var(--indigo-300));\n  --accent-bg: var(--indigo-500);\n  --accent-bg-subtle: light-dark(var(--indigo-100), var(--indigo-900));\n  --accent-bg-muted: light-dark(var(--indigo-200), var(--indigo-800));\n  --accent-border: light-dark(var(--indigo-300), var(--indigo-600));\n  --accent-focus-ring: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  --accent-contrast: var(--white);\n  --success-base: var(--green-500);\n  --success-text: light-dark(var(--green-600), var(--green-400));\n  --success-text-emphasis: light-dark(var(--green-800), var(--green-300));\n  --success-bg: var(--green-500);\n  --success-bg-subtle: light-dark(var(--green-100), var(--green-900));\n  --success-bg-muted: light-dark(var(--green-200), var(--green-800));\n  --success-border: light-dark(var(--green-300), var(--green-600));\n  --success-focus-ring: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  --success-contrast: var(--white);\n  --danger-base: var(--red-500);\n  --danger-text: light-dark(var(--red-600), var(--red-400));\n  --danger-text-emphasis: light-dark(var(--red-800), var(--red-300));\n  --danger-bg: var(--red-500);\n  --danger-bg-subtle: light-dark(var(--red-100), var(--red-900));\n  --danger-bg-muted: light-dark(var(--red-200), var(--red-800));\n  --danger-border: light-dark(var(--red-300), var(--red-600));\n  --danger-focus-ring: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  --danger-contrast: var(--white);\n  --warning-base: var(--yellow-500);\n  --warning-text: light-dark(var(--yellow-700), var(--yellow-400));\n  --warning-text-emphasis: light-dark(var(--yellow-800), var(--yellow-300));\n  --warning-bg: var(--yellow-500);\n  --warning-bg-subtle: light-dark(var(--yellow-100), var(--yellow-900));\n  --warning-bg-muted: light-dark(var(--yellow-200), var(--yellow-800));\n  --warning-border: light-dark(var(--yellow-300), var(--yellow-600));\n  --warning-focus-ring: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  --warning-contrast: var(--gray-900);\n  --info-base: var(--cyan-500);\n  --info-text: light-dark(var(--cyan-600), var(--cyan-400));\n  --info-text-emphasis: light-dark(var(--cyan-800), var(--cyan-300));\n  --info-bg: var(--cyan-500);\n  --info-bg-subtle: light-dark(var(--cyan-100), var(--cyan-900));\n  --info-bg-muted: light-dark(var(--cyan-200), var(--cyan-800));\n  --info-border: light-dark(var(--cyan-300), var(--cyan-600));\n  --info-focus-ring: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  --info-contrast: var(--gray-900);\n  --inverse-base: var(--gray-900);\n  --inverse-text: light-dark(var(--gray-900), var(--gray-200));\n  --inverse-text-emphasis: light-dark(var(--gray-975), var(--white));\n  --inverse-bg: light-dark(var(--gray-900), var(--gray-025));\n  --inverse-bg-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --inverse-bg-muted: light-dark(var(--gray-200), var(--gray-300));\n  --inverse-border: light-dark(var(--gray-400), var(--gray-100));\n  --inverse-focus-ring: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  --inverse-contrast: light-dark(var(--white), var(--gray-900));\n  --secondary-base: var(--gray-200);\n  --secondary-text: light-dark(var(--gray-600), var(--gray-400));\n  --secondary-text-emphasis: light-dark(var(--gray-800), var(--gray-200));\n  --secondary-bg: light-dark(var(--gray-100), var(--gray-600));\n  --secondary-bg-subtle: light-dark(var(--gray-050), var(--gray-800));\n  --secondary-bg-muted: light-dark(var(--gray-100), var(--gray-700));\n  --secondary-border: light-dark(var(--gray-300), var(--gray-600));\n  --secondary-focus-ring: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  --secondary-contrast: light-dark(var(--gray-900), var(--white));\n  --bg-body: light-dark(var(--white), var(--gray-975));\n  --bg-1: light-dark(var(--gray-025), var(--gray-950));\n  --bg-2: light-dark(var(--gray-050), var(--gray-900));\n  --bg-3: light-dark(var(--gray-100), var(--gray-800));\n  --bg-4: light-dark(var(--gray-200), var(--gray-700));\n  --bg-white: var(--white);\n  --bg-black: var(--black);\n  --bg-transparent: transparent;\n  --bg-inherit: inherit;\n  --fg-body: light-dark(var(--gray-900), var(--gray-050));\n  --fg-1: light-dark(var(--gray-800), var(--gray-200));\n  --fg-2: light-dark(var(--gray-700), var(--gray-300));\n  --fg-3: light-dark(var(--gray-600), var(--gray-500));\n  --fg-4: light-dark(var(--gray-500), var(--gray-600));\n  --fg-white: var(--white);\n  --fg-black: var(--black);\n  --fg-inherit: inherit;\n  --border-bg: var(--bg-body);\n  --border-body: light-dark(var(--gray-300), var(--gray-800));\n  --border-muted: light-dark(var(--gray-200), var(--gray-800));\n  --border-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --border-emphasized: light-dark(var(--gray-400), var(--gray-600));\n  --border-white: var(--white);\n  --border-black: var(--black);\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 1024px;\n  --breakpoint-xl: 1280px;\n  --breakpoint-2xl: 1536px;\n  color-scheme: light dark;\n}\n\n[data-bs-theme=dark] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=light] {\n  color-scheme: light;\n}\n\n@layer reboot {\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n  :root {\n    accent-color: var(--primary-base);\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    :root {\n      scroll-behavior: smooth;\n    }\n  }\n  body {\n    margin: 0;\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body);\n    -webkit-text-size-adjust: 100%;\n    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  }\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n  h6,\n  .h6, h5,\n  .h5, h4,\n  .h4, h3,\n  .h3, h2,\n  .h2, h1,\n  .h1 {\n    margin-top: 0;\n    margin-bottom: 0.5rem;\n    font-weight: 500;\n    line-height: 1.2;\n    color: var(--heading-color);\n  }\n  h1,\n  .h1 {\n    font-size: var(--font-size-3xl);\n  }\n  h2,\n  .h2 {\n    font-size: var(--font-size-2xl);\n  }\n  h3,\n  .h3 {\n    font-size: var(--font-size-xl);\n  }\n  h4,\n  .h4 {\n    font-size: var(--font-size-lg);\n  }\n  h5,\n  .h5 {\n    font-size: var(--font-size-md);\n  }\n  h6,\n  .h6 {\n    font-size: var(--font-size-sm);\n  }\n  p {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  abbr[title] {\n    text-decoration: underline dotted;\n    cursor: help;\n    text-decoration-skip-ink: none;\n  }\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n  dt {\n    font-weight: 700;\n  }\n  dd {\n    margin-inline-start: 0;\n    margin-bottom: 0.5rem;\n  }\n  blockquote {\n    margin: 0 0 1rem;\n  }\n  blockquote > * {\n    margin-block: 0;\n  }\n  b,\n  strong {\n    font-weight: bolder;\n  }\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n  mark,\n  .mark {\n    --mark-padding: 0.1875em;\n    --mark-color: var(--fg-body);\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900));\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, 0.75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n  sub {\n    bottom: -0.25em;\n  }\n  sup {\n    top: -0.5em;\n  }\n  a {\n    color: var(--theme-text, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: 0.2em;\n  }\n  a:hover {\n    color: var(--theme-text-emphasis, var(--link-hover-color));\n    text-decoration: var(--link-hover-decoration, var(--link-decoration));\n  }\n  a:not([href]):not([class]), a:not([href]):not([class]):hover {\n    color: inherit;\n    text-decoration: none;\n  }\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em;\n  }\n  pre {\n    display: block;\n    margin-top: 0;\n    margin-bottom: 1rem;\n    overflow: auto;\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n  }\n  pre code {\n    font-size: inherit;\n    color: inherit;\n    word-break: normal;\n  }\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n  }\n  a > code {\n    color: inherit;\n  }\n  kbd {\n    --kbd-padding-y: 0.125rem;\n    --kbd-padding-x: 0.25rem;\n    --kbd-font-size: var(--font-size-xs);\n    --kbd-color: var(--bg-body);\n    --kbd-bg: var(--fg-2);\n    --kbd-border-radius: var(--border-radius-sm);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    border-radius: var(--kbd-border-radius);\n  }\n  kbd kbd {\n    padding: 0;\n    font-size: 1em;\n    font-weight: inherit;\n  }\n  figure {\n    margin: 0 0 1rem;\n  }\n  img,\n  svg {\n    vertical-align: middle;\n  }\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n  caption {\n    padding-block: 0.5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n  th {\n    text-align: inherit;\n    text-align: -webkit-match-parent;\n  }\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n  label {\n    display: inline-block;\n  }\n  button {\n    border-radius: 0;\n  }\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0;\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n  button,\n  select {\n    text-transform: none;\n  }\n  [role=button] {\n    cursor: pointer;\n  }\n  select {\n    word-wrap: normal;\n  }\n  select:disabled {\n    opacity: 1;\n  }\n  [list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n  button,\n  [type=button],\n  [type=reset],\n  [type=submit] {\n    -webkit-appearance: button;\n  }\n  button:not(:disabled),\n  [type=button]:not(:disabled),\n  [type=reset]:not(:disabled),\n  [type=submit]:not(:disabled) {\n    cursor: pointer;\n  }\n  ::-moz-focus-inner {\n    padding: 0;\n    border-style: none;\n  }\n  textarea {\n    resize: vertical;\n  }\n  fieldset {\n    min-width: 0;\n    padding: 0;\n    margin: 0;\n    border: 0;\n  }\n  legend {\n    float: inline-start;\n    width: 100%;\n    padding: 0;\n    margin-bottom: 0.5rem;\n    font-size: 1.5rem;\n    line-height: inherit;\n  }\n  legend + * {\n    clear: inline-start;\n  }\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-ampm-field,\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n  ::-webkit-inner-spin-button {\n    height: auto;\n  }\n  [type=search] {\n    -webkit-appearance: textfield;\n    outline-offset: -2px;\n  }\n  [type=search]::-webkit-search-cancel-button {\n    cursor: pointer;\n    filter: grayscale(1);\n  }\n  [type=tel],\n  [type=url],\n  [type=email],\n  [type=number] {\n    direction: ltr;\n  }\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n  ::file-selector-button {\n    font: inherit;\n    -webkit-appearance: button;\n  }\n  output {\n    display: inline-block;\n  }\n  iframe {\n    border: 0;\n  }\n  summary {\n    display: list-item;\n    cursor: pointer;\n  }\n  progress {\n    vertical-align: baseline;\n  }\n  [hidden] {\n    display: none !important;\n  }\n}\n@layer content {\n  .list-unstyled {\n    padding-inline-start: 0;\n    list-style: none;\n  }\n  .list-inline {\n    padding-inline-start: 0;\n    list-style: none;\n  }\n  .list-inline-item {\n    display: inline-block;\n  }\n  .list-inline-item:not(:last-child) {\n    margin-inline-end: var(--list-inline-padding, var(--spacer)/2);\n  }\n  .initialism {\n    font-size: var(--initialism-font-size, var(--font-size-xs));\n    text-transform: uppercase;\n  }\n  .blockquote {\n    --blockquote-gap: calc(var(--spacer) / 2);\n    --blockquote-padding-x: var(--spacer);\n    --blockquote-margin-y: 1rem;\n    --blockquote-font-size: var(--font-size-md);\n    --blockquote-border-width: 0.25rem;\n    --blockquote-border-color: var(--border-color);\n    --blockquote-footer-font-size: var(--font-size-sm);\n    --blockquote-footer-color: var(--fg-3);\n    display: flex;\n    flex-direction: column;\n    gap: var(--blockquote-gap);\n    padding-inline-start: var(--blockquote-padding-x);\n    margin-bottom: var(--blockquote-margin-y);\n    font-size: var(--blockquote-font-size);\n    border-inline-start: var(--blockquote-border-width) solid var(--blockquote-border-color);\n  }\n  .blockquote > * {\n    margin-bottom: 0;\n  }\n  figure.blockquote blockquote {\n    margin-bottom: 0;\n  }\n  .blockquote-footer {\n    font-size: var(--blockquote-footer-font-size);\n    color: var(--blockquote-footer-color);\n  }\n  .blockquote-footer::before {\n    content: \"— \";\n  }\n}\n@layer content {\n  .table {\n    --table-cell-padding-y: 0.5rem;\n    --table-cell-padding-x: 0.5rem;\n    --table-cell-vertical-align: top;\n    --table-color: var(--fg-body);\n    --table-bg: var(--bg-body);\n    --table-accent-bg: transparent;\n    --table-border-width: var(--border-width);\n    --table-border-color: var(--border-color);\n    --table-group-separator-color: currentcolor;\n    --table-striped-color: var(--table-color);\n    --table-striped-bg-factor: 0.05;\n    --table-striped-bg: color-mix(in srgb, var(--table-color) var(--table-striped-bg-factor), transparent);\n    --table-active-color: var(--table-color);\n    --table-active-bg-factor: 0.1;\n    --table-active-bg: color-mix(in srgb, var(--table-color) var(--table-active-bg-factor), transparent);\n    --table-hover-color: var(--table-color);\n    --table-hover-bg-factor: 0.075;\n    --table-hover-bg: color-mix(in srgb, var(--table-color) var(--table-hover-bg-factor), transparent);\n    --table-color-type: initial;\n    --table-bg-type: initial;\n    --table-color-state: initial;\n    --table-bg-state: initial;\n    width: 100%;\n    margin-bottom: 1rem;\n    vertical-align: var(--table-cell-vertical-align);\n    border-color: var(--theme-border, var(--table-border-color));\n  }\n  .table > :not(caption) > * > * {\n    padding: var(--table-cell-padding-y) var(--table-cell-padding-x);\n    color: var(--table-color-state, var(--table-color-type, var(--theme-text, var(--table-color))));\n    background-color: var(--theme-bg-subtle, var(--table-bg));\n    border-block-end-width: var(--table-border-width);\n    box-shadow: inset 0 0 0 9999px var(--table-bg-state, var(--table-bg-type, var(--theme-bg-subtle, var(--table-accent-bg))));\n  }\n  .table > tbody {\n    vertical-align: inherit;\n  }\n  .table > thead {\n    vertical-align: bottom;\n  }\n  .table-group-divider {\n    border-block-start: calc(var(--table-border-width) * 2) solid var(--table-group-separator-color);\n  }\n  .caption-top {\n    caption-side: top;\n  }\n  .table-sm > :not(caption) > * > * {\n    --table-cell-padding-y: .25rem;\n    --table-cell-padding-x: .25rem;\n  }\n  .table-bordered > :not(caption) > * {\n    border-width: var(--table-border-width) 0;\n  }\n  .table-bordered > :not(caption) > * > * {\n    border-width: 0 var(--table-border-width);\n  }\n  .table-borderless > :not(caption) > * > * {\n    border-block-end-width: 0;\n  }\n  .table-borderless > :not(:first-child) {\n    border-block-start-width: 0;\n  }\n  .table-striped > tbody > tr:nth-of-type(odd) > * {\n    --table-color-type: var(--theme-text, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-striped-bg-factor), transparent);\n  }\n  .table-striped-columns > :not(caption) > tr > :nth-child(even) {\n    --table-color-type: var(--theme-text, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-striped-bg-factor), transparent);\n  }\n  .table-active {\n    --table-color-state: var(--theme-text, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-active-bg-factor), transparent);\n  }\n  .table-hover > tbody > tr:hover > * {\n    --table-color-state: var(--theme-text, var(--table-hover-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-hover-bg-factor), transparent);\n  }\n  .table-responsive {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n  @media (width < 576px) {\n    .table-responsive-sm {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  @media (width < 768px) {\n    .table-responsive-md {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  @media (width < 1024px) {\n    .table-responsive-lg {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  @media (width < 1280px) {\n    .table-responsive-xl {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  @media (width < 1536px) {\n    .table-responsive-2xl {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n}\n@layer content {\n  .img-fluid {\n    max-width: 100%;\n    height: auto;\n  }\n  .img-thumbnail {\n    --thumbnail-padding: 0.25rem;\n    --thumbnail-bg: var(--bg-body);\n    --thumbnail-border-width: var(--border-width);\n    --thumbnail-border-color: var(--border-color);\n    --thumbnail-border-radius: var(--border-radius);\n    --thumbnail-box-shadow: var(--box-shadow-sm);\n    padding: var(--thumbnail-padding);\n    background-color: var(--thumbnail-bg);\n    border: var(--thumbnail-border-width) solid var(--thumbnail-border-color);\n    border-radius: var(--thumbnail-border-radius);\n    box-shadow: var(--thumbnail-box-shadow);\n    max-width: 100%;\n    height: auto;\n  }\n  .figure {\n    --figure-gap: calc(var(--spacer) * 0.5);\n    --figure-caption-font-size: var(--font-size-sm);\n    --figure-caption-color: var(--fg-3);\n    display: flex;\n    flex-direction: column;\n    gap: var(--figure-gap);\n  }\n  .figure-caption {\n    font-size: var(--figure-caption-font-size);\n    color: var(--figure-caption-color);\n  }\n}\n@layer content {\n  .prose {\n    --content-font-size: 1rem;\n    --content-gap: 20px;\n    --heading-color: light-dark(var(--gray-900), var(--white));\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--content-gap);\n    max-width: 1000px;\n    margin-inline: auto;\n    font-size: var(--content-font-size);\n    line-height: 1.5;\n  }\n  @media (width >= 1024px) {\n    .prose {\n      --content-font-size: var(--font-size-md);\n      --content-gap: 24px;\n    }\n  }\n  .prose :where(p, ul, ol, dl, pre, table, blockquote):not(:where(.not-prose, .not-prose *)) {\n    margin-block: 0;\n  }\n  .prose :where(ul, ol):not([class]):not(:where(.not-prose, .not-prose *)) li:not(:last-child) {\n    margin-bottom: calc(var(--content-gap) / 4);\n  }\n  .prose :where(li ul, li ol):not(:where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) / 4);\n  }\n  .prose :where(hr):not(:where(.not-prose, .not-prose *)) {\n    margin: calc(var(--content-gap) * 1.5) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n  .prose :where(h1, h2, h3, h4, h5, h6):not([class]):not(:where(.not-prose, .not-prose *)) {\n    margin-top: 0;\n    margin-bottom: calc(var(--content-gap) / -2);\n    font-weight: 500;\n    line-height: 1.25;\n  }\n  .prose :where(h1, h2, h3, h4, h5, h6):not([class]):not(:where(.not-prose, .not-prose *)) code {\n    font-weight: 600;\n    color: inherit;\n  }\n  .prose :where(h1, h2):not(:first-child):not(:where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) * 0.75);\n  }\n  .prose :where(h3, h4, h5, h6):not(:first-child):not(:where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) * 0.5);\n  }\n  .prose :where(h1):not(:where(.not-prose, .not-prose *)) {\n    font-size: 2.25em;\n    line-height: 1.1;\n  }\n  .prose :where(h2):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.75em;\n  }\n  .prose :where(h3):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.5em;\n  }\n  .prose :where(h4):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.25em;\n  }\n  .prose :where(h5):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.125em;\n  }\n  .prose :where(h6):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1em;\n  }\n  .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n    color: var(--link-color);\n    text-decoration: underline;\n    text-decoration-color: color-mix(in srgb, var(--link-color) 25%, transparent);\n    text-underline-offset: 4px;\n    transition: 0.1s text-decoration-color ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n      transition: none;\n    }\n  }\n  .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)):hover {\n    text-decoration-color: var(--link-hover-color);\n  }\n  .prose :where(img):not(:where(.not-prose, .not-prose *)) {\n    max-width: 100%;\n  }\n  .prose :where(blockquote):not(:where(.not-prose, .not-prose *)) {\n    padding-inline-start: calc(var(--content-gap) / 2);\n    margin: 0;\n    border-inline-start: 4px solid var(--border-color);\n  }\n  .prose :where(table):not(:where(.not-prose, .not-prose *)) {\n    width: 100%;\n    border-spacing: 0;\n    border-collapse: collapse;\n  }\n  .prose :where(table:not([class])):not(:where(.not-prose, .not-prose *)) td,\n  .prose :where(table:not([class])):not(:where(.not-prose, .not-prose *)) th {\n    padding: 6px 12px;\n    text-align: inherit;\n    border: 1px solid var(--border-color);\n  }\n  .prose :where(dt):not(:where(.not-prose, .not-prose *)) {\n    font-weight: 500;\n  }\n  .prose :where(video, img):not(:where(.not-prose, .not-prose *)) {\n    max-width: 100%;\n  }\n}\n@layer layout {\n  .container,\n  .container-fluid,\n  .container-2xl,\n  .container-xl,\n  .container-lg,\n  .container-md,\n  .container-sm {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-inline: auto;\n  }\n  @media (width >= 576px) {\n    .container-sm, .container {\n      max-width: 540px;\n    }\n  }\n  @media (width >= 768px) {\n    .container-md, .container-sm, .container {\n      max-width: 720px;\n    }\n  }\n  @media (width >= 1024px) {\n    .container-lg, .container-md, .container-sm, .container {\n      max-width: 960px;\n    }\n  }\n  @media (width >= 1280px) {\n    .container-xl, .container-lg, .container-md, .container-sm, .container {\n      max-width: 1200px;\n    }\n  }\n  @media (width >= 1536px) {\n    .container-2xl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n      max-width: 1440px;\n    }\n  }\n}\n@layer layout {\n  .row {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    display: flex;\n    flex-wrap: wrap;\n    margin-inline: calc(-0.5 * var(--gutter-x));\n    margin-top: calc(-1 * var(--gutter-y));\n  }\n  .row > * {\n    flex-shrink: 0;\n    width: 100%;\n    max-width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-top: var(--gutter-y);\n  }\n  .col {\n    flex: 1 0 0;\n  }\n  .row-cols-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .row-cols-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .row-cols-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .row-cols-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .row-cols-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .row-cols-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n  .row-cols-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .col-1 {\n    flex: 0 0 auto;\n    width: 8.3333333333%;\n  }\n  .col-2 {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .col-4 {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .col-5 {\n    flex: 0 0 auto;\n    width: 41.6666666667%;\n  }\n  .col-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .col-7 {\n    flex: 0 0 auto;\n    width: 58.3333333333%;\n  }\n  .col-8 {\n    flex: 0 0 auto;\n    width: 66.6666666667%;\n  }\n  .col-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n  .col-10 {\n    flex: 0 0 auto;\n    width: 83.3333333333%;\n  }\n  .col-11 {\n    flex: 0 0 auto;\n    width: 91.6666666667%;\n  }\n  .col-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .offset-1 {\n    margin-inline-start: 8.3333333333%;\n  }\n  .offset-2 {\n    margin-inline-start: 16.6666666667%;\n  }\n  .offset-3 {\n    margin-inline-start: 25%;\n  }\n  .offset-4 {\n    margin-inline-start: 33.3333333333%;\n  }\n  .offset-5 {\n    margin-inline-start: 41.6666666667%;\n  }\n  .offset-6 {\n    margin-inline-start: 50%;\n  }\n  .offset-7 {\n    margin-inline-start: 58.3333333333%;\n  }\n  .offset-8 {\n    margin-inline-start: 66.6666666667%;\n  }\n  .offset-9 {\n    margin-inline-start: 75%;\n  }\n  .offset-10 {\n    margin-inline-start: 83.3333333333%;\n  }\n  .offset-11 {\n    margin-inline-start: 91.6666666667%;\n  }\n  .g-0,\n  .gx-0 {\n    --gutter-x: 0;\n  }\n  .g-0,\n  .gy-0 {\n    --gutter-y: 0;\n  }\n  .g-1,\n  .gx-1 {\n    --gutter-x: 0.25rem;\n  }\n  .g-1,\n  .gy-1 {\n    --gutter-y: 0.25rem;\n  }\n  .g-2,\n  .gx-2 {\n    --gutter-x: 0.5rem;\n  }\n  .g-2,\n  .gy-2 {\n    --gutter-y: 0.5rem;\n  }\n  .g-3,\n  .gx-3 {\n    --gutter-x: 1rem;\n  }\n  .g-3,\n  .gy-3 {\n    --gutter-y: 1rem;\n  }\n  .g-4,\n  .gx-4 {\n    --gutter-x: 1.5rem;\n  }\n  .g-4,\n  .gy-4 {\n    --gutter-y: 1.5rem;\n  }\n  .g-5,\n  .gx-5 {\n    --gutter-x: 3rem;\n  }\n  .g-5,\n  .gy-5 {\n    --gutter-y: 3rem;\n  }\n  @media (width >= 576px) {\n    .col-sm {\n      flex: 1 0 0;\n    }\n    .row-cols-sm-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-sm-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-sm-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-sm-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-sm-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-sm-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-sm-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-sm-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-sm-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-sm-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-sm-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-sm-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-sm-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-sm-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-sm-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-sm-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-sm-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-sm-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-sm-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-sm-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-sm-0 {\n      margin-inline-start: 0;\n    }\n    .offset-sm-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-sm-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-sm-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-sm-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-sm-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-sm-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-sm-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-sm-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-sm-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-sm-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-sm-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-sm-0,\n    .gx-sm-0 {\n      --gutter-x: 0;\n    }\n    .g-sm-0,\n    .gy-sm-0 {\n      --gutter-y: 0;\n    }\n    .g-sm-1,\n    .gx-sm-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-sm-1,\n    .gy-sm-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-sm-2,\n    .gx-sm-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-sm-2,\n    .gy-sm-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-sm-3,\n    .gx-sm-3 {\n      --gutter-x: 1rem;\n    }\n    .g-sm-3,\n    .gy-sm-3 {\n      --gutter-y: 1rem;\n    }\n    .g-sm-4,\n    .gx-sm-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-sm-4,\n    .gy-sm-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-sm-5,\n    .gx-sm-5 {\n      --gutter-x: 3rem;\n    }\n    .g-sm-5,\n    .gy-sm-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 768px) {\n    .col-md {\n      flex: 1 0 0;\n    }\n    .row-cols-md-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-md-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-md-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-md-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-md-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-md-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-md-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-md-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-md-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-md-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-md-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-md-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-md-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-md-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-md-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-md-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-md-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-md-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-md-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-md-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-md-0 {\n      margin-inline-start: 0;\n    }\n    .offset-md-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-md-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-md-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-md-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-md-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-md-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-md-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-md-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-md-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-md-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-md-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-md-0,\n    .gx-md-0 {\n      --gutter-x: 0;\n    }\n    .g-md-0,\n    .gy-md-0 {\n      --gutter-y: 0;\n    }\n    .g-md-1,\n    .gx-md-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-md-1,\n    .gy-md-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-md-2,\n    .gx-md-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-md-2,\n    .gy-md-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-md-3,\n    .gx-md-3 {\n      --gutter-x: 1rem;\n    }\n    .g-md-3,\n    .gy-md-3 {\n      --gutter-y: 1rem;\n    }\n    .g-md-4,\n    .gx-md-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-md-4,\n    .gy-md-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-md-5,\n    .gx-md-5 {\n      --gutter-x: 3rem;\n    }\n    .g-md-5,\n    .gy-md-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1024px) {\n    .col-lg {\n      flex: 1 0 0;\n    }\n    .row-cols-lg-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-lg-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-lg-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-lg-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-lg-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-lg-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-lg-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-lg-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-lg-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-lg-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-lg-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-lg-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-lg-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-lg-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-lg-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-lg-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-lg-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-lg-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-lg-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-lg-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-lg-0 {\n      margin-inline-start: 0;\n    }\n    .offset-lg-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-lg-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-lg-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-lg-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-lg-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-lg-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-lg-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-lg-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-lg-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-lg-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-lg-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-lg-0,\n    .gx-lg-0 {\n      --gutter-x: 0;\n    }\n    .g-lg-0,\n    .gy-lg-0 {\n      --gutter-y: 0;\n    }\n    .g-lg-1,\n    .gx-lg-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-lg-1,\n    .gy-lg-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-lg-2,\n    .gx-lg-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-lg-2,\n    .gy-lg-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-lg-3,\n    .gx-lg-3 {\n      --gutter-x: 1rem;\n    }\n    .g-lg-3,\n    .gy-lg-3 {\n      --gutter-y: 1rem;\n    }\n    .g-lg-4,\n    .gx-lg-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-lg-4,\n    .gy-lg-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-lg-5,\n    .gx-lg-5 {\n      --gutter-x: 3rem;\n    }\n    .g-lg-5,\n    .gy-lg-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1280px) {\n    .col-xl {\n      flex: 1 0 0;\n    }\n    .row-cols-xl-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-xl-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-xl-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-xl-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-xl-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-xl-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-xl-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-xl-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-xl-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-xl-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-xl-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-xl-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-xl-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-xl-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-xl-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-xl-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-xl-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-xl-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-xl-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-xl-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-xl-0 {\n      margin-inline-start: 0;\n    }\n    .offset-xl-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-xl-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-xl-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-xl-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-xl-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-xl-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-xl-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-xl-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-xl-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-xl-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-xl-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-xl-0,\n    .gx-xl-0 {\n      --gutter-x: 0;\n    }\n    .g-xl-0,\n    .gy-xl-0 {\n      --gutter-y: 0;\n    }\n    .g-xl-1,\n    .gx-xl-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-xl-1,\n    .gy-xl-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-xl-2,\n    .gx-xl-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-xl-2,\n    .gy-xl-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-xl-3,\n    .gx-xl-3 {\n      --gutter-x: 1rem;\n    }\n    .g-xl-3,\n    .gy-xl-3 {\n      --gutter-y: 1rem;\n    }\n    .g-xl-4,\n    .gx-xl-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-xl-4,\n    .gy-xl-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-xl-5,\n    .gx-xl-5 {\n      --gutter-x: 3rem;\n    }\n    .g-xl-5,\n    .gy-xl-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1536px) {\n    .col-2xl {\n      flex: 1 0 0;\n    }\n    .row-cols-2xl-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-2xl-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-2xl-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-2xl-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-2xl-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-2xl-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-2xl-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-2xl-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-2xl-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-2xl-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-2xl-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-2xl-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-2xl-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-2xl-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-2xl-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-2xl-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-2xl-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-2xl-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-2xl-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-2xl-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-2xl-0 {\n      margin-inline-start: 0;\n    }\n    .offset-2xl-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-2xl-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-2xl-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-2xl-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-2xl-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-2xl-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-2xl-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-2xl-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-2xl-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-2xl-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-2xl-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-2xl-0,\n    .gx-2xl-0 {\n      --gutter-x: 0;\n    }\n    .g-2xl-0,\n    .gy-2xl-0 {\n      --gutter-y: 0;\n    }\n    .g-2xl-1,\n    .gx-2xl-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-2xl-1,\n    .gy-2xl-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-2xl-2,\n    .gx-2xl-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-2xl-2,\n    .gy-2xl-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-2xl-3,\n    .gx-2xl-3 {\n      --gutter-x: 1rem;\n    }\n    .g-2xl-3,\n    .gy-2xl-3 {\n      --gutter-y: 1rem;\n    }\n    .g-2xl-4,\n    .gx-2xl-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-2xl-4,\n    .gy-2xl-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-2xl-5,\n    .gx-2xl-5 {\n      --gutter-x: 3rem;\n    }\n    .g-2xl-5,\n    .gy-2xl-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  .grid {\n    --columns: 12;\n    --rows: 1;\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-rows: repeat(var(--rows), 1fr);\n    grid-template-columns: repeat(var(--columns), 1fr);\n    gap: var(--gap);\n  }\n  .g-col-1 {\n    grid-column: auto/span 1;\n  }\n  .g-col-2 {\n    grid-column: auto/span 2;\n  }\n  .g-col-3 {\n    grid-column: auto/span 3;\n  }\n  .g-col-4 {\n    grid-column: auto/span 4;\n  }\n  .g-col-5 {\n    grid-column: auto/span 5;\n  }\n  .g-col-6 {\n    grid-column: auto/span 6;\n  }\n  .g-col-7 {\n    grid-column: auto/span 7;\n  }\n  .g-col-8 {\n    grid-column: auto/span 8;\n  }\n  .g-col-9 {\n    grid-column: auto/span 9;\n  }\n  .g-col-10 {\n    grid-column: auto/span 10;\n  }\n  .g-col-11 {\n    grid-column: auto/span 11;\n  }\n  .g-col-12 {\n    grid-column: auto/span 12;\n  }\n  .g-start-1 {\n    grid-column-start: 1;\n  }\n  .g-start-2 {\n    grid-column-start: 2;\n  }\n  .g-start-3 {\n    grid-column-start: 3;\n  }\n  .g-start-4 {\n    grid-column-start: 4;\n  }\n  .g-start-5 {\n    grid-column-start: 5;\n  }\n  .g-start-6 {\n    grid-column-start: 6;\n  }\n  .g-start-7 {\n    grid-column-start: 7;\n  }\n  .g-start-8 {\n    grid-column-start: 8;\n  }\n  .g-start-9 {\n    grid-column-start: 9;\n  }\n  .g-start-10 {\n    grid-column-start: 10;\n  }\n  .g-start-11 {\n    grid-column-start: 11;\n  }\n  @media (width >= 576px) {\n    .g-col-sm-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-sm-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-sm-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-sm-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-sm-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-sm-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-sm-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-sm-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-sm-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-sm-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-sm-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-sm-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-sm-1 {\n      grid-column-start: 1;\n    }\n    .g-start-sm-2 {\n      grid-column-start: 2;\n    }\n    .g-start-sm-3 {\n      grid-column-start: 3;\n    }\n    .g-start-sm-4 {\n      grid-column-start: 4;\n    }\n    .g-start-sm-5 {\n      grid-column-start: 5;\n    }\n    .g-start-sm-6 {\n      grid-column-start: 6;\n    }\n    .g-start-sm-7 {\n      grid-column-start: 7;\n    }\n    .g-start-sm-8 {\n      grid-column-start: 8;\n    }\n    .g-start-sm-9 {\n      grid-column-start: 9;\n    }\n    .g-start-sm-10 {\n      grid-column-start: 10;\n    }\n    .g-start-sm-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 768px) {\n    .g-col-md-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-md-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-md-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-md-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-md-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-md-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-md-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-md-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-md-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-md-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-md-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-md-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-md-1 {\n      grid-column-start: 1;\n    }\n    .g-start-md-2 {\n      grid-column-start: 2;\n    }\n    .g-start-md-3 {\n      grid-column-start: 3;\n    }\n    .g-start-md-4 {\n      grid-column-start: 4;\n    }\n    .g-start-md-5 {\n      grid-column-start: 5;\n    }\n    .g-start-md-6 {\n      grid-column-start: 6;\n    }\n    .g-start-md-7 {\n      grid-column-start: 7;\n    }\n    .g-start-md-8 {\n      grid-column-start: 8;\n    }\n    .g-start-md-9 {\n      grid-column-start: 9;\n    }\n    .g-start-md-10 {\n      grid-column-start: 10;\n    }\n    .g-start-md-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1024px) {\n    .g-col-lg-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-lg-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-lg-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-lg-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-lg-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-lg-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-lg-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-lg-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-lg-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-lg-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-lg-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-lg-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-lg-1 {\n      grid-column-start: 1;\n    }\n    .g-start-lg-2 {\n      grid-column-start: 2;\n    }\n    .g-start-lg-3 {\n      grid-column-start: 3;\n    }\n    .g-start-lg-4 {\n      grid-column-start: 4;\n    }\n    .g-start-lg-5 {\n      grid-column-start: 5;\n    }\n    .g-start-lg-6 {\n      grid-column-start: 6;\n    }\n    .g-start-lg-7 {\n      grid-column-start: 7;\n    }\n    .g-start-lg-8 {\n      grid-column-start: 8;\n    }\n    .g-start-lg-9 {\n      grid-column-start: 9;\n    }\n    .g-start-lg-10 {\n      grid-column-start: 10;\n    }\n    .g-start-lg-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1280px) {\n    .g-col-xl-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-xl-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-xl-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-xl-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-xl-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-xl-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-xl-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-xl-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-xl-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-xl-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-xl-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-xl-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-xl-1 {\n      grid-column-start: 1;\n    }\n    .g-start-xl-2 {\n      grid-column-start: 2;\n    }\n    .g-start-xl-3 {\n      grid-column-start: 3;\n    }\n    .g-start-xl-4 {\n      grid-column-start: 4;\n    }\n    .g-start-xl-5 {\n      grid-column-start: 5;\n    }\n    .g-start-xl-6 {\n      grid-column-start: 6;\n    }\n    .g-start-xl-7 {\n      grid-column-start: 7;\n    }\n    .g-start-xl-8 {\n      grid-column-start: 8;\n    }\n    .g-start-xl-9 {\n      grid-column-start: 9;\n    }\n    .g-start-xl-10 {\n      grid-column-start: 10;\n    }\n    .g-start-xl-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1536px) {\n    .g-col-2xl-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-2xl-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-2xl-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-2xl-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-2xl-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-2xl-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-2xl-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-2xl-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-2xl-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-2xl-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-2xl-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-2xl-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-2xl-1 {\n      grid-column-start: 1;\n    }\n    .g-start-2xl-2 {\n      grid-column-start: 2;\n    }\n    .g-start-2xl-3 {\n      grid-column-start: 3;\n    }\n    .g-start-2xl-4 {\n      grid-column-start: 4;\n    }\n    .g-start-2xl-5 {\n      grid-column-start: 5;\n    }\n    .g-start-2xl-6 {\n      grid-column-start: 6;\n    }\n    .g-start-2xl-7 {\n      grid-column-start: 7;\n    }\n    .g-start-2xl-8 {\n      grid-column-start: 8;\n    }\n    .g-start-2xl-9 {\n      grid-column-start: 9;\n    }\n    .g-start-2xl-10 {\n      grid-column-start: 10;\n    }\n    .g-start-2xl-11 {\n      grid-column-start: 11;\n    }\n  }\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n  .grid-fill {\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n}\n@layer forms {\n  .form-label,\n  .col-form-label {\n    font-size: var(--label-font-size, var(--font-size-sm));\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, inherit);\n    color: var(--label-color, var(--fg-body));\n  }\n  .form-label {\n    margin-bottom: var(--label-margin-bottom, calc(var(--spacer) / 2));\n  }\n  .col-form-label {\n    --label-padding-y: calc(var(--btn-input-padding-y) + var(--border-width));\n    padding-block: var(--label-padding-y);\n    margin-bottom: 0;\n  }\n  .col-form-label-lg {\n    --label-padding-y: calc(var(--btn-input-lg-padding-y) + var(--border-width));\n    font-size: var(--btn-input-lg-font-size);\n  }\n  .col-form-label-sm {\n    --label-padding-y: calc(var(--btn-input-sm-padding-y) + var(--border-width));\n    font-size: var(--btn-input-sm-font-size);\n  }\n}\n@layer forms {\n  .form-text {\n    --form-text-margin-top: 0.25rem;\n    --form-text-font-size: var(--font-size-sm);\n    --form-text-color: var(--fg-3);\n    margin-top: var(--form-text-margin-top);\n    font-size: var(--form-text-font-size);\n    font-style: var(--form-text-font-style);\n    font-weight: var(--form-text-font-weight);\n    color: var(--form-text-color);\n  }\n}\n@layer forms {\n  .form-control {\n    --control-min-height: var(--btn-input-min-height);\n    --control-padding-y: var(--btn-input-padding-y);\n    --control-padding-x: var(--btn-input-padding-x);\n    --control-font-size: var(--btn-input-font-size);\n    --control-line-height: var(--btn-input-line-height);\n    --control-fg: var(--btn-input-fg);\n    --control-bg: var(--btn-input-bg);\n    --control-border-width: var(--border-width);\n    --control-border-color: var(--border-color);\n    --control-border-radius: var(--border-radius);\n    --control-box-shadow: var(--box-shadow-inset);\n    --control-action-bg: var(--bg-1);\n    --control-action-hover-bg: var(--bg-2);\n    --control-transition-property: border-color, box-shadow;\n    --control-transition-timing: 0.15s ease-in-out;\n    --control-transition: var(--control-transition-property) var(--control-transition-timing);\n    --control-placeholder-color: var(--fg-3);\n    --control-disabled-color: var(--control-fg);\n    --control-disabled-bg: var(--bg-2);\n    --control-disabled-border-color: var(--control-border-color);\n    --control-select-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2300000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    --control-select-bg-position: right 0.75rem center;\n    --control-select-bg-size: 16px 12px;\n    --control-select-bg-dark: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    display: flex;\n    width: 100%;\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    font-size: var(--control-font-size);\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    appearance: none;\n    background-color: var(--control-bg);\n    background-clip: padding-box;\n    border: var(--control-border-width) solid var(--control-border-color);\n    border-radius: var(--control-border-radius);\n    box-shadow: var(--control-box-shadow);\n    transition: var(--control-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-control {\n      transition: none;\n    }\n  }\n  .form-control:focus-visible {\n    --focus-ring-offset: -1px;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-control::placeholder {\n    color: var(--control-placeholder-color);\n    opacity: 1;\n  }\n  .form-control:disabled {\n    color: var(--control-disabled-color);\n    background-color: var(--control-disabled-bg);\n    border-color: var(--control-disabled-border-color);\n    opacity: 1;\n  }\n  .form-control::-webkit-datetime-edit {\n    display: block;\n    height: 1.5rem;\n    padding: 0;\n    margin-bottom: -0.125rem;\n  }\n  .form-control::-webkit-datetime-edit-fields-wrapper {\n    height: 1.5rem;\n  }\n  .form-control[type=file] {\n    overflow: hidden;\n  }\n  .form-control[type=file]:not(:disabled):not([readonly]) {\n    cursor: pointer;\n  }\n  .form-control::file-selector-button {\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    margin: calc(var(--control-padding-y) * -1) calc(var(--control-padding-x) * -1);\n    margin-inline-end: var(--control-padding-x);\n    color: var(--control-fg);\n    background-color: var(--control-action-bg);\n    pointer-events: none;\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n    border-inline-end-width: var(--control-border-width);\n    border-radius: 0;\n    transition: var(--control-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-control::file-selector-button {\n      transition: none;\n    }\n  }\n  .form-control:hover:not(:disabled):not([readonly])::file-selector-button {\n    background-color: var(--control-action-hover-bg);\n  }\n  .form-control-plaintext {\n    display: block;\n    width: 100%;\n    padding: var(--control-padding-y) 0;\n    margin-bottom: 0;\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    background-color: transparent;\n    border: solid transparent;\n    border-width: var(--control-border-width) 0;\n  }\n  .form-control-plaintext:focus {\n    outline: 0;\n  }\n  .form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n    padding-inline: 0;\n  }\n  select.form-control {\n    padding-inline-end: calc(var(--control-padding-x) * 3);\n    background-image: var(--control-select-bg);\n    background-repeat: no-repeat;\n    background-position: var(--control-select-bg-position);\n    background-size: var(--control-select-bg-size);\n  }\n  select.form-control[multiple], select.form-control[size]:not([size=\"1\"]) {\n    padding-inline-end: var(--control-padding-x);\n    background-image: none;\n  }\n  @media (prefers-color-scheme: dark) {\n    select.form-control {\n      background-image: var(--control-select-bg-dark);\n    }\n  }\n  .form-control-sm {\n    --control-min-height: var(--btn-input-sm-min-height);\n    --control-padding-y: var(--btn-input-sm-padding-y);\n    --control-padding-x: var(--btn-input-sm-padding-x);\n    --control-font-size: var(--btn-input-sm-font-size);\n    --control-line-height: var(--btn-input-sm-line-height);\n    --control-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .form-control-lg {\n    --control-min-height: var(--btn-input-lg-min-height);\n    --control-padding-y: var(--btn-input-lg-padding-y);\n    --control-padding-x: var(--btn-input-lg-padding-x);\n    --control-font-size: var(--btn-input-lg-font-size);\n    --control-line-height: var(--btn-input-lg-line-height);\n    --control-border-radius: var(--btn-input-lg-border-radius);\n  }\n  .form-control-color {\n    width: var(--control-min-height);\n    padding: var(--control-padding-y);\n  }\n  .form-control-color:not(:disabled):not([readonly]) {\n    cursor: pointer;\n  }\n  .form-control-color::-moz-color-swatch {\n    border: 0 !important;\n    border-radius: var(--border-radius-sm);\n  }\n  .form-control-color::-webkit-color-swatch {\n    border: 0 !important;\n    border-radius: var(--border-radius-sm);\n  }\n  .form-ghost {\n    display: block;\n    width: 100%;\n    padding: 0;\n    font: inherit;\n    color: inherit;\n    appearance: none;\n    background: transparent;\n    border: 0;\n  }\n  .form-ghost:focus {\n    outline: 0;\n  }\n  .form-ghost::placeholder {\n    color: var(--fg-3);\n    opacity: 1;\n  }\n  .form-ghost:disabled {\n    color: var(--fg-4);\n    cursor: not-allowed;\n  }\n}\n@layer forms {\n  .checkgroup {\n    display: flex;\n    gap: var(--gap, 0.5rem);\n    align-items: var(--align-items, start);\n  }\n  .checkgroup .description {\n    color: var(--fg-3);\n  }\n  .check {\n    --check-size: 1.25rem;\n    --check-margin-block: 0.125rem;\n    --check-bg: transparent;\n    --check-border-color: var(--border-color);\n    --check-border-radius: 0.375rem;\n    --check-checked-bg: var(--control-checked-bg);\n    --check-checked-border-color: var(--control-checked-border-color);\n    --check-indeterminate-bg: var(--control-checked-bg);\n    --check-indeterminate-border-color: var(--control-checked-border-color);\n    --check-active-bg: var(--control-active-bg);\n    --check-active-border-color: var(--control-active-border-color);\n    --check-disabled-bg: var(--control-disabled-bg);\n    --check-disabled-opacity: var(--control-disabled-opacity);\n    display: grid;\n    grid-template-columns: repeat(1, minmax(0, 1fr));\n    margin-block: var(--check-margin-block);\n  }\n  .check :where(svg, input) {\n    flex-shrink: 0;\n    grid-row-start: 1;\n    grid-column-start: 1;\n    width: var(--check-size);\n    height: var(--check-size);\n  }\n  .check :where(input) {\n    appearance: none;\n    background-color: var(--theme-bg, var(--check-bg));\n    border: 1px solid var(--theme-bg, var(--check-border-color));\n    border-radius: 0.3em;\n  }\n  .check :where(input:checked, input:indeterminate) {\n    background-color: var(--theme-bg, var(--check-checked-bg));\n    border-color: var(--theme-bg, var(--check-checked-border-color));\n  }\n  .check :where(input:focus-visible) {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .check:has(input:checked) .checked, .check:has(input:indeterminate) .indeterminate {\n    display: block;\n    color: var(--theme-contrast, var(--primary-contrast));\n    stroke: currentcolor;\n  }\n  .check:has(input:disabled) {\n    --check-bg: var(--check-disabled-bg);\n  }\n  .check:has(input:disabled) ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .check:has(input:disabled:checked) {\n    opacity: var(--check-disabled-opacity);\n  }\n  .check :where(svg) {\n    pointer-events: none;\n  }\n  .check :where(svg path) {\n    display: none;\n  }\n  .check-sm {\n    --check-size: 1rem;\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: 0;\n  }\n}\n@layer forms {\n  .radiogroup {\n    display: flex;\n    gap: var(--gap, 0.5rem);\n    align-items: var(--align-items, start);\n  }\n  .radiogroup .description {\n    color: var(--fg-3);\n  }\n  .radio {\n    --radio-size: 1.25rem;\n    --radio-margin-block: 0.125rem;\n    --radio-bg: transparent;\n    --radio-border-color: var(--border-color);\n    --radio-checked-bg: var(--control-checked-bg);\n    --radio-checked-border-color: var(--control-checked-border-color);\n    --radio-disabled-bg: var(--control-disabled-bg);\n    --radio-disabled-opacity: var(--control-disabled-opacity);\n    position: relative;\n    flex-shrink: 0;\n    width: var(--radio-size);\n    height: var(--radio-size);\n    margin-block: var(--radio-margin-block);\n    appearance: none;\n    background-color: var(--theme-bg, var(--radio-bg));\n    border: 1px solid var(--theme-bg, var(--radio-border-color));\n    border-radius: 50%;\n  }\n  .radio:checked {\n    color: var(--theme-contrast, var(--primary-contrast));\n    background-color: var(--theme-bg, var(--radio-checked-bg));\n    border-color: var(--theme-bg, var(--radio-checked-border-color));\n  }\n  .radio:checked::before {\n    position: absolute;\n    inset: 0.25rem;\n    content: \"\";\n    background-color: currentcolor;\n    border-radius: 50%;\n  }\n  .radio:disabled {\n    --radio-bg: var(--radio-disabled-bg);\n  }\n  .radio:disabled ~ label {\n    color: var(--secondary-text);\n    cursor: default;\n  }\n  .radio:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .radio-sm {\n    --radio-size: 1rem;\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: 0;\n  }\n}\n@layer forms {\n  .switch {\n    --switch-height: 1.25rem;\n    --switch-width: calc(var(--switch-height) * 1.5);\n    --switch-padding: 0.0625rem;\n    --switch-margin-block: 0.125rem;\n    --switch-bg: var(--bg-3);\n    --switch-border-width: var(--border-width);\n    --switch-border-color: var(--border-color);\n    --switch-indicator-bg: var(--white);\n    --switch-checked-bg: var(--control-checked-bg);\n    --switch-checked-border-color: var(--switch-checked-bg);\n    --switch-checked-indicator-bg: var(--white);\n    --switch-disabled-bg: var(--control-disabled-bg);\n    --switch-disabled-indicator-bg: var(--fg-3);\n    position: relative;\n    display: flex;\n    flex-shrink: 0;\n    align-items: stretch;\n    justify-content: flex-start;\n    width: var(--switch-width);\n    height: var(--switch-height);\n    padding: var(--switch-padding);\n    margin-block: var(--switch-margin-block);\n    background-color: var(--switch-bg);\n    border: var(--switch-border-width) solid var(--switch-border-color);\n    border-radius: 10rem;\n    box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.05);\n    transition: 0.15s ease-in-out;\n    transition-property: padding-inline-start, background-color;\n  }\n  .switch::before {\n    flex-shrink: 0;\n    width: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\n    height: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\n    content: \"\";\n    background-color: var(--theme-contrast, var(--switch-indicator-bg));\n    border-radius: 50%;\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n  }\n  .switch input {\n    position: absolute;\n    inset: 0;\n    appearance: none;\n    background-color: transparent;\n    outline: 0;\n  }\n  .switch:focus-within {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .switch:has(input:checked) {\n    padding-inline-start: calc(var(--switch-height) / 2 + var(--switch-padding));\n    background-color: var(--theme-bg, var(--switch-checked-bg));\n    border-color: var(--theme-bg, var(--switch-checked-border-color));\n  }\n  .switch:has(input:disabled) {\n    --switch-bg: var(--switch-disabled-bg);\n    --switch-indicator-bg: var(--switch-disabled-indicator-bg);\n  }\n  .switch:has(input:disabled)::before {\n    opacity: 0.4;\n  }\n  .switch:has(input:disabled) ~ label {\n    color: var(--secondary-text);\n    cursor: default;\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: 0;\n  }\n}\n@layer forms {\n  .form-range {\n    --range-track-width: 100%;\n    --range-track-height: 0.5rem;\n    --range-track-cursor: pointer;\n    --range-track-bg: var(--bg-3);\n    --range-track-border-radius: 1rem;\n    --range-track-box-shadow: var(--box-shadow-inset);\n    --range-thumb-width: 1rem;\n    --range-thumb-height: var(--range-thumb-width);\n    --range-thumb-bg: var(--primary-base);\n    --range-thumb-border: 0;\n    --range-thumb-border-radius: 1rem;\n    --range-thumb-box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1);\n    --range-thumb-active-bg: color-mix(in oklch, var(--primary-base) 70%, var(--bg-body));\n    --range-thumb-disabled-bg: var(--fg-3);\n    --range-thumb-transition-property: background-color, border-color, box-shadow;\n    --range-thumb-transition-timing: 0.15s ease-in-out;\n    --range-thumb-transition: var(--range-thumb-transition-property) var(--range-thumb-transition-timing);\n    width: 100%;\n    height: calc(var(--range-thumb-height) + var(--focus-ring-width) * 2);\n    padding: 0;\n    appearance: none;\n    background-color: transparent;\n  }\n  .form-range:focus {\n    outline: 0;\n  }\n  .form-range:focus::-webkit-slider-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .form-range:focus::-moz-range-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .form-range::-moz-focus-outer {\n    border: 0;\n  }\n  .form-range::-webkit-slider-thumb {\n    width: var(--range-thumb-width);\n    height: var(--range-thumb-height);\n    appearance: none;\n    background-color: var(--range-thumb-bg);\n    border: var(--range-thumb-border);\n    border-radius: var(--range-thumb-border-radius);\n    box-shadow: var(--range-thumb-box-shadow);\n    transition: var(--range-thumb-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-range::-webkit-slider-thumb {\n      transition: none;\n    }\n  }\n  .form-range::-webkit-slider-thumb:active {\n    background-color: var(--range-thumb-active-bg);\n  }\n  .form-range::-webkit-slider-thumb {\n    margin-top: calc((var(--range-track-height) - var(--range-thumb-height)) * 0.5);\n  }\n  .form-range::-moz-range-thumb {\n    width: var(--range-thumb-width);\n    height: var(--range-thumb-height);\n    appearance: none;\n    background-color: var(--range-thumb-bg);\n    border: var(--range-thumb-border);\n    border-radius: var(--range-thumb-border-radius);\n    box-shadow: var(--range-thumb-box-shadow);\n    transition: var(--range-thumb-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-range::-moz-range-thumb {\n      transition: none;\n    }\n  }\n  .form-range::-moz-range-thumb:active {\n    background-color: var(--range-thumb-active-bg);\n  }\n  .form-range::-webkit-slider-runnable-track {\n    width: var(--range-track-width);\n    height: var(--range-track-height);\n    color: transparent;\n    cursor: var(--range-track-cursor);\n    background-color: var(--range-track-bg);\n    border-color: transparent;\n    border-radius: var(--range-track-border-radius);\n    box-shadow: var(--range-track-box-shadow);\n  }\n  .form-range::-moz-range-track {\n    width: var(--range-track-width);\n    height: var(--range-track-height);\n    color: transparent;\n    cursor: var(--range-track-cursor);\n    background-color: var(--range-track-bg);\n    border-color: transparent;\n    border-radius: var(--range-track-border-radius);\n    box-shadow: var(--range-track-box-shadow);\n  }\n  .form-range:disabled {\n    pointer-events: none;\n  }\n  .form-range:disabled::-webkit-slider-thumb {\n    background-color: var(--range-thumb-disabled-bg);\n  }\n  .form-range:disabled::-moz-range-thumb {\n    background-color: var(--range-thumb-disabled-bg);\n  }\n}\n@layer forms {\n  .form-floating {\n    --form-floating-height: calc(3.5rem + var(--border-width) * 2);\n    --form-floating-line-height: 1.25;\n    --form-floating-padding-x: var(--btn-input-padding-x);\n    --form-floating-padding-y: 1rem;\n    --form-floating-input-padding-t: 1.625rem;\n    --form-floating-input-padding-b: 0.625rem;\n    --form-floating-label-height: 1.5em;\n    --form-floating-label-opacity: 0.65;\n    --form-floating-label-transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n    --form-floating-label-disabled-color: var(--fg-3);\n    --form-floating-transition-property: opacity, transform;\n    --form-floating-transition-timing: 0.1s ease-in-out;\n    --form-floating-transition: var(--form-floating-transition-property) var(--form-floating-transition-timing);\n    position: relative;\n  }\n  .form-floating > label {\n    position: absolute;\n    inset-block-start: 0;\n    inset-inline-start: 0;\n    z-index: 2;\n    display: flex;\n    align-items: center;\n    max-width: 100%;\n    height: 100%;\n    padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n    overflow: hidden;\n    color: color-mix(in oklch, var(--fg-body) var(--form-floating-label-opacity), transparent);\n    text-align: start;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    pointer-events: none;\n    border: var(--input-btn-border-width) solid transparent;\n    transform-origin: 0 0;\n    transition: var(--form-floating-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-floating > label {\n      transition: none;\n    }\n  }\n  .form-floating > .form-control,\n  .form-floating > .form-control-plaintext {\n    height: var(--form-floating-height);\n    min-height: var(--form-floating-height);\n    padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n    line-height: var(--form-floating-line-height);\n  }\n  .form-floating > .form-control::placeholder,\n  .form-floating > .form-control-plaintext::placeholder {\n    color: transparent;\n  }\n  .form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),\n  .form-floating > .form-control-plaintext:focus,\n  .form-floating > .form-control-plaintext:not(:placeholder-shown) {\n    padding-top: var(--form-floating-input-padding-t);\n    padding-bottom: var(--form-floating-input-padding-b);\n  }\n  .form-floating > .form-control:-webkit-autofill,\n  .form-floating > .form-control-plaintext:-webkit-autofill {\n    padding-top: var(--form-floating-input-padding-t);\n    padding-bottom: var(--form-floating-input-padding-b);\n  }\n  .form-floating > .form-control:focus ~ label,\n  .form-floating > .form-control:not(:placeholder-shown) ~ label,\n  .form-floating > .form-control-plaintext ~ label {\n    transform: var(--form-floating-label-transform);\n  }\n  .form-floating > .form-control:-webkit-autofill ~ label {\n    transform: var(--form-floating-label-transform);\n  }\n  .form-floating > textarea:focus ~ label::after,\n  .form-floating > textarea:not(:placeholder-shown) ~ label::after {\n    position: absolute;\n    inset: var(--form-floating-padding-y) calc(var(--form-floating-padding-x) * 0.5);\n    z-index: -1;\n    height: var(--form-floating-label-height);\n    content: \"\";\n    background-color: var(--control-bg);\n    border-radius: var(--btn-input-border-radius);\n  }\n  .form-floating > textarea:disabled ~ label::after {\n    background-color: var(--control-disabled-bg);\n  }\n  .form-floating > .form-control-plaintext ~ label {\n    border-width: var(--control-border-width) 0;\n  }\n  .form-floating > :disabled ~ label,\n  .form-floating > .form-control:disabled ~ label {\n    color: var(--form-floating-label-disabled-color);\n  }\n}\n@layer components {\n  .input-group {\n    --input-group-addon-padding-y: var(--btn-input-padding-y);\n    --input-group-addon-padding-x: var(--btn-input-padding-x);\n    --input-group-addon-font-size: var(--btn-input-font-size);\n    --input-group-addon-line-height: var(--btn-input-line-height);\n    --input-group-addon-color: var(--fg-body);\n    --input-group-addon-bg: var(--bg-2);\n    --input-group-addon-border-color: var(--border-color);\n    position: relative;\n    display: flex;\n    flex-wrap: wrap;\n    align-items: stretch;\n    width: 100%;\n  }\n  .input-group > .form-control,\n  .input-group > .form-floating {\n    position: relative;\n    flex: 1 1 auto;\n    width: 1%;\n    min-width: 0;\n  }\n  .input-group > .form-control:focus,\n  .input-group > .form-floating:focus-within {\n    z-index: 5;\n  }\n  .input-group > .input-group-btn {\n    position: relative;\n    z-index: 2;\n  }\n  .input-group > .input-group-btn:focus {\n    z-index: 5;\n  }\n  .input-group-text {\n    display: flex;\n    align-items: center;\n    padding: var(--input-group-addon-padding-y) var(--input-group-addon-padding-x);\n    font-size: var(--input-group-addon-font-size);\n    line-height: var(--input-group-addon-line-height);\n    color: var(--input-group-addon-color);\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--input-group-addon-bg);\n    border: var(--border-width) solid var(--input-group-addon-border-color);\n    border-radius: var(--btn-input-border-radius);\n  }\n  .input-group-sm > .form-control,\n  .input-group-sm > .input-group-text,\n  .input-group-sm > .btn {\n    min-height: var(--btn-input-sm-min-height);\n    padding: var(--btn-input-sm-padding-y) var(--btn-input-sm-padding-x);\n    font-size: var(--btn-input-sm-font-size);\n    border-radius: var(--btn-input-sm-border-radius);\n  }\n  .input-group-lg > .form-control,\n  .input-group-lg > .input-group-text,\n  .input-group-lg > .btn {\n    min-height: var(--btn-input-lg-min-height);\n    padding: var(--btn-input-lg-padding-y) var(--btn-input-lg-padding-x);\n    font-size: var(--btn-input-lg-font-size);\n    border-radius: var(--btn-input-lg-border-radius);\n  }\n  .input-group:not(.has-validation) > :not(:last-child):not(.menu-toggle-split):not(.menu):not(.form-floating),\n  .input-group:not(.has-validation) > .menu-toggle-split:nth-last-child(n+3),\n  .input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control,\n  .input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .input-group.has-validation > :nth-last-child(n+3):not(.menu-toggle-split):not(.menu):not(.form-floating),\n  .input-group.has-validation > .menu-toggle-split:nth-last-child(n+4),\n  .input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control,\n  .input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .input-group > :not(:first-child):not(.menu) {\n    margin-inline-start: calc(-1 * var(--border-width));\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .input-group > .form-floating:not(:first-child) > .form-control,\n  .input-group > .form-floating:not(:first-child) > .form-select {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n}\n@layer forms {\n  .strength {\n    --strength-height: 0.375rem;\n    --strength-gap: 0.25rem;\n    --strength-margin-top: 0.25rem;\n    --strength-border-radius: var(--border-radius-pill);\n    --strength-bg: var(--bg-2);\n    --strength-color: var(--bg-2);\n    --strength-weak-color: var(--danger-bg);\n    --strength-fair-color: var(--warning-bg);\n    --strength-good-color: var(--info-bg);\n    --strength-strong-color: var(--success-bg);\n    display: flex;\n    gap: var(--strength-gap);\n    width: 100%;\n    margin-top: var(--strength-margin-top);\n  }\n  .strength-segment {\n    flex: 1;\n    height: var(--strength-height);\n    background-color: var(--strength-bg);\n    border-radius: var(--strength-border-radius);\n    transition: background-color 0.2s ease-in-out, width 0.3s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-segment {\n      transition: none;\n    }\n  }\n  .strength-segment.active {\n    background-color: var(--strength-color);\n  }\n  .strength[data-bs-strength=weak] {\n    --strength-color: var(--strength-weak-color);\n  }\n  .strength[data-bs-strength=fair] {\n    --strength-color: var(--strength-fair-color);\n  }\n  .strength[data-bs-strength=good] {\n    --strength-color: var(--strength-good-color);\n  }\n  .strength[data-bs-strength=strong] {\n    --strength-color: var(--strength-strong-color);\n  }\n  .strength-text {\n    display: block;\n    margin-top: var(--strength-margin-top);\n    font-size: var(--font-size-xs);\n    color: var(--strength-color, var(--fg-3));\n    transition: color 0.2s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-text {\n      transition: none;\n    }\n  }\n  .strength-text:empty {\n    display: none;\n  }\n  .strength-bar {\n    --strength-height: 0.375rem;\n    --strength-gap: 0.25rem;\n    --strength-margin-top: 0.25rem;\n    --strength-border-radius: var(--border-radius-pill);\n    --strength-bg: var(--bg-2);\n    --strength-color: var(--bg-2);\n    --strength-weak-color: var(--danger-bg);\n    --strength-fair-color: var(--warning-bg);\n    --strength-good-color: var(--info-bg);\n    --strength-strong-color: var(--success-bg);\n    --strength-color: transparent;\n    --strength-width: 0%;\n    width: 100%;\n    height: var(--strength-height);\n    margin-top: var(--strength-margin-top);\n    overflow: hidden;\n    background-color: var(--strength-bg);\n    border-radius: var(--strength-border-radius);\n  }\n  .strength-bar::after {\n    display: block;\n    width: var(--strength-width);\n    height: 100%;\n    content: \"\";\n    background-color: var(--strength-color);\n    border-radius: var(--strength-border-radius);\n    transition: background-color 0.2s ease-in-out, width 0.3s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-bar::after {\n      transition: none;\n    }\n  }\n  .strength-bar[data-bs-strength=weak] {\n    --strength-color: var(--strength-weak-color);\n    --strength-width: 25%;\n  }\n  .strength-bar[data-bs-strength=fair] {\n    --strength-color: var(--strength-fair-color);\n    --strength-width: 50%;\n  }\n  .strength-bar[data-bs-strength=good] {\n    --strength-color: var(--strength-good-color);\n    --strength-width: 75%;\n  }\n  .strength-bar[data-bs-strength=strong] {\n    --strength-color: var(--strength-strong-color);\n    --strength-width: 100%;\n  }\n}\n@layer components {\n  .otp {\n    --otp-size: var(--btn-input-lg-min-height);\n    --otp-font-size: var(--btn-input-font-size);\n    --otp-gap: 0.5rem;\n    display: inline-flex;\n    gap: var(--otp-gap);\n  }\n  .otp .form-control {\n    width: var(--otp-size);\n    min-height: var(--otp-size);\n    padding: 0;\n    font-size: var(--otp-font-size);\n    font-weight: 500;\n    line-height: 1;\n    text-align: center;\n    border-radius: var(--otp-border-radius, var(--btn-input-border-radius));\n  }\n  .otp .form-control::-webkit-outer-spin-button, .otp .form-control::-webkit-inner-spin-button {\n    margin: 0;\n    appearance: none;\n  }\n  .otp .form-control[type=number] {\n    appearance: textfield;\n  }\n  .otp .form-control:focus, .otp .form-control:focus-visible {\n    z-index: 1;\n  }\n  .otp.is-valid .form-control, .was-validated .otp:valid .form-control {\n    border-color: var(--form-valid-border-color);\n  }\n  .otp.is-valid .form-control:focus, .was-validated .otp:valid .form-control:focus {\n    --focus-ring-color: rgba(var(--success-rgb), .25);\n    border-color: var(--form-valid-border-color);\n  }\n  .otp.is-invalid .form-control, .was-validated .otp:invalid .form-control {\n    border-color: var(--form-invalid-border-color);\n  }\n  .otp.is-invalid .form-control:focus, .was-validated .otp:invalid .form-control:focus {\n    --focus-ring-color: rgba(var(--danger-rgb), .25);\n    border-color: var(--form-invalid-border-color);\n  }\n  .otp.input-group {\n    gap: 0;\n    width: auto;\n  }\n  .otp.input-group .form-control {\n    flex: 0 0 auto;\n  }\n  .otp-separator {\n    display: flex;\n    align-items: center;\n    padding-inline: var(--otp-gap);\n    font-size: var(--otp-font-size);\n    color: var(--fg-4);\n    user-select: none;\n  }\n  .otp-sm {\n    --otp-size: var(--btn-input-sm-min-height);\n    --otp-font-size: var(--btn-input-sm-font-size);\n    --otp-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .otp-lg {\n    --otp-size: var(--btn-input-lg-min-height);\n    --otp-font-size: var(--btn-input-lg-font-size);\n    --otp-border-radius: var(--btn-input-lg-border-radius);\n  }\n}\n@layer forms {\n  .form-adorn {\n    --form-adorn-gap: 0.375rem;\n    --form-adorn-icon-size: 1rem;\n    --form-adorn-icon-color: var(--fg-2);\n    gap: var(--form-adorn-gap);\n    align-items: center;\n  }\n  .form-adorn:focus-visible {\n    outline: 0;\n  }\n  .form-adorn:focus-within {\n    --focus-ring-offset: -1px;\n    border-color: var(--focus-ring-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-adorn > .form-ghost {\n    flex: 1;\n    min-width: 0;\n  }\n  .form-adorn.form-adorn-end > .form-ghost {\n    order: -1;\n  }\n  .form-adorn-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n  }\n  .form-adorn-icon > svg {\n    width: var(--form-adorn-icon-size);\n    height: var(--form-adorn-icon-size);\n  }\n  .form-adorn-text {\n    flex-shrink: 0;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n    user-select: none;\n  }\n}\n@layer forms {\n  .chip-input {\n    --chip-input-padding-y: 0.75rem;\n    --chip-input-padding-x: 0.75rem;\n    --chip-input-gap: 0.375rem;\n    --chip-input-ghost-min-width: 5rem;\n    --control-fg: var(--btn-input-fg);\n    --control-bg: var(--btn-input-bg);\n    --control-border-width: var(--border-width);\n    --control-border-color: var(--border-color);\n    --control-border-radius: var(--border-radius);\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--chip-input-gap);\n    align-items: center;\n    padding: var(--chip-input-padding-y) var(--chip-input-padding-x);\n    color: var(--control-fg);\n    background-color: var(--control-bg);\n    border: var(--control-border-width) solid var(--control-border-color);\n    border-radius: var(--control-border-radius);\n  }\n  .chip-input:focus-within {\n    --focus-ring-offset: -1px;\n    border-color: var(--focus-ring-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .chip-input > .form-ghost {\n    flex: 1 1 0;\n    min-width: var(--chip-input-ghost-min-width);\n    min-height: 1.75rem;\n  }\n  .chip-input.disabled, .chip-input:has(.form-ghost:disabled) {\n    background-color: var(--bg-2);\n    opacity: 1;\n  }\n  .chip-input.disabled > .chip, .chip-input:has(.form-ghost:disabled) > .chip {\n    opacity: var(--control-disabled-opacity);\n  }\n  .chip-input.disabled > .chip .chip-dismiss, .chip-input:has(.form-ghost:disabled) > .chip .chip-dismiss {\n    pointer-events: none;\n  }\n  .chip-input.disabled > .form-ghost, .chip-input:has(.form-ghost:disabled) > .form-ghost {\n    cursor: not-allowed;\n  }\n}\n@layer components {\n  .combobox-toggle {\n    display: inline-flex;\n    gap: 0.5rem;\n    align-items: center;\n    justify-content: space-between;\n    width: 100%;\n    padding-inline-end: var(--control-padding-x);\n    text-align: start;\n    cursor: pointer;\n  }\n  .combobox-toggle.show {\n    background-color: var(--bg-1);\n  }\n  .combobox-toggle:disabled, .combobox-toggle.disabled {\n    cursor: not-allowed;\n    opacity: 0.65;\n  }\n  .combobox-value {\n    display: flex;\n    flex: 1;\n    gap: 0.5rem;\n    align-items: center;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .combobox-placeholder {\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n  .combobox-caret {\n    flex-shrink: 0;\n    transition: transform 0.2s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .combobox-caret {\n      transition: none;\n    }\n  }\n  .show > .combobox-caret {\n    transform: rotate(180deg);\n  }\n  .combobox-toggle + .menu {\n    --menu-max-height: 300px;\n    --menu-overflow-y: auto;\n  }\n  .combobox-search {\n    position: sticky;\n    top: 0;\n    z-index: 1;\n    padding: var(--menu-padding-x, 0.25rem);\n    background-color: var(--menu-bg, var(--bg-body));\n  }\n  .combobox-search-input {\n    width: 100%;\n  }\n  .combobox-no-results {\n    padding: 1rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-3);\n    text-align: center;\n  }\n}\n@layer components {\n  .tooltip {\n    --tooltip-zindex: 1080;\n    --tooltip-max-width: 200px;\n    --tooltip-padding-x: 0.75rem;\n    --tooltip-padding-y: 0.375rem;\n    --tooltip-font-size: var(--font-size-sm);\n    --tooltip-color: var(--bg-body);\n    --tooltip-bg: var(--fg-body);\n    --tooltip-border-radius: var(--border-radius);\n    --tooltip-opacity: 0.95;\n    --tooltip-arrow-width: 0.8rem;\n    --tooltip-arrow-height: 0.4rem;\n    z-index: var(--tooltip-zindex);\n    display: block;\n    font-family: var(--body-font-family);\n    font-style: normal;\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    text-align: start;\n    text-decoration: none;\n    text-shadow: none;\n    text-transform: none;\n    letter-spacing: normal;\n    word-break: normal;\n    white-space: normal;\n    word-spacing: normal;\n    line-break: auto;\n    font-size: var(--tooltip-font-size);\n    word-wrap: break-word;\n    opacity: 0;\n  }\n  .tooltip.show {\n    opacity: var(--tooltip-opacity);\n  }\n  .tooltip .tooltip-arrow {\n    display: block;\n    width: var(--tooltip-arrow-width);\n    height: var(--tooltip-arrow-height);\n  }\n  .tooltip .tooltip-arrow::before {\n    position: absolute;\n    content: \"\";\n    border-color: transparent;\n    border-style: solid;\n  }\n  .bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow {\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n  }\n  .bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow::before {\n    top: -1px;\n    border-width: var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * 0.5) 0;\n    border-block-start-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow {\n    left: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n  }\n  .bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow::before {\n    right: -1px;\n    border-width: calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * 0.5) 0;\n    border-inline-end-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow {\n    top: calc(-1 * var(--tooltip-arrow-height));\n  }\n  .bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow::before {\n    bottom: -1px;\n    border-width: 0 calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height);\n    border-block-end-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow {\n    right: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n  }\n  .bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow::before {\n    left: -1px;\n    border-width: calc(var(--tooltip-arrow-width) * 0.5) 0 calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height);\n    border-inline-start-color: var(--tooltip-bg);\n  }\n  .tooltip-inner {\n    max-width: var(--tooltip-max-width);\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    color: var(--tooltip-color);\n    text-align: center;\n    background-color: var(--tooltip-bg);\n    border-radius: var(--tooltip-border-radius);\n  }\n}\n@layer components {\n  .valid-feedback {\n    display: none;\n    width: 100%;\n    margin-top: 0.5rem;\n    font-size: var(--font-size-xs);\n    color: var(--form-valid-color);\n  }\n  .valid-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    margin-top: 0.1rem;\n    font-size: var(--tooltip-font-size);\n    color: var(--success-contrast);\n    background-color: var(--success-bg);\n    border-radius: var(--tooltip-border-radius);\n  }\n  .was-validated :valid ~ .valid-feedback,\n  .was-validated :valid ~ .valid-tooltip,\n  .is-valid ~ .valid-feedback,\n  .is-valid ~ .valid-tooltip {\n    display: block;\n  }\n  .was-validated .form-control:valid, .form-control.is-valid {\n    border-color: var(--success-border);\n    padding-inline-end: calc(var(--control-padding-x) * 3.5);\n    background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300a748' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1'/%3e%3c/svg%3e\");\n    background-repeat: no-repeat;\n    background-position: right var(--control-padding-x) center;\n    background-size: 1rem;\n  }\n  .was-validated .form-control:valid:focus-visible, .form-control.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--success-border);\n  }\n  .was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n    background-position: right var(--control-padding-x) top var(--control-padding-x);\n  }\n  .was-validated .form-check-input:valid, .form-check-input.is-valid {\n    border-color: var(--success-border);\n  }\n  .was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {\n    background-color: var(--form-valid-color);\n  }\n  .was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n    color: var(--form-valid-color);\n  }\n  .form-check-inline .form-check-input ~ .valid-feedback {\n    margin-inline-start: 0.5em;\n  }\n  .was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid,\n  .was-validated .input-group > .form-select:not(:focus):valid,\n  .input-group > .form-select:not(:focus).is-valid,\n  .was-validated .input-group > .form-floating:not(:focus-within):valid,\n  .input-group > .form-floating:not(:focus-within).is-valid {\n    z-index: 3;\n  }\n  .invalid-feedback {\n    display: none;\n    width: 100%;\n    margin-top: 0.5rem;\n    font-size: var(--font-size-xs);\n    color: var(--form-invalid-color);\n  }\n  .invalid-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    margin-top: 0.1rem;\n    font-size: var(--tooltip-font-size);\n    color: var(--danger-contrast);\n    background-color: var(--danger-bg);\n    border-radius: var(--tooltip-border-radius);\n  }\n  .was-validated :invalid ~ .invalid-feedback,\n  .was-validated :invalid ~ .invalid-tooltip,\n  .is-invalid ~ .invalid-feedback,\n  .is-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  .was-validated .form-control:invalid, .form-control.is-invalid {\n    border-color: var(--danger-border);\n    padding-inline-end: calc(var(--control-padding-x) * 3.5);\n    background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dd0d37'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dd0d37' stroke='none'/%3e%3c/svg%3e\");\n    background-repeat: no-repeat;\n    background-position: right var(--control-padding-x) center;\n    background-size: 1rem;\n  }\n  .was-validated .form-control:invalid:focus-visible, .form-control.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--danger-border);\n  }\n  .was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n    background-position: right var(--control-padding-x) top var(--control-padding-x);\n  }\n  .was-validated .form-check-input:invalid, .form-check-input.is-invalid {\n    border-color: var(--danger-border);\n  }\n  .was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {\n    background-color: var(--form-invalid-color);\n  }\n  .was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n    color: var(--form-invalid-color);\n  }\n  .form-check-inline .form-check-input ~ .invalid-feedback {\n    margin-inline-start: 0.5em;\n  }\n  .was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid,\n  .was-validated .input-group > .form-select:not(:focus):invalid,\n  .input-group > .form-select:not(:focus).is-invalid,\n  .was-validated .input-group > .form-floating:not(:focus-within):invalid,\n  .input-group > .form-floating:not(:focus-within).is-invalid {\n    z-index: 4;\n  }\n}\n@layer components {\n  .btn, .btn-link, .btn-icon, .btn-solid, .btn-outline, .btn-subtle, .btn-text {\n    --btn-min-height: var(--btn-input-min-height);\n    --btn-padding-x: var(--btn-input-padding-x);\n    --btn-padding-y: var(--btn-input-padding-y);\n    --btn-font-size: var(--btn-input-font-size);\n    --btn-font-weight: var(--btn-input-font-weight);\n    --btn-line-height: var(--btn-input-line-height);\n    --btn-color: var(--fg-body);\n    --btn-white-space: nowrap;\n    --btn-border-width: var(--border-width);\n    --btn-border-color: transparent;\n    --btn-border-radius: var(--border-radius);\n    --btn-hover-border-color: transparent;\n    --btn-disabled-opacity: 0.65;\n    --btn-transition-timing: 0.15s ease-in-out;\n    --btn-transition-property: color, background-color, border-color, box-shadow;\n    --btn-transition: var(--btn-transition-property) var(--btn-transition-timing);\n    display: inline-flex;\n    gap: var(--btn-gap, 0.25rem);\n    align-items: center;\n    justify-content: center;\n    min-height: var(--btn-min-height);\n    padding: var(--btn-padding-y) var(--btn-padding-x);\n    font-size: var(--btn-font-size);\n    font-weight: var(--btn-font-weight);\n    line-height: var(--btn-line-height);\n    color: var(--btn-color);\n    text-decoration: none;\n    white-space: var(--btn-white-space);\n    vertical-align: middle;\n    cursor: pointer;\n    user-select: none;\n    background-color: var(--btn-bg, var(--bg-2));\n    border: var(--btn-border-width) solid var(--btn-border-color);\n    border-radius: var(--btn-border-radius);\n    transition: var(--btn-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .btn, .btn-link, .btn-icon, .btn-solid, .btn-outline, .btn-subtle, .btn-text {\n      transition: none;\n    }\n  }\n  .btn:hover, .btn-link:hover, .btn-icon:hover, .btn-solid:hover, .btn-outline:hover, .btn-subtle:hover, .btn-text:hover {\n    color: var(--btn-hover-color);\n    background-color: var(--btn-hover-bg, var(--bg-3));\n    border-color: var(--btn-hover-border-color);\n  }\n  .btn:focus-visible, .btn-link:focus-visible, .btn-icon:focus-visible, .btn-solid:focus-visible, .btn-outline:focus-visible, .btn-subtle:focus-visible, .btn-text:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .btn.active, .btn.show, .btn-link.active, .btn-link.show, .btn-icon.active, .btn-icon.show, .btn-solid.active, .btn-solid.show, .btn-outline.active, .btn-outline.show, .btn-subtle.active, .btn-subtle.show, .btn-text.active, .btn-text.show {\n    color: var(--btn-active-color);\n    background-color: var(--btn-active-bg, var(--bg-3));\n    border-color: var(--btn-active-border-color);\n  }\n  .btn.active:focus-visible, .btn.show:focus-visible, .btn-link.active:focus-visible, .btn-link.show:focus-visible, .btn-icon.active:focus-visible, .btn-icon.show:focus-visible, .btn-solid.active:focus-visible, .btn-solid.show:focus-visible, .btn-outline.active:focus-visible, .btn-outline.show:focus-visible, .btn-subtle.active:focus-visible, .btn-subtle.show:focus-visible, .btn-text.active:focus-visible, .btn-text.show:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .btn:disabled, .btn.disabled, fieldset:disabled .btn, .btn-link:disabled, .btn-link.disabled, fieldset:disabled .btn-link, .btn-icon:disabled, .btn-icon.disabled, fieldset:disabled .btn-icon, .btn-solid:disabled, .btn-solid.disabled, fieldset:disabled .btn-solid, .btn-outline:disabled, .btn-outline.disabled, fieldset:disabled .btn-outline, .btn-subtle:disabled, .btn-subtle.disabled, fieldset:disabled .btn-subtle, .btn-text:disabled, .btn-text.disabled, fieldset:disabled .btn-text {\n    color: var(--btn-disabled-color);\n    pointer-events: none;\n    background-color: var(--btn-disabled-bg, var(--bg-1));\n    border-color: var(--btn-disabled-border-color);\n    opacity: var(--btn-disabled-opacity);\n  }\n  .btn-solid {\n    --btn-bg: var(--theme-bg);\n    --btn-color: var(--theme-contrast);\n    --btn-border-color: var(--theme-bg);\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: var(--theme-bg);\n    --btn-disabled-color: var(--theme-contrast);\n    --btn-disabled-border-color: var(--theme-bg);\n  }\n  .btn-solid:hover {\n    --btn-hover-bg: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-border-color: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-color: oklch(from var(--theme-contrast) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-solid:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-solid:active, .btn-solid.active, .btn-solid.btn-check:has(input:checked) {\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-solid:disabled, .btn-solid.disabled, .btn-solid.btn-check:has(input:disabled) {\n    --btn-disabled-bg: var(--theme-bg);\n    --btn-disabled-color: var(--theme-contrast);\n    --btn-disabled-border-color: var(--theme-bg);\n  }\n  .btn-outline {\n    --btn-bg: transparent;\n    --btn-color: var(--theme-text);\n    --btn-border-color: var(--theme-border);\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-border-color: var(--theme-border);\n  }\n  .btn-outline:hover {\n    --btn-hover-bg: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-color: oklch(from var(--theme-contrast) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-border-color: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-outline:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-outline:active, .btn-outline.active, .btn-outline.btn-check:has(input:checked) {\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-outline:disabled, .btn-outline.disabled, .btn-outline.btn-check:has(input:disabled) {\n    --btn-disabled-bg: transparent;\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-border-color: var(--theme-border);\n  }\n  .btn-subtle {\n    --btn-bg: var(--theme-bg-subtle);\n    --btn-color: var(--theme-text);\n    --btn-border-color: transparent;\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-active-color: oklch(from var(--theme-text-emphasis) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-subtle:hover {\n    --btn-hover-bg: color-mix(in oklch, var(--theme-bg-muted) 50%, var(--theme-bg-subtle));\n    --btn-hover-color: oklch(from var(--theme-text-emphasis) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-subtle:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-subtle:active, .btn-subtle.active, .btn-subtle.btn-check:has(input:checked) {\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-active-color: oklch(from var(--theme-text-emphasis) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-subtle:disabled, .btn-subtle.disabled, .btn-subtle.btn-check:has(input:disabled) {\n    --btn-disabled-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text {\n    --btn-color: var(--theme-text);\n    --btn-bg: transparent;\n    --btn-border-color: transparent;\n    --btn-active-color: oklch(from var(--theme-text) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text:hover {\n    --btn-hover-color: oklch(from var(--theme-text) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-bg: var(--theme-bg-subtle);\n  }\n  .btn-text:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-text:active, .btn-text.active, .btn-text.btn-check:has(input:checked) {\n    --btn-active-color: oklch(from var(--theme-text) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-bg: var(--theme-bg-subtle);\n  }\n  .btn-text:disabled, .btn-text.disabled, .btn-text.btn-check:has(input:disabled) {\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-link {\n    --btn-font-weight: var(--font-weight-normal);\n    --btn-color: var(--link-color);\n    --btn-bg: transparent;\n    --btn-border-color: transparent;\n    --btn-hover-color: var(--link-hover-color);\n    --btn-hover-bg: transparent;\n    --btn-hover-border-color: transparent;\n    --btn-active-color: var(--link-hover-color);\n    --btn-active-bg: transparent;\n    --btn-active-border-color: transparent;\n    --btn-disabled-color: var(--fg-3);\n    --btn-disabled-border-color: transparent;\n    color: var(--theme-text, var(--btn-color));\n    text-decoration: var(--link-decoration);\n  }\n  .btn-link:focus-visible {\n    color: var(--theme-text, var(--btn-color));\n  }\n  .btn-link:hover {\n    color: var(--theme-text-emphasis, var(--btn-hover-color));\n  }\n  .btn-xs,\n  .btn-group-xs > [class*=btn-] {\n    --btn-min-height: var(--btn-input-xs-min-height);\n    --btn-padding-y: var(--btn-input-xs-padding-y);\n    --btn-padding-x: var(--btn-input-xs-padding-x);\n    --btn-font-size: var(--btn-input-xs-font-size);\n    --btn-line-height: var(--btn-input-xs-line-height);\n    --btn-border-radius: var(--btn-input-xs-border-radius);\n  }\n  .btn-sm,\n  .btn-group-sm > [class*=btn-] {\n    --btn-min-height: var(--btn-input-sm-min-height);\n    --btn-padding-y: var(--btn-input-sm-padding-y);\n    --btn-padding-x: var(--btn-input-sm-padding-x);\n    --btn-font-size: var(--btn-input-sm-font-size);\n    --btn-line-height: var(--btn-input-sm-line-height);\n    --btn-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .btn-lg,\n  .btn-group-lg > [class*=btn-] {\n    --btn-min-height: var(--btn-input-lg-min-height);\n    --btn-padding-y: var(--btn-input-lg-padding-y);\n    --btn-padding-x: var(--btn-input-lg-padding-x);\n    --btn-font-size: var(--btn-input-lg-font-size);\n    --btn-line-height: var(--btn-input-lg-line-height);\n    --btn-border-radius: var(--btn-input-lg-border-radius);\n  }\n  .btn-icon {\n    align-items: center;\n    justify-content: center;\n    aspect-ratio: 1;\n    padding: 0;\n  }\n  .btn-check > input {\n    position: absolute;\n    clip: rect(0, 0, 0, 0);\n    pointer-events: none;\n  }\n  .btn-check:has(input:checked) {\n    color: var(--btn-active-color);\n    background-color: var(--btn-active-bg, var(--bg-3));\n    border-color: var(--btn-active-border-color);\n    box-shadow: var(--btn-active-shadow);\n  }\n  .btn-check:has(input:focus-visible) {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .btn-check:has(input:disabled) {\n    color: var(--btn-disabled-color);\n    pointer-events: none;\n    background-color: var(--btn-disabled-bg, var(--bg-1));\n    border-color: var(--btn-disabled-border-color);\n    opacity: var(--btn-disabled-opacity);\n    box-shadow: none;\n  }\n  .btn-styled {\n    --btn-gradient-start: rgba(255, 255, 255, 0.125);\n    --btn-gradient-end: rgba(0, 0, 0, 0.075);\n    --btn-border-mix-color: #000;\n    --btn-border-mix-amount: 10%;\n    --btn-border-hover-mix-amount: 12.5%;\n    --btn-border-active-mix-amount: 20%;\n    --btn-shadow: 0 1px 2px rgb(0 0 0 / 15%), inset 0 1px 0 rgb(255 255 255 / 10%);\n    --btn-active-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n    background-image: linear-gradient(to bottom, var(--btn-gradient-start), var(--btn-gradient-end));\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-mix-amount));\n    box-shadow: var(--btn-shadow);\n  }\n  .btn-styled:hover {\n    background-image: linear-gradient(to bottom, var(--btn-gradient-start), var(--btn-gradient-end));\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-hover-mix-amount));\n  }\n  .btn-styled:active, .btn-styled.active {\n    background-image: none;\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-active-mix-amount));\n    box-shadow: var(--btn-active-shadow);\n  }\n  .btn-styled:disabled, .btn-styled.disabled {\n    background-image: none;\n    box-shadow: none;\n  }\n}\n@layer components {\n  .btn-group,\n  .btn-group-vertical {\n    position: relative;\n    display: inline-flex;\n    vertical-align: middle;\n  }\n  .btn-group > [class*=btn-],\n  .btn-group-vertical > [class*=btn-] {\n    position: relative;\n    flex: 1 1 auto;\n  }\n  .btn-group > [class*=btn-]:hover,\n  .btn-group-vertical > [class*=btn-]:hover {\n    z-index: 1;\n  }\n  .btn-group > .btn-check:has(input:checked),\n  .btn-group > [class*=btn-]:active,\n  .btn-group > [class*=btn-].active,\n  .btn-group-vertical > .btn-check:has(input:checked),\n  .btn-group-vertical > [class*=btn-]:active,\n  .btn-group-vertical > [class*=btn-].active {\n    z-index: 2;\n  }\n  .btn-group > .btn-check:has(input:focus),\n  .btn-group > [class*=btn-]:focus,\n  .btn-group-vertical > .btn-check:has(input:focus),\n  .btn-group-vertical > [class*=btn-]:focus {\n    z-index: 3;\n  }\n  .btn-toolbar {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 0.5rem;\n    justify-content: flex-start;\n  }\n  .btn-toolbar .input-group {\n    width: auto;\n  }\n  .btn-group {\n    border-radius: var(--btn-border-radius);\n  }\n  .btn-group > [class*=btn-]:not(:first-child),\n  .btn-group > .btn-group:not(:first-child) {\n    margin-inline-start: calc(-1 * var(--btn-border-width));\n  }\n  .btn-group > [class*=btn-]:not(:last-child):not(:has(+ .menu)),\n  .btn-group > .btn-group:not(:last-child) > [class*=btn-] {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .btn-group > [class*=btn-]:not(:first-child),\n  .btn-group > .btn-group:not(:first-child) > [class*=btn-] {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .btn-group-vertical {\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: center;\n  }\n  .btn-group-vertical > [class*=btn-],\n  .btn-group-vertical > .btn-group {\n    width: 100%;\n  }\n  .btn-group-vertical > [class*=btn-]:not(:first-child),\n  .btn-group-vertical > .btn-group:not(:first-child) {\n    margin-top: calc(-1 * var(--btn-border-width));\n  }\n  .btn-group-vertical > [class*=btn-]:not(:last-child):not(:has(+ .menu)),\n  .btn-group-vertical > .btn-group:not(:last-child) > [class*=btn-] {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .btn-group-vertical > [class*=btn-]:not(:first-child),\n  .btn-group-vertical > .btn-group:not(:first-child) > [class*=btn-] {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n}\n@layer components {\n  .btn-close {\n    --btn-close-size: 1.25rem;\n    --btn-close-color: var(--fg-body);\n    --btn-close-opacity: 0.5;\n    --btn-close-hover-opacity: 0.75;\n    --btn-close-focus-opacity: 0.85;\n    --btn-close-disabled-opacity: 0.25;\n    box-sizing: content-box;\n    width: var(--btn-close-size);\n    height: var(--btn-close-size);\n    padding: 0;\n    color: var(--btn-close-color);\n    background: transparent;\n    border: 0;\n    border-radius: var(--border-radius-sm);\n    opacity: var(--btn-close-opacity);\n  }\n  .btn-close > svg {\n    display: block;\n    width: 100%;\n    height: 100%;\n    fill: currentcolor;\n  }\n  .btn-close:hover {\n    color: var(--btn-close-color);\n    text-decoration: none;\n    opacity: var(--btn-close-hover-opacity);\n  }\n  .btn-close:focus-visible {\n    opacity: var(--btn-close-focus-opacity);\n    outline: var(--focus-ring);\n  }\n  .btn-close:disabled, .btn-close.disabled {\n    pointer-events: none;\n    user-select: none;\n    opacity: var(--btn-close-disabled-opacity);\n  }\n}\n@layer components {\n  .accordion {\n    --accordion-padding-x: 1.25rem;\n    --accordion-padding-y: 1rem;\n    --accordion-color: var(--fg-body);\n    --accordion-bg: var(--bg-body);\n    --accordion-transition-property: color, background-color, border-radius;\n    --accordion-transition-timing: .15s ease-in-out;\n    --accordion-transition: var(--accordion-transition-property) var(--accordion-timing);\n    --accordion-border-color: var(--border-color);\n    --accordion-border-width: var(--border-width);\n    --accordion-border-radius: var(--accordion-radius, var(--border-radius-lg));\n    --accordion-btn-color: var(--fg-2);\n    --accordion-btn-bg: var(--bg-body);\n    --accordion-btn-icon-width: 1rem;\n    --accordion-btn-icon-transform: rotate(-180deg);\n    --accordion-btn-icon-transition: transform 0.2s ease-in-out;\n    --accordion-active-color: var(--fg);\n    --accordion-active-bg: var(--bg-2);\n  }\n  .accordion-header {\n    display: flex;\n    align-items: center;\n    width: 100%;\n    padding: var(--accordion-btn-padding-y, var(--accordion-padding-y)) var(--accordion-btn-padding-x, var(--accordion-padding-x));\n    font-size: var(--accordion-font-size, var(--font-size-base));\n    color: var(--accordion-btn-color);\n    text-align: start;\n    list-style: none;\n    cursor: pointer;\n    background-color: var(--accordion-btn-bg);\n    transition: var(--accordion-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-header {\n      transition: none;\n    }\n  }\n  .accordion-header .accordion-icon {\n    flex-shrink: 0;\n    width: var(--accordion-btn-icon-width);\n    height: var(--accordion-btn-icon-width);\n    margin-inline-start: auto;\n    color: currentcolor;\n    transition: var(--accordion-btn-icon-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-header .accordion-icon {\n      transition: none;\n    }\n  }\n  .accordion-header:hover {\n    z-index: 2;\n  }\n  .accordion-header:focus-visible {\n    position: relative;\n    z-index: 3;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    outline-offset: -1px;\n  }\n  .accordion-item {\n    color: var(--accordion-color);\n    background-color: var(--accordion-bg);\n    border: var(--accordion-border-width) solid var(--accordion-border-color);\n  }\n  .accordion-item:first-of-type {\n    border-start-start-radius: var(--accordion-border-radius);\n    border-start-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item:first-of-type > .accordion-header {\n    border-start-start-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n    border-start-end-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n  }\n  .accordion-item:not(:first-of-type) {\n    border-block-start: 0;\n  }\n  .accordion-item:last-of-type {\n    border-end-start-radius: var(--accordion-border-radius);\n    border-end-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item:last-of-type > .accordion-header {\n    border-end-start-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n    border-end-end-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n  }\n  .accordion-item:last-of-type > .accordion-body {\n    border-end-start-radius: var(--accordion-border-radius);\n    border-end-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item[open] {\n    border-color: var(--theme-border, var(--accordion-border-color));\n  }\n  .accordion-item[open] > .accordion-header {\n    color: var(--theme-text, var(--accordion-active-color));\n    background-color: var(--theme-bg-subtle, var(--accordion-active-bg));\n    box-shadow: inset 0 calc(-1 * var(--accordion-border-width)) 0 var(--theme-border, var(--accordion-border-color));\n  }\n  .accordion-item[open] > .accordion-header .accordion-icon {\n    transform: var(--accordion-btn-icon-transform);\n  }\n  .accordion-item[open]:last-of-type > .accordion-header {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .accordion-body {\n    padding: var(--accordion-body-padding-y, var(--accordion-padding-y)) var(--accordion-body-padding-x, var(--accordion-padding-x));\n  }\n  .accordion-flush > .accordion-item {\n    border-inline: 0;\n    border-radius: 0;\n  }\n  .accordion-flush > .accordion-item:first-child {\n    border-block-start: 0;\n  }\n  .accordion-flush > .accordion-item:last-child {\n    border-block-end: 0;\n  }\n  .accordion-flush > .accordion-item > .accordion-header,\n  .accordion-flush > .accordion-item > .accordion-body {\n    border-radius: 0;\n  }\n}\n@layer components {\n  .alert {\n    --alert-gap: 0.75rem;\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1));\n    --alert-padding-x: 1rem;\n    --alert-padding-y: 1rem;\n    --alert-color: var(--theme-text, inherit);\n    --alert-border-color: var(--theme-border, var(--border-color));\n    --alert-border: var(--border-width) solid var(--alert-border-color);\n    --alert-border-radius: var(--border-radius);\n    --alert-link-color: inherit;\n    --hr-border-color: var(--theme-border, var(--border-color));\n    display: flex;\n    gap: var(--alert-gap);\n    align-items: start;\n    padding: var(--alert-padding-y) var(--alert-padding-x);\n    color: var(--alert-color);\n    background-color: var(--alert-bg);\n    border: var(--alert-border);\n    border-radius: var(--alert-border-radius);\n  }\n  .alert-heading {\n    color: inherit;\n  }\n  .alert-link {\n    font-weight: var(--font-weight-semibold);\n    color: var(--alert-link-color);\n  }\n}\n@layer components {\n  .avatar {\n    --avatar-size: 2.5rem;\n    --avatar-border-radius: 50%;\n    --avatar-border-width: 2px;\n    --avatar-border-color: var(--bg-body);\n    --avatar-bg: var(--bg-2);\n    --avatar-color: var(--fg-body);\n    --avatar-status-size: 0.75rem;\n    --avatar-status-border-width: 2px;\n    --avatar-status-border-color: var(--bg-body);\n    --avatar-stack-spacing: -0.3;\n    --avatar-stack-transition: transform .2s ease-in-out;\n    position: relative;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--avatar-size);\n    height: var(--avatar-size);\n    font-size: calc(var(--avatar-size) * 0.4);\n    font-weight: var(--avatar-font-weight, var(--font-weight-medium));\n    line-height: 1;\n    color: var(--theme-contrast, var(--avatar-color));\n    text-transform: uppercase;\n    vertical-align: middle;\n    background-color: var(--theme-bg, var(--avatar-bg));\n    border-radius: var(--avatar-border-radius);\n  }\n  .avatar-subtle {\n    color: var(--theme-text, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n  .avatar-img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    border-radius: inherit;\n  }\n  .avatar-status {\n    position: absolute;\n    right: calc(var(--avatar-status-border-width) * -1);\n    bottom: calc(var(--avatar-status-border-width) * -1);\n    width: var(--avatar-status-size);\n    height: var(--avatar-status-size);\n    background-color: var(--gray-400);\n    border: var(--avatar-status-border-width) solid var(--avatar-status-border-color);\n    border-radius: 50%;\n  }\n  .avatar-status.status-online {\n    background-color: var(--green-500);\n  }\n  .avatar-status.status-offline {\n    background-color: var(--gray-400);\n    border-radius: 20%;\n  }\n  .avatar-status.status-busy {\n    background-color: var(--red-500);\n    border-radius: 20%;\n  }\n  .avatar-status.status-away {\n    background-color: var(--yellow-500);\n  }\n  .avatar-stack {\n    display: inline-flex;\n    flex-direction: row-reverse;\n  }\n  .avatar-stack .avatar {\n    margin-left: calc(var(--avatar-size) * var(--avatar-stack-spacing));\n    border: var(--avatar-border-width) solid var(--avatar-border-color);\n    mask-image: none;\n    transition: var(--avatar-stack-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .avatar-stack .avatar {\n      transition: none;\n    }\n  }\n  .avatar-stack .avatar:last-child {\n    margin-left: 0;\n  }\n  .avatar-stack .avatar:hover {\n    z-index: 1;\n    transform: translateY(-2px);\n  }\n  .avatar-xs,\n  .avatar-stack-xs {\n    --avatar-size: 1.5rem;\n    --avatar-status-size: 0.625rem;\n  }\n  .avatar-sm,\n  .avatar-stack-sm {\n    --avatar-size: 2rem;\n  }\n  .avatar-lg,\n  .avatar-stack-lg {\n    --avatar-size: 3rem;\n    --avatar-status-size: 1rem;\n  }\n  .avatar-xl,\n  .avatar-stack-xl {\n    --avatar-size: 4rem;\n    --avatar-status-size: 1.25rem;\n  }\n}\n@layer components {\n  .badge {\n    --badge-padding-x: 0.625em;\n    --badge-padding-y: 0.25em;\n    --badge-font-size: clamp(12px, 0.75em, 0.75em);\n    --badge-font-weight: var(--font-weight-semibold);\n    --badge-color: inherit;\n    --badge-bg: var(--bg-2);\n    --badge-border-width: var(--border-width);\n    --badge-border-color: transparent;\n    --badge-border-radius: var(--border-radius-lg);\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 1.375rem;\n    padding: var(--badge-padding-y) var(--badge-padding-x);\n    font-size: var(--badge-font-size);\n    font-weight: var(--badge-font-weight);\n    line-height: 1;\n    color: var(--theme-contrast, var(--badge-color));\n    text-align: center;\n    white-space: nowrap;\n    vertical-align: baseline;\n    background-color: var(--theme-bg, var(--badge-bg));\n    border: var(--badge-border-width) solid var(--badge-border-color);\n    border-radius: var(--badge-border-radius);\n  }\n  .badge:empty {\n    display: none;\n  }\n  .btn .badge {\n    position: relative;\n    top: -1px;\n  }\n  .badge-subtle {\n    --badge-color: var(--theme-text);\n    --badge-bg: var(--theme-bg-subtle);\n    --badge-border-color: transparent;\n    color: var(--badge-color);\n    background-color: var(--badge-bg);\n    border-color: var(--badge-border-color);\n  }\n  .badge-outline {\n    --badge-color: var(--theme-text);\n    --badge-bg: transparent;\n    --badge-border-color: var(--theme-border);\n    color: var(--badge-color);\n    background-color: var(--badge-bg);\n    border-color: var(--badge-border-color);\n  }\n}\n@layer components {\n  .breadcrumb {\n    --breadcrumb-margin-bottom: 1rem;\n    --breadcrumb-font-size: inherit;\n    --breadcrumb-bg: transparent;\n    --breadcrumb-border-radius: var(--border-radius);\n    --breadcrumb-divider-color: var(--fg-4);\n    --breadcrumb-link-padding-x: 0.75rem;\n    --breadcrumb-link-padding-y: 0.25rem;\n    --breadcrumb-link-color: var(--fg-3);\n    --breadcrumb-link-hover-color: var(--fg-2);\n    --breadcrumb-link-hover-bg: var(--bg-1);\n    --breadcrumb-link-active-color: var(--fg-1);\n    --breadcrumb-link-border-radius: var(--border-radius-lg);\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    padding: var(--breadcrumb-padding-y, 0) var(--breadcrumb-padding-x, 0);\n    font-size: var(--breadcrumb-font-size);\n    list-style: none;\n    background-color: var(--breadcrumb-bg);\n    border-radius: var(--breadcrumb-border-radius);\n  }\n  .breadcrumb-item {\n    display: flex;\n  }\n  .breadcrumb-divider {\n    margin-inline: calc(var(--breadcrumb-link-padding-x) / 4);\n    color: var(--breadcrumb-divider-color);\n  }\n  .breadcrumb-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 2.25rem;\n    padding: var(--breadcrumb-link-padding-y) var(--breadcrumb-link-padding-x);\n    color: var(--breadcrumb-link-color);\n    text-decoration: none;\n    border-radius: var(--breadcrumb-link-border-radius);\n    transition: 0.1s text-decoration-color ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .breadcrumb-link {\n      transition: none;\n    }\n  }\n  .breadcrumb-link:hover {\n    z-index: 2;\n    color: var(--breadcrumb-link-hover-color);\n    background-color: var(--breadcrumb-link-hover-bg);\n  }\n  .breadcrumb-link.active {\n    color: var(--breadcrumb-link-active-color);\n  }\n}\n@layer components {\n  .chip {\n    --chip-height: 1.75rem;\n    --chip-padding-x: 0.625rem;\n    --chip-gap: 0.3125rem;\n    --chip-border-radius: var(--border-radius-pill);\n    --chip-img-size: 1.25rem;\n    --chip-icon-size: 1rem;\n    --chip-dismiss-size: 1rem;\n    --chip-dismiss-opacity: 0.65;\n    --chip-dismiss-hover-opacity: 1;\n    --chip-color: var(--theme-text, var(--fg-body));\n    --chip-bg: var(--theme-bg-subtle, var(--bg-2));\n    --chip-border-color: transparent;\n    --chip-selected-color: var(--theme-contrast, var(--primary-contrast));\n    --chip-selected-bg: var(--theme-bg, var(--primary-bg));\n    --chip-selected-border-color: var(--theme-bg, var(--primary-bg));\n    display: inline-flex;\n    gap: var(--chip-gap);\n    align-items: center;\n    height: var(--chip-height);\n    padding-inline: var(--chip-padding-x);\n    font-size: var(--chip-font-size, var(--font-size-sm));\n    font-weight: var(--chip-font-weight, var(--font-weight-base));\n    line-height: var(--chip-line-height, 1.25rem);\n    color: var(--chip-color);\n    text-decoration: none;\n    white-space: nowrap;\n    vertical-align: middle;\n    cursor: pointer;\n    background-color: var(--chip-bg);\n    border: var(--border-width) solid var(--chip-border-color);\n    border-radius: var(--chip-border-radius);\n  }\n  .chip:hover {\n    --chip-bg: var(--theme-bg-muted, var(--bg-3));\n  }\n  .chip:focus-visible {\n    outline: 0;\n  }\n  .chip.active {\n    --chip-color: var(--chip-selected-color);\n    --chip-bg: var(--chip-selected-bg);\n    --chip-border-color: var(--chip-selected-border-color);\n  }\n  .chip.active:hover {\n    --chip-bg: var(--chip-selected-bg);\n    opacity: 0.9;\n  }\n  .chip.disabled, .chip:disabled {\n    pointer-events: none;\n    opacity: 0.65;\n  }\n  .chip-img {\n    width: var(--chip-img-size);\n    height: var(--chip-img-size);\n    border-radius: 50%;\n  }\n  .chip-img:first-child {\n    margin-inline-start: -0.375rem;\n  }\n  .chip-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    margin-inline-start: calc(var(--chip-gap) * -0.25);\n  }\n  .chip-icon > svg {\n    display: block;\n    width: var(--chip-icon-size);\n    height: var(--chip-icon-size);\n  }\n  .chip-icon > img {\n    width: var(--chip-icon-size);\n    height: var(--chip-icon-size);\n    object-fit: cover;\n    border-radius: 50%;\n  }\n  .chip-dismiss {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--chip-min-height);\n    height: var(--chip-min-height);\n    padding: 0;\n    margin-inline-end: calc(var(--chip-padding-x) * -0.25);\n    color: inherit;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    opacity: var(--chip-dismiss-opacity);\n  }\n  .chip-dismiss:hover {\n    opacity: var(--chip-dismiss-hover-opacity);\n  }\n  .chip-dismiss:focus-visible {\n    outline: 0;\n    opacity: 1;\n    outline: var(--focus-ring);\n  }\n  .chip-dismiss > svg {\n    display: block;\n    width: var(--chip-dismiss-size);\n    height: var(--chip-dismiss-size);\n  }\n}\n@layer components {\n  .card {\n    --card-spacer-y: 1rem;\n    --card-spacer-x: 1rem;\n    --card-subtitle-color: inherit;\n    --card-border-width: var(--border-width);\n    --card-border-color: var(--border-color-translucent);\n    --card-border-radius: var(--border-radius-lg);\n    --card-box-shadow: none;\n    --card-inner-border-radius: calc(var(--border-radius-lg) - var(--border-width));\n    --card-cap-padding-y: 0.75rem;\n    --card-cap-padding-x: 1rem;\n    --card-cap-bg: var(--bg-1);\n    --card-cap-color: inherit;\n    --card-height: auto;\n    --card-color: inherit;\n    --card-bg: var(--bg-body);\n    --card-img-overlay-padding: 1rem;\n    --card-group-margin: 0.75rem;\n    --card-body-gap: 0.5rem;\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    min-width: 0;\n    height: var(--card-height);\n    color: var(--fg-body);\n    word-wrap: break-word;\n    background-color: var(--card-bg);\n    box-shadow: var(--card-box-shadow);\n  }\n  .card > hr {\n    margin-inline: 0;\n  }\n  .card-body {\n    display: flex;\n    flex: 1 1 auto;\n    flex-direction: column;\n    gap: var(--card-body-gap);\n    align-items: flex-start;\n    padding: var(--card-spacer-y) var(--card-spacer-x);\n    color: var(--card-color);\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n  }\n  .card-body > * {\n    margin-block: 0;\n  }\n  .card-body,\n  .card-list {\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n  }\n  .card-body:first-child,\n  .card-list:first-child {\n    border-start-start-radius: var(--card-border-radius);\n    border-start-end-radius: var(--card-border-radius);\n    border-top-width: var(--card-border-width);\n  }\n  .card-body:last-child,\n  .card-list:last-child {\n    border-end-start-radius: var(--card-border-radius);\n    border-end-end-radius: var(--card-border-radius);\n    border-bottom-width: var(--card-border-width);\n  }\n  .card-body:not(:first-child):not(:last-child),\n  .card-list:not(:first-child):not(:last-child) {\n    border-block-end-width: var(--card-border-width);\n  }\n  .card-title,\n  .card-subtitle,\n  .card-text {\n    align-self: stretch;\n  }\n  .card-subtitle {\n    margin-top: calc(var(--card-body-gap) * -0.5);\n  }\n  .card-header {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    margin-bottom: 0;\n    color: var(--theme-contrast, var(--card-cap-color));\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n  }\n  .card-header:first-child {\n    border-radius: var(--card-inner-border-radius) var(--card-inner-border-radius) 0 0;\n  }\n  .card-footer {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    color: var(--card-cap-color);\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n  }\n  .card-footer:last-child {\n    border-radius: 0 0 var(--card-inner-border-radius) var(--card-inner-border-radius);\n  }\n  .card-translucent {\n    background-color: color-mix(in oklch, var(--card-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .card-translucent .card-header,\n  .card-translucent .card-footer {\n    background-color: color-mix(in oklch, var(--card-cap-bg) 60%, transparent);\n  }\n  .card-subtle {\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-header {\n    color: var(--theme-text-emphasis, currentcolor);\n    background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-footer {\n    color: var(--theme-text-emphasis, currentcolor);\n    background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-body,\n  .card-subtle .card-list {\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .nav.card-header-tabs {\n    margin-inline: calc(-0.5 * var(--card-cap-padding-x));\n    margin-bottom: calc(-1 * var(--card-cap-padding-y));\n    border-block-end: 0;\n  }\n  .nav.card-header-tabs .nav-link.active {\n    background-color: var(--card-bg);\n    border-block-end-color: var(--card-bg);\n  }\n  .card-img-overlay {\n    position: absolute;\n    inset: 0;\n    padding: var(--card-img-overlay-padding);\n    border-radius: var(--card-inner-border-radius);\n  }\n  .card-img,\n  .card-img-top,\n  .card-img-bottom {\n    width: 100%;\n    outline: var(--card-border-width) solid var(--card-border-color);\n    outline-offset: calc(var(--card-border-width) * -1);\n  }\n  .card-img,\n  .card-img-top {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-start-end-radius: var(--card-inner-border-radius);\n  }\n  .card-img,\n  .card-img-bottom {\n    border-end-start-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n  }\n  .card-row {\n    flex-direction: row;\n  }\n  .card-row .card-body,\n  .card-row .card-list {\n    border-width: var(--card-border-width) 0;\n    border-radius: 0;\n  }\n  .card-row .card-body:first-child,\n  .card-row .card-list:first-child {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-end-start-radius: var(--card-inner-border-radius);\n    border-inline-start-width: var(--card-border-width);\n  }\n  .card-row .card-body:last-child,\n  .card-row .card-list:last-child {\n    border-start-end-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n    border-inline-end-width: var(--card-border-width);\n  }\n  .card-row .card-body:not(:first-child):not(:last-child),\n  .card-row .card-list:not(:first-child):not(:last-child) {\n    border-inline-end-width: var(--card-border-width);\n  }\n  .card-img-start {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-end-start-radius: var(--card-inner-border-radius);\n  }\n  .card-img-end {\n    border-start-end-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n  }\n  .card-group > .card {\n    margin-bottom: var(--card-group-margin);\n  }\n  @media (width >= 576px) {\n    .card-group {\n      display: flex;\n      flex-flow: row wrap;\n    }\n    .card-group > .card {\n      flex: 1 0 0;\n      margin-bottom: 0;\n    }\n    .card-group > .card + .card {\n      margin-inline-start: 0;\n      border-inline-start: 0;\n    }\n    .card-group > .card:not(:last-child) {\n      border-start-end-radius: 0;\n      border-end-end-radius: 0;\n    }\n    .card-group > .card:not(:last-child) > .card-img-top,\n    .card-group > .card:not(:last-child) > .card-header {\n      border-start-end-radius: 0;\n    }\n    .card-group > .card:not(:last-child) > .card-img-bottom,\n    .card-group > .card:not(:last-child) > .card-footer {\n      border-end-end-radius: 0;\n    }\n    .card-group > .card:not(:first-child) {\n      border-start-start-radius: 0;\n      border-end-start-radius: 0;\n    }\n    .card-group > .card:not(:first-child) > .card-img-top,\n    .card-group > .card:not(:first-child) > .card-header {\n      border-start-start-radius: 0;\n    }\n    .card-group > .card:not(:first-child) > .card-img-bottom,\n    .card-group > .card:not(:first-child) > .card-footer {\n      border-end-start-radius: 0;\n    }\n  }\n}\n@layer components {\n  .carousel {\n    position: relative;\n    --carousel-control-color: #fff;\n    --carousel-control-width: 15%;\n    --carousel-control-opacity: 0.5;\n    --carousel-control-hover-opacity: 0.9;\n    --carousel-control-transition: opacity 0.15s ease;\n    --carousel-control-icon-filter: none;\n    --carousel-indicator-width: 30px;\n    --carousel-indicator-height: 3px;\n    --carousel-indicator-hit-area-height: 10px;\n    --carousel-indicator-spacer: 3px;\n    --carousel-indicator-opacity: 0.5;\n    --carousel-indicator-active-bg: var(--white);\n    --carousel-indicator-active-opacity: 1;\n    --carousel-indicator-transition: opacity 0.6s ease;\n    --carousel-caption-width: 70%;\n    --carousel-caption-color: var(--white);\n    --carousel-caption-padding-y: 1.25rem;\n    --carousel-caption-spacer: 1.25rem;\n    --carousel-control-icon-width: 2rem;\n    --carousel-control-prev-icon-bg: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>\");\n    --carousel-control-next-icon-bg: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>\");\n    --carousel-transition-duration: 0.6s;\n    --carousel-transition: transform 0.6s ease-in-out;\n  }\n  .carousel.pointer-event {\n    touch-action: pan-y;\n  }\n  .carousel-inner {\n    position: relative;\n    display: flow-root;\n    width: 100%;\n    overflow: hidden;\n  }\n  .carousel-item {\n    position: relative;\n    display: none;\n    float: inline-start;\n    width: 100%;\n    margin-inline-end: -100%;\n    backface-visibility: hidden;\n    transition: var(--carousel-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-item {\n      transition: none;\n    }\n  }\n  .carousel-item.active,\n  .carousel-item-next,\n  .carousel-item-prev {\n    display: block;\n  }\n  .carousel-item-next:not(.carousel-item-start),\n  .active.carousel-item-end {\n    transform: translateX(100%);\n  }\n  .carousel-item-prev:not(.carousel-item-end),\n  .active.carousel-item-start {\n    transform: translateX(-100%);\n  }\n  .carousel-fade .carousel-item {\n    opacity: 0;\n    transition-property: opacity;\n    transform: none;\n  }\n  .carousel-fade .carousel-item.active,\n  .carousel-fade .carousel-item-next.carousel-item-start,\n  .carousel-fade .carousel-item-prev.carousel-item-end {\n    z-index: 1;\n    opacity: 1;\n  }\n  .carousel-fade .active.carousel-item-start,\n  .carousel-fade .active.carousel-item-end {\n    z-index: 0;\n    opacity: 0;\n    transition: opacity 0s var(--carousel-transition-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-fade .active.carousel-item-start,\n    .carousel-fade .active.carousel-item-end {\n      transition: none;\n    }\n  }\n  .carousel-control-prev,\n  .carousel-control-next {\n    position: absolute;\n    inset-block: 0;\n    z-index: 1;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--carousel-control-width);\n    padding: 0;\n    color: var(--carousel-control-color);\n    text-align: center;\n    background: none;\n    filter: var(--carousel-control-icon-filter);\n    border: 0;\n    opacity: var(--carousel-control-opacity);\n    transition: var(--carousel-control-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-control-prev,\n    .carousel-control-next {\n      transition: none;\n    }\n  }\n  .carousel-control-prev:hover, .carousel-control-prev:focus,\n  .carousel-control-next:hover,\n  .carousel-control-next:focus {\n    color: var(--carousel-control-color);\n    text-decoration: none;\n    outline: 0;\n    opacity: var(--carousel-control-hover-opacity);\n  }\n  .carousel-control-prev {\n    inset-inline-start: 0;\n  }\n  .carousel-control-next {\n    inset-inline-end: 0;\n  }\n  .carousel-control-prev-icon,\n  .carousel-control-next-icon {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-repeat: no-repeat;\n    background-position: 50%;\n    background-size: 100% 100%;\n  }\n  .carousel-control-prev-icon {\n    background-image: var(--carousel-control-prev-icon-bg);\n  }\n  [dir=rtl] .carousel-control-prev-icon {\n    background-image: var(--carousel-control-next-icon-bg);\n  }\n  .carousel-control-next-icon {\n    background-image: var(--carousel-control-next-icon-bg);\n  }\n  [dir=rtl] .carousel-control-next-icon {\n    background-image: var(--carousel-control-prev-icon-bg);\n  }\n  .carousel-indicators {\n    position: absolute;\n    inset: auto 0 0;\n    z-index: 2;\n    display: flex;\n    justify-content: center;\n    padding: 0;\n    margin-inline: var(--carousel-control-width);\n    margin-bottom: 1rem;\n  }\n  .carousel-indicators [data-bs-target] {\n    box-sizing: content-box;\n    flex: 0 1 auto;\n    width: var(--carousel-indicator-width);\n    height: var(--carousel-indicator-height);\n    padding: 0;\n    margin-inline: var(--carousel-indicator-spacer);\n    text-indent: -999px;\n    cursor: pointer;\n    background-color: var(--carousel-indicator-active-bg);\n    background-clip: padding-box;\n    border: 0;\n    border-block: var(--carousel-indicator-hit-area-height) solid transparent;\n    opacity: var(--carousel-indicator-opacity);\n    transition: var(--carousel-indicator-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-indicators [data-bs-target] {\n      transition: none;\n    }\n  }\n  .carousel-indicators .active {\n    opacity: var(--carousel-indicator-active-opacity);\n  }\n  .carousel-caption {\n    position: absolute;\n    right: calc((100% - var(--carousel-caption-width)) * 0.5);\n    bottom: var(--carousel-caption-spacer);\n    left: calc((100% - var(--carousel-caption-width)) * 0.5);\n    padding-top: var(--carousel-caption-padding-y);\n    padding-bottom: var(--carousel-caption-padding-y);\n    color: var(--carousel-caption-color);\n    text-align: center;\n  }\n  .carousel-dark {\n    --carousel-indicator-active-bg: #000;\n    --carousel-caption-color: #000;\n    --carousel-control-icon-filter: invert(1) grayscale(100);\n  }\n  @media (prefers-color-scheme: dark) {\n    :root {\n      --carousel-indicator-active-bg: #000;\n      --carousel-caption-color: #000;\n      --carousel-control-icon-filter: invert(1) grayscale(100);\n    }\n  }\n}\n@layer components {\n  [data-vc=calendar] {\n    --datepicker-padding: 1rem;\n    --datepicker-bg: var(--bg-body);\n    --datepicker-color: var(--fg-body);\n    --datepicker-border-color: var(--border-color-translucent);\n    --datepicker-border-width: var(--border-width);\n    --datepicker-border-radius: var(--border-radius-lg);\n    --datepicker-box-shadow: var(--box-shadow);\n    --datepicker-font-size: var(--font-size-sm);\n    --datepicker-min-width: 280px;\n    --datepicker-zindex: 1000;\n    --datepicker-header-font-weight: 600;\n    --datepicker-weekday-color: var(--fg-3);\n    --datepicker-day-hover-bg: var(--bg-1);\n    --datepicker-day-selected-bg: var(--primary-bg);\n    --datepicker-day-selected-color: var(--primary-contrast);\n    --datepicker-day-today-bg: var(--bg-2);\n    --datepicker-day-today-color: var(--fg-1);\n    --datepicker-day-disabled-color: var(--fg-4);\n    position: absolute;\n    z-index: var(--datepicker-zindex);\n    box-sizing: border-box;\n    display: flex;\n    flex-direction: column;\n    min-width: var(--datepicker-min-width);\n    padding: var(--datepicker-padding);\n    font-family: var(--font-sans-serif);\n    font-size: var(--datepicker-font-size);\n    color: var(--datepicker-color);\n    color-scheme: light dark;\n    background-color: var(--datepicker-bg);\n    border: var(--datepicker-border-width) solid var(--datepicker-border-color);\n    border-radius: var(--datepicker-border-radius);\n    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n  }\n  [data-vc=calendar][data-bs-theme=light] {\n    color-scheme: light;\n  }\n  [data-vc=calendar][data-bs-theme=dark] {\n    color-scheme: dark;\n  }\n  [data-vc=calendar] button:focus-visible {\n    position: relative;\n    z-index: 1;\n    outline: var(--focus-ring);\n  }\n  [data-vc-calendar-hidden] {\n    pointer-events: none;\n    opacity: 0;\n  }\n  [data-vc=calendar]:not([data-vc-input]) {\n    position: relative;\n    width: fit-content;\n    padding: 0;\n    border: 0;\n    box-shadow: none;\n  }\n  [data-vc-position=bottom] {\n    margin-block-start: 0.25rem;\n  }\n  [data-vc-position=top] {\n    margin-block-end: -0.25rem;\n  }\n  [data-vc-arrow] {\n    position: relative;\n    display: block;\n    width: 2rem;\n    height: 2rem;\n    color: var(--datepicker-color);\n    pointer-events: auto;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--border-radius);\n  }\n  [data-vc-arrow]::before {\n    position: absolute;\n    inset: 0.25rem;\n    content: \"\";\n    background-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%236b7280' d='M12 16c-.3 0-.5-.1-.7-.3l-6-6c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l5.3 5.3 5.3-5.3c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-6 6c-.2.2-.4.3-.7.3'/></svg>\");\n    background-repeat: no-repeat;\n    background-position: center;\n  }\n  [data-vc-arrow]:hover {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-arrow=prev]::before {\n    transform: rotate(90deg);\n  }\n  [data-vc-arrow=next]::before {\n    transform: rotate(-90deg);\n  }\n  [data-vc=controls] {\n    position: absolute;\n    top: 0;\n    right: 0;\n    left: 0;\n    z-index: 20;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding-top: 1rem;\n    padding-right: 1rem;\n    padding-left: 1rem;\n    pointer-events: none;\n  }\n  [data-vc=grid] {\n    display: flex;\n    flex-grow: 1;\n    flex-wrap: wrap;\n    gap: 1.75rem;\n  }\n  [data-vc=column] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    min-width: 240px;\n  }\n  [data-vc=header] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    margin-bottom: 0.75rem;\n  }\n  [data-vc-header=content] {\n    display: inline-flex;\n    flex-grow: 1;\n    align-items: center;\n    justify-content: center;\n    white-space: pre-wrap;\n  }\n  [data-vc=month],\n  [data-vc=year] {\n    padding: 0.25rem 0.5rem;\n    margin-inline: -0.125rem;\n    font-size: 1rem;\n    font-weight: var(--datepicker-header-font-weight);\n    color: var(--datepicker-color);\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--border-radius);\n  }\n  [data-vc=month]:disabled,\n  [data-vc=year]:disabled {\n    color: var(--datepicker-day-disabled-color);\n    pointer-events: none;\n  }\n  [data-vc=month]:hover:not(:disabled),\n  [data-vc=year]:hover:not(:disabled) {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc=content] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n  }\n  [data-vc=months],\n  [data-vc=years] {\n    display: grid;\n    flex-grow: 1;\n    grid-template-columns: repeat(var(--vc-columns, 4), minmax(0, 1fr));\n    row-gap: 1rem;\n    column-gap: 0.25rem;\n    align-items: center;\n  }\n  [data-vc=years] {\n    --vc-columns: 5;\n  }\n  [data-vc-months-month],\n  [data-vc-years-year] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 2.5rem;\n    padding: 0.25rem;\n    font-size: 0.75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    text-align: center;\n    word-break: break-all;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--border-radius);\n  }\n  [data-vc-months-month]:disabled,\n  [data-vc-years-year]:disabled {\n    color: var(--datepicker-day-disabled-color);\n    pointer-events: none;\n  }\n  [data-vc-months-month]:hover:not(:disabled),\n  [data-vc-years-year]:hover:not(:disabled) {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-months-month][data-vc-months-month-selected], [data-vc-months-month][data-vc-years-year-selected],\n  [data-vc-years-year][data-vc-months-month-selected],\n  [data-vc-years-year][data-vc-years-year-selected] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc-months-month][data-vc-months-month-selected]:hover, [data-vc-months-month][data-vc-years-year-selected]:hover,\n  [data-vc-years-year][data-vc-months-month-selected]:hover,\n  [data-vc-years-year][data-vc-years-year-selected]:hover {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc=week] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    justify-items: center;\n    margin-bottom: 0.5rem;\n  }\n  [data-vc-week-day] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    padding: 0;\n    margin: 0;\n    font-size: 0.75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    background-color: transparent;\n    border: 0;\n  }\n  button[data-vc-week-day] {\n    cursor: pointer;\n  }\n  [data-vc=dates] {\n    pointer-events: none;\n  }\n  [data-vc-dates=row] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    align-items: center;\n    justify-items: center;\n    width: 100%;\n  }\n  [data-vc-date] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    padding-top: 0.125rem;\n    padding-bottom: 0.125rem;\n    pointer-events: auto;\n  }\n  [data-vc-date]:not(:has([data-vc-date-btn])), [data-vc-date][data-vc-date-disabled], [data-vc-date][data-vc-date-disabled] [data-vc-date-btn] {\n    pointer-events: none;\n  }\n  [data-vc-date-btn] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    height: 100%;\n    min-height: 1.875rem;\n    padding: 0;\n    font-size: 0.75rem;\n    font-weight: 400;\n    line-height: 1rem;\n    color: var(--datepicker-color);\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--border-radius);\n  }\n  [data-vc-date-btn]:hover {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-date-today] [data-vc-date-btn] {\n    font-weight: 600;\n    color: var(--datepicker-day-today-color);\n    background-color: var(--datepicker-day-today-bg);\n  }\n  [data-vc-date-month=next] [data-vc-date-btn],\n  [data-vc-date-month=prev] [data-vc-date-btn] {\n    opacity: 0.5;\n  }\n  [data-vc-date-disabled] [data-vc-date-btn] {\n    color: var(--datepicker-day-disabled-color);\n  }\n  [data-vc-date-hover] [data-vc-date-btn] {\n    background-color: var(--datepicker-day-hover-bg);\n    border-radius: 0;\n  }\n  [data-vc-date-hover=first] [data-vc-date-btn] {\n    border-start-start-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  [data-vc-date-hover=last] [data-vc-date-btn] {\n    border-start-end-radius: var(--border-radius);\n    border-end-end-radius: var(--border-radius);\n  }\n  [data-vc-date-hover=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--border-radius);\n  }\n  [data-vc-date-selected=middle] [data-vc-date-btn] {\n    border-radius: 0;\n    opacity: 0.8;\n  }\n  [data-vc-date-selected] [data-vc-date-btn] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc-date-selected=first] [data-vc-date-btn] {\n    border-top-left-radius: var(--border-radius);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--border-radius);\n  }\n  [data-vc-date-selected=last] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--border-radius);\n    border-bottom-right-radius: var(--border-radius);\n    border-bottom-left-radius: 0;\n  }\n  [data-vc-date-selected=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--border-radius);\n  }\n}\n@layer components {\n  .dialog-open {\n    overflow: hidden;\n    scrollbar-gutter: stable;\n  }\n  .dialog {\n    --dialog-padding: 1rem;\n    --dialog-width: 500px;\n    --dialog-margin: 1.75rem;\n    --dialog-color: var(--fg-body);\n    --dialog-bg: var(--bg-body);\n    --dialog-border-color: var(--border-color-translucent);\n    --dialog-border-width: var(--border-width);\n    --dialog-border-radius: var(--border-radius-lg);\n    --dialog-box-shadow: var(--box-shadow-lg);\n    --dialog-backdrop-bg: rgba(0, 0, 0, 0.5);\n    --dialog-backdrop-blur: 8px;\n    --dialog-header-padding: 1rem;\n    --dialog-header-border-color: var(--border-color);\n    --dialog-header-border-width: var(--border-width);\n    --dialog-footer-padding: 1rem;\n    --dialog-footer-border-color: var(--border-color);\n    --dialog-footer-border-width: var(--border-width);\n    --dialog-footer-gap: 0.5rem;\n    max-width: var(--dialog-width);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    color: var(--dialog-color);\n    background-color: var(--dialog-bg);\n    background-clip: padding-box;\n    border: var(--dialog-border-width) solid var(--dialog-border-color);\n    border-radius: var(--dialog-border-radius);\n    box-shadow: var(--dialog-box-shadow);\n  }\n  .dialog::backdrop {\n    background-color: var(--dialog-backdrop-bg);\n    backdrop-filter: blur(var(--dialog-backdrop-blur));\n  }\n  .dialog.fade {\n    opacity: 0;\n    transition: opacity 0.15s linear;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog.fade {\n      transition: none;\n    }\n  }\n  .dialog.fade::backdrop {\n    opacity: 0;\n    transition: opacity 0.15s linear;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog.fade::backdrop {\n      transition: none;\n    }\n  }\n  .dialog.fade[open] {\n    opacity: 1;\n  }\n  .dialog.fade[open]::backdrop {\n    opacity: 1;\n  }\n  .dialog.dialog-static {\n    transform: scale(1.02);\n  }\n  .dialog.dialog-nonmodal {\n    position: fixed;\n    inset-block-start: 50%;\n    inset-inline-start: 50%;\n    z-index: 1055;\n    margin-inline: 0;\n    transform: translate(-50%, -50%);\n  }\n  .dialog.dialog-overflow {\n    position: fixed;\n    inset: 0;\n    width: 100%;\n    max-width: 100%;\n    height: 100%;\n    max-height: 100%;\n    padding: var(--dialog-margin);\n    margin: 0;\n    overflow-y: auto;\n    overscroll-behavior: contain;\n    background: transparent;\n    border: 0;\n    box-shadow: none;\n  }\n  .dialog.dialog-overflow > .dialog-box {\n    max-width: var(--dialog-width);\n    margin-block-end: var(--dialog-margin);\n    margin-inline: auto;\n    color: var(--dialog-color);\n    background-color: var(--dialog-bg);\n    background-clip: padding-box;\n    border: var(--dialog-border-width) solid var(--dialog-border-color);\n    border-radius: var(--dialog-border-radius);\n    box-shadow: var(--dialog-box-shadow);\n  }\n  .dialog.dialog-scrollable[open] {\n    display: flex;\n    flex-direction: column;\n    max-height: calc(100% - var(--dialog-margin) * 2);\n  }\n  .dialog.dialog-scrollable[open] .dialog-body {\n    overflow-y: auto;\n  }\n  .dialog-sm {\n    --dialog-width: 280px;\n  }\n  .dialog-lg {\n    --dialog-width: 800px;\n  }\n  .dialog-xl {\n    --dialog-width: 1140px;\n  }\n  .dialog-fullscreen {\n    --dialog-width: 100vw;\n    --dialog-margin: 0;\n    --dialog-border-radius: 0;\n    width: 100%;\n    max-width: none;\n    height: 100%;\n    max-height: none;\n  }\n  @media (width < 576px) {\n    .dialog-fullscreen-sm-down {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 768px) {\n    .dialog-fullscreen-md-down {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1024px) {\n    .dialog-fullscreen-lg-down {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1280px) {\n    .dialog-fullscreen-xl-down {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1536px) {\n    .dialog-fullscreen-2xl-down {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  .dialog-header {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    padding: var(--dialog-header-padding);\n    border-block-end: var(--dialog-header-border-width) solid var(--dialog-header-border-color);\n  }\n  .dialog-header .btn-close {\n    margin-inline-start: auto;\n  }\n  .dialog-title {\n    margin-bottom: 0;\n    font-size: var(--font-size-md);\n    line-height: 1.5;\n  }\n  .dialog-body {\n    position: relative;\n    flex: 1 1 auto;\n    padding: var(--dialog-padding);\n    overflow-y: auto;\n  }\n  .dialog-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: var(--dialog-footer-gap);\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--dialog-footer-padding);\n    border-block-start: var(--dialog-footer-border-width) solid var(--dialog-footer-border-color);\n  }\n}\n@layer components {\n  .menu {\n    --menu-zindex: 1000;\n    --menu-gap: 0.125rem;\n    --menu-min-width: 10rem;\n    --menu-padding-x: 0.25rem;\n    --menu-padding-y: 0.25rem;\n    --menu-spacer: 0.125rem;\n    --menu-font-size: var(--font-size-sm);\n    --menu-color: var(--fg-body);\n    --menu-bg: var(--bg-body);\n    --menu-box-shadow: var(--box-shadow);\n    --menu-divider-bg: var(--border-color-translucent);\n    --menu-divider-margin-y: 0.125rem;\n    --menu-divider-margin-x: 0.25rem;\n    --menu-item-color: var(--menu-color, var(--fg-body));\n    --menu-item-hover-color: var(--menu-color, var(--fg-body));\n    --menu-item-hover-bg: var(--bg-1);\n    --menu-item-active-color: var(--primary-contrast);\n    --menu-item-active-bg: var(--primary-bg);\n    --menu-item-disabled-color: var(--fg-3);\n    --menu-item-gap: 0.5rem;\n    --menu-item-padding-x: 0.75rem;\n    --menu-item-padding-y: 0.25rem;\n    --menu-item-border-radius: var(--border-radius);\n    --menu-icon-size: 1rem;\n    --menu-image-size: 1.5rem;\n    --menu-description-font-size: var(--font-size-xs);\n    --menu-check-color: currentcolor;\n    --menu-header-color: var(--fg-3);\n    --menu-header-padding-x: 0.75rem;\n    --menu-header-padding-y: 0.25rem;\n    position: absolute;\n    z-index: var(--menu-zindex);\n    display: none;\n    flex-direction: column;\n    gap: var(--menu-gap);\n    min-width: var(--menu-min-width);\n    max-height: var(--menu-max-height, none);\n    padding: var(--menu-padding-y) var(--menu-padding-x);\n    margin: 0;\n    overflow-y: var(--menu-overflow-y, initial);\n    overscroll-behavior: contain;\n    font-size: var(--menu-font-size);\n    color: var(--menu-color);\n    text-align: start;\n    list-style: none;\n    background-color: var(--menu-bg);\n    background-clip: padding-box;\n    border: var(--menu-border-width, var(--border-width)) solid var(--menu-border-color, var(--border-color-translucent));\n    border-radius: var(--menu-border-radius, var(--border-radius-lg));\n    box-shadow: var(--menu-box-shadow);\n  }\n  .menu.show {\n    display: flex;\n  }\n  .menu-scrollable {\n    --menu-max-height: 80dvh;\n    --menu-overflow-y: auto;\n  }\n  .menu-translucent {\n    --menu-item-hover-bg-light: color-mix(in oklch, var(--bg-1) 90%, transparent);\n    --menu-item-hover-bg-dark: color-mix(in oklch, var(--bg-1) 80%, transparent);\n    --menu-item-active-bg-light: color-mix(in oklch, var(--primary-bg) 80%, transparent);\n    --menu-item-active-bg-dark: color-mix(in oklch, var(--primary-bg) 70%, transparent);\n    --menu-item-active-bg: light-dark(var(--menu-item-active-bg-light), var(--menu-item-active-bg-dark));\n    --menu-item-hover-bg: light-dark(var(--menu-item-hover-bg-light), var(--menu-item-hover-bg-dark));\n    background-color: color-mix(in oklch, var(--menu-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .menu-divider {\n    height: 0;\n    margin: var(--menu-divider-margin-y) var(--menu-divider-margin-x);\n    overflow: hidden;\n    border-block-start: 1px solid var(--menu-divider-bg);\n    opacity: 1;\n  }\n  .menu-item {\n    display: flex;\n    gap: var(--menu-item-gap);\n    align-items: center;\n    width: 100%;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    font-weight: var(--menu-item-font-weight, var(--font-weight-normal));\n    color: var(--theme-text, var(--menu-item-color));\n    text-align: inherit;\n    text-decoration: none;\n    white-space: nowrap;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    border-radius: var(--menu-item-border-radius, 0);\n  }\n  .menu-item:hover, .menu-item:focus {\n    color: var(--theme-text, var(--menu-item-hover-color));\n    background-color: var(--theme-bg-subtle, var(--menu-item-hover-bg));\n  }\n  .menu-item.active, .menu-item:active {\n    color: var(--theme-contrast, var(--menu-item-active-color));\n    background-color: var(--theme-bg, var(--menu-item-active-bg));\n  }\n  .menu-item.active .menu-item-icon, .menu-item:active .menu-item-icon {\n    color: inherit !important;\n  }\n  .menu-item.selected {\n    font-weight: 600;\n  }\n  .menu-item.disabled, .menu-item:disabled {\n    color: var(--menu-item-disabled-color);\n    pointer-events: none;\n    background-color: transparent;\n  }\n  .menu-item-icon {\n    flex-shrink: 0;\n    align-self: flex-start;\n    width: var(--menu-icon-size);\n    height: auto;\n    margin-top: 0.125rem;\n  }\n  .menu-image {\n    width: var(--menu-image-size);\n    height: var(--menu-image-size);\n    object-fit: cover;\n    border-radius: var(--border-radius-sm);\n  }\n  .menu-item-content {\n    display: flex;\n    flex: 1;\n    flex-direction: column;\n    min-width: fit-content;\n  }\n  .menu-item-description {\n    font-size: var(--menu-description-font-size);\n    font-weight: var(--font-weight-normal);\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n  .menu-item-check {\n    flex-shrink: 0;\n    align-self: flex-start;\n    margin-block-start: 0.125rem;\n    margin-inline-start: auto;\n    color: var(--menu-check-color);\n    visibility: hidden;\n  }\n  .selected > .menu-item-check {\n    visibility: visible;\n  }\n  .menu-header {\n    display: block;\n    padding: var(--menu-header-padding-y) var(--menu-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--font-size-sm);\n    color: var(--menu-header-color);\n    white-space: nowrap;\n  }\n  .menu-text {\n    display: block;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    color: var(--fg-2);\n  }\n  .submenu {\n    position: relative;\n  }\n  .submenu > .menu-item {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .submenu > .menu-item::after {\n    display: inline-block;\n    flex-shrink: 0;\n    width: 0.375em;\n    height: 0.375em;\n    margin-inline-start: auto;\n    content: \"\";\n    border-color: currentcolor;\n    border-style: solid;\n    border-width: 0 0.125em 0.125em 0;\n    transform: rotate(-45deg);\n  }\n  [dir=rtl] .submenu > .menu-item::after {\n    transform: rotate(135deg);\n  }\n  .submenu > .menu {\n    top: 0;\n    margin-top: calc(-1 * var(--menu-padding-y));\n  }\n  .submenu:hover > .menu-item, .submenu:focus-within > .menu-item {\n    color: var(--menu-item-hover-color);\n    background-color: var(--menu-item-hover-bg);\n  }\n  .submenu.show > .menu-item {\n    color: var(--menu-item-hover-color);\n    background-color: var(--menu-item-hover-bg);\n  }\n  @media (max-width: 575.98px) {\n    .submenu:has(.submenu-stacked) {\n      position: static;\n    }\n    .submenu-stacked {\n      position: absolute;\n      inset: 0;\n      z-index: 1;\n      display: flex;\n      flex-direction: column;\n      gap: var(--menu-gap);\n      min-width: 0;\n      padding: var(--menu-padding-y) var(--menu-padding-x);\n      background-color: var(--menu-bg);\n      border: 0;\n      border-radius: 0;\n      box-shadow: none;\n    }\n    .submenu-back {\n      display: flex;\n      gap: var(--menu-item-gap);\n      align-items: center;\n      padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n      font-weight: var(--font-weight-semibold, 600);\n      color: var(--menu-item-color);\n    }\n    .submenu-back::before {\n      display: inline-block;\n      flex-shrink: 0;\n      width: 0.375em;\n      height: 0.375em;\n      content: \"\";\n      border-color: currentcolor;\n      border-style: solid;\n      border-width: 0.125em 0 0 0.125em;\n      transform: rotate(-45deg);\n    }\n    [dir=rtl] .submenu-back::before {\n      border-width: 0 0.125em 0.125em 0;\n    }\n    .submenu-dimmed {\n      pointer-events: none;\n      filter: blur(2px);\n      opacity: 0.3;\n    }\n  }\n}\n@layer components {\n  .list-group {\n    --list-group-color: var(--fg-body);\n    --list-group-bg: var(--bg-body);\n    --list-group-border-color: var(--border-color);\n    --list-group-border-width: var(--border-width);\n    --list-group-border-radius: var(--border-radius);\n    --list-group-item-padding-x: 1rem;\n    --list-group-item-padding-y: 0.5rem;\n    --list-group-action-color: var(--fg-2);\n    --list-group-action-hover-color: var(--fg-1);\n    --list-group-action-hover-bg: var(--bg-1);\n    --list-group-action-active-color: var(--fg-body);\n    --list-group-action-active-bg: var(--bg-2);\n    --list-group-disabled-color: var(--fg-3);\n    --list-group-disabled-bg: var(--bg-body);\n    --list-group-active-color: var(--primary-contrast);\n    --list-group-active-bg: var(--primary-bg);\n    --list-group-active-border-color: var(--primary-bg);\n    display: flex;\n    flex-direction: column;\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    border-radius: var(--list-group-border-radius);\n  }\n  .list-group-numbered {\n    list-style-type: none;\n    counter-reset: section;\n  }\n  .list-group-numbered > .list-group-item::before {\n    content: counters(section, \".\") \". \";\n    counter-increment: section;\n  }\n  .list-group-item {\n    position: relative;\n    display: block;\n    padding: var(--list-group-item-padding-y) var(--list-group-item-padding-x);\n    color: var(--theme-text, var(--list-group-color));\n    background-color: var(--theme-bg-subtle, var(--list-group-bg));\n    border: var(--list-group-border-width) solid var(--theme-border, var(--list-group-border-color));\n  }\n  .list-group-item:first-child {\n    border-start-start-radius: inherit;\n    border-start-end-radius: inherit;\n  }\n  .list-group-item:last-child {\n    border-end-start-radius: inherit;\n    border-end-end-radius: inherit;\n  }\n  .list-group-item.disabled, .list-group-item:disabled {\n    color: var(--list-group-disabled-color);\n    pointer-events: none;\n    background-color: var(--list-group-disabled-bg);\n  }\n  .list-group-item.active {\n    z-index: 2;\n    color: var(--list-group-active-color);\n    background-color: var(--list-group-active-bg);\n    border-color: var(--list-group-active-border-color);\n  }\n  .list-group-item + .list-group-item {\n    border-block-start-width: 0;\n  }\n  .list-group-item + .list-group-item.active {\n    margin-top: calc(-1 * var(--list-group-border-width));\n    border-block-start-width: var(--list-group-border-width);\n  }\n  .list-group-item-action {\n    width: 100%;\n    color: var(--theme-text, var(--list-group-action-color));\n    text-align: inherit;\n    text-decoration: none;\n  }\n  .list-group-item-action:not(.active):hover, .list-group-item-action:not(.active):focus {\n    z-index: 1;\n    color: var(--theme-text-emphasis, var(--list-group-action-hover-color));\n    text-decoration: none;\n    background-color: var(--theme-bg-muted, var(--list-group-action-hover-bg));\n  }\n  .list-group-item-action:not(.active):active {\n    color: var(--theme-text-emphasis, var(--list-group-action-active-color));\n    background-color: var(--theme-bg-muted, var(--list-group-action-active-bg));\n  }\n  .list-group-horizontal {\n    flex-direction: row;\n  }\n  .list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n    border-end-start-radius: var(--list-group-border-radius);\n    border-start-end-radius: 0;\n  }\n  .list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n    border-start-end-radius: var(--list-group-border-radius);\n    border-end-start-radius: 0;\n  }\n  .list-group-horizontal > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal > .list-group-item + .list-group-item {\n    border-block-start-width: var(--list-group-border-width);\n    border-inline-start-width: 0;\n  }\n  .list-group-horizontal > .list-group-item + .list-group-item.active {\n    margin-inline-start: calc(-1 * var(--list-group-border-width));\n    border-inline-start-width: var(--list-group-border-width);\n  }\n  @media (width >= 576px) {\n    .list-group-horizontal-sm {\n      flex-direction: row;\n    }\n    .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .list-group-horizontal-sm > .list-group-item.active {\n      margin-top: 0;\n    }\n    .list-group-horizontal-sm > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @media (width >= 768px) {\n    .list-group-horizontal-md {\n      flex-direction: row;\n    }\n    .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .list-group-horizontal-md > .list-group-item.active {\n      margin-top: 0;\n    }\n    .list-group-horizontal-md > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @media (width >= 1024px) {\n    .list-group-horizontal-lg {\n      flex-direction: row;\n    }\n    .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .list-group-horizontal-lg > .list-group-item.active {\n      margin-top: 0;\n    }\n    .list-group-horizontal-lg > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @media (width >= 1280px) {\n    .list-group-horizontal-xl {\n      flex-direction: row;\n    }\n    .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .list-group-horizontal-xl > .list-group-item.active {\n      margin-top: 0;\n    }\n    .list-group-horizontal-xl > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @media (width >= 1536px) {\n    .list-group-horizontal-2xl {\n      flex-direction: row;\n    }\n    .list-group-horizontal-2xl > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .list-group-horizontal-2xl > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .list-group-horizontal-2xl > .list-group-item.active {\n      margin-top: 0;\n    }\n    .list-group-horizontal-2xl > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .list-group-horizontal-2xl > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  .list-group-flush {\n    border-radius: 0;\n  }\n  .list-group-flush > .list-group-item {\n    border-width: 0 0 var(--list-group-border-width);\n  }\n  .list-group-flush > .list-group-item:last-child {\n    border-block-end-width: 0;\n  }\n}\n@layer components {\n  .nav {\n    --nav-gap: 0.125rem;\n    --nav-link-gap: 0.5rem;\n    --nav-link-align: center;\n    --nav-link-justify: center;\n    --nav-link-padding-x: 0.75rem;\n    --nav-link-padding-y: 0.375rem;\n    --nav-link-color: var(--fg-2);\n    --nav-link-hover-color: var(--fg-1);\n    --nav-link-hover-bg: var(--bg-1);\n    --nav-link-active-color: var(--fg-body);\n    --nav-link-active-bg: var(--bg-2);\n    --nav-link-disabled-color: var(--fg-4);\n    --nav-link-border-width: var(--border-width);\n    --nav-link-transition-property: color, background-color, border-color;\n    --nav-link-transition-timing: 0.15s ease-in-out;\n    --nav-link-transition: var(--nav-link-transition-property) var(--nav-link-transition-timing);\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style: none;\n  }\n  .nav-item {\n    display: flex;\n  }\n  .nav-link {\n    display: flex;\n    gap: var(--nav-link-gap);\n    align-items: var(--nav-link-align);\n    justify-content: var(--nav-link-justify);\n    padding: var(--nav-link-padding-y) var(--nav-link-padding-x);\n    font-weight: var(--nav-link-font-weight);\n    color: var(--nav-link-color);\n    text-decoration: none;\n    white-space: nowrap;\n    background: none;\n    border: var(--nav-link-border-width) solid transparent;\n    border-radius: var(--border-radius);\n    transition: var(--nav-link-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .nav-link {\n      transition: none;\n    }\n  }\n  .nav-link:hover, .nav-link:focus {\n    color: var(--nav-link-hover-color);\n    background-color: var(--nav-link-hover-bg);\n  }\n  .nav-link:focus-visible {\n    --focus-ring-offset: 1px;\n    color: var(--nav-link-hover-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .nav-link.active, .nav-link:active {\n    color: var(--nav-link-active-color);\n    background-color: var(--nav-link-active-bg);\n  }\n  .nav-link.disabled, .nav-link:disabled {\n    color: var(--nav-link-disabled-color);\n    pointer-events: none;\n    cursor: default;\n  }\n  .nav-tabs {\n    --nav-tabs-border-width: var(--border-width);\n    --nav-tabs-border-color: var(--border-color);\n    --nav-tabs-border-radius: var(--border-radius);\n    --nav-tabs-link-hover-border-color: var(--border-subtle);\n    --nav-tabs-link-active-color: var(--fg-color);\n    --nav-tabs-link-active-bg: var(--bg-body);\n    --nav-tabs-link-active-border-color: var(--border-color) var(--border-color) var(--bg-body);\n    box-shadow: inset 0 calc(-1 * var(--nav-tabs-border-width)) 0 var(--nav-tabs-border-color);\n  }\n  .nav-tabs .nav-link {\n    border: var(--nav-tabs-border-width) solid transparent;\n    border-bottom-color: var(--nav-tabs-border-color);\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .nav-tabs .nav-link:hover {\n    isolation: isolate;\n    border-color: var(--nav-tabs-link-hover-border-color);\n    border-bottom-color: var(--nav-tabs-border-color);\n  }\n  .nav-tabs .nav-link.active,\n  .nav-tabs .nav-item.show .nav-link {\n    color: var(--nav-tabs-link-active-color);\n    background-color: var(--nav-tabs-link-active-bg);\n    border-color: var(--nav-tabs-link-active-border-color);\n    border-bottom-color: var(--nav-tabs-link-active-bg);\n  }\n  .nav-tabs .menu {\n    margin-top: calc(-1 * var(--nav-tabs-border-width));\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .nav-pills {\n    --nav-pills-link-active-color: var(--primary-contrast);\n    --nav-pills-link-active-bg: var(--primary-bg);\n  }\n  .nav-pills .nav-link.active,\n  .nav-pills .show > .nav-link {\n    color: var(--nav-pills-link-active-color);\n    background-color: var(--nav-pills-link-active-bg);\n  }\n  .nav-underline {\n    --nav-gap: 1rem;\n    --nav-link-active-bg: transparent;\n    --nav-underline-border-width: 0.125rem;\n    --nav-underline-link-active-color: var(--fg-color);\n  }\n  .nav-underline .nav-link {\n    padding-inline: 0;\n    border: 0;\n    border-block-end: var(--nav-underline-border-width) solid transparent;\n    border-radius: 0;\n  }\n  .nav-underline .nav-link:hover, .nav-underline .nav-link:focus {\n    border-block-end-color: currentcolor;\n  }\n  .nav-underline .nav-link.active,\n  .nav-underline .show > .nav-link {\n    font-weight: 700;\n    color: var(--nav-underline-link-active-color);\n    border-block-end-color: currentcolor;\n  }\n  .nav-fill > .nav-link,\n  .nav-fill .nav-item {\n    flex: 1 1 auto;\n    text-align: center;\n  }\n  .nav-justified > .nav-link,\n  .nav-justified .nav-item {\n    flex-grow: 1;\n    flex-basis: 0;\n    text-align: center;\n  }\n  .nav-fill .nav-item .nav-link,\n  .nav-justified .nav-item .nav-link {\n    width: 100%;\n  }\n  .tab-content > .tab-pane {\n    display: none;\n  }\n  .tab-content > .active {\n    display: block;\n  }\n}\n@layer components {\n  .nav-overflow {\n    flex-wrap: nowrap;\n    min-width: 0;\n  }\n  .nav-overflow-item {\n    flex-shrink: 0;\n    margin-inline-start: auto;\n  }\n  .nav-overflow [data-bs-nav-overflow=true] {\n    display: none;\n  }\n  .nav-overflow-keep {\n    flex-shrink: 0;\n  }\n}\n@layer components {\n  .navbar {\n    --navbar-padding-x: 0;\n    --navbar-padding-y: 0.5rem;\n    --navbar-color: var(--fg-2);\n    --navbar-hover-color: var(--fg-1);\n    --navbar-disabled-color: var(--fg-3);\n    --navbar-active-color: var(--fg-body);\n    --navbar-brand-padding-y: 0.75rem;\n    --navbar-brand-margin-end: 1rem;\n    --navbar-brand-font-size: var(--font-size-md);\n    --navbar-brand-font-weight: var(--font-weight-medium);\n    --navbar-brand-color: var(--fg-body);\n    --navbar-brand-hover-color: var(--fg-body);\n    --navbar-nav-link-padding-x: 0.75rem;\n    --navbar-toggler-width: 2rem;\n    --navbar-toggler-padding-y: 0.25rem;\n    --navbar-toggler-padding-x: 0.75rem;\n    --navbar-toggler-font-size: var(--font-size-lg);\n    --navbar-toggler-border-color: color-mix(in oklch, var(--fg-body) 15%, transparent);\n    --navbar-toggler-border-radius: var(--border-radius);\n    --navbar-toggler-transition: box-shadow 0.15s ease-in-out;\n    position: relative;\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: space-between;\n    padding: var(--navbar-padding-y) var(--navbar-padding-x);\n    container-type: inline-size;\n    color: var(--navbar-color, var(--fg-body));\n    background-color: var(--navbar-bg, var(--bg-body));\n  }\n  .navbar > .container-2xl, .navbar > .container-xl, .navbar > .container-lg, .navbar > .container-md, .navbar > .container-sm, .navbar > .container,\n  .navbar > .container-fluid {\n    display: flex;\n    flex-wrap: inherit;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .navbar-brand {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    margin-inline-end: var(--navbar-brand-margin-end);\n    font-size: var(--navbar-brand-font-size);\n    font-weight: var(--navbar-brand-font-weight);\n    color: var(--navbar-brand-color);\n    text-decoration: none;\n    white-space: nowrap;\n  }\n  .navbar-brand:hover, .navbar-brand:focus {\n    color: var(--navbar-brand-hover-color);\n  }\n  .navbar-nav {\n    --nav-gap: 0.25rem;\n    --nav-link-gap: 0.5rem;\n    --nav-link-padding-x: 0.5rem;\n    --nav-link-padding-y: 0.375rem;\n    --nav-link-color: var(--navbar-color);\n    --nav-link-border-width: var(--border-width);\n    --nav-link-hover-color: var(--navbar-hover-color);\n    --nav-link-hover-bg: transparent;\n    --nav-link-active-color: var(--navbar-active-color);\n    --nav-link-active-bg: transparent;\n    --nav-link-disabled-color: var(--navbar-disabled-color);\n    display: flex;\n    flex-direction: column;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style: none;\n  }\n  .navbar-nav .nav-link.active, .navbar-nav .nav-link.show {\n    color: var(--navbar-active-color);\n    border: var(--nav-link-border-width) solid var(--nav-link-border-color, transparent);\n  }\n  .navbar-text {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    color: var(--navbar-color);\n  }\n  .navbar-text a,\n  .navbar-text a:hover,\n  .navbar-text a:focus {\n    color: var(--navbar-active-color);\n  }\n  .navbar-toggler {\n    --btn-bg: transparent;\n    --btn-hover-bg: var(--bg-2);\n  }\n  .navbar-expand > .container,\n  .navbar-expand > .container-fluid {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand .navbar-nav {\n    --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n    flex-direction: row;\n  }\n  .navbar-expand .navbar-toggler {\n    display: none !important;\n  }\n  .navbar-expand .offcanvas {\n    position: static;\n    z-index: auto;\n    flex-grow: 1;\n    width: auto !important;\n    height: auto !important;\n    visibility: visible !important;\n    background-color: transparent !important;\n    border: 0 !important;\n    transform: none !important;\n    box-shadow: none;\n    transition: none;\n  }\n  .navbar-expand .offcanvas .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand .offcanvas .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    flex-direction: row;\n    align-items: center;\n    padding: 0;\n    overflow-y: visible;\n  }\n  .navbar-expand {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  @container (width >= 576px) {\n    .navbar-expand-sm > .container,\n    .navbar-expand-sm > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .navbar-expand-sm .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .navbar-expand-sm .navbar-toggler {\n      display: none !important;\n    }\n    .navbar-expand-sm .offcanvas {\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .navbar-expand-sm .offcanvas .offcanvas-header {\n      display: none;\n    }\n    .navbar-expand-sm .offcanvas .offcanvas-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 768px) {\n    .navbar-expand-md > .container,\n    .navbar-expand-md > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .navbar-expand-md .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .navbar-expand-md .navbar-toggler {\n      display: none !important;\n    }\n    .navbar-expand-md .offcanvas {\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .navbar-expand-md .offcanvas .offcanvas-header {\n      display: none;\n    }\n    .navbar-expand-md .offcanvas .offcanvas-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1024px) {\n    .navbar-expand-lg > .container,\n    .navbar-expand-lg > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .navbar-expand-lg .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .navbar-expand-lg .navbar-toggler {\n      display: none !important;\n    }\n    .navbar-expand-lg .offcanvas {\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .navbar-expand-lg .offcanvas .offcanvas-header {\n      display: none;\n    }\n    .navbar-expand-lg .offcanvas .offcanvas-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1280px) {\n    .navbar-expand-xl > .container,\n    .navbar-expand-xl > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .navbar-expand-xl .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .navbar-expand-xl .navbar-toggler {\n      display: none !important;\n    }\n    .navbar-expand-xl .offcanvas {\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .navbar-expand-xl .offcanvas .offcanvas-header {\n      display: none;\n    }\n    .navbar-expand-xl .offcanvas .offcanvas-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1536px) {\n    .navbar-expand-2xl > .container,\n    .navbar-expand-2xl > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .navbar-expand-2xl .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .navbar-expand-2xl .navbar-toggler {\n      display: none !important;\n    }\n    .navbar-expand-2xl .offcanvas {\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .navbar-expand-2xl .offcanvas .offcanvas-header {\n      display: none;\n    }\n    .navbar-expand-2xl .offcanvas .offcanvas-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  .navbar-translucent {\n    position: relative;\n    background-color: transparent;\n  }\n  .navbar-translucent::before {\n    position: absolute;\n    inset: 0;\n    z-index: -1;\n    content: \"\";\n    background-color: color-mix(in oklch, var(--navbar-bg, var(--bg-body)) 80%, transparent);\n    background-image: none;\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .navbar[data-bs-theme=dark] {\n    --navbar-color: color-mix(in oklch, var(--white) 0.55, transparent);\n    --navbar-hover-color: color-mix(in oklch, var(--white) 0.75, transparent);\n    --navbar-disabled-color: color-mix(in oklch, var(--white) 0.25, transparent);\n    --navbar-active-color: var(--white);\n    --navbar-brand-color: var(--white);\n    --navbar-brand-hover-color: var(--white);\n    --navbar-toggler-border-color: color-mix(in oklch, var(--white) 0.1, transparent);\n  }\n}\n.offcanvas, .offcanvas-2xl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm {\n  --offcanvas-inset: var(--spacer);\n  --offcanvas-zindex: 1045;\n  --offcanvas-width: 400px;\n  --offcanvas-height: 30vh;\n  --offcanvas-padding-x: var(--spacer);\n  --offcanvas-padding-y: var(--spacer);\n  --offcanvas-color: var(--fg-body);\n  --offcanvas-bg: var(--bg-body);\n  --offcanvas-border-width: var(--border-width);\n  --offcanvas-border-color: var(--border-color-translucent);\n  --offcanvas-border-radius: var(--border-radius-lg);\n  --offcanvas-box-shadow: var(--box-shadow-lg);\n  --offcanvas-transition: transform 0.3s ease-in-out;\n  --offcanvas-title-line-height: 1.5;\n}\n\n@layer components {\n  @media (width < 576px) {\n    .offcanvas-sm {\n      position: fixed;\n      z-index: var(--offcanvas-zindex);\n      display: flex;\n      flex-direction: column;\n      max-width: calc(100% - var(--offcanvas-inset) * 2);\n      max-height: calc(100% - var(--offcanvas-inset) * 2);\n      color: var(--offcanvas-color);\n      visibility: hidden;\n      background-color: var(--offcanvas-bg);\n      background-clip: padding-box;\n      border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n      border-radius: var(--offcanvas-border-radius);\n      outline: 0;\n      box-shadow: var(--offcanvas-box-shadow);\n      transition: var(--offcanvas-transition);\n    }\n  }\n  @media (width < 576px) and (prefers-reduced-motion: reduce) {\n    .offcanvas-sm {\n      transition: none;\n    }\n  }\n  @media (width < 576px) {\n    .offcanvas-sm:where(.offcanvas-start) {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-start: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(-100%);\n    }\n    :root:dir(rtl) .offcanvas-sm:where(.offcanvas-start) {\n      transform: translateX(100%);\n    }\n    .offcanvas-sm:where(.offcanvas-end) {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-end: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(100%);\n    }\n    :root:dir(rtl) .offcanvas-sm:where(.offcanvas-end) {\n      transform: translateX(-100%);\n    }\n    .offcanvas-sm:where(.offcanvas-top) {\n      inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n      height: var(--offcanvas-height);\n      transform: translateY(-100%);\n    }\n    .offcanvas-sm:where(.offcanvas-bottom) {\n      inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n      height: var(--offcanvas-height);\n      transform: translateY(100%);\n    }\n    .offcanvas-sm:where(.offcanvas-fullscreen) {\n      inset: var(--offcanvas-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n      transform: translateY(100%);\n    }\n    .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) {\n      transform: none;\n    }\n    .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show {\n      visibility: visible;\n    }\n  }\n  @media (width >= 576px) {\n    .offcanvas-sm {\n      --offcanvas-height: auto;\n      --offcanvas-border-width: 0;\n      background-color: transparent !important;\n    }\n    .offcanvas-sm .offcanvas-header {\n      display: none;\n    }\n    .offcanvas-sm .offcanvas-body {\n      flex-grow: 0;\n      flex-direction: row;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 768px) {\n    .offcanvas-md {\n      position: fixed;\n      z-index: var(--offcanvas-zindex);\n      display: flex;\n      flex-direction: column;\n      max-width: calc(100% - var(--offcanvas-inset) * 2);\n      max-height: calc(100% - var(--offcanvas-inset) * 2);\n      color: var(--offcanvas-color);\n      visibility: hidden;\n      background-color: var(--offcanvas-bg);\n      background-clip: padding-box;\n      border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n      border-radius: var(--offcanvas-border-radius);\n      outline: 0;\n      box-shadow: var(--offcanvas-box-shadow);\n      transition: var(--offcanvas-transition);\n    }\n  }\n  @media (width < 768px) and (prefers-reduced-motion: reduce) {\n    .offcanvas-md {\n      transition: none;\n    }\n  }\n  @media (width < 768px) {\n    .offcanvas-md:where(.offcanvas-start) {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-start: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(-100%);\n    }\n    :root:dir(rtl) .offcanvas-md:where(.offcanvas-start) {\n      transform: translateX(100%);\n    }\n    .offcanvas-md:where(.offcanvas-end) {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-end: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(100%);\n    }\n    :root:dir(rtl) .offcanvas-md:where(.offcanvas-end) {\n      transform: translateX(-100%);\n    }\n    .offcanvas-md:where(.offcanvas-top) {\n      inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n      height: var(--offcanvas-height);\n      transform: translateY(-100%);\n    }\n    .offcanvas-md:where(.offcanvas-bottom) {\n      inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n      height: var(--offcanvas-height);\n      transform: translateY(100%);\n    }\n    .offcanvas-md:where(.offcanvas-fullscreen) {\n      inset: var(--offcanvas-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n      transform: translateY(100%);\n    }\n    .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) {\n      transform: none;\n    }\n    .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show {\n      visibility: visible;\n    }\n  }\n  @media (width >= 768px) {\n    .offcanvas-md {\n      --offcanvas-height: auto;\n      --offcanvas-border-width: 0;\n      background-color: transparent !important;\n    }\n    .offcanvas-md .offcanvas-header {\n      display: none;\n    }\n    .offcanvas-md .offcanvas-body {\n      flex-grow: 0;\n      flex-direction: row;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1024px) {\n    .offcanvas-lg {\n      position: fixed;\n      z-index: var(--offcanvas-zindex);\n      display: flex;\n      flex-direction: column;\n      max-width: calc(100% - var(--offcanvas-inset) * 2);\n      max-height: calc(100% - var(--offcanvas-inset) * 2);\n      color: var(--offcanvas-color);\n      visibility: hidden;\n      background-color: var(--offcanvas-bg);\n      background-clip: padding-box;\n      border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n      border-radius: var(--offcanvas-border-radius);\n      outline: 0;\n      box-shadow: var(--offcanvas-box-shadow);\n      transition: var(--offcanvas-transition);\n    }\n  }\n  @media (width < 1024px) and (prefers-reduced-motion: reduce) {\n    .offcanvas-lg {\n      transition: none;\n    }\n  }\n  @media (width < 1024px) {\n    .offcanvas-lg:where(.offcanvas-start) {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-start: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(-100%);\n    }\n    :root:dir(rtl) .offcanvas-lg:where(.offcanvas-start) {\n      transform: translateX(100%);\n    }\n    .offcanvas-lg:where(.offcanvas-end) {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-end: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(100%);\n    }\n    :root:dir(rtl) .offcanvas-lg:where(.offcanvas-end) {\n      transform: translateX(-100%);\n    }\n    .offcanvas-lg:where(.offcanvas-top) {\n      inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n      height: var(--offcanvas-height);\n      transform: translateY(-100%);\n    }\n    .offcanvas-lg:where(.offcanvas-bottom) {\n      inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n      height: var(--offcanvas-height);\n      transform: translateY(100%);\n    }\n    .offcanvas-lg:where(.offcanvas-fullscreen) {\n      inset: var(--offcanvas-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n      transform: translateY(100%);\n    }\n    .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) {\n      transform: none;\n    }\n    .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show {\n      visibility: visible;\n    }\n  }\n  @media (width >= 1024px) {\n    .offcanvas-lg {\n      --offcanvas-height: auto;\n      --offcanvas-border-width: 0;\n      background-color: transparent !important;\n    }\n    .offcanvas-lg .offcanvas-header {\n      display: none;\n    }\n    .offcanvas-lg .offcanvas-body {\n      flex-grow: 0;\n      flex-direction: row;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1280px) {\n    .offcanvas-xl {\n      position: fixed;\n      z-index: var(--offcanvas-zindex);\n      display: flex;\n      flex-direction: column;\n      max-width: calc(100% - var(--offcanvas-inset) * 2);\n      max-height: calc(100% - var(--offcanvas-inset) * 2);\n      color: var(--offcanvas-color);\n      visibility: hidden;\n      background-color: var(--offcanvas-bg);\n      background-clip: padding-box;\n      border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n      border-radius: var(--offcanvas-border-radius);\n      outline: 0;\n      box-shadow: var(--offcanvas-box-shadow);\n      transition: var(--offcanvas-transition);\n    }\n  }\n  @media (width < 1280px) and (prefers-reduced-motion: reduce) {\n    .offcanvas-xl {\n      transition: none;\n    }\n  }\n  @media (width < 1280px) {\n    .offcanvas-xl:where(.offcanvas-start) {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-start: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(-100%);\n    }\n    :root:dir(rtl) .offcanvas-xl:where(.offcanvas-start) {\n      transform: translateX(100%);\n    }\n    .offcanvas-xl:where(.offcanvas-end) {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-end: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(100%);\n    }\n    :root:dir(rtl) .offcanvas-xl:where(.offcanvas-end) {\n      transform: translateX(-100%);\n    }\n    .offcanvas-xl:where(.offcanvas-top) {\n      inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n      height: var(--offcanvas-height);\n      transform: translateY(-100%);\n    }\n    .offcanvas-xl:where(.offcanvas-bottom) {\n      inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n      height: var(--offcanvas-height);\n      transform: translateY(100%);\n    }\n    .offcanvas-xl:where(.offcanvas-fullscreen) {\n      inset: var(--offcanvas-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n      transform: translateY(100%);\n    }\n    .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) {\n      transform: none;\n    }\n    .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show {\n      visibility: visible;\n    }\n  }\n  @media (width >= 1280px) {\n    .offcanvas-xl {\n      --offcanvas-height: auto;\n      --offcanvas-border-width: 0;\n      background-color: transparent !important;\n    }\n    .offcanvas-xl .offcanvas-header {\n      display: none;\n    }\n    .offcanvas-xl .offcanvas-body {\n      flex-grow: 0;\n      flex-direction: row;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1536px) {\n    .offcanvas-2xl {\n      position: fixed;\n      z-index: var(--offcanvas-zindex);\n      display: flex;\n      flex-direction: column;\n      max-width: calc(100% - var(--offcanvas-inset) * 2);\n      max-height: calc(100% - var(--offcanvas-inset) * 2);\n      color: var(--offcanvas-color);\n      visibility: hidden;\n      background-color: var(--offcanvas-bg);\n      background-clip: padding-box;\n      border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n      border-radius: var(--offcanvas-border-radius);\n      outline: 0;\n      box-shadow: var(--offcanvas-box-shadow);\n      transition: var(--offcanvas-transition);\n    }\n  }\n  @media (width < 1536px) and (prefers-reduced-motion: reduce) {\n    .offcanvas-2xl {\n      transition: none;\n    }\n  }\n  @media (width < 1536px) {\n    .offcanvas-2xl:where(.offcanvas-start) {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-start: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(-100%);\n    }\n    :root:dir(rtl) .offcanvas-2xl:where(.offcanvas-start) {\n      transform: translateX(100%);\n    }\n    .offcanvas-2xl:where(.offcanvas-end) {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-end: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(100%);\n    }\n    :root:dir(rtl) .offcanvas-2xl:where(.offcanvas-end) {\n      transform: translateX(-100%);\n    }\n    .offcanvas-2xl:where(.offcanvas-top) {\n      inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n      height: var(--offcanvas-height);\n      transform: translateY(-100%);\n    }\n    .offcanvas-2xl:where(.offcanvas-bottom) {\n      inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n      height: var(--offcanvas-height);\n      transform: translateY(100%);\n    }\n    .offcanvas-2xl:where(.offcanvas-fullscreen) {\n      inset: var(--offcanvas-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n      transform: translateY(100%);\n    }\n    .offcanvas-2xl.showing, .offcanvas-2xl.show:not(.hiding) {\n      transform: none;\n    }\n    .offcanvas-2xl.showing, .offcanvas-2xl.hiding, .offcanvas-2xl.show {\n      visibility: visible;\n    }\n  }\n  @media (width >= 1536px) {\n    .offcanvas-2xl {\n      --offcanvas-height: auto;\n      --offcanvas-border-width: 0;\n      background-color: transparent !important;\n    }\n    .offcanvas-2xl .offcanvas-header {\n      display: none;\n    }\n    .offcanvas-2xl .offcanvas-body {\n      flex-grow: 0;\n      flex-direction: row;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  .offcanvas {\n    position: fixed;\n    z-index: var(--offcanvas-zindex);\n    display: flex;\n    flex-direction: column;\n    max-width: calc(100% - var(--offcanvas-inset) * 2);\n    max-height: calc(100% - var(--offcanvas-inset) * 2);\n    color: var(--offcanvas-color);\n    visibility: hidden;\n    background-color: var(--offcanvas-bg);\n    background-clip: padding-box;\n    border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n    border-radius: var(--offcanvas-border-radius);\n    outline: 0;\n    box-shadow: var(--offcanvas-box-shadow);\n    transition: var(--offcanvas-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .offcanvas {\n      transition: none;\n    }\n  }\n  .offcanvas:where(.offcanvas-start) {\n    inset-block: var(--offcanvas-inset);\n    inset-inline-start: var(--offcanvas-inset);\n    width: var(--offcanvas-width);\n    transform: translateX(-100%);\n  }\n  :root:dir(rtl) .offcanvas:where(.offcanvas-start) {\n    transform: translateX(100%);\n  }\n  .offcanvas:where(.offcanvas-end) {\n    inset-block: var(--offcanvas-inset);\n    inset-inline-end: var(--offcanvas-inset);\n    width: var(--offcanvas-width);\n    transform: translateX(100%);\n  }\n  :root:dir(rtl) .offcanvas:where(.offcanvas-end) {\n    transform: translateX(-100%);\n  }\n  .offcanvas:where(.offcanvas-top) {\n    inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n    height: var(--offcanvas-height);\n    transform: translateY(-100%);\n  }\n  .offcanvas:where(.offcanvas-bottom) {\n    inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n    height: var(--offcanvas-height);\n    transform: translateY(100%);\n  }\n  .offcanvas:where(.offcanvas-fullscreen) {\n    inset: var(--offcanvas-inset);\n    width: auto;\n    max-width: none;\n    height: auto;\n    max-height: none;\n    transform: translateY(100%);\n  }\n  .offcanvas.showing, .offcanvas.show:not(.hiding) {\n    transform: none;\n  }\n  .offcanvas.showing, .offcanvas.hiding, .offcanvas.show {\n    visibility: visible;\n  }\n  .offcanvas-backdrop {\n    --offcanvas-backdrop-bg: var(--bg-body);\n    --offcanvas-backdrop-opacity: 25%;\n    --offcanvas-backdrop-blur: 8px;\n    position: fixed;\n    inset: 0;\n    z-index: 1040;\n    background-color: color-mix(in oklch, var(--offcanvas-backdrop-bg) var(--offcanvas-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--offcanvas-backdrop-blur));\n  }\n  .offcanvas-backdrop.fade {\n    opacity: 0;\n  }\n  .offcanvas-backdrop.show {\n    opacity: 1;\n  }\n  .offcanvas-translucent {\n    background-color: color-mix(in oklch, var(--offcanvas-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .offcanvas-header {\n    display: flex;\n    align-items: center;\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n  }\n  .offcanvas-header .btn-close {\n    padding: calc(var(--offcanvas-padding-y) * 0.5) calc(var(--offcanvas-padding-x) * 0.5);\n    margin-inline-start: auto;\n    margin-inline-end: calc(-0.5 * var(--offcanvas-padding-x));\n    margin-top: calc(-0.5 * var(--offcanvas-padding-y));\n    margin-bottom: calc(-0.5 * var(--offcanvas-padding-y));\n  }\n  .offcanvas-title {\n    margin-bottom: 0;\n    line-height: var(--offcanvas-title-line-height);\n  }\n  .offcanvas-body {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    gap: var(--offcanvas-padding-y);\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n    overflow-y: auto;\n  }\n  .offcanvas-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: 0.5rem;\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n    border-block-start: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n  }\n  .offcanvas-fit-content {\n    inset-block-end: auto;\n  }\n}\n@layer components {\n  .pagination {\n    --pagination-min-height: var(--btn-input-min-height);\n    --pagination-padding-x: var(--btn-input-padding-x);\n    --pagination-padding-y: var(--btn-input-padding-y);\n    --pagination-font-size: var(--btn-input-font-size);\n    --pagination-color: var(--link-color);\n    --pagination-bg: var(--bg-body);\n    --pagination-border-width: var(--border-width);\n    --pagination-border-color: var(--border-color);\n    --pagination-border-radius: var(--btn-input-border-radius);\n    --pagination-hover-color: var(--link-hover-color);\n    --pagination-hover-bg: var(--bg-1);\n    --pagination-hover-border-color: var(--border-color);\n    --pagination-focus-color: var(--link-hover-color);\n    --pagination-focus-bg: var(--bg-2);\n    --pagination-active-color: var(--primary-contrast);\n    --pagination-active-bg: var(--primary-bg);\n    --pagination-active-border-color: var(--primary-bg);\n    --pagination-disabled-color: var(--fg-3);\n    --pagination-disabled-bg: var(--bg-2);\n    --pagination-disabled-border-color: var(--border-color);\n    display: flex;\n    padding-inline-start: 0;\n    list-style: none;\n  }\n  .page-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: var(--pagination-min-height);\n    padding: var(--pagination-padding-y) var(--pagination-padding-x);\n    font-size: var(--pagination-font-size);\n    color: var(--pagination-color);\n    text-decoration: none;\n    background-color: var(--pagination-bg);\n    border: var(--pagination-border-width) solid var(--pagination-border-color);\n    transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .page-link {\n      transition: none;\n    }\n  }\n  .page-link:hover {\n    z-index: 2;\n    color: var(--pagination-hover-color);\n    background-color: var(--pagination-hover-bg);\n    border-color: var(--pagination-hover-border-color);\n  }\n  .page-link:focus-visible {\n    z-index: 3;\n    color: var(--pagination-focus-color);\n    background-color: var(--pagination-focus-bg);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .page-link.active, .active > .page-link {\n    z-index: 3;\n    color: var(--pagination-active-color);\n    background-color: var(--pagination-active-bg);\n    border-color: var(--pagination-active-border-color);\n  }\n  .page-link.disabled, .disabled > .page-link {\n    color: var(--pagination-disabled-color);\n    pointer-events: none;\n    background-color: var(--pagination-disabled-bg);\n    border-color: var(--pagination-disabled-border-color);\n  }\n  .page-item:not(:first-child) .page-link {\n    margin-inline-start: calc(-1 * var(--pagination-border-width));\n  }\n  .page-item:first-child .page-link {\n    border-start-start-radius: var(--pagination-border-radius);\n    border-end-start-radius: var(--pagination-border-radius);\n  }\n  .page-item:last-child .page-link {\n    border-start-end-radius: var(--pagination-border-radius);\n    border-end-end-radius: var(--pagination-border-radius);\n  }\n  .pagination-sm {\n    --pagination-min-height: var(--bs-btn-input-sm-min-height);\n    --pagination-padding-y: var(--btn-input-sm-padding-y);\n    --pagination-padding-x: var(--btn-input-sm-padding-x);\n    --pagination-font-size: var(--btn-input-sm-font-size);\n    --pagination-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .pagination-lg {\n    --pagination-min-height: var(--bs-btn-input-lg-min-height);\n    --pagination-padding-y: var(--btn-input-lg-padding-y);\n    --pagination-padding-x: var(--btn-input-lg-padding-x);\n    --pagination-font-size: var(--btn-input-lg-font-size);\n    --pagination-border-radius: var(--btn-input-lg-border-radius);\n  }\n}\n@layer components {\n  .placeholder {\n    --placeholder-opacity-max: 0.5;\n    --placeholder-opacity-min: 0.2;\n    display: inline-block;\n    min-height: 1em;\n    vertical-align: middle;\n    cursor: wait;\n    background-color: currentcolor;\n    opacity: var(--placeholder-opacity-max);\n  }\n  .placeholder.btn::before {\n    display: inline-block;\n    content: \"\";\n  }\n  .placeholder-xs {\n    min-height: 0.6em;\n  }\n  .placeholder-sm {\n    min-height: 0.8em;\n  }\n  .placeholder-lg {\n    min-height: 1.2em;\n  }\n  .placeholder-glow .placeholder {\n    animation: placeholder-glow 2s ease-in-out infinite;\n  }\n  @keyframes placeholder-glow {\n    50% {\n      opacity: var(--placeholder-opacity-min);\n    }\n  }\n  .placeholder-wave {\n    mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, calc(1 - var(--placeholder-opacity-min))) 75%, #000 95%);\n    mask-size: 200% 100%;\n    animation: placeholder-wave 2s linear infinite;\n  }\n  @keyframes placeholder-wave {\n    100% {\n      mask-position: -200% 0%;\n    }\n  }\n}\n@layer components {\n  .popover {\n    --popover-zindex: 1070;\n    --popover-max-width: 280px;\n    --popover-font-size: var(--font-size-sm);\n    --popover-bg: var(--bg-body);\n    --popover-border-width: var(--border-width);\n    --popover-border-color: var(--border-color-translucent);\n    --popover-border-radius: var(--border-radius-lg);\n    --popover-inner-border-radius: calc(var(--border-radius-lg) - var(--border-width));\n    --popover-box-shadow: var(--box-shadow);\n    --popover-header-padding-x: 1rem;\n    --popover-header-padding-y: 0.75rem;\n    --popover-header-font-size: var(--font-size-sm);\n    --popover-header-color: inherit;\n    --popover-header-bg: var(--bg-1);\n    --popover-body-padding-x: 1rem;\n    --popover-body-padding-y: 0.75rem;\n    --popover-body-color: var(--fg-body);\n    --popover-arrow-width: 1rem;\n    --popover-arrow-height: 0.5rem;\n    --popover-arrow-border: var(--popover-border-color);\n    z-index: var(--popover-zindex);\n    display: block;\n    max-width: var(--popover-max-width);\n    font-family: var(--body-font-family);\n    font-style: normal;\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    text-align: start;\n    text-decoration: none;\n    text-shadow: none;\n    text-transform: none;\n    letter-spacing: normal;\n    word-break: normal;\n    white-space: normal;\n    word-spacing: normal;\n    line-break: auto;\n    font-size: var(--popover-font-size);\n    word-wrap: break-word;\n    background-color: var(--popover-bg);\n    background-clip: padding-box;\n    border: var(--popover-border-width) solid var(--popover-border-color);\n    border-radius: var(--popover-border-radius);\n    box-shadow: var(--popover-box-shadow);\n  }\n  .popover .popover-arrow {\n    display: block;\n    width: var(--popover-arrow-width);\n    height: var(--popover-arrow-height);\n  }\n  .popover .popover-arrow::before, .popover .popover-arrow::after {\n    position: absolute;\n    display: block;\n    content: \"\";\n    border-color: transparent;\n    border-style: solid;\n    border-width: 0;\n  }\n  .bs-popover-top > .popover-arrow, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow {\n    bottom: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n  }\n  .bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::after {\n    border-width: var(--popover-arrow-height) calc(var(--popover-arrow-width) * 0.5) 0;\n  }\n  .bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::before {\n    bottom: 0;\n    border-block-start-color: var(--popover-arrow-border);\n  }\n  .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::after {\n    bottom: var(--popover-border-width);\n    border-block-start-color: var(--popover-bg);\n  }\n  .bs-popover-end > .popover-arrow, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow {\n    left: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n    width: var(--popover-arrow-height);\n    height: var(--popover-arrow-width);\n  }\n  .bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::after {\n    border-width: calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height) calc(var(--popover-arrow-width) * 0.5) 0;\n  }\n  .bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::before {\n    left: 0;\n    border-inline-end-color: var(--popover-arrow-border);\n  }\n  .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::after {\n    left: var(--popover-border-width);\n    border-inline-end-color: var(--popover-bg);\n  }\n  .bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow {\n    top: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n  }\n  .bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::after {\n    border-width: 0 calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height);\n  }\n  .bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::before {\n    top: 0;\n    border-block-end-color: var(--popover-arrow-border);\n  }\n  .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::after {\n    top: var(--popover-border-width);\n    border-block-end-color: var(--popover-bg);\n  }\n  .bs-popover-bottom .popover-header::before, .bs-popover-auto[data-bs-placement^=bottom] .popover-header::before {\n    position: absolute;\n    top: 0;\n    left: 50%;\n    display: block;\n    width: var(--popover-arrow-width);\n    margin-inline-start: calc(-0.5 * var(--popover-arrow-width));\n    content: \"\";\n    border-block-end: var(--popover-border-width) solid var(--popover-header-bg);\n  }\n  .bs-popover-start > .popover-arrow, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow {\n    right: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n    width: var(--popover-arrow-height);\n    height: var(--popover-arrow-width);\n  }\n  .bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::after {\n    border-width: calc(var(--popover-arrow-width) * 0.5) 0 calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height);\n  }\n  .bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::before {\n    right: 0;\n    border-inline-start-color: var(--popover-arrow-border);\n  }\n  .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::after {\n    right: var(--popover-border-width);\n    border-inline-start-color: var(--popover-bg);\n  }\n  .popover-header {\n    padding: var(--popover-header-padding-y) var(--popover-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--popover-header-font-size);\n    color: var(--popover-header-color);\n    background-color: var(--popover-header-bg);\n    border-block-end: var(--popover-border-width) solid var(--popover-border-color);\n    border-start-start-radius: var(--popover-inner-border-radius);\n    border-start-end-radius: var(--popover-inner-border-radius);\n  }\n  .popover-header:empty {\n    display: none;\n  }\n  .popover-body {\n    padding: var(--popover-body-padding-y) var(--popover-body-padding-x);\n    color: var(--popover-body-color);\n  }\n}\n@layer components {\n  @keyframes progress-bar-stripes {\n    0% {\n      background-position-x: var(--progress-height);\n    }\n  }\n  .progress,\n  .progress-stacked {\n    --progress-height: 1rem;\n    --progress-font-size: var(--font-size-sm);\n    --progress-bg: var(--bg-2);\n    --progress-border-radius: var(--border-radius);\n    --progress-box-shadow: var(--box-shadow-inset);\n    --progress-bar-color: var(--white);\n    --progress-bar-bg: var(--primary-bg);\n    --progress-bar-transition: width 0.6s ease;\n    --progress-bar-animation: progress-bar-stripes 1s linear infinite;\n    display: flex;\n    height: var(--progress-height);\n    overflow: hidden;\n    font-size: var(--progress-font-size);\n    background-color: var(--progress-bg);\n    border-radius: var(--progress-border-radius);\n    box-shadow: var(--progress-box-shadow);\n  }\n  .progress-bar {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    overflow: hidden;\n    color: var(--theme-contrast, var(--progress-bar-color));\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--theme-bg, var(--progress-bar-bg));\n    transition: var(--progress-bar-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .progress-bar {\n      transition: none;\n    }\n  }\n  .progress-bar-striped {\n    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%, transparent);\n    background-size: var(--progress-height) var(--progress-height);\n  }\n  .progress-stacked > .progress {\n    overflow: visible;\n  }\n  .progress-stacked > .progress > .progress-bar {\n    width: 100%;\n  }\n  .progress-bar-animated {\n    animation: var(--progress-bar-animation);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .progress-bar-animated {\n      animation: none;\n    }\n  }\n}\n@layer components {\n  .spinner-grow,\n  .spinner-border {\n    display: inline-block;\n    flex-shrink: 0;\n    width: var(--spinner-width);\n    height: var(--spinner-height);\n    vertical-align: var(--spinner-vertical-align);\n    border-radius: 50%;\n    animation: var(--spinner-animation-speed) linear infinite var(--spinner-animation-name);\n  }\n  @keyframes spinner-border {\n    to {\n      transform: rotate(360deg);\n    }\n  }\n  .spinner-border {\n    --spinner-width: 2rem;\n    --spinner-height: 2rem;\n    --spinner-vertical-align: -0.125em;\n    --spinner-border-width: 0.25em;\n    --spinner-animation-speed: 0.75s;\n    --spinner-animation-name: spinner-border;\n    border: var(--spinner-border-width) solid currentcolor;\n    border-inline-end-color: transparent;\n  }\n  .spinner-border-sm {\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    --spinner-border-width: .2em;\n  }\n  @keyframes spinner-grow {\n    0% {\n      transform: scale(0);\n    }\n    50% {\n      opacity: 1;\n      transform: none;\n    }\n  }\n  .spinner-grow {\n    --spinner-width: 2rem;\n    --spinner-height: 2rem;\n    --spinner-vertical-align: -0.125em;\n    --spinner-animation-speed: 0.75s;\n    --spinner-animation-name: spinner-grow;\n    background-color: currentcolor;\n    opacity: 0;\n  }\n  .spinner-grow-sm {\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .spinner-border,\n    .spinner-grow {\n      --spinner-animation-speed: 1.5s;\n    }\n  }\n}\n.stepper {\n  --stepper-size: 2rem;\n  --stepper-gap: 1rem;\n  --stepper-bg: var(--bg-2);\n  --stepper-track-size: 0.25rem;\n  --stepper-active-color: var(--primary-contrast);\n  --stepper-active-bg: var(--primary-bg);\n  display: grid;\n  grid-auto-rows: 1fr;\n  grid-auto-flow: row;\n  gap: var(--stepper-gap);\n  padding-left: 0;\n  list-style: none;\n  counter-reset: stepper;\n}\n\n.stepper-item {\n  position: relative;\n  display: grid;\n  grid-template-rows: auto;\n  grid-template-columns: var(--stepper-size) auto;\n  gap: 0.5rem;\n  place-items: center;\n  justify-items: start;\n  text-align: center;\n  text-decoration: none;\n}\n.stepper-item::before {\n  position: relative;\n  z-index: 1;\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: center;\n  width: var(--stepper-size);\n  height: var(--stepper-size);\n  padding: 0.5rem;\n  font-weight: 600;\n  line-height: 1;\n  text-align: center;\n  content: counter(stepper);\n  counter-increment: stepper;\n  background-color: var(--stepper-bg);\n  border-radius: 50%;\n}\n.stepper-item::after {\n  position: absolute;\n  top: calc(var(--stepper-gap) * -1);\n  bottom: 100%;\n  left: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n  width: var(--stepper-track-size);\n  content: \"\";\n  background-color: var(--stepper-bg);\n}\n.stepper-item:first-child::after {\n  display: none;\n}\n.stepper-item.active::before, .stepper-item.active::after {\n  color: var(--theme-contrast, var(--stepper-active-color));\n  background-color: var(--theme-bg, var(--stepper-active-bg));\n}\n\n.stepper-horizontal {\n  display: inline-grid;\n  grid-auto-columns: 1fr;\n  grid-auto-flow: column;\n}\n.stepper-horizontal .stepper-item {\n  grid-template-rows: repeat(2, var(--stepper-size));\n  grid-template-columns: auto;\n  justify-items: center;\n}\n.stepper-horizontal .stepper-item::after {\n  top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n  right: 0;\n  bottom: auto;\n  left: calc(-50% - var(--stepper-gap));\n  width: auto;\n  height: var(--stepper-track-size);\n}\n.stepper-horizontal .stepper-item:last-child::after {\n  right: 50%;\n}\n\n@media (width >= 576px) {\n  .stepper-horizontal-sm {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal-sm .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n  }\n  .stepper-horizontal-sm .stepper-item::after {\n    top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    right: 0;\n    bottom: auto;\n    left: calc(-50% - var(--stepper-gap));\n    width: auto;\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal-sm .stepper-item:last-child::after {\n    right: 50%;\n  }\n}\n@media (width >= 768px) {\n  .stepper-horizontal-md {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal-md .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n  }\n  .stepper-horizontal-md .stepper-item::after {\n    top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    right: 0;\n    bottom: auto;\n    left: calc(-50% - var(--stepper-gap));\n    width: auto;\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal-md .stepper-item:last-child::after {\n    right: 50%;\n  }\n}\n@media (width >= 1024px) {\n  .stepper-horizontal-lg {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal-lg .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n  }\n  .stepper-horizontal-lg .stepper-item::after {\n    top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    right: 0;\n    bottom: auto;\n    left: calc(-50% - var(--stepper-gap));\n    width: auto;\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal-lg .stepper-item:last-child::after {\n    right: 50%;\n  }\n}\n@media (width >= 1280px) {\n  .stepper-horizontal-xl {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal-xl .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n  }\n  .stepper-horizontal-xl .stepper-item::after {\n    top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    right: 0;\n    bottom: auto;\n    left: calc(-50% - var(--stepper-gap));\n    width: auto;\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal-xl .stepper-item:last-child::after {\n    right: 50%;\n  }\n}\n@media (width >= 1536px) {\n  .stepper-horizontal-2xl {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal-2xl .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n  }\n  .stepper-horizontal-2xl .stepper-item::after {\n    top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    right: 0;\n    bottom: auto;\n    left: calc(-50% - var(--stepper-gap));\n    width: auto;\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal-2xl .stepper-item:last-child::after {\n    right: 50%;\n  }\n}\n.stepper-overflow {\n  container-type: inline-size;\n  overflow-x: auto;\n  overscroll-behavior-x: contain;\n  -webkit-overflow-scrolling: touch;\n}\n.stepper-overflow > .stepper {\n  width: max-content;\n  min-width: 100%;\n}\n\n@layer components {\n  .toast {\n    --toast-zindex: 1090;\n    --toast-padding-x: 0.75rem;\n    --toast-padding-y: 0.5rem;\n    --toast-spacing: 1.5rem;\n    --toast-max-width: 350px;\n    --toast-font-size: 0.875rem;\n    --toast-bg: rgba(var(--body-bg-rgb), 0.85);\n    --toast-border-width: var(--border-width);\n    --toast-border-color: var(--border-color-translucent);\n    --toast-border-radius: var(--border-radius);\n    --toast-box-shadow: var(--box-shadow);\n    --toast-header-color: var(--fg-3);\n    --toast-header-bg: rgba(var(--body-bg-rgb), 0.85);\n    --toast-header-border-color: var(--border-color-translucent);\n    width: var(--toast-max-width);\n    max-width: 100%;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color);\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--toast-border-color);\n    box-shadow: var(--toast-box-shadow);\n    border-radius: var(--toast-border-radius);\n  }\n  .toast.showing {\n    opacity: 0;\n  }\n  .toast:not(.show) {\n    display: none;\n  }\n  .toast-container {\n    --toast-zindex: 1090;\n    position: absolute;\n    z-index: var(--toast-zindex);\n    width: max-content;\n    max-width: 100%;\n    pointer-events: none;\n  }\n  .toast-container > :not(:last-child) {\n    margin-bottom: var(--toast-spacing);\n  }\n  .toast-header {\n    display: flex;\n    align-items: center;\n    padding: var(--toast-padding-y) var(--toast-padding-x);\n    color: var(--toast-header-color);\n    background-color: var(--toast-header-bg);\n    background-clip: padding-box;\n    border-block-end: var(--toast-border-width) solid var(--toast-header-border-color);\n    border-start-start-radius: calc(var(--toast-border-radius) - var(--toast-border-width));\n    border-start-end-radius: calc(var(--toast-border-radius) - var(--toast-border-width));\n  }\n  .toast-header .btn-close {\n    margin-inline-start: var(--toast-padding-x);\n    margin-inline-end: calc(-0.5 * var(--toast-padding-x));\n  }\n  .toast-translucent {\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .toast-body {\n    padding: var(--toast-padding-x);\n    word-wrap: break-word;\n  }\n}\n.fade {\n  transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n  .fade {\n    transition: none;\n  }\n}\n.fade:not(.show) {\n  opacity: 0;\n}\n\n.collapse:not(.show) {\n  display: none;\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing {\n    transition: none;\n  }\n}\n.collapsing.collapse-horizontal {\n  width: 0;\n  height: auto;\n  transition: width 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing.collapse-horizontal {\n    transition: none;\n  }\n}\n\n@layer helpers {\n  .focus-ring:focus-visible {\n    outline: var(--focus-ring);\n  }\n}\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: 0.375rem;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, 0.5));\n    text-underline-offset: 0.25em;\n    backface-visibility: hidden;\n  }\n  .icon-link > .bi {\n    flex-shrink: 0;\n    width: 1em;\n    height: 1em;\n    fill: currentcolor;\n    transition: 0.2s ease-in-out transform;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .icon-link > .bi {\n      transition: none;\n    }\n  }\n  .icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {\n    transform: var(--icon-link-transform, translate3d(0.25em, 0, 0));\n  }\n}\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: 1030;\n  }\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: 1030;\n  }\n  .sticky-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n  .sticky-bottom {\n    position: sticky;\n    bottom: 0;\n    z-index: 1020;\n  }\n  @media (width >= 576px) {\n    .sticky-sm-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-sm-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 768px) {\n    .sticky-md-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-md-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1024px) {\n    .sticky-lg-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-lg-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1280px) {\n    .sticky-xl-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-xl-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1536px) {\n    .sticky-2xl-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-2xl-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n}\n@layer helpers {\n  .stack-container {\n    container-type: inline-size;\n  }\n  [class*=hstack],\n  [class*=vstack] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n  .vstack {\n    --stack-direction: column;\n    --stack-align-items: stretch;\n  }\n  .hstack {\n    --stack-direction: row;\n    --stack-align-items: flex-start;\n  }\n  @container (width >= 576px) {\n    .vstack-sm {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 576px) {\n    .hstack-sm {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 768px) {\n    .vstack-md {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 768px) {\n    .hstack-md {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1024px) {\n    .vstack-lg {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1024px) {\n    .hstack-lg {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1280px) {\n    .vstack-xl {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1280px) {\n    .hstack-xl {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1536px) {\n    .vstack-2xl {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1536px) {\n    .hstack-2xl {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n}\n@layer helpers {\n  .theme-primary {\n    --theme-base: var(--primary-base);\n    --theme-text: var(--primary-text);\n    --theme-text-emphasis: var(--primary-text-emphasis);\n    --theme-bg: var(--primary-bg);\n    --theme-bg-subtle: var(--primary-bg-subtle);\n    --theme-bg-muted: var(--primary-bg-muted);\n    --theme-border: var(--primary-border);\n    --theme-focus-ring: var(--primary-focus-ring);\n    --theme-contrast: var(--primary-contrast);\n  }\n  .theme-accent {\n    --theme-base: var(--accent-base);\n    --theme-text: var(--accent-text);\n    --theme-text-emphasis: var(--accent-text-emphasis);\n    --theme-bg: var(--accent-bg);\n    --theme-bg-subtle: var(--accent-bg-subtle);\n    --theme-bg-muted: var(--accent-bg-muted);\n    --theme-border: var(--accent-border);\n    --theme-focus-ring: var(--accent-focus-ring);\n    --theme-contrast: var(--accent-contrast);\n  }\n  .theme-success {\n    --theme-base: var(--success-base);\n    --theme-text: var(--success-text);\n    --theme-text-emphasis: var(--success-text-emphasis);\n    --theme-bg: var(--success-bg);\n    --theme-bg-subtle: var(--success-bg-subtle);\n    --theme-bg-muted: var(--success-bg-muted);\n    --theme-border: var(--success-border);\n    --theme-focus-ring: var(--success-focus-ring);\n    --theme-contrast: var(--success-contrast);\n  }\n  .theme-danger {\n    --theme-base: var(--danger-base);\n    --theme-text: var(--danger-text);\n    --theme-text-emphasis: var(--danger-text-emphasis);\n    --theme-bg: var(--danger-bg);\n    --theme-bg-subtle: var(--danger-bg-subtle);\n    --theme-bg-muted: var(--danger-bg-muted);\n    --theme-border: var(--danger-border);\n    --theme-focus-ring: var(--danger-focus-ring);\n    --theme-contrast: var(--danger-contrast);\n  }\n  .theme-warning {\n    --theme-base: var(--warning-base);\n    --theme-text: var(--warning-text);\n    --theme-text-emphasis: var(--warning-text-emphasis);\n    --theme-bg: var(--warning-bg);\n    --theme-bg-subtle: var(--warning-bg-subtle);\n    --theme-bg-muted: var(--warning-bg-muted);\n    --theme-border: var(--warning-border);\n    --theme-focus-ring: var(--warning-focus-ring);\n    --theme-contrast: var(--warning-contrast);\n  }\n  .theme-info {\n    --theme-base: var(--info-base);\n    --theme-text: var(--info-text);\n    --theme-text-emphasis: var(--info-text-emphasis);\n    --theme-bg: var(--info-bg);\n    --theme-bg-subtle: var(--info-bg-subtle);\n    --theme-bg-muted: var(--info-bg-muted);\n    --theme-border: var(--info-border);\n    --theme-focus-ring: var(--info-focus-ring);\n    --theme-contrast: var(--info-contrast);\n  }\n  .theme-inverse {\n    --theme-base: var(--inverse-base);\n    --theme-text: var(--inverse-text);\n    --theme-text-emphasis: var(--inverse-text-emphasis);\n    --theme-bg: var(--inverse-bg);\n    --theme-bg-subtle: var(--inverse-bg-subtle);\n    --theme-bg-muted: var(--inverse-bg-muted);\n    --theme-border: var(--inverse-border);\n    --theme-focus-ring: var(--inverse-focus-ring);\n    --theme-contrast: var(--inverse-contrast);\n  }\n  .theme-secondary {\n    --theme-base: var(--secondary-base);\n    --theme-text: var(--secondary-text);\n    --theme-text-emphasis: var(--secondary-text-emphasis);\n    --theme-bg: var(--secondary-bg);\n    --theme-bg-subtle: var(--secondary-bg-subtle);\n    --theme-bg-muted: var(--secondary-bg-muted);\n    --theme-border: var(--secondary-border);\n    --theme-focus-ring: var(--secondary-focus-ring);\n    --theme-contrast: var(--secondary-contrast);\n  }\n}\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) {\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border: 0 !important;\n  }\n  .visually-hidden:not(caption),\n  .visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {\n    position: absolute !important;\n  }\n  .visually-hidden *,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) * {\n    overflow: hidden !important;\n  }\n}\n@layer helpers {\n  .stretched-link::after {\n    position: absolute;\n    inset: 0;\n    z-index: 1;\n    content: \"\";\n  }\n}\n@layer helpers {\n  .text-truncate {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n@layer utilities {\n  .align-baseline {\n    vertical-align: baseline;\n  }\n  .align-top {\n    vertical-align: top;\n  }\n  .align-middle {\n    vertical-align: middle;\n  }\n  .align-bottom {\n    vertical-align: bottom;\n  }\n  .align-text-bottom {\n    vertical-align: text-bottom;\n  }\n  .align-text-top {\n    vertical-align: text-top;\n  }\n  [class*=ratio-] {\n    aspect-ratio: var(--ratio);\n  }\n  .ratio-auto {\n    --ratio: auto;\n  }\n  .ratio-1x1 {\n    --ratio: 1 / 1;\n  }\n  .ratio-4x3 {\n    --ratio: 4 / 3;\n  }\n  .ratio-16x9 {\n    --ratio: 16 / 9;\n  }\n  .ratio-21x9 {\n    --ratio: 21 / 9;\n  }\n  .float-start {\n    float: inline-start;\n  }\n  .float-end {\n    float: inline-end;\n  }\n  .float-none {\n    float: none;\n  }\n  .object-fit-contain {\n    object-fit: contain;\n  }\n  .object-fit-cover {\n    object-fit: cover;\n  }\n  .object-fit-fill {\n    object-fit: fill;\n  }\n  .object-fit-scale {\n    object-fit: scale-down;\n  }\n  .object-fit-none {\n    object-fit: none;\n  }\n  .opacity-0 {\n    opacity: 0;\n  }\n  .opacity-25 {\n    opacity: 0.25;\n  }\n  .opacity-50 {\n    opacity: 0.5;\n  }\n  .opacity-75 {\n    opacity: 0.75;\n  }\n  .opacity-100 {\n    opacity: 1;\n  }\n  .overflow-auto {\n    overflow: auto;\n  }\n  .overflow-hidden {\n    overflow: hidden;\n  }\n  .overflow-visible {\n    overflow: visible;\n  }\n  .overflow-scroll {\n    overflow: scroll;\n  }\n  .overflow-x-auto {\n    overflow-x: auto;\n  }\n  .overflow-x-hidden {\n    overflow-x: hidden;\n  }\n  .overflow-x-visible {\n    overflow-x: visible;\n  }\n  .overflow-x-scroll {\n    overflow-x: scroll;\n  }\n  .overflow-y-auto {\n    overflow-y: auto;\n  }\n  .overflow-y-hidden {\n    overflow-y: hidden;\n  }\n  .overflow-y-visible {\n    overflow-y: visible;\n  }\n  .overflow-y-scroll {\n    overflow-y: scroll;\n  }\n  .d-inline {\n    display: inline;\n  }\n  .d-inline-block {\n    display: inline-block;\n  }\n  .d-block {\n    display: block;\n  }\n  .d-grid {\n    display: grid;\n  }\n  .d-inline-grid {\n    display: inline-grid;\n  }\n  .d-table {\n    display: table;\n  }\n  .d-table-row {\n    display: table-row;\n  }\n  .d-table-cell {\n    display: table-cell;\n  }\n  .d-flex {\n    display: flex;\n  }\n  .d-inline-flex {\n    display: inline-flex;\n  }\n  .d-contents {\n    display: contents;\n  }\n  .d-flow-root {\n    display: flow-root;\n  }\n  .d-none {\n    display: none;\n  }\n  .shadow {\n    box-shadow: var(--box-shadow);\n  }\n  .shadow-sm {\n    box-shadow: var(--box-shadow-sm);\n  }\n  .shadow-lg {\n    box-shadow: var(--box-shadow-lg);\n  }\n  .shadow-none {\n    box-shadow: none;\n  }\n  .focus-ring-primary {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-accent {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-success {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-danger {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-warning {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  }\n  .focus-ring-info {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-inverse {\n    --focus-ring-color: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  }\n  .focus-ring-secondary {\n    --focus-ring-color: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  }\n  .position-static {\n    position: static;\n  }\n  .position-relative {\n    position: relative;\n  }\n  .position-absolute {\n    position: absolute;\n  }\n  .position-fixed {\n    position: fixed;\n  }\n  .position-sticky {\n    position: sticky;\n  }\n  .top-0 {\n    top: 0;\n  }\n  .top-50 {\n    top: 50%;\n  }\n  .top-100 {\n    top: 100%;\n  }\n  .bottom-0 {\n    bottom: 0;\n  }\n  .bottom-50 {\n    bottom: 50%;\n  }\n  .bottom-100 {\n    bottom: 100%;\n  }\n  .start-0 {\n    left: 0;\n  }\n  .start-50 {\n    left: 50%;\n  }\n  .start-100 {\n    left: 100%;\n  }\n  .end-0 {\n    right: 0;\n  }\n  .end-50 {\n    right: 50%;\n  }\n  .end-100 {\n    right: 100%;\n  }\n  .translate-middle {\n    transform: translate(-50%, -50%);\n  }\n  .translate-middle-x {\n    transform: translateX(-50%);\n  }\n  .translate-middle-y {\n    transform: translateY(-50%);\n  }\n  .border {\n    border: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-0 {\n    border: 0;\n  }\n  .border-top {\n    border-block-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-top-0 {\n    border-block-start: 0;\n  }\n  .border-end {\n    border-inline-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-end-0 {\n    border-inline-end: 0;\n  }\n  .border-bottom {\n    border-block-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-bottom-0 {\n    border-block-end: 0;\n  }\n  .border-start {\n    border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-start-0 {\n    border-inline-start: 0;\n  }\n  .border-block {\n    border-block: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-block-0 {\n    border-block: 0;\n  }\n  .border-inline {\n    border-inline: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-inline-0 {\n    border-inline: 0;\n  }\n  .border-primary {\n    --border-color: var(--blue-500);\n    border-color: var(--border-color);\n  }\n  .border-accent {\n    --border-color: var(--indigo-500);\n    border-color: var(--border-color);\n  }\n  .border-success {\n    --border-color: var(--green-500);\n    border-color: var(--border-color);\n  }\n  .border-danger {\n    --border-color: var(--red-500);\n    border-color: var(--border-color);\n  }\n  .border-warning {\n    --border-color: var(--yellow-500);\n    border-color: var(--border-color);\n  }\n  .border-info {\n    --border-color: var(--cyan-500);\n    border-color: var(--border-color);\n  }\n  .border-inverse {\n    --border-color: light-dark(var(--gray-900), var(--gray-025));\n    border-color: var(--border-color);\n  }\n  .border-secondary {\n    --border-color: light-dark(var(--gray-100), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-bg {\n    --border-color: var(--bg-body);\n    border-color: var(--border-color);\n  }\n  .border-body {\n    --border-color: light-dark(var(--gray-300), var(--gray-800));\n    border-color: var(--border-color);\n  }\n  .border-muted {\n    --border-color: light-dark(var(--gray-200), var(--gray-800));\n    border-color: var(--border-color);\n  }\n  .border-subtle {\n    --border-color: light-dark(var(--gray-100), var(--gray-900));\n    border-color: var(--border-color);\n  }\n  .border-emphasized {\n    --border-color: light-dark(var(--gray-400), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-white {\n    --border-color: var(--white);\n    border-color: var(--border-color);\n  }\n  .border-black {\n    --border-color: var(--black);\n    border-color: var(--border-color);\n  }\n  .border-subtle-primary {\n    --border-color: light-dark(var(--blue-300), var(--blue-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-accent {\n    --border-color: light-dark(var(--indigo-300), var(--indigo-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-success {\n    --border-color: light-dark(var(--green-300), var(--green-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-danger {\n    --border-color: light-dark(var(--red-300), var(--red-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-warning {\n    --border-color: light-dark(var(--yellow-300), var(--yellow-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-info {\n    --border-color: light-dark(var(--cyan-300), var(--cyan-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-inverse {\n    --border-color: light-dark(var(--gray-400), var(--gray-100));\n    border-color: var(--border-color);\n  }\n  .border-subtle-secondary {\n    --border-color: light-dark(var(--gray-300), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-1 {\n    border-width: 1px;\n  }\n  .border-2 {\n    border-width: 2px;\n  }\n  .border-3 {\n    border-width: 3px;\n  }\n  .border-4 {\n    border-width: 4px;\n  }\n  .border-5 {\n    border-width: 5px;\n  }\n  .border-10 {\n    border-color: color-mix(in oklch, var(--border-color) 10%, transparent);\n  }\n  .border-20 {\n    border-color: color-mix(in oklch, var(--border-color) 20%, transparent);\n  }\n  .border-30 {\n    border-color: color-mix(in oklch, var(--border-color) 30%, transparent);\n  }\n  .border-40 {\n    border-color: color-mix(in oklch, var(--border-color) 40%, transparent);\n  }\n  .border-50 {\n    border-color: color-mix(in oklch, var(--border-color) 50%, transparent);\n  }\n  .border-60 {\n    border-color: color-mix(in oklch, var(--border-color) 60%, transparent);\n  }\n  .border-70 {\n    border-color: color-mix(in oklch, var(--border-color) 70%, transparent);\n  }\n  .border-80 {\n    border-color: color-mix(in oklch, var(--border-color) 80%, transparent);\n  }\n  .border-90 {\n    border-color: color-mix(in oklch, var(--border-color) 90%, transparent);\n  }\n  .border-100 {\n    border-color: var(--border-color);\n  }\n  .w-1 {\n    width: 1rem;\n  }\n  .w-2 {\n    width: 2rem;\n  }\n  .w-3 {\n    width: 3rem;\n  }\n  .w-4 {\n    width: 4rem;\n  }\n  .w-5 {\n    width: 5rem;\n  }\n  .w-6 {\n    width: 6rem;\n  }\n  .w-7 {\n    width: 7rem;\n  }\n  .w-8 {\n    width: 8rem;\n  }\n  .w-9 {\n    width: 9rem;\n  }\n  .w-10 {\n    width: 10rem;\n  }\n  .w-11 {\n    width: 11rem;\n  }\n  .w-12 {\n    width: 12rem;\n  }\n  .w-25 {\n    width: 25%;\n  }\n  .w-50 {\n    width: 50%;\n  }\n  .w-75 {\n    width: 75%;\n  }\n  .w-100 {\n    width: 100%;\n  }\n  .w-auto {\n    width: auto;\n  }\n  .w-min {\n    width: min-content;\n  }\n  .w-max {\n    width: max-content;\n  }\n  .w-fit {\n    width: fit-content;\n  }\n  .max-w-100 {\n    max-width: 100%;\n  }\n  .min-w-0 {\n    min-width: 0;\n  }\n  .min-w-100 {\n    min-width: 100%;\n  }\n  .vw-100 {\n    width: 100vw;\n  }\n  .min-vw-100 {\n    min-width: 100vw;\n  }\n  .h-25 {\n    height: 25%;\n  }\n  .h-50 {\n    height: 50%;\n  }\n  .h-75 {\n    height: 75%;\n  }\n  .h-100 {\n    height: 100%;\n  }\n  .h-auto {\n    height: auto;\n  }\n  .h-min {\n    height: min-content;\n  }\n  .h-max {\n    height: max-content;\n  }\n  .h-fit {\n    height: fit-content;\n  }\n  .max-h-100 {\n    max-height: 100%;\n  }\n  .min-h-0 {\n    min-height: 0;\n  }\n  .min-h-100 {\n    min-height: 100%;\n  }\n  .vh-100 {\n    height: 100vh;\n  }\n  .min-vh-100 {\n    min-height: 100vh;\n  }\n  .flex-fill {\n    flex: 1 1 auto;\n  }\n  .flex-row {\n    flex-direction: row;\n  }\n  .flex-column {\n    flex-direction: column;\n  }\n  .flex-row-reverse {\n    flex-direction: row-reverse;\n  }\n  .flex-column-reverse {\n    flex-direction: column-reverse;\n  }\n  .flex-grow-0 {\n    flex-grow: 0;\n  }\n  .flex-grow-1 {\n    flex-grow: 1;\n  }\n  .flex-shrink-0 {\n    flex-shrink: 0;\n  }\n  .flex-shrink-1 {\n    flex-shrink: 1;\n  }\n  .flex-wrap {\n    flex-wrap: wrap;\n  }\n  .flex-nowrap {\n    flex-wrap: nowrap;\n  }\n  .flex-wrap-reverse {\n    flex-wrap: wrap-reverse;\n  }\n  .justify-content-start {\n    justify-content: flex-start;\n  }\n  .justify-content-end {\n    justify-content: flex-end;\n  }\n  .justify-content-center {\n    justify-content: center;\n  }\n  .justify-content-between {\n    justify-content: space-between;\n  }\n  .justify-content-around {\n    justify-content: space-around;\n  }\n  .justify-content-evenly {\n    justify-content: space-evenly;\n  }\n  .justify-items-start {\n    justify-items: start;\n  }\n  .justify-items-end {\n    justify-items: end;\n  }\n  .justify-items-center {\n    justify-items: center;\n  }\n  .justify-items-stretch {\n    justify-items: stretch;\n  }\n  .justify-self-start {\n    justify-self: flex-start;\n  }\n  .justify-self-end {\n    justify-self: flex-end;\n  }\n  .justify-self-center {\n    justify-self: center;\n  }\n  .align-items-start {\n    align-items: flex-start;\n  }\n  .align-items-end {\n    align-items: flex-end;\n  }\n  .align-items-center {\n    align-items: center;\n  }\n  .align-items-baseline {\n    align-items: baseline;\n  }\n  .align-items-stretch {\n    align-items: stretch;\n  }\n  .align-content-start {\n    align-content: flex-start;\n  }\n  .align-content-end {\n    align-content: flex-end;\n  }\n  .align-content-center {\n    align-content: center;\n  }\n  .align-content-between {\n    align-content: space-between;\n  }\n  .align-content-around {\n    align-content: space-around;\n  }\n  .align-content-stretch {\n    align-content: stretch;\n  }\n  .align-self-auto {\n    align-self: auto;\n  }\n  .align-self-start {\n    align-self: flex-start;\n  }\n  .align-self-end {\n    align-self: flex-end;\n  }\n  .align-self-center {\n    align-self: center;\n  }\n  .align-self-baseline {\n    align-self: baseline;\n  }\n  .align-self-stretch {\n    align-self: stretch;\n  }\n  .place-items-start {\n    place-items: start;\n  }\n  .place-items-end {\n    place-items: end;\n  }\n  .place-items-center {\n    place-items: center;\n  }\n  .place-items-stretch {\n    place-items: stretch;\n  }\n  .grid-cols-2 {\n    grid-template-columns: repeat(2, 1fr);\n  }\n  .grid-cols-3 {\n    grid-template-columns: repeat(3, 1fr);\n  }\n  .grid-cols-4 {\n    grid-template-columns: repeat(4, 1fr);\n  }\n  .grid-cols-6 {\n    grid-template-columns: repeat(6, 1fr);\n  }\n  .grid-cols-fill {\n    grid-column: 1 / -1;\n  }\n  .grid-auto-flow-row {\n    grid-auto-flow: row;\n  }\n  .grid-auto-flow-column {\n    grid-auto-flow: column;\n  }\n  .grid-auto-flow-dense {\n    grid-auto-flow: dense;\n  }\n  .order-first {\n    order: -1;\n  }\n  .order-0 {\n    order: 0;\n  }\n  .order-1 {\n    order: 1;\n  }\n  .order-2 {\n    order: 2;\n  }\n  .order-3 {\n    order: 3;\n  }\n  .order-4 {\n    order: 4;\n  }\n  .order-5 {\n    order: 5;\n  }\n  .order-last {\n    order: 6;\n  }\n  .m-0 {\n    margin: 0;\n  }\n  .m-1 {\n    margin: 0.25rem;\n  }\n  .m-2 {\n    margin: 0.5rem;\n  }\n  .m-3 {\n    margin: 1rem;\n  }\n  .m-4 {\n    margin: 1.5rem;\n  }\n  .m-5 {\n    margin: 3rem;\n  }\n  .m-auto {\n    margin: auto;\n  }\n  .mx-0 {\n    margin-inline: 0;\n  }\n  .mx-1 {\n    margin-inline: 0.25rem;\n  }\n  .mx-2 {\n    margin-inline: 0.5rem;\n  }\n  .mx-3 {\n    margin-inline: 1rem;\n  }\n  .mx-4 {\n    margin-inline: 1.5rem;\n  }\n  .mx-5 {\n    margin-inline: 3rem;\n  }\n  .mx-auto {\n    margin-inline: auto;\n  }\n  .my-0 {\n    margin-block: 0;\n  }\n  .my-1 {\n    margin-block: 0.25rem;\n  }\n  .my-2 {\n    margin-block: 0.5rem;\n  }\n  .my-3 {\n    margin-block: 1rem;\n  }\n  .my-4 {\n    margin-block: 1.5rem;\n  }\n  .my-5 {\n    margin-block: 3rem;\n  }\n  .my-auto {\n    margin-block: auto;\n  }\n  .mt-0 {\n    margin-block-start: 0;\n  }\n  .mt-1 {\n    margin-block-start: 0.25rem;\n  }\n  .mt-2 {\n    margin-block-start: 0.5rem;\n  }\n  .mt-3 {\n    margin-block-start: 1rem;\n  }\n  .mt-4 {\n    margin-block-start: 1.5rem;\n  }\n  .mt-5 {\n    margin-block-start: 3rem;\n  }\n  .mt-auto {\n    margin-block-start: auto;\n  }\n  .me-0 {\n    margin-inline-end: 0;\n  }\n  .me-1 {\n    margin-inline-end: 0.25rem;\n  }\n  .me-2 {\n    margin-inline-end: 0.5rem;\n  }\n  .me-3 {\n    margin-inline-end: 1rem;\n  }\n  .me-4 {\n    margin-inline-end: 1.5rem;\n  }\n  .me-5 {\n    margin-inline-end: 3rem;\n  }\n  .me-auto {\n    margin-inline-end: auto;\n  }\n  .mb-0 {\n    margin-block-end: 0;\n  }\n  .mb-1 {\n    margin-block-end: 0.25rem;\n  }\n  .mb-2 {\n    margin-block-end: 0.5rem;\n  }\n  .mb-3 {\n    margin-block-end: 1rem;\n  }\n  .mb-4 {\n    margin-block-end: 1.5rem;\n  }\n  .mb-5 {\n    margin-block-end: 3rem;\n  }\n  .mb-auto {\n    margin-block-end: auto;\n  }\n  .ms-0 {\n    margin-inline-start: 0;\n  }\n  .ms-1 {\n    margin-inline-start: 0.25rem;\n  }\n  .ms-2 {\n    margin-inline-start: 0.5rem;\n  }\n  .ms-3 {\n    margin-inline-start: 1rem;\n  }\n  .ms-4 {\n    margin-inline-start: 1.5rem;\n  }\n  .ms-5 {\n    margin-inline-start: 3rem;\n  }\n  .ms--1 {\n    margin-inline-start: -0.25rem;\n  }\n  .ms--2 {\n    margin-inline-start: -0.5rem;\n  }\n  .ms-auto {\n    margin-inline-start: auto;\n  }\n  .p-0 {\n    padding: 0;\n  }\n  .p-1 {\n    padding: 0.25rem;\n  }\n  .p-2 {\n    padding: 0.5rem;\n  }\n  .p-3 {\n    padding: 1rem;\n  }\n  .p-4 {\n    padding: 1.5rem;\n  }\n  .p-5 {\n    padding: 3rem;\n  }\n  .px-0 {\n    padding-inline: 0;\n  }\n  .px-1 {\n    padding-inline: 0.25rem;\n  }\n  .px-2 {\n    padding-inline: 0.5rem;\n  }\n  .px-3 {\n    padding-inline: 1rem;\n  }\n  .px-4 {\n    padding-inline: 1.5rem;\n  }\n  .px-5 {\n    padding-inline: 3rem;\n  }\n  .py-0 {\n    padding-block: 0;\n  }\n  .py-1 {\n    padding-block: 0.25rem;\n  }\n  .py-2 {\n    padding-block: 0.5rem;\n  }\n  .py-3 {\n    padding-block: 1rem;\n  }\n  .py-4 {\n    padding-block: 1.5rem;\n  }\n  .py-5 {\n    padding-block: 3rem;\n  }\n  .pt-0 {\n    padding-block-start: 0;\n  }\n  .pt-1 {\n    padding-block-start: 0.25rem;\n  }\n  .pt-2 {\n    padding-block-start: 0.5rem;\n  }\n  .pt-3 {\n    padding-block-start: 1rem;\n  }\n  .pt-4 {\n    padding-block-start: 1.5rem;\n  }\n  .pt-5 {\n    padding-block-start: 3rem;\n  }\n  .pe-0 {\n    padding-inline-end: 0;\n  }\n  .pe-1 {\n    padding-inline-end: 0.25rem;\n  }\n  .pe-2 {\n    padding-inline-end: 0.5rem;\n  }\n  .pe-3 {\n    padding-inline-end: 1rem;\n  }\n  .pe-4 {\n    padding-inline-end: 1.5rem;\n  }\n  .pe-5 {\n    padding-inline-end: 3rem;\n  }\n  .pb-0 {\n    padding-block-end: 0;\n  }\n  .pb-1 {\n    padding-block-end: 0.25rem;\n  }\n  .pb-2 {\n    padding-block-end: 0.5rem;\n  }\n  .pb-3 {\n    padding-block-end: 1rem;\n  }\n  .pb-4 {\n    padding-block-end: 1.5rem;\n  }\n  .pb-5 {\n    padding-block-end: 3rem;\n  }\n  .ps-0 {\n    padding-inline-start: 0;\n  }\n  .ps-1 {\n    padding-inline-start: 0.25rem;\n  }\n  .ps-2 {\n    padding-inline-start: 0.5rem;\n  }\n  .ps-3 {\n    padding-inline-start: 1rem;\n  }\n  .ps-4 {\n    padding-inline-start: 1.5rem;\n  }\n  .ps-5 {\n    padding-inline-start: 3rem;\n  }\n  .gap-0 {\n    gap: 0;\n  }\n  .gap-1 {\n    gap: 0.25rem;\n  }\n  .gap-2 {\n    gap: 0.5rem;\n  }\n  .gap-3 {\n    gap: 1rem;\n  }\n  .gap-4 {\n    gap: 1.5rem;\n  }\n  .gap-5 {\n    gap: 3rem;\n  }\n  .row-gap-0 {\n    row-gap: 0;\n  }\n  .row-gap-1 {\n    row-gap: 0.25rem;\n  }\n  .row-gap-2 {\n    row-gap: 0.5rem;\n  }\n  .row-gap-3 {\n    row-gap: 1rem;\n  }\n  .row-gap-4 {\n    row-gap: 1.5rem;\n  }\n  .row-gap-5 {\n    row-gap: 3rem;\n  }\n  .column-gap-0 {\n    column-gap: 0;\n  }\n  .column-gap-1 {\n    column-gap: 0.25rem;\n  }\n  .column-gap-2 {\n    column-gap: 0.5rem;\n  }\n  .column-gap-3 {\n    column-gap: 1rem;\n  }\n  .column-gap-4 {\n    column-gap: 1.5rem;\n  }\n  .column-gap-5 {\n    column-gap: 3rem;\n  }\n  .font-monospace {\n    font-family: var(--font-mono);\n  }\n  .font-body {\n    font-family: var(--body-font-family);\n  }\n  .fs-xs {\n    font-size: 0.75rem;\n  }\n  .fs-sm {\n    font-size: 0.875rem;\n  }\n  .fs-md {\n    font-size: 1rem;\n  }\n  .fs-lg {\n    font-size: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  }\n  .fs-xl {\n    font-size: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  }\n  .fs-2xl {\n    font-size: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  }\n  .fs-3xl {\n    font-size: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  }\n  .fs-4xl {\n    font-size: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  }\n  .fs-5xl {\n    font-size: clamp(3rem, 2rem + 5vw, 4rem);\n  }\n  .fs-6xl {\n    font-size: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  }\n  .text-xs {\n    font-size: 0.75rem;\n    line-height: 1.25;\n  }\n  .text-sm {\n    font-size: 0.875rem;\n    line-height: 1.5;\n  }\n  .text-md {\n    font-size: 1rem;\n    line-height: 1.5;\n  }\n  .text-lg {\n    font-size: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n    line-height: 1.5;\n  }\n  .text-xl {\n    font-size: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n    line-height: 1.4285714286;\n  }\n  .text-2xl {\n    font-size: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n    line-height: 1.3333333333;\n  }\n  .text-3xl {\n    font-size: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n    line-height: 1.2;\n  }\n  .text-4xl {\n    font-size: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n    line-height: 1.1;\n  }\n  .text-5xl {\n    font-size: clamp(3rem, 2rem + 5vw, 4rem);\n    line-height: 1.1;\n  }\n  .text-6xl {\n    font-size: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n    line-height: 1;\n  }\n  .fst-italic {\n    font-style: italic;\n  }\n  .fst-normal {\n    font-style: normal;\n  }\n  .fw-lighter {\n    font-weight: lighter;\n  }\n  .fw-light {\n    font-weight: 300;\n  }\n  .fw-normal {\n    font-weight: 400;\n  }\n  .fw-medium {\n    font-weight: 500;\n  }\n  .fw-semibold {\n    font-weight: 600;\n  }\n  .fw-bold {\n    font-weight: 700;\n  }\n  .fw-bolder {\n    font-weight: bolder;\n  }\n  .lh-1 {\n    line-height: 1;\n  }\n  .lh-sm {\n    line-height: 1.25;\n  }\n  .lh-base {\n    line-height: 1.5;\n  }\n  .lh-lg {\n    line-height: 2;\n  }\n  .text-start {\n    text-align: start;\n  }\n  .text-end {\n    text-align: end;\n  }\n  .text-center {\n    text-align: center;\n  }\n  .text-decoration-none {\n    text-decoration: none;\n  }\n  .text-decoration-underline {\n    text-decoration: underline;\n  }\n  .text-decoration-line-through {\n    text-decoration: line-through;\n  }\n  .text-lowercase {\n    text-transform: lowercase;\n  }\n  .text-uppercase {\n    text-transform: uppercase;\n  }\n  .text-capitalize {\n    text-transform: capitalize;\n  }\n  .text-wrap {\n    white-space: wrap;\n  }\n  .text-nowrap {\n    white-space: nowrap;\n  }\n  .text-balance {\n    white-space: balance;\n  }\n  .text-pretty {\n    white-space: pretty;\n  }\n  .text-break {\n    word-wrap: break-word;\n    word-break: break-word;\n  }\n  .fg-primary {\n    --fg: light-dark(var(--blue-600), var(--blue-400));\n    color: var(--fg);\n  }\n  .fg-accent {\n    --fg: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n    color: var(--fg);\n  }\n  .fg-success {\n    --fg: light-dark(var(--green-600), var(--green-400));\n    color: var(--fg);\n  }\n  .fg-danger {\n    --fg: light-dark(var(--red-600), var(--red-400));\n    color: var(--fg);\n  }\n  .fg-warning {\n    --fg: light-dark(var(--yellow-700), var(--yellow-400));\n    color: var(--fg);\n  }\n  .fg-info {\n    --fg: light-dark(var(--cyan-600), var(--cyan-400));\n    color: var(--fg);\n  }\n  .fg-inverse {\n    --fg: light-dark(var(--gray-900), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-secondary {\n    --fg: light-dark(var(--gray-600), var(--gray-400));\n    color: var(--fg);\n  }\n  .fg-body {\n    --fg: light-dark(var(--gray-900), var(--gray-050));\n    color: var(--fg);\n  }\n  .fg-1 {\n    --fg: light-dark(var(--gray-800), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-2 {\n    --fg: light-dark(var(--gray-700), var(--gray-300));\n    color: var(--fg);\n  }\n  .fg-3 {\n    --fg: light-dark(var(--gray-600), var(--gray-500));\n    color: var(--fg);\n  }\n  .fg-4 {\n    --fg: light-dark(var(--gray-500), var(--gray-600));\n    color: var(--fg);\n  }\n  .fg-white {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-black {\n    --fg: var(--black);\n    color: var(--fg);\n  }\n  .fg-inherit {\n    --fg: inherit;\n    color: var(--fg);\n  }\n  .fg-emphasis-primary {\n    --fg: light-dark(var(--blue-800), var(--blue-200));\n    color: var(--fg);\n  }\n  .fg-emphasis-accent {\n    --fg: light-dark(var(--indigo-800), var(--indigo-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-success {\n    --fg: light-dark(var(--green-800), var(--green-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-danger {\n    --fg: light-dark(var(--red-800), var(--red-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-warning {\n    --fg: light-dark(var(--yellow-800), var(--yellow-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-info {\n    --fg: light-dark(var(--cyan-800), var(--cyan-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-inverse {\n    --fg: light-dark(var(--gray-975), var(--white));\n    color: var(--fg);\n  }\n  .fg-emphasis-secondary {\n    --fg: light-dark(var(--gray-800), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-contrast-primary {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-accent {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-success {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-danger {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-warning {\n    --fg: var(--gray-900);\n    color: var(--fg);\n  }\n  .fg-contrast-info {\n    --fg: var(--gray-900);\n    color: var(--fg);\n  }\n  .fg-contrast-inverse {\n    --fg: light-dark(var(--white), var(--gray-900));\n    color: var(--fg);\n  }\n  .fg-contrast-secondary {\n    --fg: light-dark(var(--gray-900), var(--white));\n    color: var(--fg);\n  }\n  .fg-10 {\n    color: color-mix(in oklch, var(--fg) 10%, transparent);\n  }\n  .fg-20 {\n    color: color-mix(in oklch, var(--fg) 20%, transparent);\n  }\n  .fg-30 {\n    color: color-mix(in oklch, var(--fg) 30%, transparent);\n  }\n  .fg-40 {\n    color: color-mix(in oklch, var(--fg) 40%, transparent);\n  }\n  .fg-50 {\n    color: color-mix(in oklch, var(--fg) 50%, transparent);\n  }\n  .fg-60 {\n    color: color-mix(in oklch, var(--fg) 60%, transparent);\n  }\n  .fg-70 {\n    color: color-mix(in oklch, var(--fg) 70%, transparent);\n  }\n  .fg-80 {\n    color: color-mix(in oklch, var(--fg) 80%, transparent);\n  }\n  .fg-90 {\n    color: color-mix(in oklch, var(--fg) 90%, transparent);\n  }\n  .fg-100 {\n    color: var(--fg);\n  }\n  .link-10 {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .link-10-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .link-20 {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .link-20-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .link-30 {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .link-30-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .link-40 {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .link-40-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .link-50 {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .link-50-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .link-60 {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .link-60-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .link-70 {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .link-70-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .link-80 {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .link-80-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .link-90 {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-90-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-100 {\n    color: var(--link-color);\n  }\n  .link-100-hover:hover {\n    color: var(--link-color);\n  }\n  .underline-offset-1 {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-1-hover:hover {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-2 {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-2-hover:hover {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-3 {\n    text-underline-offset: 0.375em;\n  }\n  .underline-offset-3-hover:hover {\n    text-underline-offset: 0.375em;\n  }\n  .underline-primary {\n    text-decoration-color: light-dark(var(--blue-600), var(--blue-400));\n  }\n  .underline-accent {\n    text-decoration-color: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  }\n  .underline-success {\n    text-decoration-color: light-dark(var(--green-600), var(--green-400));\n  }\n  .underline-danger {\n    text-decoration-color: light-dark(var(--red-600), var(--red-400));\n  }\n  .underline-warning {\n    text-decoration-color: light-dark(var(--yellow-700), var(--yellow-400));\n  }\n  .underline-info {\n    text-decoration-color: light-dark(var(--cyan-600), var(--cyan-400));\n  }\n  .underline-inverse {\n    text-decoration-color: light-dark(var(--gray-900), var(--gray-200));\n  }\n  .underline-secondary {\n    text-decoration-color: light-dark(var(--gray-600), var(--gray-400));\n  }\n  .underline-10 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .underline-10-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .underline-20 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .underline-20-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .underline-30 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .underline-30-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .underline-40 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .underline-40-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .underline-50 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .underline-50-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .underline-60 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .underline-60-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .underline-70 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .underline-70-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .underline-80 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .underline-80-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .underline-90 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .underline-90-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .underline-100 {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-100-hover:hover {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-thickness-1 {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-1-hover:hover {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-2 {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-2-hover:hover {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-3 {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-3-hover:hover {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-4 {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-4-hover:hover {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-5 {\n    text-decoration-thickness: 5px;\n  }\n  .underline-thickness-5-hover:hover {\n    text-decoration-thickness: 5px;\n  }\n  .bg-primary {\n    --bg: var(--blue-500);\n    background-color: var(--bg);\n  }\n  .bg-accent {\n    --bg: var(--indigo-500);\n    background-color: var(--bg);\n  }\n  .bg-success {\n    --bg: var(--green-500);\n    background-color: var(--bg);\n  }\n  .bg-danger {\n    --bg: var(--red-500);\n    background-color: var(--bg);\n  }\n  .bg-warning {\n    --bg: var(--yellow-500);\n    background-color: var(--bg);\n  }\n  .bg-info {\n    --bg: var(--cyan-500);\n    background-color: var(--bg);\n  }\n  .bg-inverse {\n    --bg: light-dark(var(--gray-900), var(--gray-025));\n    background-color: var(--bg);\n  }\n  .bg-secondary {\n    --bg: light-dark(var(--gray-100), var(--gray-600));\n    background-color: var(--bg);\n  }\n  .bg-body {\n    --bg: light-dark(var(--white), var(--gray-975));\n    background-color: var(--bg);\n  }\n  .bg-1 {\n    --bg: light-dark(var(--gray-025), var(--gray-950));\n    background-color: var(--bg);\n  }\n  .bg-2 {\n    --bg: light-dark(var(--gray-050), var(--gray-900));\n    background-color: var(--bg);\n  }\n  .bg-3 {\n    --bg: light-dark(var(--gray-100), var(--gray-800));\n    background-color: var(--bg);\n  }\n  .bg-4 {\n    --bg: light-dark(var(--gray-200), var(--gray-700));\n    background-color: var(--bg);\n  }\n  .bg-white {\n    --bg: var(--white);\n    background-color: var(--bg);\n  }\n  .bg-black {\n    --bg: var(--black);\n    background-color: var(--bg);\n  }\n  .bg-transparent {\n    --bg: transparent;\n    background-color: var(--bg);\n  }\n  .bg-inherit {\n    --bg: inherit;\n    background-color: var(--bg);\n  }\n  .bg-subtle-primary {\n    --bg: light-dark(var(--blue-100), var(--blue-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-accent {\n    --bg: light-dark(var(--indigo-100), var(--indigo-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-success {\n    --bg: light-dark(var(--green-100), var(--green-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-danger {\n    --bg: light-dark(var(--red-100), var(--red-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-warning {\n    --bg: light-dark(var(--yellow-100), var(--yellow-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-info {\n    --bg: light-dark(var(--cyan-100), var(--cyan-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-inverse {\n    --bg: light-dark(var(--gray-100), var(--gray-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-secondary {\n    --bg: light-dark(var(--gray-050), var(--gray-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-primary {\n    --bg: light-dark(var(--blue-200), var(--blue-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-accent {\n    --bg: light-dark(var(--indigo-200), var(--indigo-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-success {\n    --bg: light-dark(var(--green-200), var(--green-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-danger {\n    --bg: light-dark(var(--red-200), var(--red-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-warning {\n    --bg: light-dark(var(--yellow-200), var(--yellow-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-info {\n    --bg: light-dark(var(--cyan-200), var(--cyan-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-inverse {\n    --bg: light-dark(var(--gray-200), var(--gray-300));\n    background-color: var(--bg);\n  }\n  .bg-muted-secondary {\n    --bg: light-dark(var(--gray-100), var(--gray-700));\n    background-color: var(--bg);\n  }\n  .bg-10 {\n    background-color: color-mix(in oklch, var(--bg) 10%, transparent);\n  }\n  .bg-20 {\n    background-color: color-mix(in oklch, var(--bg) 20%, transparent);\n  }\n  .bg-30 {\n    background-color: color-mix(in oklch, var(--bg) 30%, transparent);\n  }\n  .bg-40 {\n    background-color: color-mix(in oklch, var(--bg) 40%, transparent);\n  }\n  .bg-50 {\n    background-color: color-mix(in oklch, var(--bg) 50%, transparent);\n  }\n  .bg-60 {\n    background-color: color-mix(in oklch, var(--bg) 60%, transparent);\n  }\n  .bg-70 {\n    background-color: color-mix(in oklch, var(--bg) 70%, transparent);\n  }\n  .bg-80 {\n    background-color: color-mix(in oklch, var(--bg) 80%, transparent);\n  }\n  .bg-90 {\n    background-color: color-mix(in oklch, var(--bg) 90%, transparent);\n  }\n  .bg-100 {\n    background-color: var(--bg);\n  }\n  .theme-contrast {\n    background-color: var(--theme-bg);\n    color: var(--theme-contrast);\n  }\n  .theme-subtle {\n    background-color: var(--theme-bg-subtle);\n    color: var(--theme-text);\n  }\n  .theme-muted {\n    background-color: var(--theme-bg-muted);\n    color: var(--theme-text-emphasis);\n  }\n  .theme-border {\n    border: var(--border-width) solid var(--theme-border);\n  }\n  .bg-gradient {\n    background-image: var(--gradient);\n  }\n  .user-select-all {\n    user-select: all;\n  }\n  .user-select-auto {\n    user-select: auto;\n  }\n  .user-select-text {\n    user-select: text;\n  }\n  .user-select-none {\n    user-select: none;\n  }\n  .pe-none {\n    pointer-events: none;\n  }\n  .pe-auto {\n    pointer-events: auto;\n  }\n  .rounded {\n    border-radius: var(--border-radius);\n  }\n  .rounded-0 {\n    border-radius: 0;\n  }\n  .rounded-1 {\n    border-radius: var(--border-radius-sm);\n  }\n  .rounded-2 {\n    border-radius: var(--border-radius);\n  }\n  .rounded-3 {\n    border-radius: var(--border-radius-lg);\n  }\n  .rounded-4 {\n    border-radius: var(--border-radius-xl);\n  }\n  .rounded-5 {\n    border-radius: var(--border-radius-2xl);\n  }\n  .rounded-circle {\n    border-radius: 50%;\n  }\n  .rounded-pill {\n    border-radius: var(--border-radius-pill);\n  }\n  .rounded-top {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-top-0 {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .rounded-top-1 {\n    border-start-start-radius: var(--border-radius-sm);\n    border-start-end-radius: var(--border-radius-sm);\n  }\n  .rounded-top-2 {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-top-3 {\n    border-start-start-radius: var(--border-radius-lg);\n    border-start-end-radius: var(--border-radius-lg);\n  }\n  .rounded-top-4 {\n    border-start-start-radius: var(--border-radius-xl);\n    border-start-end-radius: var(--border-radius-xl);\n  }\n  .rounded-top-5 {\n    border-start-start-radius: var(--border-radius-2xl);\n    border-start-end-radius: var(--border-radius-2xl);\n  }\n  .rounded-top-circle {\n    border-start-start-radius: 50%;\n    border-start-end-radius: 50%;\n  }\n  .rounded-top-pill {\n    border-start-start-radius: var(--border-radius-pill);\n    border-start-end-radius: var(--border-radius-pill);\n  }\n  .rounded-end {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-end-0 {\n    border-end-end-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-end-1 {\n    border-end-end-radius: var(--border-radius-sm);\n    border-end-start-radius: var(--border-radius-sm);\n  }\n  .rounded-end-2 {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-end-3 {\n    border-end-end-radius: var(--border-radius-lg);\n    border-end-start-radius: var(--border-radius-lg);\n  }\n  .rounded-end-4 {\n    border-end-end-radius: var(--border-radius-xl);\n    border-end-start-radius: var(--border-radius-xl);\n  }\n  .rounded-end-5 {\n    border-end-end-radius: var(--border-radius-2xl);\n    border-end-start-radius: var(--border-radius-2xl);\n  }\n  .rounded-end-circle {\n    border-end-end-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-end-pill {\n    border-end-end-radius: var(--border-radius-pill);\n    border-end-start-radius: var(--border-radius-pill);\n  }\n  .rounded-bottom {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-bottom-0 {\n    border-end-end-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-bottom-1 {\n    border-end-end-radius: var(--border-radius-sm);\n    border-end-start-radius: var(--border-radius-sm);\n  }\n  .rounded-bottom-2 {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-bottom-3 {\n    border-end-end-radius: var(--border-radius-lg);\n    border-end-start-radius: var(--border-radius-lg);\n  }\n  .rounded-bottom-4 {\n    border-end-end-radius: var(--border-radius-xl);\n    border-end-start-radius: var(--border-radius-xl);\n  }\n  .rounded-bottom-5 {\n    border-end-end-radius: var(--border-radius-2xl);\n    border-end-start-radius: var(--border-radius-2xl);\n  }\n  .rounded-bottom-circle {\n    border-end-end-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-bottom-pill {\n    border-end-end-radius: var(--border-radius-pill);\n    border-end-start-radius: var(--border-radius-pill);\n  }\n  .rounded-start {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-start-0 {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .rounded-start-1 {\n    border-start-start-radius: var(--border-radius-sm);\n    border-start-end-radius: var(--border-radius-sm);\n  }\n  .rounded-start-2 {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-start-3 {\n    border-start-start-radius: var(--border-radius-lg);\n    border-start-end-radius: var(--border-radius-lg);\n  }\n  .rounded-start-4 {\n    border-start-start-radius: var(--border-radius-xl);\n    border-start-end-radius: var(--border-radius-xl);\n  }\n  .rounded-start-5 {\n    border-start-start-radius: var(--border-radius-2xl);\n    border-start-end-radius: var(--border-radius-2xl);\n  }\n  .rounded-start-circle {\n    border-start-start-radius: 50%;\n    border-start-end-radius: 50%;\n  }\n  .rounded-start-pill {\n    border-start-start-radius: var(--border-radius-pill);\n    border-start-end-radius: var(--border-radius-pill);\n  }\n  .visible {\n    visibility: visible;\n  }\n  .invisible {\n    visibility: hidden;\n  }\n  .z-n1 {\n    z-index: -1;\n  }\n  .z-0 {\n    z-index: 0;\n  }\n  .z-1 {\n    z-index: 1;\n  }\n  .z-2 {\n    z-index: 2;\n  }\n  .z-3 {\n    z-index: 3;\n  }\n  @media (width >= 576px) {\n    .float-sm-start {\n      float: inline-start;\n    }\n    .float-sm-end {\n      float: inline-end;\n    }\n    .float-sm-none {\n      float: none;\n    }\n    .object-fit-sm-contain {\n      object-fit: contain;\n    }\n    .object-fit-sm-cover {\n      object-fit: cover;\n    }\n    .object-fit-sm-fill {\n      object-fit: fill;\n    }\n    .object-fit-sm-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-sm-none {\n      object-fit: none;\n    }\n    .d-sm-inline {\n      display: inline;\n    }\n    .d-sm-inline-block {\n      display: inline-block;\n    }\n    .d-sm-block {\n      display: block;\n    }\n    .d-sm-grid {\n      display: grid;\n    }\n    .d-sm-inline-grid {\n      display: inline-grid;\n    }\n    .d-sm-table {\n      display: table;\n    }\n    .d-sm-table-row {\n      display: table-row;\n    }\n    .d-sm-table-cell {\n      display: table-cell;\n    }\n    .d-sm-flex {\n      display: flex;\n    }\n    .d-sm-inline-flex {\n      display: inline-flex;\n    }\n    .d-sm-contents {\n      display: contents;\n    }\n    .d-sm-flow-root {\n      display: flow-root;\n    }\n    .d-sm-none {\n      display: none;\n    }\n    .flex-sm-fill {\n      flex: 1 1 auto;\n    }\n    .flex-sm-row {\n      flex-direction: row;\n    }\n    .flex-sm-column {\n      flex-direction: column;\n    }\n    .flex-sm-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-sm-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-sm-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-sm-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-sm-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-sm-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-sm-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-sm-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-sm-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-sm-start {\n      justify-content: flex-start;\n    }\n    .justify-content-sm-end {\n      justify-content: flex-end;\n    }\n    .justify-content-sm-center {\n      justify-content: center;\n    }\n    .justify-content-sm-between {\n      justify-content: space-between;\n    }\n    .justify-content-sm-around {\n      justify-content: space-around;\n    }\n    .justify-content-sm-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-sm-start {\n      justify-items: start;\n    }\n    .justify-items-sm-end {\n      justify-items: end;\n    }\n    .justify-items-sm-center {\n      justify-items: center;\n    }\n    .justify-items-sm-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-sm-start {\n      justify-self: flex-start;\n    }\n    .justify-self-sm-end {\n      justify-self: flex-end;\n    }\n    .justify-self-sm-center {\n      justify-self: center;\n    }\n    .align-items-sm-start {\n      align-items: flex-start;\n    }\n    .align-items-sm-end {\n      align-items: flex-end;\n    }\n    .align-items-sm-center {\n      align-items: center;\n    }\n    .align-items-sm-baseline {\n      align-items: baseline;\n    }\n    .align-items-sm-stretch {\n      align-items: stretch;\n    }\n    .align-content-sm-start {\n      align-content: flex-start;\n    }\n    .align-content-sm-end {\n      align-content: flex-end;\n    }\n    .align-content-sm-center {\n      align-content: center;\n    }\n    .align-content-sm-between {\n      align-content: space-between;\n    }\n    .align-content-sm-around {\n      align-content: space-around;\n    }\n    .align-content-sm-stretch {\n      align-content: stretch;\n    }\n    .align-self-sm-auto {\n      align-self: auto;\n    }\n    .align-self-sm-start {\n      align-self: flex-start;\n    }\n    .align-self-sm-end {\n      align-self: flex-end;\n    }\n    .align-self-sm-center {\n      align-self: center;\n    }\n    .align-self-sm-baseline {\n      align-self: baseline;\n    }\n    .align-self-sm-stretch {\n      align-self: stretch;\n    }\n    .place-items-sm-start {\n      place-items: start;\n    }\n    .place-items-sm-end {\n      place-items: end;\n    }\n    .place-items-sm-center {\n      place-items: center;\n    }\n    .place-items-sm-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-sm-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .grid-cols-sm-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .grid-cols-sm-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .grid-cols-sm-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .grid-cols-sm-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-sm-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-sm-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-sm-dense {\n      grid-auto-flow: dense;\n    }\n    .order-sm-first {\n      order: -1;\n    }\n    .order-sm-0 {\n      order: 0;\n    }\n    .order-sm-1 {\n      order: 1;\n    }\n    .order-sm-2 {\n      order: 2;\n    }\n    .order-sm-3 {\n      order: 3;\n    }\n    .order-sm-4 {\n      order: 4;\n    }\n    .order-sm-5 {\n      order: 5;\n    }\n    .order-sm-last {\n      order: 6;\n    }\n    .m-sm-0 {\n      margin: 0;\n    }\n    .m-sm-1 {\n      margin: 0.25rem;\n    }\n    .m-sm-2 {\n      margin: 0.5rem;\n    }\n    .m-sm-3 {\n      margin: 1rem;\n    }\n    .m-sm-4 {\n      margin: 1.5rem;\n    }\n    .m-sm-5 {\n      margin: 3rem;\n    }\n    .m-sm-auto {\n      margin: auto;\n    }\n    .mx-sm-0 {\n      margin-inline: 0;\n    }\n    .mx-sm-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-sm-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-sm-3 {\n      margin-inline: 1rem;\n    }\n    .mx-sm-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-sm-5 {\n      margin-inline: 3rem;\n    }\n    .mx-sm-auto {\n      margin-inline: auto;\n    }\n    .my-sm-0 {\n      margin-block: 0;\n    }\n    .my-sm-1 {\n      margin-block: 0.25rem;\n    }\n    .my-sm-2 {\n      margin-block: 0.5rem;\n    }\n    .my-sm-3 {\n      margin-block: 1rem;\n    }\n    .my-sm-4 {\n      margin-block: 1.5rem;\n    }\n    .my-sm-5 {\n      margin-block: 3rem;\n    }\n    .my-sm-auto {\n      margin-block: auto;\n    }\n    .mt-sm-0 {\n      margin-block-start: 0;\n    }\n    .mt-sm-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-sm-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-sm-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-sm-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-sm-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-sm-auto {\n      margin-block-start: auto;\n    }\n    .me-sm-0 {\n      margin-inline-end: 0;\n    }\n    .me-sm-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-sm-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-sm-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-sm-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-sm-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-sm-auto {\n      margin-inline-end: auto;\n    }\n    .mb-sm-0 {\n      margin-block-end: 0;\n    }\n    .mb-sm-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-sm-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-sm-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-sm-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-sm-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-sm-auto {\n      margin-block-end: auto;\n    }\n    .ms-sm-0 {\n      margin-inline-start: 0;\n    }\n    .ms-sm-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-sm-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-sm-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-sm-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-sm-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-sm--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-sm--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-sm-auto {\n      margin-inline-start: auto;\n    }\n    .p-sm-0 {\n      padding: 0;\n    }\n    .p-sm-1 {\n      padding: 0.25rem;\n    }\n    .p-sm-2 {\n      padding: 0.5rem;\n    }\n    .p-sm-3 {\n      padding: 1rem;\n    }\n    .p-sm-4 {\n      padding: 1.5rem;\n    }\n    .p-sm-5 {\n      padding: 3rem;\n    }\n    .px-sm-0 {\n      padding-inline: 0;\n    }\n    .px-sm-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-sm-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-sm-3 {\n      padding-inline: 1rem;\n    }\n    .px-sm-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-sm-5 {\n      padding-inline: 3rem;\n    }\n    .py-sm-0 {\n      padding-block: 0;\n    }\n    .py-sm-1 {\n      padding-block: 0.25rem;\n    }\n    .py-sm-2 {\n      padding-block: 0.5rem;\n    }\n    .py-sm-3 {\n      padding-block: 1rem;\n    }\n    .py-sm-4 {\n      padding-block: 1.5rem;\n    }\n    .py-sm-5 {\n      padding-block: 3rem;\n    }\n    .pt-sm-0 {\n      padding-block-start: 0;\n    }\n    .pt-sm-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-sm-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-sm-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-sm-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-sm-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-sm-0 {\n      padding-inline-end: 0;\n    }\n    .pe-sm-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-sm-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-sm-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-sm-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-sm-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-sm-0 {\n      padding-block-end: 0;\n    }\n    .pb-sm-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-sm-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-sm-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-sm-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-sm-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-sm-0 {\n      padding-inline-start: 0;\n    }\n    .ps-sm-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-sm-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-sm-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-sm-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-sm-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-sm-0 {\n      gap: 0;\n    }\n    .gap-sm-1 {\n      gap: 0.25rem;\n    }\n    .gap-sm-2 {\n      gap: 0.5rem;\n    }\n    .gap-sm-3 {\n      gap: 1rem;\n    }\n    .gap-sm-4 {\n      gap: 1.5rem;\n    }\n    .gap-sm-5 {\n      gap: 3rem;\n    }\n    .row-gap-sm-0 {\n      row-gap: 0;\n    }\n    .row-gap-sm-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-sm-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-sm-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-sm-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-sm-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-sm-0 {\n      column-gap: 0;\n    }\n    .column-gap-sm-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-sm-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-sm-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-sm-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-sm-5 {\n      column-gap: 3rem;\n    }\n    .text-sm-start {\n      text-align: start;\n    }\n    .text-sm-end {\n      text-align: end;\n    }\n    .text-sm-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 768px) {\n    .float-md-start {\n      float: inline-start;\n    }\n    .float-md-end {\n      float: inline-end;\n    }\n    .float-md-none {\n      float: none;\n    }\n    .object-fit-md-contain {\n      object-fit: contain;\n    }\n    .object-fit-md-cover {\n      object-fit: cover;\n    }\n    .object-fit-md-fill {\n      object-fit: fill;\n    }\n    .object-fit-md-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-md-none {\n      object-fit: none;\n    }\n    .d-md-inline {\n      display: inline;\n    }\n    .d-md-inline-block {\n      display: inline-block;\n    }\n    .d-md-block {\n      display: block;\n    }\n    .d-md-grid {\n      display: grid;\n    }\n    .d-md-inline-grid {\n      display: inline-grid;\n    }\n    .d-md-table {\n      display: table;\n    }\n    .d-md-table-row {\n      display: table-row;\n    }\n    .d-md-table-cell {\n      display: table-cell;\n    }\n    .d-md-flex {\n      display: flex;\n    }\n    .d-md-inline-flex {\n      display: inline-flex;\n    }\n    .d-md-contents {\n      display: contents;\n    }\n    .d-md-flow-root {\n      display: flow-root;\n    }\n    .d-md-none {\n      display: none;\n    }\n    .flex-md-fill {\n      flex: 1 1 auto;\n    }\n    .flex-md-row {\n      flex-direction: row;\n    }\n    .flex-md-column {\n      flex-direction: column;\n    }\n    .flex-md-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-md-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-md-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-md-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-md-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-md-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-md-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-md-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-md-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-md-start {\n      justify-content: flex-start;\n    }\n    .justify-content-md-end {\n      justify-content: flex-end;\n    }\n    .justify-content-md-center {\n      justify-content: center;\n    }\n    .justify-content-md-between {\n      justify-content: space-between;\n    }\n    .justify-content-md-around {\n      justify-content: space-around;\n    }\n    .justify-content-md-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-md-start {\n      justify-items: start;\n    }\n    .justify-items-md-end {\n      justify-items: end;\n    }\n    .justify-items-md-center {\n      justify-items: center;\n    }\n    .justify-items-md-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-md-start {\n      justify-self: flex-start;\n    }\n    .justify-self-md-end {\n      justify-self: flex-end;\n    }\n    .justify-self-md-center {\n      justify-self: center;\n    }\n    .align-items-md-start {\n      align-items: flex-start;\n    }\n    .align-items-md-end {\n      align-items: flex-end;\n    }\n    .align-items-md-center {\n      align-items: center;\n    }\n    .align-items-md-baseline {\n      align-items: baseline;\n    }\n    .align-items-md-stretch {\n      align-items: stretch;\n    }\n    .align-content-md-start {\n      align-content: flex-start;\n    }\n    .align-content-md-end {\n      align-content: flex-end;\n    }\n    .align-content-md-center {\n      align-content: center;\n    }\n    .align-content-md-between {\n      align-content: space-between;\n    }\n    .align-content-md-around {\n      align-content: space-around;\n    }\n    .align-content-md-stretch {\n      align-content: stretch;\n    }\n    .align-self-md-auto {\n      align-self: auto;\n    }\n    .align-self-md-start {\n      align-self: flex-start;\n    }\n    .align-self-md-end {\n      align-self: flex-end;\n    }\n    .align-self-md-center {\n      align-self: center;\n    }\n    .align-self-md-baseline {\n      align-self: baseline;\n    }\n    .align-self-md-stretch {\n      align-self: stretch;\n    }\n    .place-items-md-start {\n      place-items: start;\n    }\n    .place-items-md-end {\n      place-items: end;\n    }\n    .place-items-md-center {\n      place-items: center;\n    }\n    .place-items-md-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-md-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .grid-cols-md-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .grid-cols-md-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .grid-cols-md-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .grid-cols-md-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-md-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-md-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-md-dense {\n      grid-auto-flow: dense;\n    }\n    .order-md-first {\n      order: -1;\n    }\n    .order-md-0 {\n      order: 0;\n    }\n    .order-md-1 {\n      order: 1;\n    }\n    .order-md-2 {\n      order: 2;\n    }\n    .order-md-3 {\n      order: 3;\n    }\n    .order-md-4 {\n      order: 4;\n    }\n    .order-md-5 {\n      order: 5;\n    }\n    .order-md-last {\n      order: 6;\n    }\n    .m-md-0 {\n      margin: 0;\n    }\n    .m-md-1 {\n      margin: 0.25rem;\n    }\n    .m-md-2 {\n      margin: 0.5rem;\n    }\n    .m-md-3 {\n      margin: 1rem;\n    }\n    .m-md-4 {\n      margin: 1.5rem;\n    }\n    .m-md-5 {\n      margin: 3rem;\n    }\n    .m-md-auto {\n      margin: auto;\n    }\n    .mx-md-0 {\n      margin-inline: 0;\n    }\n    .mx-md-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-md-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-md-3 {\n      margin-inline: 1rem;\n    }\n    .mx-md-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-md-5 {\n      margin-inline: 3rem;\n    }\n    .mx-md-auto {\n      margin-inline: auto;\n    }\n    .my-md-0 {\n      margin-block: 0;\n    }\n    .my-md-1 {\n      margin-block: 0.25rem;\n    }\n    .my-md-2 {\n      margin-block: 0.5rem;\n    }\n    .my-md-3 {\n      margin-block: 1rem;\n    }\n    .my-md-4 {\n      margin-block: 1.5rem;\n    }\n    .my-md-5 {\n      margin-block: 3rem;\n    }\n    .my-md-auto {\n      margin-block: auto;\n    }\n    .mt-md-0 {\n      margin-block-start: 0;\n    }\n    .mt-md-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-md-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-md-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-md-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-md-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-md-auto {\n      margin-block-start: auto;\n    }\n    .me-md-0 {\n      margin-inline-end: 0;\n    }\n    .me-md-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-md-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-md-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-md-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-md-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-md-auto {\n      margin-inline-end: auto;\n    }\n    .mb-md-0 {\n      margin-block-end: 0;\n    }\n    .mb-md-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-md-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-md-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-md-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-md-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-md-auto {\n      margin-block-end: auto;\n    }\n    .ms-md-0 {\n      margin-inline-start: 0;\n    }\n    .ms-md-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-md-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-md-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-md-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-md-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-md--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-md--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-md-auto {\n      margin-inline-start: auto;\n    }\n    .p-md-0 {\n      padding: 0;\n    }\n    .p-md-1 {\n      padding: 0.25rem;\n    }\n    .p-md-2 {\n      padding: 0.5rem;\n    }\n    .p-md-3 {\n      padding: 1rem;\n    }\n    .p-md-4 {\n      padding: 1.5rem;\n    }\n    .p-md-5 {\n      padding: 3rem;\n    }\n    .px-md-0 {\n      padding-inline: 0;\n    }\n    .px-md-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-md-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-md-3 {\n      padding-inline: 1rem;\n    }\n    .px-md-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-md-5 {\n      padding-inline: 3rem;\n    }\n    .py-md-0 {\n      padding-block: 0;\n    }\n    .py-md-1 {\n      padding-block: 0.25rem;\n    }\n    .py-md-2 {\n      padding-block: 0.5rem;\n    }\n    .py-md-3 {\n      padding-block: 1rem;\n    }\n    .py-md-4 {\n      padding-block: 1.5rem;\n    }\n    .py-md-5 {\n      padding-block: 3rem;\n    }\n    .pt-md-0 {\n      padding-block-start: 0;\n    }\n    .pt-md-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-md-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-md-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-md-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-md-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-md-0 {\n      padding-inline-end: 0;\n    }\n    .pe-md-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-md-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-md-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-md-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-md-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-md-0 {\n      padding-block-end: 0;\n    }\n    .pb-md-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-md-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-md-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-md-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-md-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-md-0 {\n      padding-inline-start: 0;\n    }\n    .ps-md-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-md-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-md-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-md-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-md-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-md-0 {\n      gap: 0;\n    }\n    .gap-md-1 {\n      gap: 0.25rem;\n    }\n    .gap-md-2 {\n      gap: 0.5rem;\n    }\n    .gap-md-3 {\n      gap: 1rem;\n    }\n    .gap-md-4 {\n      gap: 1.5rem;\n    }\n    .gap-md-5 {\n      gap: 3rem;\n    }\n    .row-gap-md-0 {\n      row-gap: 0;\n    }\n    .row-gap-md-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-md-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-md-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-md-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-md-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-md-0 {\n      column-gap: 0;\n    }\n    .column-gap-md-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-md-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-md-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-md-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-md-5 {\n      column-gap: 3rem;\n    }\n    .text-md-start {\n      text-align: start;\n    }\n    .text-md-end {\n      text-align: end;\n    }\n    .text-md-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1024px) {\n    .float-lg-start {\n      float: inline-start;\n    }\n    .float-lg-end {\n      float: inline-end;\n    }\n    .float-lg-none {\n      float: none;\n    }\n    .object-fit-lg-contain {\n      object-fit: contain;\n    }\n    .object-fit-lg-cover {\n      object-fit: cover;\n    }\n    .object-fit-lg-fill {\n      object-fit: fill;\n    }\n    .object-fit-lg-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-lg-none {\n      object-fit: none;\n    }\n    .d-lg-inline {\n      display: inline;\n    }\n    .d-lg-inline-block {\n      display: inline-block;\n    }\n    .d-lg-block {\n      display: block;\n    }\n    .d-lg-grid {\n      display: grid;\n    }\n    .d-lg-inline-grid {\n      display: inline-grid;\n    }\n    .d-lg-table {\n      display: table;\n    }\n    .d-lg-table-row {\n      display: table-row;\n    }\n    .d-lg-table-cell {\n      display: table-cell;\n    }\n    .d-lg-flex {\n      display: flex;\n    }\n    .d-lg-inline-flex {\n      display: inline-flex;\n    }\n    .d-lg-contents {\n      display: contents;\n    }\n    .d-lg-flow-root {\n      display: flow-root;\n    }\n    .d-lg-none {\n      display: none;\n    }\n    .flex-lg-fill {\n      flex: 1 1 auto;\n    }\n    .flex-lg-row {\n      flex-direction: row;\n    }\n    .flex-lg-column {\n      flex-direction: column;\n    }\n    .flex-lg-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-lg-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-lg-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-lg-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-lg-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-lg-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-lg-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-lg-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-lg-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-lg-start {\n      justify-content: flex-start;\n    }\n    .justify-content-lg-end {\n      justify-content: flex-end;\n    }\n    .justify-content-lg-center {\n      justify-content: center;\n    }\n    .justify-content-lg-between {\n      justify-content: space-between;\n    }\n    .justify-content-lg-around {\n      justify-content: space-around;\n    }\n    .justify-content-lg-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-lg-start {\n      justify-items: start;\n    }\n    .justify-items-lg-end {\n      justify-items: end;\n    }\n    .justify-items-lg-center {\n      justify-items: center;\n    }\n    .justify-items-lg-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-lg-start {\n      justify-self: flex-start;\n    }\n    .justify-self-lg-end {\n      justify-self: flex-end;\n    }\n    .justify-self-lg-center {\n      justify-self: center;\n    }\n    .align-items-lg-start {\n      align-items: flex-start;\n    }\n    .align-items-lg-end {\n      align-items: flex-end;\n    }\n    .align-items-lg-center {\n      align-items: center;\n    }\n    .align-items-lg-baseline {\n      align-items: baseline;\n    }\n    .align-items-lg-stretch {\n      align-items: stretch;\n    }\n    .align-content-lg-start {\n      align-content: flex-start;\n    }\n    .align-content-lg-end {\n      align-content: flex-end;\n    }\n    .align-content-lg-center {\n      align-content: center;\n    }\n    .align-content-lg-between {\n      align-content: space-between;\n    }\n    .align-content-lg-around {\n      align-content: space-around;\n    }\n    .align-content-lg-stretch {\n      align-content: stretch;\n    }\n    .align-self-lg-auto {\n      align-self: auto;\n    }\n    .align-self-lg-start {\n      align-self: flex-start;\n    }\n    .align-self-lg-end {\n      align-self: flex-end;\n    }\n    .align-self-lg-center {\n      align-self: center;\n    }\n    .align-self-lg-baseline {\n      align-self: baseline;\n    }\n    .align-self-lg-stretch {\n      align-self: stretch;\n    }\n    .place-items-lg-start {\n      place-items: start;\n    }\n    .place-items-lg-end {\n      place-items: end;\n    }\n    .place-items-lg-center {\n      place-items: center;\n    }\n    .place-items-lg-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-lg-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .grid-cols-lg-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .grid-cols-lg-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .grid-cols-lg-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .grid-cols-lg-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-lg-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-lg-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-lg-dense {\n      grid-auto-flow: dense;\n    }\n    .order-lg-first {\n      order: -1;\n    }\n    .order-lg-0 {\n      order: 0;\n    }\n    .order-lg-1 {\n      order: 1;\n    }\n    .order-lg-2 {\n      order: 2;\n    }\n    .order-lg-3 {\n      order: 3;\n    }\n    .order-lg-4 {\n      order: 4;\n    }\n    .order-lg-5 {\n      order: 5;\n    }\n    .order-lg-last {\n      order: 6;\n    }\n    .m-lg-0 {\n      margin: 0;\n    }\n    .m-lg-1 {\n      margin: 0.25rem;\n    }\n    .m-lg-2 {\n      margin: 0.5rem;\n    }\n    .m-lg-3 {\n      margin: 1rem;\n    }\n    .m-lg-4 {\n      margin: 1.5rem;\n    }\n    .m-lg-5 {\n      margin: 3rem;\n    }\n    .m-lg-auto {\n      margin: auto;\n    }\n    .mx-lg-0 {\n      margin-inline: 0;\n    }\n    .mx-lg-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-lg-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-lg-3 {\n      margin-inline: 1rem;\n    }\n    .mx-lg-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-lg-5 {\n      margin-inline: 3rem;\n    }\n    .mx-lg-auto {\n      margin-inline: auto;\n    }\n    .my-lg-0 {\n      margin-block: 0;\n    }\n    .my-lg-1 {\n      margin-block: 0.25rem;\n    }\n    .my-lg-2 {\n      margin-block: 0.5rem;\n    }\n    .my-lg-3 {\n      margin-block: 1rem;\n    }\n    .my-lg-4 {\n      margin-block: 1.5rem;\n    }\n    .my-lg-5 {\n      margin-block: 3rem;\n    }\n    .my-lg-auto {\n      margin-block: auto;\n    }\n    .mt-lg-0 {\n      margin-block-start: 0;\n    }\n    .mt-lg-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-lg-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-lg-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-lg-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-lg-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-lg-auto {\n      margin-block-start: auto;\n    }\n    .me-lg-0 {\n      margin-inline-end: 0;\n    }\n    .me-lg-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-lg-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-lg-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-lg-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-lg-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-lg-auto {\n      margin-inline-end: auto;\n    }\n    .mb-lg-0 {\n      margin-block-end: 0;\n    }\n    .mb-lg-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-lg-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-lg-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-lg-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-lg-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-lg-auto {\n      margin-block-end: auto;\n    }\n    .ms-lg-0 {\n      margin-inline-start: 0;\n    }\n    .ms-lg-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-lg-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-lg-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-lg-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-lg-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-lg--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-lg--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-lg-auto {\n      margin-inline-start: auto;\n    }\n    .p-lg-0 {\n      padding: 0;\n    }\n    .p-lg-1 {\n      padding: 0.25rem;\n    }\n    .p-lg-2 {\n      padding: 0.5rem;\n    }\n    .p-lg-3 {\n      padding: 1rem;\n    }\n    .p-lg-4 {\n      padding: 1.5rem;\n    }\n    .p-lg-5 {\n      padding: 3rem;\n    }\n    .px-lg-0 {\n      padding-inline: 0;\n    }\n    .px-lg-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-lg-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-lg-3 {\n      padding-inline: 1rem;\n    }\n    .px-lg-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-lg-5 {\n      padding-inline: 3rem;\n    }\n    .py-lg-0 {\n      padding-block: 0;\n    }\n    .py-lg-1 {\n      padding-block: 0.25rem;\n    }\n    .py-lg-2 {\n      padding-block: 0.5rem;\n    }\n    .py-lg-3 {\n      padding-block: 1rem;\n    }\n    .py-lg-4 {\n      padding-block: 1.5rem;\n    }\n    .py-lg-5 {\n      padding-block: 3rem;\n    }\n    .pt-lg-0 {\n      padding-block-start: 0;\n    }\n    .pt-lg-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-lg-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-lg-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-lg-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-lg-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-lg-0 {\n      padding-inline-end: 0;\n    }\n    .pe-lg-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-lg-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-lg-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-lg-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-lg-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-lg-0 {\n      padding-block-end: 0;\n    }\n    .pb-lg-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-lg-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-lg-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-lg-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-lg-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-lg-0 {\n      padding-inline-start: 0;\n    }\n    .ps-lg-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-lg-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-lg-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-lg-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-lg-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-lg-0 {\n      gap: 0;\n    }\n    .gap-lg-1 {\n      gap: 0.25rem;\n    }\n    .gap-lg-2 {\n      gap: 0.5rem;\n    }\n    .gap-lg-3 {\n      gap: 1rem;\n    }\n    .gap-lg-4 {\n      gap: 1.5rem;\n    }\n    .gap-lg-5 {\n      gap: 3rem;\n    }\n    .row-gap-lg-0 {\n      row-gap: 0;\n    }\n    .row-gap-lg-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-lg-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-lg-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-lg-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-lg-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-lg-0 {\n      column-gap: 0;\n    }\n    .column-gap-lg-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-lg-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-lg-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-lg-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-lg-5 {\n      column-gap: 3rem;\n    }\n    .text-lg-start {\n      text-align: start;\n    }\n    .text-lg-end {\n      text-align: end;\n    }\n    .text-lg-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1280px) {\n    .float-xl-start {\n      float: inline-start;\n    }\n    .float-xl-end {\n      float: inline-end;\n    }\n    .float-xl-none {\n      float: none;\n    }\n    .object-fit-xl-contain {\n      object-fit: contain;\n    }\n    .object-fit-xl-cover {\n      object-fit: cover;\n    }\n    .object-fit-xl-fill {\n      object-fit: fill;\n    }\n    .object-fit-xl-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-xl-none {\n      object-fit: none;\n    }\n    .d-xl-inline {\n      display: inline;\n    }\n    .d-xl-inline-block {\n      display: inline-block;\n    }\n    .d-xl-block {\n      display: block;\n    }\n    .d-xl-grid {\n      display: grid;\n    }\n    .d-xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-xl-table {\n      display: table;\n    }\n    .d-xl-table-row {\n      display: table-row;\n    }\n    .d-xl-table-cell {\n      display: table-cell;\n    }\n    .d-xl-flex {\n      display: flex;\n    }\n    .d-xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-xl-contents {\n      display: contents;\n    }\n    .d-xl-flow-root {\n      display: flow-root;\n    }\n    .d-xl-none {\n      display: none;\n    }\n    .flex-xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-xl-row {\n      flex-direction: row;\n    }\n    .flex-xl-column {\n      flex-direction: column;\n    }\n    .flex-xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-xl-center {\n      justify-content: center;\n    }\n    .justify-content-xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-xl-start {\n      justify-items: start;\n    }\n    .justify-items-xl-end {\n      justify-items: end;\n    }\n    .justify-items-xl-center {\n      justify-items: center;\n    }\n    .justify-items-xl-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-xl-start {\n      justify-self: flex-start;\n    }\n    .justify-self-xl-end {\n      justify-self: flex-end;\n    }\n    .justify-self-xl-center {\n      justify-self: center;\n    }\n    .align-items-xl-start {\n      align-items: flex-start;\n    }\n    .align-items-xl-end {\n      align-items: flex-end;\n    }\n    .align-items-xl-center {\n      align-items: center;\n    }\n    .align-items-xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-xl-start {\n      align-content: flex-start;\n    }\n    .align-content-xl-end {\n      align-content: flex-end;\n    }\n    .align-content-xl-center {\n      align-content: center;\n    }\n    .align-content-xl-between {\n      align-content: space-between;\n    }\n    .align-content-xl-around {\n      align-content: space-around;\n    }\n    .align-content-xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-xl-auto {\n      align-self: auto;\n    }\n    .align-self-xl-start {\n      align-self: flex-start;\n    }\n    .align-self-xl-end {\n      align-self: flex-end;\n    }\n    .align-self-xl-center {\n      align-self: center;\n    }\n    .align-self-xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-xl-start {\n      place-items: start;\n    }\n    .place-items-xl-end {\n      place-items: end;\n    }\n    .place-items-xl-center {\n      place-items: center;\n    }\n    .place-items-xl-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-xl-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .grid-cols-xl-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .grid-cols-xl-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .grid-cols-xl-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .grid-cols-xl-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-xl-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-xl-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-xl-dense {\n      grid-auto-flow: dense;\n    }\n    .order-xl-first {\n      order: -1;\n    }\n    .order-xl-0 {\n      order: 0;\n    }\n    .order-xl-1 {\n      order: 1;\n    }\n    .order-xl-2 {\n      order: 2;\n    }\n    .order-xl-3 {\n      order: 3;\n    }\n    .order-xl-4 {\n      order: 4;\n    }\n    .order-xl-5 {\n      order: 5;\n    }\n    .order-xl-last {\n      order: 6;\n    }\n    .m-xl-0 {\n      margin: 0;\n    }\n    .m-xl-1 {\n      margin: 0.25rem;\n    }\n    .m-xl-2 {\n      margin: 0.5rem;\n    }\n    .m-xl-3 {\n      margin: 1rem;\n    }\n    .m-xl-4 {\n      margin: 1.5rem;\n    }\n    .m-xl-5 {\n      margin: 3rem;\n    }\n    .m-xl-auto {\n      margin: auto;\n    }\n    .mx-xl-0 {\n      margin-inline: 0;\n    }\n    .mx-xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-xl-auto {\n      margin-inline: auto;\n    }\n    .my-xl-0 {\n      margin-block: 0;\n    }\n    .my-xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-xl-3 {\n      margin-block: 1rem;\n    }\n    .my-xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-xl-5 {\n      margin-block: 3rem;\n    }\n    .my-xl-auto {\n      margin-block: auto;\n    }\n    .mt-xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-xl-auto {\n      margin-block-start: auto;\n    }\n    .me-xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-xl-0 {\n      padding: 0;\n    }\n    .p-xl-1 {\n      padding: 0.25rem;\n    }\n    .p-xl-2 {\n      padding: 0.5rem;\n    }\n    .p-xl-3 {\n      padding: 1rem;\n    }\n    .p-xl-4 {\n      padding: 1.5rem;\n    }\n    .p-xl-5 {\n      padding: 3rem;\n    }\n    .px-xl-0 {\n      padding-inline: 0;\n    }\n    .px-xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-xl-0 {\n      padding-block: 0;\n    }\n    .py-xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-xl-3 {\n      padding-block: 1rem;\n    }\n    .py-xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-xl-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-xl-0 {\n      gap: 0;\n    }\n    .gap-xl-1 {\n      gap: 0.25rem;\n    }\n    .gap-xl-2 {\n      gap: 0.5rem;\n    }\n    .gap-xl-3 {\n      gap: 1rem;\n    }\n    .gap-xl-4 {\n      gap: 1.5rem;\n    }\n    .gap-xl-5 {\n      gap: 3rem;\n    }\n    .row-gap-xl-0 {\n      row-gap: 0;\n    }\n    .row-gap-xl-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-xl-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-xl-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-xl-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-xl-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-xl-0 {\n      column-gap: 0;\n    }\n    .column-gap-xl-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-xl-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-xl-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-xl-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-xl-5 {\n      column-gap: 3rem;\n    }\n    .text-xl-start {\n      text-align: start;\n    }\n    .text-xl-end {\n      text-align: end;\n    }\n    .text-xl-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1536px) {\n    .float-2xl-start {\n      float: inline-start;\n    }\n    .float-2xl-end {\n      float: inline-end;\n    }\n    .float-2xl-none {\n      float: none;\n    }\n    .object-fit-2xl-contain {\n      object-fit: contain;\n    }\n    .object-fit-2xl-cover {\n      object-fit: cover;\n    }\n    .object-fit-2xl-fill {\n      object-fit: fill;\n    }\n    .object-fit-2xl-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-2xl-none {\n      object-fit: none;\n    }\n    .d-2xl-inline {\n      display: inline;\n    }\n    .d-2xl-inline-block {\n      display: inline-block;\n    }\n    .d-2xl-block {\n      display: block;\n    }\n    .d-2xl-grid {\n      display: grid;\n    }\n    .d-2xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-2xl-table {\n      display: table;\n    }\n    .d-2xl-table-row {\n      display: table-row;\n    }\n    .d-2xl-table-cell {\n      display: table-cell;\n    }\n    .d-2xl-flex {\n      display: flex;\n    }\n    .d-2xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-2xl-contents {\n      display: contents;\n    }\n    .d-2xl-flow-root {\n      display: flow-root;\n    }\n    .d-2xl-none {\n      display: none;\n    }\n    .flex-2xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-2xl-row {\n      flex-direction: row;\n    }\n    .flex-2xl-column {\n      flex-direction: column;\n    }\n    .flex-2xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-2xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-2xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-2xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-2xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-2xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-2xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-2xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-2xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-2xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-2xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-2xl-center {\n      justify-content: center;\n    }\n    .justify-content-2xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-2xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-2xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-2xl-start {\n      justify-items: start;\n    }\n    .justify-items-2xl-end {\n      justify-items: end;\n    }\n    .justify-items-2xl-center {\n      justify-items: center;\n    }\n    .justify-items-2xl-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-2xl-start {\n      justify-self: flex-start;\n    }\n    .justify-self-2xl-end {\n      justify-self: flex-end;\n    }\n    .justify-self-2xl-center {\n      justify-self: center;\n    }\n    .align-items-2xl-start {\n      align-items: flex-start;\n    }\n    .align-items-2xl-end {\n      align-items: flex-end;\n    }\n    .align-items-2xl-center {\n      align-items: center;\n    }\n    .align-items-2xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-2xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-2xl-start {\n      align-content: flex-start;\n    }\n    .align-content-2xl-end {\n      align-content: flex-end;\n    }\n    .align-content-2xl-center {\n      align-content: center;\n    }\n    .align-content-2xl-between {\n      align-content: space-between;\n    }\n    .align-content-2xl-around {\n      align-content: space-around;\n    }\n    .align-content-2xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-2xl-auto {\n      align-self: auto;\n    }\n    .align-self-2xl-start {\n      align-self: flex-start;\n    }\n    .align-self-2xl-end {\n      align-self: flex-end;\n    }\n    .align-self-2xl-center {\n      align-self: center;\n    }\n    .align-self-2xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-2xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-2xl-start {\n      place-items: start;\n    }\n    .place-items-2xl-end {\n      place-items: end;\n    }\n    .place-items-2xl-center {\n      place-items: center;\n    }\n    .place-items-2xl-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-2xl-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .grid-cols-2xl-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .grid-cols-2xl-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .grid-cols-2xl-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .grid-cols-2xl-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-2xl-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-2xl-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-2xl-dense {\n      grid-auto-flow: dense;\n    }\n    .order-2xl-first {\n      order: -1;\n    }\n    .order-2xl-0 {\n      order: 0;\n    }\n    .order-2xl-1 {\n      order: 1;\n    }\n    .order-2xl-2 {\n      order: 2;\n    }\n    .order-2xl-3 {\n      order: 3;\n    }\n    .order-2xl-4 {\n      order: 4;\n    }\n    .order-2xl-5 {\n      order: 5;\n    }\n    .order-2xl-last {\n      order: 6;\n    }\n    .m-2xl-0 {\n      margin: 0;\n    }\n    .m-2xl-1 {\n      margin: 0.25rem;\n    }\n    .m-2xl-2 {\n      margin: 0.5rem;\n    }\n    .m-2xl-3 {\n      margin: 1rem;\n    }\n    .m-2xl-4 {\n      margin: 1.5rem;\n    }\n    .m-2xl-5 {\n      margin: 3rem;\n    }\n    .m-2xl-auto {\n      margin: auto;\n    }\n    .mx-2xl-0 {\n      margin-inline: 0;\n    }\n    .mx-2xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-2xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-2xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-2xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-2xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-2xl-auto {\n      margin-inline: auto;\n    }\n    .my-2xl-0 {\n      margin-block: 0;\n    }\n    .my-2xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-2xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-2xl-3 {\n      margin-block: 1rem;\n    }\n    .my-2xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-2xl-5 {\n      margin-block: 3rem;\n    }\n    .my-2xl-auto {\n      margin-block: auto;\n    }\n    .mt-2xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-2xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-2xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-2xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-2xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-2xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-2xl-auto {\n      margin-block-start: auto;\n    }\n    .me-2xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-2xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-2xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-2xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-2xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-2xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-2xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-2xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-2xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-2xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-2xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-2xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-2xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-2xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-2xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-2xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-2xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-2xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-2xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-2xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-2xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-2xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-2xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-2xl-0 {\n      padding: 0;\n    }\n    .p-2xl-1 {\n      padding: 0.25rem;\n    }\n    .p-2xl-2 {\n      padding: 0.5rem;\n    }\n    .p-2xl-3 {\n      padding: 1rem;\n    }\n    .p-2xl-4 {\n      padding: 1.5rem;\n    }\n    .p-2xl-5 {\n      padding: 3rem;\n    }\n    .px-2xl-0 {\n      padding-inline: 0;\n    }\n    .px-2xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-2xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-2xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-2xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-2xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-2xl-0 {\n      padding-block: 0;\n    }\n    .py-2xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-2xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-2xl-3 {\n      padding-block: 1rem;\n    }\n    .py-2xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-2xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-2xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-2xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-2xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-2xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-2xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-2xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-2xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-2xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-2xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-2xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-2xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-2xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-2xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-2xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-2xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-2xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-2xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-2xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-2xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-2xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-2xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-2xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-2xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-2xl-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-2xl-0 {\n      gap: 0;\n    }\n    .gap-2xl-1 {\n      gap: 0.25rem;\n    }\n    .gap-2xl-2 {\n      gap: 0.5rem;\n    }\n    .gap-2xl-3 {\n      gap: 1rem;\n    }\n    .gap-2xl-4 {\n      gap: 1.5rem;\n    }\n    .gap-2xl-5 {\n      gap: 3rem;\n    }\n    .row-gap-2xl-0 {\n      row-gap: 0;\n    }\n    .row-gap-2xl-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-2xl-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-2xl-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-2xl-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-2xl-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-2xl-0 {\n      column-gap: 0;\n    }\n    .column-gap-2xl-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-2xl-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-2xl-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-2xl-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-2xl-5 {\n      column-gap: 3rem;\n    }\n    .text-2xl-start {\n      text-align: start;\n    }\n    .text-2xl-end {\n      text-align: end;\n    }\n    .text-2xl-center {\n      text-align: center;\n    }\n  }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */\n","$file: \"\" !default;\n\n/*!\n  * Bootstrap #{$file} v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n","// stylelint-disable hue-degree-notation, @stylistic/number-leading-zero\n\n@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// Easily convert colors to oklch() with https://oklch.com/\n\n$white: #fff !default;\n$black: #000 !default;\n\n// scss-docs-start colors-list\n$blue: oklch(60% 0.24 240) !default;\n$indigo: oklch(56% 0.26 288) !default;\n$violet: oklch(56% 0.24 300) !default;\n$purple: oklch(56% 0.24 320) !default;\n$pink: oklch(60% 0.22 4) !default;\n$red: oklch(60% 0.22 20) !default;\n$orange: oklch(70% 0.22 52) !default;\n$amber: oklch(79% 0.2 78) !default;\n$yellow: oklch(88% 0.24 88) !default;\n$lime: oklch(65% 0.24 135) !default;\n$green: oklch(64% 0.22 160) !default;\n$teal: oklch(68% 0.22 190) !default;\n$cyan: oklch(69% 0.22 220) !default;\n$brown: oklch(60% 0.12 54) !default;\n$gray: oklch(60% 0.02 245) !default;\n$pewter: oklch(65% 0.01 290) !default;\n// scss-docs-end colors-list\n\n// scss-docs-start colors-map\n$colors: () !default;\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$colors: defaults(\n  (\n    \"blue\": $blue,\n    \"indigo\": $indigo,\n    \"violet\": $violet,\n    \"purple\": $purple,\n    \"pink\": $pink,\n    \"red\": $red,\n    \"orange\": $orange,\n    \"amber\": $amber,\n    \"yellow\": $yellow,\n    \"lime\": $lime,\n    \"green\": $green,\n    \"teal\": $teal,\n    \"cyan\": $cyan,\n    \"brown\": $brown,\n    \"gray\": $gray,\n    \"pewter\": $pewter,\n  ),\n  $colors\n);\n// scss-docs-end colors-map\n\n// scss-docs-start color-mix-options\n$color-mix-space: lab !default;\n$tint-color: var(--white) !default;\n$shade-color: var(--black) !default;\n\n$color-tints: (\n  \"025\": 94%,\n  \"050\": 90%,\n  \"100\": 80%,\n  \"200\": 60%,\n  \"300\": 40%,\n  \"400\": 20%,\n) !default;\n\n$color-shades: (\n  \"600\": 16%,\n  \"700\": 32%,\n  \"800\": 48%,\n  \"900\": 64%,\n  \"950\": 76%,\n  \"975\": 88%,\n) !default;\n// scss-docs-end color-mix-options\n\n// scss-docs-start color-tokens\n$color-tokens: () !default;\n\n$-color-defaults: () !default;\n@each $color, $value in $colors {\n  @each $stop, $percent in $color-tints {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$tint-color} #{$percent}, #{$value}));\n  }\n  $-color-defaults: map.set($-color-defaults, --#{$color}-500, #{$value});\n  @each $stop, $percent in $color-shades {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$shade-color} #{$percent}, #{$value}));\n  }\n}\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$color-tokens: defaults($-color-defaults, $color-tokens);\n// scss-docs-end color-tokens\n\n:root {\n  @include tokens($color-tokens);\n}\n","// Mixin to output tokens as CSS custom properties\n\n// scss-docs-start mixin-tokens\n@mixin tokens($map) {\n  @each $prop, $value in $map {\n    #{$prop}: #{$value};\n  }\n}\n// scss-docs-end mixin-tokens\n","@use \"sass:map\";\n@use \"colors\" as *;\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"theme\" as *;\n@use \"mixins/tokens\" as *;\n@use \"forms/form-variables\" as *;\n\n// mdo-do: do we need theme?\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n\n$root-tokens: () !default;\n\n// scss-docs-start root-tokens\n// stylelint-disable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: defaults(\n  (\n    --black: #{$black},\n    --white: #{$white},\n\n    --gradient: #{$gradient},\n\n    // scss-docs-start root-font-weight-variables\n    --font-weight-lighter: lighter,\n    --font-weight-light: 300,\n    --font-weight-normal: 400,\n    --font-weight-medium: 500,\n    --font-weight-semibold: 600,\n    --font-weight-bold: 700,\n    --font-weight-bolder: bolder,\n    // scss-docs-end root-font-weight-variables\n\n    // scss-docs-start root-body-variables\n    --body-font-family: system-ui,\n    --body-font-size: var(--font-size-base),\n    --body-font-weight: #{$font-weight-base},\n    --body-line-height: #{$line-height-base},\n\n    --heading-color: #{$headings-color},\n\n    --hr-border-color: var(--border-color),\n\n    --link-color: light-dark(var(--primary-base), var(--primary-text)),\n    --link-decoration: #{$link-decoration},\n    --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000),\n\n    --font-mono: \"SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace\",\n    --code-font-size: 95%,\n    --code-color: var(--fg-2),\n\n    // scss-docs-start root-border-var\n    --border-width: #{$border-width},\n    --border-style: #{$border-style},\n    --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700)),\n    --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    // scss-docs-end root-border-var\n\n    // scss-docs-start root-border-radius-var\n    --border-radius: .5rem,\n    --border-radius-xs: .375rem,\n    --border-radius-sm: .5rem,\n    --border-radius-lg: .75rem,\n    --border-radius-xl: 1rem,\n    --border-radius-2xl: 2rem,\n    --border-radius-pill: 50rem,\n    // scss-docs-end root-border-radius-var\n\n    // scss-docs-start root-box-shadow-variables\n    --box-shadow: 0 .5rem 1rem rgb(0 0 0 / 15%),\n    --box-shadow-sm: 0 .125rem .25rem rgb(0 0 0 / 7.5%),\n    --box-shadow-lg: 0 1rem 3rem rgb(0 0 0 / 17.5%),\n    --box-shadow-inset: inset 0 1px 2px rgb(0 0 0 / 7.5%),\n    // scss-docs-end root-box-shadow-variables\n\n    --spacer: 1rem,\n\n    // scss-docs-start root-focus-variables\n    --focus-ring-width: 3px,\n    --focus-ring-offset: 1px,\n    --focus-ring-color: var(--primary-focus-ring),\n    --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color),\n    // scss-docs-end root-focus-variables\n\n    // scss-docs-start root-form-variables\n    --control-checked-bg: var(--primary-base),\n    --control-checked-border-color: var(--control-checked-bg),\n    --control-active-bg: var(--primary-base),\n    --control-active-border-color: var(--control-active-bg),\n    --control-disabled-bg: var(--bg-3),\n    --control-disabled-opacity: .65,\n\n    --btn-input-fg: var(--fg-body),\n    --btn-input-bg: var(--bg-body),\n\n    --btn-input-min-height: 2.375rem,\n    --btn-input-padding-y: .375rem,\n    --btn-input-padding-x: .75rem,\n    --btn-input-font-size: var(--font-size-base),\n    --btn-input-line-height: var(--line-height-base),\n    --btn-input-border-radius: var(--border-radius),\n\n    --btn-input-xs-min-height: 1.5rem,\n    --btn-input-xs-padding-y: .125rem,\n    --btn-input-xs-padding-x: .5rem,\n    --btn-input-xs-font-size: var(--font-size-xs),\n    --btn-input-xs-line-height: 1.125,\n    --btn-input-xs-border-radius: var(--border-radius-xs),\n\n    --btn-input-sm-min-height: 2rem,\n    --btn-input-sm-padding-y: .25rem,\n    --btn-input-sm-padding-x: .625rem,\n    --btn-input-sm-font-size: var(--font-size-sm),\n    --btn-input-sm-line-height: var(--line-height-sm),\n    --btn-input-sm-border-radius: var(--border-radius-sm),\n\n    --btn-input-lg-min-height: 2.75rem,\n    --btn-input-lg-padding-y: .5rem,\n    --btn-input-lg-padding-x: 1rem,\n    --btn-input-lg-font-size: var(--font-size-md),\n    --btn-input-lg-line-height: var(--line-height-md),\n    --btn-input-lg-border-radius: var(--border-radius-lg),\n    // scss-docs-end root-form-variables\n\n    // scss-docs-start root-form-validation-variables\n    --form-valid-color: #{$form-valid-color},\n    --form-valid-border-color: #{$form-valid-border-color},\n    --form-invalid-color: #{$form-invalid-color},\n    --form-invalid-border-color: #{$form-invalid-border-color},\n    // scss-docs-end root-form-validation-variables\n  ),\n  $root-tokens\n);\n// stylelint-enable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// scss-docs-end root-tokens\n\n// scss-docs-start root-font-size-loop\n// Generate font-size and line-height tokens\n@each $name, $props in $font-sizes {\n  $root-tokens: map.set($root-tokens, --font-size-#{$name}, map.get($props, \"font-size\"));\n  $root-tokens: map.set($root-tokens, --line-height-#{$name}, map.get($props, \"line-height\"));\n}\n// scss-docs-end root-font-size-loop\n\n// scss-docs-start root-theme-tokens\n// Generate semantic theme colors\n@each $color-name, $color-map in $theme-colors {\n  @each $key, $value in $color-map {\n    $root-tokens: map.set($root-tokens, --#{$color-name}-#{$key}, $value);\n  }\n}\n\n// Generate background tokens\n@each $key, $value in $theme-bgs {\n  $root-tokens: map.set($root-tokens, --bg-#{$key}, $value);\n}\n\n// Generate foreground tokens\n@each $key, $value in $theme-fgs {\n  $root-tokens: map.set($root-tokens, --fg-#{$key}, $value);\n}\n\n// Generate border tokens\n@each $key, $value in $theme-borders {\n  $root-tokens: map.set($root-tokens, --border-#{$key}, $value);\n}\n// scss-docs-end root-theme-tokens\n\n// Generate breakpoint tokens\n@each $name, $value in $breakpoints {\n  $root-tokens: map.set($root-tokens, --breakpoint-#{$name}, $value);\n}\n\n:root {\n  @include tokens($root-tokens);\n\n  color-scheme: light dark;\n}\n\n[data-bs-theme=\"dark\"] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=\"light\"] {\n  color-scheme: light;\n}\n","@use \"../colors\" as *;\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n$reboot-kbd-tokens: () !default;\n$reboot-mark-tokens: () !default;\n\n// scss-docs-start reboot-kbd-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-kbd-tokens: defaults(\n  (\n    --kbd-padding-y: .125rem,\n    --kbd-padding-x: .25rem,\n    --kbd-font-size: var(--font-size-xs),\n    --kbd-color: var(--bg-body),\n    --kbd-bg: var(--fg-2),\n    --kbd-border-radius: var(--border-radius-sm),\n  ),\n  $reboot-kbd-tokens\n);\n// scss-docs-end reboot-kbd-tokens\n\n// scss-docs-start reboot-mark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-mark-tokens: defaults(\n  (\n    --mark-padding: .1875em,\n    --mark-color: var(--fg-body),\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900)),\n  ),\n  $reboot-mark-tokens\n);\n// scss-docs-end reboot-mark-tokens\n\n@layer reboot {\n  // Reboot\n  //\n  // Normalization of HTML elements, manually forked from Normalize.css to remove\n  // styles targeting irrelevant browsers while applying new styles.\n  //\n  // Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n  // Document\n  //\n  // Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n\n  // Root\n  //\n  // Ability to the value of the root font sizes, affecting the value of `rem`.\n  // null by default, thus nothing is generated.\n\n  :root {\n    // Assume browser default font-size of 16px, or a user's preference\n    accent-color: var(--primary-base);\n\n    @if $enable-smooth-scroll {\n      @media (prefers-reduced-motion: no-preference) {\n        scroll-behavior: smooth;\n      }\n    }\n  }\n\n  // Body\n  //\n  // 1. Remove the margin in all browsers.\n  // 2. As a best practice, apply a default `background-color`.\n  // 3. Prevent adjustments of font size after orientation changes in iOS.\n  // 4. Change the default tap highlight to be completely transparent in iOS.\n\n  // scss-docs-start reboot-body-rules\n  body {\n    margin: 0; // 1\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body); // 2\n    -webkit-text-size-adjust: 100%; // 3\n    -webkit-tap-highlight-color: rgba($black, 0); // 4\n  }\n  // scss-docs-end reboot-body-rules\n\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n\n  // Typography\n  //\n  // 1. Remove top margins from headings\n  //    By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n  //    margin for easier control within type scales as it avoids margin collapsing.\n\n  %heading {\n    margin-top: 0; // 1\n    margin-bottom: $headings-margin-bottom;\n    font-family: $headings-font-family;\n    font-style: $headings-font-style;\n    font-weight: $headings-font-weight;\n    line-height: $headings-line-height;\n    color: var(--heading-color);\n  }\n\n  h1,\n  .h1 {\n    @extend %heading;\n    font-size: var(--font-size-3xl);\n  }\n\n  h2,\n  .h2 {\n    @extend %heading;\n    font-size: var(--font-size-2xl);\n  }\n\n  h3,\n  .h3 {\n    @extend %heading;\n    font-size: var(--font-size-xl);\n  }\n\n  h4,\n  .h4 {\n    @extend %heading;\n    font-size: var(--font-size-lg);\n  }\n\n  h5,\n  .h5 {\n    @extend %heading;\n    font-size: var(--font-size-md);\n  }\n\n  h6,\n  .h6 {\n    @extend %heading;\n    font-size: var(--font-size-sm);\n  }\n\n  // Reset margins on paragraphs\n  //\n  // Similarly, the top margin on `<p>`s get reset. However, we also reset the\n  // bottom margin to use `rem` units instead of `em`.\n\n  p {\n    margin-top: 0;\n    margin-bottom: $paragraph-margin-bottom;\n  }\n\n  // Abbreviations\n  //\n  // 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n  // 2. Add explicit cursor to indicate changed behavior.\n  // 3. Prevent the text-decoration to be skipped.\n\n  abbr[title] {\n    text-decoration: underline dotted; // 1\n    cursor: help; // 2\n    text-decoration-skip-ink: none; // 3\n  }\n\n  // Address\n\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n\n  // Lists\n\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n\n  dt {\n    font-weight: $dt-font-weight;\n  }\n\n  // 1. Undo browser default\n\n  dd {\n    margin-inline-start: 0; // 1\n    margin-bottom: .5rem;\n  }\n\n  // Blockquote\n\n  blockquote {\n    margin: 0 0 1rem;\n    > * {\n      margin-block: 0;\n    }\n  }\n\n  // Strong\n  //\n  // Add the correct font weight in Chrome, Edge, and Safari\n\n  b,\n  strong {\n    font-weight: $font-weight-bolder;\n  }\n\n  // Small\n  //\n  // Add the correct font size in all browsers\n\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n\n  // Mark\n\n  mark,\n  .mark {\n    @include tokens($reboot-mark-tokens);\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n\n  // Sub and Sup\n  //\n  // Prevent `sub` and `sup` elements from affecting the line height in\n  // all browsers.\n\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, .75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n\n  sub { bottom: -.25em; }\n  sup { top: -.5em; }\n\n  // Links\n\n  a {\n    color: var(--theme-text, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: $link-underline-offset;\n\n    &:hover {\n      // --link-color: var(--link-hover-color);\n      // --link-decoration: var(--link-hover-decoration, var(--link-decoration));\n      color: var(--theme-text-emphasis, var(--link-hover-color));\n      text-decoration: var(--link-hover-decoration, var(--link-decoration));\n    }\n  }\n\n  // And undo these styles for placeholder links/named anchors (without href).\n  // It would be more straightforward to just use a[href] in previous block, but that\n  // causes specificity issues in many other styles that are too complex to fix.\n  // See https://github.com/twbs/bootstrap/issues/19402\n\n  a:not([href]):not([class]) {\n    &,\n    &:hover {\n      color: inherit;\n      text-decoration: none;\n    }\n  }\n\n  // Code\n\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n  }\n\n  // 1. Remove browser default top margin\n  // 2. Reset browser default of `1em` to use `rem`s\n  // 3. Don't allow content to break outside\n\n  pre {\n    display: block;\n    margin-top: 0; // 1\n    margin-bottom: 1rem; // 2\n    overflow: auto; // 3\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n\n    // Account for some code outputs that place code tags in pre tags\n    code {\n      font-size: inherit;\n      color: inherit;\n      word-break: normal;\n    }\n  }\n\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n\n    // Streamline the style when inside anchors to avoid broken underline and more\n    a > & {\n      color: inherit;\n    }\n  }\n\n  kbd {\n    @include tokens($reboot-kbd-tokens);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    @include border-radius(var(--kbd-border-radius));\n\n    kbd {\n      padding: 0;\n      font-size: 1em;\n      font-weight: inherit; // mdo-do: check if this is needed\n    }\n  }\n\n  // Figures\n  //\n  // Apply a consistent margin strategy (matches our type styles).\n\n  figure {\n    margin: 0 0 1rem;\n  }\n\n  // Images and content\n\n  img,\n  svg {\n    vertical-align: middle;\n  }\n\n  // Tables\n  //\n  // Prevent double borders\n\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n\n  caption {\n    // padding-top: $table-cell-padding-y;\n    // padding-bottom: $table-cell-padding-y;\n    // color: $table-caption-color;\n    padding-block: .5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n\n  // 1. Removes font-weight bold by inheriting\n  // 2. Matches default `<td>` alignment by inheriting `text-align`.\n  // 3. Fix alignment for Safari\n\n  th {\n    // font-weight: $table-th-font-weight; // 1 // mdo-do: it's null by default. maybe we remove?\n    text-align: inherit; // 2\n    text-align: -webkit-match-parent; // 3\n  }\n\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n\n  // Forms\n  //\n  // 1. Allow labels to use `margin` for spacing.\n\n  label {\n    display: inline-block; // 1\n  }\n\n  // Remove the default `border-radius` that macOS Chrome adds.\n  // See https://github.com/twbs/bootstrap/issues/24093\n\n  button {\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 0;\n  }\n\n  // Explicitly remove focus outline in Chromium when it shouldn't be\n  // visible (e.g. as result of mouse click or touch tap). It already\n  // should be doing this automatically, but seems to currently be\n  // confused and applies its very visible two-tone outline anyway.\n\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n\n  // 1. Remove the margin in Firefox and Safari\n\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0; // 1\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n\n  // Remove the inheritance of text transform in Firefox\n  button,\n  select {\n    text-transform: none;\n  }\n  // Set the cursor for non-`<button>` buttons\n  //\n  // Details at https://github.com/twbs/bootstrap/pull/30562\n  [role=\"button\"] {\n    cursor: pointer;\n  }\n\n  select {\n    // Remove the inheritance of word-wrap in Safari.\n    // See https://github.com/twbs/bootstrap/issues/24990\n    word-wrap: normal;\n\n    // Undo the opacity change from Chrome\n    &:disabled {\n      opacity: 1;\n    }\n  }\n\n  // Remove the dropdown arrow only from text type inputs built with datalists in Chrome.\n  // See https://stackoverflow.com/a/54997118\n\n  [list]:not([type=\"date\"]):not([type=\"datetime-local\"]):not([type=\"month\"]):not([type=\"week\"]):not([type=\"time\"])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n\n  // 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n  //    controls in Android 4.\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n  // 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\n  button,\n  [type=\"button\"], // 1\n  [type=\"reset\"],\n  [type=\"submit\"] {\n    -webkit-appearance: button; // 2\n\n    @if $enable-button-pointers {\n      &:not(:disabled) {\n        cursor: pointer; // 3\n      }\n    }\n  }\n\n  // Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\n\n  ::-moz-focus-inner {\n    padding: 0;\n    border-style: none;\n  }\n\n  // 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\n  textarea {\n    resize: vertical; // 1\n  }\n\n  // 1. Browsers set a default `min-width: min-content;` on fieldsets,\n  //    unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n  //    So we reset that to ensure fieldsets behave more like a standard block element.\n  //    See https://github.com/twbs/bootstrap/issues/12359\n  //    and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n  // 2. Reset the default outline behavior of fieldsets so they don't affect page layout.\n\n  fieldset {\n    min-width: 0; // 1\n    padding: 0; // 2\n    margin: 0; // 2\n    border: 0; // 2\n  }\n\n  // 1. By using `float: inline-start`, the legend will behave like a block element.\n  //    This way the border of a fieldset wraps around the legend if present.\n  // 2. Fix wrapping bug.\n  //    See https://github.com/twbs/bootstrap/issues/29712\n\n  legend {\n    float: inline-start; // 1\n    width: 100%;\n    padding: 0;\n    margin-bottom: $legend-margin-bottom;\n    font-size: $legend-font-size;\n    font-weight: $legend-font-weight;\n    line-height: inherit;\n\n    + * {\n      clear: inline-start; // 2\n    }\n  }\n\n  // Fix height of inputs with a type of datetime-local, date, month, week, or time\n  // See https://github.com/twbs/bootstrap/issues/18842\n\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-ampm-field,\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n\n  ::-webkit-inner-spin-button {\n    height: auto;\n  }\n\n  // 1. This overrides the extra rounded corners on search inputs in iOS so that our\n  //    `.form-control` class can properly style them. Note that this cannot simply\n  //    be added to `.form-control` as it's not specific enough. For details, see\n  //    https://github.com/twbs/bootstrap/issues/11586.\n  // 2. Correct the outline style in Safari.\n\n  [type=\"search\"] {\n    -webkit-appearance: textfield; // 1\n    outline-offset: -2px; // 2\n\n    // 3. Better affordance and consistent appearance for search cancel button\n    &::-webkit-search-cancel-button {\n      cursor: pointer;\n      filter: grayscale(1);\n    }\n  }\n\n  // A few input types should stay LTR regardless of document direction\n  // See https://rtlstyling.com/posts/rtl-styling#form-inputs\n\n  [type=\"tel\"],\n  [type=\"url\"],\n  [type=\"email\"],\n  [type=\"number\"] {\n    direction: ltr;\n  }\n\n  // Remove the inner padding in Chrome and Safari on macOS.\n\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n\n  // Remove padding around color pickers in webkit browsers\n\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n\n  // 1. Inherit font family and line height for file input buttons\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n\n  ::file-selector-button {\n    font: inherit; // 1\n    -webkit-appearance: button; // 2\n  }\n\n  // Correct element displays\n\n  output {\n    display: inline-block;\n  }\n\n  // Remove border from iframe\n\n  iframe {\n    border: 0;\n  }\n\n  // Summary\n  //\n  // 1. Add the correct display in all browsers\n\n  summary {\n    display: list-item; // 1\n    cursor: pointer;\n  }\n\n  // Progress\n  //\n  // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\n  progress {\n    vertical-align: baseline;\n  }\n\n  // Hidden attribute\n  //\n  // Always hide an element with the `hidden` HTML attribute.\n\n  [hidden] {\n    display: none !important;\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n\n// Configuration\n//\n// Variables and settings not related to theme, components, and more go here. It does include layout.\n\n// Merge overrides on top of defaults, stripping null entries.\n// Null values let users remove map keys via @use ... with().\n// Accepts a list as $defaults (converted to a map with `true` values).\n@function defaults($defaults, $overrides) {\n  @if meta.type-of($defaults) == \"list\" {\n    $map: ();\n    @each $key in $defaults {\n      $map: map.merge($map, ($key: true));\n    }\n    $defaults: $map;\n  }\n  $merged: map.merge($defaults, $overrides);\n  @each $key, $value in $merged {\n    @if $value == null {\n      $merged: map.remove($merged, $key);\n    }\n  }\n  @return $merged;\n}\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              true !default;\n$enable-gradients:            false !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        true !default;\n$enable-grid-classes:         true !default;\n$enable-container-classes:    true !default;\n$enable-cssgrid:              true !default;\n$enable-button-pointers:      true !default;\n$enable-validation-icons:     true !default;\n// $enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n\n$enable-dark-mode:            true !default;\n\n$color-mode-type:          \"media-query\" !default;\n$color-contrast-dark:      #000 !default;\n$color-contrast-light:     #fff !default;\n$min-contrast-ratio:         4.5 !default;\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n\n$negative-spacers: (\n  \"-1\": $spacer * -.25,\n  \"-2\": $spacer * -.5,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n$sizes: (\n  1: $spacer,\n  2: calc($spacer * 2),\n  3: calc($spacer * 3),\n  4: calc($spacer * 4),\n  5: calc($spacer * 5),\n  6: calc($spacer * 6),\n  7: calc($spacer * 7),\n  8: calc($spacer * 8),\n  9: calc($spacer * 9),\n  10: calc($spacer * 10),\n  11: calc($spacer * 11),\n  12: calc($spacer * 12),\n) !default;\n\n// Breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start breakpoints\n$breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 1024px,\n  xl: 1280px,\n  2xl: 1536px\n) !default;\n// scss-docs-end breakpoints\n\n// @include _assert-ascending($breakpoints, \"$breakpoints\");\n// @include _assert-starts-at-zero($breakpoints, \"$breakpoints\");\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-x: 1.5rem !default;\n$grid-gutter-y: 0 !default;\n$grid-row-columns: 6 !default;\n\n$gutters: $spacers !default;\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1200px,\n  2xl: 1440px\n) !default;\n// scss-docs-end container-max-widths\n\n$container-padding-x: $grid-gutter-x !default;\n\n$utilities: () !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent)) !default;\n// scss-docs-end variable-gradient\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Links\n//\n// Style anchor elements.\n\n$link-decoration:                         underline !default;\n$link-underline-offset:                   .2em !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap:               .375rem !default;\n$icon-link-underline-offset:  .25em !default;\n$icon-link-icon-size:         1em !default;\n$icon-link-icon-transition:   .2s ease-in-out transform !default;\n$icon-link-icon-transform:    translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n$border-style:                solid !default;\n$border-color:                color-mix(in oklch, var(--gray-100), var(--gray-200)) !default;\n// scss-docs-end border-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"auto\": auto,\n  \"1x1\": #{\"1 / 1\"},\n  \"4x3\": #{\"4 / 3\"},\n  \"16x9\": #{\"16 / 9\"},\n  \"21x9\": #{\"21 / 9\"}\n) !default;\n// scss-docs-end aspect-ratios\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-medium:          500 !default;\n$font-weight-semibold:        600 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$font-sizes: defaults(\n  (\n    \"xs\": (\n      \"font-size\": .75rem,\n      \"line-height\": 1.25\n    ),\n    \"sm\": (\n      \"font-size\": .875rem,\n      \"line-height\": 1.5\n    ),\n    \"md\": (\n      \"font-size\": 1rem,\n      \"line-height\": 1.5\n    ),\n    \"lg\": (\n      \"font-size\": clamp(1.25rem, 1rem + .625vw, 1.5rem),\n      \"line-height\": 1.5\n    ),\n    \"xl\": (\n      \"font-size\": clamp(1.5rem, 1.1rem + .75vw, 1.75rem),\n      \"line-height\": calc(2.5 / 1.75)\n    ),\n    \"2xl\": (\n      \"font-size\": clamp(1.75rem, 1.3rem + 1vw, 2rem),\n      \"line-height\": calc(3 / 2.25)\n    ),\n    \"3xl\": (\n      \"font-size\": clamp(2rem, 1.5rem + 1.875vw, 2.5rem),\n      \"line-height\": 1.2\n    ),\n    \"4xl\": (\n      \"font-size\": clamp(2.25rem, 1.75rem + 2.5vw, 3rem),\n      \"line-height\": 1.1\n    ),\n    \"5xl\": (\n      \"font-size\": clamp(3rem, 2rem + 5vw, 4rem),\n      \"line-height\": 1.1\n    ),\n    \"6xl\": (\n      \"font-size\": clamp(3.75rem, 2.5rem + 6.25vw, 5rem),\n      \"line-height\": 1\n    ),\n  ),\n  $font-sizes\n);\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start type-variables\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n// scss-docs-end type-variables\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-menu:                       1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-dialog:                     1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n$zindex-toast:                      1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n  n1: -1,\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n","@use \"sass:list\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n  $return: ();\n  @each $value in $radius {\n    @if meta.type-of($value) == number {\n      $return: list.append($return, math.max($value, 0));\n    } @else {\n      $return: list.append($return, $value);\n    }\n  }\n  @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: var(--border-radius), $fallback-border-radius: false) {\n  @if $enable-rounded {\n    border-radius: valid-radius($radius);\n  }\n  @else if $fallback-border-radius != false {\n    border-radius: $fallback-border-radius;\n  }\n}\n\n@mixin border-top-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n// scss-docs-end border-radius-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/lists\" as *;\n@use \"../mixins/tokens\" as *;\n\n$blockquote-tokens: () !default;\n\n// scss-docs-start blockquote-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$blockquote-tokens: defaults(\n  (\n    --blockquote-gap: calc(var(--spacer) / 2),\n    --blockquote-padding-x: var(--spacer),\n    --blockquote-margin-y: 1rem,\n    --blockquote-font-size: var(--font-size-md),\n    --blockquote-border-width: .25rem,\n    --blockquote-border-color: var(--border-color),\n    --blockquote-footer-font-size: var(--font-size-sm),\n    --blockquote-footer-color: var(--fg-3),\n  ),\n  $blockquote-tokens\n);\n// scss-docs-end blockquote-tokens\n\n@layer content {\n  //\n  // Lists\n  //\n\n  .list-unstyled {\n    @include list-unstyled();\n  }\n\n  // Inline turns list items into inline-block\n  .list-inline {\n    @include list-unstyled();\n  }\n  .list-inline-item {\n    display: inline-block;\n\n    &:not(:last-child) {\n      margin-inline-end: var(--list-inline-padding, var(--spacer) / 2);\n    }\n  }\n\n  //\n  // Misc\n  //\n\n  // Builds on `abbr`\n  .initialism {\n    font-size: var(--initialism-font-size, var(--font-size-xs));\n    text-transform: uppercase;\n  }\n\n  // Blockquotes\n  .blockquote {\n    @include tokens($blockquote-tokens);\n    display: flex;\n    flex-direction: column;\n    gap: var(--blockquote-gap);\n    padding-inline-start: var(--blockquote-padding-x);\n    margin-bottom: var(--blockquote-margin-y);\n    font-size: var(--blockquote-font-size);\n    border-inline-start: var(--blockquote-border-width) solid var(--blockquote-border-color);\n\n    > * {\n      margin-bottom: 0;\n    }\n  }\n\n  // stylelint-disable-next-line selector-no-qualifying-type\n  figure.blockquote {\n    blockquote {\n      margin-bottom: 0;\n    }\n  }\n\n  .blockquote-footer {\n    font-size: var(--blockquote-footer-font-size);\n    color: var(--blockquote-footer-color);\n\n    &::before {\n      content: \"\\2014\\00A0\"; // em dash, nbsp\n    }\n  }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n  padding-inline-start: 0;\n  list-style: none;\n}\n","@use \"sass:map\";\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../layout/breakpoints\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$table-tokens: () !default;\n\n// scss-docs-start table-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$table-tokens: defaults(\n  (\n    --table-cell-padding-y: .5rem,\n    --table-cell-padding-x: .5rem,\n    --table-cell-vertical-align: top,\n    --table-color: var(--fg-body),\n    --table-bg: var(--bg-body),\n    --table-accent-bg: transparent,\n    --table-border-width: var(--border-width),\n    --table-border-color: var(--border-color),\n    --table-group-separator-color: currentcolor,\n    --table-striped-color: var(--table-color),\n    --table-striped-bg-factor: .05,\n    --table-striped-bg: color-mix(in srgb, var(--table-color) var(--table-striped-bg-factor), transparent),\n    --table-active-color: var(--table-color),\n    --table-active-bg-factor: .1,\n    --table-active-bg: color-mix(in srgb, var(--table-color) var(--table-active-bg-factor), transparent),\n    --table-hover-color: var(--table-color),\n    --table-hover-bg-factor: .075,\n    --table-hover-bg: color-mix(in srgb, var(--table-color) var(--table-hover-bg-factor), transparent),\n  ),\n  $table-tokens\n);\n// scss-docs-end table-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n//\n// Basic Bootstrap table\n//\n\n@layer content {\n  .table {\n    @include tokens($table-tokens);\n\n    // Reset needed for nesting tables\n    --table-color-type: initial;\n    --table-bg-type: initial;\n    --table-color-state: initial;\n    --table-bg-state: initial;\n    // End of reset\n\n    width: 100%;\n    margin-bottom: $spacer;\n    vertical-align: var(--table-cell-vertical-align);\n    border-color: var(--theme-border, var(--table-border-color));\n\n    // Target th & td\n    // We need the child combinator to prevent styles leaking to nested tables which doesn't have a `.table` class.\n    // We use the universal selectors here to simplify the selector (else we would need 6 different selectors).\n    // Another advantage is that this generates less code and makes the selector less specific making it easier to override.\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      padding: var(--table-cell-padding-y) var(--table-cell-padding-x);\n      // Following the precept of cascades: https://codepen.io/miriamsuzanne/full/vYNgodb\n      color: var(--table-color-state, var(--table-color-type, var(--theme-text, var(--table-color))));\n      background-color: var(--theme-bg-subtle, var(--table-bg));\n      border-block-end-width: var(--table-border-width);\n      box-shadow: inset 0 0 0 9999px var(--table-bg-state, var(--table-bg-type, var(--theme-bg-subtle, var(--table-accent-bg))));\n    }\n\n    > tbody {\n      vertical-align: inherit;\n    }\n\n    > thead {\n      vertical-align: bottom;\n    }\n  }\n\n  .table-group-divider {\n    border-block-start: calc(var(--table-border-width) * 2) solid var(--table-group-separator-color);\n  }\n\n  //\n  // Change placement of captions with a class\n  //\n\n  .caption-top {\n    caption-side: top;\n  }\n\n  //\n  // Condensed table w/ half padding\n  //\n\n  .table-sm {\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      --table-cell-padding-y: .25rem;\n      --table-cell-padding-x: .25rem;\n    }\n  }\n\n  // Border versions\n  //\n  // Add or remove borders all around the table and between all the columns.\n  //\n  // When borders are added on all sides of the cells, the corners can render odd when\n  // these borders do not have the same color or if they are semi-transparent.\n  // Therefore we add top and border bottoms to the `tr`s and left and right borders\n  // to the `td`s or `th`s\n\n  .table-bordered {\n    > :not(caption) > * {\n      border-width: var(--table-border-width) 0;\n\n      // stylelint-disable-next-line selector-max-universal\n      > * {\n        border-width: 0 var(--table-border-width);\n      }\n    }\n  }\n\n  .table-borderless {\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      border-block-end-width: 0;\n    }\n\n    > :not(:first-child) {\n      border-block-start-width: 0;\n    }\n  }\n\n  // Zebra-striping\n  //\n  // Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n  // For rows\n  .table-striped {\n    > tbody > tr:nth-of-type(#{$table-striped-order}) > * {\n      --table-color-type: var(--theme-text, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-striped-bg-factor), transparent);\n    }\n  }\n\n  // For columns\n  .table-striped-columns {\n    > :not(caption) > tr > :nth-child(#{$table-striped-columns-order}) {\n      --table-color-type: var(--theme-text, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-striped-bg-factor), transparent);\n    }\n  }\n\n  // Active table\n  //\n  // The `.table-active` class can be added to highlight rows or cells\n\n  .table-active {\n    --table-color-state: var(--theme-text, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-active-bg-factor), transparent);\n  }\n\n  // Hover effect\n  //\n  // Placed here since it has to come after the potential zebra striping\n\n  .table-hover {\n    > tbody > tr:hover > * {\n      --table-color-state: var(--theme-text, var(--table-hover-color));\n      --table-bg-state: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-hover-bg-factor), transparent);\n    }\n  }\n\n  // Responsive tables\n  //\n  // Generate series of `.table-responsive-*` classes for configuring the screen\n  // size of where your table will overflow.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-down($breakpoint) {\n      .table-responsive#{$infix} {\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"../config\" as *;\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px)\n//\n// The map defined in the `$breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl 2xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $breakpoints, $breakpoint-names: map.keys($breakpoints)) {\n  $n: list.index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoint-names}`\";\n  }\n  // Use @if/@else because list.nth would error if evaluated when $n equals list length\n  @if $n < list.length($breakpoint-names) {\n    @return list.nth($breakpoint-names, $n + 1);\n  } @else {\n    @return null;\n  }\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $breakpoints) {\n  $min: map.get($breakpoints, $name);\n  @return if(sass($min != 0): $min; else: null);\n}\n\n// Maximum breakpoint width for range media queries.\n// Returns the breakpoint value to use as an upper bound in range queries.\n//\n//    >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n//    >> breakpoint-max(xxl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    null\n@function breakpoint-max($name, $breakpoints: $breakpoints) {\n  @if $name == null {\n    @return null;\n  }\n  $max: map.get($breakpoints, $name);\n  @return if(sass($max and $max > 0): $max; else: null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $breakpoints) {\n  @return if(sass(breakpoint-min($name, $breakpoints) == null): \"\"; else: \"-#{$name}\");\n}\n\n// Iterate all breakpoints and provide the current name and infix.\n//\n//    @include loop-breakpoints-up() using ($breakpoint, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-up($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n    @content($breakpoint, $infix);\n  }\n}\n\n// Iterate all breakpoints and provide the current name, next name, and next infix.\n//\n//    @include loop-breakpoints-down() using ($breakpoint, $next, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-down($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $next: breakpoint-next($breakpoint, $breakpoints);\n    $infix: breakpoint-infix($next, $breakpoints);\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Backwards-compatible alias for next/down breakpoint loops.\n@mixin loop-breakpoints($breakpoints: $breakpoints) {\n  @include loop-breakpoints-down($breakpoints) using ($breakpoint, $next, $infix) {\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (width >= $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (width < $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n\n// Container queries\n//\n// Container queries allow elements to respond to the size of a containing element\n// rather than the viewport. These mixins mirror the media-breakpoint-* mixins above.\n//\n// scss-docs-start container-query-mixins\n\n// Set an element as a query container.\n//\n//    @include set-container();                    // container-type: inline-size\n//    @include set-container(size);                // container-type: size\n//    @include set-container(inline-size, sidebar); // container: sidebar / inline-size\n//\n@mixin set-container($type: inline-size, $name: null) {\n  @if $name {\n    container: #{$name} / #{$type};\n  } @else {\n    container-type: #{$type};\n  }\n}\n\n// Container query of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider within the container.\n//\n//    @include container-breakpoint-up(md) { ... }\n//    @include container-breakpoint-up(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-up($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower within the container.\n//\n//    @include container-breakpoint-down(lg) { ... }\n//    @include container-breakpoint-down(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-down($name, $container-name: null, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @if $container-name {\n      @container #{$container-name} (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints within the container.\n//\n//    @include container-breakpoint-between(md, xl) { ... }\n//    @include container-breakpoint-between(md, xl, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-between($lower, $upper, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($lower, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($upper, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Container query between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint within the container.\n//\n//    @include container-breakpoint-only(md) { ... }\n//    @include container-breakpoint-only(md, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-only($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($name, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($next, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n// scss-docs-end container-query-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/image\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/tokens\" as *;\n\n$thumbnail-tokens: () !default;\n\n// scss-docs-start thumbnail-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$thumbnail-tokens: defaults(\n  (\n    --thumbnail-padding: .25rem,\n    --thumbnail-bg: var(--bg-body),\n    --thumbnail-border-width: var(--border-width),\n    --thumbnail-border-color: var(--border-color),\n    --thumbnail-border-radius: var(--border-radius),\n    --thumbnail-box-shadow: var(--box-shadow-sm),\n  ),\n  $thumbnail-tokens\n);\n// scss-docs-end thumbnail-tokens\n\n$figure-tokens: () !default;\n\n// scss-docs-start figure-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$figure-tokens: defaults(\n  (\n    --figure-gap: calc(var(--spacer) * .5),\n    --figure-caption-font-size: var(--font-size-sm),\n    --figure-caption-color: var(--fg-3),\n  ),\n  $figure-tokens\n);\n// scss-docs-end figure-tokens\n\n@layer content {\n  // Responsive images (ensure images don't scale beyond their parents)\n  //\n  // This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.\n  // We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n  // and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n  // which weren't expecting the images within themselves to be involuntarily resized.\n  // See also https://github.com/twbs/bootstrap/issues/18178\n  .img-fluid {\n    @include img-fluid();\n  }\n\n  .img-thumbnail {\n    @include tokens($thumbnail-tokens);\n    padding: var(--thumbnail-padding);\n    background-color: var(--thumbnail-bg);\n    border: var(--thumbnail-border-width) solid var(--thumbnail-border-color);\n    @include border-radius(var(--thumbnail-border-radius));\n    @include box-shadow(var(--thumbnail-box-shadow));\n\n    // Keep them at most 100% wide\n    @include img-fluid();\n  }\n\n  .figure {\n    @include tokens($figure-tokens);\n    // Ensures the caption's text aligns with the image.\n    display: flex;\n    flex-direction: column;\n    gap: var(--figure-gap);\n  }\n\n  .figure-caption {\n    font-size: var(--figure-caption-font-size);\n    color: var(--figure-caption-color);\n  }\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n  // Part 1: Set a maximum relative to the parent\n  max-width: 100%;\n  // Part 2: Override the height to auto, otherwise images will be stretched\n  // when setting a width and height attribute on the img element.\n  height: auto;\n}\n","@use \"sass:list\";\n@use \"../config\" as *;\n\n@mixin box-shadow($shadow...) {\n  @if $enable-shadows {\n    $result: ();\n    $has-single-value: false;\n    $single-value: null;\n\n    @each $value in $shadow {\n      @if $value != null {\n        @if $value == none or $value == initial or $value == inherit or $value == unset {\n          $has-single-value: true;\n          $single-value: $value;\n        } @else {\n          $result: list.append($result, $value, \"comma\");\n        }\n      }\n    }\n\n    @if $has-single-value {\n      box-shadow: $single-value;\n    } @else if (list.length($result) > 0) {\n      box-shadow: $result;\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$prose-tokens: () !default;\n\n// scss-docs-start prose-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$prose-tokens: defaults(\n  (\n    --content-font-size: 1rem,\n    --content-gap: 20px,\n    --heading-color: light-dark(var(--gray-900), var(--white)),\n  ),\n  $prose-tokens\n);\n// scss-docs-end prose-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer content {\n  .prose {\n    @include tokens($prose-tokens);\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--content-gap);\n    max-width: 1000px;\n    margin-inline: auto;\n    font-size: var(--content-font-size);\n    line-height: 1.5;\n\n    @media (width >= 1024px) {\n      --content-font-size: var(--font-size-md);\n      --content-gap: 24px;\n    }\n\n    :where(p, ul, ol, dl, pre, table, blockquote):not(:where(.not-prose, .not-prose *)) {\n      margin-block: 0;\n    }\n\n    :where(ul, ol):not([class]):not(:where(.not-prose, .not-prose *)) li:not(:last-child) {\n      margin-bottom: calc(var(--content-gap) / 4);\n    }\n\n    :where(li ul, li ol):not(:where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) / 4);\n    }\n\n    :where(hr):not(:where(.not-prose, .not-prose *)) {\n      margin: calc(var(--content-gap) * 1.5) 0;\n      border: 0;\n      border-block-start: var(--border-width) solid var(--hr-border-color);\n    }\n\n    :where(h1, h2, h3, h4, h5, h6):not([class]):not(:where(.not-prose, .not-prose *)) {\n      margin-top: 0;\n      margin-bottom: calc(var(--content-gap) / -2);\n      font-weight: 500;\n      line-height: 1.25;\n\n      code {\n        font-weight: 600;\n        color: inherit;\n      }\n    }\n\n    :where(h1, h2):not(:first-child):not(:where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) * .75);\n    }\n\n    :where(h3, h4, h5, h6):not(:first-child):not(:where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) * .5);\n    }\n\n    :where(h1):not(:where(.not-prose, .not-prose *)) {\n      font-size: 2.25em;\n      line-height: 1.1;\n    }\n    :where(h2):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.75em;\n    }\n    :where(h3):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.5em;\n    }\n    :where(h4):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.25em;\n    }\n    :where(h5):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.125em;\n    }\n    :where(h6):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1em;\n    }\n\n    :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n      color: var(--link-color);\n      text-decoration: underline;\n      text-decoration-color: color-mix(in srgb, var(--link-color) 25%, transparent);\n      text-underline-offset: 4px;\n      @include transition(.1s text-decoration-color ease-in-out);\n\n      &:hover {\n        text-decoration-color: var(--link-hover-color);\n      }\n    }\n\n    :where(img):not(:where(.not-prose, .not-prose *)) {\n      max-width: 100%;\n    }\n\n    :where(blockquote):not(:where(.not-prose, .not-prose *)) {\n      padding-inline-start: calc(var(--content-gap) / 2);\n      margin: 0;\n      border-inline-start: 4px solid var(--border-color);\n    }\n\n    :where(table):not(:where(.not-prose, .not-prose *)) {\n      width: 100%;\n      border-spacing: 0;\n      border-collapse: collapse;\n    }\n\n    :where(table:not([class])):not(:where(.not-prose, .not-prose *)) {\n      td,\n      th {\n        padding: 6px 12px;\n        text-align: inherit;\n        border: 1px solid var(--border-color);\n      }\n    }\n\n    :where(dt):not(:where(.not-prose, .not-prose *)) {\n      font-weight: 500;\n    }\n\n    :where(video, img):not(:where(.not-prose, .not-prose *)) {\n      max-width: 100%;\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n@mixin transition($transition...) {\n  @if list.length($transition) == 0 {\n    $transition: $transition-base;\n  }\n\n  @if list.length($transition) > 1 {\n    @each $value in $transition {\n      @if $value == null or $value == none {\n        @warn \"The keyword 'none' or 'null' must be used as a single argument.\";\n      }\n    }\n  }\n\n  @if $enable-transitions {\n    @if list.nth($transition, 1) != null {\n      transition: $transition;\n    }\n\n    @if $enable-reduced-motion and list.nth($transition, 1) != null and list.nth($transition, 1) != none {\n      @media (prefers-reduced-motion: reduce) {\n        transition: none;\n      }\n    }\n  }\n}\n","@use \"../config\" as *;\n@use \"breakpoints\" as *;\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n  --gutter-x: #{$gutter};\n  --gutter-y: 0;\n  width: 100%;\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-inline: auto;\n}\n\n@layer layout {\n  @if $enable-container-classes {\n    // Single container class with breakpoint max-widths\n    .container,\n    // 100% wide container at all breakpoints\n    .container-fluid {\n      @include make-container();\n    }\n\n    // Responsive containers that are 100% wide until a breakpoint\n    @each $breakpoint, $container-max-width in $container-max-widths {\n      .container-#{$breakpoint} {\n        @extend .container-fluid;\n      }\n\n      @include media-breakpoint-up($breakpoint, $breakpoints) {\n        // Extend each breakpoint which is smaller or equal to the current breakpoint\n        $extend-breakpoint: true;\n\n        %responsive-container-#{$breakpoint} {\n          max-width: $container-max-width;\n        }\n\n        @each $name, $width in $breakpoints {\n          @if ($extend-breakpoint) {\n            .container#{breakpoint-infix($name, $breakpoints)} {\n              @extend %responsive-container-#{$breakpoint};\n            }\n\n            // Once the current breakpoint is reached, stop extending\n            @if ($breakpoint == $name) {\n              $extend-breakpoint: false;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"../config\" as *;\n@use \"../mixins/grid\" as *;\n\n// mdo-do\n// - check gap utilities as replacement for gutter classes from v5\n\n@layer layout {\n  @if $enable-grid-classes {\n    .row {\n      @include make-row();\n\n      > * {\n        @include make-col-ready();\n      }\n    }\n\n    @include make-grid-columns();\n  }\n\n  @if $enable-cssgrid {\n    .grid {\n      --columns: #{$grid-columns};\n      --rows: 1;\n      --gap: #{$grid-gutter-x};\n\n      display: grid;\n      grid-template-rows: repeat(var(--rows), 1fr);\n      grid-template-columns: repeat(var(--columns), 1fr);\n      gap: var(--gap);\n\n    }\n\n    @include make-cssgrid();\n  }\n\n  // mdo-do: add to utilities?\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n\n  .grid-fill {\n    --gap: #{$grid-gutter-x};\n\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n\n  // .g-col-auto {\n  //   grid-column: auto;\n  // }\n\n  // mdo-do: add to utilities?\n  // .grid-cols-3 {\n  //   --columns: 3;\n  // }\n  // .grid-cols-4 {\n  //   --columns: 4;\n  // }\n  // .grid-cols-6 {\n  //   --columns: 6;\n  // }\n\n  // .grid-full {\n  //   grid-column: 1 / -1;\n  // }\n}\n","@use \"sass:map\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n\n// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter-x: $grid-gutter-x, $gutter-y: $grid-gutter-y) {\n  --gutter-x: #{$gutter-x};\n  --gutter-y: #{$gutter-y};\n  display: flex;\n  flex-wrap: wrap;\n  // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n  margin-inline: calc(-.5 * var(--gutter-x));\n  margin-top: calc(-1 * var(--gutter-y));\n}\n\n@mixin make-col-ready() {\n  // Add box sizing if only the grid is loaded\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  box-sizing: if(sass(meta.variable-exists(include-column-box-sizing) and $include-column-box-sizing): border-box; else: null);\n  // Prevent columns from becoming too narrow when at smaller grid tiers by\n  // always setting `width: 100%;`. This works because we set the width\n  // later on to override this initial width.\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-top: var(--gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n  @if $size {\n    flex: 0 0 auto;\n    width: math.percentage(math.div($size, $columns));\n\n  } @else {\n    flex: 1 1 0;\n    max-width: 100%;\n  }\n}\n\n@mixin make-col-auto() {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n  $num: math.div($size, $columns);\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  margin-inline-start: if(sass($num == 0): 0; else: math.percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n  > * {\n    flex: 0 0 auto;\n    width: math.percentage(math.div(1, $count));\n  }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-x, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n      .col#{$infix} {\n        flex: 1 0 0;\n      }\n\n      .row-cols#{$infix}-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .row-cols#{$infix}-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .col#{$infix}-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .col#{$infix}-#{$i} {\n            @include make-col($i, $columns);\n          }\n        }\n\n        // `$columns - 1` because offsetting by the width of an entire row isn't possible\n        @for $i from 0 through ($columns - 1) {\n          @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .offset#{$infix}-#{$i} {\n              @include make-col-offset($i, $columns);\n            }\n          }\n        }\n      }\n\n      // Gutters\n      //\n      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n      @each $key, $value in $gutters {\n        .g#{$infix}-#{$key},\n        .gx#{$infix}-#{$key} {\n          --gutter-x: #{$value};\n        }\n\n        .g#{$infix}-#{$key},\n        .gy#{$infix}-#{$key} {\n          --gutter-y: #{$value};\n        }\n      }\n    }\n  }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .g-col#{$infix}-#{$i} {\n            grid-column: auto / span $i;\n          }\n        }\n\n        // Start with `1` because `0` is an invalid value.\n        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n        @for $i from 1 through ($columns - 1) {\n          .g-start#{$infix}-#{$i} {\n            grid-column-start: $i;\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"../functions\" as *;\n\n$form-label-tokens: () !default;\n\n// scss-docs-start form-label-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-label-tokens: defaults(\n  (\n    --label-margin-bottom: calc(var(--spacer) / 2),\n    --label-font-size: null,\n    --label-font-style: null,\n    --label-font-weight: null,\n    --label-color: null,\n  ),\n  $form-label-tokens\n);\n// scss-docs-end form-label-tokens\n\n@layer forms {\n  .form-label,\n  .col-form-label {\n    font-size: var(--label-font-size, var(--font-size-sm));\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, inherit);\n    color: var(--label-color, var(--fg-body));\n  }\n\n  .form-label {\n    margin-bottom: var(--label-margin-bottom, calc(var(--spacer) / 2));\n  }\n\n  // For use with horizontal and inline forms, when you need the label (or legend)\n  // text to align with the form controls.\n  .col-form-label {\n    --label-padding-y: calc(var(--btn-input-padding-y) + var(--border-width));\n    padding-block: var(--label-padding-y);\n    margin-bottom: 0; // Override the `<legend>` default\n  }\n\n  .col-form-label-lg {\n    --label-padding-y: calc(var(--btn-input-lg-padding-y) + var(--border-width));\n    font-size: var(--btn-input-lg-font-size);\n  }\n\n  .col-form-label-sm {\n    --label-padding-y: calc(var(--btn-input-sm-padding-y) + var(--border-width));\n    font-size: var(--btn-input-sm-font-size);\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/tokens\" as *;\n\n$form-text-tokens: () !default;\n\n// scss-docs-start form-text-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-text-tokens: defaults(\n  (\n    --form-text-margin-top: .25rem,\n    --form-text-font-size: var(--font-size-sm),\n    --form-text-font-style: null,\n    --form-text-font-weight: null,\n    --form-text-color: var(--fg-3),\n  ),\n  $form-text-tokens\n);\n// scss-docs-end form-text-tokens\n\n@layer forms {\n  .form-text {\n    @include tokens($form-text-tokens);\n\n    margin-top: var(--form-text-margin-top);\n    font-size: var(--form-text-font-size);\n    font-style: var(--form-text-font-style);\n    font-weight: var(--form-text-font-weight);\n    color: var(--form-text-color);\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/gradients\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$form-control-tokens: () !default;\n\n// scss-docs-start form-control-tokens\n// stylelint-disable custom-property-no-missing-var-function\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-control-tokens: defaults(\n  (\n    --control-min-height: var(--btn-input-min-height),\n    --control-padding-y: var(--btn-input-padding-y),\n    --control-padding-x: var(--btn-input-padding-x),\n    --control-font-size: var(--btn-input-font-size),\n    --control-line-height: var(--btn-input-line-height),\n    --control-fg: var(--btn-input-fg),\n    --control-bg: var(--btn-input-bg),\n    --control-border-width: var(--border-width),\n    --control-border-color: var(--border-color),\n    --control-border-radius: var(--border-radius),\n    --control-box-shadow: var(--box-shadow-inset),\n    --control-action-bg: var(--bg-1),\n    --control-action-hover-bg: var(--bg-2),\n    --control-transition-property: \"border-color, box-shadow\",\n    --control-transition-timing: .15s ease-in-out,\n    --control-transition: var(--control-transition-property) var(--control-transition-timing),\n    --control-placeholder-color: var(--fg-3),\n    --control-disabled-color: var(--control-fg),\n    --control-disabled-bg: var(--bg-2),\n    --control-disabled-border-color: var(--control-border-color),\n    --control-select-bg: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#00000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>\"))},\n    --control-select-bg-position: right .75rem center,\n    --control-select-bg-size: 16px 12px,\n    --control-select-bg-dark: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>\"))},\n  ),\n  $form-control-tokens\n);\n// scss-docs-end form-control-tokens\n\n// scss-docs-start form-control-sizes\n$form-control-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-control-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $form-control-sizes\n);\n// scss-docs-end form-control-sizes\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .form-control {\n    @include tokens($form-control-tokens);\n\n    display: flex;\n    width: 100%;\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    font-size: var(--control-font-size);\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    appearance: none;\n    background-color: var(--control-bg);\n    background-clip: padding-box;\n    border: var(--control-border-width) solid var(--control-border-color);\n    @include border-radius(var(--control-border-radius), 0);\n    @include box-shadow(var(--control-box-shadow));\n    @include transition(var(--control-transition));\n\n    // Customize the `:focus` state to imitate native WebKit styles.\n    &:focus-visible {\n      --focus-ring-offset: -1px;\n      @include focus-ring(true);\n    }\n\n    // Placeholder\n    &::placeholder {\n      color: var(--control-placeholder-color);\n      // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.\n      opacity: 1;\n    }\n\n    // Disabled inputs\n    //\n    // HTML5 says that controls under a fieldset > legend:first-child won't be\n    // disabled if the fieldset is disabled. Due to implementation difficulty, we\n    // don't honor that edge case; we style them as disabled anyway.\n    &:disabled {\n      color: var(--control-disabled-color);\n      background-color: var(--control-disabled-bg);\n      border-color: var(--control-disabled-border-color);\n      // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.\n      opacity: 1;\n    }\n\n    // Date and time inputs\n    // &::-webkit-date-and-time-value {\n    //   // On Android Chrome, form-control's \"width: 100%\" makes the input width too small\n    //   // Tested under Android 11 / Chrome 89, Android 12 / Chrome 100, Android 13 / Chrome 109\n    //   //\n    //   // On iOS Safari, form-control's \"appearance: none\" + \"width: 100%\" makes the input width too small\n    //   // Tested under iOS 16.2 / Safari 16.2\n    //   min-width: 85px; // Seems to be a good minimum safe width\n\n    //   // Add some height to date inputs on iOS\n    //   // https://github.com/twbs/bootstrap/issues/23307\n    //   // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved\n    //   // Multiply line-height by 1em if it has no unit\n    //   height: 1.5em;\n\n    //   // Android Chrome type=\"date\" is taller than the other inputs\n    //   // because of \"margin: 1px 24px 1px 4px\" inside the shadow DOM\n    //   // Tested under Android 11 / Chrome 89, Android 12 / Chrome 100, Android 13 / Chrome 109\n    //   margin: 0;\n    //   background-color: var(--red-500);\n    // }\n\n    // Prevent excessive date input height in Webkit\n    // https://github.com/twbs/bootstrap/issues/34433\n\n    // mdo-do: need to check this stuff out across browsers\n    &::-webkit-datetime-edit {\n      display: block;\n      height: 1.5rem;\n      padding: 0;\n      margin-bottom: -.125rem;\n    }\n    &::-webkit-datetime-edit-fields-wrapper {\n      height: 1.5rem;\n    }\n\n    // File inputs\n    &[type=\"file\"] {\n      overflow: hidden; // prevent pseudo element button overlap\n\n      &:not(:disabled):not([readonly]) {\n        cursor: pointer;\n      }\n    }\n    &::file-selector-button {\n      min-height: var(--control-min-height);\n      padding: var(--control-padding-y) var(--control-padding-x);\n      margin: calc(var(--control-padding-y) * -1) calc(var(--control-padding-x) * -1);\n      margin-inline-end: var(--control-padding-x);\n      color: var(--control-fg);\n      @include gradient-bg(var(--control-action-bg));\n      pointer-events: none;\n      border-color: inherit;\n      border-style: solid;\n      border-width: 0;\n      border-inline-end-width: var(--control-border-width);\n      border-radius: 0; // stylelint-disable-line property-disallowed-list\n      @include transition(var(--control-transition));\n    }\n\n    &:hover:not(:disabled):not([readonly])::file-selector-button {\n      background-color: var(--control-action-hover-bg);\n    }\n  }\n\n  // Readonly controls as plain text\n  //\n  // Apply class to a readonly input to make it appear like regular plain\n  // text (without any border, background color, focus indicator)\n\n  .form-control-plaintext {\n    display: block;\n    width: 100%;\n    padding: var(--control-padding-y) 0;\n    margin-bottom: 0; // match inputs if this class comes on inputs with default margins\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    background-color: transparent;\n    border: solid transparent;\n    border-width: var(--control-border-width) 0;\n\n    &:focus {\n      outline: 0;\n    }\n\n    &.form-control-sm,\n    &.form-control-lg {\n      padding-inline: 0;\n    }\n  }\n\n  // stylelint-disable selector-no-qualifying-type\n  select.form-control {\n    padding-inline-end: calc(var(--control-padding-x) * 3);\n    background-image: var(--control-select-bg);\n    background-repeat: no-repeat;\n    background-position: var(--control-select-bg-position);\n    background-size: var(--control-select-bg-size);\n\n    &[multiple],\n    &[size]:not([size=\"1\"]) {\n      padding-inline-end: var(--control-padding-x);\n      background-image: none;\n    }\n  }\n\n  @media (prefers-color-scheme: dark) {\n    select.form-control {\n      background-image: var(--control-select-bg-dark);\n    }\n  }\n  // stylelint-enable selector-no-qualifying-type\n\n  // Form control sizing\n  //\n  // Build on `.form-control` with modifier classes to decrease or increase the\n  // height and font-size of form controls.\n  //\n  // Repeated in `_input_group.scss` to avoid Sass extend issues.\n  @each $size, $_ in $form-control-sizes {\n    .form-control-#{$size} {\n      --control-min-height: var(--btn-input-#{$size}-min-height);\n      --control-padding-y: var(--btn-input-#{$size}-padding-y);\n      --control-padding-x: var(--btn-input-#{$size}-padding-x);\n      --control-font-size: var(--btn-input-#{$size}-font-size);\n      --control-line-height: var(--btn-input-#{$size}-line-height);\n      --control-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n\n  .form-control-color {\n    width: var(--control-min-height);\n    padding: var(--control-padding-y);\n\n    &:not(:disabled):not([readonly]) {\n      cursor: pointer;\n    }\n\n    &::-moz-color-swatch {\n      border: 0 !important; // stylelint-disable-line declaration-no-important\n      @include border-radius(var(--border-radius-sm));\n    }\n\n    &::-webkit-color-swatch {\n      border: 0 !important; // stylelint-disable-line declaration-no-important\n      @include border-radius(var(--border-radius-sm));\n    }\n  }\n\n  // Ghost input - removes all visual styling\n  // Used inside custom wrappers that handle their own styling\n  .form-ghost {\n    display: block;\n    width: 100%;\n    padding: 0;\n    font: inherit;\n    color: inherit;\n    appearance: none;\n    background: transparent;\n    border: 0;\n\n    &:focus {\n      outline: 0;\n    }\n\n    &::placeholder {\n      color: var(--fg-3);\n      opacity: 1;\n    }\n\n    &:disabled {\n      color: var(--fg-4);\n      cursor: not-allowed;\n    }\n  }\n}\n","@mixin focus-ring($offset: false, $color: null) {\n  @if $color != null {\n    outline: var(--focus-ring-width) solid #{$color};\n  } @else {\n    outline: var(--focus-ring);\n  }\n  @if $offset {\n    outline-offset: var(--focus-ring-offset);\n  }\n}\n","@use \"../colors\" as *;\n@use \"../config\" as *;\n\n// Gradients\n\n// scss-docs-start gradient-bg-mixin\n@mixin gradient-bg($color: null) {\n  background-color: $color;\n\n  @if $enable-gradients {\n    background-image: var(--gradient);\n  }\n}\n// scss-docs-end gradient-bg-mixin\n\n// scss-docs-start gradient-mixins\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: var(--gray-700), $end-color: var(--gray-800), $start-percent: 0%, $end-percent: 100%) {\n  background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: var(--gray-700), $end-color: var(--gray-800), $start-percent: null, $end-percent: null) {\n  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n}\n\n@mixin gradient-directional($start-color: var(--gray-700), $end-color: var(--gray-800), $deg: 45deg) {\n  background-image: linear-gradient($deg, $start-color, $end-color);\n}\n\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-radial($inner-color: var(--gray-700), $outer-color: var(--gray-800)) {\n  background-image: radial-gradient(circle, $inner-color, $outer-color);\n}\n\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\n  background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n// scss-docs-end gradient-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$check-tokens: () !default;\n\n// scss-docs-start check-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$check-tokens: defaults(\n  (\n    --check-size: 1.25rem,\n    --check-margin-block: .125rem,\n    --check-bg: transparent,\n    --check-border-color: var(--border-color),\n    --check-border-radius: .375rem,\n    --check-checked-bg: var(--control-checked-bg),\n    --check-checked-border-color: var(--control-checked-border-color),\n    --check-indeterminate-bg: var(--control-checked-bg),\n    --check-indeterminate-border-color: var(--control-checked-border-color),\n    --check-active-bg: var(--control-active-bg),\n    --check-active-border-color: var(--control-active-border-color),\n    --check-disabled-bg: var(--control-disabled-bg),\n    --check-disabled-opacity: var(--control-disabled-opacity),\n  ),\n  $check-tokens\n);\n// scss-docs-end check-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .checkgroup {\n    display: flex;\n    gap: var(--gap, .5rem);\n    align-items: var(--align-items, start);\n\n    .description {\n      color: var(--fg-3);\n    }\n  }\n\n  .check {\n    @include tokens($check-tokens);\n\n    display: grid;\n    grid-template-columns: repeat(1, minmax(0, 1fr));\n    margin-block: var(--check-margin-block);\n\n    :where(svg, input) {\n      flex-shrink: 0;\n      grid-row-start: 1;\n      grid-column-start: 1;\n      width: var(--check-size);\n      height: var(--check-size);\n    }\n\n    :where(input) {\n      appearance: none;\n      // later: maybe set a tertiary bg color?\n      background-color: var(--theme-bg, var(--check-bg));\n      border: 1px solid var(--theme-bg, var(--check-border-color));\n      // stylelint-disable-next-line property-disallowed-list\n      border-radius: .3em;\n    }\n\n    :where(input:checked, input:indeterminate) {\n      background-color: var(--theme-bg, var(--check-checked-bg));\n      border-color: var(--theme-bg, var(--check-checked-border-color));\n    }\n\n    :where(input:focus-visible) {\n      @include focus-ring(true);\n    }\n\n    &:has(input:checked) .checked,\n    &:has(input:indeterminate) .indeterminate {\n      display: block;\n      color: var(--theme-contrast, var(--primary-contrast));\n      stroke: currentcolor;\n    }\n\n    &:has(input:disabled) {\n      --check-bg: var(--check-disabled-bg);\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n    &:has(input:disabled:checked) {\n      opacity: var(--check-disabled-opacity);\n    }\n\n    :where(svg) {\n      pointer-events: none;\n    }\n\n    :where(svg path) {\n      display: none;\n    }\n  }\n\n  .check-sm {\n    --check-size: 1rem;\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: 0;\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$radio-tokens: () !default;\n\n// scss-docs-start radio-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$radio-tokens: defaults(\n  (\n    --radio-size: 1.25rem,\n    --radio-margin-block: .125rem,\n    --radio-bg: transparent,\n    --radio-border-color: var(--border-color),\n    --radio-checked-bg: var(--control-checked-bg),\n    --radio-checked-border-color: var(--control-checked-border-color),\n    --radio-disabled-bg: var(--control-disabled-bg),\n    --radio-disabled-opacity: var(--control-disabled-opacity),\n  ),\n  $radio-tokens\n);\n// scss-docs-end radio-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .radiogroup {\n    display: flex;\n    gap: var(--gap, .5rem);\n    align-items: var(--align-items, start);\n\n    .description {\n      color: var(--fg-3);\n    }\n  }\n\n  .radio {\n    @include tokens($radio-tokens);\n\n    position: relative;\n    flex-shrink: 0;\n    width: var(--radio-size);\n    height: var(--radio-size);\n    margin-block: var(--radio-margin-block);\n    appearance: none;\n    background-color: var(--theme-bg, var(--radio-bg));\n    border: 1px solid var(--theme-bg, var(--radio-border-color));\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 50%;\n\n    &:checked {\n      color: var(--theme-contrast, var(--primary-contrast));\n      background-color: var(--theme-bg, var(--radio-checked-bg));\n      border-color: var(--theme-bg, var(--radio-checked-border-color));\n\n      &::before {\n        position: absolute;\n        inset: .25rem;\n        content: \"\";\n        background-color: currentcolor;\n        // stylelint-disable-next-line property-disallowed-list\n        border-radius: 50%;\n      }\n    }\n\n    &:disabled {\n      --radio-bg: var(--radio-disabled-bg);\n\n      ~ label {\n        color: var(--secondary-text);\n        cursor: default;\n      }\n    }\n\n    &:focus-visible {\n      @include focus-ring(true);\n    }\n  }\n\n  .radio-sm {\n    --radio-size: 1rem;\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: 0;\n  }\n}\n","@use \"../colors\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$switch-tokens: () !default;\n\n// scss-docs-start switch-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$switch-tokens: defaults(\n  (\n    --switch-height: 1.25rem,\n    --switch-width: calc(var(--switch-height) * 1.5),\n    --switch-padding: .0625rem,\n    --switch-margin-block: .125rem,\n    --switch-bg: var(--bg-3),\n    --switch-border-width: var(--border-width),\n    --switch-border-color: var(--border-color),\n    --switch-indicator-bg: var(--white),\n    --switch-checked-bg: var(--control-checked-bg),\n    --switch-checked-border-color: var(--switch-checked-bg),\n    --switch-checked-indicator-bg: var(--white),\n    --switch-disabled-bg: var(--control-disabled-bg),\n    --switch-disabled-indicator-bg: var(--fg-3),\n  ),\n  $switch-tokens\n);\n// scss-docs-end switch-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .switch {\n    @include tokens($switch-tokens);\n\n    position: relative;\n    display: flex;\n    flex-shrink: 0;\n    align-items: stretch;\n    justify-content: flex-start;\n    width: var(--switch-width);\n    height: var(--switch-height);\n    padding: var(--switch-padding);\n    margin-block: var(--switch-margin-block);\n    background-color: var(--switch-bg);\n    border: var(--switch-border-width) solid var(--switch-border-color);\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 10rem;\n    box-shadow: inset 0 1px 2px rgba($black, .05);\n    // stylelint-disable-next-line property-disallowed-list\n    transition: .15s ease-in-out;\n    transition-property: padding-inline-start, background-color;\n\n    &::before {\n      flex-shrink: 0;\n      width: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2);\n      height: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2);\n      content: \"\";\n      background-color: var(--theme-contrast, var(--switch-indicator-bg));\n      // stylelint-disable-next-line property-disallowed-list\n      border-radius: 50%;\n      box-shadow: 0 1px 2px rgba($black, .1);\n    }\n\n    input {\n      position: absolute;\n      inset: 0;\n      appearance: none;\n      background-color: transparent;\n      outline: 0;\n    }\n\n    &:focus-within {\n      @include focus-ring(true);\n    }\n\n    &:has(input:checked) {\n      padding-inline-start: calc(var(--switch-height) / 2 + var(--switch-padding));\n      background-color: var(--theme-bg, var(--switch-checked-bg));\n      border-color: var(--theme-bg, var(--switch-checked-border-color));\n    }\n\n    &:has(input:disabled) {\n      --switch-bg: var(--switch-disabled-bg);\n      --switch-indicator-bg: var(--switch-disabled-indicator-bg);\n\n      &::before { opacity: .4; }\n\n      ~ label {\n        color: var(--secondary-text);\n        cursor: default;\n      }\n    }\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: 0;\n  }\n}\n","@use \"../colors\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/transition\" as *;\n@use \"../mixins/gradients\" as *;\n@use \"../mixins/tokens\" as *;\n\n$range-tokens: () !default;\n\n// scss-docs-start range-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$range-tokens: defaults(\n  (\n    --range-track-width: 100%,\n    --range-track-height: .5rem,\n    --range-track-cursor: pointer,\n    --range-track-bg: var(--bg-3),\n    --range-track-border-radius: 1rem,\n    --range-track-box-shadow: var(--box-shadow-inset),\n    --range-thumb-width: 1rem,\n    --range-thumb-height: var(--range-thumb-width),\n    --range-thumb-bg: var(--primary-base),\n    --range-thumb-border: 0,\n    --range-thumb-border-radius: 1rem,\n    --range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1),\n    --range-thumb-active-bg: color-mix(in oklch, var(--primary-base) 70%, var(--bg-body)),\n    --range-thumb-disabled-bg: var(--fg-3),\n    --range-thumb-transition-property: \"background-color, border-color, box-shadow\",\n    --range-thumb-transition-timing: .15s ease-in-out,\n    --range-thumb-transition: var(--range-thumb-transition-property) var(--range-thumb-transition-timing),\n  ),\n  $range-tokens\n);\n// scss-docs-end range-tokens\n\n// scss-docs-start range-mixins\n@mixin range-thumb() {\n  width: var(--range-thumb-width);\n  height: var(--range-thumb-height);\n  appearance: none;\n  @include gradient-bg(var(--range-thumb-bg));\n  border: var(--range-thumb-border);\n  @include border-radius(var(--range-thumb-border-radius));\n  @include box-shadow(var(--range-thumb-box-shadow));\n  @include transition(var(--range-thumb-transition));\n\n  &:active {\n    @include gradient-bg(var(--range-thumb-active-bg));\n  }\n}\n\n@mixin range-track() {\n  width: var(--range-track-width);\n  height: var(--range-track-height);\n  color: transparent; // Why?\n  cursor: var(--range-track-cursor);\n  background-color: var(--range-track-bg);\n  border-color: transparent; // Firefox specific?\n  @include border-radius(var(--range-track-border-radius));\n  @include box-shadow(var(--range-track-box-shadow));\n}\n// scss-docs-end range-mixins\n\n@layer forms {\n  .form-range {\n    @include tokens($range-tokens);\n\n    width: 100%;\n    height: calc(var(--range-thumb-height) + (var(--focus-ring-width) * 2));\n    padding: 0; // Need to reset padding\n    appearance: none;\n    background-color: transparent;\n\n    &:focus {\n      outline: 0;\n\n      // Pseudo-elements must be split across multiple rulesets to have an effect.\n      &::-webkit-slider-thumb {\n        @include focus-ring(true);\n        --focus-ring-offset: 1px;\n      }\n      &::-moz-range-thumb     {\n        @include focus-ring(true);\n        --focus-ring-offset: 1px;\n      }\n    }\n\n    &::-moz-focus-outer {\n      border: 0;\n    }\n\n    &::-webkit-slider-thumb {\n      @include range-thumb();\n      margin-top: calc((var(--range-track-height) - var(--range-thumb-height)) * .5); // Webkit specific\n    }\n\n    &::-moz-range-thumb {\n      @include range-thumb();\n    }\n\n    &::-webkit-slider-runnable-track {\n      @include range-track();\n    }\n\n    &::-moz-range-track {\n      @include range-track();\n    }\n\n    &:disabled {\n      pointer-events: none;\n\n      &::-webkit-slider-thumb {\n        background-color: var(--range-thumb-disabled-bg);\n      }\n\n      &::-moz-range-thumb {\n        background-color: var(--range-thumb-disabled-bg);\n      }\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$form-floating-tokens: () !default;\n\n// scss-docs-start form-floating-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-floating-tokens: defaults(\n  (\n    --form-floating-height: calc(3.5rem + (var(--border-width) * 2)),\n    --form-floating-line-height: 1.25,\n    --form-floating-padding-x: var(--btn-input-padding-x),\n    --form-floating-padding-y: 1rem,\n    --form-floating-input-padding-t: 1.625rem,\n    --form-floating-input-padding-b: .625rem,\n    --form-floating-label-height: 1.5em,\n    --form-floating-label-opacity: .65,\n    --form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem),\n    --form-floating-label-disabled-color: var(--fg-3),\n    --form-floating-transition-property: \"opacity, transform\",\n    --form-floating-transition-timing: .1s ease-in-out,\n    --form-floating-transition: var(--form-floating-transition-property) var(--form-floating-transition-timing),\n  ),\n  $form-floating-tokens\n);\n// scss-docs-end form-floating-tokens\n\n@layer forms {\n  .form-floating {\n    @include tokens($form-floating-tokens);\n\n    position: relative;\n\n    > label {\n      position: absolute;\n      inset-block-start: 0;\n      inset-inline-start: 0;\n      z-index: 2;\n      display: flex;\n      align-items: center;\n      max-width: 100%;\n      height: 100%; // allow textareas\n      padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n      overflow: hidden;\n      color: color-mix(in oklch, var(--fg-body) var(--form-floating-label-opacity), transparent);\n      text-align: start;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n      pointer-events: none;\n      border: var(--input-btn-border-width) solid transparent; // Required for aligning label's text with the input as it affects inner box model\n      transform-origin: 0 0;\n      @include transition(var(--form-floating-transition));\n    }\n\n    > .form-control,\n    > .form-control-plaintext {\n      height: var(--form-floating-height);\n      min-height: var(--form-floating-height);\n      padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n      line-height: var(--form-floating-line-height);\n\n      &::placeholder {\n        color: transparent;\n      }\n\n      &:focus,\n      &:not(:placeholder-shown) {\n        padding-top: var(--form-floating-input-padding-t);\n        padding-bottom: var(--form-floating-input-padding-b);\n      }\n      // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n      &:-webkit-autofill {\n        padding-top: var(--form-floating-input-padding-t);\n        padding-bottom: var(--form-floating-input-padding-b);\n      }\n    }\n\n    > .form-control:focus,\n    > .form-control:not(:placeholder-shown),\n    > .form-control-plaintext {\n      ~ label {\n        transform: var(--form-floating-label-transform);\n      }\n    }\n\n    // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n    > .form-control:-webkit-autofill {\n      ~ label {\n        transform: var(--form-floating-label-transform);\n      }\n    }\n    > textarea:focus,\n    > textarea:not(:placeholder-shown) {\n      ~ label::after {\n        position: absolute;\n        inset: var(--form-floating-padding-y) calc(var(--form-floating-padding-x) * .5);\n        z-index: -1;\n        height: var(--form-floating-label-height);\n        content: \"\";\n        background-color: var(--control-bg);\n        @include border-radius(var(--btn-input-border-radius));\n      }\n    }\n    > textarea:disabled ~ label::after {\n      background-color: var(--control-disabled-bg);\n    }\n\n    > .form-control-plaintext {\n      ~ label {\n        border-width: var(--control-border-width) 0; // Required to properly position label text - as explained above\n      }\n    }\n\n    > :disabled ~ label,\n    > .form-control:disabled ~ label { // Required for `.form-control`s because of specificity\n      color: var(--form-floating-label-disabled-color);\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"sass:string\";\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"form-variables\" as *;\n\n$input-group-addon-tokens: () !default;\n\n// scss-docs-start input-group-addon-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$input-group-addon-tokens: defaults(\n  (\n    --input-group-addon-padding-y: var(--btn-input-padding-y),\n    --input-group-addon-padding-x: var(--btn-input-padding-x),\n    --input-group-addon-font-size: var(--btn-input-font-size),\n    --input-group-addon-line-height: var(--btn-input-line-height),\n    --input-group-addon-color: var(--fg-body),\n    --input-group-addon-bg: var(--bg-2),\n    --input-group-addon-border-color: var(--border-color),\n  ),\n  $input-group-addon-tokens\n);\n// scss-docs-end input-group-addon-tokens\n\n// scss-docs-start input-group-sizes\n$input-group-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$input-group-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $input-group-sizes\n);\n// scss-docs-end input-group-sizes\n\n@layer components {\n  .input-group {\n    @include tokens($input-group-addon-tokens);\n\n    position: relative;\n    display: flex;\n    flex-wrap: wrap; // For form validation feedback\n    align-items: stretch;\n    width: 100%;\n\n    > .form-control,\n    > .form-floating {\n      position: relative; // For focus state's z-index\n      flex: 1 1 auto;\n      width: 1%;\n      min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size\n    }\n\n    // Bring the \"active\" form control to the top of surrounding elements\n    > .form-control:focus,\n    > .form-floating:focus-within {\n      z-index: 5;\n    }\n\n    // Ensure buttons are always above inputs for more visually pleasing borders.\n    // This isn't needed for `.input-group-text` since it shares the same border-color\n    // as our inputs.\n    > .input-group-btn {\n      position: relative;\n      z-index: 2;\n\n      &:focus {\n        z-index: 5;\n      }\n    }\n  }\n\n  // Textual addons\n  //\n  // Serves as a catch-all element for any text or radio/checkbox input you wish\n  // to prepend or append to an input.\n\n  .input-group-text {\n    display: flex;\n    align-items: center;\n    padding: var(--input-group-addon-padding-y) var(--input-group-addon-padding-x);\n    font-size: var(--input-group-addon-font-size); // Match inputs\n    // font-weight: $input-group-addon-font-weight;\n    line-height: var(--input-group-addon-line-height);\n    color: var(--input-group-addon-color);\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--input-group-addon-bg);\n    border: var(--border-width) solid var(--input-group-addon-border-color);\n    @include border-radius(var(--btn-input-border-radius));\n  }\n\n  // Sizing\n  //\n  // Remix the default form control sizing classes into new ones for easier\n  // manipulation.\n\n  @each $size, $_ in $input-group-sizes {\n    .input-group-#{$size} {\n      > .form-control,\n      > .input-group-text,\n      > .btn {\n        min-height: var(--btn-input-#{$size}-min-height);\n        padding: var(--btn-input-#{$size}-padding-y) var(--btn-input-#{$size}-padding-x);\n        font-size: var(--btn-input-#{$size}-font-size);\n        @include border-radius(var(--btn-input-#{$size}-border-radius));\n      }\n    }\n  }\n\n  // Rounded corners\n  //\n  // These rulesets must come after the sizing ones to properly override sm and lg\n  // border-radius values when extending. They're more specific than we'd like\n  // with the `.input-group >` part, but without it, we cannot override the sizing.\n\n  // stylelint-disable-next-line no-duplicate-selectors\n  .input-group {\n\n    $validation-messages: \"\";\n    &:not(.has-validation) {\n      > :not(:last-child):not(.menu-toggle-split):not(.menu):not(.form-floating),\n      > .menu-toggle-split:nth-last-child(n + 3),\n      > .form-floating:not(:last-child) > .form-control,\n      > .form-floating:not(:last-child) > .form-select {\n        @include border-end-radius(0);\n      }\n    }\n\n    &.has-validation {\n      > :nth-last-child(n + 3):not(.menu-toggle-split):not(.menu):not(.form-floating),\n      > .menu-toggle-split:nth-last-child(n + 4),\n      > .form-floating:nth-last-child(n + 3) > .form-control,\n      > .form-floating:nth-last-child(n + 3) > .form-select {\n        @include border-end-radius(0);\n      }\n    }\n\n    > :not(:first-child):not(.menu)#{$validation-messages} {\n      margin-inline-start: calc(-1 * var(--border-width));\n      @include border-start-radius(0);\n    }\n\n    > .form-floating:not(:first-child) > .form-control,\n    > .form-floating:not(:first-child) > .form-select {\n      @include border-start-radius(0);\n    }\n    @each $state in map.keys($form-validation-states) {\n      $validation-messages: $validation-messages + \":not(.\" + string.unquote($state) + \"-tooltip)\" + \":not(.\" + string.unquote($state) + \"-feedback)\";\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$strength-tokens: () !default;\n\n// scss-docs-start strength-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$strength-tokens: defaults(\n  (\n    --strength-height: .375rem,\n    --strength-gap: .25rem,\n    --strength-margin-top: .25rem,\n    --strength-border-radius: var(--border-radius-pill),\n    --strength-bg: var(--bg-2),\n    --strength-color: var(--bg-2),\n    --strength-weak-color: var(--danger-bg),\n    --strength-fair-color: var(--warning-bg),\n    --strength-good-color: var(--info-bg),\n    --strength-strong-color: var(--success-bg),\n  ),\n  $strength-tokens\n);\n// scss-docs-end strength-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start strength-levels\n$strength-levels: weak, fair, good, strong !default;\n// scss-docs-end strength-levels\n\n$strength-transition: background-color .2s ease-in-out, width .3s ease-in-out !default;\n\n@layer forms {\n  // Strength meter container\n  .strength {\n    @include tokens($strength-tokens);\n\n    display: flex;\n    gap: var(--strength-gap);\n    width: 100%;\n    margin-top: var(--strength-margin-top);\n  }\n\n  // Individual strength segments\n  .strength-segment {\n    flex: 1;\n    height: var(--strength-height);\n    background-color: var(--strength-bg);\n    @include border-radius(var(--strength-border-radius));\n    @include transition($strength-transition);\n\n    // Filled state\n    &.active {\n      background-color: var(--strength-color);\n    }\n  }\n\n  @each $level in $strength-levels {\n    .strength[data-bs-strength=\"#{$level}\"] {\n      --strength-color: var(--strength-#{$level}-color);\n    }\n  }\n  // Optional text feedback\n  .strength-text {\n    display: block;\n    margin-top: var(--strength-margin-top);\n    font-size: var(--font-size-xs);\n    color: var(--strength-color, var(--fg-3));\n    @include transition(color .2s ease-in-out);\n\n    // Hide when empty\n    &:empty {\n      display: none;\n    }\n  }\n\n  // Alternative: Single bar variant (like a progress bar)\n  .strength-bar {\n    @include tokens($strength-tokens);\n\n    --strength-color: transparent;\n    --strength-width: 0%;\n\n    width: 100%;\n    height: var(--strength-height);\n    margin-top: var(--strength-margin-top);\n    overflow: hidden;\n    background-color: var(--strength-bg);\n    @include border-radius(var(--strength-border-radius));\n\n    &::after {\n      display: block;\n      width: var(--strength-width);\n      height: 100%;\n      content: \"\";\n      background-color: var(--strength-color);\n      @include border-radius(var(--strength-border-radius));\n      @include transition($strength-transition);\n    }\n\n    @each $level in $strength-levels {\n      &[data-bs-strength=\"#{$level}\"] {\n        --strength-color: var(--strength-#{$level}-color);\n        --strength-width: #{list.index($strength-levels, $level) * 25%};\n      }\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$otp-tokens: () !default;\n\n// scss-docs-start otp-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$otp-tokens: defaults(\n  (\n    --otp-size: var(--btn-input-lg-min-height),\n    --otp-font-size: var(--btn-input-font-size),\n    --otp-gap: .5rem,\n  ),\n  $otp-tokens\n);\n// scss-docs-end otp-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start otp-sizes\n$otp-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$otp-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $otp-sizes\n);\n// scss-docs-end otp-sizes\n\n@layer components {\n  .otp {\n    @include tokens($otp-tokens);\n\n    display: inline-flex;\n    gap: var(--otp-gap);\n\n    .form-control {\n      width: var(--otp-size);\n      min-height: var(--otp-size);\n      padding: 0;\n      font-size: var(--otp-font-size);\n      font-weight: 500;\n      line-height: 1;\n      text-align: center;\n      @include border-radius(var(--otp-border-radius, var(--btn-input-border-radius)));\n\n      // Remove default number spinners\n      &::-webkit-outer-spin-button,\n      &::-webkit-inner-spin-button {\n        margin: 0;\n        appearance: none;\n      }\n\n      &[type=\"number\"] {\n        appearance: textfield;\n      }\n\n      &:focus,\n      &:focus-visible {\n        z-index: 1;\n      }\n    }\n\n    &.is-valid .form-control,\n    .was-validated &:valid .form-control {\n      border-color: var(--form-valid-border-color);\n\n      &:focus {\n        --focus-ring-color: rgba(var(--success-rgb), .25);\n        border-color: var(--form-valid-border-color);\n      }\n    }\n\n    &.is-invalid .form-control,\n    .was-validated &:invalid .form-control {\n      border-color: var(--form-invalid-border-color);\n\n      &:focus {\n        --focus-ring-color: rgba(var(--danger-rgb), .25);\n        border-color: var(--form-invalid-border-color);\n      }\n    }\n  }\n\n  // When used with .input-group, disable the gap and prevent inputs from stretching\n  .otp.input-group {\n    gap: 0;\n    width: auto; // Override input-group's width: 100%\n\n    .form-control {\n      flex: 0 0 auto; // Don't grow or shrink, use fixed width\n    }\n  }\n\n  .otp-separator {\n    display: flex;\n    align-items: center;\n    padding-inline: var(--otp-gap);\n    font-size: var(--otp-font-size);\n    color: var(--fg-4);\n    user-select: none;\n  }\n\n  @each $size, $_ in $otp-sizes {\n    .otp-#{$size} {\n      --otp-size: var(--btn-input-#{$size}-min-height);\n      --otp-font-size: var(--btn-input-#{$size}-font-size);\n      --otp-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n$form-adorn-tokens: () !default;\n\n// scss-docs-start form-adorn-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-adorn-tokens: defaults(\n  (\n    --form-adorn-gap: .375rem,\n    --form-adorn-icon-size: 1rem,\n    --form-adorn-icon-color: var(--fg-2),\n  ),\n  $form-adorn-tokens\n);\n// scss-docs-end form-adorn-tokens\n\n@layer forms {\n  .form-adorn {\n    @include tokens($form-adorn-tokens);\n\n    gap: var(--form-adorn-gap);\n    align-items: center;\n\n    // Prevent default `.form-control` focus\n    &:focus-visible {\n      outline: 0;\n    }\n\n    &:focus-within {\n      --focus-ring-offset: -1px;\n      border-color: var(--focus-ring-color);\n      @include focus-ring(true);\n    }\n\n    // Ghost input fills remaining space\n    > .form-ghost {\n      flex: 1;\n      min-width: 0; // Prevent text overflow\n    }\n\n    &.form-adorn-end > .form-ghost {\n      order: -1;\n    }\n  }\n\n  .form-adorn-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n\n    > svg {\n      width: var(--form-adorn-icon-size);\n      height: var(--form-adorn-icon-size);\n    }\n  }\n\n  .form-adorn-text {\n    flex-shrink: 0;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n    user-select: none;\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n$chip-input-tokens: () !default;\n\n// scss-docs-start chip-input-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$chip-input-tokens: defaults(\n  (\n    --chip-input-padding-y: .75rem,\n    --chip-input-padding-x: .75rem,\n    --chip-input-gap: .375rem,\n    --chip-input-ghost-min-width: 5rem,\n    --control-fg: var(--btn-input-fg),\n    --control-bg: var(--btn-input-bg),\n    --control-border-width: var(--border-width),\n    --control-border-color: var(--border-color),\n    --control-border-radius: var(--border-radius),\n  ),\n  $chip-input-tokens\n);\n// scss-docs-end chip-input-tokens\n\n@layer forms {\n  .chip-input {\n    @include tokens($chip-input-tokens);\n\n    // Flexbox wrapping layout\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--chip-input-gap);\n    align-items: center;\n    padding: var(--chip-input-padding-y) var(--chip-input-padding-x);\n\n    color: var(--control-fg);\n    background-color: var(--control-bg);\n    border: var(--control-border-width) solid var(--control-border-color);\n    @include border-radius(var(--control-border-radius), 0);\n\n    // Focus state when ghost input is focused\n    &:focus-within {\n      --focus-ring-offset: -1px;\n      border-color: var(--focus-ring-color);\n      @include focus-ring(true);\n    }\n\n    // Ghost input fills remaining space\n    > .form-ghost {\n      flex: 1 1 0;\n      min-width: var(--chip-input-ghost-min-width);\n      min-height: 1.75rem;\n    }\n\n    // Disabled state\n    &.disabled,\n    &:has(.form-ghost:disabled) {\n      background-color: var(--bg-2);\n      opacity: 1;\n\n      > .chip {\n        opacity: var(--control-disabled-opacity);\n\n        .chip-dismiss {\n          pointer-events: none;\n        }\n      }\n\n      > .form-ghost {\n        cursor: not-allowed;\n      }\n    }\n  }\n\n  // Theme cascade: .chip-input.theme-* passes theme to child chips\n  // Chips inherit theme variables from parent\n  // @each $color-name, $theme-props in $theme-map {\n  //   .chip-input.theme-#{$color-name} > .chip {\n  //     // Subtle default state\n  //     --chip-color: var(--theme-text);\n  //     --chip-bg: var(--theme-bg-subtle);\n\n  //     // Selected/active solid state\n  //     --chip-selected-color: var(--theme-contrast);\n  //     --chip-selected-bg: var(--theme-bg);\n  //     --chip-selected-border-color: var(--theme-bg);\n  //   }\n  // }\n\n  // // Sizing variants\n  // .chip-input-sm {\n  //   --control-min-height: #{$control-min-height-sm};\n  //   --control-padding-y: #{$control-padding-y-sm};\n  //   --control-padding-x: #{$control-padding-x-sm};\n  //   --control-font-size: #{$control-font-size-sm};\n  //   --control-line-height: #{$control-line-height-sm};\n  //   --control-border-radius: #{$control-border-radius-sm};\n  //   --chip-input-gap: .25rem;\n  //   --chip-input-chip-font-size: .8125em;\n  // }\n\n  // .chip-input-lg {\n  //   --control-min-height: #{$control-min-height-lg};\n  //   --control-padding-y: #{$control-padding-y-lg};\n  //   --control-padding-x: #{$control-padding-x-lg};\n  //   --control-font-size: #{$control-font-size-lg};\n  //   --control-line-height: #{$control-line-height-lg};\n  //   --control-border-radius: #{$control-border-radius-lg};\n  //   --chip-input-gap: .5rem;\n  //   --chip-input-chip-font-size: .9375em;\n  // }\n}\n","@use \"../mixins/transition\" as *;\n\n@layer components {\n  .combobox-toggle {\n    display: inline-flex;\n    gap: .5rem;\n    align-items: center;\n    justify-content: space-between;\n    width: 100%;\n    padding-inline-end: var(--control-padding-x);\n    text-align: start;\n    cursor: pointer;\n\n    &.show {\n      background-color: var(--bg-1);\n    }\n\n    &:disabled,\n    &.disabled {\n      cursor: not-allowed;\n      opacity: .65;\n    }\n  }\n\n  .combobox-value {\n    display: flex;\n    flex: 1;\n    gap: .5rem;\n    align-items: center;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n\n  .combobox-placeholder {\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n\n  .combobox-caret {\n    flex-shrink: 0;\n    @include transition(transform .2s ease-in-out);\n\n    .show > & {\n      transform: rotate(180deg);\n    }\n  }\n\n  .combobox-toggle + .menu {\n    --menu-max-height: 300px;\n    --menu-overflow-y: auto;\n  }\n\n  .combobox-search {\n    position: sticky;\n    top: 0;\n    z-index: 1;\n    padding: var(--menu-padding-x, .25rem);\n    background-color: var(--menu-bg, var(--bg-body));\n  }\n\n  .combobox-search-input {\n    width: 100%;\n  }\n\n  .combobox-no-results {\n    padding: 1rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-3);\n    text-align: center;\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/reset-text\" as *;\n@use \"mixins/tokens\" as *;\n\n$tooltip-tokens: () !default;\n\n// scss-docs-start tooltip-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$tooltip-tokens: defaults(\n  (\n    --tooltip-zindex: #{$zindex-tooltip},\n    --tooltip-max-width: 200px,\n    --tooltip-padding-x: #{$spacer * .75},\n    --tooltip-padding-y: #{$spacer * .375},\n    --tooltip-font-size: var(--font-size-sm),\n    --tooltip-color: var(--bg-body),\n    --tooltip-bg: var(--fg-body),\n    --tooltip-border-radius: var(--border-radius),\n    --tooltip-opacity: .95,\n    --tooltip-arrow-width: .8rem,\n    --tooltip-arrow-height: .4rem,\n  ),\n  $tooltip-tokens\n);\n// scss-docs-end tooltip-tokens\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y:     var(--tooltip-padding-y) !default;\n$form-feedback-tooltip-padding-x:     var(--tooltip-padding-x) !default;\n$form-feedback-tooltip-font-size:     var(--tooltip-font-size) !default;\n$form-feedback-tooltip-line-height:   null !default;\n$form-feedback-tooltip-opacity:       var(--tooltip-opacity) !default;\n$form-feedback-tooltip-border-radius: var(--tooltip-border-radius) !default;\n// scss-docs-end tooltip-feedback-variables\n\n@layer components {\n  .tooltip {\n    @include tokens($tooltip-tokens);\n\n    z-index: var(--tooltip-zindex);\n    display: block;\n    // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n    // So reset our font and text properties to avoid inheriting weird values.\n    @include reset-text();\n    font-size: var(--tooltip-font-size);\n    // Allow breaking very long words so they don't overflow the tooltip's bounds\n    word-wrap: break-word;\n    opacity: 0;\n\n    &.show { opacity: var(--tooltip-opacity); }\n\n    .tooltip-arrow {\n      display: block;\n      width: var(--tooltip-arrow-width);\n      height: var(--tooltip-arrow-height);\n\n      &::before {\n        position: absolute;\n        content: \"\";\n        border-color: transparent;\n        border-style: solid;\n      }\n    }\n  }\n\n  .bs-tooltip-top .tooltip-arrow {\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n\n    &::before {\n      top: -1px;\n      border-width: var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * .5) 0;\n      border-block-start-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-end .tooltip-arrow {\n    left: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n\n    &::before {\n      right: -1px;\n      border-width: calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * .5) 0;\n      border-inline-end-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-bottom .tooltip-arrow {\n    top: calc(-1 * var(--tooltip-arrow-height));\n\n    &::before {\n      bottom: -1px;\n      border-width: 0 calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height);\n      border-block-end-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-start .tooltip-arrow {\n    right: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n\n    &::before {\n      left: -1px;\n      border-width: calc(var(--tooltip-arrow-width) * .5) 0 calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height);\n      border-inline-start-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-auto {\n    &[data-bs-placement^=\"top\"] {\n      @extend .bs-tooltip-top;\n    }\n    &[data-bs-placement^=\"right\"] {\n      @extend .bs-tooltip-end;\n    }\n    &[data-bs-placement^=\"bottom\"] {\n      @extend .bs-tooltip-bottom;\n    }\n    &[data-bs-placement^=\"left\"] {\n      @extend .bs-tooltip-start;\n    }\n  }\n\n  // Wrapper for the tooltip content\n  .tooltip-inner {\n    max-width: var(--tooltip-max-width);\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    color: var(--tooltip-color);\n    text-align: center;\n    background-color: var(--tooltip-bg);\n    @include border-radius(var(--tooltip-border-radius));\n  }\n}\n","@mixin reset-text {\n  font-family: var(--body-font-family);\n  // We deliberately do NOT reset font-size or overflow-wrap / word-wrap.\n  font-style: normal;\n  font-weight: var(--body-font-weight);\n  line-height: var(--body-line-height);\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  white-space: normal;\n  word-spacing: normal;\n  line-break: auto;\n}\n","@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"form-variables\" as *;\n@use \"../tooltip\" as *; // bring in tooltip variables\n\n// Form validation\n//\n// Provide feedback to users when form field values are valid or invalid. Works\n// primarily for client-side validation via scoped `:invalid` and `:valid`\n// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for\n// server-side validation.\n\n// This mixin uses an `if()` technique to be compatible with Dart Sass\n// See https://github.com/sass/sass/issues/1873#issuecomment-152293725 for more details\n\n// scss-docs-start form-validation-mixins\n@mixin form-validation-state-selector($state) {\n  @if ($state == \"valid\" or $state == \"invalid\") {\n    .was-validated #{if(sass(&): \"&\"; else: \"\")}:#{$state},\n    #{if(sass(&): \"&\"; else: \"\")}.is-#{$state} {\n      @content;\n    }\n  } @else {\n    #{if(sass(&): \"&\"; else: \"\")}.is-#{$state} {\n      @content;\n    }\n  }\n}\n\n@mixin form-validation-state(\n  $state,\n  $color,\n  $icon,\n  $tooltip-color: color-contrast($color),\n  $tooltip-bg-color: rgba($color, $form-feedback-tooltip-opacity),\n  $focus-ring-color: null, // mdo-do: fix\n  $border-color: $color\n) {\n  .#{$state}-feedback {\n    display: none;\n    width: 100%;\n    margin-top: $form-feedback-margin-top;\n    font-size: $form-feedback-font-size;\n    font-style: $form-feedback-font-style;\n    color: $color;\n  }\n\n  .#{$state}-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%; // Contain to parent when possible\n    padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\n    margin-top: .1rem;\n    font-size: $form-feedback-tooltip-font-size;\n    line-height: $form-feedback-tooltip-line-height;\n    color: $tooltip-color;\n    background-color: $tooltip-bg-color;\n    @include border-radius($form-feedback-tooltip-border-radius);\n  }\n\n  @include form-validation-state-selector($state) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip {\n      display: block;\n    }\n  }\n\n  .form-control {\n    @include form-validation-state-selector($state) {\n      border-color: $border-color;\n\n      @if $enable-validation-icons {\n        padding-inline-end: calc(var(--control-padding-x) * 3.5);\n        background-image: escape-svg($icon);\n        background-repeat: no-repeat;\n        background-position: right var(--control-padding-x) center;\n        background-size: 1rem;\n      }\n\n      &:focus-visible {\n        @include focus-ring(true, $color: $focus-ring-color);\n        border-color: $border-color;\n      }\n    }\n\n    &::-webkit-contacts-auto-fill-button {\n      @if $enable-validation-icons {\n        // margin-inline-end: calc(var(--control-padding-x) * 3);\n      }\n    }\n  }\n\n  // stylelint-disable-next-line selector-no-qualifying-type\n  textarea.form-control {\n    @include form-validation-state-selector($state) {\n      @if $enable-validation-icons {\n        // padding-inline-end: $input-height-inner;\n        background-position: right var(--control-padding-x) top var(--control-padding-x);\n        // background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\n      }\n    }\n  }\n\n  .form-control-color {\n    @include form-validation-state-selector($state) {\n      @if $enable-validation-icons {\n        // width: add($form-color-width, $input-height-inner);\n      }\n    }\n  }\n\n  .form-check-input {\n    @include form-validation-state-selector($state) {\n      border-color: $border-color;\n\n      &:checked {\n        background-color: $color;\n      }\n\n      &:focus {\n        // box-shadow: $focus-box-shadow;\n      }\n\n      ~ .form-check-label {\n        color: $color;\n      }\n    }\n  }\n  .form-check-inline .form-check-input {\n    ~ .#{$state}-feedback {\n      margin-inline-start: .5em;\n    }\n  }\n\n  .input-group {\n    > .form-control:not(:focus),\n    > .form-select:not(:focus),\n    > .form-floating:not(:focus-within) {\n      @include form-validation-state-selector($state) {\n        @if $state == \"valid\" {\n          z-index: 3;\n        } @else if $state == \"invalid\" {\n          z-index: 4;\n        }\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-mixins\n\n@layer components {\n  // scss-docs-start form-validation-states-loop\n  @each $state, $data in $form-validation-states {\n    @include form-validation-state($state, $data...);\n  }\n  // scss-docs-end form-validation-states-loop\n}\n","// scss-docs-start form-feedback-variables\n$form-feedback-margin-top:          .5rem !default;\n$form-feedback-font-size:           var(--font-size-xs) !default;\n$form-feedback-font-style:          null !default;\n$form-feedback-valid-color:         var(--success-text) !default;\n$form-feedback-invalid-color:       var(--danger-text) !default;\n\n$form-feedback-icon-valid-color:    #00a748 !default;\n$form-feedback-icon-valid:          url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1'/></svg>\") !default;\n$form-feedback-icon-invalid-color:  #dd0d37 !default;\n$form-feedback-icon-invalid:        url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-colors\n$form-valid-color:                  $form-feedback-valid-color !default;\n$form-valid-border-color:           $form-feedback-valid-color !default;\n$form-invalid-color:                $form-feedback-invalid-color !default;\n$form-invalid-border-color:         $form-feedback-invalid-color !default;\n// scss-docs-end form-validation-colors\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n  \"valid\": (\n    \"color\": var(--form-valid-color),\n    \"icon\": $form-feedback-icon-valid,\n    \"tooltip-color\": var(--success-contrast),\n    \"tooltip-bg-color\": var(--success-bg),\n    \"focus-ring-color\": var(--success-focus-ring),\n    \"border-color\": var(--success-border),\n  ),\n  \"invalid\": (\n    \"color\": var(--form-invalid-color),\n    \"icon\": $form-feedback-icon-invalid,\n    \"tooltip-color\": var(--danger-contrast),\n    \"tooltip-bg-color\": var(--danger-bg),\n    \"focus-ring-color\": var(--danger-focus-ring),\n    \"border-color\": var(--danger-border),\n  )\n) !default;\n// scss-docs-end form-validation-states\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n@use \"sass:string\";\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n$button-tokens: () !default;\n\n// scss-docs-start btn-tokens\n$button-tokens: defaults(\n  (\n    --btn-min-height: var(--btn-input-min-height),\n    --btn-padding-x: var(--btn-input-padding-x),\n    --btn-padding-y: var(--btn-input-padding-y),\n    --btn-font-size: var(--btn-input-font-size),\n    --btn-font-weight: var(--btn-input-font-weight),\n    --btn-line-height: var(--btn-input-line-height),\n    --btn-color: var(--fg-body),\n    --btn-white-space: nowrap,\n    --btn-border-width: var(--border-width),\n    --btn-border-color: transparent,\n    --btn-border-radius: var(--border-radius),\n    --btn-hover-border-color: transparent,\n    --btn-disabled-opacity: .65,\n    --btn-transition-timing: .15s ease-in-out,\n    --btn-transition-property: \"color, background-color, border-color, box-shadow\",\n    --btn-transition: var(--btn-transition-property) var(--btn-transition-timing),\n  ),\n  $button-tokens\n);\n// scss-docs-end btn-tokens\n\n$button-link-tokens: () !default;\n\n// scss-docs-start button-link-tokens\n$button-link-tokens: defaults(\n  (\n    --btn-font-weight: var(--font-weight-normal),\n    --btn-color: var(--link-color),\n    --btn-bg: transparent,\n    --btn-border-color: transparent,\n    --btn-hover-color: var(--link-hover-color),\n    --btn-hover-bg: transparent,\n    --btn-hover-border-color: transparent,\n    --btn-active-color: var(--link-hover-color),\n    --btn-active-bg: transparent,\n    --btn-active-border-color: transparent,\n    --btn-disabled-color: var(--fg-3),\n    --btn-disabled-border-color: transparent,\n  ),\n  $button-link-tokens\n);\n// scss-docs-end button-link-tokens\n\n$button-styled-tokens: () !default;\n\n// scss-docs-start button-styled-tokens\n$button-styled-tokens: defaults(\n  (\n    --btn-gradient-start: rgb(255 255 255 / 12.5%),\n    --btn-gradient-end: rgb(0 0 0 / 7.5%) ,\n    --btn-border-mix-color: #000,\n    --btn-border-mix-amount: 10%,\n    --btn-border-hover-mix-amount: 12.5%,\n    --btn-border-active-mix-amount: 20%,\n    --btn-shadow: \"0 1px 2px rgb(0 0 0 / 15%), inset 0 1px 0 rgb(255 255 255 / 10%)\",\n    --btn-active-shadow: inset 0 2px 4px rgba(0, 0, 0, .15) ,\n  ),\n  $button-styled-tokens\n);\n// scss-docs-end button-styled-tokens\n\n// scss-docs-start button-sizes\n$button-sizes: () !default;\n$button-sizes: defaults(\n  (\"xs\", \"sm\", \"lg\"),\n  $button-sizes\n);\n// scss-docs-end button-sizes\n\n$button-variants: () !default;\n\n// scss-docs-start btn-variants\n$button-variants: defaults(\n  (\n    \"solid\": (\n      \"base\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      ),\n      \"hover\": (\n        \"bg\": \"bg\",\n        \"border-color\": \"bg\",\n        \"color\": \"contrast\"\n      ),\n      \"active\": (\n        \"bg\": \"bg\",\n        \"border-color\": \"bg\",\n        \"color\": \"contrast\"\n      )\n    ),\n    \"outline\": (\n      \"base\": (\n        \"bg\": \"transparent\",\n        \"color\": \"text\",\n        \"border-color\": \"border\"\n      ),\n      \"hover\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      ),\n      \"active\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      )\n    ),\n    \"subtle\": (\n      \"base\": (\n        \"bg\": \"bg-subtle\",\n        \"color\": \"text\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"bg\": (\"bg-muted\", \"bg-subtle\"),\n        \"color\": \"text-emphasis\"\n      ),\n      \"active\": (\n        \"bg\": \"bg-subtle\",\n        \"color\": \"text-emphasis\"\n      )\n    ),\n    \"text\": (\n      \"base\": (\n        \"color\": \"text\",\n        \"bg\": \"transparent\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"color\": \"text\",\n        \"bg\": \"bg-subtle\"\n      ),\n      \"active\": (\n        \"color\": \"text\",\n        \"bg\": \"bg-subtle\"\n      )\n    )\n  ),\n  $button-variants\n);\n// scss-docs-end btn-variants\n// stylelint-enable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n//\n// Base styles\n//\n\n// scss-docs-start btn-variant-selectors\n$btn-variant-selectors: (string.unquote(\".btn\"), string.unquote(\".btn-link\"), string.unquote(\".btn-icon\")) !default;\n@each $variant, $config in $button-variants {\n  $btn-variant-selectors: list.append($btn-variant-selectors, string.unquote(\".btn-#{$variant}\"), comma);\n}\n// scss-docs-end btn-variant-selectors\n\n@layer components {\n  #{$btn-variant-selectors} {\n    @include tokens($button-tokens);\n\n    display: inline-flex;\n    gap: var(--btn-gap, .25rem);\n    align-items: center;\n    justify-content: center;\n    min-height: var(--btn-min-height);\n    padding: var(--btn-padding-y) var(--btn-padding-x);\n    // font-family: var(--btn-font-family);\n    font-size: var(--btn-font-size);\n    font-weight: var(--btn-font-weight);\n    line-height: var(--btn-line-height);\n    color: var(--btn-color);\n    text-decoration: none;\n    white-space: var(--btn-white-space);\n    vertical-align: middle;\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    cursor: if(sass($enable-button-pointers): pointer; else: null);\n    user-select: none;\n    background-color: var(--btn-bg, var(--bg-2));\n    border: var(--btn-border-width) solid var(--btn-border-color);\n    @include border-radius(var(--btn-border-radius));\n    @include transition(var(--btn-transition));\n\n    &:hover {\n      color: var(--btn-hover-color);\n      background-color: var(--btn-hover-bg, var(--bg-3));\n      border-color: var(--btn-hover-border-color);\n    }\n\n    &:focus-visible {\n      @include focus-ring(true);\n      --focus-ring-offset: 1px;\n    }\n\n    &.active,\n    &.show {\n      color: var(--btn-active-color);\n      background-color: var(--btn-active-bg, var(--bg-3));\n      border-color: var(--btn-active-border-color);\n\n      &:focus-visible {\n        @include focus-ring(true);\n      }\n    }\n\n    &:disabled,\n    &.disabled,\n    fieldset:disabled & {\n      color: var(--btn-disabled-color);\n      pointer-events: none;\n      background-color: var(--btn-disabled-bg, var(--bg-1));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-disabled-border-color);\n      opacity: var(--btn-disabled-opacity);\n    }\n  }\n\n  // Main button style generator mixin\n  // Generate button variant classes (e.g., .btn-solid, .btn-outline, etc.)\n  // scss-docs-start btn-variant-mixin\n  @each $variant, $config in $button-variants {\n    .btn-#{$variant} {\n      @each $property, $value in map.get($button-variants, $variant, \"base\") {\n        @if $value == \"transparent\" {\n          --btn-#{$property}: transparent;\n        } @else {\n          --btn-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      @each $property, $value in map.get($button-variants, $variant, \"active\") {\n        @if $value == \"transparent\" {\n          --btn-active-#{$property}: transparent;\n        } @else if $value == \"bg-subtle\" {\n          --btn-active-#{$property}: var(--theme-#{$value});\n        } @else {\n          --btn-active-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .9) calc(c * 1.15) h);\n        }\n      }\n      @each $property, $value in map.get($button-variants, $variant, \"base\") {\n        @if $value == \"transparent\" {\n          --btn-disabled-#{$property}: transparent;\n        } @else {\n          --btn-disabled-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      &:hover {\n        @each $property, $value in map.get($button-variants, $variant, \"hover\") {\n          @if $value == \"transparent\" {\n            --btn-hover-#{$property}: transparent;\n          } @else if meta.type-of($value) == \"list\" {\n            $first-value: list.nth($value, 1);\n            $second-value: list.nth($value, 2);\n            --btn-hover-#{$property}: color-mix(in oklch, var(--theme-#{$first-value}) 50%, var(--theme-#{$second-value}));\n          } @else if $value == \"bg-subtle\" {\n            --btn-hover-#{$property}: var(--theme-#{$value});\n          } @else {\n            --btn-hover-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .95) calc(c * 1.1) h);\n          }\n        }\n      }\n\n      &:focus-visible {\n        outline-color: var(--theme-focus-ring);\n      }\n\n      &:active,\n      &.active,\n      &.btn-check:has(input:checked) {\n        @each $property, $value in map.get($button-variants, $variant, \"active\") {\n          @if $value == \"transparent\" {\n            --btn-active-#{$property}: transparent;\n          } @else if $value == \"bg-subtle\" {\n            --btn-active-#{$property}: var(--theme-#{$value});\n          } @else {\n            --btn-active-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .9) calc(c * 1.15) h);\n          }\n        }\n      }\n\n      // Disabled state for toggle buttons\n      &:disabled,\n      &.disabled,\n      &.btn-check:has(input:disabled) {\n        @each $property, $value in map.get($button-variants, $variant, \"base\") {\n          @if $value == \"transparent\" {\n            --btn-disabled-#{$property}: transparent;\n          } @else {\n            --btn-disabled-#{$property}: var(--theme-#{$value});\n          }\n        }\n      }\n    }\n  }\n  // scss-docs-end btn-variant-mixin\n\n  //\n  // Link buttons\n  //\n\n  // Make a button look and behave like a link\n  .btn-link {\n    @include tokens($button-link-tokens);\n\n    color: var(--theme-text, var(--btn-color));\n    text-decoration: var(--link-decoration);\n\n    @if $enable-gradients {\n      background-image: none;\n    }\n\n    &:focus-visible {\n      color: var(--theme-text, var(--btn-color));\n    }\n\n    &:hover {\n      color: var(--theme-text-emphasis, var(--btn-hover-color));\n    }\n\n    // No need for an active state here\n  }\n\n  //\n  // Button Sizes\n  //\n\n  // Generate button size classes from the $button-sizes map\n  // Skip \"md\" as it's the default size for .btn\n\n  // scss-docs-start btn-sizes-loop\n  @each $size, $_ in $button-sizes {\n    .btn-#{$size},\n    .btn-group-#{$size} > [class*=\"btn-\"] {\n      --btn-min-height: var(--btn-input-#{$size}-min-height);\n      --btn-padding-y: var(--btn-input-#{$size}-padding-y);\n      --btn-padding-x: var(--btn-input-#{$size}-padding-x);\n      --btn-font-size: var(--btn-input-#{$size}-font-size);\n      --btn-line-height: var(--btn-input-#{$size}-line-height);\n      --btn-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n  // scss-docs-end btn-sizes-loop\n\n  .btn-icon {\n    align-items: center;\n    justify-content: center;\n    aspect-ratio: 1;\n    padding: 0;\n  }\n\n  //\n  // Toggle buttons (.btn-check)\n  //\n  // Checkbox and radio inputs that look like buttons. Add .btn-check to a\n  // label with button classes, with the input nested inside.\n  //\n  // Example: <label class=\"btn-check btn-solid theme-primary\"><input type=\"checkbox\">Toggle</label>\n\n  .btn-check {\n    > input {\n      position: absolute;\n      clip: rect(0, 0, 0, 0);\n      pointer-events: none;\n    }\n\n    &:has(input:checked) {\n      color: var(--btn-active-color);\n      background-color: var(--btn-active-bg, var(--bg-3));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-active-border-color);\n      @include box-shadow(var(--btn-active-shadow));\n    }\n\n    &:has(input:focus-visible) {\n      @include focus-ring(true);\n      --focus-ring-offset: 1px;\n    }\n\n    &:has(input:disabled) {\n      color: var(--btn-disabled-color);\n      pointer-events: none;\n      background-color: var(--btn-disabled-bg, var(--bg-1));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-disabled-border-color);\n      opacity: var(--btn-disabled-opacity);\n      @include box-shadow(none);\n    }\n  }\n\n  //\n  // Styled buttons\n  //\n  // Add visual depth with gradients and shadows. Customize via CSS variables.\n\n  .btn-styled {\n    @include tokens($button-styled-tokens);\n\n    background-image:\n      linear-gradient(\n        to bottom,\n        var(--btn-gradient-start),\n        var(--btn-gradient-end)\n      );\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-mix-amount));\n    box-shadow: var(--btn-shadow);\n\n    &:hover {\n      background-image:\n        linear-gradient(\n          to bottom,\n          var(--btn-gradient-start),\n          var(--btn-gradient-end)\n        );\n      border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-hover-mix-amount));\n    }\n\n    &:active,\n    &.active {\n      background-image: none;\n      border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-active-mix-amount));\n      box-shadow: var(--btn-active-shadow);\n    }\n\n    &:disabled,\n    &.disabled {\n      background-image: none;\n      box-shadow: none;\n    }\n  }\n}\n","@use \"../mixins/border-radius\" as *;\n\n@layer components {\n  // Make the div behave like a button\n  .btn-group,\n  .btn-group-vertical {\n    position: relative;\n    display: inline-flex;\n    vertical-align: middle; // match .btn alignment given font-size hack above\n\n    > [class*=\"btn-\"] {\n      position: relative;\n      flex: 1 1 auto;\n\n      &:hover {\n        z-index: 1;\n      }\n    }\n\n    > .btn-check:has(input:checked),\n    > [class*=\"btn-\"]:active,\n    > [class*=\"btn-\"].active {\n      z-index: 2;\n    }\n\n    > .btn-check:has(input:focus),\n    > [class*=\"btn-\"]:focus {\n      z-index: 3;\n    }\n  }\n\n  // Optional: Group multiple button groups together for a toolbar\n  .btn-toolbar {\n    display: flex;\n    flex-wrap: wrap;\n    gap: .5rem;\n    justify-content: flex-start;\n\n    .input-group {\n      width: auto;\n    }\n  }\n\n  .btn-group {\n    @include border-radius(var(--btn-border-radius));\n\n    // Prevent double borders when buttons are next to each other\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) {\n      margin-inline-start: calc(-1 * var(--btn-border-width));\n    }\n\n    // Reset rounded corners\n    > [class*=\"btn-\"]:not(:last-child):not(:has(+ .menu)),\n    > .btn-group:not(:last-child) > [class*=\"btn-\"] {\n      @include border-end-radius(0);\n    }\n\n    // The left radius should be 0 if the button is not the first child\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) > [class*=\"btn-\"] {\n      @include border-start-radius(0);\n    }\n  }\n\n  //\n  // Vertical button groups\n  //\n\n  .btn-group-vertical {\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: center;\n\n    > [class*=\"btn-\"],\n    > .btn-group {\n      width: 100%;\n    }\n\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) {\n      margin-top: calc(-1 * var(--btn-border-width));\n    }\n\n    // Reset rounded corners\n    > [class*=\"btn-\"]:not(:last-child):not(:has(+ .menu)),\n    > .btn-group:not(:last-child) > [class*=\"btn-\"] {\n      @include border-bottom-radius(0);\n    }\n\n    // The top radius should be 0 if the button is not the first child\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) > [class*=\"btn-\"] {\n      @include border-top-radius(0);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n$btn-close-tokens: () !default;\n\n// scss-docs-start btn-close-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$btn-close-tokens: defaults(\n  (\n    --btn-close-size: 1.25rem,\n    --btn-close-color: var(--fg-body),\n    --btn-close-opacity: .5,\n    --btn-close-hover-opacity: .75,\n    --btn-close-focus-opacity: .85,\n    --btn-close-disabled-opacity: .25,\n  ),\n  $btn-close-tokens\n);\n// scss-docs-end btn-close-tokens\n\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n@layer components {\n  .btn-close {\n    @include tokens($btn-close-tokens);\n\n    box-sizing: content-box;\n    width: var(--btn-close-size);\n    height: var(--btn-close-size);\n    padding: 0;\n    color: var(--btn-close-color);\n    background: transparent; // for button elements\n    border: 0; // for button elements\n    @include border-radius(var(--border-radius-sm));\n    opacity: var(--btn-close-opacity);\n\n    > svg {\n      display: block;\n      width: 100%;\n      height: 100%;\n      fill: currentcolor;\n    }\n\n    // Override <a>'s hover style\n    &:hover {\n      color: var(--btn-close-color);\n      text-decoration: none;\n      opacity: var(--btn-close-hover-opacity);\n    }\n\n    &:focus-visible {\n      opacity: var(--btn-close-focus-opacity);\n      @include focus-ring();\n    }\n\n    &:disabled,\n    &.disabled {\n      pointer-events: none;\n      user-select: none;\n      opacity: var(--btn-close-disabled-opacity);\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/tokens\" as *;\n\n$accordion-tokens: () !default;\n\n// scss-docs-start accordion-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$accordion-tokens: defaults(\n  (\n    --accordion-padding-x: 1.25rem,\n    --accordion-padding-y: 1rem,\n    --accordion-color: var(--fg-body),\n    --accordion-bg: var(--bg-body),\n    --accordion-transition-property: \"color, background-color, border-radius\",\n    --accordion-transition-timing: \".15s ease-in-out\",\n    --accordion-transition: var(--accordion-transition-property) var(--accordion-timing),\n    --accordion-border-color: var(--border-color),\n    --accordion-border-width: var(--border-width),\n    --accordion-border-radius: var(--accordion-radius, var(--border-radius-lg)),\n    --accordion-btn-color: var(--fg-2),\n    --accordion-btn-bg: var(--bg-body),\n    --accordion-btn-icon-width: 1rem,\n    --accordion-btn-icon-transform: rotate(-180deg),\n    --accordion-btn-icon-transition: transform .2s ease-in-out,\n    --accordion-active-color: var(--fg),\n    --accordion-active-bg: var(--bg-2),\n  ),\n  $accordion-tokens\n);\n// scss-docs-end accordion-tokens\n\n@layer components {\n  .accordion {\n    @include tokens($accordion-tokens);\n  }\n\n  .accordion-header {\n    display: flex;\n    align-items: center;\n    width: 100%;\n    padding: var(--accordion-btn-padding-y, var(--accordion-padding-y)) var(--accordion-btn-padding-x, var(--accordion-padding-x));\n    font-size: var(--accordion-font-size, var(--font-size-base));\n    color: var(--accordion-btn-color);\n    text-align: start;\n    list-style: none; // Remove default marker\n    cursor: pointer;\n    background-color: var(--accordion-btn-bg);\n    @include transition(var(--accordion-transition));\n\n    .accordion-icon {\n      flex-shrink: 0;\n      width: var(--accordion-btn-icon-width);\n      height: var(--accordion-btn-icon-width);\n      margin-inline-start: auto;\n      color: currentcolor;\n      @include transition(var(--accordion-btn-icon-transition));\n    }\n\n    &:hover {\n      z-index: 2;\n    }\n\n    &:focus-visible {\n      position: relative;\n      z-index: 3;\n      @include focus-ring(true);\n      outline-offset: -1px;\n    }\n  }\n\n  .accordion-item {\n    color: var(--accordion-color);\n    background-color: var(--accordion-bg);\n    border: var(--accordion-border-width) solid var(--accordion-border-color);\n\n    &:first-of-type {\n      @include border-top-radius(var(--accordion-border-radius));\n\n      > .accordion-header {\n        @include border-top-radius(calc(var(--accordion-border-radius) - var(--accordion-border-width)));\n      }\n    }\n\n    &:not(:first-of-type) {\n      border-block-start: 0;\n    }\n\n    // Only set a border-radius on the last item if the accordion is collapsed\n    &:last-of-type {\n      @include border-bottom-radius(var(--accordion-border-radius));\n\n      > .accordion-header {\n        @include border-bottom-radius(calc(var(--accordion-border-radius) - var(--accordion-border-width)));\n      }\n\n      > .accordion-body {\n        @include border-bottom-radius(var(--accordion-border-radius));\n      }\n    }\n\n    // Open state - details[open] applies these styles\n    &[open] {\n      border-color: var(--theme-border, var(--accordion-border-color));\n\n      > .accordion-header {\n        color: var(--theme-text, var(--accordion-active-color));\n        background-color: var(--theme-bg-subtle, var(--accordion-active-bg));\n        box-shadow: inset 0 calc(-1 * var(--accordion-border-width)) 0 var(--theme-border, var(--accordion-border-color));\n\n        .accordion-icon {\n          transform: var(--accordion-btn-icon-transform);\n        }\n      }\n\n      // Remove bottom radius from header when open (even on last item)\n      &:last-of-type > .accordion-header {\n        @include border-bottom-radius(0);\n      }\n    }\n  }\n\n  .accordion-body {\n    padding: var(--accordion-body-padding-y, var(--accordion-padding-y)) var(--accordion-body-padding-x, var(--accordion-padding-x));\n  }\n\n\n  // Flush accordion items\n  //\n  // Remove borders and border-radius to keep accordion items edge-to-edge.\n\n  .accordion-flush {\n    > .accordion-item {\n      border-inline: 0;\n      @include border-radius(0);\n\n      &:first-child {\n        border-block-start: 0;\n      }\n\n      &:last-child {\n        border-block-end: 0;\n      }\n\n      > .accordion-header,\n      > .accordion-body {\n        @include border-radius(0);\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$alert-tokens: () !default;\n\n// scss-docs-start alert-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$alert-tokens: defaults(\n  (\n    --alert-gap: #{$spacer * .75},\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1)),\n    --alert-padding-x: #{$spacer},\n    --alert-padding-y: #{$spacer},\n    --alert-color: var(--theme-text, inherit),\n    --alert-border-color: var(--theme-border, var(--border-color)),\n    --alert-border: var(--border-width) solid var(--alert-border-color),\n    --alert-border-radius: var(--border-radius),\n    --alert-link-color: inherit,\n    --hr-border-color: var(--theme-border, var(--border-color)),\n  ),\n  $alert-tokens\n);\n// scss-docs-end alert-tokens\n\n@layer components {\n  .alert {\n    @include tokens($alert-tokens);\n\n    display: flex;\n    gap: var(--alert-gap);\n    align-items: start;\n    padding: var(--alert-padding-y) var(--alert-padding-x);\n    color: var(--alert-color);\n    background-color: var(--alert-bg);\n    border: var(--alert-border);\n    @include border-radius(var(--alert-border-radius));\n  }\n\n  .alert-heading {\n    // Specified to prevent conflicts of changing $headings-color\n    color: inherit;\n  }\n\n  // Provide class for links that match alerts\n  .alert-link {\n    font-weight: var(--font-weight-semibold);\n    color: var(--alert-link-color);\n  }\n}\n","@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n$avatar-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start avatar-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$avatar-tokens: defaults(\n  (\n    --avatar-size: 2.5rem,\n    --avatar-border-radius: 50%,\n    --avatar-border-width: 2px,\n    --avatar-border-color: var(--bg-body),\n    --avatar-bg: var(--bg-2),\n    --avatar-color: var(--fg-body),\n    // --avatar-font-weight: var(--font-weight-medium), // Defaults to fallback\n    --avatar-status-size: .75rem,\n    --avatar-status-border-width: 2px,\n    --avatar-status-border-color: var(--bg-body),\n    --avatar-stack-spacing: -.3,\n    --avatar-stack-transition: \"transform .2s ease-in-out\",\n  ),\n  $avatar-tokens\n);\n// scss-docs-end avatar-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start avatar-sizes\n$avatar-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$avatar-sizes: defaults(\n  (\n    \"xs\": (\n      size: 1.5rem,\n      status-size: .625rem,\n    ),\n    \"sm\": (\n      size: 2rem,\n    ),\n    \"lg\": (\n      size: 3rem,\n      status-size: 1rem,\n    ),\n    \"xl\": (\n      size: 4rem,\n      status-size: 1.25rem,\n    ),\n  ),\n  $avatar-sizes\n);\n// scss-docs-end avatar-sizes\n\n@layer components {\n  .avatar {\n    @include tokens($avatar-tokens);\n\n    position: relative;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--avatar-size);\n    height: var(--avatar-size);\n    font-size: calc(var(--avatar-size) * .4);\n    font-weight: var(--avatar-font-weight, var(--font-weight-medium));\n    line-height: 1;\n    color: var(--theme-contrast, var(--avatar-color));\n    text-transform: uppercase;\n    vertical-align: middle;\n    background-color: var(--theme-bg, var(--avatar-bg));\n    @include border-radius(var(--avatar-border-radius));\n  }\n\n  .avatar-subtle {\n    color: var(--theme-text, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n\n  .avatar-img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    @include border-radius(inherit);\n  }\n\n  .avatar-status {\n    position: absolute;\n    right: calc(var(--avatar-status-border-width) * -1);\n    bottom: calc(var(--avatar-status-border-width) * -1);\n    width: var(--avatar-status-size);\n    height: var(--avatar-status-size);\n    background-color: var(--gray-400);\n    border: var(--avatar-status-border-width) solid var(--avatar-status-border-color);\n    @include border-radius(50%);\n\n    &.status-online {\n      background-color: var(--green-500);\n    }\n\n    &.status-offline {\n      background-color: var(--gray-400);\n      @include border-radius(20%);\n    }\n\n    &.status-busy {\n      background-color: var(--red-500);\n      @include border-radius(20%);\n    }\n\n    &.status-away {\n      background-color: var(--yellow-500);\n    }\n  }\n\n  .avatar-stack {\n    display: inline-flex;\n    flex-direction: row-reverse;\n\n    .avatar {\n      // Stack spacing is calculated as a percentage of avatar size\n      margin-left: calc(var(--avatar-size) * var(--avatar-stack-spacing));\n      border: var(--avatar-border-width) solid var(--avatar-border-color);\n      mask-image: none;\n      @include transition(var(--avatar-stack-transition));\n\n      &:last-child {\n        margin-left: 0;\n      }\n\n      &:hover {\n        z-index: 1;\n        transform: translateY(-2px);\n      }\n    }\n  }\n\n  @each $size, $tokens in $avatar-sizes {\n    .avatar-#{$size},\n    .avatar-stack-#{$size} {\n      --avatar-size: #{map.get($tokens, size)};\n\n      @if map.has-key($tokens, status-size) {\n        --avatar-status-size: #{map.get($tokens, status-size)};\n      }\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/tokens\" as *;\n\n$badge-tokens: () !default;\n\n// scss-docs-start badge-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$badge-tokens: defaults(\n  (\n    --badge-padding-x: .625em,\n    --badge-padding-y: .25em,\n    --badge-font-size: clamp(12px, .75em, .75em),\n    --badge-font-weight: var(--font-weight-semibold),\n    --badge-color: inherit,\n    --badge-bg: var(--bg-2),\n    --badge-border-width: var(--border-width),\n    --badge-border-color: transparent,\n    --badge-border-radius: var(--border-radius-lg),\n  ),\n  $badge-tokens\n);\n// scss-docs-end badge-tokens\n\n// scss-docs-start badge-variants\n$badge-variants: (\n  \"subtle\": (\n    \"color\": \"text\",\n    \"bg\": \"bg-subtle\",\n    \"border-color\": \"transparent\"\n  ),\n  \"outline\": (\n    \"color\": \"text\",\n    \"bg\": \"transparent\",\n    \"border-color\": \"border\"\n  )\n) !default;\n// scss-docs-end badge-variants\n\n@layer components {\n  .badge {\n    @include tokens($badge-tokens);\n\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 1.375rem;\n    padding: var(--badge-padding-y) var(--badge-padding-x);\n    font-size: var(--badge-font-size);\n    font-weight: var(--badge-font-weight);\n    line-height: 1;\n    color: var(--theme-contrast, var(--badge-color));\n    text-align: center;\n    white-space: nowrap;\n    vertical-align: baseline;\n    background-color: var(--theme-bg, var(--badge-bg));\n    border: var(--badge-border-width) solid var(--badge-border-color);\n    @include border-radius(var(--badge-border-radius));\n    @include gradient-bg();\n\n    // Empty badges collapse automatically\n    &:empty {\n      display: none;\n    }\n  }\n\n  // Quick fix for badges in buttons\n  .btn .badge {\n    position: relative;\n    top: -1px;\n  }\n\n  // scss-docs-start badge-variant-loop\n  @each $variant, $properties in $badge-variants {\n    .badge-#{$variant} {\n      @each $property, $value in $properties {\n        @if $value == \"transparent\" {\n          --badge-#{$property}: transparent;\n        } @else {\n          --badge-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      color: var(--badge-color);\n      background-color: var(--badge-bg);\n      border-color: var(--badge-border-color);\n    }\n  }\n  // scss-docs-end badge-variant-loop\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n$breadcrumb-tokens: () !default;\n\n// scss-docs-start breadcrumb-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$breadcrumb-tokens: defaults(\n  (\n    --breadcrumb-margin-bottom: 1rem,\n    --breadcrumb-font-size: inherit,\n    --breadcrumb-bg: transparent,\n    --breadcrumb-border-radius: var(--border-radius),\n    --breadcrumb-divider-color: var(--fg-4),\n    --breadcrumb-link-padding-x: .75rem,\n    --breadcrumb-link-padding-y: .25rem,\n    --breadcrumb-link-color: var(--fg-3),\n    --breadcrumb-link-hover-color: var(--fg-2),\n    --breadcrumb-link-hover-bg: var(--bg-1),\n    --breadcrumb-link-active-color: var(--fg-1),\n    --breadcrumb-link-border-radius: var(--border-radius-lg),\n  ),\n  $breadcrumb-tokens\n);\n// scss-docs-end breadcrumb-tokens\n\n@layer components {\n  .breadcrumb {\n    @include tokens($breadcrumb-tokens);\n\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    padding: var(--breadcrumb-padding-y, 0) var(--breadcrumb-padding-x, 0);\n    font-size: var(--breadcrumb-font-size);\n    list-style: none;\n    background-color: var(--breadcrumb-bg);\n    @include border-radius(var(--breadcrumb-border-radius));\n  }\n\n  .breadcrumb-item {\n    display: flex;\n  }\n\n  .breadcrumb-divider {\n    margin-inline: calc(var(--breadcrumb-link-padding-x) / 4);\n    color: var(--breadcrumb-divider-color);\n  }\n\n  .breadcrumb-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 2.25rem;\n    padding: var(--breadcrumb-link-padding-y) var(--breadcrumb-link-padding-x);\n    color: var(--breadcrumb-link-color);\n    text-decoration: none;\n    @include border-radius(var(--breadcrumb-link-border-radius));\n    @include transition(.1s text-decoration-color ease-in-out);\n\n    &:hover {\n      z-index: 2;\n      color: var(--breadcrumb-link-hover-color);\n      background-color: var(--breadcrumb-link-hover-bg);\n    }\n\n    &.active {\n      color: var(--breadcrumb-link-active-color);\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/tokens\" as *;\n\n$chip-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start chip-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$chip-tokens: defaults(\n  (\n    --chip-height: 1.75rem,\n    --chip-padding-x: .625rem,\n    --chip-gap: .3125rem,\n    --chip-border-radius: var(--border-radius-pill),\n    --chip-img-size: 1.25rem,\n    --chip-icon-size: 1rem,\n    --chip-dismiss-size: 1rem,\n    --chip-dismiss-opacity: .65,\n    --chip-dismiss-hover-opacity: 1,\n    --chip-color: var(--theme-text, var(--fg-body)),\n    --chip-bg: var(--theme-bg-subtle, var(--bg-2)),\n    --chip-border-color: transparent,\n    --chip-selected-color: var(--theme-contrast, var(--primary-contrast)),\n    --chip-selected-bg: var(--theme-bg, var(--primary-bg)),\n    --chip-selected-border-color: var(--theme-bg, var(--primary-bg)),\n  ),\n  $chip-tokens\n);\n// scss-docs-end chip-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .chip {\n    @include tokens($chip-tokens);\n\n    display: inline-flex;\n    gap: var(--chip-gap);\n    align-items: center;\n    height: var(--chip-height);\n    padding-inline: var(--chip-padding-x);\n    font-size: var(--chip-font-size, var(--font-size-sm));\n    font-weight: var(--chip-font-weight, var(--font-weight-base));\n    line-height: var(--chip-line-height, 1.25rem);\n    color: var(--chip-color);\n    text-decoration: none;\n    white-space: nowrap;\n    vertical-align: middle;\n    cursor: pointer;\n    background-color: var(--chip-bg);\n    border: var(--border-width) solid var(--chip-border-color);\n    @include border-radius(var(--chip-border-radius));\n\n    &:hover {\n      --chip-bg: var(--theme-bg-muted, var(--bg-3));\n    }\n\n    &:focus-visible {\n      outline: 0;\n      // @include focus-ring();\n    }\n\n    &.active {\n      --chip-color: var(--chip-selected-color);\n      --chip-bg: var(--chip-selected-bg);\n      --chip-border-color: var(--chip-selected-border-color);\n\n      &:hover {\n        --chip-bg: var(--chip-selected-bg);\n        opacity: .9;\n      }\n    }\n\n    &.disabled,\n    &:disabled {\n      pointer-events: none;\n      opacity: .65;\n    }\n  }\n\n  .chip-img {\n    width: var(--chip-img-size);\n    height: var(--chip-img-size);\n    @include border-radius(50%);\n\n    &:first-child {\n      margin-inline-start: -.375rem;\n    }\n  }\n\n  // Chip icon (left side)\n  .chip-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    margin-inline-start: calc(var(--chip-gap) * -.25);\n\n    > svg {\n      display: block; // Prevents baseline alignment issues\n      width: var(--chip-icon-size);\n      height: var(--chip-icon-size);\n    }\n\n    > img {\n      width: var(--chip-icon-size);\n      height: var(--chip-icon-size);\n      object-fit: cover;\n      @include border-radius(50%);\n    }\n  }\n\n  // Dismiss button (right side)\n  .chip-dismiss {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--chip-min-height);\n    height: var(--chip-min-height);\n    padding: 0;\n    // margin-inline-start: calc(var(--chip-padding-x) * -.5);\n    margin-inline-end: calc(var(--chip-padding-x) * -.25);\n    color: inherit;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    opacity: var(--chip-dismiss-opacity);\n    // @include transition(opacity .15s ease-in-out);\n\n    &:hover {\n      opacity: var(--chip-dismiss-hover-opacity);\n    }\n\n    &:focus-visible {\n      outline: 0;\n      opacity: 1;\n      @include focus-ring();\n    }\n\n    > svg {\n      display: block; // Prevents baseline alignment issues\n      width: var(--chip-dismiss-size);\n      height: var(--chip-dismiss-size);\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/tokens\" as *;\n@use \"layout/breakpoints\" as *;\n\n$card-tokens: () !default;\n\n// scss-docs-start card-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$card-tokens: defaults(\n  (\n    --card-spacer-y: #{$spacer},\n    --card-spacer-x: #{$spacer},\n    --card-subtitle-color: inherit,\n    --card-border-width: var(--border-width),\n    --card-border-color: var(--border-color-translucent),\n    --card-border-radius: var(--border-radius-lg),\n    --card-box-shadow: none,\n    --card-inner-border-radius: calc(var(--border-radius-lg) - var(--border-width)),\n    --card-cap-padding-y: #{$spacer * .75},\n    --card-cap-padding-x: #{$spacer},\n    --card-cap-bg: var(--bg-1),\n    --card-cap-color: inherit,\n    --card-height: auto,\n    --card-color: inherit,\n    --card-bg: var(--bg-body),\n    --card-img-overlay-padding: #{$spacer},\n    --card-group-margin: #{$grid-gutter-x * .5},\n    --card-body-gap: #{$spacer * .5},\n  ),\n  $card-tokens\n);\n// scss-docs-end card-tokens\n\n@layer components {\n  .card {\n    @include tokens($card-tokens);\n\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106\n    height: var(--card-height);\n    color: var(--fg-body);\n    word-wrap: break-word;\n    background-color: var(--card-bg);\n    // border: var(--card-border-width) solid var(--card-border-color);\n    // @include border-radius(var(--card-border-radius));\n    @include box-shadow(var(--card-box-shadow));\n\n    > hr {\n      margin-inline: 0;\n    }\n  }\n\n  .card-body {\n    display: flex;\n    // Enable `flex-grow: 1` for decks and groups so that card blocks take up\n    // as much space as possible, ensuring footers are aligned to the bottom.\n    flex: 1 1 auto;\n    flex-direction: column;\n    gap: var(--card-body-gap);\n    align-items: flex-start;\n    padding: var(--card-spacer-y) var(--card-spacer-x);\n    color: var(--card-color);\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n\n    > * {\n      margin-block: 0;\n    }\n  }\n\n  .card-body,\n  .card-list {\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n\n    &:first-child {\n      @include border-top-radius(var(--card-border-radius));\n      border-top-width: var(--card-border-width);\n    }\n\n    &:last-child {\n      @include border-bottom-radius(var(--card-border-radius));\n      border-bottom-width: var(--card-border-width);\n    }\n\n    &:not(:first-child):not(:last-child) {\n      border-block-end-width: var(--card-border-width);\n    }\n  }\n\n  .card-title,\n  .card-subtitle,\n  .card-text {\n    align-self: stretch;\n  }\n\n  .card-subtitle {\n    margin-top: calc(var(--card-body-gap) * -.5);\n  }\n\n  .card-header {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    margin-bottom: 0; // Removes the default margin-bottom of <hN>\n    color: var(--theme-contrast, var(--card-cap-color));\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n\n    &:first-child {\n      @include border-radius(var(--card-inner-border-radius) var(--card-inner-border-radius) 0 0);\n    }\n  }\n\n  .card-footer {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    color: var(--card-cap-color);\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n\n    &:last-child {\n      @include border-radius(0 0 var(--card-inner-border-radius) var(--card-inner-border-radius));\n    }\n  }\n\n  .card-translucent {\n    background-color: color-mix(in oklch, var(--card-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n\n    .card-header,\n    .card-footer {\n      background-color: color-mix(in oklch, var(--card-cap-bg) 60%, transparent);\n    }\n  }\n\n  .card-subtle {\n    border-color: var(--theme-border, var(--card-border-color));\n\n    .card-header {\n      color: var(--theme-text-emphasis, currentcolor);\n      background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n\n    .card-footer {\n      color: var(--theme-text-emphasis, currentcolor);\n      background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n\n    .card-body,\n    .card-list {\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n  }\n\n  //\n  // Header navs\n  //\n\n  // Combined selector because of specificity match with `.nav` base class\n  .nav.card-header-tabs {\n    margin-inline: calc(-.5 * var(--card-cap-padding-x));\n    margin-bottom: calc(-1 * var(--card-cap-padding-y));\n    border-block-end: 0;\n\n    .nav-link.active {\n      background-color: var(--card-bg);\n      border-block-end-color: var(--card-bg);\n    }\n  }\n\n  // Card image\n  .card-img-overlay {\n    position: absolute;\n    inset: 0;\n    padding: var(--card-img-overlay-padding);\n    @include border-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img,\n  .card-img-top,\n  .card-img-bottom {\n    width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n    outline: var(--card-border-width) solid var(--card-border-color);\n    outline-offset: calc(var(--card-border-width) * -1);\n  }\n\n  .card-img,\n  .card-img-top {\n    @include border-top-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img,\n  .card-img-bottom {\n    @include border-bottom-radius(var(--card-inner-border-radius));\n  }\n\n  .card-row {\n    flex-direction: row;\n\n    .card-body,\n    .card-list {\n      border-width: var(--card-border-width) 0;\n      @include border-radius(0);\n\n      &:first-child {\n        @include border-start-radius(var(--card-inner-border-radius));\n        border-inline-start-width: var(--card-border-width);\n      }\n\n      &:last-child {\n        @include border-end-radius(var(--card-inner-border-radius));\n        border-inline-end-width: var(--card-border-width);\n      }\n\n      &:not(:first-child):not(:last-child) {\n        border-inline-end-width: var(--card-border-width);\n      }\n    }\n  }\n\n  .card-img-start {\n    @include border-start-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img-end {\n    @include border-end-radius(var(--card-inner-border-radius));\n  }\n\n  //\n  // Card groups\n  //\n\n  .card-group {\n    // The child selector allows nested `.card` within `.card-group`\n    // to display properly.\n    > .card {\n      margin-bottom: var(--card-group-margin);\n    }\n\n    @include media-breakpoint-up(sm) {\n      display: flex;\n      flex-flow: row wrap;\n      // The child selector allows nested `.card` within `.card-group`\n      // to display properly.\n      > .card {\n        flex: 1 0 0;\n        margin-bottom: 0;\n\n        + .card {\n          margin-inline-start: 0;\n          border-inline-start: 0;\n        }\n\n        // Handle rounded corners\n        @if $enable-rounded {\n          &:not(:last-child) {\n            @include border-end-radius(0);\n\n            > .card-img-top,\n            > .card-header {\n              border-start-end-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer {\n              border-end-end-radius: 0;\n            }\n          }\n\n          &:not(:first-child) {\n            @include border-start-radius(0);\n\n            > .card-img-top,\n            > .card-header {\n              border-start-start-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer {\n              border-end-start-radius: 0;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"colors\" as *;\n@use \"functions\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/color-mode\" as *;\n@use \"mixins/tokens\" as *;\n\n$carousel-tokens: () !default;\n\n// scss-docs-start carousel-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$carousel-tokens: defaults(\n  (\n    --carousel-control-color: #{$white},\n    --carousel-control-width: 15%,\n    --carousel-control-opacity: .5,\n    --carousel-control-hover-opacity: .9,\n    --carousel-control-transition: opacity .15s ease,\n    --carousel-control-icon-filter: none,\n    --carousel-indicator-width: 30px,\n    --carousel-indicator-height: 3px,\n    --carousel-indicator-hit-area-height: 10px,\n    --carousel-indicator-spacer: 3px,\n    --carousel-indicator-opacity: .5,\n    --carousel-indicator-active-bg: var(--white),\n    --carousel-indicator-active-opacity: 1,\n    --carousel-indicator-transition: opacity .6s ease,\n    --carousel-caption-width: 70%,\n    --carousel-caption-color: var(--white),\n    --carousel-caption-padding-y: 1.25rem,\n    --carousel-caption-spacer: 1.25rem,\n    --carousel-control-icon-width: 2rem,\n    --carousel-control-prev-icon-bg: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>\"),\n    --carousel-control-next-icon-bg: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>\"),\n    --carousel-transition-duration: .6s,\n    --carousel-transition: transform .6s ease-in-out,\n  ),\n  $carousel-tokens\n);\n// scss-docs-end carousel-tokens\n\n$carousel-dark-tokens: () !default;\n\n// scss-docs-start carousel-dark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$carousel-dark-tokens: defaults(\n  (\n    --carousel-indicator-active-bg: #{$black},\n    --carousel-caption-color: #{$black},\n    --carousel-control-icon-filter: invert(1) grayscale(100),\n  ),\n  $carousel-dark-tokens\n);\n// scss-docs-end carousel-dark-tokens\n\n// Notes on the classes:\n//\n// 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically)\n//    even when their scroll action started on a carousel, but for compatibility (with Firefox)\n//    we're preventing all actions instead\n// 2. The .carousel-item-start and .carousel-item-end is used to indicate where\n//    the active slide is heading.\n// 3. .active.carousel-item is the current slide.\n// 4. .active.carousel-item-start and .active.carousel-item-end is the current\n//    slide in its in-transition state. Only one of these occurs at a time.\n// 5. .carousel-item-next.carousel-item-start and .carousel-item-prev.carousel-item-end\n//    is the upcoming slide in transition.\n\n@layer components {\n  .carousel {\n    position: relative;\n    @include tokens($carousel-tokens);\n  }\n\n  .carousel.pointer-event {\n    touch-action: pan-y;\n  }\n\n  .carousel-inner {\n    position: relative;\n    display: flow-root;\n    width: 100%;\n    overflow: hidden;\n  }\n\n  .carousel-item {\n    position: relative;\n    display: none;\n    float: inline-start;\n    width: 100%;\n    margin-inline-end: -100%;\n    backface-visibility: hidden;\n    @include transition(var(--carousel-transition));\n  }\n\n  .carousel-item.active,\n  .carousel-item-next,\n  .carousel-item-prev {\n    display: block;\n  }\n\n  .carousel-item-next:not(.carousel-item-start),\n  .active.carousel-item-end {\n    transform: translateX(100%);\n  }\n\n  .carousel-item-prev:not(.carousel-item-end),\n  .active.carousel-item-start {\n    transform: translateX(-100%);\n  }\n\n  //\n  // Alternate transitions\n  //\n\n  .carousel-fade {\n    .carousel-item {\n      opacity: 0;\n      transition-property: opacity;\n      transform: none;\n    }\n\n    .carousel-item.active,\n    .carousel-item-next.carousel-item-start,\n    .carousel-item-prev.carousel-item-end {\n      z-index: 1;\n      opacity: 1;\n    }\n\n    .active.carousel-item-start,\n    .active.carousel-item-end {\n      z-index: 0;\n      opacity: 0;\n      @include transition(opacity 0s var(--carousel-transition-duration));\n    }\n  }\n\n  //\n  // Left/right controls for nav\n  //\n\n  .carousel-control-prev,\n  .carousel-control-next {\n    position: absolute;\n    inset-block: 0;\n    z-index: 1;\n    // Use flex for alignment (1-3)\n    display: flex; // 1. allow flex styles\n    align-items: center; // 2. vertically center contents\n    justify-content: center; // 3. horizontally center contents\n    width: var(--carousel-control-width);\n    padding: 0;\n    color: var(--carousel-control-color);\n    text-align: center;\n    background: none;\n    filter: var(--carousel-control-icon-filter);\n    border: 0;\n    opacity: var(--carousel-control-opacity);\n    @include transition(var(--carousel-control-transition));\n\n    // Hover/focus state\n    &:hover,\n    &:focus {\n      color: var(--carousel-control-color);\n      text-decoration: none;\n      outline: 0;\n      opacity: var(--carousel-control-hover-opacity);\n    }\n  }\n  .carousel-control-prev {\n    inset-inline-start: 0;\n    // stylelint-disable-next-line scss/at-function-named-arguments, @stylistic/function-whitespace-after\n    background-image: if(sass($enable-gradients): linear-gradient(90deg, rgba($black, .25), rgba($black, .001)); else: null);\n  }\n  .carousel-control-next {\n    inset-inline-end: 0;\n    // stylelint-disable-next-line scss/at-function-named-arguments, @stylistic/function-whitespace-after\n    background-image: if(sass($enable-gradients): linear-gradient(270deg, rgba($black, .25), rgba($black, .001)); else: null);\n  }\n\n  // Icons for within\n  .carousel-control-prev-icon,\n  .carousel-control-next-icon {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-repeat: no-repeat;\n    background-position: 50%;\n    background-size: 100% 100%;\n  }\n\n  .carousel-control-prev-icon {\n    background-image: var(--carousel-control-prev-icon-bg);\n  }\n\n  [dir=\"rtl\"] .carousel-control-prev-icon {\n    background-image: var(--carousel-control-next-icon-bg);\n  }\n\n  .carousel-control-next-icon {\n    background-image: var(--carousel-control-next-icon-bg);\n  }\n\n  [dir=\"rtl\"] .carousel-control-next-icon {\n    background-image: var(--carousel-control-prev-icon-bg);\n  }\n\n  // Optional indicator pips/controls\n  //\n  // Add a container (such as a list) with the following class and add an item (ideally a focusable control,\n  // like a button) with data-bs-target for each slide your carousel holds.\n\n  .carousel-indicators {\n    position: absolute;\n    inset: auto 0 0;\n    z-index: 2;\n    display: flex;\n    justify-content: center;\n    padding: 0;\n    // Use the .carousel-control's width as margin so we don't overlay those\n    margin-inline: var(--carousel-control-width);\n    margin-bottom: 1rem;\n\n    [data-bs-target] {\n      box-sizing: content-box;\n      flex: 0 1 auto;\n      width: var(--carousel-indicator-width);\n      height: var(--carousel-indicator-height);\n      padding: 0;\n      margin-inline: var(--carousel-indicator-spacer);\n      text-indent: -999px;\n      cursor: pointer;\n      background-color: var(--carousel-indicator-active-bg);\n      background-clip: padding-box;\n      border: 0;\n      // Use transparent borders to increase the hit area by 10px on top and bottom.\n      border-block: var(--carousel-indicator-hit-area-height) solid transparent;\n      opacity: var(--carousel-indicator-opacity);\n      @include transition(var(--carousel-indicator-transition));\n    }\n\n    .active {\n      opacity: var(--carousel-indicator-active-opacity);\n    }\n  }\n\n  // Optional captions\n  //\n  //\n\n  .carousel-caption {\n    position: absolute;\n    right: calc((100% - var(--carousel-caption-width)) * .5);\n    bottom: var(--carousel-caption-spacer);\n    left: calc((100% - var(--carousel-caption-width)) * .5);\n    padding-top: var(--carousel-caption-padding-y);\n    padding-bottom: var(--carousel-caption-padding-y);\n    color: var(--carousel-caption-color);\n    text-align: center;\n  }\n\n  // Dark mode carousel\n\n  @mixin carousel-dark() {\n    @include tokens($carousel-dark-tokens);\n  }\n\n  .carousel-dark {\n    @include carousel-dark();\n  }\n\n  @if $enable-dark-mode {\n    @include color-mode(dark, true) {\n      @include carousel-dark();\n    }\n  }\n}\n","@use \"../config\" as *;\n\n// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n  @if $color-mode-type == \"media-query\" {\n    @if $root == true {\n      @media (prefers-color-scheme: $mode) {\n        :root {\n          @content;\n        }\n      }\n    } @else {\n      @media (prefers-color-scheme: $mode) {\n        @content;\n      }\n    }\n  } @else {\n    [data-bs-theme=\"#{$mode}\"] {\n      @content;\n    }\n  }\n}\n// scss-docs-end color-mode-mixin\n","// stylelint-disable selector-max-attribute, property-disallowed-list, selector-no-qualifying-type -- VCP uses extensive data attributes and requires direct border-radius properties for range selection\n\n@use \"functions\" as *;\n@use \"config\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/tokens\" as *;\n\n$datepicker-tokens: () !default;\n\n// scss-docs-start datepicker-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$datepicker-tokens: defaults(\n  (\n    --datepicker-padding: 1rem,\n    --datepicker-bg: var(--bg-body),\n    --datepicker-color: var(--fg-body),\n    --datepicker-border-color: var(--border-color-translucent),\n    --datepicker-border-width: var(--border-width),\n    --datepicker-border-radius: var(--border-radius-lg),\n    --datepicker-box-shadow: var(--box-shadow),\n    --datepicker-font-size: var(--font-size-sm),\n    --datepicker-min-width: 280px,\n    --datepicker-zindex: #{$zindex-menu},\n    --datepicker-header-font-weight: 600,\n    --datepicker-weekday-color: var(--fg-3),\n    --datepicker-day-hover-bg: var(--bg-1),\n    --datepicker-day-selected-bg: var(--primary-bg),\n    --datepicker-day-selected-color: var(--primary-contrast),\n    --datepicker-day-today-bg: var(--bg-2),\n    --datepicker-day-today-color: var(--fg-1),\n    --datepicker-day-disabled-color: var(--fg-4),\n  ),\n  $datepicker-tokens\n);\n// scss-docs-end datepicker-tokens\n\n@layer components {\n  [data-vc=\"calendar\"] {\n    @include tokens($datepicker-tokens);\n\n    position: absolute;\n    z-index: var(--datepicker-zindex);\n    box-sizing: border-box;\n    display: flex;\n    flex-direction: column;\n    min-width: var(--datepicker-min-width);\n    padding: var(--datepicker-padding);\n    font-family: var(--font-sans-serif);\n    font-size: var(--datepicker-font-size);\n    color: var(--datepicker-color);\n    color-scheme: light dark;\n    background-color: var(--datepicker-bg);\n    border: var(--datepicker-border-width) solid var(--datepicker-border-color);\n    @include border-radius(var(--datepicker-border-radius));\n    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n\n    // Respond to Bootstrap's color mode system\n    &[data-bs-theme=\"light\"] {\n      color-scheme: light;\n    }\n\n    &[data-bs-theme=\"dark\"] {\n      color-scheme: dark;\n    }\n\n    // Catch-all for focus styles\n    button:focus-visible {\n      position: relative;\n      z-index: 1;\n      @include focus-ring();\n    }\n  }\n\n  [data-vc-calendar-hidden] {\n    pointer-events: none;\n    opacity: 0;\n  }\n\n  // Inline calendars\n  //\n  // Remove popover styling for more neutral styling\n  [data-vc=\"calendar\"]:not([data-vc-input]) {\n    position: relative;\n    width: fit-content;\n    padding: 0;\n    border: 0;\n    box-shadow: none;\n  }\n\n  [data-vc-position=\"bottom\"] {\n    margin-block-start: .25rem;\n  }\n\n  [data-vc-position=\"top\"] {\n    margin-block-end: -.25rem;\n  }\n\n  [data-vc-arrow] {\n    position: relative;\n    display: block;\n    width: 2rem;\n    height: 2rem;\n    color: var(--datepicker-color);\n    pointer-events: auto;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--border-radius));\n\n    &::before {\n      position: absolute;\n      inset: .25rem;\n      content: \"\";\n      background-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%236b7280' d='M12 16c-.3 0-.5-.1-.7-.3l-6-6c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l5.3 5.3 5.3-5.3c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-6 6c-.2.2-.4.3-.7.3'/></svg>\");\n      background-repeat: no-repeat;\n      background-position: center;\n    }\n\n    &:hover {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  [data-vc-arrow=\"prev\"]::before {\n    transform: rotate(90deg);\n  }\n\n  [data-vc-arrow=\"next\"]::before {\n    transform: rotate(-90deg);\n  }\n\n  // Grid layout\n  [data-vc=\"controls\"] {\n    position: absolute;\n    top: 0;\n    right: 0;\n    left: 0;\n    z-index: 20;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding-top: 1rem;\n    padding-right: 1rem;\n    padding-left: 1rem;\n    pointer-events: none;\n  }\n\n  [data-vc=\"grid\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-wrap: wrap;\n    gap: 1.75rem;\n  }\n\n  [data-vc=\"column\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    min-width: 240px;\n  }\n\n  //\n  // Header\n  //\n\n  [data-vc=\"header\"] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    margin-bottom: .75rem;\n  }\n\n  // Month and year\n  [data-vc-header=\"content\"] {\n    display: inline-flex;\n    flex-grow: 1;\n    align-items: center;\n    justify-content: center;\n    white-space: pre-wrap;\n  }\n\n  [data-vc=\"month\"],\n  [data-vc=\"year\"] {\n    padding: .25rem .5rem;\n    margin-inline: -.125rem;\n    font-size: 1rem;\n    font-weight: var(--datepicker-header-font-weight);\n    color: var(--datepicker-color);\n    // cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--border-radius));\n\n    &:disabled {\n      color: var(--datepicker-day-disabled-color);\n      pointer-events: none;\n    }\n\n    &:hover:not(:disabled) {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  [data-vc=\"content\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n  }\n\n  // Month/Year grids\n  [data-vc=\"months\"],\n  [data-vc=\"years\"] {\n    display: grid;\n    flex-grow: 1;\n    grid-template-columns: repeat(var(--vc-columns, 4), minmax(0, 1fr));\n    row-gap: 1rem;\n    column-gap: .25rem;\n    align-items: center;\n  }\n\n  [data-vc=\"years\"] {\n    --vc-columns: 5;\n  }\n\n  [data-vc-months-month],\n  [data-vc-years-year] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 2.5rem;\n    padding: .25rem;\n    font-size: .75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    text-align: center;\n    word-break: break-all;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--border-radius));\n\n    &:disabled {\n      color: var(--datepicker-day-disabled-color);\n      pointer-events: none;\n    }\n\n    &:hover:not(:disabled) {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n\n    &[data-vc-months-month-selected],\n    &[data-vc-years-year-selected] {\n      color: var(--datepicker-day-selected-color);\n      background-color: var(--datepicker-day-selected-bg);\n\n      &:hover {\n        color: var(--datepicker-day-selected-color);\n        background-color: var(--datepicker-day-selected-bg);\n      }\n    }\n  }\n\n  // Week days header\n  [data-vc=\"week\"] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    justify-items: center;\n    margin-bottom: .5rem;\n  }\n\n  [data-vc-week-day] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    padding: 0;\n    margin: 0;\n    font-size: .75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    background-color: transparent;\n    border: 0;\n  }\n\n  button[data-vc-week-day] {\n    cursor: pointer;\n  }\n\n  // Dates grid\n  [data-vc=\"dates\"] {\n    pointer-events: none;\n  }\n\n  [data-vc-dates=\"row\"] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    align-items: center;\n    justify-items: center;\n    width: 100%;\n  }\n\n  [data-vc-date] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    padding-top: .125rem;\n    padding-bottom: .125rem;\n    pointer-events: auto;\n\n    &:not(:has([data-vc-date-btn])),\n    &[data-vc-date-disabled],\n    &[data-vc-date-disabled] [data-vc-date-btn] {\n      pointer-events: none;\n    }\n  }\n\n  // Date button\n  [data-vc-date-btn] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    height: 100%;\n    min-height: 1.875rem;\n    padding: 0;\n    font-size: .75rem;\n    font-weight: 400;\n    line-height: 1rem;\n    color: var(--datepicker-color);\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--border-radius);\n\n    &:hover {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  // Today\n  [data-vc-date-today] [data-vc-date-btn] {\n    font-weight: 600;\n    color: var(--datepicker-day-today-color);\n    background-color: var(--datepicker-day-today-bg);\n  }\n\n  // Outside month\n  [data-vc-date-month=\"next\"] [data-vc-date-btn],\n  [data-vc-date-month=\"prev\"] [data-vc-date-btn] {\n    opacity: .5;\n  }\n\n  // Disabled\n  [data-vc-date-disabled] [data-vc-date-btn] {\n    color: var(--datepicker-day-disabled-color);\n  }\n\n  // Range selection styles\n  [data-vc-date-hover] [data-vc-date-btn] {\n    background-color: var(--datepicker-day-hover-bg);\n    border-radius: 0;\n  }\n\n  [data-vc-date-hover=\"first\"] [data-vc-date-btn] {\n    border-start-start-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n\n  [data-vc-date-hover=\"last\"] [data-vc-date-btn] {\n    border-start-end-radius: var(--border-radius);\n    border-end-end-radius: var(--border-radius);\n  }\n\n  [data-vc-date-hover=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--border-radius);\n  }\n\n  [data-vc-date-selected=\"middle\"] [data-vc-date-btn] {\n    border-radius: 0;\n    opacity: .8;\n  }\n\n  // Selected\n  [data-vc-date-selected] [data-vc-date-btn] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n\n  }\n\n  [data-vc-date-selected=\"first\"] [data-vc-date-btn] {\n    border-top-left-radius: var(--border-radius);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--border-radius);\n  }\n\n  [data-vc-date-selected=\"last\"] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--border-radius);\n    border-bottom-right-radius: var(--border-radius);\n    border-bottom-left-radius: 0;\n  }\n\n  [data-vc-date-selected=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--border-radius);\n  }\n}\n","@use \"sass:map\";\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n// Native <dialog> component\n// Uses the browser's native dialog element with showModal()/show()/close() APIs\n// Leverages native [open] attribute and ::backdrop pseudo-element\n\n// stylelint-disable custom-property-no-missing-var-function\n$dialog-tokens: () !default;\n\n// scss-docs-start dialog-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$dialog-tokens: defaults(\n  (\n    --dialog-padding: 1rem,\n    --dialog-width: 500px,\n    --dialog-margin: 1.75rem,\n    --dialog-color: var(--fg-body),\n    --dialog-bg: var(--bg-body),\n    --dialog-border-color: var(--border-color-translucent),\n    --dialog-border-width: var(--border-width),\n    --dialog-border-radius: var(--border-radius-lg),\n    --dialog-box-shadow: var(--box-shadow-lg),\n    --dialog-backdrop-bg: rgb(0 0 0 / 50%),\n    --dialog-backdrop-blur: 8px,\n    --dialog-header-padding: 1rem,\n    --dialog-header-border-color: var(--border-color),\n    --dialog-header-border-width: var(--border-width),\n    --dialog-footer-padding: 1rem,\n    --dialog-footer-border-color: var(--border-color),\n    --dialog-footer-border-width: var(--border-width),\n    --dialog-footer-gap: .5rem,\n  ),\n  $dialog-tokens\n);\n// scss-docs-end dialog-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start dialog-sizes\n$dialog-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$dialog-sizes: defaults(\n  (\n    sm: 280px,\n    lg: 800px,\n    xl: 1140px,\n  ),\n  $dialog-sizes\n);\n// scss-docs-end dialog-sizes\n\n@layer components {\n  // Prevent body scroll when dialog is open\n  .dialog-open {\n    overflow: hidden;\n    scrollbar-gutter: stable;\n  }\n\n  .dialog {\n    @include tokens($dialog-tokens);\n\n    // Reset native dialog styles\n    max-width: var(--dialog-width);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    color: var(--dialog-color);\n    background-color: var(--dialog-bg);\n    background-clip: padding-box;\n    border: var(--dialog-border-width) solid var(--dialog-border-color);\n    @include border-radius(var(--dialog-border-radius));\n    @include box-shadow(var(--dialog-box-shadow));\n\n    // Native backdrop styling via ::backdrop pseudo-element\n    &::backdrop {\n      background-color: var(--dialog-backdrop-bg);\n      backdrop-filter: blur(var(--dialog-backdrop-blur));\n    }\n\n    // Animation support using native [open] attribute\n    &.fade {\n      opacity: 0;\n      @include transition(opacity .15s linear);\n\n      &::backdrop {\n        opacity: 0;\n        @include transition(opacity .15s linear);\n      }\n\n      &[open] {\n        opacity: 1;\n\n        &::backdrop {\n          opacity: 1;\n        }\n      }\n    }\n\n    // Static backdrop \"bounce\" animation (modal dialogs only)\n    &.dialog-static {\n      transform: scale(1.02);\n    }\n\n    // Non-modal dialog positioning\n    // show() doesn't use the top layer, so we need explicit positioning and z-index\n    &.dialog-nonmodal {\n      position: fixed;\n      inset-block-start: 50%;\n      inset-inline-start: 50%;\n      z-index: $zindex-dialog;\n      margin-inline: 0;\n      transform: translate(-50%, -50%);\n    }\n\n    // Overflow dialog - scrollable viewport container with dialog box inside\n    &.dialog-overflow {\n      // Make dialog element the full-viewport scrollable container\n      position: fixed;\n      inset: 0;\n      width: 100%;\n      max-width: 100%;\n      height: 100%;\n      max-height: 100%;\n      padding: var(--dialog-margin);\n      margin: 0;\n      overflow-y: auto;\n      overscroll-behavior: contain;\n      background: transparent;\n      border: 0;\n      box-shadow: none;\n\n      // The visual dialog box is a child wrapper\n      > .dialog-box {\n        max-width: var(--dialog-width);\n        margin-block-end: var(--dialog-margin);\n        margin-inline: auto;\n        color: var(--dialog-color);\n        background-color: var(--dialog-bg);\n        background-clip: padding-box;\n        border: var(--dialog-border-width) solid var(--dialog-border-color);\n        @include border-radius(var(--dialog-border-radius));\n        @include box-shadow(var(--dialog-box-shadow));\n      }\n    }\n\n    // Scrollable dialog body (header/footer stay fixed)\n    &.dialog-scrollable[open] {\n      display: flex;\n      flex-direction: column;\n      max-height: calc(100% - var(--dialog-margin) * 2);\n\n      .dialog-body {\n        overflow-y: auto;\n      }\n    }\n  }\n\n  // Dialog sizes\n  @each $size, $value in $dialog-sizes {\n    .dialog-#{$size} { --dialog-width: #{$value}; }\n  }\n\n  // Fullscreen dialog\n  .dialog-fullscreen {\n    --dialog-width: 100vw;\n    --dialog-margin: 0;\n    --dialog-border-radius: 0;\n\n    width: 100%;\n    max-width: none;\n    height: 100%;\n    max-height: none;\n  }\n\n  // Responsive fullscreen dialogs\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    $postfix: if(sass($infix != \"\"): #{$infix}-down; else: \"\");\n\n    @if $postfix != \"\" {\n      @include media-breakpoint-down($breakpoint) {\n        .dialog-fullscreen#{$postfix} {\n          --dialog-width: 100vw;\n          --dialog-margin: 0;\n          --dialog-border-radius: 0;\n\n          width: 100%;\n          max-width: none;\n          height: 100%;\n          max-height: none;\n        }\n      }\n    }\n  }\n\n  // Dialog header\n  .dialog-header {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    padding: var(--dialog-header-padding);\n    border-block-end: var(--dialog-header-border-width) solid var(--dialog-header-border-color);\n\n    .btn-close {\n      margin-inline-start: auto;\n    }\n  }\n\n  // Dialog title\n  .dialog-title {\n    margin-bottom: 0;\n    font-size: var(--font-size-md);\n    line-height: 1.5;\n  }\n\n  // Dialog body\n  .dialog-body {\n    position: relative;\n    flex: 1 1 auto;\n    padding: var(--dialog-padding);\n    overflow-y: auto;\n  }\n\n  // Dialog footer\n  .dialog-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: var(--dialog-footer-gap);\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--dialog-footer-padding);\n    border-block-start: var(--dialog-footer-border-width) solid var(--dialog-footer-border-color);\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable scss/dollar-variable-default, custom-property-no-missing-var-function\n$menu-tokens: () !default;\n\n// scss-docs-start menu-tokens\n$menu-tokens: defaults(\n  (\n    --menu-zindex: #{$zindex-menu},\n    --menu-gap: .125rem,\n    --menu-min-width: 10rem,\n    --menu-padding-x: .25rem,\n    --menu-padding-y: .25rem,\n    --menu-spacer: .125rem,\n    --menu-font-size: var(--font-size-sm),\n    --menu-color: var(--fg-body),\n    --menu-bg: var(--bg-body),\n    // --menu-border-color: var(--border-color-translucent),\n    // --menu-border-radius: var(--border-radius-lg),\n    // --menu-border-width: var(--border-width),\n    --menu-box-shadow: var(--box-shadow),\n    // --menu-max-height: none,\n    --menu-divider-bg: var(--border-color-translucent),\n    --menu-divider-margin-y: .125rem,\n    --menu-divider-margin-x: .25rem,\n    --menu-item-color: var(--menu-color, var(--fg-body)),\n    --menu-item-hover-color: var(--menu-color, var(--fg-body)),\n    --menu-item-hover-bg: var(--bg-1),\n    --menu-item-active-color: var(--primary-contrast),\n    --menu-item-active-bg: var(--primary-bg),\n    --menu-item-disabled-color: var(--fg-3),\n    --menu-item-gap: .5rem,\n    --menu-item-padding-x: .75rem,\n    --menu-item-padding-y: .25rem,\n    --menu-item-border-radius: var(--border-radius),\n    --menu-icon-size: 1rem,\n    --menu-image-size: 1.5rem,\n    --menu-description-font-size: var(--font-size-xs),\n    --menu-check-color: currentcolor,\n    --menu-header-color: var(--fg-3),\n    --menu-header-padding-x: .75rem,\n    --menu-header-padding-y: .25rem,\n  ),\n  $menu-tokens\n);\n// scss-docs-end menu-tokens\n\n// stylelint-enable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n@layer components {\n  .menu {\n    @include tokens($menu-tokens);\n\n    position: absolute;\n    z-index: var(--menu-zindex);\n    display: none;\n    flex-direction: column;\n    gap: var(--menu-gap);\n    min-width: var(--menu-min-width);\n    max-height: var(--menu-max-height, none);\n    padding: var(--menu-padding-y) var(--menu-padding-x);\n    margin: 0;\n    overflow-y: var(--menu-overflow-y, initial);\n    overscroll-behavior: contain;\n    font-size: var(--menu-font-size);\n    color: var(--menu-color);\n    text-align: start;\n    list-style: none;\n    background-color: var(--menu-bg);\n    background-clip: padding-box;\n    border: var(--menu-border-width, var(--border-width)) solid var(--menu-border-color, var(--border-color-translucent));\n    @include border-radius(var(--menu-border-radius, var(--border-radius-lg)));\n    @include box-shadow(var(--menu-box-shadow));\n\n    &.show {\n      display: flex;\n    }\n  }\n\n  .menu-scrollable {\n    --menu-max-height: 80dvh;\n    --menu-overflow-y: auto;\n  }\n\n  .menu-translucent {\n    --menu-item-hover-bg-light: color-mix(in oklch, var(--bg-1) 90%, transparent);\n    --menu-item-hover-bg-dark: color-mix(in oklch, var(--bg-1) 80%, transparent);\n\n    --menu-item-active-bg-light: color-mix(in oklch, var(--primary-bg) 80%, transparent);\n    --menu-item-active-bg-dark: color-mix(in oklch, var(--primary-bg) 70%, transparent);\n\n    --menu-item-active-bg: light-dark(var(--menu-item-active-bg-light), var(--menu-item-active-bg-dark));\n    --menu-item-hover-bg: light-dark(var(--menu-item-hover-bg-light), var(--menu-item-hover-bg-dark));\n\n    background-color: color-mix(in oklch, var(--menu-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n\n  .menu-divider {\n    height: 0;\n    margin: var(--menu-divider-margin-y) var(--menu-divider-margin-x);\n    overflow: hidden;\n    border-block-start: 1px solid var(--menu-divider-bg);\n    opacity: 1;\n  }\n\n  .menu-item {\n    display: flex;\n    gap: var(--menu-item-gap);\n    align-items: center;\n    width: 100%;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    font-weight: var(--menu-item-font-weight, var(--font-weight-normal));\n    color: var(--theme-text, var(--menu-item-color));\n    text-align: inherit;\n    text-decoration: none;\n    white-space: nowrap;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    @include border-radius(var(--menu-item-border-radius, 0));\n\n    &:hover,\n    &:focus {\n      color: var(--theme-text, var(--menu-item-hover-color));\n      @include gradient-bg(var(--theme-bg-subtle, var(--menu-item-hover-bg)));\n    }\n\n    &.active,\n    &:active {\n      color: var(--theme-contrast, var(--menu-item-active-color));\n      @include gradient-bg(var(--theme-bg, var(--menu-item-active-bg)));\n\n      .menu-item-icon {\n        color: inherit !important; // stylelint-disable-line declaration-no-important\n      }\n    }\n\n    &.selected {\n      font-weight: $font-weight-semibold;\n    }\n\n    &.disabled,\n    &:disabled {\n      color: var(--menu-item-disabled-color);\n      pointer-events: none;\n      background-color: transparent;\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n    }\n  }\n\n  .menu-item-icon {\n    flex-shrink: 0;\n    align-self: flex-start;\n    width: var(--menu-icon-size);\n    height: auto;\n    margin-top: .125rem;\n  }\n\n  .menu-image {\n    width: var(--menu-image-size);\n    height: var(--menu-image-size);\n    object-fit: cover;\n    @include border-radius(var(--border-radius-sm));\n  }\n\n  .menu-item-content {\n    display: flex;\n    flex: 1;\n    flex-direction: column;\n    min-width: fit-content;\n  }\n\n  .menu-item-description {\n    font-size: var(--menu-description-font-size);\n    font-weight: var(--font-weight-normal);\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n\n  .menu-item-check {\n    flex-shrink: 0;\n    align-self: flex-start;\n    margin-block-start: .125rem;\n    margin-inline-start: auto;\n    color: var(--menu-check-color);\n    visibility: hidden;\n\n    .selected > & {\n      visibility: visible;\n    }\n  }\n\n  .menu-header {\n    display: block;\n    padding: var(--menu-header-padding-y) var(--menu-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--font-size-sm);\n    color: var(--menu-header-color);\n    white-space: nowrap;\n  }\n\n  .menu-text {\n    display: block;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    color: var(--fg-2);\n  }\n\n  // scss-docs-start submenu\n  .submenu {\n    position: relative;\n\n    > .menu-item {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n\n    > .menu-item::after {\n      display: inline-block;\n      flex-shrink: 0;\n      width: .375em;\n      height: .375em;\n      margin-inline-start: auto;\n      content: \"\";\n      border-color: currentcolor;\n      border-style: solid;\n      border-width: 0 .125em .125em 0;\n      transform: rotate(-45deg);\n\n      [dir=\"rtl\"] & {\n        transform: rotate(135deg);\n      }\n    }\n\n    > .menu {\n      top: 0;\n      margin-top: calc(-1 * var(--menu-padding-y));\n    }\n\n    &:hover > .menu-item,\n    &:focus-within > .menu-item {\n      color: var(--menu-item-hover-color);\n      background-color: var(--menu-item-hover-bg);\n    }\n\n    &.show > .menu-item {\n      color: var(--menu-item-hover-color);\n      background-color: var(--menu-item-hover-bg);\n    }\n  }\n\n  // Mobile stacking: submenu covers the parent menu in-place\n  @media (max-width: 575.98px) {\n    .submenu:has(.submenu-stacked) {\n      position: static;\n    }\n\n    .submenu-stacked {\n      position: absolute;\n      inset: 0;\n      z-index: 1;\n      display: flex;\n      flex-direction: column;\n      gap: var(--menu-gap);\n      min-width: 0;\n      padding: var(--menu-padding-y) var(--menu-padding-x);\n      background-color: var(--menu-bg);\n      border: 0;\n      @include border-radius(0);\n      box-shadow: none;\n    }\n\n    .submenu-back {\n      display: flex;\n      gap: var(--menu-item-gap);\n      align-items: center;\n      padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n      font-weight: var(--font-weight-semibold, 600);\n      color: var(--menu-item-color);\n\n      &::before {\n        display: inline-block;\n        flex-shrink: 0;\n        width: .375em;\n        height: .375em;\n        content: \"\";\n        border-color: currentcolor;\n        border-style: solid;\n        border-width: .125em 0 0 .125em;\n        transform: rotate(-45deg);\n\n        [dir=\"rtl\"] & {\n          border-width: 0 .125em .125em 0;\n        }\n      }\n    }\n\n    .submenu-dimmed {\n      pointer-events: none;\n      filter: blur(2px);\n      opacity: .3;\n    }\n  }\n  // scss-docs-end submenu\n}\n","@use \"sass:map\";\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/tokens\" as *;\n\n$list-group-tokens: () !default;\n\n// scss-docs-start list-group-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$list-group-tokens: defaults(\n  (\n    --list-group-color: var(--fg-body),\n    --list-group-bg: var(--bg-body),\n    --list-group-border-color: var(--border-color),\n    --list-group-border-width: var(--border-width),\n    --list-group-border-radius: var(--border-radius),\n    --list-group-item-padding-x: #{$spacer},\n    --list-group-item-padding-y: #{$spacer * .5},\n    --list-group-action-color: var(--fg-2),\n    --list-group-action-hover-color: var(--fg-1),\n    --list-group-action-hover-bg: var(--bg-1),\n    --list-group-action-active-color: var(--fg-body),\n    --list-group-action-active-bg: var(--bg-2),\n    --list-group-disabled-color: var(--fg-3),\n    --list-group-disabled-bg: var(--bg-body),\n    --list-group-active-color: var(--primary-contrast),\n    --list-group-active-bg: var(--primary-bg),\n    --list-group-active-border-color: var(--primary-bg),\n  ),\n  $list-group-tokens\n);\n// scss-docs-end list-group-tokens\n\n@layer components {\n  .list-group {\n    @include tokens($list-group-tokens);\n\n    display: flex;\n    flex-direction: column;\n\n    // No need to set list-style: none; since .list-group-item is block level\n    padding-inline-start: 0; // reset padding because ul and ol\n    margin-bottom: 0;\n    @include border-radius(var(--list-group-border-radius));\n  }\n\n  .list-group-numbered {\n    list-style-type: none;\n    counter-reset: section;\n\n    > .list-group-item::before {\n      // Increments only this instance of the section counter\n      content: counters(section, \".\") \". \";\n      counter-increment: section;\n    }\n  }\n\n  // Individual list items\n  //\n  // Use on `li`s or `div`s within the `.list-group` parent.\n\n  .list-group-item {\n    position: relative;\n    display: block;\n    padding: var(--list-group-item-padding-y) var(--list-group-item-padding-x);\n    color: var(--theme-text, var(--list-group-color));\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    text-decoration: if(sass($link-decoration == none): null);\n    background-color: var(--theme-bg-subtle, var(--list-group-bg));\n    border: var(--list-group-border-width) solid var(--theme-border, var(--list-group-border-color));\n\n    &:first-child {\n      @include border-top-radius(inherit);\n    }\n\n    &:last-child {\n      @include border-bottom-radius(inherit);\n    }\n\n    &.disabled,\n    &:disabled {\n      color: var(--list-group-disabled-color);\n      pointer-events: none;\n      background-color: var(--list-group-disabled-bg);\n    }\n\n    // Include both here for `<a>`s and `<button>`s\n    &.active {\n      z-index: 2; // Place active items above their siblings for proper border styling\n      color: var(--list-group-active-color);\n      background-color: var(--list-group-active-bg);\n      border-color: var(--list-group-active-border-color);\n    }\n\n    // stylelint-disable-next-line scss/selector-no-redundant-nesting-selector\n    & + .list-group-item {\n      border-block-start-width: 0;\n\n      &.active {\n        margin-top: calc(-1 * var(--list-group-border-width));\n        border-block-start-width: var(--list-group-border-width);\n      }\n    }\n  }\n\n  // Interactive list items\n  //\n  // Use anchor or button elements instead of `li`s or `div`s to create interactive\n  // list items. Includes an extra `.active` modifier class for selected items.\n\n  .list-group-item-action {\n    width: 100%; // For `<button>`s (anchors become 100% by default though)\n    color: var(--theme-text, var(--list-group-action-color));\n    text-align: inherit; // For `<button>`s (anchors inherit)\n    text-decoration: none;\n\n    &:not(.active) {\n      // Hover state\n      &:hover,\n      &:focus {\n        z-index: 1; // Place hover/focus items above their siblings for proper border styling\n        color: var(--theme-text-emphasis, var(--list-group-action-hover-color));\n        text-decoration: none;\n        background-color: var(--theme-bg-muted, var(--list-group-action-hover-bg));\n      }\n\n      &:active {\n        color: var(--theme-text-emphasis, var(--list-group-action-active-color));\n        background-color: var(--theme-bg-muted, var(--list-group-action-active-bg));\n      }\n    }\n  }\n\n  // Horizontal\n  //\n  // Change the layout of list group items from vertical (default) to horizontal.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      .list-group-horizontal#{$infix} {\n        flex-direction: row;\n\n        > .list-group-item {\n          &:first-child:not(:last-child) {\n            @include border-bottom-start-radius(var(--list-group-border-radius));\n            @include border-top-end-radius(0);\n          }\n\n          &:last-child:not(:first-child) {\n            @include border-top-end-radius(var(--list-group-border-radius));\n            @include border-bottom-start-radius(0);\n          }\n\n          &.active {\n            margin-top: 0;\n          }\n\n          + .list-group-item {\n            border-block-start-width: var(--list-group-border-width);\n            border-inline-start-width: 0;\n\n            &.active {\n              margin-inline-start: calc(-1 * var(--list-group-border-width));\n              border-inline-start-width: var(--list-group-border-width);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  // Flush list items\n  //\n  // Remove borders and border-radius to keep list group items edge-to-edge. Most\n  // useful within other components (e.g., cards).\n\n  .list-group-flush {\n    @include border-radius(0);\n\n    > .list-group-item {\n      border-width: 0 0 var(--list-group-border-width);\n\n      &:last-child {\n        border-block-end-width: 0;\n      }\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"config\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/tokens\" as *;\n@use \"mixins/transition\" as *;\n\n$nav-tokens: () !default;\n\n// scss-docs-start nav-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-tokens: defaults(\n  (\n    --nav-gap: .125rem,\n    --nav-link-gap: .5rem,\n    --nav-link-align: center,\n    --nav-link-justify: center,\n    --nav-link-padding-x: .75rem,\n    --nav-link-padding-y: .375rem,\n    --nav-link-color: var(--fg-2),\n    --nav-link-hover-color: var(--fg-1),\n    --nav-link-hover-bg: var(--bg-1),\n    --nav-link-active-color: var(--fg-body),\n    --nav-link-active-bg: var(--bg-2),\n    --nav-link-disabled-color: var(--fg-4),\n    --nav-link-border-width: var(--border-width),\n    --nav-link-transition-property: \"color, background-color, border-color\",\n    --nav-link-transition-timing: .15s ease-in-out,\n    --nav-link-transition: var(--nav-link-transition-property) var(--nav-link-transition-timing),\n  ),\n  $nav-tokens\n);\n// scss-docs-end nav-tokens\n\n$nav-tabs-tokens: () !default;\n\n// scss-docs-start nav-tabs-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-tabs-tokens: defaults(\n  (\n    --nav-tabs-border-width: var(--border-width),\n    --nav-tabs-border-color: var(--border-color),\n    --nav-tabs-border-radius: var(--border-radius),\n    --nav-tabs-link-hover-border-color: var(--border-subtle),\n    --nav-tabs-link-active-color: var(--fg-color),\n    --nav-tabs-link-active-bg: var(--bg-body),\n    --nav-tabs-link-active-border-color: var(--border-color) var(--border-color) var(--bg-body),\n  ),\n  $nav-tabs-tokens\n);\n// scss-docs-end nav-tabs-tokens\n\n$nav-pills-tokens: () !default;\n\n// scss-docs-start nav-pills-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-pills-tokens: defaults(\n  (\n    --nav-pills-link-active-color: var(--primary-contrast),\n    --nav-pills-link-active-bg: var(--primary-bg),\n  ),\n  $nav-pills-tokens\n);\n// scss-docs-end nav-pills-tokens\n\n$nav-underline-tokens: () !default;\n\n// scss-docs-start nav-underline-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-underline-tokens: defaults(\n  (\n    --nav-gap: 1rem,\n    --nav-link-active-bg: transparent,\n    --nav-underline-border-width: .125rem,\n    --nav-underline-link-active-color: var(--fg-color),\n  ),\n  $nav-underline-tokens\n);\n// scss-docs-end nav-underline-tokens\n\n// Base class\n//\n// Kickstart any navigation component with a set of style resets. Works with\n// `<nav>`s, `<ul>`s or `<ol>`s.\n\n@layer components {\n  .nav {\n    @include tokens($nav-tokens);\n\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style: none;\n  }\n\n  .nav-item {\n    display: flex;\n  }\n\n  .nav-link {\n    display: flex;\n    gap: var(--nav-link-gap);\n    align-items: var(--nav-link-align);\n    justify-content: var(--nav-link-justify);\n    padding: var(--nav-link-padding-y) var(--nav-link-padding-x);\n    font-weight: var(--nav-link-font-weight);\n    color: var(--nav-link-color);\n    text-decoration: none;\n    white-space: nowrap;\n    background: none;\n    border: var(--nav-link-border-width) solid transparent;\n    @include border-radius(var(--border-radius));\n    @include transition(var(--nav-link-transition));\n\n    &:hover,\n    &:focus {\n      color: var(--nav-link-hover-color);\n      background-color: var(--nav-link-hover-bg);\n    }\n\n    &:focus-visible {\n      --focus-ring-offset: 1px;\n      color: var(--nav-link-hover-color);\n      @include focus-ring(true);\n    }\n\n    &.active,\n    &:active {\n      color: var(--nav-link-active-color);\n      background-color: var(--nav-link-active-bg);\n    }\n\n    // Disabled state lightens text\n    &.disabled,\n    &:disabled {\n      color: var(--nav-link-disabled-color);\n      pointer-events: none;\n      cursor: default;\n    }\n  }\n\n  //\n  // Tabs\n  //\n\n  .nav-tabs {\n    // scss-docs-start nav-tabs-css-vars\n    @include tokens($nav-tabs-tokens);\n    // scss-docs-end nav-tabs-css-vars\n\n    box-shadow: inset 0 calc(-1 * var(--nav-tabs-border-width)) 0 var(--nav-tabs-border-color);\n\n    .nav-link {\n      border: var(--nav-tabs-border-width) solid transparent;\n      border-bottom-color: var(--nav-tabs-border-color);\n      @include border-bottom-radius(0);\n\n      &:hover {\n        // Prevents active .nav-link tab overlapping focus outline of previous/next .nav-link\n        isolation: isolate;\n        border-color: var(--nav-tabs-link-hover-border-color);\n        border-bottom-color: var(--nav-tabs-border-color);\n      }\n    }\n\n    .nav-link.active,\n    .nav-item.show .nav-link {\n      color: var(--nav-tabs-link-active-color);\n      background-color: var(--nav-tabs-link-active-bg);\n      border-color: var(--nav-tabs-link-active-border-color);\n      border-bottom-color: var(--nav-tabs-link-active-bg);\n    }\n\n    .menu {\n      margin-top: calc(-1 * var(--nav-tabs-border-width));\n      @include border-top-radius(0);\n    }\n  }\n\n  //\n  // Pills\n  //\n\n  .nav-pills {\n    // scss-docs-start nav-pills-css-vars\n    @include tokens($nav-pills-tokens);\n    // scss-docs-end nav-pills-css-vars\n\n    .nav-link.active,\n    .show > .nav-link {\n      color: var(--nav-pills-link-active-color);\n      @include gradient-bg(var(--nav-pills-link-active-bg));\n    }\n  }\n\n  //\n  // Underline\n  //\n\n  .nav-underline {\n    // scss-docs-start nav-underline-css-vars\n    @include tokens($nav-underline-tokens);\n    // scss-docs-end nav-underline-css-vars\n\n    .nav-link {\n      padding-inline: 0;\n      border: 0;\n      border-block-end: var(--nav-underline-border-width) solid transparent;\n      @include border-radius(0);\n\n      &:hover,\n      &:focus {\n        border-block-end-color: currentcolor;\n      }\n    }\n\n    .nav-link.active,\n    .show > .nav-link {\n      font-weight: $font-weight-bold;\n      color: var(--nav-underline-link-active-color);\n      border-block-end-color: currentcolor;\n    }\n  }\n\n  //\n  // Justified variants\n  //\n\n  .nav-fill {\n    > .nav-link,\n    .nav-item {\n      flex: 1 1 auto;\n      text-align: center;\n    }\n  }\n\n  .nav-justified {\n    > .nav-link,\n    .nav-item {\n      flex-grow: 1;\n      flex-basis: 0;\n      text-align: center;\n    }\n  }\n\n  .nav-fill,\n  .nav-justified {\n    .nav-item .nav-link {\n      width: 100%; // Make sure button will grow\n    }\n  }\n\n  // Tabbable tabs\n  //\n  // Hide tabbable panes to start, show them when `.active`\n\n  .tab-content {\n    > .tab-pane {\n      display: none;\n    }\n    > .active {\n      display: block;\n    }\n  }\n}\n","// Nav Overflow (Priority+ Pattern)\n//\n// A responsive navigation pattern that automatically moves items\n// to an overflow menu when space is limited.\n\n@layer components {\n  .nav-overflow {\n    flex-wrap: nowrap;\n    min-width: 0; // Allow flex child to shrink below content width\n  }\n\n  // Container item for overflow\n  .nav-overflow-item {\n    flex-shrink: 0;\n    margin-inline-start: auto;\n  }\n\n  // Hide items that have been moved to overflow\n  .nav-overflow [data-bs-nav-overflow=\"true\"] {\n    display: none;\n  }\n\n  // Preserve items that should never overflow\n  .nav-overflow-keep {\n    flex-shrink: 0;\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/tokens\" as *;\n@use \"mixins/transition\" as *;\n\n// mdo-do: fix nav-link-height and navbar-brand-height, which we previously calculated with font-size, line-height, and block padding\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start navbar-breakpoints\n$navbar-breakpoints: $breakpoints !default;\n// scss-docs-end navbar-breakpoints\n\n$navbar-tokens: () !default;\n$navbar-dark-tokens: () !default;\n$navbar-nav-tokens: () !default;\n\n// scss-docs-start navbar-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-tokens: defaults(\n  (\n    --navbar-padding-x: 0,\n    --navbar-padding-y: .5rem,\n    --navbar-color: var(--fg-2),\n    --navbar-hover-color: var(--fg-1),\n    --navbar-disabled-color: var(--fg-3),\n    --navbar-active-color: var(--fg-body),\n    --navbar-brand-padding-y: .75rem,\n    --navbar-brand-margin-end: 1rem,\n    --navbar-brand-font-size: var(--font-size-md),\n    --navbar-brand-font-weight: var(--font-weight-medium),\n    --navbar-brand-color: var(--fg-body),\n    --navbar-brand-hover-color: var(--fg-body),\n    --navbar-nav-link-padding-x: .75rem,\n    --navbar-toggler-width: 2rem,\n    --navbar-toggler-padding-y: .25rem,\n    --navbar-toggler-padding-x: .75rem,\n    --navbar-toggler-font-size: var(--font-size-lg),\n    --navbar-toggler-border-color: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    --navbar-toggler-border-radius: var(--border-radius),\n    --navbar-toggler-transition: box-shadow .15s ease-in-out,\n  ),\n  $navbar-tokens\n);\n// scss-docs-end navbar-tokens\n\n// scss-docs-start navbar-dark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-dark-tokens: defaults(\n  (\n    --navbar-color: color-mix(in oklch, var(--white) .55, transparent),\n    --navbar-hover-color: color-mix(in oklch, var(--white) .75, transparent),\n    --navbar-disabled-color: color-mix(in oklch, var(--white) .25, transparent),\n    --navbar-active-color: var(--white),\n    --navbar-brand-color: var(--white),\n    --navbar-brand-hover-color: var(--white),\n    --navbar-toggler-border-color: color-mix(in oklch, var(--white) .1, transparent),\n  ),\n  $navbar-dark-tokens\n);\n// scss-docs-end navbar-dark-tokens\n\n// scss-docs-start navbar-nav-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-nav-tokens: defaults(\n  (\n    --nav-gap: .25rem,\n    --nav-link-gap: .5rem,\n    --nav-link-padding-x: .5rem,\n    --nav-link-padding-y: .375rem,\n    --nav-link-color: var(--navbar-color),\n    --nav-link-border-width: var(--border-width),\n    //--nav-link-border-color: var(--border-color),\n    --nav-link-hover-color: var(--navbar-hover-color),\n    --nav-link-hover-bg: transparent,\n    --nav-link-active-color: var(--navbar-active-color),\n    --nav-link-active-bg: transparent,\n    --nav-link-disabled-color: var(--navbar-disabled-color),\n  ),\n  $navbar-nav-tokens\n);\n// scss-docs-end navbar-nav-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  // Base navbar\n  .navbar {\n    @include tokens($navbar-tokens);\n\n    position: relative;\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: space-between;\n    padding: var(--navbar-padding-y) var(--navbar-padding-x);\n    @include set-container();\n    color: var(--navbar-color, var(--fg-body));\n    @include gradient-bg(var(--navbar-bg, var(--bg-body)));\n\n    // Container properties for nested containers\n    %container-flex-properties {\n      display: flex;\n      flex-wrap: inherit;\n      align-items: center;\n      justify-content: space-between;\n    }\n\n    > .container,\n    > .container-fluid {\n      @extend %container-flex-properties;\n    }\n\n    @each $breakpoint, $container-max-width in $container-max-widths {\n      > .container#{breakpoint-infix($breakpoint, $container-max-widths)} {\n        @extend %container-flex-properties;\n      }\n    }\n  }\n\n  // Navbar brand\n  //\n  // Used for brand, project, or site names.\n  .navbar-brand {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    margin-inline-end: var(--navbar-brand-margin-end);\n    font-size: var(--navbar-brand-font-size);\n    font-weight: var(--navbar-brand-font-weight);\n    color: var(--navbar-brand-color);\n    text-decoration: none;\n    white-space: nowrap;\n\n    &:hover,\n    &:focus {\n      color: var(--navbar-brand-hover-color);\n    }\n  }\n\n  // Navigation within navbars. Sets all nav-link CSS variables needed for\n  // proper styling.\n  //\n  // Relies on `.nav` base class.\n  .navbar-nav {\n    @include tokens($navbar-nav-tokens);\n\n    display: flex;\n    flex-direction: column;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style: none;\n\n    .nav-link {\n      &.active,\n      &.show {\n        color: var(--navbar-active-color);\n        border: var(--nav-link-border-width) solid var(--nav-link-border-color, transparent);\n      }\n    }\n  }\n\n  // Navbar text\n  //\n  // For adding text or inline elements to the navbar\n  .navbar-text {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    color: var(--navbar-color);\n\n    a,\n    a:hover,\n    a:focus {\n      color: var(--navbar-active-color);\n    }\n  }\n\n  // Button for toggling the navbar when in its collapsed state\n  .navbar-toggler {\n    --btn-bg: transparent;\n    --btn-hover-bg: var(--bg-2);\n  }\n\n  // scss-docs-start navbar-expand-loop\n  // Generate series of `.navbar-expand-*` responsive classes for configuring\n  // where your navbar collapses and expands. Uses container queries so the\n  // navbar responds to its own width, not the viewport width.\n\n  // Mixin for expanded state styles (applied to descendants)\n  @mixin navbar-expanded {\n    // Style the inner container since we can't style .navbar itself with container queries\n    > .container,\n    > .container-fluid,\n    %navbar-expand-container {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n\n    .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n\n    .navbar-toggler {\n      display: none !important; // stylelint-disable-line declaration-no-important\n    }\n\n    .offcanvas {\n      // stylelint-disable declaration-no-important\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      @include box-shadow(none);\n      @include transition(none);\n      // stylelint-enable declaration-no-important\n\n      .offcanvas-header {\n        display: none;\n      }\n\n      .offcanvas-body {\n        display: flex;\n        flex-grow: 0;\n        flex-direction: row;\n        align-items: center;\n        padding: 0;\n        overflow-y: visible;\n      }\n    }\n  }\n\n  // Always expanded (no responsive behavior)\n  .navbar-expand {\n    @include navbar-expanded();\n\n    // Also set on navbar itself for non-responsive case\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n\n  // Responsive navbar expand classes using container queries\n  @include loop-breakpoints-down($navbar-breakpoints) using ($breakpoint, $next, $infix) {\n    @if $next {\n      .navbar-expand#{$infix} {\n        @include container-breakpoint-up($next) {\n          @include navbar-expanded();\n        }\n      }\n    }\n  }\n  // scss-docs-end navbar-expand-loop\n\n  .navbar-translucent {\n    position: relative;\n    background-color: transparent;\n\n    &::before {\n      position: absolute;\n      inset: 0;\n      z-index: -1;\n      content: \"\";\n      background-color: color-mix(in oklch, var(--navbar-bg, var(--bg-body)) 80%, transparent);\n      background-image: none;\n      backdrop-filter: blur(5px) saturate(180%);\n    }\n  }\n\n  .navbar[data-bs-theme=\"dark\"] {\n    @include tokens($navbar-dark-tokens);\n  }\n}\n","@use \"functions\" as *;\n@use \"config\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/backdrop\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$offcanvas-tokens: () !default;\n\n// scss-docs-start offcanvas-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$offcanvas-tokens: defaults(\n  (\n    --offcanvas-inset: var(--spacer),\n    --offcanvas-zindex: #{$zindex-offcanvas},\n    --offcanvas-width: 400px,\n    --offcanvas-height: 30vh,\n    --offcanvas-padding-x: var(--spacer),\n    --offcanvas-padding-y: var(--spacer),\n    --offcanvas-color: var(--fg-body),\n    --offcanvas-bg: var(--bg-body),\n    --offcanvas-border-width: var(--border-width),\n    --offcanvas-border-color: var(--border-color-translucent),\n    --offcanvas-border-radius: var(--border-radius-lg),\n    --offcanvas-box-shadow: var(--box-shadow-lg),\n    --offcanvas-transition: transform .3s ease-in-out,\n    --offcanvas-title-line-height: 1.5,\n  ),\n  $offcanvas-tokens\n);\n// scss-docs-end offcanvas-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n$offcanvas-backdrop-tokens: () !default;\n\n// scss-docs-start offcanvas-backdrop-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$offcanvas-backdrop-tokens: defaults(\n  (\n    --offcanvas-backdrop-bg: var(--bg-body),\n    --offcanvas-backdrop-opacity: 25%,\n    --offcanvas-backdrop-blur: 8px,\n  ),\n  $offcanvas-backdrop-tokens\n);\n// scss-docs-end offcanvas-backdrop-tokens\n\n%offcanvas-css-vars {\n  @include tokens($offcanvas-tokens);\n}\n\n@layer components {\n  // Apply CSS vars to all offcanvas responsive variants\n  @include loop-breakpoints-down() using ($breakpoint, $next, $infix) {\n    .offcanvas#{$infix} {\n      @extend %offcanvas-css-vars;\n    }\n  }\n\n  // Responsive offcanvas styles\n  @include loop-breakpoints-down() using ($breakpoint, $next, $infix) {\n    .offcanvas#{$infix} {\n      @include media-breakpoint-down($next) {\n        position: fixed;\n        z-index: var(--offcanvas-zindex);\n        display: flex;\n        flex-direction: column;\n        max-width: calc(100% - var(--offcanvas-inset) * 2);\n        max-height: calc(100% - var(--offcanvas-inset) * 2);\n        color: var(--offcanvas-color);\n        visibility: hidden;\n        background-color: var(--offcanvas-bg);\n        background-clip: padding-box;\n        border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n        @include border-radius(var(--offcanvas-border-radius));\n        outline: 0;\n        @include box-shadow(var(--offcanvas-box-shadow));\n        @include transition(var(--offcanvas-transition));\n\n        // Placement: Start (left in LTR, right in RTL)\n        &:where(.offcanvas-start) {\n          inset-block: var(--offcanvas-inset);\n          inset-inline-start: var(--offcanvas-inset);\n          width: var(--offcanvas-width);\n          transform: translateX(-100%);\n\n          :root:dir(rtl) & {\n            transform: translateX(100%);\n          }\n        }\n\n        // Placement: End (right in LTR, left in RTL)\n        &:where(.offcanvas-end) {\n          inset-block: var(--offcanvas-inset);\n          inset-inline-end: var(--offcanvas-inset);\n          width: var(--offcanvas-width);\n          transform: translateX(100%);\n\n          :root:dir(rtl) & {\n            transform: translateX(-100%);\n          }\n        }\n\n        // Placement: Top\n        &:where(.offcanvas-top) {\n          inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n          height: var(--offcanvas-height);\n          transform: translateY(-100%);\n        }\n\n        // Placement: Bottom\n        &:where(.offcanvas-bottom) {\n          inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n          height: var(--offcanvas-height);\n          transform: translateY(100%);\n        }\n\n        // Fullscreen variant - covers entire viewport\n        &:where(.offcanvas-fullscreen) {\n          inset: var(--offcanvas-inset);\n          width: auto;\n          max-width: none;\n          height: auto;\n          max-height: none;\n          transform: translateY(100%);\n        }\n\n        // Show/hide states\n        &.showing,\n        &.show:not(.hiding) {\n          transform: none;\n        }\n\n        &.showing,\n        &.hiding,\n        &.show {\n          visibility: visible;\n        }\n      }\n\n      // Above breakpoint - show content inline (for responsive offcanvas)\n      @if not ($infix == \"\") {\n        @include media-breakpoint-up($next) {\n          --offcanvas-height: auto;\n          --offcanvas-border-width: 0;\n          background-color: transparent !important; // stylelint-disable-line declaration-no-important\n\n          .offcanvas-header {\n            display: none;\n          }\n\n          .offcanvas-body {\n            flex-grow: 0;\n            flex-direction: row;\n            padding: 0;\n            overflow-y: visible;\n            background-color: transparent !important; // stylelint-disable-line declaration-no-important\n          }\n        }\n      }\n    }\n  }\n\n  // Backdrop overlay\n  .offcanvas-backdrop {\n    @include tokens($offcanvas-backdrop-tokens);\n    @include overlay-backdrop($zindex-offcanvas-backdrop, var(--offcanvas-backdrop-bg), var(--offcanvas-backdrop-opacity), var(--offcanvas-backdrop-blur));\n  }\n\n  .offcanvas-translucent {\n    background-color: color-mix(in oklch, var(--offcanvas-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n\n  // Header with close button\n  .offcanvas-header {\n    display: flex;\n    align-items: center;\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n\n    .btn-close {\n      padding: calc(var(--offcanvas-padding-y) * .5) calc(var(--offcanvas-padding-x) * .5);\n      margin-inline-start: auto;\n      margin-inline-end: calc(-.5 * var(--offcanvas-padding-x));\n      margin-top: calc(-.5 * var(--offcanvas-padding-y));\n      margin-bottom: calc(-.5 * var(--offcanvas-padding-y));\n    }\n  }\n\n  // Title\n  .offcanvas-title {\n    margin-bottom: 0;\n    line-height: var(--offcanvas-title-line-height);\n  }\n\n  // Scrollable body\n  .offcanvas-body {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    gap: var(--offcanvas-padding-y);\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n    overflow-y: auto;\n  }\n\n  // Optional footer\n  .offcanvas-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: .5rem;\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n    border-block-start: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n  }\n\n  .offcanvas-fit-content {\n    inset-block-end: auto;\n  }\n}\n","// Shared between modals and offcanvases\n@mixin overlay-backdrop($zindex, $backdrop-bg, $backdrop-opacity, $backdrop-blur) {\n  position: fixed;\n  inset: 0;\n  z-index: $zindex;\n  background-color: color-mix(in oklch, var(--offcanvas-backdrop-bg) var(--offcanvas-backdrop-opacity), transparent);\n  @if $backdrop-blur {\n    backdrop-filter: blur($backdrop-blur);\n  }\n\n  // Fade for backdrop\n  &.fade { opacity: 0; }\n  &.show { opacity: 1; }\n}\n","@use \"functions\" as *;\n@use \"mixins/lists\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n// mdo-do: Update pagination to support variant themes\n\n// stylelint-disable custom-property-no-missing-var-function\n$pagination-tokens: () !default;\n\n// scss-docs-start pagination-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$pagination-tokens: defaults(\n  (\n    --pagination-min-height: var(--btn-input-min-height),\n    --pagination-padding-x: var(--btn-input-padding-x),\n    --pagination-padding-y: var(--btn-input-padding-y),\n    --pagination-font-size: var(--btn-input-font-size),\n    --pagination-color: var(--link-color),\n    --pagination-bg: var(--bg-body),\n    --pagination-border-width: var(--border-width),\n    --pagination-border-color: var(--border-color),\n    --pagination-border-radius: var(--btn-input-border-radius),\n    --pagination-hover-color: var(--link-hover-color),\n    --pagination-hover-bg: var(--bg-1),\n    --pagination-hover-border-color: var(--border-color),\n    --pagination-focus-color: var(--link-hover-color),\n    --pagination-focus-bg: var(--bg-2),\n    --pagination-active-color: var(--primary-contrast),\n    --pagination-active-bg: var(--primary-bg),\n    --pagination-active-border-color: var(--primary-bg),\n    --pagination-disabled-color: var(--fg-3),\n    --pagination-disabled-bg: var(--bg-2),\n    --pagination-disabled-border-color: var(--border-color),\n  ),\n  $pagination-tokens\n);\n// scss-docs-end pagination-tokens\n\n// scss-docs-start pagination-sizes\n$pagination-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$pagination-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $pagination-sizes\n);\n// scss-docs-end pagination-sizes\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .pagination {\n    @include tokens($pagination-tokens);\n\n    display: flex;\n    @include list-unstyled();\n  }\n\n  .page-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: var(--pagination-min-height);\n    padding: var(--pagination-padding-y) var(--pagination-padding-x);\n    font-size: var(--pagination-font-size);\n    color: var(--pagination-color);\n    text-decoration: none;\n    background-color: var(--pagination-bg);\n    border: var(--pagination-border-width) solid var(--pagination-border-color);\n    @include transition(color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out);\n\n    &:hover {\n      z-index: 2;\n      color: var(--pagination-hover-color);\n      background-color: var(--pagination-hover-bg);\n      border-color: var(--pagination-hover-border-color);\n    }\n\n    &:focus-visible {\n      z-index: 3;\n      color: var(--pagination-focus-color);\n      background-color: var(--pagination-focus-bg);\n      @include focus-ring(true);\n    }\n\n    &.active,\n    .active > & {\n      z-index: 3;\n      color: var(--pagination-active-color);\n      @include gradient-bg(var(--pagination-active-bg));\n      border-color: var(--pagination-active-border-color);\n    }\n\n    &.disabled,\n    .disabled > & {\n      color: var(--pagination-disabled-color);\n      pointer-events: none;\n      background-color: var(--pagination-disabled-bg);\n      border-color: var(--pagination-disabled-border-color);\n    }\n  }\n\n  .page-item {\n    &:not(:first-child) .page-link {\n      margin-inline-start: calc(-1 * var(--pagination-border-width));\n    }\n\n    &:first-child {\n      .page-link {\n        @include border-start-radius(var(--pagination-border-radius));\n      }\n    }\n\n    &:last-child {\n      .page-link {\n        @include border-end-radius(var(--pagination-border-radius));\n      }\n    }\n  }\n\n  //\n  // Sizing\n  //\n\n  // scss-docs-start pagination-sizes-loop\n  @each $size, $_ in $pagination-sizes {\n    .pagination-#{$size} {\n      --pagination-min-height: var(--bs-btn-input-#{$size}-min-height);\n      --pagination-padding-y: var(--btn-input-#{$size}-padding-y);\n      --pagination-padding-x: var(--btn-input-#{$size}-padding-x);\n      --pagination-font-size: var(--btn-input-#{$size}-font-size);\n      --pagination-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n  // scss-docs-end pagination-sizes-loop\n}\n","@use \"colors\" as *;\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n$placeholder-tokens: () !default;\n\n// scss-docs-start placeholder-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$placeholder-tokens: defaults(\n  (\n    --placeholder-opacity-max: .5,\n    --placeholder-opacity-min: .2,\n  ),\n  $placeholder-tokens\n);\n// scss-docs-end placeholder-tokens\n\n@layer components {\n  .placeholder {\n    @include tokens($placeholder-tokens);\n\n    display: inline-block;\n    min-height: 1em;\n    vertical-align: middle;\n    cursor: wait;\n    background-color: currentcolor;\n    opacity: var(--placeholder-opacity-max);\n\n    &.btn::before {\n      display: inline-block;\n      content: \"\";\n    }\n  }\n\n  // Sizing\n  .placeholder-xs {\n    min-height: .6em;\n  }\n\n  .placeholder-sm {\n    min-height: .8em;\n  }\n\n  .placeholder-lg {\n    min-height: 1.2em;\n  }\n\n  // Animation\n  .placeholder-glow {\n    .placeholder {\n      animation: placeholder-glow 2s ease-in-out infinite;\n    }\n  }\n\n  @keyframes placeholder-glow {\n    50% {\n      opacity: var(--placeholder-opacity-min);\n    }\n  }\n\n  .placeholder-wave {\n    mask-image: linear-gradient(130deg, $black 55%, rgba(0, 0, 0, calc(1 - var(--placeholder-opacity-min))) 75%, $black 95%);\n    mask-size: 200% 100%;\n    animation: placeholder-wave 2s linear infinite;\n  }\n\n  @keyframes placeholder-wave {\n    100% {\n      mask-position: -200% 0%;\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/reset-text\" as *;\n@use \"mixins/tokens\" as *;\n\n$popover-tokens: () !default;\n\n// scss-docs-start popover-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$popover-tokens: defaults(\n  (\n    --popover-zindex: #{$zindex-popover},\n    --popover-max-width: 280px,\n    --popover-font-size: var(--font-size-sm),\n    --popover-bg: var(--bg-body),\n    --popover-border-width: var(--border-width),\n    --popover-border-color: var(--border-color-translucent),\n    --popover-border-radius: var(--border-radius-lg),\n    --popover-inner-border-radius: calc(var(--border-radius-lg) - var(--border-width)),\n    --popover-box-shadow: var(--box-shadow),\n    --popover-header-padding-x: #{$spacer},\n    --popover-header-padding-y: #{$spacer * .75},\n    --popover-header-font-size: var(--font-size-sm),\n    --popover-header-color: #{$headings-color},\n    --popover-header-bg: var(--bg-1),\n    --popover-body-padding-x: #{$spacer},\n    --popover-body-padding-y: #{$spacer * .75},\n    --popover-body-color: var(--fg-body),\n    --popover-arrow-width: 1rem,\n    --popover-arrow-height: .5rem,\n    --popover-arrow-border: var(--popover-border-color),\n  ),\n  $popover-tokens\n);\n// scss-docs-end popover-tokens\n\n@layer components {\n  .popover {\n    // scss-docs-start popover-css-vars\n    @include tokens($popover-tokens);\n    // scss-docs-end popover-css-vars\n\n    z-index: var(--popover-zindex);\n    display: block;\n    max-width: var(--popover-max-width);\n    // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n    // So reset our font and text properties to avoid inheriting weird values.\n    @include reset-text();\n    font-size: var(--popover-font-size);\n    // Allow breaking very long words so they don't overflow the popover's bounds\n    word-wrap: break-word;\n    background-color: var(--popover-bg);\n    background-clip: padding-box;\n    border: var(--popover-border-width) solid var(--popover-border-color);\n    @include border-radius(var(--popover-border-radius));\n    @include box-shadow(var(--popover-box-shadow));\n\n    .popover-arrow {\n      display: block;\n      width: var(--popover-arrow-width);\n      height: var(--popover-arrow-height);\n\n      &::before,\n      &::after {\n        position: absolute;\n        display: block;\n        content: \"\";\n        border-color: transparent;\n        border-style: solid;\n        border-width: 0;\n      }\n    }\n  }\n\n  .bs-popover-top {\n    > .popover-arrow {\n      bottom: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n\n      &::before,\n      &::after {\n        border-width: var(--popover-arrow-height) calc(var(--popover-arrow-width) * .5) 0;\n      }\n\n      &::before {\n        bottom: 0;\n        border-block-start-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        bottom: var(--popover-border-width);\n        border-block-start-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-end {\n    > .popover-arrow {\n      left: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n      width: var(--popover-arrow-height);\n      height: var(--popover-arrow-width);\n\n      &::before,\n      &::after {\n        border-width: calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height) calc(var(--popover-arrow-width) * .5) 0;\n      }\n\n      &::before {\n        left: 0;\n        border-inline-end-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        left: var(--popover-border-width);\n        border-inline-end-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-bottom {\n    > .popover-arrow {\n      top: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n\n      &::before,\n      &::after {\n        border-width: 0 calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height);\n      }\n\n      &::before {\n        top: 0;\n        border-block-end-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        top: var(--popover-border-width);\n        border-block-end-color: var(--popover-bg);\n      }\n    }\n\n    // This will remove the popover-header's border just below the arrow\n    .popover-header::before {\n      position: absolute;\n      top: 0;\n      left: 50%;\n      display: block;\n      width: var(--popover-arrow-width);\n      margin-inline-start: calc(-.5 * var(--popover-arrow-width));\n      content: \"\";\n      border-block-end: var(--popover-border-width) solid var(--popover-header-bg);\n    }\n  }\n\n  .bs-popover-start {\n    > .popover-arrow {\n      right: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n      width: var(--popover-arrow-height);\n      height: var(--popover-arrow-width);\n\n      &::before,\n      &::after {\n        border-width: calc(var(--popover-arrow-width) * .5) 0 calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height);\n      }\n\n      &::before {\n        right: 0;\n        border-inline-start-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        right: var(--popover-border-width);\n        border-inline-start-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-auto {\n    &[data-bs-placement^=\"top\"] {\n      @extend .bs-popover-top;\n    }\n    &[data-bs-placement^=\"right\"] {\n      @extend .bs-popover-end;\n    }\n    &[data-bs-placement^=\"bottom\"] {\n      @extend .bs-popover-bottom;\n    }\n    &[data-bs-placement^=\"left\"] {\n      @extend .bs-popover-start;\n    }\n  }\n\n  // Offset the popover to account for the popover arrow\n  .popover-header {\n    padding: var(--popover-header-padding-y) var(--popover-header-padding-x);\n    margin-bottom: 0; // Reset the default from Reboot\n    font-size: var(--popover-header-font-size);\n    color: var(--popover-header-color);\n    background-color: var(--popover-header-bg);\n    border-block-end: var(--popover-border-width) solid var(--popover-border-color);\n    @include border-top-radius(var(--popover-inner-border-radius));\n\n    &:empty {\n      display: none;\n    }\n  }\n\n  .popover-body {\n    padding: var(--popover-body-padding-y) var(--popover-body-padding-x);\n    color: var(--popover-body-color);\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/tokens\" as *;\n\n$progress-tokens: () !default;\n\n// scss-docs-start progress-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$progress-tokens: defaults(\n  (\n    --progress-height: 1rem,\n    --progress-font-size: var(--font-size-sm),\n    --progress-bg: var(--bg-2),\n    --progress-border-radius: var(--border-radius),\n    --progress-box-shadow: var(--box-shadow-inset),\n    --progress-bar-color: var(--white),\n    --progress-bar-bg: var(--primary-bg),\n    --progress-bar-transition: width .6s ease,\n    --progress-bar-animation: progress-bar-stripes 1s linear infinite,\n  ),\n  $progress-tokens\n);\n// scss-docs-end progress-tokens\n\n// Disable animation if transitions are disabled\n\n@layer components {\n  // scss-docs-start progress-keyframes\n  @if $enable-transitions {\n    @keyframes progress-bar-stripes {\n      0% { background-position-x: var(--progress-height); }\n    }\n  }\n  // scss-docs-end progress-keyframes\n\n  .progress,\n  .progress-stacked {\n    @include tokens($progress-tokens);\n\n    display: flex;\n    height: var(--progress-height);\n    overflow: hidden;\n    font-size: var(--progress-font-size);\n    background-color: var(--progress-bg);\n    @include border-radius(var(--progress-border-radius));\n    @include box-shadow(var(--progress-box-shadow));\n  }\n\n  .progress-bar {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    overflow: hidden;\n    color: var(--theme-contrast, var(--progress-bar-color));\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--theme-bg, var(--progress-bar-bg));\n    @include transition(var(--progress-bar-transition));\n  }\n\n  .progress-bar-striped {\n    @include gradient-striped();\n    background-size: var(--progress-height) var(--progress-height);\n  }\n\n  .progress-stacked > .progress {\n    overflow: visible;\n  }\n\n  .progress-stacked > .progress > .progress-bar {\n    width: 100%;\n  }\n\n  @if $enable-transitions {\n    .progress-bar-animated {\n      animation: var(--progress-bar-animation);\n\n      @if $enable-reduced-motion {\n        @media (prefers-reduced-motion: reduce) {\n          animation: none;\n        }\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$spinner-border-tokens: () !default;\n\n// scss-docs-start spinner-border-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$spinner-border-tokens: defaults(\n  (\n    --spinner-width: 2rem,\n    --spinner-height: 2rem,\n    --spinner-vertical-align: -.125em,\n    --spinner-border-width: .25em,\n    --spinner-animation-speed: .75s,\n    --spinner-animation-name: spinner-border,\n  ),\n  $spinner-border-tokens\n);\n// scss-docs-end spinner-border-tokens\n\n$spinner-grow-tokens: () !default;\n\n// scss-docs-start spinner-grow-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$spinner-grow-tokens: defaults(\n  (\n    --spinner-width: 2rem,\n    --spinner-height: 2rem,\n    --spinner-vertical-align: -.125em,\n    --spinner-animation-speed: .75s,\n    --spinner-animation-name: spinner-grow,\n  ),\n  $spinner-grow-tokens\n);\n// scss-docs-end spinner-grow-tokens\n\n// stylelint-enable custom-property-no-missing-var-function\n\n//\n// Rotating border\n//\n\n@layer components {\n  // mdo-do: Refactor this to assume flex parent and remove `vertical-align`\n  .spinner-grow,\n  .spinner-border {\n    display: inline-block;\n    flex-shrink: 0;\n    width: var(--spinner-width);\n    height: var(--spinner-height);\n    vertical-align: var(--spinner-vertical-align);\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 50%;\n    animation: var(--spinner-animation-speed) linear infinite var(--spinner-animation-name);\n  }\n\n  // scss-docs-start spinner-border-keyframes\n  @keyframes spinner-border {\n    to { transform: rotate(360deg); }\n  }\n  // scss-docs-end spinner-border-keyframes\n\n  .spinner-border {\n    @include tokens($spinner-border-tokens);\n\n    border: var(--spinner-border-width) solid currentcolor;\n    border-inline-end-color: transparent;\n  }\n\n  .spinner-border-sm {\n    // scss-docs-start spinner-border-sm-css-vars\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    --spinner-border-width: .2em;\n    // scss-docs-end spinner-border-sm-css-vars\n  }\n\n  //\n  // Growing circle\n  //\n\n  // scss-docs-start spinner-grow-keyframes\n  @keyframes spinner-grow {\n    0% {\n      transform: scale(0);\n    }\n    50% {\n      opacity: 1;\n      transform: none;\n    }\n  }\n  // scss-docs-end spinner-grow-keyframes\n\n  .spinner-grow {\n    @include tokens($spinner-grow-tokens);\n\n    background-color: currentcolor;\n    opacity: 0;\n  }\n\n  .spinner-grow-sm {\n    // scss-docs-start spinner-grow-sm-css-vars\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    // scss-docs-end spinner-grow-sm-css-vars\n  }\n\n  @if $enable-reduced-motion {\n    @media (prefers-reduced-motion: reduce) {\n      .spinner-border,\n      .spinner-grow {\n        --spinner-animation-speed: 1.5s;\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$stepper-tokens: () !default;\n\n// scss-docs-start stepper-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$stepper-tokens: defaults(\n  (\n    --stepper-size: 2rem,\n    --stepper-gap: 1rem,\n    --stepper-bg: var(--bg-2),\n    --stepper-track-size: .25rem,\n    --stepper-active-color: var(--primary-contrast),\n    --stepper-active-bg: var(--primary-bg),\n  ),\n  $stepper-tokens\n);\n// scss-docs-end stepper-tokens\n\n// scss-docs-start stepper-horizontal-mixin\n@mixin stepper-horizontal() {\n  display: inline-grid;\n  grid-auto-columns: 1fr;\n  grid-auto-flow: column;\n\n  .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n\n    &::after {\n      top: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n      right: 0;\n      bottom: auto;\n      left: calc(-50% - var(--stepper-gap));\n      width: auto;\n      height: var(--stepper-track-size);\n    }\n\n    &:last-child::after {\n      right: 50%;\n    }\n  }\n}\n// scss-docs-end stepper-horizontal-mixin\n\n// scss-docs-start stepper-css\n.stepper {\n  // scss-docs-start stepper-css-vars\n  @include tokens($stepper-tokens);\n  // scss-docs-end stepper-css-vars\n\n  display: grid;\n  grid-auto-rows: 1fr;\n  grid-auto-flow: row;\n  gap: var(--stepper-gap);\n  padding-left: 0;\n  list-style: none;\n  counter-reset: stepper;\n}\n\n.stepper-item {\n  position: relative;\n  display: grid;\n  grid-template-rows: auto;\n  grid-template-columns: var(--stepper-size) auto;\n  gap: .5rem;\n  place-items: center;\n  justify-items: start;\n  text-align: center;\n  text-decoration: none;\n\n  // The counter\n  &::before {\n    position: relative;\n    z-index: 1;\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--stepper-size);\n    height: var(--stepper-size);\n    padding: .5rem;\n    font-weight: 600;\n    line-height: 1;\n    text-align: center;\n    content: counter(stepper);\n    counter-increment: stepper;\n    background-color: var(--stepper-bg);\n    @include border-radius(50%);\n  }\n\n  // Connecting lines\n  &::after {\n    position: absolute;\n    top: calc(var(--stepper-gap) * -1);\n    bottom: 100%;\n    left: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n    width: var(--stepper-track-size);\n    content: \"\";\n    background-color: var(--stepper-bg);\n  }\n\n  // Avoid sibling selector for easier CSS overrides\n  &:first-child::after {\n    display: none;\n  }\n\n  &.active {\n    &::before,\n    &::after {\n      color: var(--theme-contrast, var(--stepper-active-color));\n      background-color: var(--theme-bg, var(--stepper-active-bg));\n    }\n  }\n}\n\n@each $breakpoint in map.keys($breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    .stepper-horizontal#{$infix} {\n      @include stepper-horizontal();\n    }\n  }\n}\n\n// scss-docs-start stepper-overflow\n.stepper-overflow {\n  container-type: inline-size;\n  overflow-x: auto;\n  overscroll-behavior-x: contain;\n  -webkit-overflow-scrolling: touch;\n\n  > .stepper {\n    width: max-content;\n    min-width: 100%;\n  }\n}\n// scss-docs-end stepper-overflow\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$toast-tokens: () !default;\n\n// scss-docs-start toast-tokens\n// stylelint-disable custom-property-no-missing-var-function\n// stylelint-disable-next-line scss/dollar-variable-default\n$toast-tokens: defaults(\n  (\n    --toast-zindex: #{$zindex-toast},\n    --toast-padding-x: .75rem,\n    --toast-padding-y: .5rem,\n    --toast-spacing: #{$container-padding-x},\n    --toast-max-width: 350px,\n    --toast-font-size: .875rem,\n    --toast-color: null,\n    --toast-bg: rgba(var(--body-bg-rgb), .85),\n    --toast-border-width: var(--border-width),\n    --toast-border-color: var(--border-color-translucent),\n    --toast-border-radius: var(--border-radius),\n    --toast-box-shadow: var(--box-shadow),\n    --toast-header-color: var(--fg-3),\n    --toast-header-bg: rgba(var(--body-bg-rgb), .85),\n    --toast-header-border-color: var(--border-color-translucent),\n  ),\n  $toast-tokens\n);\n// stylelint-enable custom-property-no-missing-var-function\n// scss-docs-end toast-tokens\n\n@layer components {\n  .toast {\n    @include tokens($toast-tokens);\n\n    width: var(--toast-max-width);\n    max-width: 100%;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color);\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--toast-border-color);\n    box-shadow: var(--toast-box-shadow);\n    @include border-radius(var(--toast-border-radius));\n\n    &.showing {\n      opacity: 0;\n    }\n\n    &:not(.show) {\n      display: none;\n    }\n  }\n\n  .toast-container {\n    --toast-zindex: #{$zindex-toast};\n\n    position: absolute;\n    z-index: var(--toast-zindex);\n    width: max-content;\n    max-width: 100%;\n    pointer-events: none;\n\n    > :not(:last-child) {\n      margin-bottom: var(--toast-spacing);\n    }\n  }\n\n  .toast-header {\n    display: flex;\n    align-items: center;\n    padding: var(--toast-padding-y) var(--toast-padding-x);\n    color: var(--toast-header-color);\n    background-color: var(--toast-header-bg);\n    background-clip: padding-box;\n    border-block-end: var(--toast-border-width) solid var(--toast-header-border-color);\n    @include border-top-radius(calc(var(--toast-border-radius) - var(--toast-border-width)));\n\n    .btn-close {\n      margin-inline-start: var(--toast-padding-x);\n      margin-inline-end: calc(-.5 * var(--toast-padding-x));\n    }\n  }\n\n  .toast-translucent {\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n\n  .toast-body {\n    padding: var(--toast-padding-x);\n    word-wrap: break-word;\n  }\n}\n","@use \"config\" as *;\n@use \"mixins/transition\" as *;\n\n.fade {\n  @include transition($transition-fade);\n\n  &:not(.show) {\n    opacity: 0;\n  }\n}\n\n// scss-docs-start collapse-classes\n.collapse {\n  &:not(.show) {\n    display: none;\n  }\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  @include transition($transition-collapse);\n\n  &.collapse-horizontal {\n    width: 0;\n    height: auto;\n    @include transition($transition-collapse-width);\n  }\n}\n// scss-docs-end collapse-classes\n","@layer helpers {\n  .focus-ring:focus-visible {\n    outline: var(--focus-ring);\n  }\n}\n","@use \"../config\" as *;\n@use \"../mixins/transition\" as *;\n\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: $icon-link-gap;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, .5));\n    text-underline-offset: $icon-link-underline-offset;\n    backface-visibility: hidden;\n\n    > .bi {\n      flex-shrink: 0;\n      width: $icon-link-icon-size;\n      height: $icon-link-icon-size;\n      fill: currentcolor;\n      @include transition($icon-link-icon-transition);\n    }\n  }\n\n  .icon-link-hover {\n    &:hover,\n    &:focus-visible {\n      > .bi {\n        transform: var(--icon-link-transform, $icon-link-icon-transform);\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: $zindex-fixed;\n  }\n\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: $zindex-fixed;\n  }\n\n  // Responsive sticky top and bottom\n  @each $breakpoint in map.keys($breakpoints) {\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      .sticky#{$infix}-top {\n        position: sticky;\n        top: 0;\n        z-index: $zindex-sticky;\n      }\n\n      .sticky#{$infix}-bottom {\n        position: sticky;\n        bottom: 0;\n        z-index: $zindex-sticky;\n      }\n    }\n  }\n}\n","@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  // scss-docs-start stacks\n  .stack-container {\n    @include set-container();\n  }\n\n  [class*=\"hstack\"],\n  [class*=\"vstack\"] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n\n  @include loop-breakpoints-up() using ($breakpoint, $infix) {\n    .vstack#{$infix} {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: column;\n        --stack-align-items: stretch;\n      }\n    }\n    .hstack#{$infix} {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: row;\n        --stack-align-items: flex-start;\n      }\n    }\n  }\n  // scss-docs-end stacks\n}\n","@use \"../theme\" as *;\n\n// Generate theme modifier classes (e.g., .theme-primary, .theme-accent, etc.)\n@layer helpers {\n  @include generate-theme-classes();\n}\n","@use \"sass:meta\";\n@use \"sass:map\";\n\n@function theme-color-values($key) {\n  $result: ();\n\n  @each $color-name, $color-map in $theme-colors {\n    @if map.has-key($color-map, $key) {\n      $result: map.merge($result, ($color-name: map.get($color-map, $key)));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate opacity values using color-mix()\n@function theme-opacity-values($color-var, $opacities: $util-opacity) {\n  $result: ();\n\n  @each $key, $value in $opacities {\n    @if $key == 100 {\n      // For 100%, use direct variable reference (more efficient)\n      $result: map.merge($result, ($key: var($color-var)));\n    } @else {\n      // For other values, use color-mix()\n      $percentage: $key * 1%;\n      $result: map.merge($result, ($key: color-mix(in oklch, var($color-var) $percentage, transparent)));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate theme classes dynamically based on the keys in each theme color map\n@mixin generate-theme-classes() {\n  @each $color-name, $color-map in $theme-colors {\n    .theme-#{$color-name} {\n      @each $key, $value in $color-map {\n        --theme-#{$key}: var(--#{$color-name}-#{$key});\n      }\n    }\n  }\n}\n\n// Recursive mixin to handle nested maps\n@mixin create-css-vars($map, $parent-key: \"\") {\n  @each $key, $value in $map {\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    $current-key: if(sass($parent-key == \"\"): $key; else: \"#{$parent-key}-#{$key}\");\n\n    @if meta.type-of($value) == \"map\" {\n      @include create-css-vars($value, $current-key);\n    } @else {\n      --#{$current-key}: #{$value};\n    }\n  }\n}\n\n// scss-docs-start theme-colors\n$theme-colors: (\n  \"primary\": (\n    \"base\": var(--blue-500),\n    \"text\": light-dark(var(--blue-600), var(--blue-400)),\n    \"text-emphasis\": light-dark(var(--blue-800), var(--blue-200)),\n    \"bg\": var(--blue-500),\n    \"bg-subtle\": light-dark(var(--blue-100), var(--blue-900)),\n    \"bg-muted\": light-dark(var(--blue-200), var(--blue-800)),\n    \"border\": light-dark(var(--blue-300), var(--blue-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"accent\": (\n    \"base\": var(--indigo-500),\n    \"text\": light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300))),\n    \"text-emphasis\": light-dark(var(--indigo-800), var(--indigo-300)),\n    \"bg\": var(--indigo-500),\n    \"bg-subtle\": light-dark(var(--indigo-100), var(--indigo-900)),\n    \"bg-muted\": light-dark(var(--indigo-200), var(--indigo-800)),\n    \"border\": light-dark(var(--indigo-300), var(--indigo-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"success\": (\n    \"base\": var(--green-500),\n    \"text\": light-dark(var(--green-600), var(--green-400)),\n    \"text-emphasis\": light-dark(var(--green-800), var(--green-300)),\n    \"bg\": var(--green-500),\n    \"bg-subtle\": light-dark(var(--green-100), var(--green-900)),\n    \"bg-muted\": light-dark(var(--green-200), var(--green-800)),\n    \"border\": light-dark(var(--green-300), var(--green-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"danger\": (\n    \"base\": var(--red-500),\n    \"text\": light-dark(var(--red-600), var(--red-400)),\n    \"text-emphasis\": light-dark(var(--red-800), var(--red-300)),\n    \"bg\": var(--red-500),\n    \"bg-subtle\": light-dark(var(--red-100), var(--red-900)),\n    \"bg-muted\": light-dark(var(--red-200), var(--red-800)),\n    \"border\": light-dark(var(--red-300), var(--red-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"warning\": (\n    \"base\": var(--yellow-500),\n    \"text\": light-dark(var(--yellow-700), var(--yellow-400)),\n    \"text-emphasis\": light-dark(var(--yellow-800), var(--yellow-300)),\n    \"bg\": var(--yellow-500),\n    \"bg-subtle\": light-dark(var(--yellow-100), var(--yellow-900)),\n    \"bg-muted\": light-dark(var(--yellow-200), var(--yellow-800)),\n    \"border\": light-dark(var(--yellow-300), var(--yellow-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"info\": (\n    \"base\": var(--cyan-500),\n    \"text\": light-dark(var(--cyan-600), var(--cyan-400)),\n    \"text-emphasis\": light-dark(var(--cyan-800), var(--cyan-300)),\n    \"bg\": var(--cyan-500),\n    \"bg-subtle\": light-dark(var(--cyan-100), var(--cyan-900)),\n    \"bg-muted\": light-dark(var(--cyan-200), var(--cyan-800)),\n    \"border\": light-dark(var(--cyan-300), var(--cyan-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"inverse\": (\n    \"base\": var(--gray-900),\n    \"text\": light-dark(var(--gray-900), var(--gray-200)),\n    \"text-emphasis\": light-dark(var(--gray-975), var(--white)),\n    \"bg\": light-dark(var(--gray-900), var(--gray-025)),\n    \"bg-subtle\": light-dark(var(--gray-100), var(--gray-900)),\n    \"bg-muted\": light-dark(var(--gray-200), var(--gray-300)),\n    \"border\": light-dark(var(--gray-400), var(--gray-100)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--white), var(--gray-900))\n  ),\n  \"secondary\": (\n    \"base\": var(--gray-200),\n    \"text\": light-dark(var(--gray-600), var(--gray-400)),\n    \"text-emphasis\": light-dark(var(--gray-800), var(--gray-200)),\n    \"bg\": light-dark(var(--gray-100), var(--gray-600)),\n    \"bg-subtle\": light-dark(var(--gray-050), var(--gray-800)),\n    \"bg-muted\": light-dark(var(--gray-100), var(--gray-700)),\n    \"border\": light-dark(var(--gray-300), var(--gray-600)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--gray-900), var(--white))\n  )\n) !default;\n// scss-docs-end theme-colors\n\n// mdo-do: consider using muted, subtle, ghost or something instead of linear scale?\n$theme-bgs: (\n  \"body\": light-dark(var(--white), var(--gray-975)),\n  \"1\": light-dark(var(--gray-025), var(--gray-950)),\n  \"2\": light-dark(var(--gray-050), var(--gray-900)),\n  \"3\": light-dark(var(--gray-100), var(--gray-800)),\n  \"4\": light-dark(var(--gray-200), var(--gray-700)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"transparent\": transparent,\n  \"inherit\": inherit,\n) !default;\n\n$theme-fgs: (\n  \"body\": light-dark(var(--gray-900), var(--gray-050)),\n  \"1\": light-dark(var(--gray-800), var(--gray-200)),\n  \"2\": light-dark(var(--gray-700), var(--gray-300)),\n  \"3\": light-dark(var(--gray-600), var(--gray-500)),\n  \"4\": light-dark(var(--gray-500), var(--gray-600)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"inherit\": inherit,\n) !default;\n\n$theme-borders: (\n  \"bg\": var(--bg-body),\n  \"body\": light-dark(var(--gray-300), var(--gray-800)),\n  \"muted\": light-dark(var(--gray-200), var(--gray-800)),\n  \"subtle\": light-dark(var(--gray-100), var(--gray-900)),\n  \"emphasized\": light-dark(var(--gray-400), var(--gray-600)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n) !default;\n\n$util-opacity: (\n  10: .1,\n  20: .2,\n  30: .3,\n  40: .4,\n  50: .5,\n  60: .6,\n  70: .7,\n  80: .8,\n  90: .9,\n  100: 1\n) !default;\n","@use \"../mixins/visually-hidden\" as *;\n\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","// stylelint-disable declaration-no-important\n\n// Hide content visually while keeping it accessible to assistive technologies\n//\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin visually-hidden() {\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n\n  // Fix for positioned table caption that could become anonymous cells\n  &:not(caption) {\n    position: absolute !important;\n  }\n\n  // Fix to prevent overflowing children to become focusable\n  * {\n    overflow: hidden !important;\n  }\n}\n\n// Use to only display content when it's focused, or one of its child elements is focused\n// (i.e. when focus is within the element/container that the class was applied to)\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/WAI/WCAG22/Techniques/general/G1.html\n\n@mixin visually-hidden-focusable() {\n  &:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","@use \"../config\" as *;\n\n@layer helpers {\n  .stretched-link {\n    &::#{$stretched-link-pseudo-element} {\n      position: absolute;\n      inset: 0;\n      z-index: $stretched-link-z-index;\n      content: \"\";\n    }\n  }\n}\n","@use \"../mixins/text-truncate\" as *;\n\n@layer helpers {\n  .text-truncate {\n    @include text-truncate();\n  }\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n","@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n@use \"../mixins/utilities\" as *;\n@use \"../utilities\" as *;\n\n@layer utilities {\n  // Loop over each breakpoint\n  @each $breakpoint in map.keys($breakpoints) {\n\n    // Generate media query if needed\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if meta.type-of($utility) == \"map\" and (map.get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix);\n        }\n      }\n    }\n  }\n\n  // Print utilities\n  @media print {\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Then check if the utility needs print styles\n      @if meta.type-of($utility) == \"map\" and map.get($utility, print) == true {\n        @include generate-utility($utility, \"-print\");\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n\n// stylelint-disable scss/dollar-variable-pattern\n\n// Utility generator\n\n// - Utilities can use three different types of selectors:\n//   - class: .class\n//   - attr-starts: [class^=\"class\"]\n//   - attr-includes: [class*=\"class\"]\n// - Utilities can generate regular CSS properties and CSS custom properties\n// - Utilities can be responsive or not\n// - Utilities can have state variants (e.g., hover, focus, active)\n// - Utilities can define local CSS variables\n//\n// CSS custom properties can be generated in two ways:\n//\n// 1. Property map with null values (CSS var receives the utility value):\n// \"bg-color\": (\n//   property: (\n//     \"--bg\": null,\n//     \"background-color\": var(--bg)\n//   ),\n//   class: bg,\n//   values: (\n//     primary: var(--blue-500),\n//   )\n// )\n// Generates:\n// .bg-primary {\n//   --bs-bg: var(--bs-blue-500);\n//   background-color: var(--bs-bg);\n// }\n//\n// 2. Variables map (static CSS custom properties on every class):\n// \"link-underline\": (\n//   property: text-decoration-color,\n//   class: link-underline,\n//   variables: (\n//     \"link-underline-opacity\": 1\n//   ),\n//   values: (...)\n// )\n// Generates:\n// .link-underline {\n//   --bs-link-underline-opacity: 1;\n//   text-decoration-color: ...;\n// }\n\n// Helper mixin to generate CSS properties for both legacy and property map approaches\n@mixin generate-properties($utility, $propertyMap, $properties, $value) {\n  @if $propertyMap != null {\n    // New Property-Value Mapping approach\n    @each $property, $defaultValue in $propertyMap {\n      // If value is a map, check if it has a key for this property\n      // Otherwise, use defaultValue (or $value if defaultValue is null)\n      $actualValue: $defaultValue;\n      @if meta.type-of($value) == \"map\" and map.has-key($value, $property) {\n        $actualValue: map.get($value, $property);\n      } @else if $defaultValue == null {\n        $actualValue: $value;\n      }\n      @if map.get($utility, important) {\n        #{$property}: $actualValue !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $actualValue;\n      }\n    }\n  } @else {\n    // Legacy approach\n    @each $property in $properties {\n      @if map.get($utility, important) {\n        #{$property}: $value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $value;\n      }\n    }\n  }\n}\n\n@mixin generate-utility($utility, $infix: \"\") {\n  // Validate required keys\n  @if not map.has-key($utility, property) {\n    @error \"Utility is missing required `property` key: #{$utility}\";\n  }\n  @if not map.has-key($utility, values) {\n    @error \"Utility is missing required `values` key: #{$utility}\";\n  }\n\n  // Warn on unknown keys (likely typos)\n  $valid-keys: property, values, class, selector, responsive, print, important, state, variables;\n  @each $key in map.keys($utility) {\n    @if not list.index($valid-keys, $key) {\n      @warn \"Unknown utility key `#{$key}` found. Valid keys are: #{$valid-keys}\";\n    }\n  }\n\n  // Determine if we're generating a class, or an attribute selector\n  $selectorType: \"class\";\n  @if map.has-key($utility, selector) {\n    $selectorType: map.get($utility, selector);\n    // Validate selector type\n    $valid-selectors: \"class\", \"attr-starts\", \"attr-includes\";\n    @if not list.index($valid-selectors, $selectorType) {\n      @error \"Invalid `selector` value `#{$selectorType}`. Must be one of: #{$valid-selectors}\";\n    }\n  }\n  // Then get the class name to use in a class (e.g., .class) or in a attribute selector (e.g., [class^=\"class\"])\n  $selectorClass: map.get($utility, class);\n\n  // Attribute selectors require a `class` key\n  @if $selectorType != \"class\" and not map.has-key($utility, class) {\n    @error \"Utility with `selector: #{$selectorType}` requires a `class` key.\";\n  }\n\n  // Get the list or map of values and ensure it's a map\n  $values: map.get($utility, values);\n  @if meta.type-of($values) != \"map\" {\n    @if meta.type-of($values) == \"list\" {\n      $list: ();\n      @each $value in $values {\n        $list: map.merge($list, ($value: $value));\n      }\n      $values: $list;\n    } @else {\n      $values: (null: $values);\n    }\n  }\n\n  // Calculate infix once, before the loop\n  // Note: $infix already includes the leading dash from breakpoint-infix()\n  // $infix: if($infix == \"\", \"\", \"-\" + $infix);\n\n  @each $key, $value in $values {\n    $properties: map.get($utility, property);\n    $propertyMap: null;\n    $customClass: \"\";\n\n    // Check if property is a map (new Property-Value Mapping approach)\n    // @debug \"Properties type: #{meta.type-of($properties)}\";\n    // @debug \"Properties: #{$properties}\";\n    @if meta.type-of($properties) == \"map\" {\n      $propertyMap: $properties;\n      // For property maps, we need to determine the class from the utility definition\n      $customClass: \"\";\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      }\n    } @else {\n      // Legacy approach: Multiple properties are possible, for example with vertical or horizontal margins or paddings\n      @if meta.type-of($properties) == \"string\" {\n        $properties: list.append((), $properties);\n      }\n      // Use custom class if present, otherwise use the first value from the list of properties\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      } @else {\n        $customClass: list.nth($properties, 1);\n      }\n      @if $customClass == null {\n        $customClass: \"\";\n      }\n    }\n\n    // Use custom CSS variable name if present, otherwise default to `class`\n    // mdo-do: restore?\n    // $css-variable-name: if(map.has-key($utility, css-variable-name), map.get($utility, css-variable-name), map.get($utility, class));\n\n    // State params to generate state variants\n    $state: ();\n    @if map.has-key($utility, state) {\n      $state: map.get($utility, state);\n    }\n\n    // $infix: if($customClass == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (e.g. with shadow class)\n    $customClassModifier: \"\";\n    @if $key {\n      @if $customClass == \"\" and $infix == \"\" {\n        $customClassModifier: $key;\n      } @else {\n        $customClassModifier: \"-\" + $key;\n      }\n    }\n\n    $selector: \"\";\n    @if $selectorType == \"class\" {\n      // Use the fallback of the first property if no `class` key is used\n      @if $customClass != \"\" {\n        $selector: \".#{$customClass + $infix + $customClassModifier}\";\n      } @else {\n        $selector: \".#{$selectorClass + $infix + $customClassModifier}\";\n      }\n    } @else if $selectorType == \"attr-starts\" {\n      $selector: \"[class^=\\\"#{$selectorClass}\\\"]\";\n    } @else if $selectorType == \"attr-includes\" {\n      $selector: \"[class*=\\\"#{$selectorClass}\\\"]\";\n    }\n\n    // @debug $utility;\n    // @debug $selectorType;\n    // @debug $selector;\n    // @debug $properties;\n    // @debug $values;\n\n    #{$selector} {\n      // Generate CSS custom properties (variables) if provided\n      // Variables receive the current utility value, then properties reference them\n      @if map.has-key($utility, variables) {\n        $variables: map.get($utility, variables);\n        @if meta.type-of($variables) == \"list\" {\n          // If variables is a list, each variable gets the utility value\n          @each $var-name in $variables {\n            --#{$var-name}: #{$value};\n          }\n        } @else if meta.type-of($variables) == \"map\" {\n          // If variables is a map, use the provided values (for static variables)\n          @each $var-key, $var-value in $variables {\n            --#{$var-key}: #{$var-value};\n          }\n        }\n      }\n      @include generate-properties($utility, $propertyMap, $properties, $value);\n    }\n\n    // Generate state variants\n    @if $state != () {\n      @each $state-variant in $state {\n        #{$selector}-#{$state-variant}:#{$state-variant} {\n          // Generate CSS custom properties (variables) if provided\n          @if map.has-key($utility, variables) {\n            $variables: map.get($utility, variables);\n            @if meta.type-of($variables) == \"list\" {\n              // If variables is a list, each variable gets the utility value\n              @each $var-name in $variables {\n                --#{$var-name}: #{$value};\n              }\n            } @else if meta.type-of($variables) == \"map\" {\n              // If variables is a map, use the provided values (for static variables)\n              @each $var-key, $var-value in $variables {\n                --#{$var-key}: #{$var-value};\n              }\n            }\n          }\n          @include generate-properties($utility, $propertyMap, $properties, $value);\n        }\n      }\n    }\n  }\n}\n"]}
\ No newline at end of file
index 7bed1cd30e51a27e3d6ddcc61030c851f80874e8..032dcd7e531e8b9b76bb3ef32f31270b2738e9a4 100644 (file)
@@ -1,2 +1,2 @@
-:root{--bs-blue-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .24 240));--bs-blue-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .24 240));--bs-blue-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .24 240));--bs-blue-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .24 240));--bs-blue-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .24 240));--bs-blue-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .24 240));--bs-blue-500:oklch(60% .24 240);--bs-blue-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .24 240));--bs-blue-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .24 240));--bs-blue-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .24 240));--bs-blue-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .24 240));--bs-blue-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .24 240));--bs-blue-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .24 240));--bs-indigo-025:color-mix(in lab,var(--bs-white)94%,oklch(56% .26 288));--bs-indigo-050:color-mix(in lab,var(--bs-white)90%,oklch(56% .26 288));--bs-indigo-100:color-mix(in lab,var(--bs-white)80%,oklch(56% .26 288));--bs-indigo-200:color-mix(in lab,var(--bs-white)60%,oklch(56% .26 288));--bs-indigo-300:color-mix(in lab,var(--bs-white)40%,oklch(56% .26 288));--bs-indigo-400:color-mix(in lab,var(--bs-white)20%,oklch(56% .26 288));--bs-indigo-500:oklch(56% .26 288);--bs-indigo-600:color-mix(in lab,var(--bs-black)16%,oklch(56% .26 288));--bs-indigo-700:color-mix(in lab,var(--bs-black)32%,oklch(56% .26 288));--bs-indigo-800:color-mix(in lab,var(--bs-black)48%,oklch(56% .26 288));--bs-indigo-900:color-mix(in lab,var(--bs-black)64%,oklch(56% .26 288));--bs-indigo-950:color-mix(in lab,var(--bs-black)76%,oklch(56% .26 288));--bs-indigo-975:color-mix(in lab,var(--bs-black)88%,oklch(56% .26 288));--bs-violet-025:color-mix(in lab,var(--bs-white)94%,oklch(56% .24 300));--bs-violet-050:color-mix(in lab,var(--bs-white)90%,oklch(56% .24 300));--bs-violet-100:color-mix(in lab,var(--bs-white)80%,oklch(56% .24 300));--bs-violet-200:color-mix(in lab,var(--bs-white)60%,oklch(56% .24 300));--bs-violet-300:color-mix(in lab,var(--bs-white)40%,oklch(56% .24 300));--bs-violet-400:color-mix(in lab,var(--bs-white)20%,oklch(56% .24 300));--bs-violet-500:oklch(56% .24 300);--bs-violet-600:color-mix(in lab,var(--bs-black)16%,oklch(56% .24 300));--bs-violet-700:color-mix(in lab,var(--bs-black)32%,oklch(56% .24 300));--bs-violet-800:color-mix(in lab,var(--bs-black)48%,oklch(56% .24 300));--bs-violet-900:color-mix(in lab,var(--bs-black)64%,oklch(56% .24 300));--bs-violet-950:color-mix(in lab,var(--bs-black)76%,oklch(56% .24 300));--bs-violet-975:color-mix(in lab,var(--bs-black)88%,oklch(56% .24 300));--bs-purple-025:color-mix(in lab,var(--bs-white)94%,oklch(56% .24 320));--bs-purple-050:color-mix(in lab,var(--bs-white)90%,oklch(56% .24 320));--bs-purple-100:color-mix(in lab,var(--bs-white)80%,oklch(56% .24 320));--bs-purple-200:color-mix(in lab,var(--bs-white)60%,oklch(56% .24 320));--bs-purple-300:color-mix(in lab,var(--bs-white)40%,oklch(56% .24 320));--bs-purple-400:color-mix(in lab,var(--bs-white)20%,oklch(56% .24 320));--bs-purple-500:oklch(56% .24 320);--bs-purple-600:color-mix(in lab,var(--bs-black)16%,oklch(56% .24 320));--bs-purple-700:color-mix(in lab,var(--bs-black)32%,oklch(56% .24 320));--bs-purple-800:color-mix(in lab,var(--bs-black)48%,oklch(56% .24 320));--bs-purple-900:color-mix(in lab,var(--bs-black)64%,oklch(56% .24 320));--bs-purple-950:color-mix(in lab,var(--bs-black)76%,oklch(56% .24 320));--bs-purple-975:color-mix(in lab,var(--bs-black)88%,oklch(56% .24 320));--bs-pink-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .22 4));--bs-pink-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .22 4));--bs-pink-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .22 4));--bs-pink-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .22 4));--bs-pink-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .22 4));--bs-pink-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .22 4));--bs-pink-500:oklch(60% .22 4);--bs-pink-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .22 4));--bs-pink-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .22 4));--bs-pink-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .22 4));--bs-pink-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .22 4));--bs-pink-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .22 4));--bs-pink-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .22 4));--bs-red-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .22 20));--bs-red-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .22 20));--bs-red-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .22 20));--bs-red-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .22 20));--bs-red-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .22 20));--bs-red-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .22 20));--bs-red-500:oklch(60% .22 20);--bs-red-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .22 20));--bs-red-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .22 20));--bs-red-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .22 20));--bs-red-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .22 20));--bs-red-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .22 20));--bs-red-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .22 20));--bs-orange-025:color-mix(in lab,var(--bs-white)94%,oklch(70% .22 52));--bs-orange-050:color-mix(in lab,var(--bs-white)90%,oklch(70% .22 52));--bs-orange-100:color-mix(in lab,var(--bs-white)80%,oklch(70% .22 52));--bs-orange-200:color-mix(in lab,var(--bs-white)60%,oklch(70% .22 52));--bs-orange-300:color-mix(in lab,var(--bs-white)40%,oklch(70% .22 52));--bs-orange-400:color-mix(in lab,var(--bs-white)20%,oklch(70% .22 52));--bs-orange-500:oklch(70% .22 52);--bs-orange-600:color-mix(in lab,var(--bs-black)16%,oklch(70% .22 52));--bs-orange-700:color-mix(in lab,var(--bs-black)32%,oklch(70% .22 52));--bs-orange-800:color-mix(in lab,var(--bs-black)48%,oklch(70% .22 52));--bs-orange-900:color-mix(in lab,var(--bs-black)64%,oklch(70% .22 52));--bs-orange-950:color-mix(in lab,var(--bs-black)76%,oklch(70% .22 52));--bs-orange-975:color-mix(in lab,var(--bs-black)88%,oklch(70% .22 52));--bs-amber-025:color-mix(in lab,var(--bs-white)94%,oklch(79% .2 78));--bs-amber-050:color-mix(in lab,var(--bs-white)90%,oklch(79% .2 78));--bs-amber-100:color-mix(in lab,var(--bs-white)80%,oklch(79% .2 78));--bs-amber-200:color-mix(in lab,var(--bs-white)60%,oklch(79% .2 78));--bs-amber-300:color-mix(in lab,var(--bs-white)40%,oklch(79% .2 78));--bs-amber-400:color-mix(in lab,var(--bs-white)20%,oklch(79% .2 78));--bs-amber-500:oklch(79% .2 78);--bs-amber-600:color-mix(in lab,var(--bs-black)16%,oklch(79% .2 78));--bs-amber-700:color-mix(in lab,var(--bs-black)32%,oklch(79% .2 78));--bs-amber-800:color-mix(in lab,var(--bs-black)48%,oklch(79% .2 78));--bs-amber-900:color-mix(in lab,var(--bs-black)64%,oklch(79% .2 78));--bs-amber-950:color-mix(in lab,var(--bs-black)76%,oklch(79% .2 78));--bs-amber-975:color-mix(in lab,var(--bs-black)88%,oklch(79% .2 78));--bs-yellow-025:color-mix(in lab,var(--bs-white)94%,oklch(88% .24 88));--bs-yellow-050:color-mix(in lab,var(--bs-white)90%,oklch(88% .24 88));--bs-yellow-100:color-mix(in lab,var(--bs-white)80%,oklch(88% .24 88));--bs-yellow-200:color-mix(in lab,var(--bs-white)60%,oklch(88% .24 88));--bs-yellow-300:color-mix(in lab,var(--bs-white)40%,oklch(88% .24 88));--bs-yellow-400:color-mix(in lab,var(--bs-white)20%,oklch(88% .24 88));--bs-yellow-500:oklch(88% .24 88);--bs-yellow-600:color-mix(in lab,var(--bs-black)16%,oklch(88% .24 88));--bs-yellow-700:color-mix(in lab,var(--bs-black)32%,oklch(88% .24 88));--bs-yellow-800:color-mix(in lab,var(--bs-black)48%,oklch(88% .24 88));--bs-yellow-900:color-mix(in lab,var(--bs-black)64%,oklch(88% .24 88));--bs-yellow-950:color-mix(in lab,var(--bs-black)76%,oklch(88% .24 88));--bs-yellow-975:color-mix(in lab,var(--bs-black)88%,oklch(88% .24 88));--bs-lime-025:color-mix(in lab,var(--bs-white)94%,oklch(65% .24 135));--bs-lime-050:color-mix(in lab,var(--bs-white)90%,oklch(65% .24 135));--bs-lime-100:color-mix(in lab,var(--bs-white)80%,oklch(65% .24 135));--bs-lime-200:color-mix(in lab,var(--bs-white)60%,oklch(65% .24 135));--bs-lime-300:color-mix(in lab,var(--bs-white)40%,oklch(65% .24 135));--bs-lime-400:color-mix(in lab,var(--bs-white)20%,oklch(65% .24 135));--bs-lime-500:oklch(65% .24 135);--bs-lime-600:color-mix(in lab,var(--bs-black)16%,oklch(65% .24 135));--bs-lime-700:color-mix(in lab,var(--bs-black)32%,oklch(65% .24 135));--bs-lime-800:color-mix(in lab,var(--bs-black)48%,oklch(65% .24 135));--bs-lime-900:color-mix(in lab,var(--bs-black)64%,oklch(65% .24 135));--bs-lime-950:color-mix(in lab,var(--bs-black)76%,oklch(65% .24 135));--bs-lime-975:color-mix(in lab,var(--bs-black)88%,oklch(65% .24 135));--bs-green-025:color-mix(in lab,var(--bs-white)94%,oklch(64% .22 160));--bs-green-050:color-mix(in lab,var(--bs-white)90%,oklch(64% .22 160));--bs-green-100:color-mix(in lab,var(--bs-white)80%,oklch(64% .22 160));--bs-green-200:color-mix(in lab,var(--bs-white)60%,oklch(64% .22 160));--bs-green-300:color-mix(in lab,var(--bs-white)40%,oklch(64% .22 160));--bs-green-400:color-mix(in lab,var(--bs-white)20%,oklch(64% .22 160));--bs-green-500:oklch(64% .22 160);--bs-green-600:color-mix(in lab,var(--bs-black)16%,oklch(64% .22 160));--bs-green-700:color-mix(in lab,var(--bs-black)32%,oklch(64% .22 160));--bs-green-800:color-mix(in lab,var(--bs-black)48%,oklch(64% .22 160));--bs-green-900:color-mix(in lab,var(--bs-black)64%,oklch(64% .22 160));--bs-green-950:color-mix(in lab,var(--bs-black)76%,oklch(64% .22 160));--bs-green-975:color-mix(in lab,var(--bs-black)88%,oklch(64% .22 160));--bs-teal-025:color-mix(in lab,var(--bs-white)94%,oklch(68% .22 190));--bs-teal-050:color-mix(in lab,var(--bs-white)90%,oklch(68% .22 190));--bs-teal-100:color-mix(in lab,var(--bs-white)80%,oklch(68% .22 190));--bs-teal-200:color-mix(in lab,var(--bs-white)60%,oklch(68% .22 190));--bs-teal-300:color-mix(in lab,var(--bs-white)40%,oklch(68% .22 190));--bs-teal-400:color-mix(in lab,var(--bs-white)20%,oklch(68% .22 190));--bs-teal-500:oklch(68% .22 190);--bs-teal-600:color-mix(in lab,var(--bs-black)16%,oklch(68% .22 190));--bs-teal-700:color-mix(in lab,var(--bs-black)32%,oklch(68% .22 190));--bs-teal-800:color-mix(in lab,var(--bs-black)48%,oklch(68% .22 190));--bs-teal-900:color-mix(in lab,var(--bs-black)64%,oklch(68% .22 190));--bs-teal-950:color-mix(in lab,var(--bs-black)76%,oklch(68% .22 190));--bs-teal-975:color-mix(in lab,var(--bs-black)88%,oklch(68% .22 190));--bs-cyan-025:color-mix(in lab,var(--bs-white)94%,oklch(69% .22 220));--bs-cyan-050:color-mix(in lab,var(--bs-white)90%,oklch(69% .22 220));--bs-cyan-100:color-mix(in lab,var(--bs-white)80%,oklch(69% .22 220));--bs-cyan-200:color-mix(in lab,var(--bs-white)60%,oklch(69% .22 220));--bs-cyan-300:color-mix(in lab,var(--bs-white)40%,oklch(69% .22 220));--bs-cyan-400:color-mix(in lab,var(--bs-white)20%,oklch(69% .22 220));--bs-cyan-500:oklch(69% .22 220);--bs-cyan-600:color-mix(in lab,var(--bs-black)16%,oklch(69% .22 220));--bs-cyan-700:color-mix(in lab,var(--bs-black)32%,oklch(69% .22 220));--bs-cyan-800:color-mix(in lab,var(--bs-black)48%,oklch(69% .22 220));--bs-cyan-900:color-mix(in lab,var(--bs-black)64%,oklch(69% .22 220));--bs-cyan-950:color-mix(in lab,var(--bs-black)76%,oklch(69% .22 220));--bs-cyan-975:color-mix(in lab,var(--bs-black)88%,oklch(69% .22 220));--bs-brown-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .12 54));--bs-brown-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .12 54));--bs-brown-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .12 54));--bs-brown-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .12 54));--bs-brown-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .12 54));--bs-brown-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .12 54));--bs-brown-500:oklch(60% .12 54);--bs-brown-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .12 54));--bs-brown-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .12 54));--bs-brown-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .12 54));--bs-brown-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .12 54));--bs-brown-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .12 54));--bs-brown-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .12 54));--bs-gray-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .02 245));--bs-gray-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .02 245));--bs-gray-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .02 245));--bs-gray-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .02 245));--bs-gray-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .02 245));--bs-gray-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .02 245));--bs-gray-500:oklch(60% .02 245);--bs-gray-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .02 245));--bs-gray-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .02 245));--bs-gray-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .02 245));--bs-gray-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .02 245));--bs-gray-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .02 245));--bs-gray-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .02 245));--bs-pewter-025:color-mix(in lab,var(--bs-white)94%,oklch(65% .01 290));--bs-pewter-050:color-mix(in lab,var(--bs-white)90%,oklch(65% .01 290));--bs-pewter-100:color-mix(in lab,var(--bs-white)80%,oklch(65% .01 290));--bs-pewter-200:color-mix(in lab,var(--bs-white)60%,oklch(65% .01 290));--bs-pewter-300:color-mix(in lab,var(--bs-white)40%,oklch(65% .01 290));--bs-pewter-400:color-mix(in lab,var(--bs-white)20%,oklch(65% .01 290));--bs-pewter-500:oklch(65% .01 290);--bs-pewter-600:color-mix(in lab,var(--bs-black)16%,oklch(65% .01 290));--bs-pewter-700:color-mix(in lab,var(--bs-black)32%,oklch(65% .01 290));--bs-pewter-800:color-mix(in lab,var(--bs-black)48%,oklch(65% .01 290));--bs-pewter-900:color-mix(in lab,var(--bs-black)64%,oklch(65% .01 290));--bs-pewter-950:color-mix(in lab,var(--bs-black)76%,oklch(65% .01 290));--bs-pewter-975:color-mix(in lab,var(--bs-black)88%,oklch(65% .01 290))}@layer colors,theme,config,root;@layer reboot{*,:before,:after{box-sizing:border-box}:root{accent-color:var(--bs-primary-base)}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-fg-body);text-align:var(--bs-body-text-align);background-color:var(--bs-bg-body);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:#0000;margin:0}hr{margin:var(--bs-hr-margin-y,var(--bs-spacer))0;border:0;border-block-start:var(--bs-border-width)solid var(--bs-hr-border-color)}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{color:var(--bs-heading-color);margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:var(--bs-font-size-3xl)}h2,.h2{font-size:var(--bs-font-size-2xl)}h3,.h3{font-size:var(--bs-font-size-xl)}h4,.h4{font-size:var(--bs-font-size-lg)}h5,.h5{font-size:var(--bs-font-size-md)}h6,.h6{font-size:var(--bs-font-size-sm)}p{margin-top:0;margin-bottom:1rem}abbr[title]{cursor:help;text-decoration-skip-ink:none;text-decoration:underline dotted}address{font-style:normal;line-height:inherit;margin-bottom:1rem}ol,ul{padding-inline-start:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-inline-start:0;margin-bottom:.5rem}blockquote{margin:0 0 1rem}blockquote>*{margin-block:0}b,strong{font-weight:bolder}small,.small{font-size:var(--bs-small-font-size,87.5%)}mark,.mark{--bs-mark-padding:.1875em;--bs-mark-color:var(--bs-fg-body);--bs-mark-bg:light-dark(var(--bs-yellow-100),var(--bs-yellow-900));padding:var(--bs-mark-padding);color:var(--bs-mark-color);background-color:var(--bs-mark-bg)}sub,sup{font-size:var(--bs-sub-sup-font-size,.75em);vertical-align:baseline;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-theme-text,var(--bs-link-color));-webkit-text-decoration:var(--bs-link-decoration);text-decoration:var(--bs-link-decoration);text-underline-offset:.2em}a:hover{color:var(--bs-theme-text-emphasis,var(--bs-link-hover-color));-webkit-text-decoration:var(--bs-link-hover-decoration,var(--bs-link-decoration));text-decoration:var(--bs-link-hover-decoration,var(--bs-link-decoration))}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-mono);font-size:1em}pre{font-size:var(--bs-code-font-size);color:var(--bs-code-color,inherit);margin-top:0;margin-bottom:1rem;display:block;overflow:auto}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:var(--bs-code-font-size);color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{--bs-kbd-padding-y:.125rem;--bs-kbd-padding-x:.25rem;--bs-kbd-font-size:var(--bs-font-size-xs);--bs-kbd-color:var(--bs-bg-body);--bs-kbd-bg:var(--bs-fg-2);--bs-kbd-border-radius:var(--bs-border-radius-sm);padding:var(--bs-kbd-padding-y)var(--bs-kbd-padding-x);font-size:var(--bs-kbd-font-size);color:var(--bs-kbd-color);background-color:var(--bs-kbd-bg);border-radius:var(--bs-kbd-border-radius)}kbd kbd{font-size:1em;font-weight:inherit;padding:0}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{color:var(--bs-fg-3);text-align:start;padding-block:.5rem}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{border-style:none;padding:0}textarea{resize:vertical}fieldset{border:0;min-width:0;margin:0;padding:0}legend{float:inline-start;width:100%;font-size:1.5rem;line-height:inherit;margin-bottom:.5rem;padding:0}legend+*{clear:inline-start}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-text{padding:0}::-webkit-datetime-edit-millisecond-field{padding:0}::-webkit-datetime-edit-second-field{padding:0}::-webkit-datetime-edit-minute-field{padding:0}::-webkit-datetime-edit-hour-field{padding:0}::-webkit-datetime-edit-ampm-field{padding:0}::-webkit-datetime-edit-day-field{padding:0}::-webkit-datetime-edit-week-field{padding:0}::-webkit-datetime-edit-month-field{padding:0}::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button{cursor:pointer;filter:grayscale()}[type=tel],[type=url],[type=email],[type=number]{direction:ltr}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{cursor:pointer;display:list-item}progress{vertical-align:baseline}[hidden]{display:none!important}}@layer layout{.container,.container-fluid,.container-2xl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-inline:calc(var(--bs-gutter-x)*.5);margin-inline:auto}@media (width>=576px){.container-sm,.container{max-width:540px}}@media (width>=768px){.container-md,.container-sm,.container{max-width:720px}}@media (width>=1024px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (width>=1280px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1200px}}@media (width>=1536px){.container-2xl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1440px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;margin-inline:calc(-.5*var(--bs-gutter-x));margin-top:calc(-1*var(--bs-gutter-y));flex-wrap:wrap;display:flex}.row>*{width:100%;max-width:100%;padding-inline:calc(var(--bs-gutter-x)*.5);margin-top:var(--bs-gutter-y);flex-shrink:0}.col{flex:1 0 0}.row-cols-auto>*{flex:none;width:auto}.row-cols-1>*{flex:none;width:100%}.row-cols-2>*{flex:none;width:50%}.row-cols-3>*{flex:none;width:33.3333%}.row-cols-4>*{flex:none;width:25%}.row-cols-5>*{flex:none;width:20%}.row-cols-6>*{flex:none;width:16.6667%}.col-auto{flex:none;width:auto}.col-1{flex:none;width:8.33333%}.col-2{flex:none;width:16.6667%}.col-3{flex:none;width:25%}.col-4{flex:none;width:33.3333%}.col-5{flex:none;width:41.6667%}.col-6{flex:none;width:50%}.col-7{flex:none;width:58.3333%}.col-8{flex:none;width:66.6667%}.col-9{flex:none;width:75%}.col-10{flex:none;width:83.3333%}.col-11{flex:none;width:91.6667%}.col-12{flex:none;width:100%}.offset-1{margin-inline-start:8.33333%}.offset-2{margin-inline-start:16.6667%}.offset-3{margin-inline-start:25%}.offset-4{margin-inline-start:33.3333%}.offset-5{margin-inline-start:41.6667%}.offset-6{margin-inline-start:50%}.offset-7{margin-inline-start:58.3333%}.offset-8{margin-inline-start:66.6667%}.offset-9{margin-inline-start:75%}.offset-10{margin-inline-start:83.3333%}.offset-11{margin-inline-start:91.6667%}.g--2,.gx--2{--bs-gutter-x:-.5rem}.g--2,.gy--2{--bs-gutter-y:-.5rem}.g--1,.gx--1{--bs-gutter-x:-.25rem}.g--1,.gy--1{--bs-gutter-y:-.25rem}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:.25rem}.g-1,.gy-1{--bs-gutter-y:.25rem}.g-2,.gx-2{--bs-gutter-x:.5rem}.g-2,.gy-2{--bs-gutter-y:.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (width>=576px){.col-sm{flex:1 0 0}.row-cols-sm-auto>*{flex:none;width:auto}.row-cols-sm-1>*{flex:none;width:100%}.row-cols-sm-2>*{flex:none;width:50%}.row-cols-sm-3>*{flex:none;width:33.3333%}.row-cols-sm-4>*{flex:none;width:25%}.row-cols-sm-5>*{flex:none;width:20%}.row-cols-sm-6>*{flex:none;width:16.6667%}.col-sm-auto{flex:none;width:auto}.col-sm-1{flex:none;width:8.33333%}.col-sm-2{flex:none;width:16.6667%}.col-sm-3{flex:none;width:25%}.col-sm-4{flex:none;width:33.3333%}.col-sm-5{flex:none;width:41.6667%}.col-sm-6{flex:none;width:50%}.col-sm-7{flex:none;width:58.3333%}.col-sm-8{flex:none;width:66.6667%}.col-sm-9{flex:none;width:75%}.col-sm-10{flex:none;width:83.3333%}.col-sm-11{flex:none;width:91.6667%}.col-sm-12{flex:none;width:100%}.offset-sm-0{margin-inline-start:0}.offset-sm-1{margin-inline-start:8.33333%}.offset-sm-2{margin-inline-start:16.6667%}.offset-sm-3{margin-inline-start:25%}.offset-sm-4{margin-inline-start:33.3333%}.offset-sm-5{margin-inline-start:41.6667%}.offset-sm-6{margin-inline-start:50%}.offset-sm-7{margin-inline-start:58.3333%}.offset-sm-8{margin-inline-start:66.6667%}.offset-sm-9{margin-inline-start:75%}.offset-sm-10{margin-inline-start:83.3333%}.offset-sm-11{margin-inline-start:91.6667%}.g-sm--2,.gx-sm--2{--bs-gutter-x:-.5rem}.g-sm--2,.gy-sm--2{--bs-gutter-y:-.5rem}.g-sm--1,.gx-sm--1{--bs-gutter-x:-.25rem}.g-sm--1,.gy-sm--1{--bs-gutter-y:-.25rem}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (width>=768px){.col-md{flex:1 0 0}.row-cols-md-auto>*{flex:none;width:auto}.row-cols-md-1>*{flex:none;width:100%}.row-cols-md-2>*{flex:none;width:50%}.row-cols-md-3>*{flex:none;width:33.3333%}.row-cols-md-4>*{flex:none;width:25%}.row-cols-md-5>*{flex:none;width:20%}.row-cols-md-6>*{flex:none;width:16.6667%}.col-md-auto{flex:none;width:auto}.col-md-1{flex:none;width:8.33333%}.col-md-2{flex:none;width:16.6667%}.col-md-3{flex:none;width:25%}.col-md-4{flex:none;width:33.3333%}.col-md-5{flex:none;width:41.6667%}.col-md-6{flex:none;width:50%}.col-md-7{flex:none;width:58.3333%}.col-md-8{flex:none;width:66.6667%}.col-md-9{flex:none;width:75%}.col-md-10{flex:none;width:83.3333%}.col-md-11{flex:none;width:91.6667%}.col-md-12{flex:none;width:100%}.offset-md-0{margin-inline-start:0}.offset-md-1{margin-inline-start:8.33333%}.offset-md-2{margin-inline-start:16.6667%}.offset-md-3{margin-inline-start:25%}.offset-md-4{margin-inline-start:33.3333%}.offset-md-5{margin-inline-start:41.6667%}.offset-md-6{margin-inline-start:50%}.offset-md-7{margin-inline-start:58.3333%}.offset-md-8{margin-inline-start:66.6667%}.offset-md-9{margin-inline-start:75%}.offset-md-10{margin-inline-start:83.3333%}.offset-md-11{margin-inline-start:91.6667%}.g-md--2,.gx-md--2{--bs-gutter-x:-.5rem}.g-md--2,.gy-md--2{--bs-gutter-y:-.5rem}.g-md--1,.gx-md--1{--bs-gutter-x:-.25rem}.g-md--1,.gy-md--1{--bs-gutter-y:-.25rem}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (width>=1024px){.col-lg{flex:1 0 0}.row-cols-lg-auto>*{flex:none;width:auto}.row-cols-lg-1>*{flex:none;width:100%}.row-cols-lg-2>*{flex:none;width:50%}.row-cols-lg-3>*{flex:none;width:33.3333%}.row-cols-lg-4>*{flex:none;width:25%}.row-cols-lg-5>*{flex:none;width:20%}.row-cols-lg-6>*{flex:none;width:16.6667%}.col-lg-auto{flex:none;width:auto}.col-lg-1{flex:none;width:8.33333%}.col-lg-2{flex:none;width:16.6667%}.col-lg-3{flex:none;width:25%}.col-lg-4{flex:none;width:33.3333%}.col-lg-5{flex:none;width:41.6667%}.col-lg-6{flex:none;width:50%}.col-lg-7{flex:none;width:58.3333%}.col-lg-8{flex:none;width:66.6667%}.col-lg-9{flex:none;width:75%}.col-lg-10{flex:none;width:83.3333%}.col-lg-11{flex:none;width:91.6667%}.col-lg-12{flex:none;width:100%}.offset-lg-0{margin-inline-start:0}.offset-lg-1{margin-inline-start:8.33333%}.offset-lg-2{margin-inline-start:16.6667%}.offset-lg-3{margin-inline-start:25%}.offset-lg-4{margin-inline-start:33.3333%}.offset-lg-5{margin-inline-start:41.6667%}.offset-lg-6{margin-inline-start:50%}.offset-lg-7{margin-inline-start:58.3333%}.offset-lg-8{margin-inline-start:66.6667%}.offset-lg-9{margin-inline-start:75%}.offset-lg-10{margin-inline-start:83.3333%}.offset-lg-11{margin-inline-start:91.6667%}.g-lg--2,.gx-lg--2{--bs-gutter-x:-.5rem}.g-lg--2,.gy-lg--2{--bs-gutter-y:-.5rem}.g-lg--1,.gx-lg--1{--bs-gutter-x:-.25rem}.g-lg--1,.gy-lg--1{--bs-gutter-y:-.25rem}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (width>=1280px){.col-xl{flex:1 0 0}.row-cols-xl-auto>*{flex:none;width:auto}.row-cols-xl-1>*{flex:none;width:100%}.row-cols-xl-2>*{flex:none;width:50%}.row-cols-xl-3>*{flex:none;width:33.3333%}.row-cols-xl-4>*{flex:none;width:25%}.row-cols-xl-5>*{flex:none;width:20%}.row-cols-xl-6>*{flex:none;width:16.6667%}.col-xl-auto{flex:none;width:auto}.col-xl-1{flex:none;width:8.33333%}.col-xl-2{flex:none;width:16.6667%}.col-xl-3{flex:none;width:25%}.col-xl-4{flex:none;width:33.3333%}.col-xl-5{flex:none;width:41.6667%}.col-xl-6{flex:none;width:50%}.col-xl-7{flex:none;width:58.3333%}.col-xl-8{flex:none;width:66.6667%}.col-xl-9{flex:none;width:75%}.col-xl-10{flex:none;width:83.3333%}.col-xl-11{flex:none;width:91.6667%}.col-xl-12{flex:none;width:100%}.offset-xl-0{margin-inline-start:0}.offset-xl-1{margin-inline-start:8.33333%}.offset-xl-2{margin-inline-start:16.6667%}.offset-xl-3{margin-inline-start:25%}.offset-xl-4{margin-inline-start:33.3333%}.offset-xl-5{margin-inline-start:41.6667%}.offset-xl-6{margin-inline-start:50%}.offset-xl-7{margin-inline-start:58.3333%}.offset-xl-8{margin-inline-start:66.6667%}.offset-xl-9{margin-inline-start:75%}.offset-xl-10{margin-inline-start:83.3333%}.offset-xl-11{margin-inline-start:91.6667%}.g-xl--2,.gx-xl--2{--bs-gutter-x:-.5rem}.g-xl--2,.gy-xl--2{--bs-gutter-y:-.5rem}.g-xl--1,.gx-xl--1{--bs-gutter-x:-.25rem}.g-xl--1,.gy-xl--1{--bs-gutter-y:-.25rem}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (width>=1536px){.col-2xl{flex:1 0 0}.row-cols-2xl-auto>*{flex:none;width:auto}.row-cols-2xl-1>*{flex:none;width:100%}.row-cols-2xl-2>*{flex:none;width:50%}.row-cols-2xl-3>*{flex:none;width:33.3333%}.row-cols-2xl-4>*{flex:none;width:25%}.row-cols-2xl-5>*{flex:none;width:20%}.row-cols-2xl-6>*{flex:none;width:16.6667%}.col-2xl-auto{flex:none;width:auto}.col-2xl-1{flex:none;width:8.33333%}.col-2xl-2{flex:none;width:16.6667%}.col-2xl-3{flex:none;width:25%}.col-2xl-4{flex:none;width:33.3333%}.col-2xl-5{flex:none;width:41.6667%}.col-2xl-6{flex:none;width:50%}.col-2xl-7{flex:none;width:58.3333%}.col-2xl-8{flex:none;width:66.6667%}.col-2xl-9{flex:none;width:75%}.col-2xl-10{flex:none;width:83.3333%}.col-2xl-11{flex:none;width:91.6667%}.col-2xl-12{flex:none;width:100%}.offset-2xl-0{margin-inline-start:0}.offset-2xl-1{margin-inline-start:8.33333%}.offset-2xl-2{margin-inline-start:16.6667%}.offset-2xl-3{margin-inline-start:25%}.offset-2xl-4{margin-inline-start:33.3333%}.offset-2xl-5{margin-inline-start:41.6667%}.offset-2xl-6{margin-inline-start:50%}.offset-2xl-7{margin-inline-start:58.3333%}.offset-2xl-8{margin-inline-start:66.6667%}.offset-2xl-9{margin-inline-start:75%}.offset-2xl-10{margin-inline-start:83.3333%}.offset-2xl-11{margin-inline-start:91.6667%}.g-2xl--2,.gx-2xl--2{--bs-gutter-x:-.5rem}.g-2xl--2,.gy-2xl--2{--bs-gutter-y:-.5rem}.g-2xl--1,.gx-2xl--1{--bs-gutter-x:-.25rem}.g-2xl--1,.gy-2xl--1{--bs-gutter-y:-.25rem}.g-2xl-0,.gx-2xl-0{--bs-gutter-x:0}.g-2xl-0,.gy-2xl-0{--bs-gutter-y:0}.g-2xl-1,.gx-2xl-1{--bs-gutter-x:.25rem}.g-2xl-1,.gy-2xl-1{--bs-gutter-y:.25rem}.g-2xl-2,.gx-2xl-2{--bs-gutter-x:.5rem}.g-2xl-2,.gy-2xl-2{--bs-gutter-y:.5rem}.g-2xl-3,.gx-2xl-3{--bs-gutter-x:1rem}.g-2xl-3,.gy-2xl-3{--bs-gutter-y:1rem}.g-2xl-4,.gx-2xl-4{--bs-gutter-x:1.5rem}.g-2xl-4,.gy-2xl-4{--bs-gutter-y:1.5rem}.g-2xl-5,.gx-2xl-5{--bs-gutter-x:3rem}.g-2xl-5,.gy-2xl-5{--bs-gutter-y:3rem}}.grid{--bs-columns:12;--bs-rows:1;--bs-gap:1.5rem;grid-template-rows:repeat(var(--bs-rows),1fr);grid-template-columns:repeat(var(--bs-columns),1fr);gap:var(--bs-gap);display:grid}.g-col-1{grid-column:auto/span 1}.g-col-2{grid-column:auto/span 2}.g-col-3{grid-column:auto/span 3}.g-col-4{grid-column:auto/span 4}.g-col-5{grid-column:auto/span 5}.g-col-6{grid-column:auto/span 6}.g-col-7{grid-column:auto/span 7}.g-col-8{grid-column:auto/span 8}.g-col-9{grid-column:auto/span 9}.g-col-10{grid-column:auto/span 10}.g-col-11{grid-column:auto/span 11}.g-col-12{grid-column:auto/span 12}.g-start-1{grid-column-start:1}.g-start-2{grid-column-start:2}.g-start-3{grid-column-start:3}.g-start-4{grid-column-start:4}.g-start-5{grid-column-start:5}.g-start-6{grid-column-start:6}.g-start-7{grid-column-start:7}.g-start-8{grid-column-start:8}.g-start-9{grid-column-start:9}.g-start-10{grid-column-start:10}.g-start-11{grid-column-start:11}@media (width>=576px){.g-col-sm-1{grid-column:auto/span 1}.g-col-sm-2{grid-column:auto/span 2}.g-col-sm-3{grid-column:auto/span 3}.g-col-sm-4{grid-column:auto/span 4}.g-col-sm-5{grid-column:auto/span 5}.g-col-sm-6{grid-column:auto/span 6}.g-col-sm-7{grid-column:auto/span 7}.g-col-sm-8{grid-column:auto/span 8}.g-col-sm-9{grid-column:auto/span 9}.g-col-sm-10{grid-column:auto/span 10}.g-col-sm-11{grid-column:auto/span 11}.g-col-sm-12{grid-column:auto/span 12}.g-start-sm-1{grid-column-start:1}.g-start-sm-2{grid-column-start:2}.g-start-sm-3{grid-column-start:3}.g-start-sm-4{grid-column-start:4}.g-start-sm-5{grid-column-start:5}.g-start-sm-6{grid-column-start:6}.g-start-sm-7{grid-column-start:7}.g-start-sm-8{grid-column-start:8}.g-start-sm-9{grid-column-start:9}.g-start-sm-10{grid-column-start:10}.g-start-sm-11{grid-column-start:11}}@media (width>=768px){.g-col-md-1{grid-column:auto/span 1}.g-col-md-2{grid-column:auto/span 2}.g-col-md-3{grid-column:auto/span 3}.g-col-md-4{grid-column:auto/span 4}.g-col-md-5{grid-column:auto/span 5}.g-col-md-6{grid-column:auto/span 6}.g-col-md-7{grid-column:auto/span 7}.g-col-md-8{grid-column:auto/span 8}.g-col-md-9{grid-column:auto/span 9}.g-col-md-10{grid-column:auto/span 10}.g-col-md-11{grid-column:auto/span 11}.g-col-md-12{grid-column:auto/span 12}.g-start-md-1{grid-column-start:1}.g-start-md-2{grid-column-start:2}.g-start-md-3{grid-column-start:3}.g-start-md-4{grid-column-start:4}.g-start-md-5{grid-column-start:5}.g-start-md-6{grid-column-start:6}.g-start-md-7{grid-column-start:7}.g-start-md-8{grid-column-start:8}.g-start-md-9{grid-column-start:9}.g-start-md-10{grid-column-start:10}.g-start-md-11{grid-column-start:11}}@media (width>=1024px){.g-col-lg-1{grid-column:auto/span 1}.g-col-lg-2{grid-column:auto/span 2}.g-col-lg-3{grid-column:auto/span 3}.g-col-lg-4{grid-column:auto/span 4}.g-col-lg-5{grid-column:auto/span 5}.g-col-lg-6{grid-column:auto/span 6}.g-col-lg-7{grid-column:auto/span 7}.g-col-lg-8{grid-column:auto/span 8}.g-col-lg-9{grid-column:auto/span 9}.g-col-lg-10{grid-column:auto/span 10}.g-col-lg-11{grid-column:auto/span 11}.g-col-lg-12{grid-column:auto/span 12}.g-start-lg-1{grid-column-start:1}.g-start-lg-2{grid-column-start:2}.g-start-lg-3{grid-column-start:3}.g-start-lg-4{grid-column-start:4}.g-start-lg-5{grid-column-start:5}.g-start-lg-6{grid-column-start:6}.g-start-lg-7{grid-column-start:7}.g-start-lg-8{grid-column-start:8}.g-start-lg-9{grid-column-start:9}.g-start-lg-10{grid-column-start:10}.g-start-lg-11{grid-column-start:11}}@media (width>=1280px){.g-col-xl-1{grid-column:auto/span 1}.g-col-xl-2{grid-column:auto/span 2}.g-col-xl-3{grid-column:auto/span 3}.g-col-xl-4{grid-column:auto/span 4}.g-col-xl-5{grid-column:auto/span 5}.g-col-xl-6{grid-column:auto/span 6}.g-col-xl-7{grid-column:auto/span 7}.g-col-xl-8{grid-column:auto/span 8}.g-col-xl-9{grid-column:auto/span 9}.g-col-xl-10{grid-column:auto/span 10}.g-col-xl-11{grid-column:auto/span 11}.g-col-xl-12{grid-column:auto/span 12}.g-start-xl-1{grid-column-start:1}.g-start-xl-2{grid-column-start:2}.g-start-xl-3{grid-column-start:3}.g-start-xl-4{grid-column-start:4}.g-start-xl-5{grid-column-start:5}.g-start-xl-6{grid-column-start:6}.g-start-xl-7{grid-column-start:7}.g-start-xl-8{grid-column-start:8}.g-start-xl-9{grid-column-start:9}.g-start-xl-10{grid-column-start:10}.g-start-xl-11{grid-column-start:11}}@media (width>=1536px){.g-col-2xl-1{grid-column:auto/span 1}.g-col-2xl-2{grid-column:auto/span 2}.g-col-2xl-3{grid-column:auto/span 3}.g-col-2xl-4{grid-column:auto/span 4}.g-col-2xl-5{grid-column:auto/span 5}.g-col-2xl-6{grid-column:auto/span 6}.g-col-2xl-7{grid-column:auto/span 7}.g-col-2xl-8{grid-column:auto/span 8}.g-col-2xl-9{grid-column:auto/span 9}.g-col-2xl-10{grid-column:auto/span 10}.g-col-2xl-11{grid-column:auto/span 11}.g-col-2xl-12{grid-column:auto/span 12}.g-start-2xl-1{grid-column-start:1}.g-start-2xl-2{grid-column-start:2}.g-start-2xl-3{grid-column-start:3}.g-start-2xl-4{grid-column-start:4}.g-start-2xl-5{grid-column-start:5}.g-start-2xl-6{grid-column-start:6}.g-start-2xl-7{grid-column-start:7}.g-start-2xl-8{grid-column-start:8}.g-start-2xl-9{grid-column-start:9}.g-start-2xl-10{grid-column-start:10}.g-start-2xl-11{grid-column-start:11}}.grid-cols-subgrid{grid-template-columns:subgrid}.grid-fill{--bs-gap:1.5rem;gap:var(--bs-gap);grid-template-columns:repeat(auto-fit,minmax(0,1fr));grid-auto-flow:row;display:grid}}@layer content{.list-unstyled,.list-inline{padding-inline-start:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-inline-end:var(--bs-list-inline-padding,var(--bs-spacer)/2)}.initialism{font-size:var(--bs-initialism-font-size,var(--bs-font-size-xs));text-transform:uppercase}.blockquote{--bs-blockquote-gap:calc(var(--bs-spacer)/2);--bs-blockquote-padding-x:var(--bs-spacer);--bs-blockquote-margin-y:1rem;--bs-blockquote-font-size:var(--bs-font-size-md);--bs-blockquote-border-width:.25rem;--bs-blockquote-border-color:var(--bs-border-color);--bs-blockquote-footer-font-size:var(--bs-font-size-sm);--bs-blockquote-footer-color:var(--bs-fg-3);gap:var(--bs-blockquote-gap);margin-bottom:var(--bs-blockquote-margin-y);font-size:var(--bs-blockquote-font-size);border-inline-start:var(--bs-blockquote-border-width)solid var(--bs-blockquote-border-color);flex-direction:column;padding-inline-start:var(--bs-blockquote-padding-x);display:flex}.blockquote>*,figure.blockquote blockquote{margin-bottom:0}.blockquote-footer{font-size:var(--bs-blockquote-footer-font-size);color:var(--bs-blockquote-footer-color)}.blockquote-footer:before{content:"— "}.table{--bs-table-cell-padding-y:.5rem;--bs-table-cell-padding-x:.5rem;--bs-table-cell-vertical-align:top;--bs-table-color:var(--bs-fg-body);--bs-table-bg:var(--bs-bg-body);--bs-table-accent-bg:transparent;--bs-table-border-width:var(--bs-border-width);--bs-table-border-color:var(--bs-border-color);--bs-table-group-separator-color:currentcolor;--bs-table-striped-color:var(--bs-table-color);--bs-table-striped-bg-factor:.05;--bs-table-striped-bg:color-mix(in srgb,var(--bs-table-color)var(--bs-table-striped-bg-factor),transparent);--bs-table-active-color:var(--bs-table-color);--bs-table-active-bg-factor:.1;--bs-table-active-bg:color-mix(in srgb,var(--bs-table-color)var(--bs-table-active-bg-factor),transparent);--bs-table-hover-color:var(--bs-table-color);--bs-table-hover-bg-factor:.075;--bs-table-hover-bg:color-mix(in srgb,var(--bs-table-color)var(--bs-table-hover-bg-factor),transparent);--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;width:100%;vertical-align:var(--bs-table-cell-vertical-align);border-color:var(--bs-theme-border,var(--bs-table-border-color));margin-bottom:1rem}.table>:not(caption)>*>*{padding:var(--bs-table-cell-padding-y)var(--bs-table-cell-padding-x);color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-theme-text,var(--bs-table-color))));background-color:var(--bs-theme-bg-subtle,var(--bs-table-bg));border-block-end-width:var(--bs-table-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-theme-bg-subtle,var(--bs-table-accent-bg))))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-block-start:calc(var(--bs-table-border-width)*2)solid var(--bs-table-group-separator-color)}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{--bs-table-cell-padding-y:.25rem;--bs-table-cell-padding-x:.25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-table-border-width)0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-table-border-width)}.table-borderless>:not(caption)>*>*{border-block-end-width:0}.table-borderless>:not(:first-child){border-block-start-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*,.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-color-type:var(--bs-theme-text,var(--bs-table-striped-color));--bs-table-bg-type:color-mix(in srgb,var(--bs-theme-text,var(--bs-table-color))var(--bs-table-striped-bg-factor),transparent)}.table-active{--bs-table-color-state:var(--bs-theme-text,var(--bs-table-active-color));--bs-table-bg-state:color-mix(in srgb,var(--bs-theme-text,var(--bs-table-color))var(--bs-table-active-bg-factor),transparent)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-theme-text,var(--bs-table-hover-color));--bs-table-bg-state:color-mix(in srgb,var(--bs-theme-text,var(--bs-table-color))var(--bs-table-hover-bg-factor),transparent)}.table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}@media (width<576px){.table-responsive-sm{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (width<768px){.table-responsive-md{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (width<1024px){.table-responsive-lg{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (width<1280px){.table-responsive-xl{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (width<1536px){.table-responsive-2xl{-webkit-overflow-scrolling:touch;overflow-x:auto}}.img-fluid{max-width:100%;height:auto}.img-thumbnail{--bs-thumbnail-padding:.25rem;--bs-thumbnail-bg:var(--bs-bg-body);--bs-thumbnail-border-width:var(--bs-border-width);--bs-thumbnail-border-color:var(--bs-border-color);--bs-thumbnail-border-radius:var(--bs-border-radius);--bs-thumbnail-box-shadow:var(--bs-box-shadow-sm);padding:var(--bs-thumbnail-padding);background-color:var(--bs-thumbnail-bg);border:var(--bs-thumbnail-border-width)solid var(--bs-thumbnail-border-color);border-radius:var(--bs-thumbnail-border-radius);box-shadow:var(--bs-thumbnail-box-shadow);max-width:100%;height:auto}.figure{--bs-figure-gap:calc(var(--bs-spacer)*.5);--bs-figure-caption-font-size:var(--bs-font-size-sm);--bs-figure-caption-color:var(--bs-fg-3);gap:var(--bs-figure-gap);flex-direction:column;display:flex}.figure-caption{font-size:var(--bs-figure-caption-font-size);color:var(--bs-figure-caption-color)}.prose{--bs-content-font-size:1rem;--bs-content-gap:20px;--bs-heading-color:light-dark(var(--bs-gray-900),var(--bs-white));gap:var(--bs-content-gap);max-width:1000px;font-size:var(--bs-content-font-size);flex-direction:column;margin-inline:auto;line-height:1.5;display:flex;position:relative}@media (width>=1024px){.prose{--bs-content-font-size:var(--bs-font-size-md);--bs-content-gap:24px}}.prose :where(p,ul,ol,dl,pre,table,blockquote):not(:where(.not-prose,.not-prose *)){margin-block:0}.prose :where(ul,ol):not([class]):not(:where(.not-prose,.not-prose *)) li:not(:last-child){margin-bottom:calc(var(--bs-content-gap)/4)}.prose :where(li ul,li ol):not(:where(.not-prose,.not-prose *)){margin-top:calc(var(--bs-content-gap)/4)}.prose :where(hr):not(:where(.not-prose,.not-prose *)){margin:calc(var(--bs-content-gap)*1.5)0;border:0;border-block-start:var(--bs-border-width)solid var(--bs-hr-border-color)}.prose :where(h1,h2,h3,h4,h5,h6):not([class]):not(:where(.not-prose,.not-prose *)){margin-top:0;margin-bottom:calc(var(--bs-content-gap)/-2);font-weight:500;line-height:1.25}.prose :where(h1,h2,h3,h4,h5,h6):not([class]):not(:where(.not-prose,.not-prose *)) code{color:inherit;font-weight:600}.prose :where(h1,h2):not(:first-child):not(:where(.not-prose,.not-prose *)){margin-top:calc(var(--bs-content-gap)*.75)}.prose :where(h3,h4,h5,h6):not(:first-child):not(:where(.not-prose,.not-prose *)){margin-top:calc(var(--bs-content-gap)*.5)}.prose :where(h1):not(:where(.not-prose,.not-prose *)){font-size:2.25em;line-height:1.1}.prose :where(h2):not(:where(.not-prose,.not-prose *)){font-size:1.75em}.prose :where(h3):not(:where(.not-prose,.not-prose *)){font-size:1.5em}.prose :where(h4):not(:where(.not-prose,.not-prose *)){font-size:1.25em}.prose :where(h5):not(:where(.not-prose,.not-prose *)){font-size:1.125em}.prose :where(h6):not(:where(.not-prose,.not-prose *)){font-size:1em}.prose :where(a:not([class])):not(:where(.not-prose,.not-prose *)){color:var(--bs-link-color);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--bs-link-color)25%,transparent);text-underline-offset:4px;transition:text-decoration-color .1s ease-in-out}@media (prefers-reduced-motion:reduce){.prose :where(a:not([class])):not(:where(.not-prose,.not-prose *)){transition:none}}.prose :where(a:not([class])):not(:where(.not-prose,.not-prose *)):hover{text-decoration-color:var(--bs-link-hover-color)}.prose :where(img):not(:where(.not-prose,.not-prose *)){max-width:100%}.prose :where(blockquote):not(:where(.not-prose,.not-prose *)){border-inline-start:4px solid var(--bs-border-color);margin:0;padding-inline-start:calc(var(--bs-content-gap)/2)}.prose :where(table):not(:where(.not-prose,.not-prose *)){border-spacing:0;border-collapse:collapse;width:100%}.prose :where(table:not([class])):not(:where(.not-prose,.not-prose *)) td,.prose :where(table:not([class])):not(:where(.not-prose,.not-prose *)) th{text-align:inherit;border:1px solid var(--bs-border-color);padding:6px 12px}.prose :where(dt):not(:where(.not-prose,.not-prose *)){font-weight:500}.prose :where(video,img):not(:where(.not-prose,.not-prose *)){max-width:100%}}@layer forms{.form-label,.col-form-label{font-size:var(--bs-label-font-size,var(--bs-font-size-sm));font-style:var(--bs-label-font-style,inherit);font-weight:var(--bs-label-font-weight,inherit);color:var(--bs-label-color,var(--bs-fg-body))}.form-label{margin-bottom:var(--bs-label-margin-bottom,calc(var(--bs-spacer)/2))}.col-form-label{--bs-label-padding-y:calc(var(--bs-btn-input-padding-y) + var(--bs-border-width));padding-block:var(--bs-label-padding-y);margin-bottom:0}.col-form-label-lg{--bs-label-padding-y:calc(var(--bs-btn-input-lg-padding-y) + var(--bs-border-width));font-size:var(--bs-btn-input-lg-font-size)}.col-form-label-sm{--bs-label-padding-y:calc(var(--bs-btn-input-sm-padding-y) + var(--bs-border-width));font-size:var(--bs-btn-input-sm-font-size)}.form-text{--bs-form-text-margin-top:.25rem;--bs-form-text-font-size:var(--bs-font-size-sm);--bs-form-text-color:var(--bs-fg-3);margin-top:var(--bs-form-text-margin-top);font-size:var(--bs-form-text-font-size);font-style:var(--bs-form-text-font-style);font-weight:var(--bs-form-text-font-weight);color:var(--bs-form-text-color)}.form-control{--bs-control-min-height:var(--bs-btn-input-min-height);--bs-control-padding-y:var(--bs-btn-input-padding-y);--bs-control-padding-x:var(--bs-btn-input-padding-x);--bs-control-font-size:var(--bs-btn-input-font-size);--bs-control-line-height:var(--bs-btn-input-line-height);--bs-control-fg:var(--bs-btn-input-fg);--bs-control-bg:var(--bs-btn-input-bg);--bs-control-border-width:var(--bs-border-width);--bs-control-border-color:var(--bs-border-color);--bs-control-border-radius:var(--bs-border-radius);--bs-control-box-shadow:var(--bs-box-shadow-inset);--bs-control-action-bg:var(--bs-bg-1);--bs-control-action-hover-bg:var(--bs-bg-2);--bs-control-transition-property:border-color,box-shadow;--bs-control-transition-timing:.15s ease-in-out;--bs-control-transition:var(--bs-control-transition-property)var(--bs-control-transition-timing);--bs-control-placeholder-color:var(--bs-fg-3);--bs-control-disabled-color:var(--bs-control-fg);--bs-control-disabled-bg:var(--bs-bg-2);--bs-control-disabled-border-color:var(--bs-control-border-color);--bs-control-select-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2300000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");--bs-control-select-bg-position:right .75rem center;--bs-control-select-bg-size:16px 12px;--bs-control-select-bg-dark:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");width:100%;min-height:var(--bs-control-min-height);padding:var(--bs-control-padding-y)var(--bs-control-padding-x);font-size:var(--bs-control-font-size);line-height:var(--bs-control-line-height);color:var(--bs-control-fg);appearance:none;background-color:var(--bs-control-bg);border:var(--bs-control-border-width)solid var(--bs-control-border-color);border-radius:var(--bs-control-border-radius);box-shadow:var(--bs-control-box-shadow);transition:var(--bs-control-transition);background-clip:padding-box;display:flex}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control:focus-visible{--bs-focus-ring-offset:-1px;outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-control::placeholder{color:var(--bs-control-placeholder-color);opacity:1}.form-control:disabled{color:var(--bs-control-disabled-color);background-color:var(--bs-control-disabled-bg);border-color:var(--bs-control-disabled-border-color);opacity:1}.form-control::-webkit-datetime-edit{height:1.5rem;margin-bottom:-.125rem;padding:0;display:block}.form-control::-webkit-datetime-edit-fields-wrapper{height:1.5rem}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control::file-selector-button{min-height:var(--bs-control-min-height);padding:var(--bs-control-padding-y)var(--bs-control-padding-x);margin:calc(var(--bs-control-padding-y)*-1)calc(var(--bs-control-padding-x)*-1);color:var(--bs-control-fg);background-color:var(--bs-control-action-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-control-border-width);transition:var(--bs-control-transition);border-radius:0;margin-inline-end:var(--bs-control-padding-x)}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-control-action-hover-bg)}.form-control-plaintext{width:100%;padding:var(--bs-control-padding-y)0;line-height:var(--bs-control-line-height);color:var(--bs-control-fg);border:solid #0000;border-width:var(--bs-control-border-width)0;background-color:#0000;margin-bottom:0;display:block}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-inline:0}select.form-control{background-image:var(--bs-control-select-bg);background-repeat:no-repeat;background-position:var(--bs-control-select-bg-position);background-size:var(--bs-control-select-bg-size);padding-inline-end:calc(var(--bs-control-padding-x)*3)}select.form-control[multiple],select.form-control[size]:not([size="1"]){background-image:none;padding-inline-end:var(--bs-control-padding-x)}@media (prefers-color-scheme:dark){select.form-control{background-image:var(--bs-control-select-bg-dark)}}.form-control-sm{--bs-control-min-height:var(--bs-btn-input-sm-min-height);--bs-control-padding-y:var(--bs-btn-input-sm-padding-y);--bs-control-padding-x:var(--bs-btn-input-sm-padding-x);--bs-control-font-size:var(--bs-btn-input-sm-font-size);--bs-control-line-height:var(--bs-btn-input-sm-line-height);--bs-control-border-radius:var(--bs-btn-input-sm-border-radius)}.form-control-lg{--bs-control-min-height:var(--bs-btn-input-lg-min-height);--bs-control-padding-y:var(--bs-btn-input-lg-padding-y);--bs-control-padding-x:var(--bs-btn-input-lg-padding-x);--bs-control-font-size:var(--bs-btn-input-lg-font-size);--bs-control-line-height:var(--bs-btn-input-lg-line-height);--bs-control-border-radius:var(--bs-btn-input-lg-border-radius)}.form-control-color{width:var(--bs-control-min-height);padding:var(--bs-control-padding-y)}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border-radius:var(--bs-border-radius-sm);border:0!important}.form-control-color::-webkit-color-swatch{border-radius:var(--bs-border-radius-sm);border:0!important}.form-ghost{width:100%;font:inherit;color:inherit;appearance:none;background:0 0;border:0;padding:0;display:block}.form-ghost:focus{outline:0}.form-ghost::placeholder{color:var(--bs-fg-3);opacity:1}.form-ghost:disabled{color:var(--bs-fg-4);cursor:not-allowed}.checkgroup{gap:var(--bs-gap,.5rem);align-items:var(--bs-align-items,start);display:flex}.checkgroup .description{color:var(--bs-fg-3)}.check{--bs-check-size:1.25rem;--bs-check-margin-block:.125rem;--bs-check-bg:transparent;--bs-check-border-color:var(--bs-border-color);--bs-check-border-radius:.375rem;--bs-check-checked-bg:var(--bs-control-checked-bg);--bs-check-checked-border-color:var(--bs-control-checked-border-color);--bs-check-indeterminate-bg:var(--bs-control-checked-bg);--bs-check-indeterminate-border-color:var(--bs-control-checked-border-color);--bs-check-active-bg:var(--bs-control-active-bg);--bs-check-active-border-color:var(--bs-control-active-border-color);--bs-check-disabled-bg:var(--bs-control-disabled-bg);--bs-check-disabled-opacity:var(--bs-control-disabled-opacity);margin-block:var(--bs-check-margin-block);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}.check :where(svg,input){width:var(--bs-check-size);height:var(--bs-check-size);flex-shrink:0;grid-row-start:1;grid-column-start:1}.check :where(input){appearance:none;background-color:var(--bs-theme-bg,var(--bs-check-bg));border:1px solid var(--bs-theme-bg,var(--bs-check-border-color));border-radius:.3em}.check :where(input:checked,input:indeterminate){background-color:var(--bs-theme-bg,var(--bs-check-checked-bg));border-color:var(--bs-theme-bg,var(--bs-check-checked-border-color))}.check :where(input:focus-visible){outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.check:has(input:checked) .checked,.check:has(input:indeterminate) .indeterminate{color:var(--bs-theme-contrast,var(--bs-primary-contrast));stroke:currentColor;display:block}.check:has(input:disabled){--bs-check-bg:var(--bs-check-disabled-bg)}.check:has(input:disabled)~label{color:var(--bs-fg-3);cursor:default}.check:has(input:disabled:checked){opacity:var(--bs-check-disabled-opacity)}.check :where(svg){pointer-events:none}.check :where(svg path){display:none}.check-sm{--bs-check-size:1rem}.check-lg{--bs-check-size:1.5rem;--bs-check-margin-block:0}.radiogroup{gap:var(--bs-gap,.5rem);align-items:var(--bs-align-items,start);display:flex}.radiogroup .description{color:var(--bs-fg-3)}.radio{--bs-radio-size:1.25rem;--bs-radio-margin-block:.125rem;--bs-radio-bg:transparent;--bs-radio-border-color:var(--bs-border-color);--bs-radio-checked-bg:var(--bs-control-checked-bg);--bs-radio-checked-border-color:var(--bs-control-checked-border-color);--bs-radio-disabled-bg:var(--bs-control-disabled-bg);--bs-radio-disabled-opacity:var(--bs-control-disabled-opacity);width:var(--bs-radio-size);height:var(--bs-radio-size);margin-block:var(--bs-radio-margin-block);appearance:none;background-color:var(--bs-theme-bg,var(--bs-radio-bg));border:1px solid var(--bs-theme-bg,var(--bs-radio-border-color));border-radius:50%;flex-shrink:0;position:relative}.radio:checked{color:var(--bs-theme-contrast,var(--bs-primary-contrast));background-color:var(--bs-theme-bg,var(--bs-radio-checked-bg));border-color:var(--bs-theme-bg,var(--bs-radio-checked-border-color))}.radio:checked:before{content:"";background-color:currentColor;border-radius:50%;position:absolute;inset:.25rem}.radio:disabled{--bs-radio-bg:var(--bs-radio-disabled-bg)}.radio:disabled~label{color:var(--bs-secondary-text);cursor:default}.radio:focus-visible{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.radio-sm{--bs-radio-size:1rem}.radio-lg{--bs-radio-size:1.5rem;--bs-radio-margin-block:0}.switch{--bs-switch-height:1.25rem;--bs-switch-width:calc(var(--bs-switch-height)*1.5);--bs-switch-padding:.0625rem;--bs-switch-margin-block:.125rem;--bs-switch-bg:var(--bs-bg-3);--bs-switch-border-width:var(--bs-border-width);--bs-switch-border-color:var(--bs-border-color);--bs-switch-indicator-bg:var(--bs-white);--bs-switch-checked-bg:var(--bs-control-checked-bg);--bs-switch-checked-border-color:var(--bs-switch-checked-bg);--bs-switch-checked-indicator-bg:var(--bs-white);--bs-switch-disabled-bg:var(--bs-control-disabled-bg);--bs-switch-disabled-indicator-bg:var(--bs-fg-3);width:var(--bs-switch-width);height:var(--bs-switch-height);padding:var(--bs-switch-padding);margin-block:var(--bs-switch-margin-block);background-color:var(--bs-switch-bg);border:var(--bs-switch-border-width)solid var(--bs-switch-border-color);border-radius:10rem;flex-shrink:0;justify-content:flex-start;align-items:stretch;transition:padding-inline-start .15s ease-in-out,background-color .15s ease-in-out;display:flex;position:relative;box-shadow:inset 0 1px 2px #0000000d}.switch:before{width:calc(var(--bs-switch-height) - var(--bs-switch-padding)*2 - var(--bs-switch-border-width)*2);height:calc(var(--bs-switch-height) - var(--bs-switch-padding)*2 - var(--bs-switch-border-width)*2);content:"";background-color:var(--bs-theme-contrast,var(--bs-switch-indicator-bg));border-radius:50%;flex-shrink:0;box-shadow:0 1px 2px #0000001a}.switch input{appearance:none;background-color:#0000;outline:0;position:absolute;inset:0}.switch:focus-within{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.switch:has(input:checked){background-color:var(--bs-theme-bg,var(--bs-switch-checked-bg));border-color:var(--bs-theme-bg,var(--bs-switch-checked-border-color));padding-inline-start:calc(var(--bs-switch-height)/2 + var(--bs-switch-padding))}.switch:has(input:disabled){--bs-switch-bg:var(--bs-switch-disabled-bg);--bs-switch-indicator-bg:var(--bs-switch-disabled-indicator-bg)}.switch:has(input:disabled):before{opacity:.4}.switch:has(input:disabled)~label{color:var(--bs-secondary-text);cursor:default}.switch-sm{--bs-switch-height:1rem}.switch-lg{--bs-switch-height:1.5rem;--bs-switch-margin-block:0}.form-range{--bs-range-track-width:100%;--bs-range-track-height:.5rem;--bs-range-track-cursor:pointer;--bs-range-track-bg:var(--bs-bg-3);--bs-range-track-border-radius:1rem;--bs-range-track-box-shadow:var(--bs-box-shadow-inset);--bs-range-thumb-width:1rem;--bs-range-thumb-height:var(--bs-range-thumb-width);--bs-range-thumb-bg:var(--bs-primary-base);--bs-range-thumb-border:0;--bs-range-thumb-border-radius:1rem;--bs-range-thumb-box-shadow:0 .1rem .25rem #0000001a;--bs-range-thumb-active-bg:color-mix(in oklch,var(--bs-primary-base)70%,var(--bs-bg-body));--bs-range-thumb-disabled-bg:var(--bs-fg-3);--bs-range-thumb-transition-property:background-color,border-color,box-shadow;--bs-range-thumb-transition-timing:.15s ease-in-out;--bs-range-thumb-transition:var(--bs-range-thumb-transition-property)var(--bs-range-thumb-transition-timing);width:100%;height:calc(var(--bs-range-thumb-height) + var(--bs-focus-ring-width)*2);appearance:none;background-color:#0000;padding:0}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:1px}.form-range:focus::-moz-range-thumb{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:1px}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:var(--bs-range-thumb-width);height:var(--bs-range-thumb-height);appearance:none;background-color:var(--bs-range-thumb-bg);border:var(--bs-range-thumb-border);border-radius:var(--bs-range-thumb-border-radius);box-shadow:var(--bs-range-thumb-box-shadow);-webkit-transition:var(--bs-range-thumb-transition);transition:var(--bs-range-thumb-transition)}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:var(--bs-range-thumb-active-bg)}.form-range::-webkit-slider-thumb{margin-top:calc((var(--bs-range-track-height) - var(--bs-range-thumb-height))*.5)}.form-range::-moz-range-thumb{width:var(--bs-range-thumb-width);height:var(--bs-range-thumb-height);appearance:none;background-color:var(--bs-range-thumb-bg);border:var(--bs-range-thumb-border);border-radius:var(--bs-range-thumb-border-radius);box-shadow:var(--bs-range-thumb-box-shadow);-moz-transition:var(--bs-range-thumb-transition);transition:var(--bs-range-thumb-transition)}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:var(--bs-range-thumb-active-bg)}.form-range::-webkit-slider-runnable-track{width:var(--bs-range-track-width);height:var(--bs-range-track-height);color:#0000;cursor:var(--bs-range-track-cursor);background-color:var(--bs-range-track-bg);border-radius:var(--bs-range-track-border-radius);box-shadow:var(--bs-range-track-box-shadow);border-color:#0000}.form-range::-moz-range-track{width:var(--bs-range-track-width);height:var(--bs-range-track-height);color:#0000;cursor:var(--bs-range-track-cursor);background-color:var(--bs-range-track-bg);border-radius:var(--bs-range-track-border-radius);box-shadow:var(--bs-range-track-box-shadow);border-color:#0000}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-range-thumb-disabled-bg)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-range-thumb-disabled-bg)}.form-floating{--bs-form-floating-height:calc(3.5rem + var(--bs-border-width)*2);--bs-form-floating-line-height:1.25;--bs-form-floating-padding-x:var(--bs-btn-input-padding-x);--bs-form-floating-padding-y:1rem;--bs-form-floating-input-padding-t:1.625rem;--bs-form-floating-input-padding-b:.625rem;--bs-form-floating-label-height:1.5em;--bs-form-floating-label-opacity:.65;--bs-form-floating-label-transform:scale(.85)translateY(-.5rem)translateX(.15rem);--bs-form-floating-label-disabled-color:var(--bs-fg-3);--bs-form-floating-transition-property:opacity,transform;--bs-form-floating-transition-timing:.1s ease-in-out;--bs-form-floating-transition:var(--bs-form-floating-transition-property)var(--bs-form-floating-transition-timing);position:relative}.form-floating>label{z-index:2;max-width:100%;height:100%;padding:var(--bs-form-floating-padding-y)var(--bs-form-floating-padding-x);color:color-mix(in oklch,var(--bs-fg-body)var(--bs-form-floating-label-opacity),transparent);text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-input-btn-border-width)solid transparent;transform-origin:0 0;transition:var(--bs-form-floating-transition);align-items:center;display:flex;position:absolute;inset-block-start:0;inset-inline-start:0;overflow:hidden}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{height:var(--bs-form-floating-height);min-height:var(--bs-form-floating-height);padding:var(--bs-form-floating-padding-y)var(--bs-form-floating-padding-x);line-height:var(--bs-form-floating-line-height)}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:#0000}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),:-webkit-any(.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill){padding-top:var(--bs-form-floating-input-padding-t);padding-bottom:var(--bs-form-floating-input-padding-b)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),:is(.form-floating>.form-control:autofill,.form-floating>.form-control-plaintext:autofill){padding-top:var(--bs-form-floating-input-padding-t);padding-bottom:var(--bs-form-floating-input-padding-b)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label{transform:var(--bs-form-floating-label-transform)}.form-floating>.form-control:-webkit-autofill~label{transform:var(--bs-form-floating-label-transform)}.form-floating>textarea:focus~label:after,.form-floating>textarea:not(:placeholder-shown)~label:after{inset:var(--bs-form-floating-padding-y)calc(var(--bs-form-floating-padding-x)*.5);z-index:-1;height:var(--bs-form-floating-label-height);content:"";background-color:var(--bs-control-bg);border-radius:var(--bs-btn-input-border-radius);position:absolute}.form-floating>textarea:disabled~label:after{background-color:var(--bs-control-disabled-bg)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-control-border-width)0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:var(--bs-form-floating-label-disabled-color)}.strength{--bs-strength-height:.375rem;--bs-strength-gap:.25rem;--bs-strength-margin-top:.25rem;--bs-strength-border-radius:var(--bs-border-radius-pill);--bs-strength-bg:var(--bs-bg-2);--bs-strength-color:var(--bs-bg-2);--bs-strength-weak-color:var(--bs-danger-bg);--bs-strength-fair-color:var(--bs-warning-bg);--bs-strength-good-color:var(--bs-info-bg);--bs-strength-strong-color:var(--bs-success-bg);gap:var(--bs-strength-gap);width:100%;margin-top:var(--bs-strength-margin-top);display:flex}.strength-segment{height:var(--bs-strength-height);background-color:var(--bs-strength-bg);border-radius:var(--bs-strength-border-radius);flex:1;transition:background-color .2s ease-in-out,width .3s ease-in-out}@media (prefers-reduced-motion:reduce){.strength-segment{transition:none}}.strength-segment.active{background-color:var(--bs-strength-color)}.strength[data-bs-strength=weak]{--bs-strength-color:var(--bs-strength-weak-color)}.strength[data-bs-strength=fair]{--bs-strength-color:var(--bs-strength-fair-color)}.strength[data-bs-strength=good]{--bs-strength-color:var(--bs-strength-good-color)}.strength[data-bs-strength=strong]{--bs-strength-color:var(--bs-strength-strong-color)}.strength-text{margin-top:var(--bs-strength-margin-top);font-size:var(--bs-font-size-xs);color:var(--bs-strength-color,var(--bs-fg-3));transition:color .2s ease-in-out;display:block}@media (prefers-reduced-motion:reduce){.strength-text{transition:none}}.strength-text:empty{display:none}.strength-bar{--bs-strength-height:.375rem;--bs-strength-gap:.25rem;--bs-strength-margin-top:.25rem;--bs-strength-border-radius:var(--bs-border-radius-pill);--bs-strength-bg:var(--bs-bg-2);--bs-strength-color:transparent;--bs-strength-weak-color:var(--bs-danger-bg);--bs-strength-fair-color:var(--bs-warning-bg);--bs-strength-good-color:var(--bs-info-bg);--bs-strength-strong-color:var(--bs-success-bg);--bs-strength-width:0%;width:100%;height:var(--bs-strength-height);margin-top:var(--bs-strength-margin-top);background-color:var(--bs-strength-bg);border-radius:var(--bs-strength-border-radius);overflow:hidden}.strength-bar:after{width:var(--bs-strength-width);content:"";background-color:var(--bs-strength-color);border-radius:var(--bs-strength-border-radius);height:100%;transition:background-color .2s ease-in-out,width .3s ease-in-out;display:block}@media (prefers-reduced-motion:reduce){.strength-bar:after{transition:none}}.strength-bar[data-bs-strength=weak]{--bs-strength-color:var(--bs-strength-weak-color);--bs-strength-width:25%}.strength-bar[data-bs-strength=fair]{--bs-strength-color:var(--bs-strength-fair-color);--bs-strength-width:50%}.strength-bar[data-bs-strength=good]{--bs-strength-color:var(--bs-strength-good-color);--bs-strength-width:75%}.strength-bar[data-bs-strength=strong]{--bs-strength-color:var(--bs-strength-strong-color);--bs-strength-width:100%}.form-adorn{--bs-form-adorn-gap:.375rem;--bs-form-adorn-icon-size:1rem;--bs-form-adorn-icon-color:var(--bs-fg-2);gap:var(--bs-form-adorn-gap);align-items:center}.form-adorn:focus-visible{outline:0}.form-adorn:focus-within{--bs-focus-ring-offset:-1px;border-color:var(--bs-focus-ring-color);outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-adorn>.form-ghost{flex:1;min-width:0}.form-adorn.form-adorn-end>.form-ghost{order:-1}.form-adorn-icon{color:var(--bs-form-adorn-icon-color);pointer-events:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.form-adorn-icon>svg{width:var(--bs-form-adorn-icon-size);height:var(--bs-form-adorn-icon-size)}.form-adorn-text{color:var(--bs-form-adorn-icon-color);pointer-events:none;user-select:none;flex-shrink:0}.chip-input{--bs-chip-input-padding-y:.75rem;--bs-chip-input-padding-x:.75rem;--bs-chip-input-gap:.375rem;--bs-chip-input-ghost-min-width:5rem;--bs-control-fg:var(--bs-btn-input-fg);--bs-control-bg:var(--bs-btn-input-bg);--bs-control-border-width:var(--bs-border-width);--bs-control-border-color:var(--bs-border-color);--bs-control-border-radius:var(--bs-border-radius);gap:var(--bs-chip-input-gap);padding:var(--bs-chip-input-padding-y)var(--bs-chip-input-padding-x);color:var(--bs-control-fg);background-color:var(--bs-control-bg);border:var(--bs-control-border-width)solid var(--bs-control-border-color);border-radius:var(--bs-control-border-radius);flex-wrap:wrap;align-items:center;display:flex}.chip-input:focus-within{--bs-focus-ring-offset:-1px;border-color:var(--bs-focus-ring-color);outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.chip-input>.form-ghost{min-width:var(--bs-chip-input-ghost-min-width);flex:1 1 0;min-height:1.75rem}.chip-input.disabled,.chip-input:has(.form-ghost:disabled){background-color:var(--bs-bg-2);opacity:1}.chip-input.disabled>.chip,.chip-input:has(.form-ghost:disabled)>.chip{opacity:var(--bs-control-disabled-opacity)}.chip-input.disabled>.chip .chip-dismiss,.chip-input:has(.form-ghost:disabled)>.chip .chip-dismiss{pointer-events:none}.chip-input.disabled>.form-ghost,.chip-input:has(.form-ghost:disabled)>.form-ghost{cursor:not-allowed}}@layer components{.input-group{--bs-input-group-addon-padding-y:var(--bs-btn-input-padding-y);--bs-input-group-addon-padding-x:var(--bs-btn-input-padding-x);--bs-input-group-addon-font-size:var(--bs-btn-input-font-size);--bs-input-group-addon-line-height:var(--bs-btn-input-line-height);--bs-input-group-addon-color:var(--bs-fg-body);--bs-input-group-addon-bg:var(--bs-bg-2);--bs-input-group-addon-border-color:var(--bs-border-color);flex-wrap:wrap;align-items:stretch;width:100%;display:flex;position:relative}.input-group>.form-control,.input-group>.form-floating{flex:auto;width:1%;min-width:0;position:relative}.input-group>.form-control:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group>.input-group-btn{z-index:2;position:relative}.input-group>.input-group-btn:focus{z-index:5}.input-group-text{padding:var(--bs-input-group-addon-padding-y)var(--bs-input-group-addon-padding-x);font-size:var(--bs-input-group-addon-font-size);line-height:var(--bs-input-group-addon-line-height);color:var(--bs-input-group-addon-color);text-align:center;white-space:nowrap;background-color:var(--bs-input-group-addon-bg);border:var(--bs-border-width)solid var(--bs-input-group-addon-border-color);border-radius:var(--bs-btn-input-border-radius);align-items:center;display:flex}.input-group-sm>.form-control,.input-group-sm>.input-group-text,.input-group-sm>.btn{min-height:var(--bs-btn-input-sm-min-height);padding:var(--bs-btn-input-sm-padding-y)var(--bs-btn-input-sm-padding-x);font-size:var(--bs-btn-input-sm-font-size);border-radius:var(--bs-btn-input-sm-border-radius)}.input-group-lg>.form-control,.input-group-lg>.input-group-text,.input-group-lg>.btn{min-height:var(--bs-btn-input-lg-min-height);padding:var(--bs-btn-input-lg-padding-y)var(--bs-btn-input-lg-padding-x);font-size:var(--bs-btn-input-lg-font-size);border-radius:var(--bs-btn-input-lg-border-radius)}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-start-end-radius:0;border-end-end-radius:0}.input-group>:not(:first-child):not(.dropdown-menu){border-start-start-radius:0;border-end-start-radius:0;margin-inline-start:calc(-1*var(--bs-border-width))}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-start-start-radius:0;border-end-start-radius:0}.otp{--bs-otp-size:var(--bs-btn-input-lg-min-height);--bs-otp-font-size:var(--bs-btn-input-font-size);--bs-otp-gap:.5rem;gap:var(--bs-otp-gap);display:inline-flex}.otp .form-control{width:var(--bs-otp-size);min-height:var(--bs-otp-size);font-size:var(--bs-otp-font-size);text-align:center;border-radius:var(--bs-otp-border-radius,var(--bs-btn-input-border-radius));padding:0;font-weight:500;line-height:1}.otp .form-control::-webkit-outer-spin-button{appearance:none;margin:0}.otp .form-control::-webkit-inner-spin-button{appearance:none;margin:0}.otp .form-control[type=number]{appearance:textfield}.otp .form-control:focus,.otp .form-control:focus-visible{z-index:1}.otp.is-valid .form-control,.was-validated .otp:valid .form-control{border-color:var(--bs-form-valid-border-color)}.otp.is-valid .form-control:focus,.was-validated .otp:valid .form-control:focus{--bs-focus-ring-color:rgba(var(--bs-success-rgb),.25);border-color:var(--bs-form-valid-border-color)}.otp.is-invalid .form-control,.was-validated .otp:invalid .form-control{border-color:var(--bs-form-invalid-border-color)}.otp.is-invalid .form-control:focus,.was-validated .otp:invalid .form-control:focus{--bs-focus-ring-color:rgba(var(--bs-danger-rgb),.25);border-color:var(--bs-form-invalid-border-color)}.otp.input-group{gap:0;width:auto}.otp.input-group .form-control{flex:none}.otp-separator{padding-inline:var(--bs-otp-gap);font-size:var(--bs-otp-font-size);color:var(--bs-fg-4);user-select:none;align-items:center;display:flex}.otp-sm{--bs-otp-size:var(--bs-btn-input-sm-min-height);--bs-otp-font-size:var(--bs-btn-input-sm-font-size);--bs-otp-border-radius:var(--bs-btn-input-sm-border-radius)}.otp-lg{--bs-otp-size:var(--bs-btn-input-lg-min-height);--bs-otp-font-size:var(--bs-btn-input-lg-font-size);--bs-otp-border-radius:var(--bs-btn-input-lg-border-radius)}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:.75rem;--bs-tooltip-padding-y:.375rem;--bs-tooltip-font-size:var(--bs-font-size-sm);--bs-tooltip-color:var(--bs-bg-body);--bs-tooltip-bg:var(--bs-fg-body);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:.95;--bs-tooltip-arrow-width:.8rem;--bs-tooltip-arrow-height:.4rem;z-index:var(--bs-tooltip-zindex);font-family:var(--bs-body-font-family);font-style:normal;font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);text-align:start;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0;text-decoration:none;display:block}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height);display:block}.tooltip .tooltip-arrow:before{content:"";border-style:solid;border-color:#0000;position:absolute}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow{bottom:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow:before,.bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow:before{border-width:var(--bs-tooltip-arrow-height)calc(var(--bs-tooltip-arrow-width)*.5)0;border-block-start-color:var(--bs-tooltip-bg);top:-1px}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow:before,.bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow:before{border-width:calc(var(--bs-tooltip-arrow-width)*.5)var(--bs-tooltip-arrow-height)calc(var(--bs-tooltip-arrow-width)*.5)0;border-inline-end-color:var(--bs-tooltip-bg);right:-1px}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow:before,.bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow:before{border-width:0 calc(var(--bs-tooltip-arrow-width)*.5)var(--bs-tooltip-arrow-height);border-block-end-color:var(--bs-tooltip-bg);bottom:-1px}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow:before,.bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow:before{border-width:calc(var(--bs-tooltip-arrow-width)*.5)0 calc(var(--bs-tooltip-arrow-width)*.5)var(--bs-tooltip-arrow-height);border-inline-start-color:var(--bs-tooltip-bg);left:-1px}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y)var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.valid-feedback{width:100%;font-size:var(--bs-font-size-xs);color:var(--bs-form-valid-color);margin-top:.5rem;display:none}.valid-tooltip{z-index:5;max-width:100%;padding:var(--bs-tooltip-padding-y)var(--bs-tooltip-padding-x);font-size:var(--bs-tooltip-font-size);color:var(--bs-success-contrast);background-color:var(--bs-success-bg);border-radius:var(--bs-tooltip-border-radius);margin-top:.1rem;display:none;position:absolute;top:100%}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:var(--bs-success-border);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300a748' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right var(--bs-control-padding-x)center;background-size:1rem;padding-inline-end:calc(var(--bs-control-padding-x)*3.5)}.was-validated .form-control:valid:focus-visible,.form-control.is-valid:focus-visible{outline:var(--bs-focus-ring-width)solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset);border-color:var(--bs-success-border)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{background-position:right var(--bs-control-padding-x)top var(--bs-control-padding-x)}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:var(--bs-success-border)}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:var(--bs-form-valid-color)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-inline-start:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{width:100%;font-size:var(--bs-font-size-xs);color:var(--bs-form-invalid-color);margin-top:.5rem;display:none}.invalid-tooltip{z-index:5;max-width:100%;padding:var(--bs-tooltip-padding-y)var(--bs-tooltip-padding-x);font-size:var(--bs-tooltip-font-size);color:var(--bs-danger-contrast);background-color:var(--bs-danger-bg);border-radius:var(--bs-tooltip-border-radius);margin-top:.1rem;display:none;position:absolute;top:100%}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:var(--bs-danger-border);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dd0d37'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dd0d37' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right var(--bs-control-padding-x)center;background-size:1rem;padding-inline-end:calc(var(--bs-control-padding-x)*3.5)}.was-validated .form-control:invalid:focus-visible,.form-control.is-invalid:focus-visible{outline:var(--bs-focus-ring-width)solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset);border-color:var(--bs-danger-border)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{background-position:right var(--bs-control-padding-x)top var(--bs-control-padding-x)}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:var(--bs-danger-border)}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:var(--bs-form-invalid-color)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-inline-start:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn,.btn-link,.btn-icon,.btn-solid,.btn-outline,.btn-subtle,.btn-text{--bs-btn-min-height:var(--bs-btn-input-min-height);--bs-btn-padding-x:var(--bs-btn-input-padding-x);--bs-btn-padding-y:var(--bs-btn-input-padding-y);--bs-btn-font-size:var(--bs-btn-input-font-size);--bs-btn-font-weight:var(--bs-btn-input-font-weight);--bs-btn-line-height:var(--bs-btn-input-line-height);--bs-btn-color:var(--bs-fg-body);--bs-btn-white-space:nowrap;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-disabled-opacity:.65;--bs-btn-transition-timing:.15s ease-in-out;--bs-btn-transition-property:color,background-color,border-color,box-shadow;--bs-btn-transition:var(--bs-btn-transition-property)var(--bs-btn-transition-timing);gap:var(--bs-btn-gap,.25rem);min-height:var(--bs-btn-min-height);padding:var(--bs-btn-padding-y)var(--bs-btn-padding-x);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);white-space:var(--bs-btn-white-space);vertical-align:middle;cursor:pointer;user-select:none;background-color:var(--bs-btn-bg,var(--bs-bg-2));border:var(--bs-btn-border-width)solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);transition:var(--bs-btn-transition);justify-content:center;align-items:center;text-decoration:none;display:inline-flex}@media (prefers-reduced-motion:reduce){.btn,.btn-link,.btn-icon,.btn-solid,.btn-outline,.btn-subtle,.btn-text{transition:none}}.btn:hover,.btn-link:hover,.btn-icon:hover,.btn-solid:hover,.btn-outline:hover,.btn-subtle:hover,.btn-text:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg,var(--bs-bg-3));border-color:var(--bs-btn-hover-border-color)}.btn:focus-visible,.btn-link:focus-visible,.btn-icon:focus-visible,.btn-solid:focus-visible,.btn-outline:focus-visible,.btn-subtle:focus-visible,.btn-text:focus-visible{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:1px}.btn.active,.btn.show,.btn-link.active,.btn-link.show,.btn-icon.active,.btn-icon.show,.btn-solid.active,.btn-solid.show,.btn-outline.active,.btn-outline.show,.btn-subtle.active,.btn-subtle.show,.btn-text.active,.btn-text.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg,var(--bs-bg-3));border-color:var(--bs-btn-active-border-color)}.btn.active:focus-visible,.btn.show:focus-visible,.btn-link.active:focus-visible,.btn-link.show:focus-visible,.btn-icon.active:focus-visible,.btn-icon.show:focus-visible,.btn-solid.active:focus-visible,.btn-solid.show:focus-visible,.btn-outline.active:focus-visible,.btn-outline.show:focus-visible,.btn-subtle.active:focus-visible,.btn-subtle.show:focus-visible,.btn-text.active:focus-visible,.btn-text.show:focus-visible{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.btn:disabled,.btn.disabled,fieldset:disabled .btn,.btn-link:disabled,.btn-link.disabled,fieldset:disabled .btn-link,.btn-icon:disabled,.btn-icon.disabled,fieldset:disabled .btn-icon,.btn-solid:disabled,.btn-solid.disabled,fieldset:disabled .btn-solid,.btn-outline:disabled,.btn-outline.disabled,fieldset:disabled .btn-outline,.btn-subtle:disabled,.btn-subtle.disabled,fieldset:disabled .btn-subtle,.btn-text:disabled,.btn-text.disabled,fieldset:disabled .btn-text{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg,var(--bs-bg-1));border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-solid{--bs-btn-bg:var(--bs-theme-bg);--bs-btn-color:var(--bs-theme-contrast);--bs-btn-border-color:var(--bs-theme-bg);--bs-btn-active-bg:oklch(from var(--bs-theme-bg)calc(l*.9)calc(c*1.15)h);--bs-btn-active-border-color:oklch(from var(--bs-theme-bg)calc(l*.9)calc(c*1.15)h);--bs-btn-active-color:oklch(from var(--bs-theme-contrast)calc(l*.9)calc(c*1.15)h);--bs-btn-disabled-bg:var(--bs-theme-bg);--bs-btn-disabled-color:var(--bs-theme-contrast);--bs-btn-disabled-border-color:var(--bs-theme-bg)}.btn-solid:hover{--bs-btn-hover-bg:oklch(from var(--bs-theme-bg)calc(l*.95)calc(c*1.1)h);--bs-btn-hover-border-color:oklch(from var(--bs-theme-bg)calc(l*.95)calc(c*1.1)h);--bs-btn-hover-color:oklch(from var(--bs-theme-contrast)calc(l*.95)calc(c*1.1)h)}.btn-solid:focus-visible{outline-color:var(--bs-theme-focus-ring)}.btn-solid:active,.btn-solid.active,.btn-solid.btn-check:has(input:checked){--bs-btn-active-bg:oklch(from var(--bs-theme-bg)calc(l*.9)calc(c*1.15)h);--bs-btn-active-border-color:oklch(from var(--bs-theme-bg)calc(l*.9)calc(c*1.15)h);--bs-btn-active-color:oklch(from var(--bs-theme-contrast)calc(l*.9)calc(c*1.15)h)}.btn-solid:disabled,.btn-solid.disabled,.btn-solid.btn-check:has(input:disabled){--bs-btn-disabled-bg:var(--bs-theme-bg);--bs-btn-disabled-color:var(--bs-theme-contrast);--bs-btn-disabled-border-color:var(--bs-theme-bg)}.btn-outline{--bs-btn-bg:transparent;--bs-btn-color:var(--bs-theme-text);--bs-btn-border-color:var(--bs-theme-border);--bs-btn-active-bg:oklch(from var(--bs-theme-bg)calc(l*.9)calc(c*1.15)h);--bs-btn-active-color:oklch(from var(--bs-theme-contrast)calc(l*.9)calc(c*1.15)h);--bs-btn-active-border-color:oklch(from var(--bs-theme-bg)calc(l*.9)calc(c*1.15)h);--bs-btn-disabled-bg:transparent;--bs-btn-disabled-color:var(--bs-theme-text);--bs-btn-disabled-border-color:var(--bs-theme-border)}.btn-outline:hover{--bs-btn-hover-bg:oklch(from var(--bs-theme-bg)calc(l*.95)calc(c*1.1)h);--bs-btn-hover-color:oklch(from var(--bs-theme-contrast)calc(l*.95)calc(c*1.1)h);--bs-btn-hover-border-color:oklch(from var(--bs-theme-bg)calc(l*.95)calc(c*1.1)h)}.btn-outline:focus-visible{outline-color:var(--bs-theme-focus-ring)}.btn-outline:active,.btn-outline.active,.btn-outline.btn-check:has(input:checked){--bs-btn-active-bg:oklch(from var(--bs-theme-bg)calc(l*.9)calc(c*1.15)h);--bs-btn-active-color:oklch(from var(--bs-theme-contrast)calc(l*.9)calc(c*1.15)h);--bs-btn-active-border-color:oklch(from var(--bs-theme-bg)calc(l*.9)calc(c*1.15)h)}.btn-outline:disabled,.btn-outline.disabled,.btn-outline.btn-check:has(input:disabled){--bs-btn-disabled-bg:transparent;--bs-btn-disabled-color:var(--bs-theme-text);--bs-btn-disabled-border-color:var(--bs-theme-border)}.btn-subtle{--bs-btn-bg:var(--bs-theme-bg-subtle);--bs-btn-color:var(--bs-theme-text);--bs-btn-border-color:transparent;--bs-btn-active-bg:var(--bs-theme-bg-subtle);--bs-btn-active-color:oklch(from var(--bs-theme-text-emphasis)calc(l*.9)calc(c*1.15)h);--bs-btn-disabled-bg:var(--bs-theme-bg-subtle);--bs-btn-disabled-color:var(--bs-theme-text);--bs-btn-disabled-border-color:transparent}.btn-subtle:hover{--bs-btn-hover-bg:color-mix(in oklch,var(--bs-theme-bg-muted)50%,var(--bs-theme-bg-subtle));--bs-btn-hover-color:oklch(from var(--bs-theme-text-emphasis)calc(l*.95)calc(c*1.1)h)}.btn-subtle:focus-visible{outline-color:var(--bs-theme-focus-ring)}.btn-subtle:active,.btn-subtle.active,.btn-subtle.btn-check:has(input:checked){--bs-btn-active-bg:var(--bs-theme-bg-subtle);--bs-btn-active-color:oklch(from var(--bs-theme-text-emphasis)calc(l*.9)calc(c*1.15)h)}.btn-subtle:disabled,.btn-subtle.disabled,.btn-subtle.btn-check:has(input:disabled){--bs-btn-disabled-bg:var(--bs-theme-bg-subtle);--bs-btn-disabled-color:var(--bs-theme-text);--bs-btn-disabled-border-color:transparent}.btn-text{--bs-btn-color:var(--bs-theme-text);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-active-color:oklch(from var(--bs-theme-text)calc(l*.9)calc(c*1.15)h);--bs-btn-active-bg:var(--bs-theme-bg-subtle);--bs-btn-disabled-color:var(--bs-theme-text);--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:transparent}.btn-text:hover{--bs-btn-hover-color:oklch(from var(--bs-theme-text)calc(l*.95)calc(c*1.1)h);--bs-btn-hover-bg:var(--bs-theme-bg-subtle)}.btn-text:focus-visible{outline-color:var(--bs-theme-focus-ring)}.btn-text:active,.btn-text.active,.btn-text.btn-check:has(input:checked){--bs-btn-active-color:oklch(from var(--bs-theme-text)calc(l*.9)calc(c*1.15)h);--bs-btn-active-bg:var(--bs-theme-bg-subtle)}.btn-text:disabled,.btn-text.disabled,.btn-text.btn-check:has(input:disabled){--bs-btn-disabled-color:var(--bs-theme-text);--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:transparent}.btn-link{--bs-btn-font-weight:var(--bs-font-weight-normal);--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-bg:transparent;--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-bg:transparent;--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:var(--bs-fg-3);--bs-btn-disabled-border-color:transparent;color:var(--bs-theme-text,var(--bs-btn-color));-webkit-text-decoration:var(--bs-link-decoration);text-decoration:var(--bs-link-decoration)}.btn-link:focus-visible{color:var(--bs-theme-text,var(--bs-btn-color))}.btn-link:hover{color:var(--bs-theme-text-emphasis,var(--bs-btn-hover-color))}.btn-xs,.btn-group-xs>[class*=btn-]{--bs-btn-min-height:var(--bs-btn-input-xs-min-height);--bs-btn-padding-y:var(--bs-btn-input-xs-padding-y);--bs-btn-padding-x:var(--bs-btn-input-xs-padding-x);--bs-btn-font-size:var(--bs-btn-input-xs-font-size);--bs-btn-line-height:var(--bs-btn-input-xs-line-height);--bs-btn-border-radius:var(--bs-btn-input-xs-border-radius)}.btn-sm,.btn-group-sm>[class*=btn-]{--bs-btn-min-height:var(--bs-btn-input-sm-min-height);--bs-btn-padding-y:var(--bs-btn-input-sm-padding-y);--bs-btn-padding-x:var(--bs-btn-input-sm-padding-x);--bs-btn-font-size:var(--bs-btn-input-sm-font-size);--bs-btn-line-height:var(--bs-btn-input-sm-line-height);--bs-btn-border-radius:var(--bs-btn-input-sm-border-radius)}.btn-lg,.btn-group-lg>[class*=btn-]{--bs-btn-min-height:var(--bs-btn-input-lg-min-height);--bs-btn-padding-y:var(--bs-btn-input-lg-padding-y);--bs-btn-padding-x:var(--bs-btn-input-lg-padding-x);--bs-btn-font-size:var(--bs-btn-input-lg-font-size);--bs-btn-line-height:var(--bs-btn-input-lg-line-height);--bs-btn-border-radius:var(--bs-btn-input-lg-border-radius)}.btn-icon{aspect-ratio:1;justify-content:center;align-items:center;padding:0}.btn-check>input{clip:rect(0,0,0,0);pointer-events:none;position:absolute}.btn-check:has(input:checked){color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg,var(--bs-bg-3));border-color:var(--bs-btn-active-border-color);box-shadow:var(--bs-btn-active-shadow)}.btn-check:has(input:focus-visible){outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:1px}.btn-check:has(input:disabled){color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg,var(--bs-bg-1));border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity);box-shadow:none}.btn-styled{--bs-btn-gradient-start:#ffffff20;--bs-btn-gradient-end:#00000013;--bs-btn-border-mix-color:#000;--bs-btn-border-mix-amount:10%;--bs-btn-border-hover-mix-amount:12.5%;--bs-btn-border-active-mix-amount:20%;--bs-btn-shadow:0 1px 2px #00000026,inset 0 1px 0 #ffffff1a;--bs-btn-active-shadow:inset 0 2px 4px #00000026;background-image:linear-gradient(to bottom,var(--bs-btn-gradient-start),var(--bs-btn-gradient-end));border-color:color-mix(in lab,var(--bs-theme-bg),var(--bs-btn-border-mix-color)var(--bs-btn-border-mix-amount));box-shadow:var(--bs-btn-shadow)}.btn-styled:hover{background-image:linear-gradient(to bottom,var(--bs-btn-gradient-start),var(--bs-btn-gradient-end));border-color:color-mix(in lab,var(--bs-theme-bg),var(--bs-btn-border-mix-color)var(--bs-btn-border-hover-mix-amount))}.btn-styled:active,.btn-styled.active{border-color:color-mix(in lab,var(--bs-theme-bg),var(--bs-btn-border-mix-color)var(--bs-btn-border-active-mix-amount));box-shadow:var(--bs-btn-active-shadow);background-image:none}.btn-styled:disabled,.btn-styled.disabled{box-shadow:none;background-image:none}.btn-group,.btn-group-vertical{vertical-align:middle;display:inline-flex;position:relative}.btn-group>[class*=btn-],.btn-group-vertical>[class*=btn-]{flex:auto;position:relative}.btn-group>[class*=btn-]:hover,.btn-group-vertical>[class*=btn-]:hover{z-index:1}.btn-group>.btn-check:has(input:checked),.btn-group>[class*=btn-]:active,.btn-group>[class*=btn-].active,.btn-group-vertical>.btn-check:has(input:checked),.btn-group-vertical>[class*=btn-]:active,.btn-group-vertical>[class*=btn-].active{z-index:2}.btn-group>.btn-check:has(input:focus),.btn-group>[class*=btn-]:focus,.btn-group-vertical>.btn-check:has(input:focus),.btn-group-vertical>[class*=btn-]:focus{z-index:3}.btn-toolbar{flex-wrap:wrap;justify-content:flex-start;gap:.5rem;display:flex}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-btn-border-radius)}.btn-group>[class*=btn-]:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-inline-start:calc(-1*var(--bs-btn-border-width))}.btn-group>[class*=btn-]:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>[class*=btn-]{border-start-end-radius:0;border-end-end-radius:0}.btn-group>[class*=btn-]:not(:first-child),.btn-group>.btn-group:not(:first-child)>[class*=btn-]{border-start-start-radius:0;border-end-start-radius:0}.dropdown-toggle-split{padding-inline:calc(var(--bs-btn-padding-x)*.75)}.dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after{margin-inline-start:0}.dropstart .dropdown-toggle-split:before{margin-inline-end:0}.btn-group-vertical{flex-direction:column;justify-content:center;align-items:flex-start}.btn-group-vertical>[class*=btn-],.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>[class*=btn-]:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(-1*var(--bs-btn-border-width))}.btn-group-vertical>[class*=btn-]:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>[class*=btn-]{border-end-end-radius:0;border-end-start-radius:0}.btn-group-vertical>[class*=btn-]:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>[class*=btn-]{border-start-start-radius:0;border-start-end-radius:0}.btn-close{--bs-btn-close-size:1.25rem;--bs-btn-close-color:var(--bs-fg-body);--bs-btn-close-opacity:.5;--bs-btn-close-hover-opacity:.75;--bs-btn-close-focus-opacity:.85;--bs-btn-close-disabled-opacity:.25;box-sizing:content-box;width:var(--bs-btn-close-size);height:var(--bs-btn-close-size);color:var(--bs-btn-close-color);border-radius:var(--bs-border-radius-sm);opacity:var(--bs-btn-close-opacity);background:0 0;border:0;padding:0}.btn-close>svg{fill:currentColor;width:100%;height:100%;display:block}.btn-close:hover{color:var(--bs-btn-close-color);opacity:var(--bs-btn-close-hover-opacity);text-decoration:none}.btn-close:focus-visible{opacity:var(--bs-btn-close-focus-opacity);outline:var(--bs-focus-ring)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.accordion{--bs-accordion-padding-x:1.25rem;--bs-accordion-padding-y:1rem;--bs-accordion-color:var(--bs-fg-body);--bs-accordion-bg:var(--bs-bg-body);--bs-accordion-transition-property:color,background-color,border-radius;--bs-accordion-transition-timing:.15s ease-in-out;--bs-accordion-transition:var(--bs-accordion-transition-property)var(--bs-accordion-timing);--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-accordion-radius,var(--bs-border-radius-lg));--bs-accordion-btn-color:var(--bs-fg-2);--bs-accordion-btn-bg:var(--bs-bg-body);--bs-accordion-btn-icon-width:1rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform .2s ease-in-out;--bs-accordion-active-color:var(--bs-fg);--bs-accordion-active-bg:var(--bs-bg-2)}.accordion-header{width:100%;padding:var(--bs-accordion-btn-padding-y,var(--bs-accordion-padding-y))var(--bs-accordion-btn-padding-x,var(--bs-accordion-padding-x));font-size:var(--bs-accordion-font-size,var(--bs-font-size-base));color:var(--bs-accordion-btn-color);text-align:start;cursor:pointer;background-color:var(--bs-accordion-btn-bg);transition:var(--bs-accordion-transition);align-items:center;list-style:none;display:flex}@media (prefers-reduced-motion:reduce){.accordion-header{transition:none}}.accordion-header .accordion-icon{width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);color:currentColor;transition:var(--bs-accordion-btn-icon-transition);flex-shrink:0;margin-inline-start:auto}@media (prefers-reduced-motion:reduce){.accordion-header .accordion-icon{transition:none}}.accordion-header:hover{z-index:2}.accordion-header:focus-visible{z-index:3;outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);outline-offset:-1px;position:relative}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width)solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-start-start-radius:var(--bs-accordion-border-radius);border-start-end-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type>.accordion-header{border-start-start-radius:calc(var(--bs-accordion-border-radius) - var(--bs-accordion-border-width));border-start-end-radius:calc(var(--bs-accordion-border-radius) - var(--bs-accordion-border-width))}.accordion-item:not(:first-of-type){border-block-start:0}.accordion-item:last-of-type{border-end-end-radius:var(--bs-accordion-border-radius);border-end-start-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type>.accordion-header{border-end-end-radius:calc(var(--bs-accordion-border-radius) - var(--bs-accordion-border-width));border-end-start-radius:calc(var(--bs-accordion-border-radius) - var(--bs-accordion-border-width))}.accordion-item:last-of-type>.accordion-body{border-end-end-radius:var(--bs-accordion-border-radius);border-end-start-radius:var(--bs-accordion-border-radius)}.accordion-item[open]{border-color:var(--bs-theme-border,var(--bs-accordion-border-color))}.accordion-item[open]>.accordion-header{color:var(--bs-theme-text,var(--bs-accordion-active-color));background-color:var(--bs-theme-bg-subtle,var(--bs-accordion-active-bg));box-shadow:inset 0 calc(-1*var(--bs-accordion-border-width))0 var(--bs-theme-border,var(--bs-accordion-border-color))}.accordion-item[open]>.accordion-header .accordion-icon{transform:var(--bs-accordion-btn-icon-transform)}.accordion-item[open]:last-of-type>.accordion-header{border-end-end-radius:0;border-end-start-radius:0}.accordion-body{padding:var(--bs-accordion-body-padding-y,var(--bs-accordion-padding-y))var(--bs-accordion-body-padding-x,var(--bs-accordion-padding-x))}.accordion-flush>.accordion-item{border-inline:0;border-radius:0}.accordion-flush>.accordion-item:first-child{border-block-start:0}.accordion-flush>.accordion-item:last-child{border-block-end:0}.accordion-flush>.accordion-item>.accordion-header,.accordion-flush>.accordion-item>.accordion-body{border-radius:0}.alert{--bs-alert-gap:.75rem;--bs-alert-bg:var(--bs-theme-bg-subtle,var(--bs-bg-1));--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-color:var(--bs-theme-text,inherit);--bs-alert-border-color:var(--bs-theme-border,var(--bs-border-color));--bs-alert-border:var(--bs-border-width)solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);--bs-alert-link-color:inherit;--bs-hr-border-color:var(--bs-theme-border,var(--bs-border-color));gap:var(--bs-alert-gap);padding:var(--bs-alert-padding-y)var(--bs-alert-padding-x);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius);align-items:start;display:flex}.alert-heading{color:inherit}.alert-link{font-weight:var(--bs-font-weight-semibold);color:var(--bs-alert-link-color)}.avatar{--bs-avatar-size:2.5rem;--bs-avatar-border-radius:50%;--bs-avatar-border-width:2px;--bs-avatar-border-color:var(--bs-bg-body);--bs-avatar-bg:var(--bs-bg-2);--bs-avatar-color:var(--bs-fg-body);--bs-avatar-status-size:.75rem;--bs-avatar-status-border-width:2px;--bs-avatar-status-border-color:var(--bs-bg-body);--bs-avatar-stack-spacing:-.3;--bs-avatar-stack-transition:transform .2s ease-in-out;width:var(--bs-avatar-size);height:var(--bs-avatar-size);font-size:calc(var(--bs-avatar-size)*.4);font-weight:var(--bs-avatar-font-weight,var(--bs-font-weight-medium));color:var(--bs-theme-contrast,var(--bs-avatar-color));text-transform:uppercase;vertical-align:middle;background-color:var(--bs-theme-bg,var(--bs-avatar-bg));border-radius:var(--bs-avatar-border-radius);justify-content:center;align-items:center;line-height:1;display:inline-flex;position:relative}.avatar-subtle{color:var(--bs-theme-text,var(--bs-avatar-color));background-color:var(--bs-theme-bg-subtle,var(--bs-avatar-bg))}.avatar-img{-o-object-fit:cover;object-fit:cover;border-radius:inherit;width:100%;height:100%}.avatar-status{right:calc(var(--bs-avatar-status-border-width)*-1);bottom:calc(var(--bs-avatar-status-border-width)*-1);width:var(--bs-avatar-status-size);height:var(--bs-avatar-status-size);background-color:var(--bs-gray-400);border:var(--bs-avatar-status-border-width)solid var(--bs-avatar-status-border-color);border-radius:50%;position:absolute}.avatar-status.status-online{background-color:var(--bs-green-500)}.avatar-status.status-offline{background-color:var(--bs-gray-400);border-radius:20%}.avatar-status.status-busy{background-color:var(--bs-red-500);border-radius:20%}.avatar-status.status-away{background-color:var(--bs-yellow-500)}.avatar-stack{flex-direction:row-reverse;display:inline-flex}.avatar-stack .avatar{margin-left:calc(var(--bs-avatar-size)*var(--bs-avatar-stack-spacing));border:var(--bs-avatar-border-width)solid var(--bs-avatar-border-color);transition:var(--bs-avatar-stack-transition);mask-image:none}@media (prefers-reduced-motion:reduce){.avatar-stack .avatar{transition:none}}.avatar-stack .avatar:last-child{margin-left:0}.avatar-stack .avatar:hover{z-index:1;transform:translateY(-2px)}.avatar-xs,.avatar-stack-xs{--bs-avatar-size:1.5rem;--bs-avatar-status-size:.625rem}.avatar-sm,.avatar-stack-sm{--bs-avatar-size:2rem}.avatar-lg,.avatar-stack-lg{--bs-avatar-size:3rem;--bs-avatar-status-size:1rem}.avatar-xl,.avatar-stack-xl{--bs-avatar-size:4rem;--bs-avatar-status-size:1.25rem}.badge{--bs-badge-padding-x:.625em;--bs-badge-padding-y:.25em;--bs-badge-font-size:clamp(12px,.75em,.75em);--bs-badge-font-weight:var(--bs-font-weight-semibold);--bs-badge-color:inherit;--bs-badge-bg:var(--bs-bg-2);--bs-badge-border-width:var(--bs-border-width);--bs-badge-border-color:transparent;--bs-badge-border-radius:var(--bs-border-radius-lg);min-height:1.375rem;padding:var(--bs-badge-padding-y)var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);color:var(--bs-theme-contrast,var(--bs-badge-color));text-align:center;white-space:nowrap;vertical-align:baseline;background-color:var(--bs-theme-bg,var(--bs-badge-bg));border:var(--bs-badge-border-width)solid var(--bs-badge-border-color);border-radius:var(--bs-badge-border-radius);justify-content:center;align-items:center;line-height:1;display:inline-flex}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-subtle{--bs-badge-color:var(--bs-theme-text);--bs-badge-bg:var(--bs-theme-bg-subtle);--bs-badge-border-color:transparent;color:var(--bs-badge-color);background-color:var(--bs-badge-bg);border-color:var(--bs-badge-border-color)}.badge-outline{--bs-badge-color:var(--bs-theme-text);--bs-badge-bg:transparent;--bs-badge-border-color:var(--bs-theme-border);color:var(--bs-badge-color);background-color:var(--bs-badge-bg);border-color:var(--bs-badge-border-color)}.breadcrumb{--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-font-size:inherit;--bs-breadcrumb-bg:transparent;--bs-breadcrumb-border-radius:var(--bs-border-radius);--bs-breadcrumb-divider-color:var(--bs-fg-4);--bs-breadcrumb-link-padding-x:.75rem;--bs-breadcrumb-link-padding-y:.25rem;--bs-breadcrumb-link-color:var(--bs-fg-3);--bs-breadcrumb-link-hover-color:var(--bs-fg-2);--bs-breadcrumb-link-hover-bg:var(--bs-bg-1);--bs-breadcrumb-link-active-color:var(--bs-fg-1);--bs-breadcrumb-link-border-radius:var(--bs-border-radius-lg);padding:var(--bs-breadcrumb-padding-y,0)var(--bs-breadcrumb-padding-x,0);font-size:var(--bs-breadcrumb-font-size);background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius);flex-wrap:wrap;align-items:center;list-style:none;display:flex}.breadcrumb-item{display:flex}.breadcrumb-divider{margin-inline:calc(var(--bs-breadcrumb-link-padding-x)/4);color:var(--bs-breadcrumb-divider-color)}.breadcrumb-link{min-height:2.25rem;padding:var(--bs-breadcrumb-link-padding-y)var(--bs-breadcrumb-link-padding-x);color:var(--bs-breadcrumb-link-color);border-radius:var(--bs-breadcrumb-link-border-radius);justify-content:center;align-items:center;text-decoration:none;transition:text-decoration-color .1s ease-in-out;display:flex;position:relative}@media (prefers-reduced-motion:reduce){.breadcrumb-link{transition:none}}.breadcrumb-link:hover{z-index:2;color:var(--bs-breadcrumb-link-hover-color);background-color:var(--bs-breadcrumb-link-hover-bg)}.breadcrumb-link.active{color:var(--bs-breadcrumb-link-active-color)}.chip{--bs-chip-height:1.75rem;--bs-chip-padding-x:.625rem;--bs-chip-gap:.3125rem;--bs-chip-border-radius:var(--bs-border-radius-pill);--bs-chip-img-size:1.25rem;--bs-chip-icon-size:1rem;--bs-chip-dismiss-size:1rem;--bs-chip-dismiss-opacity:.65;--bs-chip-dismiss-hover-opacity:1;--bs-chip-color:var(--bs-theme-text,var(--bs-fg-body));--bs-chip-bg:var(--bs-theme-bg-subtle,var(--bs-bg-2));--bs-chip-border-color:transparent;--bs-chip-selected-color:var(--bs-theme-contrast,var(--bs-primary-contrast));--bs-chip-selected-bg:var(--bs-theme-bg,var(--bs-primary-bg));--bs-chip-selected-border-color:var(--bs-theme-bg,var(--bs-primary-bg));gap:var(--bs-chip-gap);height:var(--bs-chip-height);padding-inline:var(--bs-chip-padding-x);font-size:var(--bs-chip-font-size,var(--bs-font-size-sm));font-weight:var(--bs-chip-font-weight,var(--bs-font-weight-base));line-height:var(--bs-chip-line-height,1.25rem);color:var(--bs-chip-color);white-space:nowrap;vertical-align:middle;cursor:pointer;background-color:var(--bs-chip-bg);border:var(--bs-border-width)solid var(--bs-chip-border-color);border-radius:var(--bs-chip-border-radius);align-items:center;text-decoration:none;display:inline-flex}.chip:hover{--bs-chip-bg:var(--bs-theme-bg-muted,var(--bs-bg-3))}.chip:focus-visible{outline:0}.chip.active{--bs-chip-color:var(--bs-chip-selected-color);--bs-chip-bg:var(--bs-chip-selected-bg);--bs-chip-border-color:var(--bs-chip-selected-border-color)}.chip.active:hover{--bs-chip-bg:var(--bs-chip-selected-bg);opacity:.9}.chip.disabled,.chip:disabled{pointer-events:none;opacity:.65}.chip-img{width:var(--bs-chip-img-size);height:var(--bs-chip-img-size);border-radius:50%}.chip-img:first-child{margin-inline-start:-.375rem}.chip-icon{flex-shrink:0;justify-content:center;align-items:center;margin-inline-start:calc(var(--bs-chip-gap)*-.25);display:flex}.chip-icon>svg{width:var(--bs-chip-icon-size);height:var(--bs-chip-icon-size);display:block}.chip-icon>img{width:var(--bs-chip-icon-size);height:var(--bs-chip-icon-size);-o-object-fit:cover;object-fit:cover;border-radius:50%}.chip-dismiss{width:var(--bs-chip-min-height);height:var(--bs-chip-min-height);color:inherit;cursor:pointer;opacity:var(--bs-chip-dismiss-opacity);background:0 0;border:0;flex-shrink:0;justify-content:center;align-items:center;margin-inline-end:calc(var(--bs-chip-padding-x)*-.25);padding:0;display:flex}.chip-dismiss:hover{opacity:var(--bs-chip-dismiss-hover-opacity)}.chip-dismiss:focus-visible{opacity:1;outline:0;outline:var(--bs-focus-ring)}.chip-dismiss>svg{width:var(--bs-chip-dismiss-size);height:var(--bs-chip-dismiss-size);display:block}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-subtitle-color:inherit;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius-lg);--bs-card-box-shadow:none;--bs-card-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-card-cap-padding-y:.75rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:var(--bs-bg-1);--bs-card-cap-color:inherit;--bs-card-height:auto;--bs-card-color:inherit;--bs-card-bg:var(--bs-bg-body);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:.75rem;--bs-card-body-gap:.5rem;min-width:0;height:var(--bs-card-height);color:var(--bs-fg-body);word-wrap:break-word;background-color:var(--bs-card-bg);box-shadow:var(--bs-card-box-shadow);flex-direction:column;display:flex;position:relative}.card>hr{margin-inline:0}.card-body{gap:var(--bs-card-body-gap);padding:var(--bs-card-spacer-y)var(--bs-card-spacer-x);color:var(--bs-card-color);border:solid var(--bs-theme-bg,var(--bs-card-border-color));border-width:0 var(--bs-card-border-width);flex-direction:column;flex:auto;align-items:flex-start;display:flex}.card-body>*{margin-block:0}.card-body,.card-list{border:solid var(--bs-theme-bg,var(--bs-card-border-color));border-width:0 var(--bs-card-border-width)}.card-body:first-child,.card-list:first-child{border-top-width:var(--bs-card-border-width);border-start-start-radius:var(--bs-card-border-radius);border-start-end-radius:var(--bs-card-border-radius)}.card-body:last-child,.card-list:last-child{border-bottom-width:var(--bs-card-border-width);border-end-end-radius:var(--bs-card-border-radius);border-end-start-radius:var(--bs-card-border-radius)}.card-body:not(:first-child):not(:last-child),.card-list:not(:first-child):not(:last-child){border-block-end-width:var(--bs-card-border-width)}.card-title,.card-subtitle,.card-text{align-self:stretch}.card-subtitle{margin-top:calc(var(--bs-card-body-gap)*-.5)}.card-header{padding:var(--bs-card-cap-padding-y)var(--bs-card-cap-padding-x);color:var(--bs-theme-contrast,var(--bs-card-cap-color));background-color:var(--bs-theme-bg,var(--bs-card-cap-bg));border:var(--bs-card-border-width)solid var(--bs-theme-bg,var(--bs-card-border-color));margin-bottom:0}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius)var(--bs-card-inner-border-radius)0 0}.card-footer{padding:var(--bs-card-cap-padding-y)var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-theme-bg,var(--bs-card-cap-bg));border:var(--bs-card-border-width)solid var(--bs-theme-bg,var(--bs-card-border-color))}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius)var(--bs-card-inner-border-radius)}.card-subtle{border-color:var(--bs-theme-border,var(--bs-card-border-color))}.card-subtle .card-header,.card-subtle .card-footer{color:var(--bs-theme-text-emphasis,currentcolor);background-color:var(--bs-theme-bg-subtle,var(--bs-card-cap-bg));border-color:var(--bs-theme-border,var(--bs-card-border-color))}.card-subtle .card-body,.card-subtle .card-list{border-color:var(--bs-theme-border,var(--bs-card-border-color))}.nav.card-header-tabs{margin-inline:calc(-.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));border-block-end:0}.nav.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-block-end-color:var(--bs-card-bg)}.card-img-overlay{padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius);position:absolute;inset:0}.card-img,.card-img-top,.card-img-bottom{outline:var(--bs-card-border-width)solid var(--bs-card-border-color);outline-offset:calc(var(--bs-card-border-width)*-1);width:100%}.card-img,.card-img-top{border-start-start-radius:var(--bs-card-inner-border-radius);border-start-end-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-end-end-radius:var(--bs-card-inner-border-radius);border-end-start-radius:var(--bs-card-inner-border-radius)}.card-row{flex-direction:row}.card-row .card-body,.card-row .card-list{border-width:var(--bs-card-border-width)0;border-radius:0}.card-row .card-body:first-child,.card-row .card-list:first-child{border-inline-start-width:var(--bs-card-border-width);border-start-start-radius:var(--bs-card-inner-border-radius);border-end-start-radius:var(--bs-card-inner-border-radius)}.card-row .card-body:last-child,.card-row .card-list:last-child{border-inline-end-width:var(--bs-card-border-width);border-start-end-radius:var(--bs-card-inner-border-radius);border-end-end-radius:var(--bs-card-inner-border-radius)}.card-row .card-body:not(:first-child):not(:last-child),.card-row .card-list:not(:first-child):not(:last-child){border-inline-end-width:var(--bs-card-border-width)}.card-img-start{border-start-start-radius:var(--bs-card-inner-border-radius);border-end-start-radius:var(--bs-card-inner-border-radius)}.card-img-end{border-start-end-radius:var(--bs-card-inner-border-radius);border-end-end-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (width>=576px){.card-group{flex-flow:wrap;display:flex}.card-group>.card{flex:1 0 0;margin-bottom:0}.card-group>.card+.card{border-inline-start:0;margin-inline-start:0}.card-group>.card:not(:last-child){border-start-end-radius:0;border-end-end-radius:0}.card-group>.card:not(:last-child)>.card-img-top,.card-group>.card:not(:last-child)>.card-header{border-start-end-radius:0}.card-group>.card:not(:last-child)>.card-img-bottom,.card-group>.card:not(:last-child)>.card-footer{border-end-end-radius:0}.card-group>.card:not(:first-child){border-start-start-radius:0;border-end-start-radius:0}.card-group>.card:not(:first-child)>.card-img-top,.card-group>.card:not(:first-child)>.card-header{border-start-start-radius:0}.card-group>.card:not(:first-child)>.card-img-bottom,.card-group>.card:not(:first-child)>.card-footer{border-end-start-radius:0}}.carousel{--bs-carousel-control-color:#fff;--bs-carousel-control-width:15%;--bs-carousel-control-opacity:.5;--bs-carousel-control-hover-opacity:.9;--bs-carousel-control-transition:opacity .15s ease;--bs-carousel-control-icon-filter:none;--bs-carousel-indicator-width:30px;--bs-carousel-indicator-height:3px;--bs-carousel-indicator-hit-area-height:10px;--bs-carousel-indicator-spacer:3px;--bs-carousel-indicator-opacity:.5;--bs-carousel-indicator-active-bg:var(--bs-white);--bs-carousel-indicator-active-opacity:1;--bs-carousel-indicator-transition:opacity .6s ease;--bs-carousel-caption-width:70%;--bs-carousel-caption-color:var(--bs-white);--bs-carousel-caption-padding-y:1.25rem;--bs-carousel-caption-spacer:1.25rem;--bs-carousel-control-icon-width:2rem;--bs-carousel-control-prev-icon-bg:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>");--bs-carousel-control-next-icon-bg:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>");--bs-carousel-transition-duration:.6s;--bs-carousel-transition:transform .6s ease-in-out;position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{width:100%;display:flow-root;position:relative;overflow:hidden}.carousel-item{float:inline-start;backface-visibility:hidden;width:100%;transition:var(--bs-carousel-transition);margin-inline-end:-100%;display:none;position:relative}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translate(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s var(--bs-carousel-transition-duration)}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{z-index:1;width:var(--bs-carousel-control-width);color:var(--bs-carousel-control-color);text-align:center;filter:var(--bs-carousel-control-icon-filter);opacity:var(--bs-carousel-control-opacity);transition:var(--bs-carousel-control-transition);background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:flex;position:absolute;inset-block:0}@media (prefers-reduced-motion:reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:var(--bs-carousel-control-color);opacity:var(--bs-carousel-control-hover-opacity);outline:0;text-decoration:none}.carousel-control-prev{inset-inline-start:0}.carousel-control-next{inset-inline-end:0}.carousel-control-prev-icon,.carousel-control-next-icon{width:var(--bs-carousel-control-icon-width);height:var(--bs-carousel-control-icon-width);background-position:50%;background-repeat:no-repeat;background-size:100% 100%;display:inline-block}.carousel-control-prev-icon{background-image:var(--bs-carousel-control-prev-icon-bg)}[dir=rtl] .carousel-control-prev-icon,.carousel-control-next-icon{background-image:var(--bs-carousel-control-next-icon-bg)}[dir=rtl] .carousel-control-next-icon{background-image:var(--bs-carousel-control-prev-icon-bg)}.carousel-indicators{z-index:2;margin-inline:var(--bs-carousel-control-width);justify-content:center;margin-bottom:1rem;padding:0;display:flex;position:absolute;inset:auto 0 0}.carousel-indicators [data-bs-target]{box-sizing:content-box;width:var(--bs-carousel-indicator-width);height:var(--bs-carousel-indicator-height);margin-inline:var(--bs-carousel-indicator-spacer);text-indent:-999px;cursor:pointer;background-color:var(--bs-carousel-indicator-active-bg);border:0;border-block:var(--bs-carousel-indicator-hit-area-height)solid transparent;opacity:var(--bs-carousel-indicator-opacity);transition:var(--bs-carousel-indicator-transition);background-clip:padding-box;flex:0 auto;padding:0}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:var(--bs-carousel-indicator-active-opacity)}.carousel-caption{right:calc((100% - var(--bs-carousel-caption-width))*.5);bottom:var(--bs-carousel-caption-spacer);left:calc((100% - var(--bs-carousel-caption-width))*.5);padding-top:var(--bs-carousel-caption-padding-y);padding-bottom:var(--bs-carousel-caption-padding-y);color:var(--bs-carousel-caption-color);text-align:center;position:absolute}.carousel-dark,[data-bs-theme=dark]{--bs-carousel-indicator-active-bg:#000;--bs-carousel-caption-color:#000;--bs-carousel-control-icon-filter:invert(1)grayscale(100)}[data-vc=calendar]{--bs-datepicker-padding:1rem;--bs-datepicker-bg:var(--bs-bg-body);--bs-datepicker-color:var(--bs-fg-body);--bs-datepicker-border-color:var(--bs-border-color-translucent);--bs-datepicker-border-width:var(--bs-border-width);--bs-datepicker-border-radius:var(--bs-border-radius-lg);--bs-datepicker-box-shadow:var(--bs-box-shadow);--bs-datepicker-font-size:var(--bs-font-size-sm);--bs-datepicker-min-width:280px;--bs-datepicker-zindex:1000;--bs-datepicker-header-font-weight:600;--bs-datepicker-weekday-color:var(--bs-fg-3);--bs-datepicker-day-hover-bg:var(--bs-bg-1);--bs-datepicker-day-selected-bg:var(--bs-primary-bg);--bs-datepicker-day-selected-color:var(--bs-primary-contrast);--bs-datepicker-day-today-bg:var(--bs-bg-2);--bs-datepicker-day-today-color:var(--bs-fg-1);--bs-datepicker-day-disabled-color:var(--bs-fg-4);z-index:var(--bs-datepicker-zindex);box-sizing:border-box;min-width:var(--bs-datepicker-min-width);padding:var(--bs-datepicker-padding);font-family:var(--bs-font-sans-serif);font-size:var(--bs-datepicker-font-size);color:var(--bs-datepicker-color);color-scheme:light dark;background-color:var(--bs-datepicker-bg);border:var(--bs-datepicker-border-width)solid var(--bs-datepicker-border-color);border-radius:var(--bs-datepicker-border-radius);box-shadow:var(--bs-datepicker-box-shadow);opacity:1;flex-direction:column;display:flex;position:absolute}[data-vc=calendar][data-bs-theme=light]{color-scheme:light}[data-vc=calendar][data-bs-theme=dark]{color-scheme:dark}[data-vc=calendar] button:focus-visible{z-index:1;outline:var(--bs-focus-ring);position:relative}[data-vc-calendar-hidden]{pointer-events:none;opacity:0}[data-vc=calendar]:not([data-vc-input]){width:fit-content;box-shadow:none;border:0;padding:0;position:relative}[data-vc-position=bottom]{margin-block-start:.25rem}[data-vc-position=top]{margin-block-end:-.25rem}[data-vc-arrow]{width:2rem;height:2rem;color:var(--bs-datepicker-color);pointer-events:auto;cursor:pointer;border-radius:var(--bs-border-radius);background-color:#0000;border:0;display:block;position:relative}[data-vc-arrow]:before{content:"";background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%236b7280' d='M12 16c-.3 0-.5-.1-.7-.3l-6-6c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l5.3 5.3 5.3-5.3c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-6 6c-.2.2-.4.3-.7.3'/></svg>");background-position:50%;background-repeat:no-repeat;position:absolute;inset:.25rem}[data-vc-arrow]:hover{background-color:var(--bs-datepicker-day-hover-bg)}[data-vc-arrow=prev]:before{transform:rotate(90deg)}[data-vc-arrow=next]:before{transform:rotate(-90deg)}[data-vc=controls]{z-index:20;pointer-events:none;justify-content:space-between;align-items:center;padding-top:1rem;padding-left:1rem;padding-right:1rem;display:flex;position:absolute;top:0;left:0;right:0}[data-vc=grid]{flex-wrap:wrap;flex-grow:1;gap:1.75rem;display:flex}[data-vc=column]{flex-direction:column;flex-grow:1;min-width:240px;display:flex}[data-vc=header]{align-items:center;margin-bottom:.75rem;display:flex;position:relative}[data-vc-header=content]{white-space:pre-wrap;flex-grow:1;justify-content:center;align-items:center;display:inline-flex}[data-vc=month],[data-vc=year]{font-size:1rem;font-weight:var(--bs-datepicker-header-font-weight);color:var(--bs-datepicker-color);border-radius:var(--bs-border-radius);background-color:#0000;border:0;margin-inline:-.125rem;padding:.25rem .5rem}[data-vc=month]:disabled,[data-vc=year]:disabled{color:var(--bs-datepicker-day-disabled-color);pointer-events:none}[data-vc=month]:hover:not(:disabled),[data-vc=year]:hover:not(:disabled){background-color:var(--bs-datepicker-day-hover-bg)}[data-vc=content]{flex-direction:column;flex-grow:1;display:flex}[data-vc=months],[data-vc=years]{grid-template-columns:repeat(var(--bs-vc-columns,4),minmax(0,1fr));-moz-column-gap:.25rem;flex-grow:1;align-items:center;gap:1rem .25rem;display:grid}[data-vc=years]{--bs-vc-columns:5}[data-vc-months-month],[data-vc-years-year]{height:2.5rem;color:var(--bs-datepicker-weekday-color);text-align:center;word-break:break-all;cursor:pointer;border-radius:var(--bs-border-radius);background-color:#0000;border:0;justify-content:center;align-items:center;padding:.25rem;font-size:.75rem;font-weight:600;line-height:1rem;display:flex}[data-vc-months-month]:disabled,[data-vc-years-year]:disabled{color:var(--bs-datepicker-day-disabled-color);pointer-events:none}[data-vc-months-month]:hover:not(:disabled),[data-vc-years-year]:hover:not(:disabled){background-color:var(--bs-datepicker-day-hover-bg)}[data-vc-months-month][data-vc-months-month-selected],[data-vc-months-month][data-vc-years-year-selected],[data-vc-years-year][data-vc-months-month-selected],[data-vc-years-year][data-vc-years-year-selected],[data-vc-months-month][data-vc-months-month-selected]:hover,[data-vc-months-month][data-vc-years-year-selected]:hover,[data-vc-years-year][data-vc-months-month-selected]:hover,[data-vc-years-year][data-vc-years-year-selected]:hover{color:var(--bs-datepicker-day-selected-color);background-color:var(--bs-datepicker-day-selected-bg)}[data-vc=week]{grid-template-columns:repeat(7,1fr);justify-items:center;margin-bottom:.5rem;display:grid}[data-vc-week-day]{width:100%;min-width:1.875rem;color:var(--bs-datepicker-weekday-color);background-color:#0000;border:0;justify-content:center;align-items:center;margin:0;padding:0;font-size:.75rem;font-weight:600;line-height:1rem;display:flex}button[data-vc-week-day]{cursor:pointer}[data-vc=dates]{pointer-events:none}[data-vc-dates=row]{grid-template-columns:repeat(7,1fr);place-items:center;width:100%;display:grid}[data-vc-date]{pointer-events:auto;justify-content:center;align-items:center;width:100%;padding-top:.125rem;padding-bottom:.125rem;display:flex;position:relative}[data-vc-date]:not(:has([data-vc-date-btn])),[data-vc-date][data-vc-date-disabled],[data-vc-date][data-vc-date-disabled] [data-vc-date-btn]{pointer-events:none}[data-vc-date-btn]{width:100%;min-width:1.875rem;height:100%;min-height:1.875rem;color:var(--bs-datepicker-color);cursor:pointer;border-radius:var(--bs-border-radius);background-color:#0000;border:0;justify-content:center;align-items:center;padding:0;font-size:.75rem;font-weight:400;line-height:1rem;display:flex}[data-vc-date-btn]:hover{background-color:var(--bs-datepicker-day-hover-bg)}[data-vc-date-today] [data-vc-date-btn]{color:var(--bs-datepicker-day-today-color);background-color:var(--bs-datepicker-day-today-bg);font-weight:600}[data-vc-date-month=next] [data-vc-date-btn],[data-vc-date-month=prev] [data-vc-date-btn]{opacity:.5}[data-vc-date-disabled] [data-vc-date-btn]{color:var(--bs-datepicker-day-disabled-color)}[data-vc-date-hover] [data-vc-date-btn]{background-color:var(--bs-datepicker-day-hover-bg);border-radius:0}[data-vc-date-hover=first] [data-vc-date-btn]{border-start-start-radius:var(--bs-border-radius);border-end-start-radius:var(--bs-border-radius)}[data-vc-date-hover=last] [data-vc-date-btn]{border-start-end-radius:var(--bs-border-radius);border-end-end-radius:var(--bs-border-radius)}[data-vc-date-hover=first-and-last] [data-vc-date-btn]{border-radius:var(--bs-border-radius)}[data-vc-date-selected=middle] [data-vc-date-btn]{opacity:.8;border-radius:0}[data-vc-date-selected] [data-vc-date-btn]{color:var(--bs-datepicker-day-selected-color);background-color:var(--bs-datepicker-day-selected-bg)}[data-vc-date-selected=first] [data-vc-date-btn]{border-top-left-radius:var(--bs-border-radius);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--bs-border-radius)}[data-vc-date-selected=last] [data-vc-date-btn]{border-top-left-radius:0;border-top-right-radius:var(--bs-border-radius);border-bottom-right-radius:var(--bs-border-radius);border-bottom-left-radius:0}[data-vc-date-selected=first-and-last] [data-vc-date-btn]{border-radius:var(--bs-border-radius)}.dialog-open{scrollbar-gutter:stable;overflow:hidden}.dialog{--bs-dialog-padding:1rem;--bs-dialog-width:500px;--bs-dialog-margin:1.75rem;--bs-dialog-color:var(--bs-fg-body);--bs-dialog-bg:var(--bs-bg-body);--bs-dialog-border-color:var(--bs-border-color-translucent);--bs-dialog-border-width:var(--bs-border-width);--bs-dialog-border-radius:var(--bs-border-radius-lg);--bs-dialog-box-shadow:var(--bs-box-shadow-lg);--bs-dialog-backdrop-bg:#00000080;--bs-dialog-backdrop-blur:8px;--bs-dialog-header-padding:1rem;--bs-dialog-header-border-color:var(--bs-border-color);--bs-dialog-header-border-width:var(--bs-border-width);--bs-dialog-footer-padding:1rem;--bs-dialog-footer-border-color:var(--bs-border-color);--bs-dialog-footer-border-width:var(--bs-border-width);--bs-dialog-footer-gap:.5rem;max-width:var(--bs-dialog-width);max-height:calc(100% - var(--bs-dialog-margin)*2);color:var(--bs-dialog-color);background-color:var(--bs-dialog-bg);border:var(--bs-dialog-border-width)solid var(--bs-dialog-border-color);border-radius:var(--bs-dialog-border-radius);box-shadow:var(--bs-dialog-box-shadow);background-clip:padding-box;margin:auto;padding:0}.dialog::backdrop{background-color:var(--bs-dialog-backdrop-bg);backdrop-filter:blur(var(--bs-dialog-backdrop-blur))}.dialog.fade{opacity:0;transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.dialog.fade{transition:none}}.dialog.fade::backdrop{opacity:0;transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.dialog.fade::backdrop{transition:none}}.dialog.fade[open],.dialog.fade[open]::backdrop{opacity:1}.dialog.dialog-static{transform:scale(1.02)}.dialog.dialog-nonmodal{z-index:1055;margin-inline:0;position:fixed;inset-block-start:50%;inset-inline-start:50%;transform:translate(-50%,-50%)}.dialog.dialog-overflow{width:100%;max-width:100%;height:100%;max-height:100%;padding:var(--bs-dialog-margin);overscroll-behavior:contain;box-shadow:none;background:0 0;border:0;margin:0;position:fixed;inset:0;overflow-y:auto}.dialog.dialog-overflow>.dialog-box{max-width:var(--bs-dialog-width);color:var(--bs-dialog-color);background-color:var(--bs-dialog-bg);border:var(--bs-dialog-border-width)solid var(--bs-dialog-border-color);border-radius:var(--bs-dialog-border-radius);box-shadow:var(--bs-dialog-box-shadow);background-clip:padding-box;margin-block-end:var(--bs-dialog-margin);margin-inline:auto}.dialog.dialog-scrollable[open]{max-height:calc(100% - var(--bs-dialog-margin)*2);flex-direction:column;display:flex}.dialog.dialog-scrollable[open] .dialog-body{overflow-y:auto}.dialog-sm{--bs-dialog-width:280px}.dialog-lg{--bs-dialog-width:800px}.dialog-xl{--bs-dialog-width:1140px}.dialog-fullscreen{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}@media (width<576px){.dialog-fullscreen-sm-down{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}}@media (width<768px){.dialog-fullscreen-md-down{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}}@media (width<1024px){.dialog-fullscreen-lg-down{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}}@media (width<1280px){.dialog-fullscreen-xl-down{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}}@media (width<1536px){.dialog-fullscreen-2xl-down{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}}.dialog-header{padding:var(--bs-dialog-header-padding);border-block-end:var(--bs-dialog-header-border-width)solid var(--bs-dialog-header-border-color);flex-shrink:0;align-items:center;display:flex}.dialog-header .btn-close{margin-inline-start:auto}.dialog-title{font-size:var(--bs-font-size-md);margin-bottom:0;line-height:1.5}.dialog-body{padding:var(--bs-dialog-padding);flex:auto;position:relative;overflow-y:auto}.dialog-footer{gap:var(--bs-dialog-footer-gap);padding:var(--bs-dialog-footer-padding);border-block-start:var(--bs-dialog-footer-border-width)solid var(--bs-dialog-footer-border-color);flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;display:flex}.dropdown{position:relative}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-gap:.125rem;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:.25rem;--bs-dropdown-padding-y:.25rem;--bs-dropdown-spacer:.125rem;--bs-dropdown-font-size:var(--bs-font-size-sm);--bs-dropdown-color:var(--bs-fg-body);--bs-dropdown-bg:var(--bs-bg-body);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius-lg);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(var(--bs-dropdown-border-radius) - var(--bs-dropdown-border-width));--bs-dropdown-box-shadow:var(--bs-box-shadow);--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:.125rem;--bs-dropdown-divider-margin-x:.25rem;--bs-dropdown-link-color:var(--bs-fg-body);--bs-dropdown-link-hover-color:var(--bs-fg-body);--bs-dropdown-link-hover-bg:var(--bs-bg-1);--bs-dropdown-link-active-color:var(--bs-primary-contrast);--bs-dropdown-link-active-bg:var(--bs-primary-bg);--bs-dropdown-link-disabled-color:var(--bs-fg-3);--bs-dropdown-item-gap:.5rem;--bs-dropdown-item-padding-x:.75rem;--bs-dropdown-item-padding-y:.25rem;--bs-dropdown-item-border-radius:var(--bs-border-radius);--bs-dropdown-header-color:var(--bs-fg-2);--bs-dropdown-header-padding-x:.75rem;--bs-dropdown-header-padding-y:.25rem;z-index:var(--bs-dropdown-zindex);gap:var(--bs-dropdown-gap);min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y)var(--bs-dropdown-padding-x);font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:start;background-color:var(--bs-dropdown-bg);border:var(--bs-dropdown-border-width)solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius);box-shadow:var(--bs-dropdown-box-shadow);background-clip:padding-box;flex-direction:column;margin:0;list-style:none;display:none;position:absolute}.dropdown-menu.show{display:flex}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y)var(--bs-dropdown-divider-margin-x);border-block-start:1px solid var(--bs-dropdown-divider-bg);opacity:1;overflow:hidden}.dropdown-item{gap:var(--bs-dropdown-item-gap);width:100%;padding:var(--bs-dropdown-item-padding-y)var(--bs-dropdown-item-padding-x);color:var(--bs-theme-text,var(--bs-dropdown-link-color));text-align:inherit;white-space:nowrap;border-radius:var(--bs-dropdown-item-border-radius,0);background-color:#0000;border:0;align-items:center;font-weight:400;text-decoration:none;display:flex}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-theme-text,var(--bs-dropdown-link-hover-color));background-color:var(--bs-theme-bg-subtle,var(--bs-dropdown-link-hover-bg))}.dropdown-item.active,.dropdown-item:active{color:var(--bs-theme-contrast,var(--bs-dropdown-link-active-color));background-color:var(--bs-theme-bg,var(--bs-dropdown-link-active-bg))}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:#0000}.dropdown-header{padding:var(--bs-dropdown-header-padding-y)var(--bs-dropdown-header-padding-x);font-size:var(--bs-font-size-sm);color:var(--bs-dropdown-header-color);white-space:nowrap;margin-bottom:0;display:block}.dropdown-item-text{padding:var(--bs-dropdown-item-padding-y)var(--bs-dropdown-item-padding-x);color:var(--bs-fg-2);display:block}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-item{justify-content:space-between;align-items:center;display:flex}.dropdown-submenu>.dropdown-item:after{content:"";border:.125em solid;border-width:0 .125em .125em 0;flex-shrink:0;width:.375em;height:.375em;margin-inline-start:auto;display:inline-block;transform:rotate(-45deg)}[dir=rtl] .dropdown-submenu>.dropdown-item:after{transform:rotate(135deg)}.dropdown-submenu>.dropdown-menu{margin-top:calc(-1*var(--bs-dropdown-padding-y));top:0}.dropdown-submenu:hover>.dropdown-item,.dropdown-submenu:focus-within>.dropdown-item,.dropdown-submenu.show>.dropdown-item{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.list-group{--bs-list-group-color:var(--bs-fg-body);--bs-list-group-bg:var(--bs-bg-body);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:.5rem;--bs-list-group-action-color:var(--bs-fg-2);--bs-list-group-action-hover-color:var(--bs-fg-1);--bs-list-group-action-hover-bg:var(--bs-bg-1);--bs-list-group-action-active-color:var(--bs-fg-body);--bs-list-group-action-active-bg:var(--bs-bg-2);--bs-list-group-disabled-color:var(--bs-fg-3);--bs-list-group-disabled-bg:var(--bs-bg-body);--bs-list-group-active-color:var(--bs-primary-contrast);--bs-list-group-active-bg:var(--bs-primary-bg);--bs-list-group-active-border-color:var(--bs-primary-bg);border-radius:var(--bs-list-group-border-radius);flex-direction:column;margin-bottom:0;padding-inline-start:0;display:flex}.list-group-numbered{counter-reset:section;list-style-type:none}.list-group-numbered>.list-group-item:before{content:counters(section,".")". ";counter-increment:section}.list-group-item{padding:var(--bs-list-group-item-padding-y)var(--bs-list-group-item-padding-x);color:var(--bs-theme-text,var(--bs-list-group-color));background-color:var(--bs-theme-bg-subtle,var(--bs-list-group-bg));border:var(--bs-list-group-border-width)solid var(--bs-theme-border,var(--bs-list-group-border-color));display:block;position:relative}.list-group-item:first-child{border-start-start-radius:inherit;border-start-end-radius:inherit}.list-group-item:last-child{border-end-end-radius:inherit;border-end-start-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-block-start-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1*var(--bs-list-group-border-width));border-block-start-width:var(--bs-list-group-border-width)}.list-group-item-action{width:100%;color:var(--bs-theme-text,var(--bs-list-group-action-color));text-align:inherit;text-decoration:none}.list-group-item-action:not(.active):hover,.list-group-item-action:not(.active):focus{z-index:1;color:var(--bs-theme-text-emphasis,var(--bs-list-group-action-hover-color));background-color:var(--bs-theme-bg-muted,var(--bs-list-group-action-hover-bg));text-decoration:none}.list-group-item-action:not(.active):active{color:var(--bs-theme-text-emphasis,var(--bs-list-group-action-active-color));background-color:var(--bs-theme-bg-muted,var(--bs-list-group-action-active-bg))}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1*var(--bs-list-group-border-width))}@media (width>=576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1*var(--bs-list-group-border-width))}}@media (width>=768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1*var(--bs-list-group-border-width))}}@media (width>=1024px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1*var(--bs-list-group-border-width))}}@media (width>=1280px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1*var(--bs-list-group-border-width))}}@media (width>=1536px){.list-group-horizontal-2xl{flex-direction:row}.list-group-horizontal-2xl>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-2xl>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.list-group-horizontal-2xl>.list-group-item.active{margin-top:0}.list-group-horizontal-2xl>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.list-group-horizontal-2xl>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1*var(--bs-list-group-border-width))}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-block-end-width:0}.nav{--bs-nav-gap:.125rem;--bs-nav-link-gap:.5rem;--bs-nav-link-align:center;--bs-nav-link-justify:center;--bs-nav-link-padding-x:.75rem;--bs-nav-link-padding-y:.375rem;--bs-nav-link-color:var(--bs-fg-2);--bs-nav-link-hover-color:var(--bs-fg-1);--bs-nav-link-hover-bg:var(--bs-bg-1);--bs-nav-link-active-color:var(--bs-fg-body);--bs-nav-link-active-bg:var(--bs-bg-2);--bs-nav-link-disabled-color:var(--bs-fg-4);--bs-nav-link-transition-property:color,background-color,border-color;--bs-nav-link-transition-timing:.15s ease-in-out;--bs-nav-link-transition:var(--bs-nav-link-transition-property)var(--bs-nav-link-transition-timing);gap:var(--bs-nav-gap);flex-wrap:wrap;margin-bottom:0;padding-inline-start:0;list-style:none;display:flex}.nav-item{display:flex}.nav-link{gap:var(--bs-nav-link-gap);align-items:var(--bs-nav-link-align);justify-content:var(--bs-nav-link-justify);padding:var(--bs-nav-link-padding-y)var(--bs-nav-link-padding-x);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);white-space:nowrap;border-radius:var(--bs-border-radius);transition:var(--bs-nav-link-transition);background:0 0;border:0;text-decoration:none;display:flex}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color);background-color:var(--bs-nav-link-hover-bg)}.nav-link:focus-visible{--bs-focus-ring-offset:1px;color:var(--bs-nav-link-hover-color);outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.nav-link.active,.nav-link:active{color:var(--bs-nav-link-active-color);background-color:var(--bs-nav-link-active-bg)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:var(--bs-border-subtle);--bs-nav-tabs-link-active-color:var(--bs-fg-color);--bs-nav-tabs-link-active-bg:var(--bs-bg-body);--bs-nav-tabs-link-active-border-color:var(--bs-border-color)var(--bs-border-color)var(--bs-bg-body);box-shadow:inset 0 calc(-1*var(--bs-nav-tabs-border-width))0 var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{border:var(--bs-nav-tabs-border-width)solid transparent;border-bottom-color:var(--bs-nav-tabs-border-color);border-end-end-radius:0;border-end-start-radius:0}.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color);border-bottom-color:var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color);border-bottom-color:var(--bs-nav-tabs-link-active-bg)}.nav-tabs .dropdown-menu{margin-top:calc(-1*var(--bs-nav-tabs-border-width));border-start-start-radius:0;border-start-end-radius:0}.nav-pills{--bs-nav-pills-link-active-color:var(--bs-component-active-color);--bs-nav-pills-link-active-bg:var(--bs-component-active-bg)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-gap:1rem;--bs-nav-link-active-bg:transparent;--bs-nav-underline-border-width:.125rem;--bs-nav-underline-link-active-color:var(--bs-fg-color)}.nav-underline .nav-link{border-block-end:var(--bs-nav-underline-border-width)solid transparent;border-radius:0;padding-inline:0}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-block-end-color:currentColor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{color:var(--bs-nav-underline-link-active-color);border-block-end-color:currentColor;font-weight:700}.nav-fill>.nav-link,.nav-fill .nav-item{text-align:center;flex:auto}.nav-justified>.nav-link,.nav-justified .nav-item{text-align:center;flex-grow:1;flex-basis:0}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-overflow{flex-wrap:nowrap;min-width:0}.nav-overflow-item{flex-shrink:0;margin-inline-start:auto}.nav-overflow [data-bs-nav-overflow=true]{display:none}.nav-overflow-keep{flex-shrink:0}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:.5rem;--bs-navbar-color:var(--bs-fg-2);--bs-navbar-hover-color:var(--bs-fg-1);--bs-navbar-disabled-color:var(--bs-fg-3);--bs-navbar-active-color:var(--bs-fg-body);--bs-navbar-brand-padding-y:.75rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:var(--bs-font-size-md);--bs-navbar-brand-font-weight:var(--bs-font-weight-medium);--bs-navbar-brand-color:var(--bs-fg-body);--bs-navbar-brand-hover-color:var(--bs-fg-body);--bs-navbar-nav-link-padding-x:.75rem;--bs-navbar-toggler-width:2rem;--bs-navbar-toggler-padding-y:.25rem;--bs-navbar-toggler-padding-x:.75rem;--bs-navbar-toggler-font-size:var(--bs-font-size-lg);--bs-navbar-toggler-border-color:color-mix(in oklch,var(--bs-fg-body)15%,transparent);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-transition:box-shadow .15s ease-in-out;padding:var(--bs-navbar-padding-y)var(--bs-navbar-padding-x);flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex;position:relative;container-type:inline-size}.navbar>.container-2xl,.navbar>.container-xl,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container,.navbar>.container-fluid{flex-wrap:inherit;justify-content:space-between;align-items:center;display:flex}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);font-size:var(--bs-navbar-brand-font-size);font-weight:var(--bs-navbar-brand-font-weight);color:var(--bs-navbar-brand-color);white-space:nowrap;margin-inline-end:var(--bs-navbar-brand-margin-end);text-decoration:none}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-gap:.25rem;--bs-nav-link-gap:.5rem;--bs-nav-link-padding-x:.5rem;--bs-nav-link-padding-y:.5rem;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-hover-bg:transparent;--bs-nav-link-active-color:var(--bs-navbar-active-color);--bs-nav-link-active-bg:transparent;--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);gap:var(--bs-nav-gap);flex-direction:column;margin-bottom:0;padding-inline-start:0;list-style:none;display:flex}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-text{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-toggler{--bs-btn-bg:transparent;--bs-btn-hover-bg:var(--bs-bg-2)}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.navbar-expand .navbar-toggler{display:none!important}.navbar-expand .offcanvas{z-index:auto;box-shadow:none;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{flex-direction:row;flex-grow:0;align-items:center;padding:0;display:flex;overflow-y:visible}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}@container (width>=576px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.navbar-expand-sm .navbar-toggler{display:none!important}.navbar-expand-sm .offcanvas{z-index:auto;box-shadow:none;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{flex-direction:row;flex-grow:0;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=768px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.navbar-expand-md .navbar-toggler{display:none!important}.navbar-expand-md .offcanvas{z-index:auto;box-shadow:none;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{flex-direction:row;flex-grow:0;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=1024px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.navbar-expand-lg .navbar-toggler{display:none!important}.navbar-expand-lg .offcanvas{z-index:auto;box-shadow:none;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{flex-direction:row;flex-grow:0;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=1280px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.navbar-expand-xl .navbar-toggler{display:none!important}.navbar-expand-xl .offcanvas{z-index:auto;box-shadow:none;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{flex-direction:row;flex-grow:0;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=1536px){.navbar-expand-2xl>.container,.navbar-expand-2xl>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-2xl .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.navbar-expand-2xl .navbar-toggler{display:none!important}.navbar-expand-2xl .offcanvas{z-index:auto;box-shadow:none;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-2xl .offcanvas .offcanvas-header{display:none}.navbar-expand-2xl .offcanvas .offcanvas-body{flex-direction:row;flex-grow:0;align-items:center;padding:0;display:flex;overflow-y:visible}}.navbar[data-bs-theme=dark]{--bs-navbar-color:color-mix(in oklch,var(--bs-white).55,transparent);--bs-navbar-hover-color:color-mix(in oklch,var(--bs-white).75,transparent);--bs-navbar-disabled-color:color-mix(in oklch,var(--bs-white).25,transparent);--bs-navbar-active-color:var(--bs-white);--bs-navbar-brand-color:var(--bs-white);--bs-navbar-brand-hover-color:var(--bs-white);--bs-navbar-toggler-border-color:color-mix(in oklch,var(--bs-white).1,transparent)}@media (width<576px){.offcanvas-sm{z-index:var(--bs-offcanvas-zindex);max-width:calc(100% - var(--bs-offcanvas-inset)*2);max-height:calc(100% - var(--bs-offcanvas-inset)*2);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);border:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);border-radius:var(--bs-offcanvas-border-radius);box-shadow:var(--bs-offcanvas-box-shadow);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;display:flex;position:fixed}}@media (width<576px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (width<576px){.offcanvas-sm.offcanvas-start{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-start:var(--bs-offcanvas-inset);transform:translate(-100%)}:root:dir(rtl) .offcanvas-sm.offcanvas-start{transform:translate(100%)}.offcanvas-sm.offcanvas-end{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-end:var(--bs-offcanvas-inset);transform:translate(100%)}:root:dir(rtl) .offcanvas-sm.offcanvas-end{transform:translate(-100%)}.offcanvas-sm.offcanvas-top{inset:var(--bs-offcanvas-inset)var(--bs-offcanvas-inset)auto;height:var(--bs-offcanvas-height);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{inset:auto var(--bs-offcanvas-inset)var(--bs-offcanvas-inset);height:var(--bs-offcanvas-height);transform:translateY(100%)}.offcanvas-sm.offcanvas-fullscreen{inset:var(--bs-offcanvas-inset);width:auto;max-width:none;height:auto;max-height:none;transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media (width>=576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{flex-direction:row;flex-grow:0;padding:0;overflow-y:visible;background-color:#0000!important}}@media (width<768px){.offcanvas-md{z-index:var(--bs-offcanvas-zindex);max-width:calc(100% - var(--bs-offcanvas-inset)*2);max-height:calc(100% - var(--bs-offcanvas-inset)*2);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);border:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);border-radius:var(--bs-offcanvas-border-radius);box-shadow:var(--bs-offcanvas-box-shadow);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;display:flex;position:fixed}}@media (width<768px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (width<768px){.offcanvas-md.offcanvas-start{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-start:var(--bs-offcanvas-inset);transform:translate(-100%)}:root:dir(rtl) .offcanvas-md.offcanvas-start{transform:translate(100%)}.offcanvas-md.offcanvas-end{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-end:var(--bs-offcanvas-inset);transform:translate(100%)}:root:dir(rtl) .offcanvas-md.offcanvas-end{transform:translate(-100%)}.offcanvas-md.offcanvas-top{inset:var(--bs-offcanvas-inset)var(--bs-offcanvas-inset)auto;height:var(--bs-offcanvas-height);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{inset:auto var(--bs-offcanvas-inset)var(--bs-offcanvas-inset);height:var(--bs-offcanvas-height);transform:translateY(100%)}.offcanvas-md.offcanvas-fullscreen{inset:var(--bs-offcanvas-inset);width:auto;max-width:none;height:auto;max-height:none;transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media (width>=768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{flex-direction:row;flex-grow:0;padding:0;overflow-y:visible;background-color:#0000!important}}@media (width<1024px){.offcanvas-lg{z-index:var(--bs-offcanvas-zindex);max-width:calc(100% - var(--bs-offcanvas-inset)*2);max-height:calc(100% - var(--bs-offcanvas-inset)*2);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);border:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);border-radius:var(--bs-offcanvas-border-radius);box-shadow:var(--bs-offcanvas-box-shadow);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;display:flex;position:fixed}}@media (width<1024px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (width<1024px){.offcanvas-lg.offcanvas-start{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-start:var(--bs-offcanvas-inset);transform:translate(-100%)}:root:dir(rtl) .offcanvas-lg.offcanvas-start{transform:translate(100%)}.offcanvas-lg.offcanvas-end{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-end:var(--bs-offcanvas-inset);transform:translate(100%)}:root:dir(rtl) .offcanvas-lg.offcanvas-end{transform:translate(-100%)}.offcanvas-lg.offcanvas-top{inset:var(--bs-offcanvas-inset)var(--bs-offcanvas-inset)auto;height:var(--bs-offcanvas-height);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{inset:auto var(--bs-offcanvas-inset)var(--bs-offcanvas-inset);height:var(--bs-offcanvas-height);transform:translateY(100%)}.offcanvas-lg.offcanvas-fullscreen{inset:var(--bs-offcanvas-inset);width:auto;max-width:none;height:auto;max-height:none;transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media (width>=1024px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{flex-direction:row;flex-grow:0;padding:0;overflow-y:visible;background-color:#0000!important}}@media (width<1280px){.offcanvas-xl{z-index:var(--bs-offcanvas-zindex);max-width:calc(100% - var(--bs-offcanvas-inset)*2);max-height:calc(100% - var(--bs-offcanvas-inset)*2);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);border:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);border-radius:var(--bs-offcanvas-border-radius);box-shadow:var(--bs-offcanvas-box-shadow);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;display:flex;position:fixed}}@media (width<1280px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (width<1280px){.offcanvas-xl.offcanvas-start{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-start:var(--bs-offcanvas-inset);transform:translate(-100%)}:root:dir(rtl) .offcanvas-xl.offcanvas-start{transform:translate(100%)}.offcanvas-xl.offcanvas-end{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-end:var(--bs-offcanvas-inset);transform:translate(100%)}:root:dir(rtl) .offcanvas-xl.offcanvas-end{transform:translate(-100%)}.offcanvas-xl.offcanvas-top{inset:var(--bs-offcanvas-inset)var(--bs-offcanvas-inset)auto;height:var(--bs-offcanvas-height);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{inset:auto var(--bs-offcanvas-inset)var(--bs-offcanvas-inset);height:var(--bs-offcanvas-height);transform:translateY(100%)}.offcanvas-xl.offcanvas-fullscreen{inset:var(--bs-offcanvas-inset);width:auto;max-width:none;height:auto;max-height:none;transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media (width>=1280px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{flex-direction:row;flex-grow:0;padding:0;overflow-y:visible;background-color:#0000!important}}@media (width<1536px){.offcanvas-2xl{z-index:var(--bs-offcanvas-zindex);max-width:calc(100% - var(--bs-offcanvas-inset)*2);max-height:calc(100% - var(--bs-offcanvas-inset)*2);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);border:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);border-radius:var(--bs-offcanvas-border-radius);box-shadow:var(--bs-offcanvas-box-shadow);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;display:flex;position:fixed}}@media (width<1536px) and (prefers-reduced-motion:reduce){.offcanvas-2xl{transition:none}}@media (width<1536px){.offcanvas-2xl.offcanvas-start{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-start:var(--bs-offcanvas-inset);transform:translate(-100%)}:root:dir(rtl) .offcanvas-2xl.offcanvas-start{transform:translate(100%)}.offcanvas-2xl.offcanvas-end{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-end:var(--bs-offcanvas-inset);transform:translate(100%)}:root:dir(rtl) .offcanvas-2xl.offcanvas-end{transform:translate(-100%)}.offcanvas-2xl.offcanvas-top{inset:var(--bs-offcanvas-inset)var(--bs-offcanvas-inset)auto;height:var(--bs-offcanvas-height);transform:translateY(-100%)}.offcanvas-2xl.offcanvas-bottom{inset:auto var(--bs-offcanvas-inset)var(--bs-offcanvas-inset);height:var(--bs-offcanvas-height);transform:translateY(100%)}.offcanvas-2xl.offcanvas-fullscreen{inset:var(--bs-offcanvas-inset);width:auto;max-width:none;height:auto;max-height:none;transform:translateY(100%)}.offcanvas-2xl.showing,.offcanvas-2xl.show:not(.hiding){transform:none}.offcanvas-2xl.showing,.offcanvas-2xl.hiding,.offcanvas-2xl.show{visibility:visible}}@media (width>=1536px){.offcanvas-2xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-2xl .offcanvas-header{display:none}.offcanvas-2xl .offcanvas-body{flex-direction:row;flex-grow:0;padding:0;overflow-y:visible;background-color:#0000!important}}.offcanvas{z-index:var(--bs-offcanvas-zindex);max-width:calc(100% - var(--bs-offcanvas-inset)*2);max-height:calc(100% - var(--bs-offcanvas-inset)*2);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);border:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);border-radius:var(--bs-offcanvas-border-radius);box-shadow:var(--bs-offcanvas-box-shadow);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;display:flex;position:fixed}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-start:var(--bs-offcanvas-inset);transform:translate(-100%)}:root:dir(rtl) .offcanvas.offcanvas-start{transform:translate(100%)}.offcanvas.offcanvas-end{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-end:var(--bs-offcanvas-inset);transform:translate(100%)}:root:dir(rtl) .offcanvas.offcanvas-end{transform:translate(-100%)}.offcanvas.offcanvas-top{inset:var(--bs-offcanvas-inset)var(--bs-offcanvas-inset)auto;height:var(--bs-offcanvas-height);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{inset:auto var(--bs-offcanvas-inset)var(--bs-offcanvas-inset);height:var(--bs-offcanvas-height);transform:translateY(100%)}.offcanvas.offcanvas-fullscreen{inset:var(--bs-offcanvas-inset);width:auto;max-width:none;height:auto;max-height:none;transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{--bs-offcanvas-backdrop-bg:var(--bs-bg-body);--bs-offcanvas-backdrop-opacity:25%;--bs-offcanvas-backdrop-blur:8px;z-index:1040;background-color:color-mix(in oklch,var(--bs-offcanvas-backdrop-bg)var(--bs-offcanvas-backdrop-opacity),transparent);backdrop-filter:blur(var(--bs-offcanvas-backdrop-blur));position:fixed;inset:0}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:1}.offcanvas-header{padding:var(--bs-offcanvas-padding-y)var(--bs-offcanvas-padding-x);align-items:center;display:flex}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5)calc(var(--bs-offcanvas-padding-x)*.5);margin-inline-start:auto;margin-inline-end:calc(-.5*var(--bs-offcanvas-padding-x));margin-top:calc(-.5*var(--bs-offcanvas-padding-y));margin-bottom:calc(-.5*var(--bs-offcanvas-padding-y))}.offcanvas-title{line-height:var(--bs-offcanvas-title-line-height);margin-bottom:0}.offcanvas-body{gap:var(--bs-offcanvas-padding-y);padding:var(--bs-offcanvas-padding-y)var(--bs-offcanvas-padding-x);flex-direction:column;flex-grow:1;display:flex;overflow-y:auto}.offcanvas-footer{padding:var(--bs-offcanvas-padding-y)var(--bs-offcanvas-padding-x);border-block-start:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:.5rem;display:flex}.pagination{--bs-pagination-min-height:var(--bs-btn-input-min-height);--bs-pagination-padding-x:var(--bs-btn-input-padding-x);--bs-pagination-padding-y:var(--bs-btn-input-padding-y);--bs-pagination-font-size:var(--bs-btn-input-font-size);--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-bg-body);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-btn-input-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-bg-1);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-bg-2);--bs-pagination-active-color:var(--bs-primary-contrast);--bs-pagination-active-bg:var(--bs-primary-bg);--bs-pagination-active-border-color:var(--bs-primary-bg);--bs-pagination-disabled-color:var(--bs-fg-3);--bs-pagination-disabled-bg:var(--bs-bg-2);--bs-pagination-disabled-border-color:var(--bs-border-color);padding-inline-start:0;list-style:none;display:flex}.page-link{min-height:var(--bs-pagination-min-height);padding:var(--bs-pagination-padding-y)var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width)solid var(--bs-pagination-border-color);justify-content:center;align-items:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;display:flex;position:relative}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus-visible{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-inline-start:calc(-1*var(--bs-pagination-border-width))}.page-item:first-child .page-link{border-start-start-radius:var(--bs-pagination-border-radius);border-end-start-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-start-end-radius:var(--bs-pagination-border-radius);border-end-end-radius:var(--bs-pagination-border-radius)}.pagination-sm{--bs-pagination-min-height:var(--bs-btn-input-sm-min-height);--bs-pagination-padding-y:var(--bs-btn-input-sm-padding-y);--bs-pagination-padding-x:var(--bs-btn-input-sm-padding-x);--bs-pagination-font-size:var(--bs-btn-input-sm-font-size);--bs-pagination-border-radius:var(--bs-btn-input-sm-border-radius)}.pagination-lg{--bs-pagination-min-height:var(--bs-btn-input-lg-min-height);--bs-pagination-padding-y:var(--bs-btn-input-lg-padding-y);--bs-pagination-padding-x:var(--bs-btn-input-lg-padding-x);--bs-pagination-font-size:var(--bs-btn-input-lg-font-size);--bs-pagination-border-radius:var(--bs-btn-input-lg-border-radius)}.placeholder{--bs-placeholder-opacity-max:.5;--bs-placeholder-opacity-min:.2;vertical-align:middle;cursor:wait;min-height:1em;opacity:var(--bs-placeholder-opacity-max);background-color:currentColor;display:inline-block}.placeholder.btn:before{content:"";display:inline-block}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:2s ease-in-out infinite placeholder-glow}@keyframes placeholder-glow{50%{opacity:var(--bs-placeholder-opacity-min)}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,calc(1 - var(--bs-placeholder-opacity-min)))75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,calc(1 - var(--bs-placeholder-opacity-min)))75%,#000 95%);animation:2s linear infinite placeholder-wave;mask-size:200% 100%}@keyframes placeholder-wave{to{mask-position:-200% 0}}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:280px;--bs-popover-font-size:var(--bs-font-size-sm);--bs-popover-bg:var(--bs-bg-body);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-border-radius-lg);--bs-popover-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow:var(--bs-box-shadow);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:.75rem;--bs-popover-header-font-size:var(--bs-font-size-sm);--bs-popover-header-color:inherit;--bs-popover-header-bg:var(--bs-bg-1);--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:.75rem;--bs-popover-body-color:var(--bs-fg-body);--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);max-width:var(--bs-popover-max-width);font-family:var(--bs-body-font-family);font-style:normal;font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);text-align:start;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);border:var(--bs-popover-border-width)solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius);box-shadow:var(--bs-popover-box-shadow);background-clip:padding-box;text-decoration:none;display:block}.popover .popover-arrow{width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height);display:block}.popover .popover-arrow:before,.popover .popover-arrow:after{content:"";border:0 solid #0000;display:block;position:absolute}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-bs-placement^=top]>.popover-arrow{bottom:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=top]>.popover-arrow:after{border-width:var(--bs-popover-arrow-height)calc(var(--bs-popover-arrow-width)*.5)0}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=top]>.popover-arrow:before{border-block-start-color:var(--bs-popover-arrow-border);bottom:0}.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=top]>.popover-arrow:after{bottom:var(--bs-popover-border-width);border-block-start-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-bs-placement^=right]>.popover-arrow{left:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=right]>.popover-arrow:after{border-width:calc(var(--bs-popover-arrow-width)*.5)var(--bs-popover-arrow-height)calc(var(--bs-popover-arrow-width)*.5)0}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=right]>.popover-arrow:before{border-inline-end-color:var(--bs-popover-arrow-border);left:0}.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=right]>.popover-arrow:after{left:var(--bs-popover-border-width);border-inline-end-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow{top:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow:after{border-width:0 calc(var(--bs-popover-arrow-width)*.5)var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow:before{border-block-end-color:var(--bs-popover-arrow-border);top:0}.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow:after{top:var(--bs-popover-border-width);border-block-end-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header:before,.bs-popover-auto[data-bs-placement^=bottom] .popover-header:before{width:var(--bs-popover-arrow-width);content:"";border-block-end:var(--bs-popover-border-width)solid var(--bs-popover-header-bg);margin-inline-start:calc(-.5*var(--bs-popover-arrow-width));display:block;position:absolute;top:0;left:50%}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-bs-placement^=left]>.popover-arrow{right:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=left]>.popover-arrow:after{border-width:calc(var(--bs-popover-arrow-width)*.5)0 calc(var(--bs-popover-arrow-width)*.5)var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=left]>.popover-arrow:before{border-inline-start-color:var(--bs-popover-arrow-border);right:0}.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=left]>.popover-arrow:after{right:var(--bs-popover-border-width);border-inline-start-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y)var(--bs-popover-header-padding-x);font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-block-end:var(--bs-popover-border-width)solid var(--bs-popover-border-color);border-start-start-radius:var(--bs-popover-inner-border-radius);border-start-end-radius:var(--bs-popover-inner-border-radius);margin-bottom:0}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y)var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}@keyframes progress-bar-stripes{0%{background-position-x:var(--bs-progress-height)}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:var(--bs-font-size-sm);--bs-progress-bg:var(--bs-bg-2);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:var(--bs-white);--bs-progress-bar-bg:var(--bs-primary-bg);--bs-progress-bar-transition:width .6s ease;--bs-progress-bar-animation:progress-bar-stripes 1s linear infinite;height:var(--bs-progress-height);font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius);box-shadow:var(--bs-progress-box-shadow);display:flex;overflow:hidden}.progress-bar{color:var(--bs-theme-contrast,var(--bs-progress-bar-color));text-align:center;white-space:nowrap;background-color:var(--bs-theme-bg,var(--bs-progress-bar-bg));transition:var(--bs-progress-bar-transition);flex-direction:column;justify-content:center;display:flex;overflow:hidden}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,#ffffff26 25%,#0000 25% 50%,#ffffff26 50% 75%,#0000 75%,#0000);background-size:var(--bs-progress-height)var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:var(--bs-progress-bar-animation)}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.spinner-grow,.spinner-border{width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);animation:var(--bs-spinner-animation-speed)linear infinite var(--bs-spinner-animation-name);border-radius:50%;flex-shrink:0;display:inline-block}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-.125em;--bs-spinner-border-width:.25em;--bs-spinner-animation-speed:.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width)solid currentcolor;border-inline-end-color:#0000}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-.125em;--bs-spinner-animation-speed:.75s;--bs-spinner-animation-name:spinner-grow;opacity:0;background-color:currentColor}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:.75rem;--bs-toast-padding-y:.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:.875rem;--bs-toast-bg:rgba(var(--bs-body-bg-rgb),.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-fg-3);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb),.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);border:var(--bs-toast-border-width)solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius);background-clip:padding-box}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;z-index:var(--bs-toast-zindex);pointer-events:none;width:max-content;max-width:100%;position:absolute}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{padding:var(--bs-toast-padding-y)var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);border-block-end:var(--bs-toast-border-width)solid var(--bs-toast-header-border-color);background-clip:padding-box;border-start-start-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-start-end-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));align-items:center;display:flex}.toast-header .btn-close{margin-inline-start:var(--bs-toast-padding-x);margin-inline-end:calc(-.5*var(--bs-toast-padding-x))}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}}@layer custom;@layer helpers{.focus-ring:focus-visible{outline:var(--bs-focus-ring)}.icon-link{text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,.5));text-underline-offset:.25em;backface-visibility:hidden;align-items:center;gap:.375rem;display:inline-flex}.icon-link>.bi{fill:currentColor;flex-shrink:0;width:1em;height:1em;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em,0,0))}.fixed-top{z-index:1030;position:fixed;inset:0 0 auto}.fixed-bottom{z-index:1030;position:fixed;inset:auto 0 0}.sticky-top{z-index:1020;position:sticky;top:0}.sticky-bottom{z-index:1020;position:sticky;bottom:0}@media (width>=576px){.sticky-sm-top{z-index:1020;position:sticky;top:0}.sticky-sm-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=768px){.sticky-md-top{z-index:1020;position:sticky;top:0}.sticky-md-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1024px){.sticky-lg-top{z-index:1020;position:sticky;top:0}.sticky-lg-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1280px){.sticky-xl-top{z-index:1020;position:sticky;top:0}.sticky-xl-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1536px){.sticky-2xl-top{z-index:1020;position:sticky;top:0}.sticky-2xl-bottom{z-index:1020;position:sticky;bottom:0}}.stack-container{container-type:inline-size}[class*=hstack],[class*=vstack]{flex:var(--bs-stack-flex,1 1 auto);flex-direction:var(--bs-stack-direction,row);align-items:var(--bs-stack-align-items,center);align-self:var(--bs-stack-align-self,stretch);display:flex}.vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}@container (width>=576px){.vstack-sm{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack-sm{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=768px){.vstack-md{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack-md{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1024px){.vstack-lg{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack-lg{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1280px){.vstack-xl{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack-xl{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1536px){.vstack-2xl{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack-2xl{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}.theme-primary{--bs-theme-base:var(--bs-primary-base);--bs-theme-text:var(--bs-primary-text);--bs-theme-text-emphasis:var(--bs-primary-text-emphasis);--bs-theme-bg:var(--bs-primary-bg);--bs-theme-bg-subtle:var(--bs-primary-bg-subtle);--bs-theme-bg-muted:var(--bs-primary-bg-muted);--bs-theme-border:var(--bs-primary-border);--bs-theme-focus-ring:var(--bs-primary-focus-ring);--bs-theme-contrast:var(--bs-primary-contrast)}.theme-accent{--bs-theme-base:var(--bs-accent-base);--bs-theme-text:var(--bs-accent-text);--bs-theme-text-emphasis:var(--bs-accent-text-emphasis);--bs-theme-bg:var(--bs-accent-bg);--bs-theme-bg-subtle:var(--bs-accent-bg-subtle);--bs-theme-bg-muted:var(--bs-accent-bg-muted);--bs-theme-border:var(--bs-accent-border);--bs-theme-focus-ring:var(--bs-accent-focus-ring);--bs-theme-contrast:var(--bs-accent-contrast)}.theme-success{--bs-theme-base:var(--bs-success-base);--bs-theme-text:var(--bs-success-text);--bs-theme-text-emphasis:var(--bs-success-text-emphasis);--bs-theme-bg:var(--bs-success-bg);--bs-theme-bg-subtle:var(--bs-success-bg-subtle);--bs-theme-bg-muted:var(--bs-success-bg-muted);--bs-theme-border:var(--bs-success-border);--bs-theme-focus-ring:var(--bs-success-focus-ring);--bs-theme-contrast:var(--bs-success-contrast)}.theme-danger{--bs-theme-base:var(--bs-danger-base);--bs-theme-text:var(--bs-danger-text);--bs-theme-text-emphasis:var(--bs-danger-text-emphasis);--bs-theme-bg:var(--bs-danger-bg);--bs-theme-bg-subtle:var(--bs-danger-bg-subtle);--bs-theme-bg-muted:var(--bs-danger-bg-muted);--bs-theme-border:var(--bs-danger-border);--bs-theme-focus-ring:var(--bs-danger-focus-ring);--bs-theme-contrast:var(--bs-danger-contrast)}.theme-warning{--bs-theme-base:var(--bs-warning-base);--bs-theme-text:var(--bs-warning-text);--bs-theme-text-emphasis:var(--bs-warning-text-emphasis);--bs-theme-bg:var(--bs-warning-bg);--bs-theme-bg-subtle:var(--bs-warning-bg-subtle);--bs-theme-bg-muted:var(--bs-warning-bg-muted);--bs-theme-border:var(--bs-warning-border);--bs-theme-focus-ring:var(--bs-warning-focus-ring);--bs-theme-contrast:var(--bs-warning-contrast)}.theme-info{--bs-theme-base:var(--bs-info-base);--bs-theme-text:var(--bs-info-text);--bs-theme-text-emphasis:var(--bs-info-text-emphasis);--bs-theme-bg:var(--bs-info-bg);--bs-theme-bg-subtle:var(--bs-info-bg-subtle);--bs-theme-bg-muted:var(--bs-info-bg-muted);--bs-theme-border:var(--bs-info-border);--bs-theme-focus-ring:var(--bs-info-focus-ring);--bs-theme-contrast:var(--bs-info-contrast)}.theme-inverse{--bs-theme-base:var(--bs-inverse-base);--bs-theme-text:var(--bs-inverse-text);--bs-theme-text-emphasis:var(--bs-inverse-text-emphasis);--bs-theme-bg:var(--bs-inverse-bg);--bs-theme-bg-subtle:var(--bs-inverse-bg-subtle);--bs-theme-bg-muted:var(--bs-inverse-bg-muted);--bs-theme-border:var(--bs-inverse-border);--bs-theme-focus-ring:var(--bs-inverse-focus-ring);--bs-theme-contrast:var(--bs-inverse-contrast)}.theme-secondary{--bs-theme-base:var(--bs-secondary-base);--bs-theme-text:var(--bs-secondary-text);--bs-theme-text-emphasis:var(--bs-secondary-text-emphasis);--bs-theme-bg:var(--bs-secondary-bg);--bs-theme-bg-subtle:var(--bs-secondary-bg-subtle);--bs-theme-bg-muted:var(--bs-secondary-bg-muted);--bs-theme-border:var(--bs-secondary-border);--bs-theme-focus-ring:var(--bs-secondary-focus-ring);--bs-theme-contrast:var(--bs-secondary-contrast)}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute!important}.visually-hidden *,.visually-hidden-focusable:not(:focus):not(:focus-within) *{overflow:hidden!important}.stretched-link:after{z-index:1;content:"";position:absolute;inset:0}.text-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vr{width:var(--bs-vr-border-width,var(--bs-border-width));background-color:var(--bs-border-color);align-self:stretch;min-height:1em;display:inline-block}}@layer utilities{.align-baseline{vertical-align:baseline}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.align-text-bottom{vertical-align:text-bottom}.align-text-top{vertical-align:text-top}[class*=ratio-]{aspect-ratio:var(--bs-ratio)}.ratio-auto{--bs-ratio:auto}.ratio-1x1{--bs-ratio:1/1}.ratio-4x3{--bs-ratio:4/3}.ratio-16x9{--bs-ratio:16/9}.ratio-21x9{--bs-ratio:21/9}.float-start{float:inline-start}.float-end{float:inline-end}.float-none{float:none}.object-fit-contain{-o-object-fit:contain;object-fit:contain}.object-fit-cover{-o-object-fit:cover;object-fit:cover}.object-fit-fill{-o-object-fit:fill;object-fit:fill}.object-fit-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-none{-o-object-fit:none;object-fit:none}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-100{opacity:1}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-visible{overflow-x:visible}.overflow-x-scroll{overflow-x:scroll}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overflow-y-visible{overflow-y:visible}.overflow-y-scroll{overflow-y:scroll}.d-inline{display:inline}.d-inline-block{display:inline-block}.d-block{display:block}.d-grid{display:grid}.d-inline-grid{display:inline-grid}.d-table{display:table}.d-table-row{display:table-row}.d-table-cell{display:table-cell}.d-flex{display:flex}.d-inline-flex{display:inline-flex}.d-contents{display:contents}.d-flow-root{display:flow-root}.d-none{display:none}.shadow{box-shadow:var(--bs-box-shadow)}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)}.shadow-none{box-shadow:none}.focus-ring-primary{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-blue-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-blue-500)75%,var(--bs-bg-body)))}.focus-ring-accent{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-indigo-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-indigo-500)75%,var(--bs-bg-body)))}.focus-ring-success{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-green-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-green-500)75%,var(--bs-bg-body)))}.focus-ring-danger{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-red-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-red-500)75%,var(--bs-bg-body)))}.focus-ring-warning{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-yellow-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-yellow-400)85%,var(--bs-bg-body)))}.focus-ring-info{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-cyan-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-cyan-500)75%,var(--bs-bg-body)))}.focus-ring-inverse{--bs-focus-ring-color:color-mix(in oklch,light-dark(var(--bs-gray-900),var(--bs-gray-100))50%,var(--bs-bg-body))}.focus-ring-secondary{--bs-focus-ring-color:color-mix(in oklch,light-dark(var(--bs-gray-500),var(--bs-gray-300))50%,var(--bs-bg-body))}.position-static{position:static}.position-relative{position:relative}.position-absolute{position:absolute}.position-fixed{position:fixed}.position-sticky{position:sticky}.top-0{top:0}.top-50{top:50%}.top-100{top:100%}.bottom-0{bottom:0}.bottom-50{bottom:50%}.bottom-100{bottom:100%}.start-0{left:0}.start-50{left:50%}.start-100{left:100%}.end-0{right:0}.end-50{right:50%}.end-100{right:100%}.translate-middle{transform:translate(-50%,-50%)}.translate-middle-x{transform:translate(-50%)}.translate-middle-y{transform:translateY(-50%)}.border{border:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-0{border:0}.border-top{border-block-start:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-top-0{border-block-start:0}.border-end{border-inline-end:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-end-0{border-inline-end:0}.border-bottom{border-block-end:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-bottom-0{border-block-end:0}.border-start{border-inline-start:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-start-0{border-inline-start:0}.border-block{border-block:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-block-0{border-block:0}.border-inline{border-inline:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-inline-0{border-inline:0}.border-primary{--bs-border-color:var(--bs-blue-500);border-color:var(--bs-border-color)}.border-accent{--bs-border-color:var(--bs-indigo-500);border-color:var(--bs-border-color)}.border-success{--bs-border-color:var(--bs-green-500);border-color:var(--bs-border-color)}.border-danger{--bs-border-color:var(--bs-red-500);border-color:var(--bs-border-color)}.border-warning{--bs-border-color:var(--bs-yellow-500);border-color:var(--bs-border-color)}.border-info{--bs-border-color:var(--bs-cyan-500);border-color:var(--bs-border-color)}.border-inverse{--bs-border-color:light-dark(var(--bs-gray-900),var(--bs-gray-025));border-color:var(--bs-border-color)}.border-secondary{--bs-border-color:light-dark(var(--bs-gray-100),var(--bs-gray-600));border-color:var(--bs-border-color)}.border-bg{--bs-border-color:var(--bs-bg-body);border-color:var(--bs-border-color)}.border-body{--bs-border-color:light-dark(var(--bs-gray-300),var(--bs-gray-800));border-color:var(--bs-border-color)}.border-muted{--bs-border-color:light-dark(var(--bs-gray-200),var(--bs-gray-800));border-color:var(--bs-border-color)}.border-subtle{--bs-border-color:light-dark(var(--bs-gray-100),var(--bs-gray-900));border-color:var(--bs-border-color)}.border-emphasized{--bs-border-color:light-dark(var(--bs-gray-400),var(--bs-gray-600));border-color:var(--bs-border-color)}.border-white{--bs-border-color:var(--bs-white);border-color:var(--bs-border-color)}.border-black{--bs-border-color:var(--bs-black);border-color:var(--bs-border-color)}.border-subtle-primary{--bs-border-color:light-dark(var(--bs-blue-300),var(--bs-blue-600));border-color:var(--bs-border-color)}.border-subtle-accent{--bs-border-color:light-dark(var(--bs-indigo-300),var(--bs-indigo-600));border-color:var(--bs-border-color)}.border-subtle-success{--bs-border-color:light-dark(var(--bs-green-300),var(--bs-green-600));border-color:var(--bs-border-color)}.border-subtle-danger{--bs-border-color:light-dark(var(--bs-red-300),var(--bs-red-600));border-color:var(--bs-border-color)}.border-subtle-warning{--bs-border-color:light-dark(var(--bs-yellow-300),var(--bs-yellow-600));border-color:var(--bs-border-color)}.border-subtle-info{--bs-border-color:light-dark(var(--bs-cyan-300),var(--bs-cyan-600));border-color:var(--bs-border-color)}.border-subtle-inverse{--bs-border-color:light-dark(var(--bs-gray-400),var(--bs-gray-100));border-color:var(--bs-border-color)}.border-subtle-secondary{--bs-border-color:light-dark(var(--bs-gray-300),var(--bs-gray-600));border-color:var(--bs-border-color)}.border-1{border-width:1px}.border-2{border-width:2px}.border-3{border-width:3px}.border-4{border-width:4px}.border-5{border-width:5px}.border-10{border-color:color-mix(in oklch,var(--bs-border-color)10%,transparent)}.border-20{border-color:color-mix(in oklch,var(--bs-border-color)20%,transparent)}.border-30{border-color:color-mix(in oklch,var(--bs-border-color)30%,transparent)}.border-40{border-color:color-mix(in oklch,var(--bs-border-color)40%,transparent)}.border-50{border-color:color-mix(in oklch,var(--bs-border-color)50%,transparent)}.border-60{border-color:color-mix(in oklch,var(--bs-border-color)60%,transparent)}.border-70{border-color:color-mix(in oklch,var(--bs-border-color)70%,transparent)}.border-80{border-color:color-mix(in oklch,var(--bs-border-color)80%,transparent)}.border-90{border-color:color-mix(in oklch,var(--bs-border-color)90%,transparent)}.border-100{border-color:var(--bs-border-color)}.w-1{width:1rem}.w-2{width:2rem}.w-3{width:3rem}.w-4{width:4rem}.w-5{width:5rem}.w-6{width:6rem}.w-7{width:7rem}.w-8{width:8rem}.w-9{width:9rem}.w-10{width:10rem}.w-11{width:11rem}.w-12{width:12rem}.w-25{width:25%}.w-50{width:50%}.w-75{width:75%}.w-100{width:100%}.w-auto{width:auto}.w-min{width:min-content}.w-max{width:max-content}.w-fit{width:fit-content}.max-w-100{max-width:100%}.min-w-0{min-width:0}.min-w-100{min-width:100%}.vw-100{width:100vw}.min-vw-100{min-width:100vw}.h-25{height:25%}.h-50{height:50%}.h-75{height:75%}.h-100{height:100%}.h-auto{height:auto}.h-min{height:min-content}.h-max{height:max-content}.h-fit{height:fit-content}.max-h-100{max-height:100%}.min-h-0{min-height:0}.min-h-100{min-height:100%}.vh-100{height:100vh}.min-vh-100{min-height:100vh}.flex-fill{flex:auto}.flex-row{flex-direction:row}.flex-column{flex-direction:column}.flex-row-reverse{flex-direction:row-reverse}.flex-column-reverse{flex-direction:column-reverse}.flex-grow-0{flex-grow:0}.flex-grow-1{flex-grow:1}.flex-shrink-0{flex-shrink:0}.flex-shrink-1{flex-shrink:1}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-start{justify-content:flex-start}.justify-content-end{justify-content:flex-end}.justify-content-center{justify-content:center}.justify-content-between{justify-content:space-between}.justify-content-around{justify-content:space-around}.justify-content-evenly{justify-content:space-evenly}.justify-items-start{justify-items:start}.justify-items-end{justify-items:end}.justify-items-center{justify-items:center}.justify-items-stretch{justify-items:stretch}.justify-self-start{justify-self:flex-start}.justify-self-end{justify-self:flex-end}.justify-self-center{justify-self:center}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.align-items-center{align-items:center}.align-items-baseline{align-items:baseline}.align-items-stretch{align-items:stretch}.align-content-start{align-content:flex-start}.align-content-end{align-content:flex-end}.align-content-center{align-content:center}.align-content-between{align-content:space-between}.align-content-around{align-content:space-around}.align-content-stretch{align-content:stretch}.align-self-auto{align-self:auto}.align-self-start{align-self:flex-start}.align-self-end{align-self:flex-end}.align-self-center{align-self:center}.align-self-baseline{align-self:baseline}.align-self-stretch{align-self:stretch}.place-items-start{place-items:start}.place-items-end{place-items:end}.place-items-center{place-items:center}.place-items-stretch{place-items:stretch stretch}.grid-cols-3{--bs-columns:3}.grid-cols-4{--bs-columns:4}.grid-cols-6{--bs-columns:6}.grid-cols-fill{grid-column:1/-1}.grid-auto-flow-row{grid-auto-flow:row}.grid-auto-flow-column{grid-auto-flow:column}.grid-auto-flow-dense{grid-auto-flow:dense}.order-first{order:-1}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-last{order:6}.m--2{margin:-.5rem}.m--1{margin:-.25rem}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-3{margin:1rem}.m-4{margin:1.5rem}.m-5{margin:3rem}.m-auto{margin:auto}.mx--2{margin-inline:-.5rem}.mx--1{margin-inline:-.25rem}.mx-0{margin-inline:0}.mx-1{margin-inline:.25rem}.mx-2{margin-inline:.5rem}.mx-3{margin-inline:1rem}.mx-4{margin-inline:1.5rem}.mx-5{margin-inline:3rem}.mx-auto{margin-inline:auto}.my--2{margin-block:-.5rem}.my--1{margin-block:-.25rem}.my-0{margin-block:0}.my-1{margin-block:.25rem}.my-2{margin-block:.5rem}.my-3{margin-block:1rem}.my-4{margin-block:1.5rem}.my-5{margin-block:3rem}.my-auto{margin-block:auto}.mt--2{margin-block-start:-.5rem}.mt--1{margin-block-start:-.25rem}.mt-0{margin-block-start:0}.mt-1{margin-block-start:.25rem}.mt-2{margin-block-start:.5rem}.mt-3{margin-block-start:1rem}.mt-4{margin-block-start:1.5rem}.mt-5{margin-block-start:3rem}.mt-auto{margin-block-start:auto}.me--2{margin-inline-end:-.5rem}.me--1{margin-inline-end:-.25rem}.me-0{margin-inline-end:0}.me-1{margin-inline-end:.25rem}.me-2{margin-inline-end:.5rem}.me-3{margin-inline-end:1rem}.me-4{margin-inline-end:1.5rem}.me-5{margin-inline-end:3rem}.me-auto{margin-inline-end:auto}.mb--2{margin-block-end:-.5rem}.mb--1{margin-block-end:-.25rem}.mb-0{margin-block-end:0}.mb-1{margin-block-end:.25rem}.mb-2{margin-block-end:.5rem}.mb-3{margin-block-end:1rem}.mb-4{margin-block-end:1.5rem}.mb-5{margin-block-end:3rem}.mb-auto{margin-block-end:auto}.ms--2{margin-inline-start:-.5rem}.ms--1{margin-inline-start:-.25rem}.ms-0{margin-inline-start:0}.ms-1{margin-inline-start:.25rem}.ms-2{margin-inline-start:.5rem}.ms-3{margin-inline-start:1rem}.ms-4{margin-inline-start:1.5rem}.ms-5{margin-inline-start:3rem}.ms-auto{margin-inline-start:auto}.p--2{padding:-.5rem}.p--1{padding:-.25rem}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:1rem}.p-4{padding:1.5rem}.p-5{padding:3rem}.px--2{padding-inline:-.5rem}.px--1{padding-inline:-.25rem}.px-0{padding-inline:0}.px-1{padding-inline:.25rem}.px-2{padding-inline:.5rem}.px-3{padding-inline:1rem}.px-4{padding-inline:1.5rem}.px-5{padding-inline:3rem}.py--2{padding-block:-.5rem}.py--1{padding-block:-.25rem}.py-0{padding-block:0}.py-1{padding-block:.25rem}.py-2{padding-block:.5rem}.py-3{padding-block:1rem}.py-4{padding-block:1.5rem}.py-5{padding-block:3rem}.pt--2{padding-block-start:-.5rem}.pt--1{padding-block-start:-.25rem}.pt-0{padding-block-start:0}.pt-1{padding-block-start:.25rem}.pt-2{padding-block-start:.5rem}.pt-3{padding-block-start:1rem}.pt-4{padding-block-start:1.5rem}.pt-5{padding-block-start:3rem}.pe--2{padding-inline-end:-.5rem}.pe--1{padding-inline-end:-.25rem}.pe-0{padding-inline-end:0}.pe-1{padding-inline-end:.25rem}.pe-2{padding-inline-end:.5rem}.pe-3{padding-inline-end:1rem}.pe-4{padding-inline-end:1.5rem}.pe-5{padding-inline-end:3rem}.pb--2{padding-block-end:-.5rem}.pb--1{padding-block-end:-.25rem}.pb-0{padding-block-end:0}.pb-1{padding-block-end:.25rem}.pb-2{padding-block-end:.5rem}.pb-3{padding-block-end:1rem}.pb-4{padding-block-end:1.5rem}.pb-5{padding-block-end:3rem}.ps--2{padding-inline-start:-.5rem}.ps--1{padding-inline-start:-.25rem}.ps-0{padding-inline-start:0}.ps-1{padding-inline-start:.25rem}.ps-2{padding-inline-start:.5rem}.ps-3{padding-inline-start:1rem}.ps-4{padding-inline-start:1.5rem}.ps-5{padding-inline-start:3rem}.gap--2{gap:-.5rem}.gap--1{gap:-.25rem}.gap-0{gap:0}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:1rem}.gap-4{gap:1.5rem}.gap-5{gap:3rem}.row-gap--2{row-gap:-.5rem}.row-gap--1{row-gap:-.25rem}.row-gap-0{row-gap:0}.row-gap-1{row-gap:.25rem}.row-gap-2{row-gap:.5rem}.row-gap-3{row-gap:1rem}.row-gap-4{row-gap:1.5rem}.row-gap-5{row-gap:3rem}.column-gap--2{-moz-column-gap:-.5rem;column-gap:-.5rem}.column-gap--1{-moz-column-gap:-.25rem;column-gap:-.25rem}.column-gap-0{-moz-column-gap:0;column-gap:0}.column-gap-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-5{-moz-column-gap:3rem;column-gap:3rem}.font-monospace{font-family:var(--bs-font-mono)}.font-body{font-family:var(--bs-body-font-family)}.fs-xs{font-size:var(--bs-font-size-xs)}.fs-sm{font-size:var(--bs-font-size-sm)}.fs-md{font-size:var(--bs-font-size-md)}.fs-lg{font-size:var(--bs-font-size-lg)}.fs-xl{font-size:var(--bs-font-size-xl)}.fs-2xl{font-size:var(--bs-font-size-2xl)}.fs-3xl{font-size:var(--bs-font-size-3xl)}.fs-4xl{font-size:var(--bs-font-size-4xl)}.fs-5xl{font-size:var(--bs-font-size-5xl)}.fs-6xl{font-size:var(--bs-font-size-6xl)}.text-xs{font-size:var(--bs-font-size-xs);line-height:var(--bs-line-height-xs)}.text-sm{font-size:var(--bs-font-size-sm);line-height:var(--bs-line-height-sm)}.text-md{font-size:var(--bs-font-size-md);line-height:var(--bs-line-height-md)}.text-lg{font-size:var(--bs-font-size-lg);line-height:var(--bs-line-height-lg)}.text-xl{font-size:var(--bs-font-size-xl);line-height:var(--bs-line-height-xl)}.text-2xl{font-size:var(--bs-font-size-2xl);line-height:var(--bs-line-height-2xl)}.text-3xl{font-size:var(--bs-font-size-3xl);line-height:var(--bs-line-height-3xl)}.text-4xl{font-size:var(--bs-font-size-4xl);line-height:var(--bs-line-height-4xl)}.text-5xl{font-size:var(--bs-font-size-5xl);line-height:var(--bs-line-height-5xl)}.text-6xl{font-size:var(--bs-font-size-6xl);line-height:var(--bs-line-height-6xl)}.fst-italic{font-style:italic}.fst-normal{font-style:normal}.fw-lighter{font-weight:lighter}.fw-light{font-weight:300}.fw-normal{font-weight:400}.fw-medium{font-weight:500}.fw-semibold{font-weight:600}.fw-bold{font-weight:700}.fw-bolder{font-weight:bolder}.lh-1{line-height:1}.lh-sm{line-height:1.25}.lh-base{line-height:1.5}.lh-lg{line-height:2}.text-start{text-align:start}.text-end{text-align:end}.text-center{text-align:center}.text-decoration-none{text-decoration:none}.text-decoration-underline{text-decoration:underline}.text-decoration-line-through{text-decoration:line-through}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-wrap{white-space:wrap}.text-nowrap{white-space:nowrap}.text-balance{white-space:balance}.text-pretty{white-space:pretty}.text-break{word-wrap:break-word;word-break:break-word}.fg-primary{--bs-fg:light-dark(var(--bs-blue-600),var(--bs-blue-400));color:var(--bs-fg)}.fg-accent{--bs-fg:light-dark(var(--bs-indigo-600),color-mix(in oklch,var(--bs-indigo-400),var(--bs-indigo-300)));color:var(--bs-fg)}.fg-success{--bs-fg:light-dark(var(--bs-green-600),var(--bs-green-400));color:var(--bs-fg)}.fg-danger{--bs-fg:light-dark(var(--bs-red-600),var(--bs-red-400));color:var(--bs-fg)}.fg-warning{--bs-fg:light-dark(var(--bs-yellow-700),var(--bs-yellow-400));color:var(--bs-fg)}.fg-info{--bs-fg:light-dark(var(--bs-cyan-600),var(--bs-cyan-400));color:var(--bs-fg)}.fg-inverse{--bs-fg:light-dark(var(--bs-gray-900),var(--bs-gray-200));color:var(--bs-fg)}.fg-secondary{--bs-fg:light-dark(var(--bs-gray-600),var(--bs-gray-400));color:var(--bs-fg)}.fg-body{--bs-fg:light-dark(var(--bs-gray-900),var(--bs-gray-050));color:var(--bs-fg)}.fg-1{--bs-fg:light-dark(var(--bs-gray-800),var(--bs-gray-200));color:var(--bs-fg)}.fg-2{--bs-fg:light-dark(var(--bs-gray-700),var(--bs-gray-300));color:var(--bs-fg)}.fg-3{--bs-fg:light-dark(var(--bs-gray-600),var(--bs-gray-500));color:var(--bs-fg)}.fg-4{--bs-fg:light-dark(var(--bs-gray-500),var(--bs-gray-600));color:var(--bs-fg)}.fg-white{--bs-fg:var(--bs-white);color:var(--bs-fg)}.fg-black{--bs-fg:var(--bs-black);color:var(--bs-fg)}.fg-inherit{--bs-fg:inherit;color:var(--bs-fg)}.fg-emphasis-primary{--bs-fg:light-dark(var(--bs-blue-800),var(--bs-blue-200));color:var(--bs-fg)}.fg-emphasis-accent{--bs-fg:light-dark(var(--bs-indigo-800),var(--bs-indigo-300));color:var(--bs-fg)}.fg-emphasis-success{--bs-fg:light-dark(var(--bs-green-800),var(--bs-green-300));color:var(--bs-fg)}.fg-emphasis-danger{--bs-fg:light-dark(var(--bs-red-800),var(--bs-red-300));color:var(--bs-fg)}.fg-emphasis-warning{--bs-fg:light-dark(var(--bs-yellow-800),var(--bs-yellow-300));color:var(--bs-fg)}.fg-emphasis-info{--bs-fg:light-dark(var(--bs-cyan-800),var(--bs-cyan-300));color:var(--bs-fg)}.fg-emphasis-inverse{--bs-fg:light-dark(var(--bs-gray-975),var(--bs-white));color:var(--bs-fg)}.fg-emphasis-secondary{--bs-fg:light-dark(var(--bs-gray-800),var(--bs-gray-200));color:var(--bs-fg)}.fg-contrast-primary,.fg-contrast-accent,.fg-contrast-success,.fg-contrast-danger{--bs-fg:var(--bs-white);color:var(--bs-fg)}.fg-contrast-warning,.fg-contrast-info{--bs-fg:var(--bs-gray-900);color:var(--bs-fg)}.fg-contrast-inverse{--bs-fg:light-dark(var(--bs-white),var(--bs-gray-900));color:var(--bs-fg)}.fg-contrast-secondary{--bs-fg:light-dark(var(--bs-gray-900),var(--bs-white));color:var(--bs-fg)}.fg-10{color:color-mix(in oklch,var(--bs-fg)10%,transparent)}.fg-20{color:color-mix(in oklch,var(--bs-fg)20%,transparent)}.fg-30{color:color-mix(in oklch,var(--bs-fg)30%,transparent)}.fg-40{color:color-mix(in oklch,var(--bs-fg)40%,transparent)}.fg-50{color:color-mix(in oklch,var(--bs-fg)50%,transparent)}.fg-60{color:color-mix(in oklch,var(--bs-fg)60%,transparent)}.fg-70{color:color-mix(in oklch,var(--bs-fg)70%,transparent)}.fg-80{color:color-mix(in oklch,var(--bs-fg)80%,transparent)}.fg-90{color:color-mix(in oklch,var(--bs-fg)90%,transparent)}.fg-100{color:var(--bs-fg)}.link-10,.link-10-hover:hover{color:color-mix(in oklch,var(--bs-link-color)10%,transparent)}.link-20,.link-20-hover:hover{color:color-mix(in oklch,var(--bs-link-color)20%,transparent)}.link-30,.link-30-hover:hover{color:color-mix(in oklch,var(--bs-link-color)30%,transparent)}.link-40,.link-40-hover:hover{color:color-mix(in oklch,var(--bs-link-color)40%,transparent)}.link-50,.link-50-hover:hover{color:color-mix(in oklch,var(--bs-link-color)50%,transparent)}.link-60,.link-60-hover:hover{color:color-mix(in oklch,var(--bs-link-color)60%,transparent)}.link-70,.link-70-hover:hover{color:color-mix(in oklch,var(--bs-link-color)70%,transparent)}.link-80,.link-80-hover:hover{color:color-mix(in oklch,var(--bs-link-color)80%,transparent)}.link-90,.link-90-hover:hover{color:color-mix(in oklch,var(--bs-link-color)90%,transparent)}.link-100,.link-100-hover:hover{color:var(--bs-link-color)}.underline-offset-1,.underline-offset-1-hover:hover{text-underline-offset:.125em}.underline-offset-2,.underline-offset-2-hover:hover{text-underline-offset:.25em}.underline-offset-3,.underline-offset-3-hover:hover{text-underline-offset:.375em}.underline-primary{text-decoration-color:light-dark(var(--bs-blue-600),var(--bs-blue-400))}.underline-accent{text-decoration-color:light-dark(var(--bs-indigo-600),color-mix(in oklch,var(--bs-indigo-400),var(--bs-indigo-300)))}.underline-success{text-decoration-color:light-dark(var(--bs-green-600),var(--bs-green-400))}.underline-danger{text-decoration-color:light-dark(var(--bs-red-600),var(--bs-red-400))}.underline-warning{text-decoration-color:light-dark(var(--bs-yellow-700),var(--bs-yellow-400))}.underline-info{text-decoration-color:light-dark(var(--bs-cyan-600),var(--bs-cyan-400))}.underline-inverse{text-decoration-color:light-dark(var(--bs-gray-900),var(--bs-gray-200))}.underline-secondary{text-decoration-color:light-dark(var(--bs-gray-600),var(--bs-gray-400))}.underline-10,.underline-10-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)10%,transparent)}.underline-20,.underline-20-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)20%,transparent)}.underline-30,.underline-30-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)30%,transparent)}.underline-40,.underline-40-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)40%,transparent)}.underline-50,.underline-50-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)50%,transparent)}.underline-60,.underline-60-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)60%,transparent)}.underline-70,.underline-70-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)70%,transparent)}.underline-80,.underline-80-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)80%,transparent)}.underline-90,.underline-90-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)90%,transparent)}.underline-100,.underline-100-hover:hover{text-decoration-color:var(--bs-link-color)}.underline-thickness-1,.underline-thickness-1-hover:hover{text-decoration-thickness:1px}.underline-thickness-2,.underline-thickness-2-hover:hover{text-decoration-thickness:2px}.underline-thickness-3,.underline-thickness-3-hover:hover{text-decoration-thickness:3px}.underline-thickness-4,.underline-thickness-4-hover:hover{text-decoration-thickness:4px}.underline-thickness-5,.underline-thickness-5-hover:hover{text-decoration-thickness:5px}.bg-primary{--bs-bg:var(--bs-blue-500);background-color:var(--bs-bg)}.bg-accent{--bs-bg:var(--bs-indigo-500);background-color:var(--bs-bg)}.bg-success{--bs-bg:var(--bs-green-500);background-color:var(--bs-bg)}.bg-danger{--bs-bg:var(--bs-red-500);background-color:var(--bs-bg)}.bg-warning{--bs-bg:var(--bs-yellow-500);background-color:var(--bs-bg)}.bg-info{--bs-bg:var(--bs-cyan-500);background-color:var(--bs-bg)}.bg-inverse{--bs-bg:light-dark(var(--bs-gray-900),var(--bs-gray-025));background-color:var(--bs-bg)}.bg-secondary{--bs-bg:light-dark(var(--bs-gray-100),var(--bs-gray-600));background-color:var(--bs-bg)}.bg-body{--bs-bg:light-dark(var(--bs-white),var(--bs-gray-975));background-color:var(--bs-bg)}.bg-1{--bs-bg:light-dark(var(--bs-gray-025),var(--bs-gray-950));background-color:var(--bs-bg)}.bg-2{--bs-bg:light-dark(var(--bs-gray-050),var(--bs-gray-900));background-color:var(--bs-bg)}.bg-3{--bs-bg:light-dark(var(--bs-gray-100),var(--bs-gray-800));background-color:var(--bs-bg)}.bg-4{--bs-bg:light-dark(var(--bs-gray-200),var(--bs-gray-700));background-color:var(--bs-bg)}.bg-white{--bs-bg:var(--bs-white);background-color:var(--bs-bg)}.bg-black{--bs-bg:var(--bs-black);background-color:var(--bs-bg)}.bg-transparent{--bs-bg:transparent;background-color:var(--bs-bg)}.bg-inherit{--bs-bg:inherit;background-color:var(--bs-bg)}.bg-subtle-primary{--bs-bg:light-dark(var(--bs-blue-100),var(--bs-blue-900));background-color:var(--bs-bg)}.bg-subtle-accent{--bs-bg:light-dark(var(--bs-indigo-100),var(--bs-indigo-900));background-color:var(--bs-bg)}.bg-subtle-success{--bs-bg:light-dark(var(--bs-green-100),var(--bs-green-900));background-color:var(--bs-bg)}.bg-subtle-danger{--bs-bg:light-dark(var(--bs-red-100),var(--bs-red-900));background-color:var(--bs-bg)}.bg-subtle-warning{--bs-bg:light-dark(var(--bs-yellow-100),var(--bs-yellow-900));background-color:var(--bs-bg)}.bg-subtle-info{--bs-bg:light-dark(var(--bs-cyan-100),var(--bs-cyan-900));background-color:var(--bs-bg)}.bg-subtle-inverse{--bs-bg:light-dark(var(--bs-gray-100),var(--bs-gray-900));background-color:var(--bs-bg)}.bg-subtle-secondary{--bs-bg:light-dark(var(--bs-gray-050),var(--bs-gray-800));background-color:var(--bs-bg)}.bg-muted-primary{--bs-bg:light-dark(var(--bs-blue-200),var(--bs-blue-800));background-color:var(--bs-bg)}.bg-muted-accent{--bs-bg:light-dark(var(--bs-indigo-200),var(--bs-indigo-800));background-color:var(--bs-bg)}.bg-muted-success{--bs-bg:light-dark(var(--bs-green-200),var(--bs-green-800));background-color:var(--bs-bg)}.bg-muted-danger{--bs-bg:light-dark(var(--bs-red-200),var(--bs-red-800));background-color:var(--bs-bg)}.bg-muted-warning{--bs-bg:light-dark(var(--bs-yellow-200),var(--bs-yellow-800));background-color:var(--bs-bg)}.bg-muted-info{--bs-bg:light-dark(var(--bs-cyan-200),var(--bs-cyan-800));background-color:var(--bs-bg)}.bg-muted-inverse{--bs-bg:light-dark(var(--bs-gray-200),var(--bs-gray-300));background-color:var(--bs-bg)}.bg-muted-secondary{--bs-bg:light-dark(var(--bs-gray-100),var(--bs-gray-700));background-color:var(--bs-bg)}.bg-10{background-color:color-mix(in oklch,var(--bs-bg)10%,transparent)}.bg-20{background-color:color-mix(in oklch,var(--bs-bg)20%,transparent)}.bg-30{background-color:color-mix(in oklch,var(--bs-bg)30%,transparent)}.bg-40{background-color:color-mix(in oklch,var(--bs-bg)40%,transparent)}.bg-50{background-color:color-mix(in oklch,var(--bs-bg)50%,transparent)}.bg-60{background-color:color-mix(in oklch,var(--bs-bg)60%,transparent)}.bg-70{background-color:color-mix(in oklch,var(--bs-bg)70%,transparent)}.bg-80{background-color:color-mix(in oklch,var(--bs-bg)80%,transparent)}.bg-90{background-color:color-mix(in oklch,var(--bs-bg)90%,transparent)}.bg-100{background-color:var(--bs-bg)}.theme-contrast{background-color:var(--bs-theme-bg);color:var(--bs-theme-contrast)}.theme-subtle{background-color:var(--bs-theme-bg-subtle);color:var(--bs-theme-text)}.theme-muted{background-color:var(--bs-theme-bg-muted);color:var(--bs-theme-text-emphasis)}.theme-border{border:var(--bs-border-width)solid var(--bs-theme-border)}.bg-gradient{background-image:var(--bs-gradient)}.user-select-all{user-select:all}.user-select-auto{user-select:auto}.user-select-none{user-select:none}.pe-none{pointer-events:none}.pe-auto{pointer-events:auto}.rounded{border-radius:var(--bs-border-radius)}.rounded-0{border-radius:0}.rounded-1{border-radius:var(--bs-border-radius-sm)}.rounded-2{border-radius:var(--bs-border-radius)}.rounded-3{border-radius:var(--bs-border-radius-lg)}.rounded-4{border-radius:var(--bs-border-radius-xl)}.rounded-5{border-radius:var(--bs-border-radius-2xl)}.rounded-circle{border-radius:50%}.rounded-pill{border-radius:var(--bs-border-radius-pill)}.rounded-top{border-start-start-radius:var(--bs-border-radius);border-start-end-radius:var(--bs-border-radius)}.rounded-top-0{border-start-start-radius:0;border-start-end-radius:0}.rounded-top-1{border-start-start-radius:var(--bs-border-radius-sm);border-start-end-radius:var(--bs-border-radius-sm)}.rounded-top-2{border-start-start-radius:var(--bs-border-radius);border-start-end-radius:var(--bs-border-radius)}.rounded-top-3{border-start-start-radius:var(--bs-border-radius-lg);border-start-end-radius:var(--bs-border-radius-lg)}.rounded-top-4{border-start-start-radius:var(--bs-border-radius-xl);border-start-end-radius:var(--bs-border-radius-xl)}.rounded-top-5{border-start-start-radius:var(--bs-border-radius-2xl);border-start-end-radius:var(--bs-border-radius-2xl)}.rounded-top-circle{border-start-start-radius:50%;border-start-end-radius:50%}.rounded-top-pill{border-start-start-radius:var(--bs-border-radius-pill);border-start-end-radius:var(--bs-border-radius-pill)}.rounded-end{border-end-end-radius:var(--bs-border-radius);border-end-start-radius:var(--bs-border-radius)}.rounded-end-0{border-end-end-radius:0;border-end-start-radius:0}.rounded-end-1{border-end-end-radius:var(--bs-border-radius-sm);border-end-start-radius:var(--bs-border-radius-sm)}.rounded-end-2{border-end-end-radius:var(--bs-border-radius);border-end-start-radius:var(--bs-border-radius)}.rounded-end-3{border-end-end-radius:var(--bs-border-radius-lg);border-end-start-radius:var(--bs-border-radius-lg)}.rounded-end-4{border-end-end-radius:var(--bs-border-radius-xl);border-end-start-radius:var(--bs-border-radius-xl)}.rounded-end-5{border-end-end-radius:var(--bs-border-radius-2xl);border-end-start-radius:var(--bs-border-radius-2xl)}.rounded-end-circle{border-end-end-radius:50%;border-end-start-radius:50%}.rounded-end-pill{border-end-end-radius:var(--bs-border-radius-pill);border-end-start-radius:var(--bs-border-radius-pill)}.rounded-bottom{border-end-end-radius:var(--bs-border-radius);border-end-start-radius:var(--bs-border-radius)}.rounded-bottom-0{border-end-end-radius:0;border-end-start-radius:0}.rounded-bottom-1{border-end-end-radius:var(--bs-border-radius-sm);border-end-start-radius:var(--bs-border-radius-sm)}.rounded-bottom-2{border-end-end-radius:var(--bs-border-radius);border-end-start-radius:var(--bs-border-radius)}.rounded-bottom-3{border-end-end-radius:var(--bs-border-radius-lg);border-end-start-radius:var(--bs-border-radius-lg)}.rounded-bottom-4{border-end-end-radius:var(--bs-border-radius-xl);border-end-start-radius:var(--bs-border-radius-xl)}.rounded-bottom-5{border-end-end-radius:var(--bs-border-radius-2xl);border-end-start-radius:var(--bs-border-radius-2xl)}.rounded-bottom-circle{border-end-end-radius:50%;border-end-start-radius:50%}.rounded-bottom-pill{border-end-end-radius:var(--bs-border-radius-pill);border-end-start-radius:var(--bs-border-radius-pill)}.rounded-start{border-start-start-radius:var(--bs-border-radius);border-start-end-radius:var(--bs-border-radius)}.rounded-start-0{border-start-start-radius:0;border-start-end-radius:0}.rounded-start-1{border-start-start-radius:var(--bs-border-radius-sm);border-start-end-radius:var(--bs-border-radius-sm)}.rounded-start-2{border-start-start-radius:var(--bs-border-radius);border-start-end-radius:var(--bs-border-radius)}.rounded-start-3{border-start-start-radius:var(--bs-border-radius-lg);border-start-end-radius:var(--bs-border-radius-lg)}.rounded-start-4{border-start-start-radius:var(--bs-border-radius-xl);border-start-end-radius:var(--bs-border-radius-xl)}.rounded-start-5{border-start-start-radius:var(--bs-border-radius-2xl);border-start-end-radius:var(--bs-border-radius-2xl)}.rounded-start-circle{border-start-start-radius:50%;border-start-end-radius:50%}.rounded-start-pill{border-start-start-radius:var(--bs-border-radius-pill);border-start-end-radius:var(--bs-border-radius-pill)}.visible{visibility:visible}.invisible{visibility:hidden}.z-n1{z-index:-1}.z-0{z-index:0}.z-1{z-index:1}.z-2{z-index:2}.z-3{z-index:3}@media (width>=576px){.float-sm-start{float:inline-start}.float-sm-end{float:inline-end}.float-sm-none{float:none}.object-fit-sm-contain{-o-object-fit:contain;object-fit:contain}.object-fit-sm-cover{-o-object-fit:cover;object-fit:cover}.object-fit-sm-fill{-o-object-fit:fill;object-fit:fill}.object-fit-sm-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-sm-none{-o-object-fit:none;object-fit:none}.d-sm-inline{display:inline}.d-sm-inline-block{display:inline-block}.d-sm-block{display:block}.d-sm-grid{display:grid}.d-sm-inline-grid{display:inline-grid}.d-sm-table{display:table}.d-sm-table-row{display:table-row}.d-sm-table-cell{display:table-cell}.d-sm-flex{display:flex}.d-sm-inline-flex{display:inline-flex}.d-sm-contents{display:contents}.d-sm-flow-root{display:flow-root}.d-sm-none{display:none}.flex-sm-fill{flex:auto}.flex-sm-row{flex-direction:row}.flex-sm-column{flex-direction:column}.flex-sm-row-reverse{flex-direction:row-reverse}.flex-sm-column-reverse{flex-direction:column-reverse}.flex-sm-grow-0{flex-grow:0}.flex-sm-grow-1{flex-grow:1}.flex-sm-shrink-0{flex-shrink:0}.flex-sm-shrink-1{flex-shrink:1}.flex-sm-wrap{flex-wrap:wrap}.flex-sm-nowrap{flex-wrap:nowrap}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-sm-start{justify-content:flex-start}.justify-content-sm-end{justify-content:flex-end}.justify-content-sm-center{justify-content:center}.justify-content-sm-between{justify-content:space-between}.justify-content-sm-around{justify-content:space-around}.justify-content-sm-evenly{justify-content:space-evenly}.justify-items-sm-start{justify-items:start}.justify-items-sm-end{justify-items:end}.justify-items-sm-center{justify-items:center}.justify-items-sm-stretch{justify-items:stretch}.justify-self-sm-start{justify-self:flex-start}.justify-self-sm-end{justify-self:flex-end}.justify-self-sm-center{justify-self:center}.align-items-sm-start{align-items:flex-start}.align-items-sm-end{align-items:flex-end}.align-items-sm-center{align-items:center}.align-items-sm-baseline{align-items:baseline}.align-items-sm-stretch{align-items:stretch}.align-content-sm-start{align-content:flex-start}.align-content-sm-end{align-content:flex-end}.align-content-sm-center{align-content:center}.align-content-sm-between{align-content:space-between}.align-content-sm-around{align-content:space-around}.align-content-sm-stretch{align-content:stretch}.align-self-sm-auto{align-self:auto}.align-self-sm-start{align-self:flex-start}.align-self-sm-end{align-self:flex-end}.align-self-sm-center{align-self:center}.align-self-sm-baseline{align-self:baseline}.align-self-sm-stretch{align-self:stretch}.place-items-sm-start{place-items:start}.place-items-sm-end{place-items:end}.place-items-sm-center{place-items:center}.place-items-sm-stretch{place-items:stretch stretch}.grid-cols-sm-3{--bs-columns:3}.grid-cols-sm-4{--bs-columns:4}.grid-cols-sm-6{--bs-columns:6}.grid-cols-sm-fill{grid-column:1/-1}.grid-auto-flow-sm-row{grid-auto-flow:row}.grid-auto-flow-sm-column{grid-auto-flow:column}.grid-auto-flow-sm-dense{grid-auto-flow:dense}.order-sm-first{order:-1}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-last{order:6}.m-sm--2{margin:-.5rem}.m-sm--1{margin:-.25rem}.m-sm-0{margin:0}.m-sm-1{margin:.25rem}.m-sm-2{margin:.5rem}.m-sm-3{margin:1rem}.m-sm-4{margin:1.5rem}.m-sm-5{margin:3rem}.m-sm-auto{margin:auto}.mx-sm--2{margin-inline:-.5rem}.mx-sm--1{margin-inline:-.25rem}.mx-sm-0{margin-inline:0}.mx-sm-1{margin-inline:.25rem}.mx-sm-2{margin-inline:.5rem}.mx-sm-3{margin-inline:1rem}.mx-sm-4{margin-inline:1.5rem}.mx-sm-5{margin-inline:3rem}.mx-sm-auto{margin-inline:auto}.my-sm--2{margin-block:-.5rem}.my-sm--1{margin-block:-.25rem}.my-sm-0{margin-block:0}.my-sm-1{margin-block:.25rem}.my-sm-2{margin-block:.5rem}.my-sm-3{margin-block:1rem}.my-sm-4{margin-block:1.5rem}.my-sm-5{margin-block:3rem}.my-sm-auto{margin-block:auto}.mt-sm--2{margin-block-start:-.5rem}.mt-sm--1{margin-block-start:-.25rem}.mt-sm-0{margin-block-start:0}.mt-sm-1{margin-block-start:.25rem}.mt-sm-2{margin-block-start:.5rem}.mt-sm-3{margin-block-start:1rem}.mt-sm-4{margin-block-start:1.5rem}.mt-sm-5{margin-block-start:3rem}.mt-sm-auto{margin-block-start:auto}.me-sm--2{margin-inline-end:-.5rem}.me-sm--1{margin-inline-end:-.25rem}.me-sm-0{margin-inline-end:0}.me-sm-1{margin-inline-end:.25rem}.me-sm-2{margin-inline-end:.5rem}.me-sm-3{margin-inline-end:1rem}.me-sm-4{margin-inline-end:1.5rem}.me-sm-5{margin-inline-end:3rem}.me-sm-auto{margin-inline-end:auto}.mb-sm--2{margin-block-end:-.5rem}.mb-sm--1{margin-block-end:-.25rem}.mb-sm-0{margin-block-end:0}.mb-sm-1{margin-block-end:.25rem}.mb-sm-2{margin-block-end:.5rem}.mb-sm-3{margin-block-end:1rem}.mb-sm-4{margin-block-end:1.5rem}.mb-sm-5{margin-block-end:3rem}.mb-sm-auto{margin-block-end:auto}.ms-sm--2{margin-inline-start:-.5rem}.ms-sm--1{margin-inline-start:-.25rem}.ms-sm-0{margin-inline-start:0}.ms-sm-1{margin-inline-start:.25rem}.ms-sm-2{margin-inline-start:.5rem}.ms-sm-3{margin-inline-start:1rem}.ms-sm-4{margin-inline-start:1.5rem}.ms-sm-5{margin-inline-start:3rem}.ms-sm-auto{margin-inline-start:auto}.p-sm--2{padding:-.5rem}.p-sm--1{padding:-.25rem}.p-sm-0{padding:0}.p-sm-1{padding:.25rem}.p-sm-2{padding:.5rem}.p-sm-3{padding:1rem}.p-sm-4{padding:1.5rem}.p-sm-5{padding:3rem}.px-sm--2{padding-inline:-.5rem}.px-sm--1{padding-inline:-.25rem}.px-sm-0{padding-inline:0}.px-sm-1{padding-inline:.25rem}.px-sm-2{padding-inline:.5rem}.px-sm-3{padding-inline:1rem}.px-sm-4{padding-inline:1.5rem}.px-sm-5{padding-inline:3rem}.py-sm--2{padding-block:-.5rem}.py-sm--1{padding-block:-.25rem}.py-sm-0{padding-block:0}.py-sm-1{padding-block:.25rem}.py-sm-2{padding-block:.5rem}.py-sm-3{padding-block:1rem}.py-sm-4{padding-block:1.5rem}.py-sm-5{padding-block:3rem}.pt-sm--2{padding-block-start:-.5rem}.pt-sm--1{padding-block-start:-.25rem}.pt-sm-0{padding-block-start:0}.pt-sm-1{padding-block-start:.25rem}.pt-sm-2{padding-block-start:.5rem}.pt-sm-3{padding-block-start:1rem}.pt-sm-4{padding-block-start:1.5rem}.pt-sm-5{padding-block-start:3rem}.pe-sm--2{padding-inline-end:-.5rem}.pe-sm--1{padding-inline-end:-.25rem}.pe-sm-0{padding-inline-end:0}.pe-sm-1{padding-inline-end:.25rem}.pe-sm-2{padding-inline-end:.5rem}.pe-sm-3{padding-inline-end:1rem}.pe-sm-4{padding-inline-end:1.5rem}.pe-sm-5{padding-inline-end:3rem}.pb-sm--2{padding-block-end:-.5rem}.pb-sm--1{padding-block-end:-.25rem}.pb-sm-0{padding-block-end:0}.pb-sm-1{padding-block-end:.25rem}.pb-sm-2{padding-block-end:.5rem}.pb-sm-3{padding-block-end:1rem}.pb-sm-4{padding-block-end:1.5rem}.pb-sm-5{padding-block-end:3rem}.ps-sm--2{padding-inline-start:-.5rem}.ps-sm--1{padding-inline-start:-.25rem}.ps-sm-0{padding-inline-start:0}.ps-sm-1{padding-inline-start:.25rem}.ps-sm-2{padding-inline-start:.5rem}.ps-sm-3{padding-inline-start:1rem}.ps-sm-4{padding-inline-start:1.5rem}.ps-sm-5{padding-inline-start:3rem}.gap-sm--2{gap:-.5rem}.gap-sm--1{gap:-.25rem}.gap-sm-0{gap:0}.gap-sm-1{gap:.25rem}.gap-sm-2{gap:.5rem}.gap-sm-3{gap:1rem}.gap-sm-4{gap:1.5rem}.gap-sm-5{gap:3rem}.row-gap-sm--2{row-gap:-.5rem}.row-gap-sm--1{row-gap:-.25rem}.row-gap-sm-0{row-gap:0}.row-gap-sm-1{row-gap:.25rem}.row-gap-sm-2{row-gap:.5rem}.row-gap-sm-3{row-gap:1rem}.row-gap-sm-4{row-gap:1.5rem}.row-gap-sm-5{row-gap:3rem}.column-gap-sm--2{-moz-column-gap:-.5rem;column-gap:-.5rem}.column-gap-sm--1{-moz-column-gap:-.25rem;column-gap:-.25rem}.column-gap-sm-0{-moz-column-gap:0;column-gap:0}.column-gap-sm-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-sm-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-sm-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-sm-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-sm-5{-moz-column-gap:3rem;column-gap:3rem}.text-sm-start{text-align:start}.text-sm-end{text-align:end}.text-sm-center{text-align:center}}@media (width>=768px){.float-md-start{float:inline-start}.float-md-end{float:inline-end}.float-md-none{float:none}.object-fit-md-contain{-o-object-fit:contain;object-fit:contain}.object-fit-md-cover{-o-object-fit:cover;object-fit:cover}.object-fit-md-fill{-o-object-fit:fill;object-fit:fill}.object-fit-md-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-md-none{-o-object-fit:none;object-fit:none}.d-md-inline{display:inline}.d-md-inline-block{display:inline-block}.d-md-block{display:block}.d-md-grid{display:grid}.d-md-inline-grid{display:inline-grid}.d-md-table{display:table}.d-md-table-row{display:table-row}.d-md-table-cell{display:table-cell}.d-md-flex{display:flex}.d-md-inline-flex{display:inline-flex}.d-md-contents{display:contents}.d-md-flow-root{display:flow-root}.d-md-none{display:none}.flex-md-fill{flex:auto}.flex-md-row{flex-direction:row}.flex-md-column{flex-direction:column}.flex-md-row-reverse{flex-direction:row-reverse}.flex-md-column-reverse{flex-direction:column-reverse}.flex-md-grow-0{flex-grow:0}.flex-md-grow-1{flex-grow:1}.flex-md-shrink-0{flex-shrink:0}.flex-md-shrink-1{flex-shrink:1}.flex-md-wrap{flex-wrap:wrap}.flex-md-nowrap{flex-wrap:nowrap}.flex-md-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-md-start{justify-content:flex-start}.justify-content-md-end{justify-content:flex-end}.justify-content-md-center{justify-content:center}.justify-content-md-between{justify-content:space-between}.justify-content-md-around{justify-content:space-around}.justify-content-md-evenly{justify-content:space-evenly}.justify-items-md-start{justify-items:start}.justify-items-md-end{justify-items:end}.justify-items-md-center{justify-items:center}.justify-items-md-stretch{justify-items:stretch}.justify-self-md-start{justify-self:flex-start}.justify-self-md-end{justify-self:flex-end}.justify-self-md-center{justify-self:center}.align-items-md-start{align-items:flex-start}.align-items-md-end{align-items:flex-end}.align-items-md-center{align-items:center}.align-items-md-baseline{align-items:baseline}.align-items-md-stretch{align-items:stretch}.align-content-md-start{align-content:flex-start}.align-content-md-end{align-content:flex-end}.align-content-md-center{align-content:center}.align-content-md-between{align-content:space-between}.align-content-md-around{align-content:space-around}.align-content-md-stretch{align-content:stretch}.align-self-md-auto{align-self:auto}.align-self-md-start{align-self:flex-start}.align-self-md-end{align-self:flex-end}.align-self-md-center{align-self:center}.align-self-md-baseline{align-self:baseline}.align-self-md-stretch{align-self:stretch}.place-items-md-start{place-items:start}.place-items-md-end{place-items:end}.place-items-md-center{place-items:center}.place-items-md-stretch{place-items:stretch stretch}.grid-cols-md-3{--bs-columns:3}.grid-cols-md-4{--bs-columns:4}.grid-cols-md-6{--bs-columns:6}.grid-cols-md-fill{grid-column:1/-1}.grid-auto-flow-md-row{grid-auto-flow:row}.grid-auto-flow-md-column{grid-auto-flow:column}.grid-auto-flow-md-dense{grid-auto-flow:dense}.order-md-first{order:-1}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-last{order:6}.m-md--2{margin:-.5rem}.m-md--1{margin:-.25rem}.m-md-0{margin:0}.m-md-1{margin:.25rem}.m-md-2{margin:.5rem}.m-md-3{margin:1rem}.m-md-4{margin:1.5rem}.m-md-5{margin:3rem}.m-md-auto{margin:auto}.mx-md--2{margin-inline:-.5rem}.mx-md--1{margin-inline:-.25rem}.mx-md-0{margin-inline:0}.mx-md-1{margin-inline:.25rem}.mx-md-2{margin-inline:.5rem}.mx-md-3{margin-inline:1rem}.mx-md-4{margin-inline:1.5rem}.mx-md-5{margin-inline:3rem}.mx-md-auto{margin-inline:auto}.my-md--2{margin-block:-.5rem}.my-md--1{margin-block:-.25rem}.my-md-0{margin-block:0}.my-md-1{margin-block:.25rem}.my-md-2{margin-block:.5rem}.my-md-3{margin-block:1rem}.my-md-4{margin-block:1.5rem}.my-md-5{margin-block:3rem}.my-md-auto{margin-block:auto}.mt-md--2{margin-block-start:-.5rem}.mt-md--1{margin-block-start:-.25rem}.mt-md-0{margin-block-start:0}.mt-md-1{margin-block-start:.25rem}.mt-md-2{margin-block-start:.5rem}.mt-md-3{margin-block-start:1rem}.mt-md-4{margin-block-start:1.5rem}.mt-md-5{margin-block-start:3rem}.mt-md-auto{margin-block-start:auto}.me-md--2{margin-inline-end:-.5rem}.me-md--1{margin-inline-end:-.25rem}.me-md-0{margin-inline-end:0}.me-md-1{margin-inline-end:.25rem}.me-md-2{margin-inline-end:.5rem}.me-md-3{margin-inline-end:1rem}.me-md-4{margin-inline-end:1.5rem}.me-md-5{margin-inline-end:3rem}.me-md-auto{margin-inline-end:auto}.mb-md--2{margin-block-end:-.5rem}.mb-md--1{margin-block-end:-.25rem}.mb-md-0{margin-block-end:0}.mb-md-1{margin-block-end:.25rem}.mb-md-2{margin-block-end:.5rem}.mb-md-3{margin-block-end:1rem}.mb-md-4{margin-block-end:1.5rem}.mb-md-5{margin-block-end:3rem}.mb-md-auto{margin-block-end:auto}.ms-md--2{margin-inline-start:-.5rem}.ms-md--1{margin-inline-start:-.25rem}.ms-md-0{margin-inline-start:0}.ms-md-1{margin-inline-start:.25rem}.ms-md-2{margin-inline-start:.5rem}.ms-md-3{margin-inline-start:1rem}.ms-md-4{margin-inline-start:1.5rem}.ms-md-5{margin-inline-start:3rem}.ms-md-auto{margin-inline-start:auto}.p-md--2{padding:-.5rem}.p-md--1{padding:-.25rem}.p-md-0{padding:0}.p-md-1{padding:.25rem}.p-md-2{padding:.5rem}.p-md-3{padding:1rem}.p-md-4{padding:1.5rem}.p-md-5{padding:3rem}.px-md--2{padding-inline:-.5rem}.px-md--1{padding-inline:-.25rem}.px-md-0{padding-inline:0}.px-md-1{padding-inline:.25rem}.px-md-2{padding-inline:.5rem}.px-md-3{padding-inline:1rem}.px-md-4{padding-inline:1.5rem}.px-md-5{padding-inline:3rem}.py-md--2{padding-block:-.5rem}.py-md--1{padding-block:-.25rem}.py-md-0{padding-block:0}.py-md-1{padding-block:.25rem}.py-md-2{padding-block:.5rem}.py-md-3{padding-block:1rem}.py-md-4{padding-block:1.5rem}.py-md-5{padding-block:3rem}.pt-md--2{padding-block-start:-.5rem}.pt-md--1{padding-block-start:-.25rem}.pt-md-0{padding-block-start:0}.pt-md-1{padding-block-start:.25rem}.pt-md-2{padding-block-start:.5rem}.pt-md-3{padding-block-start:1rem}.pt-md-4{padding-block-start:1.5rem}.pt-md-5{padding-block-start:3rem}.pe-md--2{padding-inline-end:-.5rem}.pe-md--1{padding-inline-end:-.25rem}.pe-md-0{padding-inline-end:0}.pe-md-1{padding-inline-end:.25rem}.pe-md-2{padding-inline-end:.5rem}.pe-md-3{padding-inline-end:1rem}.pe-md-4{padding-inline-end:1.5rem}.pe-md-5{padding-inline-end:3rem}.pb-md--2{padding-block-end:-.5rem}.pb-md--1{padding-block-end:-.25rem}.pb-md-0{padding-block-end:0}.pb-md-1{padding-block-end:.25rem}.pb-md-2{padding-block-end:.5rem}.pb-md-3{padding-block-end:1rem}.pb-md-4{padding-block-end:1.5rem}.pb-md-5{padding-block-end:3rem}.ps-md--2{padding-inline-start:-.5rem}.ps-md--1{padding-inline-start:-.25rem}.ps-md-0{padding-inline-start:0}.ps-md-1{padding-inline-start:.25rem}.ps-md-2{padding-inline-start:.5rem}.ps-md-3{padding-inline-start:1rem}.ps-md-4{padding-inline-start:1.5rem}.ps-md-5{padding-inline-start:3rem}.gap-md--2{gap:-.5rem}.gap-md--1{gap:-.25rem}.gap-md-0{gap:0}.gap-md-1{gap:.25rem}.gap-md-2{gap:.5rem}.gap-md-3{gap:1rem}.gap-md-4{gap:1.5rem}.gap-md-5{gap:3rem}.row-gap-md--2{row-gap:-.5rem}.row-gap-md--1{row-gap:-.25rem}.row-gap-md-0{row-gap:0}.row-gap-md-1{row-gap:.25rem}.row-gap-md-2{row-gap:.5rem}.row-gap-md-3{row-gap:1rem}.row-gap-md-4{row-gap:1.5rem}.row-gap-md-5{row-gap:3rem}.column-gap-md--2{-moz-column-gap:-.5rem;column-gap:-.5rem}.column-gap-md--1{-moz-column-gap:-.25rem;column-gap:-.25rem}.column-gap-md-0{-moz-column-gap:0;column-gap:0}.column-gap-md-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-md-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-md-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-md-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-md-5{-moz-column-gap:3rem;column-gap:3rem}.text-md-start{text-align:start}.text-md-end{text-align:end}.text-md-center{text-align:center}}@media (width>=1024px){.float-lg-start{float:inline-start}.float-lg-end{float:inline-end}.float-lg-none{float:none}.object-fit-lg-contain{-o-object-fit:contain;object-fit:contain}.object-fit-lg-cover{-o-object-fit:cover;object-fit:cover}.object-fit-lg-fill{-o-object-fit:fill;object-fit:fill}.object-fit-lg-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-lg-none{-o-object-fit:none;object-fit:none}.d-lg-inline{display:inline}.d-lg-inline-block{display:inline-block}.d-lg-block{display:block}.d-lg-grid{display:grid}.d-lg-inline-grid{display:inline-grid}.d-lg-table{display:table}.d-lg-table-row{display:table-row}.d-lg-table-cell{display:table-cell}.d-lg-flex{display:flex}.d-lg-inline-flex{display:inline-flex}.d-lg-contents{display:contents}.d-lg-flow-root{display:flow-root}.d-lg-none{display:none}.flex-lg-fill{flex:auto}.flex-lg-row{flex-direction:row}.flex-lg-column{flex-direction:column}.flex-lg-row-reverse{flex-direction:row-reverse}.flex-lg-column-reverse{flex-direction:column-reverse}.flex-lg-grow-0{flex-grow:0}.flex-lg-grow-1{flex-grow:1}.flex-lg-shrink-0{flex-shrink:0}.flex-lg-shrink-1{flex-shrink:1}.flex-lg-wrap{flex-wrap:wrap}.flex-lg-nowrap{flex-wrap:nowrap}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-lg-start{justify-content:flex-start}.justify-content-lg-end{justify-content:flex-end}.justify-content-lg-center{justify-content:center}.justify-content-lg-between{justify-content:space-between}.justify-content-lg-around{justify-content:space-around}.justify-content-lg-evenly{justify-content:space-evenly}.justify-items-lg-start{justify-items:start}.justify-items-lg-end{justify-items:end}.justify-items-lg-center{justify-items:center}.justify-items-lg-stretch{justify-items:stretch}.justify-self-lg-start{justify-self:flex-start}.justify-self-lg-end{justify-self:flex-end}.justify-self-lg-center{justify-self:center}.align-items-lg-start{align-items:flex-start}.align-items-lg-end{align-items:flex-end}.align-items-lg-center{align-items:center}.align-items-lg-baseline{align-items:baseline}.align-items-lg-stretch{align-items:stretch}.align-content-lg-start{align-content:flex-start}.align-content-lg-end{align-content:flex-end}.align-content-lg-center{align-content:center}.align-content-lg-between{align-content:space-between}.align-content-lg-around{align-content:space-around}.align-content-lg-stretch{align-content:stretch}.align-self-lg-auto{align-self:auto}.align-self-lg-start{align-self:flex-start}.align-self-lg-end{align-self:flex-end}.align-self-lg-center{align-self:center}.align-self-lg-baseline{align-self:baseline}.align-self-lg-stretch{align-self:stretch}.place-items-lg-start{place-items:start}.place-items-lg-end{place-items:end}.place-items-lg-center{place-items:center}.place-items-lg-stretch{place-items:stretch stretch}.grid-cols-lg-3{--bs-columns:3}.grid-cols-lg-4{--bs-columns:4}.grid-cols-lg-6{--bs-columns:6}.grid-cols-lg-fill{grid-column:1/-1}.grid-auto-flow-lg-row{grid-auto-flow:row}.grid-auto-flow-lg-column{grid-auto-flow:column}.grid-auto-flow-lg-dense{grid-auto-flow:dense}.order-lg-first{order:-1}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-last{order:6}.m-lg--2{margin:-.5rem}.m-lg--1{margin:-.25rem}.m-lg-0{margin:0}.m-lg-1{margin:.25rem}.m-lg-2{margin:.5rem}.m-lg-3{margin:1rem}.m-lg-4{margin:1.5rem}.m-lg-5{margin:3rem}.m-lg-auto{margin:auto}.mx-lg--2{margin-inline:-.5rem}.mx-lg--1{margin-inline:-.25rem}.mx-lg-0{margin-inline:0}.mx-lg-1{margin-inline:.25rem}.mx-lg-2{margin-inline:.5rem}.mx-lg-3{margin-inline:1rem}.mx-lg-4{margin-inline:1.5rem}.mx-lg-5{margin-inline:3rem}.mx-lg-auto{margin-inline:auto}.my-lg--2{margin-block:-.5rem}.my-lg--1{margin-block:-.25rem}.my-lg-0{margin-block:0}.my-lg-1{margin-block:.25rem}.my-lg-2{margin-block:.5rem}.my-lg-3{margin-block:1rem}.my-lg-4{margin-block:1.5rem}.my-lg-5{margin-block:3rem}.my-lg-auto{margin-block:auto}.mt-lg--2{margin-block-start:-.5rem}.mt-lg--1{margin-block-start:-.25rem}.mt-lg-0{margin-block-start:0}.mt-lg-1{margin-block-start:.25rem}.mt-lg-2{margin-block-start:.5rem}.mt-lg-3{margin-block-start:1rem}.mt-lg-4{margin-block-start:1.5rem}.mt-lg-5{margin-block-start:3rem}.mt-lg-auto{margin-block-start:auto}.me-lg--2{margin-inline-end:-.5rem}.me-lg--1{margin-inline-end:-.25rem}.me-lg-0{margin-inline-end:0}.me-lg-1{margin-inline-end:.25rem}.me-lg-2{margin-inline-end:.5rem}.me-lg-3{margin-inline-end:1rem}.me-lg-4{margin-inline-end:1.5rem}.me-lg-5{margin-inline-end:3rem}.me-lg-auto{margin-inline-end:auto}.mb-lg--2{margin-block-end:-.5rem}.mb-lg--1{margin-block-end:-.25rem}.mb-lg-0{margin-block-end:0}.mb-lg-1{margin-block-end:.25rem}.mb-lg-2{margin-block-end:.5rem}.mb-lg-3{margin-block-end:1rem}.mb-lg-4{margin-block-end:1.5rem}.mb-lg-5{margin-block-end:3rem}.mb-lg-auto{margin-block-end:auto}.ms-lg--2{margin-inline-start:-.5rem}.ms-lg--1{margin-inline-start:-.25rem}.ms-lg-0{margin-inline-start:0}.ms-lg-1{margin-inline-start:.25rem}.ms-lg-2{margin-inline-start:.5rem}.ms-lg-3{margin-inline-start:1rem}.ms-lg-4{margin-inline-start:1.5rem}.ms-lg-5{margin-inline-start:3rem}.ms-lg-auto{margin-inline-start:auto}.p-lg--2{padding:-.5rem}.p-lg--1{padding:-.25rem}.p-lg-0{padding:0}.p-lg-1{padding:.25rem}.p-lg-2{padding:.5rem}.p-lg-3{padding:1rem}.p-lg-4{padding:1.5rem}.p-lg-5{padding:3rem}.px-lg--2{padding-inline:-.5rem}.px-lg--1{padding-inline:-.25rem}.px-lg-0{padding-inline:0}.px-lg-1{padding-inline:.25rem}.px-lg-2{padding-inline:.5rem}.px-lg-3{padding-inline:1rem}.px-lg-4{padding-inline:1.5rem}.px-lg-5{padding-inline:3rem}.py-lg--2{padding-block:-.5rem}.py-lg--1{padding-block:-.25rem}.py-lg-0{padding-block:0}.py-lg-1{padding-block:.25rem}.py-lg-2{padding-block:.5rem}.py-lg-3{padding-block:1rem}.py-lg-4{padding-block:1.5rem}.py-lg-5{padding-block:3rem}.pt-lg--2{padding-block-start:-.5rem}.pt-lg--1{padding-block-start:-.25rem}.pt-lg-0{padding-block-start:0}.pt-lg-1{padding-block-start:.25rem}.pt-lg-2{padding-block-start:.5rem}.pt-lg-3{padding-block-start:1rem}.pt-lg-4{padding-block-start:1.5rem}.pt-lg-5{padding-block-start:3rem}.pe-lg--2{padding-inline-end:-.5rem}.pe-lg--1{padding-inline-end:-.25rem}.pe-lg-0{padding-inline-end:0}.pe-lg-1{padding-inline-end:.25rem}.pe-lg-2{padding-inline-end:.5rem}.pe-lg-3{padding-inline-end:1rem}.pe-lg-4{padding-inline-end:1.5rem}.pe-lg-5{padding-inline-end:3rem}.pb-lg--2{padding-block-end:-.5rem}.pb-lg--1{padding-block-end:-.25rem}.pb-lg-0{padding-block-end:0}.pb-lg-1{padding-block-end:.25rem}.pb-lg-2{padding-block-end:.5rem}.pb-lg-3{padding-block-end:1rem}.pb-lg-4{padding-block-end:1.5rem}.pb-lg-5{padding-block-end:3rem}.ps-lg--2{padding-inline-start:-.5rem}.ps-lg--1{padding-inline-start:-.25rem}.ps-lg-0{padding-inline-start:0}.ps-lg-1{padding-inline-start:.25rem}.ps-lg-2{padding-inline-start:.5rem}.ps-lg-3{padding-inline-start:1rem}.ps-lg-4{padding-inline-start:1.5rem}.ps-lg-5{padding-inline-start:3rem}.gap-lg--2{gap:-.5rem}.gap-lg--1{gap:-.25rem}.gap-lg-0{gap:0}.gap-lg-1{gap:.25rem}.gap-lg-2{gap:.5rem}.gap-lg-3{gap:1rem}.gap-lg-4{gap:1.5rem}.gap-lg-5{gap:3rem}.row-gap-lg--2{row-gap:-.5rem}.row-gap-lg--1{row-gap:-.25rem}.row-gap-lg-0{row-gap:0}.row-gap-lg-1{row-gap:.25rem}.row-gap-lg-2{row-gap:.5rem}.row-gap-lg-3{row-gap:1rem}.row-gap-lg-4{row-gap:1.5rem}.row-gap-lg-5{row-gap:3rem}.column-gap-lg--2{-moz-column-gap:-.5rem;column-gap:-.5rem}.column-gap-lg--1{-moz-column-gap:-.25rem;column-gap:-.25rem}.column-gap-lg-0{-moz-column-gap:0;column-gap:0}.column-gap-lg-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-lg-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-lg-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-lg-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-lg-5{-moz-column-gap:3rem;column-gap:3rem}.text-lg-start{text-align:start}.text-lg-end{text-align:end}.text-lg-center{text-align:center}}@media (width>=1280px){.float-xl-start{float:inline-start}.float-xl-end{float:inline-end}.float-xl-none{float:none}.object-fit-xl-contain{-o-object-fit:contain;object-fit:contain}.object-fit-xl-cover{-o-object-fit:cover;object-fit:cover}.object-fit-xl-fill{-o-object-fit:fill;object-fit:fill}.object-fit-xl-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-xl-none{-o-object-fit:none;object-fit:none}.d-xl-inline{display:inline}.d-xl-inline-block{display:inline-block}.d-xl-block{display:block}.d-xl-grid{display:grid}.d-xl-inline-grid{display:inline-grid}.d-xl-table{display:table}.d-xl-table-row{display:table-row}.d-xl-table-cell{display:table-cell}.d-xl-flex{display:flex}.d-xl-inline-flex{display:inline-flex}.d-xl-contents{display:contents}.d-xl-flow-root{display:flow-root}.d-xl-none{display:none}.flex-xl-fill{flex:auto}.flex-xl-row{flex-direction:row}.flex-xl-column{flex-direction:column}.flex-xl-row-reverse{flex-direction:row-reverse}.flex-xl-column-reverse{flex-direction:column-reverse}.flex-xl-grow-0{flex-grow:0}.flex-xl-grow-1{flex-grow:1}.flex-xl-shrink-0{flex-shrink:0}.flex-xl-shrink-1{flex-shrink:1}.flex-xl-wrap{flex-wrap:wrap}.flex-xl-nowrap{flex-wrap:nowrap}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-xl-start{justify-content:flex-start}.justify-content-xl-end{justify-content:flex-end}.justify-content-xl-center{justify-content:center}.justify-content-xl-between{justify-content:space-between}.justify-content-xl-around{justify-content:space-around}.justify-content-xl-evenly{justify-content:space-evenly}.justify-items-xl-start{justify-items:start}.justify-items-xl-end{justify-items:end}.justify-items-xl-center{justify-items:center}.justify-items-xl-stretch{justify-items:stretch}.justify-self-xl-start{justify-self:flex-start}.justify-self-xl-end{justify-self:flex-end}.justify-self-xl-center{justify-self:center}.align-items-xl-start{align-items:flex-start}.align-items-xl-end{align-items:flex-end}.align-items-xl-center{align-items:center}.align-items-xl-baseline{align-items:baseline}.align-items-xl-stretch{align-items:stretch}.align-content-xl-start{align-content:flex-start}.align-content-xl-end{align-content:flex-end}.align-content-xl-center{align-content:center}.align-content-xl-between{align-content:space-between}.align-content-xl-around{align-content:space-around}.align-content-xl-stretch{align-content:stretch}.align-self-xl-auto{align-self:auto}.align-self-xl-start{align-self:flex-start}.align-self-xl-end{align-self:flex-end}.align-self-xl-center{align-self:center}.align-self-xl-baseline{align-self:baseline}.align-self-xl-stretch{align-self:stretch}.place-items-xl-start{place-items:start}.place-items-xl-end{place-items:end}.place-items-xl-center{place-items:center}.place-items-xl-stretch{place-items:stretch stretch}.grid-cols-xl-3{--bs-columns:3}.grid-cols-xl-4{--bs-columns:4}.grid-cols-xl-6{--bs-columns:6}.grid-cols-xl-fill{grid-column:1/-1}.grid-auto-flow-xl-row{grid-auto-flow:row}.grid-auto-flow-xl-column{grid-auto-flow:column}.grid-auto-flow-xl-dense{grid-auto-flow:dense}.order-xl-first{order:-1}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-last{order:6}.m-xl--2{margin:-.5rem}.m-xl--1{margin:-.25rem}.m-xl-0{margin:0}.m-xl-1{margin:.25rem}.m-xl-2{margin:.5rem}.m-xl-3{margin:1rem}.m-xl-4{margin:1.5rem}.m-xl-5{margin:3rem}.m-xl-auto{margin:auto}.mx-xl--2{margin-inline:-.5rem}.mx-xl--1{margin-inline:-.25rem}.mx-xl-0{margin-inline:0}.mx-xl-1{margin-inline:.25rem}.mx-xl-2{margin-inline:.5rem}.mx-xl-3{margin-inline:1rem}.mx-xl-4{margin-inline:1.5rem}.mx-xl-5{margin-inline:3rem}.mx-xl-auto{margin-inline:auto}.my-xl--2{margin-block:-.5rem}.my-xl--1{margin-block:-.25rem}.my-xl-0{margin-block:0}.my-xl-1{margin-block:.25rem}.my-xl-2{margin-block:.5rem}.my-xl-3{margin-block:1rem}.my-xl-4{margin-block:1.5rem}.my-xl-5{margin-block:3rem}.my-xl-auto{margin-block:auto}.mt-xl--2{margin-block-start:-.5rem}.mt-xl--1{margin-block-start:-.25rem}.mt-xl-0{margin-block-start:0}.mt-xl-1{margin-block-start:.25rem}.mt-xl-2{margin-block-start:.5rem}.mt-xl-3{margin-block-start:1rem}.mt-xl-4{margin-block-start:1.5rem}.mt-xl-5{margin-block-start:3rem}.mt-xl-auto{margin-block-start:auto}.me-xl--2{margin-inline-end:-.5rem}.me-xl--1{margin-inline-end:-.25rem}.me-xl-0{margin-inline-end:0}.me-xl-1{margin-inline-end:.25rem}.me-xl-2{margin-inline-end:.5rem}.me-xl-3{margin-inline-end:1rem}.me-xl-4{margin-inline-end:1.5rem}.me-xl-5{margin-inline-end:3rem}.me-xl-auto{margin-inline-end:auto}.mb-xl--2{margin-block-end:-.5rem}.mb-xl--1{margin-block-end:-.25rem}.mb-xl-0{margin-block-end:0}.mb-xl-1{margin-block-end:.25rem}.mb-xl-2{margin-block-end:.5rem}.mb-xl-3{margin-block-end:1rem}.mb-xl-4{margin-block-end:1.5rem}.mb-xl-5{margin-block-end:3rem}.mb-xl-auto{margin-block-end:auto}.ms-xl--2{margin-inline-start:-.5rem}.ms-xl--1{margin-inline-start:-.25rem}.ms-xl-0{margin-inline-start:0}.ms-xl-1{margin-inline-start:.25rem}.ms-xl-2{margin-inline-start:.5rem}.ms-xl-3{margin-inline-start:1rem}.ms-xl-4{margin-inline-start:1.5rem}.ms-xl-5{margin-inline-start:3rem}.ms-xl-auto{margin-inline-start:auto}.p-xl--2{padding:-.5rem}.p-xl--1{padding:-.25rem}.p-xl-0{padding:0}.p-xl-1{padding:.25rem}.p-xl-2{padding:.5rem}.p-xl-3{padding:1rem}.p-xl-4{padding:1.5rem}.p-xl-5{padding:3rem}.px-xl--2{padding-inline:-.5rem}.px-xl--1{padding-inline:-.25rem}.px-xl-0{padding-inline:0}.px-xl-1{padding-inline:.25rem}.px-xl-2{padding-inline:.5rem}.px-xl-3{padding-inline:1rem}.px-xl-4{padding-inline:1.5rem}.px-xl-5{padding-inline:3rem}.py-xl--2{padding-block:-.5rem}.py-xl--1{padding-block:-.25rem}.py-xl-0{padding-block:0}.py-xl-1{padding-block:.25rem}.py-xl-2{padding-block:.5rem}.py-xl-3{padding-block:1rem}.py-xl-4{padding-block:1.5rem}.py-xl-5{padding-block:3rem}.pt-xl--2{padding-block-start:-.5rem}.pt-xl--1{padding-block-start:-.25rem}.pt-xl-0{padding-block-start:0}.pt-xl-1{padding-block-start:.25rem}.pt-xl-2{padding-block-start:.5rem}.pt-xl-3{padding-block-start:1rem}.pt-xl-4{padding-block-start:1.5rem}.pt-xl-5{padding-block-start:3rem}.pe-xl--2{padding-inline-end:-.5rem}.pe-xl--1{padding-inline-end:-.25rem}.pe-xl-0{padding-inline-end:0}.pe-xl-1{padding-inline-end:.25rem}.pe-xl-2{padding-inline-end:.5rem}.pe-xl-3{padding-inline-end:1rem}.pe-xl-4{padding-inline-end:1.5rem}.pe-xl-5{padding-inline-end:3rem}.pb-xl--2{padding-block-end:-.5rem}.pb-xl--1{padding-block-end:-.25rem}.pb-xl-0{padding-block-end:0}.pb-xl-1{padding-block-end:.25rem}.pb-xl-2{padding-block-end:.5rem}.pb-xl-3{padding-block-end:1rem}.pb-xl-4{padding-block-end:1.5rem}.pb-xl-5{padding-block-end:3rem}.ps-xl--2{padding-inline-start:-.5rem}.ps-xl--1{padding-inline-start:-.25rem}.ps-xl-0{padding-inline-start:0}.ps-xl-1{padding-inline-start:.25rem}.ps-xl-2{padding-inline-start:.5rem}.ps-xl-3{padding-inline-start:1rem}.ps-xl-4{padding-inline-start:1.5rem}.ps-xl-5{padding-inline-start:3rem}.gap-xl--2{gap:-.5rem}.gap-xl--1{gap:-.25rem}.gap-xl-0{gap:0}.gap-xl-1{gap:.25rem}.gap-xl-2{gap:.5rem}.gap-xl-3{gap:1rem}.gap-xl-4{gap:1.5rem}.gap-xl-5{gap:3rem}.row-gap-xl--2{row-gap:-.5rem}.row-gap-xl--1{row-gap:-.25rem}.row-gap-xl-0{row-gap:0}.row-gap-xl-1{row-gap:.25rem}.row-gap-xl-2{row-gap:.5rem}.row-gap-xl-3{row-gap:1rem}.row-gap-xl-4{row-gap:1.5rem}.row-gap-xl-5{row-gap:3rem}.column-gap-xl--2{-moz-column-gap:-.5rem;column-gap:-.5rem}.column-gap-xl--1{-moz-column-gap:-.25rem;column-gap:-.25rem}.column-gap-xl-0{-moz-column-gap:0;column-gap:0}.column-gap-xl-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-xl-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-xl-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-xl-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-xl-5{-moz-column-gap:3rem;column-gap:3rem}.text-xl-start{text-align:start}.text-xl-end{text-align:end}.text-xl-center{text-align:center}}@media (width>=1536px){.float-2xl-start{float:inline-start}.float-2xl-end{float:inline-end}.float-2xl-none{float:none}.object-fit-2xl-contain{-o-object-fit:contain;object-fit:contain}.object-fit-2xl-cover{-o-object-fit:cover;object-fit:cover}.object-fit-2xl-fill{-o-object-fit:fill;object-fit:fill}.object-fit-2xl-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-2xl-none{-o-object-fit:none;object-fit:none}.d-2xl-inline{display:inline}.d-2xl-inline-block{display:inline-block}.d-2xl-block{display:block}.d-2xl-grid{display:grid}.d-2xl-inline-grid{display:inline-grid}.d-2xl-table{display:table}.d-2xl-table-row{display:table-row}.d-2xl-table-cell{display:table-cell}.d-2xl-flex{display:flex}.d-2xl-inline-flex{display:inline-flex}.d-2xl-contents{display:contents}.d-2xl-flow-root{display:flow-root}.d-2xl-none{display:none}.flex-2xl-fill{flex:auto}.flex-2xl-row{flex-direction:row}.flex-2xl-column{flex-direction:column}.flex-2xl-row-reverse{flex-direction:row-reverse}.flex-2xl-column-reverse{flex-direction:column-reverse}.flex-2xl-grow-0{flex-grow:0}.flex-2xl-grow-1{flex-grow:1}.flex-2xl-shrink-0{flex-shrink:0}.flex-2xl-shrink-1{flex-shrink:1}.flex-2xl-wrap{flex-wrap:wrap}.flex-2xl-nowrap{flex-wrap:nowrap}.flex-2xl-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-2xl-start{justify-content:flex-start}.justify-content-2xl-end{justify-content:flex-end}.justify-content-2xl-center{justify-content:center}.justify-content-2xl-between{justify-content:space-between}.justify-content-2xl-around{justify-content:space-around}.justify-content-2xl-evenly{justify-content:space-evenly}.justify-items-2xl-start{justify-items:start}.justify-items-2xl-end{justify-items:end}.justify-items-2xl-center{justify-items:center}.justify-items-2xl-stretch{justify-items:stretch}.justify-self-2xl-start{justify-self:flex-start}.justify-self-2xl-end{justify-self:flex-end}.justify-self-2xl-center{justify-self:center}.align-items-2xl-start{align-items:flex-start}.align-items-2xl-end{align-items:flex-end}.align-items-2xl-center{align-items:center}.align-items-2xl-baseline{align-items:baseline}.align-items-2xl-stretch{align-items:stretch}.align-content-2xl-start{align-content:flex-start}.align-content-2xl-end{align-content:flex-end}.align-content-2xl-center{align-content:center}.align-content-2xl-between{align-content:space-between}.align-content-2xl-around{align-content:space-around}.align-content-2xl-stretch{align-content:stretch}.align-self-2xl-auto{align-self:auto}.align-self-2xl-start{align-self:flex-start}.align-self-2xl-end{align-self:flex-end}.align-self-2xl-center{align-self:center}.align-self-2xl-baseline{align-self:baseline}.align-self-2xl-stretch{align-self:stretch}.place-items-2xl-start{place-items:start}.place-items-2xl-end{place-items:end}.place-items-2xl-center{place-items:center}.place-items-2xl-stretch{place-items:stretch stretch}.grid-cols-2xl-3{--bs-columns:3}.grid-cols-2xl-4{--bs-columns:4}.grid-cols-2xl-6{--bs-columns:6}.grid-cols-2xl-fill{grid-column:1/-1}.grid-auto-flow-2xl-row{grid-auto-flow:row}.grid-auto-flow-2xl-column{grid-auto-flow:column}.grid-auto-flow-2xl-dense{grid-auto-flow:dense}.order-2xl-first{order:-1}.order-2xl-0{order:0}.order-2xl-1{order:1}.order-2xl-2{order:2}.order-2xl-3{order:3}.order-2xl-4{order:4}.order-2xl-5{order:5}.order-2xl-last{order:6}.m-2xl--2{margin:-.5rem}.m-2xl--1{margin:-.25rem}.m-2xl-0{margin:0}.m-2xl-1{margin:.25rem}.m-2xl-2{margin:.5rem}.m-2xl-3{margin:1rem}.m-2xl-4{margin:1.5rem}.m-2xl-5{margin:3rem}.m-2xl-auto{margin:auto}.mx-2xl--2{margin-inline:-.5rem}.mx-2xl--1{margin-inline:-.25rem}.mx-2xl-0{margin-inline:0}.mx-2xl-1{margin-inline:.25rem}.mx-2xl-2{margin-inline:.5rem}.mx-2xl-3{margin-inline:1rem}.mx-2xl-4{margin-inline:1.5rem}.mx-2xl-5{margin-inline:3rem}.mx-2xl-auto{margin-inline:auto}.my-2xl--2{margin-block:-.5rem}.my-2xl--1{margin-block:-.25rem}.my-2xl-0{margin-block:0}.my-2xl-1{margin-block:.25rem}.my-2xl-2{margin-block:.5rem}.my-2xl-3{margin-block:1rem}.my-2xl-4{margin-block:1.5rem}.my-2xl-5{margin-block:3rem}.my-2xl-auto{margin-block:auto}.mt-2xl--2{margin-block-start:-.5rem}.mt-2xl--1{margin-block-start:-.25rem}.mt-2xl-0{margin-block-start:0}.mt-2xl-1{margin-block-start:.25rem}.mt-2xl-2{margin-block-start:.5rem}.mt-2xl-3{margin-block-start:1rem}.mt-2xl-4{margin-block-start:1.5rem}.mt-2xl-5{margin-block-start:3rem}.mt-2xl-auto{margin-block-start:auto}.me-2xl--2{margin-inline-end:-.5rem}.me-2xl--1{margin-inline-end:-.25rem}.me-2xl-0{margin-inline-end:0}.me-2xl-1{margin-inline-end:.25rem}.me-2xl-2{margin-inline-end:.5rem}.me-2xl-3{margin-inline-end:1rem}.me-2xl-4{margin-inline-end:1.5rem}.me-2xl-5{margin-inline-end:3rem}.me-2xl-auto{margin-inline-end:auto}.mb-2xl--2{margin-block-end:-.5rem}.mb-2xl--1{margin-block-end:-.25rem}.mb-2xl-0{margin-block-end:0}.mb-2xl-1{margin-block-end:.25rem}.mb-2xl-2{margin-block-end:.5rem}.mb-2xl-3{margin-block-end:1rem}.mb-2xl-4{margin-block-end:1.5rem}.mb-2xl-5{margin-block-end:3rem}.mb-2xl-auto{margin-block-end:auto}.ms-2xl--2{margin-inline-start:-.5rem}.ms-2xl--1{margin-inline-start:-.25rem}.ms-2xl-0{margin-inline-start:0}.ms-2xl-1{margin-inline-start:.25rem}.ms-2xl-2{margin-inline-start:.5rem}.ms-2xl-3{margin-inline-start:1rem}.ms-2xl-4{margin-inline-start:1.5rem}.ms-2xl-5{margin-inline-start:3rem}.ms-2xl-auto{margin-inline-start:auto}.p-2xl--2{padding:-.5rem}.p-2xl--1{padding:-.25rem}.p-2xl-0{padding:0}.p-2xl-1{padding:.25rem}.p-2xl-2{padding:.5rem}.p-2xl-3{padding:1rem}.p-2xl-4{padding:1.5rem}.p-2xl-5{padding:3rem}.px-2xl--2{padding-inline:-.5rem}.px-2xl--1{padding-inline:-.25rem}.px-2xl-0{padding-inline:0}.px-2xl-1{padding-inline:.25rem}.px-2xl-2{padding-inline:.5rem}.px-2xl-3{padding-inline:1rem}.px-2xl-4{padding-inline:1.5rem}.px-2xl-5{padding-inline:3rem}.py-2xl--2{padding-block:-.5rem}.py-2xl--1{padding-block:-.25rem}.py-2xl-0{padding-block:0}.py-2xl-1{padding-block:.25rem}.py-2xl-2{padding-block:.5rem}.py-2xl-3{padding-block:1rem}.py-2xl-4{padding-block:1.5rem}.py-2xl-5{padding-block:3rem}.pt-2xl--2{padding-block-start:-.5rem}.pt-2xl--1{padding-block-start:-.25rem}.pt-2xl-0{padding-block-start:0}.pt-2xl-1{padding-block-start:.25rem}.pt-2xl-2{padding-block-start:.5rem}.pt-2xl-3{padding-block-start:1rem}.pt-2xl-4{padding-block-start:1.5rem}.pt-2xl-5{padding-block-start:3rem}.pe-2xl--2{padding-inline-end:-.5rem}.pe-2xl--1{padding-inline-end:-.25rem}.pe-2xl-0{padding-inline-end:0}.pe-2xl-1{padding-inline-end:.25rem}.pe-2xl-2{padding-inline-end:.5rem}.pe-2xl-3{padding-inline-end:1rem}.pe-2xl-4{padding-inline-end:1.5rem}.pe-2xl-5{padding-inline-end:3rem}.pb-2xl--2{padding-block-end:-.5rem}.pb-2xl--1{padding-block-end:-.25rem}.pb-2xl-0{padding-block-end:0}.pb-2xl-1{padding-block-end:.25rem}.pb-2xl-2{padding-block-end:.5rem}.pb-2xl-3{padding-block-end:1rem}.pb-2xl-4{padding-block-end:1.5rem}.pb-2xl-5{padding-block-end:3rem}.ps-2xl--2{padding-inline-start:-.5rem}.ps-2xl--1{padding-inline-start:-.25rem}.ps-2xl-0{padding-inline-start:0}.ps-2xl-1{padding-inline-start:.25rem}.ps-2xl-2{padding-inline-start:.5rem}.ps-2xl-3{padding-inline-start:1rem}.ps-2xl-4{padding-inline-start:1.5rem}.ps-2xl-5{padding-inline-start:3rem}.gap-2xl--2{gap:-.5rem}.gap-2xl--1{gap:-.25rem}.gap-2xl-0{gap:0}.gap-2xl-1{gap:.25rem}.gap-2xl-2{gap:.5rem}.gap-2xl-3{gap:1rem}.gap-2xl-4{gap:1.5rem}.gap-2xl-5{gap:3rem}.row-gap-2xl--2{row-gap:-.5rem}.row-gap-2xl--1{row-gap:-.25rem}.row-gap-2xl-0{row-gap:0}.row-gap-2xl-1{row-gap:.25rem}.row-gap-2xl-2{row-gap:.5rem}.row-gap-2xl-3{row-gap:1rem}.row-gap-2xl-4{row-gap:1.5rem}.row-gap-2xl-5{row-gap:3rem}.column-gap-2xl--2{-moz-column-gap:-.5rem;column-gap:-.5rem}.column-gap-2xl--1{-moz-column-gap:-.25rem;column-gap:-.25rem}.column-gap-2xl-0{-moz-column-gap:0;column-gap:0}.column-gap-2xl-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-2xl-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-2xl-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-2xl-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-2xl-5{-moz-column-gap:3rem;column-gap:3rem}.text-2xl-start{text-align:start}.text-2xl-end{text-align:end}.text-2xl-center{text-align:center}}}:root{--bs-black:#000;--bs-white:#fff;--bs-gradient:linear-gradient(180deg,color-mix(var(--bs-white)15%,transparent),color-mix(var(--bs-white)0%,transparent));--bs-font-size-base:1rem;--bs-font-size-xs:.75rem;--bs-font-size-sm:.875rem;--bs-font-size-md:1rem;--bs-font-size-lg:clamp(1.25rem,1rem + .625vw,1.5rem);--bs-font-size-xl:clamp(1.5rem,1.1rem + .75vw,1.75rem);--bs-font-size-2xl:clamp(1.75rem,1.3rem + 1vw,2rem);--bs-font-size-3xl:clamp(2rem,1.5rem + 1.875vw,2.5rem);--bs-font-size-4xl:clamp(2.25rem,1.75rem + 2.5vw,3rem);--bs-font-size-5xl:clamp(3rem,2rem + 5vw,4rem);--bs-font-size-6xl:clamp(3.75rem,2.5rem + 6.25vw,5rem);--bs-line-height-xs:1.25;--bs-line-height-sm:1.5;--bs-line-height-md:1.5;--bs-line-height-lg:1.5;--bs-line-height-xl:1.42857;--bs-line-height-2xl:1.33333;--bs-line-height-3xl:1.2;--bs-line-height-4xl:1.1;--bs-line-height-5xl:1.1;--bs-line-height-6xl:1;--bs-font-weight-lighter:lighter;--bs-font-weight-light:300;--bs-font-weight-normal:400;--bs-font-weight-medium:500;--bs-font-weight-semibold:600;--bs-font-weight-bold:700;--bs-font-weight-bolder:bolder;--bs-body-font-family:system-ui;--bs-body-font-size:var(--bs-font-size-base);--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-heading-color:inherit;--bs-hr-border-color:var(--bs-border-color);--bs-link-color:light-dark(var(--bs-primary-base),var(--bs-primary-text));--bs-link-decoration:underline;--bs-link-hover-color:color-mix(in oklch,var(--bs-link-color)90%,#000);--bs-font-mono:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-code-font-size:95%;--bs-code-color:var(--bs-fg-2);--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:light-dark(color-mix(in oklch,var(--bs-gray-100),var(--bs-gray-200)),var(--bs-gray-700));--bs-border-color-translucent:color-mix(in oklch,var(--bs-fg-body)15%,transparent);--bs-border-radius:.5rem;--bs-border-radius-xs:.375rem;--bs-border-radius-sm:.5rem;--bs-border-radius-lg:.75rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-box-shadow:0 .5rem 1rem #00000026;--bs-box-shadow-sm:0 .125rem .25rem #00000013;--bs-box-shadow-lg:0 1rem 3rem #0000002d;--bs-box-shadow-inset:inset 0 1px 2px #00000013;--bs-spacer:1rem;--bs-focus-ring-width:3px;--bs-focus-ring-offset:1px;--bs-focus-ring-color:var(--bs-primary-focus-ring);--bs-focus-ring:var(--bs-focus-ring-width)solid var(--bs-focus-ring-color);--bs-control-checked-bg:var(--bs-primary-base);--bs-control-checked-border-color:var(--bs-control-checked-bg);--bs-control-active-bg:var(--bs-primary-base);--bs-control-active-border-color:var(--bs-control-active-bg);--bs-control-disabled-bg:var(--bs-bg-3);--bs-control-disabled-opacity:.65;--bs-btn-input-fg:var(--bs-fg-body);--bs-btn-input-bg:var(--bs-bg-body);--bs-btn-input-min-height:2.375rem;--bs-btn-input-padding-y:.375rem;--bs-btn-input-padding-x:.75rem;--bs-btn-input-font-size:var(--bs-font-size-base);--bs-btn-input-line-height:var(--bs-line-height-base);--bs-btn-input-border-radius:var(--bs-border-radius);--bs-btn-input-xs-min-height:1.5rem;--bs-btn-input-xs-padding-y:.125rem;--bs-btn-input-xs-padding-x:.5rem;--bs-btn-input-xs-font-size:var(--bs-font-size-xs);--bs-btn-input-xs-line-height:1.125;--bs-btn-input-xs-border-radius:var(--bs-border-radius-xs);--bs-btn-input-sm-min-height:2rem;--bs-btn-input-sm-padding-y:.25rem;--bs-btn-input-sm-padding-x:.625rem;--bs-btn-input-sm-font-size:var(--bs-font-size-sm);--bs-btn-input-sm-line-height:var(--bs-line-height-sm);--bs-btn-input-sm-border-radius:var(--bs-border-radius-sm);--bs-btn-input-lg-min-height:2.75rem;--bs-btn-input-lg-padding-y:.5rem;--bs-btn-input-lg-padding-x:1rem;--bs-btn-input-lg-font-size:var(--bs-font-size-md);--bs-btn-input-lg-line-height:var(--bs-line-height-md);--bs-btn-input-lg-border-radius:var(--bs-border-radius-lg);--bs-form-valid-color:var(--bs-success-text);--bs-form-valid-border-color:var(--bs-success-text);--bs-form-invalid-color:var(--bs-danger-text);--bs-form-invalid-border-color:var(--bs-danger-text);--bs-primary-base:var(--bs-blue-500);--bs-primary-text:light-dark(var(--bs-blue-600),var(--bs-blue-400));--bs-primary-text-emphasis:light-dark(var(--bs-blue-800),var(--bs-blue-200));--bs-primary-bg:var(--bs-blue-500);--bs-primary-bg-subtle:light-dark(var(--bs-blue-100),var(--bs-blue-900));--bs-primary-bg-muted:light-dark(var(--bs-blue-200),var(--bs-blue-800));--bs-primary-border:light-dark(var(--bs-blue-300),var(--bs-blue-600));--bs-primary-focus-ring:light-dark(color-mix(in oklch,var(--bs-blue-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-blue-500)75%,var(--bs-bg-body)));--bs-primary-contrast:var(--bs-white);--bs-accent-base:var(--bs-indigo-500);--bs-accent-text:light-dark(var(--bs-indigo-600),color-mix(in oklch,var(--bs-indigo-400),var(--bs-indigo-300)));--bs-accent-text-emphasis:light-dark(var(--bs-indigo-800),var(--bs-indigo-300));--bs-accent-bg:var(--bs-indigo-500);--bs-accent-bg-subtle:light-dark(var(--bs-indigo-100),var(--bs-indigo-900));--bs-accent-bg-muted:light-dark(var(--bs-indigo-200),var(--bs-indigo-800));--bs-accent-border:light-dark(var(--bs-indigo-300),var(--bs-indigo-600));--bs-accent-focus-ring:light-dark(color-mix(in oklch,var(--bs-indigo-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-indigo-500)75%,var(--bs-bg-body)));--bs-accent-contrast:var(--bs-white);--bs-success-base:var(--bs-green-500);--bs-success-text:light-dark(var(--bs-green-600),var(--bs-green-400));--bs-success-text-emphasis:light-dark(var(--bs-green-800),var(--bs-green-300));--bs-success-bg:var(--bs-green-500);--bs-success-bg-subtle:light-dark(var(--bs-green-100),var(--bs-green-900));--bs-success-bg-muted:light-dark(var(--bs-green-200),var(--bs-green-800));--bs-success-border:light-dark(var(--bs-green-300),var(--bs-green-600));--bs-success-focus-ring:light-dark(color-mix(in oklch,var(--bs-green-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-green-500)75%,var(--bs-bg-body)));--bs-success-contrast:var(--bs-white);--bs-danger-base:var(--bs-red-500);--bs-danger-text:light-dark(var(--bs-red-600),var(--bs-red-400));--bs-danger-text-emphasis:light-dark(var(--bs-red-800),var(--bs-red-300));--bs-danger-bg:var(--bs-red-500);--bs-danger-bg-subtle:light-dark(var(--bs-red-100),var(--bs-red-900));--bs-danger-bg-muted:light-dark(var(--bs-red-200),var(--bs-red-800));--bs-danger-border:light-dark(var(--bs-red-300),var(--bs-red-600));--bs-danger-focus-ring:light-dark(color-mix(in oklch,var(--bs-red-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-red-500)75%,var(--bs-bg-body)));--bs-danger-contrast:var(--bs-white);--bs-warning-base:var(--bs-yellow-500);--bs-warning-text:light-dark(var(--bs-yellow-700),var(--bs-yellow-400));--bs-warning-text-emphasis:light-dark(var(--bs-yellow-800),var(--bs-yellow-300));--bs-warning-bg:var(--bs-yellow-500);--bs-warning-bg-subtle:light-dark(var(--bs-yellow-100),var(--bs-yellow-900));--bs-warning-bg-muted:light-dark(var(--bs-yellow-200),var(--bs-yellow-800));--bs-warning-border:light-dark(var(--bs-yellow-300),var(--bs-yellow-600));--bs-warning-focus-ring:light-dark(color-mix(in oklch,var(--bs-yellow-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-yellow-400)85%,var(--bs-bg-body)));--bs-warning-contrast:var(--bs-gray-900);--bs-info-base:var(--bs-cyan-500);--bs-info-text:light-dark(var(--bs-cyan-600),var(--bs-cyan-400));--bs-info-text-emphasis:light-dark(var(--bs-cyan-800),var(--bs-cyan-300));--bs-info-bg:var(--bs-cyan-500);--bs-info-bg-subtle:light-dark(var(--bs-cyan-100),var(--bs-cyan-900));--bs-info-bg-muted:light-dark(var(--bs-cyan-200),var(--bs-cyan-800));--bs-info-border:light-dark(var(--bs-cyan-300),var(--bs-cyan-600));--bs-info-focus-ring:light-dark(color-mix(in oklch,var(--bs-cyan-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-cyan-500)75%,var(--bs-bg-body)));--bs-info-contrast:var(--bs-gray-900);--bs-inverse-base:var(--bs-gray-900);--bs-inverse-text:light-dark(var(--bs-gray-900),var(--bs-gray-200));--bs-inverse-text-emphasis:light-dark(var(--bs-gray-975),var(--bs-white));--bs-inverse-bg:light-dark(var(--bs-gray-900),var(--bs-gray-025));--bs-inverse-bg-subtle:light-dark(var(--bs-gray-100),var(--bs-gray-900));--bs-inverse-bg-muted:light-dark(var(--bs-gray-200),var(--bs-gray-300));--bs-inverse-border:light-dark(var(--bs-gray-400),var(--bs-gray-100));--bs-inverse-focus-ring:color-mix(in oklch,light-dark(var(--bs-gray-900),var(--bs-gray-100))50%,var(--bs-bg-body));--bs-inverse-contrast:light-dark(var(--bs-white),var(--bs-gray-900));--bs-secondary-base:var(--bs-gray-200);--bs-secondary-text:light-dark(var(--bs-gray-600),var(--bs-gray-400));--bs-secondary-text-emphasis:light-dark(var(--bs-gray-800),var(--bs-gray-200));--bs-secondary-bg:light-dark(var(--bs-gray-100),var(--bs-gray-600));--bs-secondary-bg-subtle:light-dark(var(--bs-gray-050),var(--bs-gray-800));--bs-secondary-bg-muted:light-dark(var(--bs-gray-100),var(--bs-gray-700));--bs-secondary-border:light-dark(var(--bs-gray-300),var(--bs-gray-600));--bs-secondary-focus-ring:color-mix(in oklch,light-dark(var(--bs-gray-500),var(--bs-gray-300))50%,var(--bs-bg-body));--bs-secondary-contrast:light-dark(var(--bs-gray-900),var(--bs-white));--bs-bg-body:light-dark(var(--bs-white),var(--bs-gray-975));--bs-bg-1:light-dark(var(--bs-gray-025),var(--bs-gray-950));--bs-bg-2:light-dark(var(--bs-gray-050),var(--bs-gray-900));--bs-bg-3:light-dark(var(--bs-gray-100),var(--bs-gray-800));--bs-bg-4:light-dark(var(--bs-gray-200),var(--bs-gray-700));--bs-bg-white:var(--bs-white);--bs-bg-black:var(--bs-black);--bs-bg-transparent:transparent;--bs-bg-inherit:inherit;--bs-fg-body:light-dark(var(--bs-gray-900),var(--bs-gray-050));--bs-fg-1:light-dark(var(--bs-gray-800),var(--bs-gray-200));--bs-fg-2:light-dark(var(--bs-gray-700),var(--bs-gray-300));--bs-fg-3:light-dark(var(--bs-gray-600),var(--bs-gray-500));--bs-fg-4:light-dark(var(--bs-gray-500),var(--bs-gray-600));--bs-fg-white:var(--bs-white);--bs-fg-black:var(--bs-black);--bs-fg-inherit:inherit;--bs-border-bg:var(--bs-bg-body);--bs-border-body:light-dark(var(--bs-gray-300),var(--bs-gray-800));--bs-border-muted:light-dark(var(--bs-gray-200),var(--bs-gray-800));--bs-border-subtle:light-dark(var(--bs-gray-100),var(--bs-gray-900));--bs-border-emphasized:light-dark(var(--bs-gray-400),var(--bs-gray-600));--bs-border-white:var(--bs-white);--bs-border-black:var(--bs-black);--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:1024px;--bs-breakpoint-xl:1280px;--bs-breakpoint-2xl:1536px;color-scheme:light dark}[data-bs-theme=dark]{color-scheme:dark}[data-bs-theme=light]{color-scheme:light}.offcanvas,.offcanvas-2xl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-inset:var(--bs-spacer);--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:var(--bs-spacer);--bs-offcanvas-padding-y:var(--bs-spacer);--bs-offcanvas-color:var(--bs-fg-body);--bs-offcanvas-bg:var(--bs-bg-body);--bs-offcanvas-border-width:var(--bs-border-width);--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-border-radius:var(--bs-border-radius-lg);--bs-offcanvas-box-shadow:var(--bs-box-shadow-lg);--bs-offcanvas-transition:transform .3s ease-in-out;--bs-offcanvas-title-line-height:1.5}.stepper{--bs-stepper-size:2rem;--bs-stepper-gap:1rem;--bs-stepper-bg:var(--bs-bg-2);--bs-stepper-track-size:.25rem;--bs-stepper-active-color:var(--bs-primary-contrast);--bs-stepper-active-bg:var(--bs-primary-bg);gap:var(--bs-stepper-gap);counter-reset:stepper;grid-auto-rows:1fr;grid-auto-flow:row;padding-left:0;list-style:none;display:grid}.stepper-item{grid-template-rows:auto;grid-template-columns:var(--bs-stepper-size)auto;text-align:center;place-items:center start;gap:.5rem;text-decoration:none;display:grid;position:relative}.stepper-item:before{z-index:1;width:var(--bs-stepper-size);height:var(--bs-stepper-size);text-align:center;content:counter(stepper);counter-increment:stepper;background-color:var(--bs-stepper-bg);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:.5rem;font-weight:600;line-height:1;display:flex;position:relative}.stepper-item:after{top:calc(var(--bs-stepper-gap)*-1);bottom:100%;left:calc(var(--bs-stepper-size)*.5 - var(--bs-stepper-track-size)*.5);width:var(--bs-stepper-track-size);content:"";background-color:var(--bs-stepper-bg);position:absolute}.stepper-item:first-child:after{display:none}.stepper-item.active:before,.stepper-item.active:after{color:var(--bs-theme-contrast,var(--bs-stepper-active-color));background-color:var(--bs-theme-bg,var(--bs-stepper-active-bg))}.stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.stepper-horizontal .stepper-item{grid-template-rows:repeat(2,var(--bs-stepper-size));grid-template-columns:auto;justify-items:center}.stepper-horizontal .stepper-item:after{top:calc(var(--bs-stepper-size)*.5 - var(--bs-stepper-track-size)*.5);bottom:auto;right:0;left:calc(-50% - var(--bs-stepper-gap));width:auto;height:var(--bs-stepper-track-size)}.stepper-horizontal .stepper-item:last-child:after{right:50%}@media (width>=576px){.stepper-horizontal-sm{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.stepper-horizontal-sm .stepper-item{grid-template-rows:repeat(2,var(--bs-stepper-size));grid-template-columns:auto;justify-items:center}.stepper-horizontal-sm .stepper-item:after{top:calc(var(--bs-stepper-size)*.5 - var(--bs-stepper-track-size)*.5);bottom:auto;right:0;left:calc(-50% - var(--bs-stepper-gap));width:auto;height:var(--bs-stepper-track-size)}.stepper-horizontal-sm .stepper-item:last-child:after{right:50%}}@media (width>=768px){.stepper-horizontal-md{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.stepper-horizontal-md .stepper-item{grid-template-rows:repeat(2,var(--bs-stepper-size));grid-template-columns:auto;justify-items:center}.stepper-horizontal-md .stepper-item:after{top:calc(var(--bs-stepper-size)*.5 - var(--bs-stepper-track-size)*.5);bottom:auto;right:0;left:calc(-50% - var(--bs-stepper-gap));width:auto;height:var(--bs-stepper-track-size)}.stepper-horizontal-md .stepper-item:last-child:after{right:50%}}@media (width>=1024px){.stepper-horizontal-lg{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.stepper-horizontal-lg .stepper-item{grid-template-rows:repeat(2,var(--bs-stepper-size));grid-template-columns:auto;justify-items:center}.stepper-horizontal-lg .stepper-item:after{top:calc(var(--bs-stepper-size)*.5 - var(--bs-stepper-track-size)*.5);bottom:auto;right:0;left:calc(-50% - var(--bs-stepper-gap));width:auto;height:var(--bs-stepper-track-size)}.stepper-horizontal-lg .stepper-item:last-child:after{right:50%}}@media (width>=1280px){.stepper-horizontal-xl{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.stepper-horizontal-xl .stepper-item{grid-template-rows:repeat(2,var(--bs-stepper-size));grid-template-columns:auto;justify-items:center}.stepper-horizontal-xl .stepper-item:after{top:calc(var(--bs-stepper-size)*.5 - var(--bs-stepper-track-size)*.5);bottom:auto;right:0;left:calc(-50% - var(--bs-stepper-gap));width:auto;height:var(--bs-stepper-track-size)}.stepper-horizontal-xl .stepper-item:last-child:after{right:50%}}@media (width>=1536px){.stepper-horizontal-2xl{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.stepper-horizontal-2xl .stepper-item{grid-template-rows:repeat(2,var(--bs-stepper-size));grid-template-columns:auto;justify-items:center}.stepper-horizontal-2xl .stepper-item:after{top:calc(var(--bs-stepper-size)*.5 - var(--bs-stepper-track-size)*.5);bottom:auto;right:0;left:calc(-50% - var(--bs-stepper-gap));width:auto;height:var(--bs-stepper-track-size)}.stepper-horizontal-2xl .stepper-item:last-child:after{right:50%}}.stepper-overflow{overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;overflow-x:auto;container-type:inline-size}.stepper-overflow>.stepper{width:max-content;min-width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;transition:height .35s;overflow:hidden}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}
+:root{--bs-blue-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .24 240));--bs-blue-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .24 240));--bs-blue-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .24 240));--bs-blue-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .24 240));--bs-blue-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .24 240));--bs-blue-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .24 240));--bs-blue-500:oklch(60% .24 240);--bs-blue-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .24 240));--bs-blue-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .24 240));--bs-blue-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .24 240));--bs-blue-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .24 240));--bs-blue-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .24 240));--bs-blue-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .24 240));--bs-indigo-025:color-mix(in lab,var(--bs-white)94%,oklch(56% .26 288));--bs-indigo-050:color-mix(in lab,var(--bs-white)90%,oklch(56% .26 288));--bs-indigo-100:color-mix(in lab,var(--bs-white)80%,oklch(56% .26 288));--bs-indigo-200:color-mix(in lab,var(--bs-white)60%,oklch(56% .26 288));--bs-indigo-300:color-mix(in lab,var(--bs-white)40%,oklch(56% .26 288));--bs-indigo-400:color-mix(in lab,var(--bs-white)20%,oklch(56% .26 288));--bs-indigo-500:oklch(56% .26 288);--bs-indigo-600:color-mix(in lab,var(--bs-black)16%,oklch(56% .26 288));--bs-indigo-700:color-mix(in lab,var(--bs-black)32%,oklch(56% .26 288));--bs-indigo-800:color-mix(in lab,var(--bs-black)48%,oklch(56% .26 288));--bs-indigo-900:color-mix(in lab,var(--bs-black)64%,oklch(56% .26 288));--bs-indigo-950:color-mix(in lab,var(--bs-black)76%,oklch(56% .26 288));--bs-indigo-975:color-mix(in lab,var(--bs-black)88%,oklch(56% .26 288));--bs-violet-025:color-mix(in lab,var(--bs-white)94%,oklch(56% .24 300));--bs-violet-050:color-mix(in lab,var(--bs-white)90%,oklch(56% .24 300));--bs-violet-100:color-mix(in lab,var(--bs-white)80%,oklch(56% .24 300));--bs-violet-200:color-mix(in lab,var(--bs-white)60%,oklch(56% .24 300));--bs-violet-300:color-mix(in lab,var(--bs-white)40%,oklch(56% .24 300));--bs-violet-400:color-mix(in lab,var(--bs-white)20%,oklch(56% .24 300));--bs-violet-500:oklch(56% .24 300);--bs-violet-600:color-mix(in lab,var(--bs-black)16%,oklch(56% .24 300));--bs-violet-700:color-mix(in lab,var(--bs-black)32%,oklch(56% .24 300));--bs-violet-800:color-mix(in lab,var(--bs-black)48%,oklch(56% .24 300));--bs-violet-900:color-mix(in lab,var(--bs-black)64%,oklch(56% .24 300));--bs-violet-950:color-mix(in lab,var(--bs-black)76%,oklch(56% .24 300));--bs-violet-975:color-mix(in lab,var(--bs-black)88%,oklch(56% .24 300));--bs-purple-025:color-mix(in lab,var(--bs-white)94%,oklch(56% .24 320));--bs-purple-050:color-mix(in lab,var(--bs-white)90%,oklch(56% .24 320));--bs-purple-100:color-mix(in lab,var(--bs-white)80%,oklch(56% .24 320));--bs-purple-200:color-mix(in lab,var(--bs-white)60%,oklch(56% .24 320));--bs-purple-300:color-mix(in lab,var(--bs-white)40%,oklch(56% .24 320));--bs-purple-400:color-mix(in lab,var(--bs-white)20%,oklch(56% .24 320));--bs-purple-500:oklch(56% .24 320);--bs-purple-600:color-mix(in lab,var(--bs-black)16%,oklch(56% .24 320));--bs-purple-700:color-mix(in lab,var(--bs-black)32%,oklch(56% .24 320));--bs-purple-800:color-mix(in lab,var(--bs-black)48%,oklch(56% .24 320));--bs-purple-900:color-mix(in lab,var(--bs-black)64%,oklch(56% .24 320));--bs-purple-950:color-mix(in lab,var(--bs-black)76%,oklch(56% .24 320));--bs-purple-975:color-mix(in lab,var(--bs-black)88%,oklch(56% .24 320));--bs-pink-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .22 4));--bs-pink-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .22 4));--bs-pink-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .22 4));--bs-pink-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .22 4));--bs-pink-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .22 4));--bs-pink-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .22 4));--bs-pink-500:oklch(60% .22 4);--bs-pink-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .22 4));--bs-pink-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .22 4));--bs-pink-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .22 4));--bs-pink-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .22 4));--bs-pink-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .22 4));--bs-pink-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .22 4));--bs-red-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .22 20));--bs-red-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .22 20));--bs-red-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .22 20));--bs-red-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .22 20));--bs-red-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .22 20));--bs-red-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .22 20));--bs-red-500:oklch(60% .22 20);--bs-red-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .22 20));--bs-red-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .22 20));--bs-red-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .22 20));--bs-red-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .22 20));--bs-red-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .22 20));--bs-red-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .22 20));--bs-orange-025:color-mix(in lab,var(--bs-white)94%,oklch(70% .22 52));--bs-orange-050:color-mix(in lab,var(--bs-white)90%,oklch(70% .22 52));--bs-orange-100:color-mix(in lab,var(--bs-white)80%,oklch(70% .22 52));--bs-orange-200:color-mix(in lab,var(--bs-white)60%,oklch(70% .22 52));--bs-orange-300:color-mix(in lab,var(--bs-white)40%,oklch(70% .22 52));--bs-orange-400:color-mix(in lab,var(--bs-white)20%,oklch(70% .22 52));--bs-orange-500:oklch(70% .22 52);--bs-orange-600:color-mix(in lab,var(--bs-black)16%,oklch(70% .22 52));--bs-orange-700:color-mix(in lab,var(--bs-black)32%,oklch(70% .22 52));--bs-orange-800:color-mix(in lab,var(--bs-black)48%,oklch(70% .22 52));--bs-orange-900:color-mix(in lab,var(--bs-black)64%,oklch(70% .22 52));--bs-orange-950:color-mix(in lab,var(--bs-black)76%,oklch(70% .22 52));--bs-orange-975:color-mix(in lab,var(--bs-black)88%,oklch(70% .22 52));--bs-amber-025:color-mix(in lab,var(--bs-white)94%,oklch(79% .2 78));--bs-amber-050:color-mix(in lab,var(--bs-white)90%,oklch(79% .2 78));--bs-amber-100:color-mix(in lab,var(--bs-white)80%,oklch(79% .2 78));--bs-amber-200:color-mix(in lab,var(--bs-white)60%,oklch(79% .2 78));--bs-amber-300:color-mix(in lab,var(--bs-white)40%,oklch(79% .2 78));--bs-amber-400:color-mix(in lab,var(--bs-white)20%,oklch(79% .2 78));--bs-amber-500:oklch(79% .2 78);--bs-amber-600:color-mix(in lab,var(--bs-black)16%,oklch(79% .2 78));--bs-amber-700:color-mix(in lab,var(--bs-black)32%,oklch(79% .2 78));--bs-amber-800:color-mix(in lab,var(--bs-black)48%,oklch(79% .2 78));--bs-amber-900:color-mix(in lab,var(--bs-black)64%,oklch(79% .2 78));--bs-amber-950:color-mix(in lab,var(--bs-black)76%,oklch(79% .2 78));--bs-amber-975:color-mix(in lab,var(--bs-black)88%,oklch(79% .2 78));--bs-yellow-025:color-mix(in lab,var(--bs-white)94%,oklch(88% .24 88));--bs-yellow-050:color-mix(in lab,var(--bs-white)90%,oklch(88% .24 88));--bs-yellow-100:color-mix(in lab,var(--bs-white)80%,oklch(88% .24 88));--bs-yellow-200:color-mix(in lab,var(--bs-white)60%,oklch(88% .24 88));--bs-yellow-300:color-mix(in lab,var(--bs-white)40%,oklch(88% .24 88));--bs-yellow-400:color-mix(in lab,var(--bs-white)20%,oklch(88% .24 88));--bs-yellow-500:oklch(88% .24 88);--bs-yellow-600:color-mix(in lab,var(--bs-black)16%,oklch(88% .24 88));--bs-yellow-700:color-mix(in lab,var(--bs-black)32%,oklch(88% .24 88));--bs-yellow-800:color-mix(in lab,var(--bs-black)48%,oklch(88% .24 88));--bs-yellow-900:color-mix(in lab,var(--bs-black)64%,oklch(88% .24 88));--bs-yellow-950:color-mix(in lab,var(--bs-black)76%,oklch(88% .24 88));--bs-yellow-975:color-mix(in lab,var(--bs-black)88%,oklch(88% .24 88));--bs-lime-025:color-mix(in lab,var(--bs-white)94%,oklch(65% .24 135));--bs-lime-050:color-mix(in lab,var(--bs-white)90%,oklch(65% .24 135));--bs-lime-100:color-mix(in lab,var(--bs-white)80%,oklch(65% .24 135));--bs-lime-200:color-mix(in lab,var(--bs-white)60%,oklch(65% .24 135));--bs-lime-300:color-mix(in lab,var(--bs-white)40%,oklch(65% .24 135));--bs-lime-400:color-mix(in lab,var(--bs-white)20%,oklch(65% .24 135));--bs-lime-500:oklch(65% .24 135);--bs-lime-600:color-mix(in lab,var(--bs-black)16%,oklch(65% .24 135));--bs-lime-700:color-mix(in lab,var(--bs-black)32%,oklch(65% .24 135));--bs-lime-800:color-mix(in lab,var(--bs-black)48%,oklch(65% .24 135));--bs-lime-900:color-mix(in lab,var(--bs-black)64%,oklch(65% .24 135));--bs-lime-950:color-mix(in lab,var(--bs-black)76%,oklch(65% .24 135));--bs-lime-975:color-mix(in lab,var(--bs-black)88%,oklch(65% .24 135));--bs-green-025:color-mix(in lab,var(--bs-white)94%,oklch(64% .22 160));--bs-green-050:color-mix(in lab,var(--bs-white)90%,oklch(64% .22 160));--bs-green-100:color-mix(in lab,var(--bs-white)80%,oklch(64% .22 160));--bs-green-200:color-mix(in lab,var(--bs-white)60%,oklch(64% .22 160));--bs-green-300:color-mix(in lab,var(--bs-white)40%,oklch(64% .22 160));--bs-green-400:color-mix(in lab,var(--bs-white)20%,oklch(64% .22 160));--bs-green-500:oklch(64% .22 160);--bs-green-600:color-mix(in lab,var(--bs-black)16%,oklch(64% .22 160));--bs-green-700:color-mix(in lab,var(--bs-black)32%,oklch(64% .22 160));--bs-green-800:color-mix(in lab,var(--bs-black)48%,oklch(64% .22 160));--bs-green-900:color-mix(in lab,var(--bs-black)64%,oklch(64% .22 160));--bs-green-950:color-mix(in lab,var(--bs-black)76%,oklch(64% .22 160));--bs-green-975:color-mix(in lab,var(--bs-black)88%,oklch(64% .22 160));--bs-teal-025:color-mix(in lab,var(--bs-white)94%,oklch(68% .22 190));--bs-teal-050:color-mix(in lab,var(--bs-white)90%,oklch(68% .22 190));--bs-teal-100:color-mix(in lab,var(--bs-white)80%,oklch(68% .22 190));--bs-teal-200:color-mix(in lab,var(--bs-white)60%,oklch(68% .22 190));--bs-teal-300:color-mix(in lab,var(--bs-white)40%,oklch(68% .22 190));--bs-teal-400:color-mix(in lab,var(--bs-white)20%,oklch(68% .22 190));--bs-teal-500:oklch(68% .22 190);--bs-teal-600:color-mix(in lab,var(--bs-black)16%,oklch(68% .22 190));--bs-teal-700:color-mix(in lab,var(--bs-black)32%,oklch(68% .22 190));--bs-teal-800:color-mix(in lab,var(--bs-black)48%,oklch(68% .22 190));--bs-teal-900:color-mix(in lab,var(--bs-black)64%,oklch(68% .22 190));--bs-teal-950:color-mix(in lab,var(--bs-black)76%,oklch(68% .22 190));--bs-teal-975:color-mix(in lab,var(--bs-black)88%,oklch(68% .22 190));--bs-cyan-025:color-mix(in lab,var(--bs-white)94%,oklch(69% .22 220));--bs-cyan-050:color-mix(in lab,var(--bs-white)90%,oklch(69% .22 220));--bs-cyan-100:color-mix(in lab,var(--bs-white)80%,oklch(69% .22 220));--bs-cyan-200:color-mix(in lab,var(--bs-white)60%,oklch(69% .22 220));--bs-cyan-300:color-mix(in lab,var(--bs-white)40%,oklch(69% .22 220));--bs-cyan-400:color-mix(in lab,var(--bs-white)20%,oklch(69% .22 220));--bs-cyan-500:oklch(69% .22 220);--bs-cyan-600:color-mix(in lab,var(--bs-black)16%,oklch(69% .22 220));--bs-cyan-700:color-mix(in lab,var(--bs-black)32%,oklch(69% .22 220));--bs-cyan-800:color-mix(in lab,var(--bs-black)48%,oklch(69% .22 220));--bs-cyan-900:color-mix(in lab,var(--bs-black)64%,oklch(69% .22 220));--bs-cyan-950:color-mix(in lab,var(--bs-black)76%,oklch(69% .22 220));--bs-cyan-975:color-mix(in lab,var(--bs-black)88%,oklch(69% .22 220));--bs-brown-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .12 54));--bs-brown-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .12 54));--bs-brown-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .12 54));--bs-brown-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .12 54));--bs-brown-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .12 54));--bs-brown-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .12 54));--bs-brown-500:oklch(60% .12 54);--bs-brown-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .12 54));--bs-brown-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .12 54));--bs-brown-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .12 54));--bs-brown-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .12 54));--bs-brown-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .12 54));--bs-brown-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .12 54));--bs-gray-025:color-mix(in lab,var(--bs-white)94%,oklch(60% .02 245));--bs-gray-050:color-mix(in lab,var(--bs-white)90%,oklch(60% .02 245));--bs-gray-100:color-mix(in lab,var(--bs-white)80%,oklch(60% .02 245));--bs-gray-200:color-mix(in lab,var(--bs-white)60%,oklch(60% .02 245));--bs-gray-300:color-mix(in lab,var(--bs-white)40%,oklch(60% .02 245));--bs-gray-400:color-mix(in lab,var(--bs-white)20%,oklch(60% .02 245));--bs-gray-500:oklch(60% .02 245);--bs-gray-600:color-mix(in lab,var(--bs-black)16%,oklch(60% .02 245));--bs-gray-700:color-mix(in lab,var(--bs-black)32%,oklch(60% .02 245));--bs-gray-800:color-mix(in lab,var(--bs-black)48%,oklch(60% .02 245));--bs-gray-900:color-mix(in lab,var(--bs-black)64%,oklch(60% .02 245));--bs-gray-950:color-mix(in lab,var(--bs-black)76%,oklch(60% .02 245));--bs-gray-975:color-mix(in lab,var(--bs-black)88%,oklch(60% .02 245));--bs-pewter-025:color-mix(in lab,var(--bs-white)94%,oklch(65% .01 290));--bs-pewter-050:color-mix(in lab,var(--bs-white)90%,oklch(65% .01 290));--bs-pewter-100:color-mix(in lab,var(--bs-white)80%,oklch(65% .01 290));--bs-pewter-200:color-mix(in lab,var(--bs-white)60%,oklch(65% .01 290));--bs-pewter-300:color-mix(in lab,var(--bs-white)40%,oklch(65% .01 290));--bs-pewter-400:color-mix(in lab,var(--bs-white)20%,oklch(65% .01 290));--bs-pewter-500:oklch(65% .01 290);--bs-pewter-600:color-mix(in lab,var(--bs-black)16%,oklch(65% .01 290));--bs-pewter-700:color-mix(in lab,var(--bs-black)32%,oklch(65% .01 290));--bs-pewter-800:color-mix(in lab,var(--bs-black)48%,oklch(65% .01 290));--bs-pewter-900:color-mix(in lab,var(--bs-black)64%,oklch(65% .01 290));--bs-pewter-950:color-mix(in lab,var(--bs-black)76%,oklch(65% .01 290));--bs-pewter-975:color-mix(in lab,var(--bs-black)88%,oklch(65% .01 290))}@layer colors,theme,config,root;@layer reboot{*,:before,:after{box-sizing:border-box}:root{accent-color:var(--bs-primary-base)}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-fg-body);text-align:var(--bs-body-text-align);background-color:var(--bs-bg-body);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:#0000;margin:0}hr{margin:var(--bs-hr-margin-y,var(--bs-spacer))0;border:0;border-block-start:var(--bs-border-width)solid var(--bs-hr-border-color)}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{color:var(--bs-heading-color);margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:var(--bs-font-size-3xl)}h2,.h2{font-size:var(--bs-font-size-2xl)}h3,.h3{font-size:var(--bs-font-size-xl)}h4,.h4{font-size:var(--bs-font-size-lg)}h5,.h5{font-size:var(--bs-font-size-md)}h6,.h6{font-size:var(--bs-font-size-sm)}p{margin-top:0;margin-bottom:1rem}abbr[title]{cursor:help;text-decoration-skip-ink:none;text-decoration:underline dotted}address{font-style:normal;line-height:inherit;margin-bottom:1rem}ol,ul{padding-inline-start:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-inline-start:0;margin-bottom:.5rem}blockquote{margin:0 0 1rem}blockquote>*{margin-block:0}b,strong{font-weight:bolder}small,.small{font-size:var(--bs-small-font-size,87.5%)}mark,.mark{--bs-mark-padding:.1875em;--bs-mark-color:var(--bs-fg-body);--bs-mark-bg:light-dark(var(--bs-yellow-100),var(--bs-yellow-900));padding:var(--bs-mark-padding);color:var(--bs-mark-color);background-color:var(--bs-mark-bg)}sub,sup{font-size:var(--bs-sub-sup-font-size,.75em);vertical-align:baseline;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-theme-text,var(--bs-link-color));-webkit-text-decoration:var(--bs-link-decoration);text-decoration:var(--bs-link-decoration);text-underline-offset:.2em}a:hover{color:var(--bs-theme-text-emphasis,var(--bs-link-hover-color));-webkit-text-decoration:var(--bs-link-hover-decoration,var(--bs-link-decoration));text-decoration:var(--bs-link-hover-decoration,var(--bs-link-decoration))}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-mono);font-size:1em}pre{font-size:var(--bs-code-font-size);color:var(--bs-code-color,inherit);margin-top:0;margin-bottom:1rem;display:block;overflow:auto}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:var(--bs-code-font-size);color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{--bs-kbd-padding-y:.125rem;--bs-kbd-padding-x:.25rem;--bs-kbd-font-size:var(--bs-font-size-xs);--bs-kbd-color:var(--bs-bg-body);--bs-kbd-bg:var(--bs-fg-2);--bs-kbd-border-radius:var(--bs-border-radius-sm);padding:var(--bs-kbd-padding-y)var(--bs-kbd-padding-x);font-size:var(--bs-kbd-font-size);color:var(--bs-kbd-color);background-color:var(--bs-kbd-bg);border-radius:var(--bs-kbd-border-radius)}kbd kbd{font-size:1em;font-weight:inherit;padding:0}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{color:var(--bs-fg-3);text-align:start;padding-block:.5rem}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{border-style:none;padding:0}textarea{resize:vertical}fieldset{border:0;min-width:0;margin:0;padding:0}legend{float:inline-start;width:100%;font-size:1.5rem;line-height:inherit;margin-bottom:.5rem;padding:0}legend+*{clear:inline-start}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-text{padding:0}::-webkit-datetime-edit-millisecond-field{padding:0}::-webkit-datetime-edit-second-field{padding:0}::-webkit-datetime-edit-minute-field{padding:0}::-webkit-datetime-edit-hour-field{padding:0}::-webkit-datetime-edit-ampm-field{padding:0}::-webkit-datetime-edit-day-field{padding:0}::-webkit-datetime-edit-week-field{padding:0}::-webkit-datetime-edit-month-field{padding:0}::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button{cursor:pointer;filter:grayscale()}[type=tel],[type=url],[type=email],[type=number]{direction:ltr}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{cursor:pointer;display:list-item}progress{vertical-align:baseline}[hidden]{display:none!important}}@layer layout{.container,.container-fluid,.container-2xl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-inline:calc(var(--bs-gutter-x)*.5);margin-inline:auto}@media (width>=576px){.container-sm,.container{max-width:540px}}@media (width>=768px){.container-md,.container-sm,.container{max-width:720px}}@media (width>=1024px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (width>=1280px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1200px}}@media (width>=1536px){.container-2xl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1440px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;margin-inline:calc(-.5*var(--bs-gutter-x));margin-top:calc(-1*var(--bs-gutter-y));flex-wrap:wrap;display:flex}.row>*{width:100%;max-width:100%;padding-inline:calc(var(--bs-gutter-x)*.5);margin-top:var(--bs-gutter-y);flex-shrink:0}.col{flex:1 0 0}.row-cols-auto>*{flex:none;width:auto}.row-cols-1>*{flex:none;width:100%}.row-cols-2>*{flex:none;width:50%}.row-cols-3>*{flex:none;width:33.3333%}.row-cols-4>*{flex:none;width:25%}.row-cols-5>*{flex:none;width:20%}.row-cols-6>*{flex:none;width:16.6667%}.col-auto{flex:none;width:auto}.col-1{flex:none;width:8.33333%}.col-2{flex:none;width:16.6667%}.col-3{flex:none;width:25%}.col-4{flex:none;width:33.3333%}.col-5{flex:none;width:41.6667%}.col-6{flex:none;width:50%}.col-7{flex:none;width:58.3333%}.col-8{flex:none;width:66.6667%}.col-9{flex:none;width:75%}.col-10{flex:none;width:83.3333%}.col-11{flex:none;width:91.6667%}.col-12{flex:none;width:100%}.offset-1{margin-inline-start:8.33333%}.offset-2{margin-inline-start:16.6667%}.offset-3{margin-inline-start:25%}.offset-4{margin-inline-start:33.3333%}.offset-5{margin-inline-start:41.6667%}.offset-6{margin-inline-start:50%}.offset-7{margin-inline-start:58.3333%}.offset-8{margin-inline-start:66.6667%}.offset-9{margin-inline-start:75%}.offset-10{margin-inline-start:83.3333%}.offset-11{margin-inline-start:91.6667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:.25rem}.g-1,.gy-1{--bs-gutter-y:.25rem}.g-2,.gx-2{--bs-gutter-x:.5rem}.g-2,.gy-2{--bs-gutter-y:.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (width>=576px){.col-sm{flex:1 0 0}.row-cols-sm-auto>*{flex:none;width:auto}.row-cols-sm-1>*{flex:none;width:100%}.row-cols-sm-2>*{flex:none;width:50%}.row-cols-sm-3>*{flex:none;width:33.3333%}.row-cols-sm-4>*{flex:none;width:25%}.row-cols-sm-5>*{flex:none;width:20%}.row-cols-sm-6>*{flex:none;width:16.6667%}.col-sm-auto{flex:none;width:auto}.col-sm-1{flex:none;width:8.33333%}.col-sm-2{flex:none;width:16.6667%}.col-sm-3{flex:none;width:25%}.col-sm-4{flex:none;width:33.3333%}.col-sm-5{flex:none;width:41.6667%}.col-sm-6{flex:none;width:50%}.col-sm-7{flex:none;width:58.3333%}.col-sm-8{flex:none;width:66.6667%}.col-sm-9{flex:none;width:75%}.col-sm-10{flex:none;width:83.3333%}.col-sm-11{flex:none;width:91.6667%}.col-sm-12{flex:none;width:100%}.offset-sm-0{margin-inline-start:0}.offset-sm-1{margin-inline-start:8.33333%}.offset-sm-2{margin-inline-start:16.6667%}.offset-sm-3{margin-inline-start:25%}.offset-sm-4{margin-inline-start:33.3333%}.offset-sm-5{margin-inline-start:41.6667%}.offset-sm-6{margin-inline-start:50%}.offset-sm-7{margin-inline-start:58.3333%}.offset-sm-8{margin-inline-start:66.6667%}.offset-sm-9{margin-inline-start:75%}.offset-sm-10{margin-inline-start:83.3333%}.offset-sm-11{margin-inline-start:91.6667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (width>=768px){.col-md{flex:1 0 0}.row-cols-md-auto>*{flex:none;width:auto}.row-cols-md-1>*{flex:none;width:100%}.row-cols-md-2>*{flex:none;width:50%}.row-cols-md-3>*{flex:none;width:33.3333%}.row-cols-md-4>*{flex:none;width:25%}.row-cols-md-5>*{flex:none;width:20%}.row-cols-md-6>*{flex:none;width:16.6667%}.col-md-auto{flex:none;width:auto}.col-md-1{flex:none;width:8.33333%}.col-md-2{flex:none;width:16.6667%}.col-md-3{flex:none;width:25%}.col-md-4{flex:none;width:33.3333%}.col-md-5{flex:none;width:41.6667%}.col-md-6{flex:none;width:50%}.col-md-7{flex:none;width:58.3333%}.col-md-8{flex:none;width:66.6667%}.col-md-9{flex:none;width:75%}.col-md-10{flex:none;width:83.3333%}.col-md-11{flex:none;width:91.6667%}.col-md-12{flex:none;width:100%}.offset-md-0{margin-inline-start:0}.offset-md-1{margin-inline-start:8.33333%}.offset-md-2{margin-inline-start:16.6667%}.offset-md-3{margin-inline-start:25%}.offset-md-4{margin-inline-start:33.3333%}.offset-md-5{margin-inline-start:41.6667%}.offset-md-6{margin-inline-start:50%}.offset-md-7{margin-inline-start:58.3333%}.offset-md-8{margin-inline-start:66.6667%}.offset-md-9{margin-inline-start:75%}.offset-md-10{margin-inline-start:83.3333%}.offset-md-11{margin-inline-start:91.6667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (width>=1024px){.col-lg{flex:1 0 0}.row-cols-lg-auto>*{flex:none;width:auto}.row-cols-lg-1>*{flex:none;width:100%}.row-cols-lg-2>*{flex:none;width:50%}.row-cols-lg-3>*{flex:none;width:33.3333%}.row-cols-lg-4>*{flex:none;width:25%}.row-cols-lg-5>*{flex:none;width:20%}.row-cols-lg-6>*{flex:none;width:16.6667%}.col-lg-auto{flex:none;width:auto}.col-lg-1{flex:none;width:8.33333%}.col-lg-2{flex:none;width:16.6667%}.col-lg-3{flex:none;width:25%}.col-lg-4{flex:none;width:33.3333%}.col-lg-5{flex:none;width:41.6667%}.col-lg-6{flex:none;width:50%}.col-lg-7{flex:none;width:58.3333%}.col-lg-8{flex:none;width:66.6667%}.col-lg-9{flex:none;width:75%}.col-lg-10{flex:none;width:83.3333%}.col-lg-11{flex:none;width:91.6667%}.col-lg-12{flex:none;width:100%}.offset-lg-0{margin-inline-start:0}.offset-lg-1{margin-inline-start:8.33333%}.offset-lg-2{margin-inline-start:16.6667%}.offset-lg-3{margin-inline-start:25%}.offset-lg-4{margin-inline-start:33.3333%}.offset-lg-5{margin-inline-start:41.6667%}.offset-lg-6{margin-inline-start:50%}.offset-lg-7{margin-inline-start:58.3333%}.offset-lg-8{margin-inline-start:66.6667%}.offset-lg-9{margin-inline-start:75%}.offset-lg-10{margin-inline-start:83.3333%}.offset-lg-11{margin-inline-start:91.6667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (width>=1280px){.col-xl{flex:1 0 0}.row-cols-xl-auto>*{flex:none;width:auto}.row-cols-xl-1>*{flex:none;width:100%}.row-cols-xl-2>*{flex:none;width:50%}.row-cols-xl-3>*{flex:none;width:33.3333%}.row-cols-xl-4>*{flex:none;width:25%}.row-cols-xl-5>*{flex:none;width:20%}.row-cols-xl-6>*{flex:none;width:16.6667%}.col-xl-auto{flex:none;width:auto}.col-xl-1{flex:none;width:8.33333%}.col-xl-2{flex:none;width:16.6667%}.col-xl-3{flex:none;width:25%}.col-xl-4{flex:none;width:33.3333%}.col-xl-5{flex:none;width:41.6667%}.col-xl-6{flex:none;width:50%}.col-xl-7{flex:none;width:58.3333%}.col-xl-8{flex:none;width:66.6667%}.col-xl-9{flex:none;width:75%}.col-xl-10{flex:none;width:83.3333%}.col-xl-11{flex:none;width:91.6667%}.col-xl-12{flex:none;width:100%}.offset-xl-0{margin-inline-start:0}.offset-xl-1{margin-inline-start:8.33333%}.offset-xl-2{margin-inline-start:16.6667%}.offset-xl-3{margin-inline-start:25%}.offset-xl-4{margin-inline-start:33.3333%}.offset-xl-5{margin-inline-start:41.6667%}.offset-xl-6{margin-inline-start:50%}.offset-xl-7{margin-inline-start:58.3333%}.offset-xl-8{margin-inline-start:66.6667%}.offset-xl-9{margin-inline-start:75%}.offset-xl-10{margin-inline-start:83.3333%}.offset-xl-11{margin-inline-start:91.6667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (width>=1536px){.col-2xl{flex:1 0 0}.row-cols-2xl-auto>*{flex:none;width:auto}.row-cols-2xl-1>*{flex:none;width:100%}.row-cols-2xl-2>*{flex:none;width:50%}.row-cols-2xl-3>*{flex:none;width:33.3333%}.row-cols-2xl-4>*{flex:none;width:25%}.row-cols-2xl-5>*{flex:none;width:20%}.row-cols-2xl-6>*{flex:none;width:16.6667%}.col-2xl-auto{flex:none;width:auto}.col-2xl-1{flex:none;width:8.33333%}.col-2xl-2{flex:none;width:16.6667%}.col-2xl-3{flex:none;width:25%}.col-2xl-4{flex:none;width:33.3333%}.col-2xl-5{flex:none;width:41.6667%}.col-2xl-6{flex:none;width:50%}.col-2xl-7{flex:none;width:58.3333%}.col-2xl-8{flex:none;width:66.6667%}.col-2xl-9{flex:none;width:75%}.col-2xl-10{flex:none;width:83.3333%}.col-2xl-11{flex:none;width:91.6667%}.col-2xl-12{flex:none;width:100%}.offset-2xl-0{margin-inline-start:0}.offset-2xl-1{margin-inline-start:8.33333%}.offset-2xl-2{margin-inline-start:16.6667%}.offset-2xl-3{margin-inline-start:25%}.offset-2xl-4{margin-inline-start:33.3333%}.offset-2xl-5{margin-inline-start:41.6667%}.offset-2xl-6{margin-inline-start:50%}.offset-2xl-7{margin-inline-start:58.3333%}.offset-2xl-8{margin-inline-start:66.6667%}.offset-2xl-9{margin-inline-start:75%}.offset-2xl-10{margin-inline-start:83.3333%}.offset-2xl-11{margin-inline-start:91.6667%}.g-2xl-0,.gx-2xl-0{--bs-gutter-x:0}.g-2xl-0,.gy-2xl-0{--bs-gutter-y:0}.g-2xl-1,.gx-2xl-1{--bs-gutter-x:.25rem}.g-2xl-1,.gy-2xl-1{--bs-gutter-y:.25rem}.g-2xl-2,.gx-2xl-2{--bs-gutter-x:.5rem}.g-2xl-2,.gy-2xl-2{--bs-gutter-y:.5rem}.g-2xl-3,.gx-2xl-3{--bs-gutter-x:1rem}.g-2xl-3,.gy-2xl-3{--bs-gutter-y:1rem}.g-2xl-4,.gx-2xl-4{--bs-gutter-x:1.5rem}.g-2xl-4,.gy-2xl-4{--bs-gutter-y:1.5rem}.g-2xl-5,.gx-2xl-5{--bs-gutter-x:3rem}.g-2xl-5,.gy-2xl-5{--bs-gutter-y:3rem}}.grid{--bs-columns:12;--bs-rows:1;--bs-gap:1.5rem;grid-template-rows:repeat(var(--bs-rows),1fr);grid-template-columns:repeat(var(--bs-columns),1fr);gap:var(--bs-gap);display:grid}.g-col-1{grid-column:auto/span 1}.g-col-2{grid-column:auto/span 2}.g-col-3{grid-column:auto/span 3}.g-col-4{grid-column:auto/span 4}.g-col-5{grid-column:auto/span 5}.g-col-6{grid-column:auto/span 6}.g-col-7{grid-column:auto/span 7}.g-col-8{grid-column:auto/span 8}.g-col-9{grid-column:auto/span 9}.g-col-10{grid-column:auto/span 10}.g-col-11{grid-column:auto/span 11}.g-col-12{grid-column:auto/span 12}.g-start-1{grid-column-start:1}.g-start-2{grid-column-start:2}.g-start-3{grid-column-start:3}.g-start-4{grid-column-start:4}.g-start-5{grid-column-start:5}.g-start-6{grid-column-start:6}.g-start-7{grid-column-start:7}.g-start-8{grid-column-start:8}.g-start-9{grid-column-start:9}.g-start-10{grid-column-start:10}.g-start-11{grid-column-start:11}@media (width>=576px){.g-col-sm-1{grid-column:auto/span 1}.g-col-sm-2{grid-column:auto/span 2}.g-col-sm-3{grid-column:auto/span 3}.g-col-sm-4{grid-column:auto/span 4}.g-col-sm-5{grid-column:auto/span 5}.g-col-sm-6{grid-column:auto/span 6}.g-col-sm-7{grid-column:auto/span 7}.g-col-sm-8{grid-column:auto/span 8}.g-col-sm-9{grid-column:auto/span 9}.g-col-sm-10{grid-column:auto/span 10}.g-col-sm-11{grid-column:auto/span 11}.g-col-sm-12{grid-column:auto/span 12}.g-start-sm-1{grid-column-start:1}.g-start-sm-2{grid-column-start:2}.g-start-sm-3{grid-column-start:3}.g-start-sm-4{grid-column-start:4}.g-start-sm-5{grid-column-start:5}.g-start-sm-6{grid-column-start:6}.g-start-sm-7{grid-column-start:7}.g-start-sm-8{grid-column-start:8}.g-start-sm-9{grid-column-start:9}.g-start-sm-10{grid-column-start:10}.g-start-sm-11{grid-column-start:11}}@media (width>=768px){.g-col-md-1{grid-column:auto/span 1}.g-col-md-2{grid-column:auto/span 2}.g-col-md-3{grid-column:auto/span 3}.g-col-md-4{grid-column:auto/span 4}.g-col-md-5{grid-column:auto/span 5}.g-col-md-6{grid-column:auto/span 6}.g-col-md-7{grid-column:auto/span 7}.g-col-md-8{grid-column:auto/span 8}.g-col-md-9{grid-column:auto/span 9}.g-col-md-10{grid-column:auto/span 10}.g-col-md-11{grid-column:auto/span 11}.g-col-md-12{grid-column:auto/span 12}.g-start-md-1{grid-column-start:1}.g-start-md-2{grid-column-start:2}.g-start-md-3{grid-column-start:3}.g-start-md-4{grid-column-start:4}.g-start-md-5{grid-column-start:5}.g-start-md-6{grid-column-start:6}.g-start-md-7{grid-column-start:7}.g-start-md-8{grid-column-start:8}.g-start-md-9{grid-column-start:9}.g-start-md-10{grid-column-start:10}.g-start-md-11{grid-column-start:11}}@media (width>=1024px){.g-col-lg-1{grid-column:auto/span 1}.g-col-lg-2{grid-column:auto/span 2}.g-col-lg-3{grid-column:auto/span 3}.g-col-lg-4{grid-column:auto/span 4}.g-col-lg-5{grid-column:auto/span 5}.g-col-lg-6{grid-column:auto/span 6}.g-col-lg-7{grid-column:auto/span 7}.g-col-lg-8{grid-column:auto/span 8}.g-col-lg-9{grid-column:auto/span 9}.g-col-lg-10{grid-column:auto/span 10}.g-col-lg-11{grid-column:auto/span 11}.g-col-lg-12{grid-column:auto/span 12}.g-start-lg-1{grid-column-start:1}.g-start-lg-2{grid-column-start:2}.g-start-lg-3{grid-column-start:3}.g-start-lg-4{grid-column-start:4}.g-start-lg-5{grid-column-start:5}.g-start-lg-6{grid-column-start:6}.g-start-lg-7{grid-column-start:7}.g-start-lg-8{grid-column-start:8}.g-start-lg-9{grid-column-start:9}.g-start-lg-10{grid-column-start:10}.g-start-lg-11{grid-column-start:11}}@media (width>=1280px){.g-col-xl-1{grid-column:auto/span 1}.g-col-xl-2{grid-column:auto/span 2}.g-col-xl-3{grid-column:auto/span 3}.g-col-xl-4{grid-column:auto/span 4}.g-col-xl-5{grid-column:auto/span 5}.g-col-xl-6{grid-column:auto/span 6}.g-col-xl-7{grid-column:auto/span 7}.g-col-xl-8{grid-column:auto/span 8}.g-col-xl-9{grid-column:auto/span 9}.g-col-xl-10{grid-column:auto/span 10}.g-col-xl-11{grid-column:auto/span 11}.g-col-xl-12{grid-column:auto/span 12}.g-start-xl-1{grid-column-start:1}.g-start-xl-2{grid-column-start:2}.g-start-xl-3{grid-column-start:3}.g-start-xl-4{grid-column-start:4}.g-start-xl-5{grid-column-start:5}.g-start-xl-6{grid-column-start:6}.g-start-xl-7{grid-column-start:7}.g-start-xl-8{grid-column-start:8}.g-start-xl-9{grid-column-start:9}.g-start-xl-10{grid-column-start:10}.g-start-xl-11{grid-column-start:11}}@media (width>=1536px){.g-col-2xl-1{grid-column:auto/span 1}.g-col-2xl-2{grid-column:auto/span 2}.g-col-2xl-3{grid-column:auto/span 3}.g-col-2xl-4{grid-column:auto/span 4}.g-col-2xl-5{grid-column:auto/span 5}.g-col-2xl-6{grid-column:auto/span 6}.g-col-2xl-7{grid-column:auto/span 7}.g-col-2xl-8{grid-column:auto/span 8}.g-col-2xl-9{grid-column:auto/span 9}.g-col-2xl-10{grid-column:auto/span 10}.g-col-2xl-11{grid-column:auto/span 11}.g-col-2xl-12{grid-column:auto/span 12}.g-start-2xl-1{grid-column-start:1}.g-start-2xl-2{grid-column-start:2}.g-start-2xl-3{grid-column-start:3}.g-start-2xl-4{grid-column-start:4}.g-start-2xl-5{grid-column-start:5}.g-start-2xl-6{grid-column-start:6}.g-start-2xl-7{grid-column-start:7}.g-start-2xl-8{grid-column-start:8}.g-start-2xl-9{grid-column-start:9}.g-start-2xl-10{grid-column-start:10}.g-start-2xl-11{grid-column-start:11}}.grid-cols-subgrid{grid-template-columns:subgrid}.grid-fill{--bs-gap:1.5rem;gap:var(--bs-gap);grid-template-columns:repeat(auto-fit,minmax(0,1fr));grid-auto-flow:row;display:grid}}@layer content{.list-unstyled,.list-inline{padding-inline-start:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-inline-end:var(--bs-list-inline-padding,var(--bs-spacer)/2)}.initialism{font-size:var(--bs-initialism-font-size,var(--bs-font-size-xs));text-transform:uppercase}.blockquote{--bs-blockquote-gap:calc(var(--bs-spacer)/2);--bs-blockquote-padding-x:var(--bs-spacer);--bs-blockquote-margin-y:1rem;--bs-blockquote-font-size:var(--bs-font-size-md);--bs-blockquote-border-width:.25rem;--bs-blockquote-border-color:var(--bs-border-color);--bs-blockquote-footer-font-size:var(--bs-font-size-sm);--bs-blockquote-footer-color:var(--bs-fg-3);gap:var(--bs-blockquote-gap);margin-bottom:var(--bs-blockquote-margin-y);font-size:var(--bs-blockquote-font-size);border-inline-start:var(--bs-blockquote-border-width)solid var(--bs-blockquote-border-color);flex-direction:column;padding-inline-start:var(--bs-blockquote-padding-x);display:flex}.blockquote>*,figure.blockquote blockquote{margin-bottom:0}.blockquote-footer{font-size:var(--bs-blockquote-footer-font-size);color:var(--bs-blockquote-footer-color)}.blockquote-footer:before{content:"— "}.table{--bs-table-cell-padding-y:.5rem;--bs-table-cell-padding-x:.5rem;--bs-table-cell-vertical-align:top;--bs-table-color:var(--bs-fg-body);--bs-table-bg:var(--bs-bg-body);--bs-table-accent-bg:transparent;--bs-table-border-width:var(--bs-border-width);--bs-table-border-color:var(--bs-border-color);--bs-table-group-separator-color:currentcolor;--bs-table-striped-color:var(--bs-table-color);--bs-table-striped-bg-factor:.05;--bs-table-striped-bg:color-mix(in srgb,var(--bs-table-color)var(--bs-table-striped-bg-factor),transparent);--bs-table-active-color:var(--bs-table-color);--bs-table-active-bg-factor:.1;--bs-table-active-bg:color-mix(in srgb,var(--bs-table-color)var(--bs-table-active-bg-factor),transparent);--bs-table-hover-color:var(--bs-table-color);--bs-table-hover-bg-factor:.075;--bs-table-hover-bg:color-mix(in srgb,var(--bs-table-color)var(--bs-table-hover-bg-factor),transparent);--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;width:100%;vertical-align:var(--bs-table-cell-vertical-align);border-color:var(--bs-theme-border,var(--bs-table-border-color));margin-bottom:1rem}.table>:not(caption)>*>*{padding:var(--bs-table-cell-padding-y)var(--bs-table-cell-padding-x);color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-theme-text,var(--bs-table-color))));background-color:var(--bs-theme-bg-subtle,var(--bs-table-bg));border-block-end-width:var(--bs-table-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-theme-bg-subtle,var(--bs-table-accent-bg))))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-block-start:calc(var(--bs-table-border-width)*2)solid var(--bs-table-group-separator-color)}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{--bs-table-cell-padding-y:.25rem;--bs-table-cell-padding-x:.25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-table-border-width)0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-table-border-width)}.table-borderless>:not(caption)>*>*{border-block-end-width:0}.table-borderless>:not(:first-child){border-block-start-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*,.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-color-type:var(--bs-theme-text,var(--bs-table-striped-color));--bs-table-bg-type:color-mix(in srgb,var(--bs-theme-text,var(--bs-table-color))var(--bs-table-striped-bg-factor),transparent)}.table-active{--bs-table-color-state:var(--bs-theme-text,var(--bs-table-active-color));--bs-table-bg-state:color-mix(in srgb,var(--bs-theme-text,var(--bs-table-color))var(--bs-table-active-bg-factor),transparent)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-theme-text,var(--bs-table-hover-color));--bs-table-bg-state:color-mix(in srgb,var(--bs-theme-text,var(--bs-table-color))var(--bs-table-hover-bg-factor),transparent)}.table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}@media (width<576px){.table-responsive-sm{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (width<768px){.table-responsive-md{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (width<1024px){.table-responsive-lg{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (width<1280px){.table-responsive-xl{-webkit-overflow-scrolling:touch;overflow-x:auto}}@media (width<1536px){.table-responsive-2xl{-webkit-overflow-scrolling:touch;overflow-x:auto}}.img-fluid{max-width:100%;height:auto}.img-thumbnail{--bs-thumbnail-padding:.25rem;--bs-thumbnail-bg:var(--bs-bg-body);--bs-thumbnail-border-width:var(--bs-border-width);--bs-thumbnail-border-color:var(--bs-border-color);--bs-thumbnail-border-radius:var(--bs-border-radius);--bs-thumbnail-box-shadow:var(--bs-box-shadow-sm);padding:var(--bs-thumbnail-padding);background-color:var(--bs-thumbnail-bg);border:var(--bs-thumbnail-border-width)solid var(--bs-thumbnail-border-color);border-radius:var(--bs-thumbnail-border-radius);box-shadow:var(--bs-thumbnail-box-shadow);max-width:100%;height:auto}.figure{--bs-figure-gap:calc(var(--bs-spacer)*.5);--bs-figure-caption-font-size:var(--bs-font-size-sm);--bs-figure-caption-color:var(--bs-fg-3);gap:var(--bs-figure-gap);flex-direction:column;display:flex}.figure-caption{font-size:var(--bs-figure-caption-font-size);color:var(--bs-figure-caption-color)}.prose{--bs-content-font-size:1rem;--bs-content-gap:20px;--bs-heading-color:light-dark(var(--bs-gray-900),var(--bs-white));gap:var(--bs-content-gap);max-width:1000px;font-size:var(--bs-content-font-size);flex-direction:column;margin-inline:auto;line-height:1.5;display:flex;position:relative}@media (width>=1024px){.prose{--bs-content-font-size:var(--bs-font-size-md);--bs-content-gap:24px}}.prose :where(p,ul,ol,dl,pre,table,blockquote):not(:where(.not-prose,.not-prose *)){margin-block:0}.prose :where(ul,ol):not([class]):not(:where(.not-prose,.not-prose *)) li:not(:last-child){margin-bottom:calc(var(--bs-content-gap)/4)}.prose :where(li ul,li ol):not(:where(.not-prose,.not-prose *)){margin-top:calc(var(--bs-content-gap)/4)}.prose :where(hr):not(:where(.not-prose,.not-prose *)){margin:calc(var(--bs-content-gap)*1.5)0;border:0;border-block-start:var(--bs-border-width)solid var(--bs-hr-border-color)}.prose :where(h1,h2,h3,h4,h5,h6):not([class]):not(:where(.not-prose,.not-prose *)){margin-top:0;margin-bottom:calc(var(--bs-content-gap)/-2);font-weight:500;line-height:1.25}.prose :where(h1,h2,h3,h4,h5,h6):not([class]):not(:where(.not-prose,.not-prose *)) code{color:inherit;font-weight:600}.prose :where(h1,h2):not(:first-child):not(:where(.not-prose,.not-prose *)){margin-top:calc(var(--bs-content-gap)*.75)}.prose :where(h3,h4,h5,h6):not(:first-child):not(:where(.not-prose,.not-prose *)){margin-top:calc(var(--bs-content-gap)*.5)}.prose :where(h1):not(:where(.not-prose,.not-prose *)){font-size:2.25em;line-height:1.1}.prose :where(h2):not(:where(.not-prose,.not-prose *)){font-size:1.75em}.prose :where(h3):not(:where(.not-prose,.not-prose *)){font-size:1.5em}.prose :where(h4):not(:where(.not-prose,.not-prose *)){font-size:1.25em}.prose :where(h5):not(:where(.not-prose,.not-prose *)){font-size:1.125em}.prose :where(h6):not(:where(.not-prose,.not-prose *)){font-size:1em}.prose :where(a:not([class])):not(:where(.not-prose,.not-prose *)){color:var(--bs-link-color);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--bs-link-color)25%,transparent);text-underline-offset:4px;transition:text-decoration-color .1s ease-in-out}@media (prefers-reduced-motion:reduce){.prose :where(a:not([class])):not(:where(.not-prose,.not-prose *)){transition:none}}.prose :where(a:not([class])):not(:where(.not-prose,.not-prose *)):hover{text-decoration-color:var(--bs-link-hover-color)}.prose :where(img):not(:where(.not-prose,.not-prose *)){max-width:100%}.prose :where(blockquote):not(:where(.not-prose,.not-prose *)){border-inline-start:4px solid var(--bs-border-color);margin:0;padding-inline-start:calc(var(--bs-content-gap)/2)}.prose :where(table):not(:where(.not-prose,.not-prose *)){border-spacing:0;border-collapse:collapse;width:100%}.prose :where(table:not([class])):not(:where(.not-prose,.not-prose *)) td,.prose :where(table:not([class])):not(:where(.not-prose,.not-prose *)) th{text-align:inherit;border:1px solid var(--bs-border-color);padding:6px 12px}.prose :where(dt):not(:where(.not-prose,.not-prose *)){font-weight:500}.prose :where(video,img):not(:where(.not-prose,.not-prose *)){max-width:100%}}@layer forms{.form-label,.col-form-label{font-size:var(--bs-label-font-size,var(--bs-font-size-sm));font-style:var(--bs-label-font-style,inherit);font-weight:var(--bs-label-font-weight,inherit);color:var(--bs-label-color,var(--bs-fg-body))}.form-label{margin-bottom:var(--bs-label-margin-bottom,calc(var(--bs-spacer)/2))}.col-form-label{--bs-label-padding-y:calc(var(--bs-btn-input-padding-y) + var(--bs-border-width));padding-block:var(--bs-label-padding-y);margin-bottom:0}.col-form-label-lg{--bs-label-padding-y:calc(var(--bs-btn-input-lg-padding-y) + var(--bs-border-width));font-size:var(--bs-btn-input-lg-font-size)}.col-form-label-sm{--bs-label-padding-y:calc(var(--bs-btn-input-sm-padding-y) + var(--bs-border-width));font-size:var(--bs-btn-input-sm-font-size)}.form-text{--bs-form-text-margin-top:.25rem;--bs-form-text-font-size:var(--bs-font-size-sm);--bs-form-text-color:var(--bs-fg-3);margin-top:var(--bs-form-text-margin-top);font-size:var(--bs-form-text-font-size);font-style:var(--bs-form-text-font-style);font-weight:var(--bs-form-text-font-weight);color:var(--bs-form-text-color)}.form-control{--bs-control-min-height:var(--bs-btn-input-min-height);--bs-control-padding-y:var(--bs-btn-input-padding-y);--bs-control-padding-x:var(--bs-btn-input-padding-x);--bs-control-font-size:var(--bs-btn-input-font-size);--bs-control-line-height:var(--bs-btn-input-line-height);--bs-control-fg:var(--bs-btn-input-fg);--bs-control-bg:var(--bs-btn-input-bg);--bs-control-border-width:var(--bs-border-width);--bs-control-border-color:var(--bs-border-color);--bs-control-border-radius:var(--bs-border-radius);--bs-control-box-shadow:var(--bs-box-shadow-inset);--bs-control-action-bg:var(--bs-bg-1);--bs-control-action-hover-bg:var(--bs-bg-2);--bs-control-transition-property:border-color,box-shadow;--bs-control-transition-timing:.15s ease-in-out;--bs-control-transition:var(--bs-control-transition-property)var(--bs-control-transition-timing);--bs-control-placeholder-color:var(--bs-fg-3);--bs-control-disabled-color:var(--bs-control-fg);--bs-control-disabled-bg:var(--bs-bg-2);--bs-control-disabled-border-color:var(--bs-control-border-color);--bs-control-select-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2300000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");--bs-control-select-bg-position:right .75rem center;--bs-control-select-bg-size:16px 12px;--bs-control-select-bg-dark:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");width:100%;min-height:var(--bs-control-min-height);padding:var(--bs-control-padding-y)var(--bs-control-padding-x);font-size:var(--bs-control-font-size);line-height:var(--bs-control-line-height);color:var(--bs-control-fg);appearance:none;background-color:var(--bs-control-bg);border:var(--bs-control-border-width)solid var(--bs-control-border-color);border-radius:var(--bs-control-border-radius);box-shadow:var(--bs-control-box-shadow);transition:var(--bs-control-transition);background-clip:padding-box;display:flex}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control:focus-visible{--bs-focus-ring-offset:-1px;outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-control::placeholder{color:var(--bs-control-placeholder-color);opacity:1}.form-control:disabled{color:var(--bs-control-disabled-color);background-color:var(--bs-control-disabled-bg);border-color:var(--bs-control-disabled-border-color);opacity:1}.form-control::-webkit-datetime-edit{height:1.5rem;margin-bottom:-.125rem;padding:0;display:block}.form-control::-webkit-datetime-edit-fields-wrapper{height:1.5rem}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control::file-selector-button{min-height:var(--bs-control-min-height);padding:var(--bs-control-padding-y)var(--bs-control-padding-x);margin:calc(var(--bs-control-padding-y)*-1)calc(var(--bs-control-padding-x)*-1);color:var(--bs-control-fg);background-color:var(--bs-control-action-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-control-border-width);transition:var(--bs-control-transition);border-radius:0;margin-inline-end:var(--bs-control-padding-x)}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-control-action-hover-bg)}.form-control-plaintext{width:100%;padding:var(--bs-control-padding-y)0;line-height:var(--bs-control-line-height);color:var(--bs-control-fg);border:solid #0000;border-width:var(--bs-control-border-width)0;background-color:#0000;margin-bottom:0;display:block}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-inline:0}select.form-control{background-image:var(--bs-control-select-bg);background-repeat:no-repeat;background-position:var(--bs-control-select-bg-position);background-size:var(--bs-control-select-bg-size);padding-inline-end:calc(var(--bs-control-padding-x)*3)}select.form-control[multiple],select.form-control[size]:not([size="1"]){background-image:none;padding-inline-end:var(--bs-control-padding-x)}@media (prefers-color-scheme:dark){select.form-control{background-image:var(--bs-control-select-bg-dark)}}.form-control-sm{--bs-control-min-height:var(--bs-btn-input-sm-min-height);--bs-control-padding-y:var(--bs-btn-input-sm-padding-y);--bs-control-padding-x:var(--bs-btn-input-sm-padding-x);--bs-control-font-size:var(--bs-btn-input-sm-font-size);--bs-control-line-height:var(--bs-btn-input-sm-line-height);--bs-control-border-radius:var(--bs-btn-input-sm-border-radius)}.form-control-lg{--bs-control-min-height:var(--bs-btn-input-lg-min-height);--bs-control-padding-y:var(--bs-btn-input-lg-padding-y);--bs-control-padding-x:var(--bs-btn-input-lg-padding-x);--bs-control-font-size:var(--bs-btn-input-lg-font-size);--bs-control-line-height:var(--bs-btn-input-lg-line-height);--bs-control-border-radius:var(--bs-btn-input-lg-border-radius)}.form-control-color{width:var(--bs-control-min-height);padding:var(--bs-control-padding-y)}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border-radius:var(--bs-border-radius-sm);border:0!important}.form-control-color::-webkit-color-swatch{border-radius:var(--bs-border-radius-sm);border:0!important}.form-ghost{width:100%;font:inherit;color:inherit;appearance:none;background:0 0;border:0;padding:0;display:block}.form-ghost:focus{outline:0}.form-ghost::placeholder{color:var(--bs-fg-3);opacity:1}.form-ghost:disabled{color:var(--bs-fg-4);cursor:not-allowed}.checkgroup{gap:var(--bs-gap,.5rem);align-items:var(--bs-align-items,start);display:flex}.checkgroup .description{color:var(--bs-fg-3)}.check{--bs-check-size:1.25rem;--bs-check-margin-block:.125rem;--bs-check-bg:transparent;--bs-check-border-color:var(--bs-border-color);--bs-check-border-radius:.375rem;--bs-check-checked-bg:var(--bs-control-checked-bg);--bs-check-checked-border-color:var(--bs-control-checked-border-color);--bs-check-indeterminate-bg:var(--bs-control-checked-bg);--bs-check-indeterminate-border-color:var(--bs-control-checked-border-color);--bs-check-active-bg:var(--bs-control-active-bg);--bs-check-active-border-color:var(--bs-control-active-border-color);--bs-check-disabled-bg:var(--bs-control-disabled-bg);--bs-check-disabled-opacity:var(--bs-control-disabled-opacity);margin-block:var(--bs-check-margin-block);grid-template-columns:repeat(1,minmax(0,1fr));display:grid}.check :where(svg,input){width:var(--bs-check-size);height:var(--bs-check-size);flex-shrink:0;grid-row-start:1;grid-column-start:1}.check :where(input){appearance:none;background-color:var(--bs-theme-bg,var(--bs-check-bg));border:1px solid var(--bs-theme-bg,var(--bs-check-border-color));border-radius:.3em}.check :where(input:checked,input:indeterminate){background-color:var(--bs-theme-bg,var(--bs-check-checked-bg));border-color:var(--bs-theme-bg,var(--bs-check-checked-border-color))}.check :where(input:focus-visible){outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.check:has(input:checked) .checked,.check:has(input:indeterminate) .indeterminate{color:var(--bs-theme-contrast,var(--bs-primary-contrast));stroke:currentColor;display:block}.check:has(input:disabled){--bs-check-bg:var(--bs-check-disabled-bg)}.check:has(input:disabled)~label{color:var(--bs-fg-3);cursor:default}.check:has(input:disabled:checked){opacity:var(--bs-check-disabled-opacity)}.check :where(svg){pointer-events:none}.check :where(svg path){display:none}.check-sm{--bs-check-size:1rem}.check-lg{--bs-check-size:1.5rem;--bs-check-margin-block:0}.radiogroup{gap:var(--bs-gap,.5rem);align-items:var(--bs-align-items,start);display:flex}.radiogroup .description{color:var(--bs-fg-3)}.radio{--bs-radio-size:1.25rem;--bs-radio-margin-block:.125rem;--bs-radio-bg:transparent;--bs-radio-border-color:var(--bs-border-color);--bs-radio-checked-bg:var(--bs-control-checked-bg);--bs-radio-checked-border-color:var(--bs-control-checked-border-color);--bs-radio-disabled-bg:var(--bs-control-disabled-bg);--bs-radio-disabled-opacity:var(--bs-control-disabled-opacity);width:var(--bs-radio-size);height:var(--bs-radio-size);margin-block:var(--bs-radio-margin-block);appearance:none;background-color:var(--bs-theme-bg,var(--bs-radio-bg));border:1px solid var(--bs-theme-bg,var(--bs-radio-border-color));border-radius:50%;flex-shrink:0;position:relative}.radio:checked{color:var(--bs-theme-contrast,var(--bs-primary-contrast));background-color:var(--bs-theme-bg,var(--bs-radio-checked-bg));border-color:var(--bs-theme-bg,var(--bs-radio-checked-border-color))}.radio:checked:before{content:"";background-color:currentColor;border-radius:50%;position:absolute;inset:.25rem}.radio:disabled{--bs-radio-bg:var(--bs-radio-disabled-bg)}.radio:disabled~label{color:var(--bs-secondary-text);cursor:default}.radio:focus-visible{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.radio-sm{--bs-radio-size:1rem}.radio-lg{--bs-radio-size:1.5rem;--bs-radio-margin-block:0}.switch{--bs-switch-height:1.25rem;--bs-switch-width:calc(var(--bs-switch-height)*1.5);--bs-switch-padding:.0625rem;--bs-switch-margin-block:.125rem;--bs-switch-bg:var(--bs-bg-3);--bs-switch-border-width:var(--bs-border-width);--bs-switch-border-color:var(--bs-border-color);--bs-switch-indicator-bg:var(--bs-white);--bs-switch-checked-bg:var(--bs-control-checked-bg);--bs-switch-checked-border-color:var(--bs-switch-checked-bg);--bs-switch-checked-indicator-bg:var(--bs-white);--bs-switch-disabled-bg:var(--bs-control-disabled-bg);--bs-switch-disabled-indicator-bg:var(--bs-fg-3);width:var(--bs-switch-width);height:var(--bs-switch-height);padding:var(--bs-switch-padding);margin-block:var(--bs-switch-margin-block);background-color:var(--bs-switch-bg);border:var(--bs-switch-border-width)solid var(--bs-switch-border-color);border-radius:10rem;flex-shrink:0;justify-content:flex-start;align-items:stretch;transition:padding-inline-start .15s ease-in-out,background-color .15s ease-in-out;display:flex;position:relative;box-shadow:inset 0 1px 2px #0000000d}.switch:before{width:calc(var(--bs-switch-height) - var(--bs-switch-padding)*2 - var(--bs-switch-border-width)*2);height:calc(var(--bs-switch-height) - var(--bs-switch-padding)*2 - var(--bs-switch-border-width)*2);content:"";background-color:var(--bs-theme-contrast,var(--bs-switch-indicator-bg));border-radius:50%;flex-shrink:0;box-shadow:0 1px 2px #0000001a}.switch input{appearance:none;background-color:#0000;outline:0;position:absolute;inset:0}.switch:focus-within{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.switch:has(input:checked){background-color:var(--bs-theme-bg,var(--bs-switch-checked-bg));border-color:var(--bs-theme-bg,var(--bs-switch-checked-border-color));padding-inline-start:calc(var(--bs-switch-height)/2 + var(--bs-switch-padding))}.switch:has(input:disabled){--bs-switch-bg:var(--bs-switch-disabled-bg);--bs-switch-indicator-bg:var(--bs-switch-disabled-indicator-bg)}.switch:has(input:disabled):before{opacity:.4}.switch:has(input:disabled)~label{color:var(--bs-secondary-text);cursor:default}.switch-sm{--bs-switch-height:1rem}.switch-lg{--bs-switch-height:1.5rem;--bs-switch-margin-block:0}.form-range{--bs-range-track-width:100%;--bs-range-track-height:.5rem;--bs-range-track-cursor:pointer;--bs-range-track-bg:var(--bs-bg-3);--bs-range-track-border-radius:1rem;--bs-range-track-box-shadow:var(--bs-box-shadow-inset);--bs-range-thumb-width:1rem;--bs-range-thumb-height:var(--bs-range-thumb-width);--bs-range-thumb-bg:var(--bs-primary-base);--bs-range-thumb-border:0;--bs-range-thumb-border-radius:1rem;--bs-range-thumb-box-shadow:0 .1rem .25rem #0000001a;--bs-range-thumb-active-bg:color-mix(in oklch,var(--bs-primary-base)70%,var(--bs-bg-body));--bs-range-thumb-disabled-bg:var(--bs-fg-3);--bs-range-thumb-transition-property:background-color,border-color,box-shadow;--bs-range-thumb-transition-timing:.15s ease-in-out;--bs-range-thumb-transition:var(--bs-range-thumb-transition-property)var(--bs-range-thumb-transition-timing);width:100%;height:calc(var(--bs-range-thumb-height) + var(--bs-focus-ring-width)*2);appearance:none;background-color:#0000;padding:0}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:1px}.form-range:focus::-moz-range-thumb{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:1px}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:var(--bs-range-thumb-width);height:var(--bs-range-thumb-height);appearance:none;background-color:var(--bs-range-thumb-bg);border:var(--bs-range-thumb-border);border-radius:var(--bs-range-thumb-border-radius);box-shadow:var(--bs-range-thumb-box-shadow);-webkit-transition:var(--bs-range-thumb-transition);transition:var(--bs-range-thumb-transition)}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:var(--bs-range-thumb-active-bg)}.form-range::-webkit-slider-thumb{margin-top:calc((var(--bs-range-track-height) - var(--bs-range-thumb-height))*.5)}.form-range::-moz-range-thumb{width:var(--bs-range-thumb-width);height:var(--bs-range-thumb-height);appearance:none;background-color:var(--bs-range-thumb-bg);border:var(--bs-range-thumb-border);border-radius:var(--bs-range-thumb-border-radius);box-shadow:var(--bs-range-thumb-box-shadow);-moz-transition:var(--bs-range-thumb-transition);transition:var(--bs-range-thumb-transition)}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:var(--bs-range-thumb-active-bg)}.form-range::-webkit-slider-runnable-track{width:var(--bs-range-track-width);height:var(--bs-range-track-height);color:#0000;cursor:var(--bs-range-track-cursor);background-color:var(--bs-range-track-bg);border-radius:var(--bs-range-track-border-radius);box-shadow:var(--bs-range-track-box-shadow);border-color:#0000}.form-range::-moz-range-track{width:var(--bs-range-track-width);height:var(--bs-range-track-height);color:#0000;cursor:var(--bs-range-track-cursor);background-color:var(--bs-range-track-bg);border-radius:var(--bs-range-track-border-radius);box-shadow:var(--bs-range-track-box-shadow);border-color:#0000}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-range-thumb-disabled-bg)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-range-thumb-disabled-bg)}.form-floating{--bs-form-floating-height:calc(3.5rem + var(--bs-border-width)*2);--bs-form-floating-line-height:1.25;--bs-form-floating-padding-x:var(--bs-btn-input-padding-x);--bs-form-floating-padding-y:1rem;--bs-form-floating-input-padding-t:1.625rem;--bs-form-floating-input-padding-b:.625rem;--bs-form-floating-label-height:1.5em;--bs-form-floating-label-opacity:.65;--bs-form-floating-label-transform:scale(.85)translateY(-.5rem)translateX(.15rem);--bs-form-floating-label-disabled-color:var(--bs-fg-3);--bs-form-floating-transition-property:opacity,transform;--bs-form-floating-transition-timing:.1s ease-in-out;--bs-form-floating-transition:var(--bs-form-floating-transition-property)var(--bs-form-floating-transition-timing);position:relative}.form-floating>label{z-index:2;max-width:100%;height:100%;padding:var(--bs-form-floating-padding-y)var(--bs-form-floating-padding-x);color:color-mix(in oklch,var(--bs-fg-body)var(--bs-form-floating-label-opacity),transparent);text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-input-btn-border-width)solid transparent;transform-origin:0 0;transition:var(--bs-form-floating-transition);align-items:center;display:flex;position:absolute;inset-block-start:0;inset-inline-start:0;overflow:hidden}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{height:var(--bs-form-floating-height);min-height:var(--bs-form-floating-height);padding:var(--bs-form-floating-padding-y)var(--bs-form-floating-padding-x);line-height:var(--bs-form-floating-line-height)}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:#0000}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),:-webkit-any(.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill){padding-top:var(--bs-form-floating-input-padding-t);padding-bottom:var(--bs-form-floating-input-padding-b)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),:is(.form-floating>.form-control:autofill,.form-floating>.form-control-plaintext:autofill){padding-top:var(--bs-form-floating-input-padding-t);padding-bottom:var(--bs-form-floating-input-padding-b)}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label{transform:var(--bs-form-floating-label-transform)}.form-floating>.form-control:-webkit-autofill~label{transform:var(--bs-form-floating-label-transform)}.form-floating>textarea:focus~label:after,.form-floating>textarea:not(:placeholder-shown)~label:after{inset:var(--bs-form-floating-padding-y)calc(var(--bs-form-floating-padding-x)*.5);z-index:-1;height:var(--bs-form-floating-label-height);content:"";background-color:var(--bs-control-bg);border-radius:var(--bs-btn-input-border-radius);position:absolute}.form-floating>textarea:disabled~label:after{background-color:var(--bs-control-disabled-bg)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-control-border-width)0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:var(--bs-form-floating-label-disabled-color)}.strength{--bs-strength-height:.375rem;--bs-strength-gap:.25rem;--bs-strength-margin-top:.25rem;--bs-strength-border-radius:var(--bs-border-radius-pill);--bs-strength-bg:var(--bs-bg-2);--bs-strength-color:var(--bs-bg-2);--bs-strength-weak-color:var(--bs-danger-bg);--bs-strength-fair-color:var(--bs-warning-bg);--bs-strength-good-color:var(--bs-info-bg);--bs-strength-strong-color:var(--bs-success-bg);gap:var(--bs-strength-gap);width:100%;margin-top:var(--bs-strength-margin-top);display:flex}.strength-segment{height:var(--bs-strength-height);background-color:var(--bs-strength-bg);border-radius:var(--bs-strength-border-radius);flex:1;transition:background-color .2s ease-in-out,width .3s ease-in-out}@media (prefers-reduced-motion:reduce){.strength-segment{transition:none}}.strength-segment.active{background-color:var(--bs-strength-color)}.strength[data-bs-strength=weak]{--bs-strength-color:var(--bs-strength-weak-color)}.strength[data-bs-strength=fair]{--bs-strength-color:var(--bs-strength-fair-color)}.strength[data-bs-strength=good]{--bs-strength-color:var(--bs-strength-good-color)}.strength[data-bs-strength=strong]{--bs-strength-color:var(--bs-strength-strong-color)}.strength-text{margin-top:var(--bs-strength-margin-top);font-size:var(--bs-font-size-xs);color:var(--bs-strength-color,var(--bs-fg-3));transition:color .2s ease-in-out;display:block}@media (prefers-reduced-motion:reduce){.strength-text{transition:none}}.strength-text:empty{display:none}.strength-bar{--bs-strength-height:.375rem;--bs-strength-gap:.25rem;--bs-strength-margin-top:.25rem;--bs-strength-border-radius:var(--bs-border-radius-pill);--bs-strength-bg:var(--bs-bg-2);--bs-strength-color:transparent;--bs-strength-weak-color:var(--bs-danger-bg);--bs-strength-fair-color:var(--bs-warning-bg);--bs-strength-good-color:var(--bs-info-bg);--bs-strength-strong-color:var(--bs-success-bg);--bs-strength-width:0%;width:100%;height:var(--bs-strength-height);margin-top:var(--bs-strength-margin-top);background-color:var(--bs-strength-bg);border-radius:var(--bs-strength-border-radius);overflow:hidden}.strength-bar:after{width:var(--bs-strength-width);content:"";background-color:var(--bs-strength-color);border-radius:var(--bs-strength-border-radius);height:100%;transition:background-color .2s ease-in-out,width .3s ease-in-out;display:block}@media (prefers-reduced-motion:reduce){.strength-bar:after{transition:none}}.strength-bar[data-bs-strength=weak]{--bs-strength-color:var(--bs-strength-weak-color);--bs-strength-width:25%}.strength-bar[data-bs-strength=fair]{--bs-strength-color:var(--bs-strength-fair-color);--bs-strength-width:50%}.strength-bar[data-bs-strength=good]{--bs-strength-color:var(--bs-strength-good-color);--bs-strength-width:75%}.strength-bar[data-bs-strength=strong]{--bs-strength-color:var(--bs-strength-strong-color);--bs-strength-width:100%}.form-adorn{--bs-form-adorn-gap:.375rem;--bs-form-adorn-icon-size:1rem;--bs-form-adorn-icon-color:var(--bs-fg-2);gap:var(--bs-form-adorn-gap);align-items:center}.form-adorn:focus-visible{outline:0}.form-adorn:focus-within{--bs-focus-ring-offset:-1px;border-color:var(--bs-focus-ring-color);outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-adorn>.form-ghost{flex:1;min-width:0}.form-adorn.form-adorn-end>.form-ghost{order:-1}.form-adorn-icon{color:var(--bs-form-adorn-icon-color);pointer-events:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.form-adorn-icon>svg{width:var(--bs-form-adorn-icon-size);height:var(--bs-form-adorn-icon-size)}.form-adorn-text{color:var(--bs-form-adorn-icon-color);pointer-events:none;user-select:none;flex-shrink:0}.chip-input{--bs-chip-input-padding-y:.75rem;--bs-chip-input-padding-x:.75rem;--bs-chip-input-gap:.375rem;--bs-chip-input-ghost-min-width:5rem;--bs-control-fg:var(--bs-btn-input-fg);--bs-control-bg:var(--bs-btn-input-bg);--bs-control-border-width:var(--bs-border-width);--bs-control-border-color:var(--bs-border-color);--bs-control-border-radius:var(--bs-border-radius);gap:var(--bs-chip-input-gap);padding:var(--bs-chip-input-padding-y)var(--bs-chip-input-padding-x);color:var(--bs-control-fg);background-color:var(--bs-control-bg);border:var(--bs-control-border-width)solid var(--bs-control-border-color);border-radius:var(--bs-control-border-radius);flex-wrap:wrap;align-items:center;display:flex}.chip-input:focus-within{--bs-focus-ring-offset:-1px;border-color:var(--bs-focus-ring-color);outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.chip-input>.form-ghost{min-width:var(--bs-chip-input-ghost-min-width);flex:1 1 0;min-height:1.75rem}.chip-input.disabled,.chip-input:has(.form-ghost:disabled){background-color:var(--bs-bg-2);opacity:1}.chip-input.disabled>.chip,.chip-input:has(.form-ghost:disabled)>.chip{opacity:var(--bs-control-disabled-opacity)}.chip-input.disabled>.chip .chip-dismiss,.chip-input:has(.form-ghost:disabled)>.chip .chip-dismiss{pointer-events:none}.chip-input.disabled>.form-ghost,.chip-input:has(.form-ghost:disabled)>.form-ghost{cursor:not-allowed}}@layer components{.input-group{--bs-input-group-addon-padding-y:var(--bs-btn-input-padding-y);--bs-input-group-addon-padding-x:var(--bs-btn-input-padding-x);--bs-input-group-addon-font-size:var(--bs-btn-input-font-size);--bs-input-group-addon-line-height:var(--bs-btn-input-line-height);--bs-input-group-addon-color:var(--bs-fg-body);--bs-input-group-addon-bg:var(--bs-bg-2);--bs-input-group-addon-border-color:var(--bs-border-color);flex-wrap:wrap;align-items:stretch;width:100%;display:flex;position:relative}.input-group>.form-control,.input-group>.form-floating{flex:auto;width:1%;min-width:0;position:relative}.input-group>.form-control:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group>.input-group-btn{z-index:2;position:relative}.input-group>.input-group-btn:focus{z-index:5}.input-group-text{padding:var(--bs-input-group-addon-padding-y)var(--bs-input-group-addon-padding-x);font-size:var(--bs-input-group-addon-font-size);line-height:var(--bs-input-group-addon-line-height);color:var(--bs-input-group-addon-color);text-align:center;white-space:nowrap;background-color:var(--bs-input-group-addon-bg);border:var(--bs-border-width)solid var(--bs-input-group-addon-border-color);border-radius:var(--bs-btn-input-border-radius);align-items:center;display:flex}.input-group-sm>.form-control,.input-group-sm>.input-group-text,.input-group-sm>.btn{min-height:var(--bs-btn-input-sm-min-height);padding:var(--bs-btn-input-sm-padding-y)var(--bs-btn-input-sm-padding-x);font-size:var(--bs-btn-input-sm-font-size);border-radius:var(--bs-btn-input-sm-border-radius)}.input-group-lg>.form-control,.input-group-lg>.input-group-text,.input-group-lg>.btn{min-height:var(--bs-btn-input-lg-min-height);padding:var(--bs-btn-input-lg-padding-y)var(--bs-btn-input-lg-padding-x);font-size:var(--bs-btn-input-lg-font-size);border-radius:var(--bs-btn-input-lg-border-radius)}.input-group:not(.has-validation)>:not(:last-child):not(.menu-toggle-split):not(.menu):not(.form-floating),.input-group:not(.has-validation)>.menu-toggle-split:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.menu-toggle-split):not(.menu):not(.form-floating),.input-group.has-validation>.menu-toggle-split:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-start-end-radius:0;border-end-end-radius:0}.input-group>:not(:first-child):not(.menu){border-start-start-radius:0;border-end-start-radius:0;margin-inline-start:calc(-1*var(--bs-border-width))}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-start-start-radius:0;border-end-start-radius:0}.otp{--bs-otp-size:var(--bs-btn-input-lg-min-height);--bs-otp-font-size:var(--bs-btn-input-font-size);--bs-otp-gap:.5rem;gap:var(--bs-otp-gap);display:inline-flex}.otp .form-control{width:var(--bs-otp-size);min-height:var(--bs-otp-size);font-size:var(--bs-otp-font-size);text-align:center;border-radius:var(--bs-otp-border-radius,var(--bs-btn-input-border-radius));padding:0;font-weight:500;line-height:1}.otp .form-control::-webkit-outer-spin-button{appearance:none;margin:0}.otp .form-control::-webkit-inner-spin-button{appearance:none;margin:0}.otp .form-control[type=number]{appearance:textfield}.otp .form-control:focus,.otp .form-control:focus-visible{z-index:1}.otp.is-valid .form-control,.was-validated .otp:valid .form-control{border-color:var(--bs-form-valid-border-color)}.otp.is-valid .form-control:focus,.was-validated .otp:valid .form-control:focus{--bs-focus-ring-color:rgba(var(--bs-success-rgb),.25);border-color:var(--bs-form-valid-border-color)}.otp.is-invalid .form-control,.was-validated .otp:invalid .form-control{border-color:var(--bs-form-invalid-border-color)}.otp.is-invalid .form-control:focus,.was-validated .otp:invalid .form-control:focus{--bs-focus-ring-color:rgba(var(--bs-danger-rgb),.25);border-color:var(--bs-form-invalid-border-color)}.otp.input-group{gap:0;width:auto}.otp.input-group .form-control{flex:none}.otp-separator{padding-inline:var(--bs-otp-gap);font-size:var(--bs-otp-font-size);color:var(--bs-fg-4);user-select:none;align-items:center;display:flex}.otp-sm{--bs-otp-size:var(--bs-btn-input-sm-min-height);--bs-otp-font-size:var(--bs-btn-input-sm-font-size);--bs-otp-border-radius:var(--bs-btn-input-sm-border-radius)}.otp-lg{--bs-otp-size:var(--bs-btn-input-lg-min-height);--bs-otp-font-size:var(--bs-btn-input-lg-font-size);--bs-otp-border-radius:var(--bs-btn-input-lg-border-radius)}.combobox-toggle{width:100%;text-align:start;cursor:pointer;justify-content:space-between;align-items:center;gap:.5rem;padding-inline-end:var(--bs-control-padding-x);display:inline-flex}.combobox-toggle.show{background-color:var(--bs-bg-1)}.combobox-toggle:disabled,.combobox-toggle.disabled{cursor:not-allowed;opacity:.65}.combobox-value{text-overflow:ellipsis;white-space:nowrap;flex:1;align-items:center;gap:.5rem;display:flex;overflow:hidden}.combobox-placeholder{color:color-mix(in oklch,currentcolor 65%,transparent)}.combobox-caret{flex-shrink:0;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.combobox-caret{transition:none}}.show>.combobox-caret{transform:rotate(180deg)}.combobox-toggle+.menu{--bs-menu-max-height:300px;--bs-menu-overflow-y:auto}.combobox-search{z-index:1;padding:var(--bs-menu-padding-x,.25rem);background-color:var(--bs-menu-bg,var(--bs-bg-body));position:sticky;top:0}.combobox-search-input{width:100%}.combobox-no-results{font-size:var(--bs-font-size-sm);color:var(--bs-fg-3);text-align:center;padding:1rem}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:.75rem;--bs-tooltip-padding-y:.375rem;--bs-tooltip-font-size:var(--bs-font-size-sm);--bs-tooltip-color:var(--bs-bg-body);--bs-tooltip-bg:var(--bs-fg-body);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:.95;--bs-tooltip-arrow-width:.8rem;--bs-tooltip-arrow-height:.4rem;z-index:var(--bs-tooltip-zindex);font-family:var(--bs-body-font-family);font-style:normal;font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);text-align:start;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0;text-decoration:none;display:block}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height);display:block}.tooltip .tooltip-arrow:before{content:"";border-style:solid;border-color:#0000;position:absolute}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow{bottom:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow:before,.bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow:before{border-width:var(--bs-tooltip-arrow-height)calc(var(--bs-tooltip-arrow-width)*.5)0;border-block-start-color:var(--bs-tooltip-bg);top:-1px}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow:before,.bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow:before{border-width:calc(var(--bs-tooltip-arrow-width)*.5)var(--bs-tooltip-arrow-height)calc(var(--bs-tooltip-arrow-width)*.5)0;border-inline-end-color:var(--bs-tooltip-bg);right:-1px}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow:before,.bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow:before{border-width:0 calc(var(--bs-tooltip-arrow-width)*.5)var(--bs-tooltip-arrow-height);border-block-end-color:var(--bs-tooltip-bg);bottom:-1px}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow:before,.bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow:before{border-width:calc(var(--bs-tooltip-arrow-width)*.5)0 calc(var(--bs-tooltip-arrow-width)*.5)var(--bs-tooltip-arrow-height);border-inline-start-color:var(--bs-tooltip-bg);left:-1px}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y)var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.valid-feedback{width:100%;font-size:var(--bs-font-size-xs);color:var(--bs-form-valid-color);margin-top:.5rem;display:none}.valid-tooltip{z-index:5;max-width:100%;padding:var(--bs-tooltip-padding-y)var(--bs-tooltip-padding-x);font-size:var(--bs-tooltip-font-size);color:var(--bs-success-contrast);background-color:var(--bs-success-bg);border-radius:var(--bs-tooltip-border-radius);margin-top:.1rem;display:none;position:absolute;top:100%}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:var(--bs-success-border);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300a748' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right var(--bs-control-padding-x)center;background-size:1rem;padding-inline-end:calc(var(--bs-control-padding-x)*3.5)}.was-validated .form-control:valid:focus-visible,.form-control.is-valid:focus-visible{outline:var(--bs-focus-ring-width)solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset);border-color:var(--bs-success-border)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{background-position:right var(--bs-control-padding-x)top var(--bs-control-padding-x)}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:var(--bs-success-border)}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:var(--bs-form-valid-color)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-inline-start:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{width:100%;font-size:var(--bs-font-size-xs);color:var(--bs-form-invalid-color);margin-top:.5rem;display:none}.invalid-tooltip{z-index:5;max-width:100%;padding:var(--bs-tooltip-padding-y)var(--bs-tooltip-padding-x);font-size:var(--bs-tooltip-font-size);color:var(--bs-danger-contrast);background-color:var(--bs-danger-bg);border-radius:var(--bs-tooltip-border-radius);margin-top:.1rem;display:none;position:absolute;top:100%}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:var(--bs-danger-border);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dd0d37'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dd0d37' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right var(--bs-control-padding-x)center;background-size:1rem;padding-inline-end:calc(var(--bs-control-padding-x)*3.5)}.was-validated .form-control:invalid:focus-visible,.form-control.is-invalid:focus-visible{outline:var(--bs-focus-ring-width)solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset);border-color:var(--bs-danger-border)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{background-position:right var(--bs-control-padding-x)top var(--bs-control-padding-x)}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:var(--bs-danger-border)}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:var(--bs-form-invalid-color)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-inline-start:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn,.btn-link,.btn-icon,.btn-solid,.btn-outline,.btn-subtle,.btn-text{--bs-btn-min-height:var(--bs-btn-input-min-height);--bs-btn-padding-x:var(--bs-btn-input-padding-x);--bs-btn-padding-y:var(--bs-btn-input-padding-y);--bs-btn-font-size:var(--bs-btn-input-font-size);--bs-btn-font-weight:var(--bs-btn-input-font-weight);--bs-btn-line-height:var(--bs-btn-input-line-height);--bs-btn-color:var(--bs-fg-body);--bs-btn-white-space:nowrap;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-disabled-opacity:.65;--bs-btn-transition-timing:.15s ease-in-out;--bs-btn-transition-property:color,background-color,border-color,box-shadow;--bs-btn-transition:var(--bs-btn-transition-property)var(--bs-btn-transition-timing);gap:var(--bs-btn-gap,.25rem);min-height:var(--bs-btn-min-height);padding:var(--bs-btn-padding-y)var(--bs-btn-padding-x);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);white-space:var(--bs-btn-white-space);vertical-align:middle;cursor:pointer;user-select:none;background-color:var(--bs-btn-bg,var(--bs-bg-2));border:var(--bs-btn-border-width)solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);transition:var(--bs-btn-transition);justify-content:center;align-items:center;text-decoration:none;display:inline-flex}@media (prefers-reduced-motion:reduce){.btn,.btn-link,.btn-icon,.btn-solid,.btn-outline,.btn-subtle,.btn-text{transition:none}}.btn:hover,.btn-link:hover,.btn-icon:hover,.btn-solid:hover,.btn-outline:hover,.btn-subtle:hover,.btn-text:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg,var(--bs-bg-3));border-color:var(--bs-btn-hover-border-color)}.btn:focus-visible,.btn-link:focus-visible,.btn-icon:focus-visible,.btn-solid:focus-visible,.btn-outline:focus-visible,.btn-subtle:focus-visible,.btn-text:focus-visible{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:1px}.btn.active,.btn.show,.btn-link.active,.btn-link.show,.btn-icon.active,.btn-icon.show,.btn-solid.active,.btn-solid.show,.btn-outline.active,.btn-outline.show,.btn-subtle.active,.btn-subtle.show,.btn-text.active,.btn-text.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg,var(--bs-bg-3));border-color:var(--bs-btn-active-border-color)}.btn.active:focus-visible,.btn.show:focus-visible,.btn-link.active:focus-visible,.btn-link.show:focus-visible,.btn-icon.active:focus-visible,.btn-icon.show:focus-visible,.btn-solid.active:focus-visible,.btn-solid.show:focus-visible,.btn-outline.active:focus-visible,.btn-outline.show:focus-visible,.btn-subtle.active:focus-visible,.btn-subtle.show:focus-visible,.btn-text.active:focus-visible,.btn-text.show:focus-visible{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.btn:disabled,.btn.disabled,fieldset:disabled .btn,.btn-link:disabled,.btn-link.disabled,fieldset:disabled .btn-link,.btn-icon:disabled,.btn-icon.disabled,fieldset:disabled .btn-icon,.btn-solid:disabled,.btn-solid.disabled,fieldset:disabled .btn-solid,.btn-outline:disabled,.btn-outline.disabled,fieldset:disabled .btn-outline,.btn-subtle:disabled,.btn-subtle.disabled,fieldset:disabled .btn-subtle,.btn-text:disabled,.btn-text.disabled,fieldset:disabled .btn-text{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg,var(--bs-bg-1));border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-solid{--bs-btn-bg:var(--bs-theme-bg);--bs-btn-color:var(--bs-theme-contrast);--bs-btn-border-color:var(--bs-theme-bg);--bs-btn-active-bg:oklch(from var(--bs-theme-bg)calc(l*.9)calc(c*1.15)h);--bs-btn-active-border-color:oklch(from var(--bs-theme-bg)calc(l*.9)calc(c*1.15)h);--bs-btn-active-color:oklch(from var(--bs-theme-contrast)calc(l*.9)calc(c*1.15)h);--bs-btn-disabled-bg:var(--bs-theme-bg);--bs-btn-disabled-color:var(--bs-theme-contrast);--bs-btn-disabled-border-color:var(--bs-theme-bg)}.btn-solid:hover{--bs-btn-hover-bg:oklch(from var(--bs-theme-bg)calc(l*.95)calc(c*1.1)h);--bs-btn-hover-border-color:oklch(from var(--bs-theme-bg)calc(l*.95)calc(c*1.1)h);--bs-btn-hover-color:oklch(from var(--bs-theme-contrast)calc(l*.95)calc(c*1.1)h)}.btn-solid:focus-visible{outline-color:var(--bs-theme-focus-ring)}.btn-solid:active,.btn-solid.active,.btn-solid.btn-check:has(input:checked){--bs-btn-active-bg:oklch(from var(--bs-theme-bg)calc(l*.9)calc(c*1.15)h);--bs-btn-active-border-color:oklch(from var(--bs-theme-bg)calc(l*.9)calc(c*1.15)h);--bs-btn-active-color:oklch(from var(--bs-theme-contrast)calc(l*.9)calc(c*1.15)h)}.btn-solid:disabled,.btn-solid.disabled,.btn-solid.btn-check:has(input:disabled){--bs-btn-disabled-bg:var(--bs-theme-bg);--bs-btn-disabled-color:var(--bs-theme-contrast);--bs-btn-disabled-border-color:var(--bs-theme-bg)}.btn-outline{--bs-btn-bg:transparent;--bs-btn-color:var(--bs-theme-text);--bs-btn-border-color:var(--bs-theme-border);--bs-btn-active-bg:oklch(from var(--bs-theme-bg)calc(l*.9)calc(c*1.15)h);--bs-btn-active-color:oklch(from var(--bs-theme-contrast)calc(l*.9)calc(c*1.15)h);--bs-btn-active-border-color:oklch(from var(--bs-theme-bg)calc(l*.9)calc(c*1.15)h);--bs-btn-disabled-bg:transparent;--bs-btn-disabled-color:var(--bs-theme-text);--bs-btn-disabled-border-color:var(--bs-theme-border)}.btn-outline:hover{--bs-btn-hover-bg:oklch(from var(--bs-theme-bg)calc(l*.95)calc(c*1.1)h);--bs-btn-hover-color:oklch(from var(--bs-theme-contrast)calc(l*.95)calc(c*1.1)h);--bs-btn-hover-border-color:oklch(from var(--bs-theme-bg)calc(l*.95)calc(c*1.1)h)}.btn-outline:focus-visible{outline-color:var(--bs-theme-focus-ring)}.btn-outline:active,.btn-outline.active,.btn-outline.btn-check:has(input:checked){--bs-btn-active-bg:oklch(from var(--bs-theme-bg)calc(l*.9)calc(c*1.15)h);--bs-btn-active-color:oklch(from var(--bs-theme-contrast)calc(l*.9)calc(c*1.15)h);--bs-btn-active-border-color:oklch(from var(--bs-theme-bg)calc(l*.9)calc(c*1.15)h)}.btn-outline:disabled,.btn-outline.disabled,.btn-outline.btn-check:has(input:disabled){--bs-btn-disabled-bg:transparent;--bs-btn-disabled-color:var(--bs-theme-text);--bs-btn-disabled-border-color:var(--bs-theme-border)}.btn-subtle{--bs-btn-bg:var(--bs-theme-bg-subtle);--bs-btn-color:var(--bs-theme-text);--bs-btn-border-color:transparent;--bs-btn-active-bg:var(--bs-theme-bg-subtle);--bs-btn-active-color:oklch(from var(--bs-theme-text-emphasis)calc(l*.9)calc(c*1.15)h);--bs-btn-disabled-bg:var(--bs-theme-bg-subtle);--bs-btn-disabled-color:var(--bs-theme-text);--bs-btn-disabled-border-color:transparent}.btn-subtle:hover{--bs-btn-hover-bg:color-mix(in oklch,var(--bs-theme-bg-muted)50%,var(--bs-theme-bg-subtle));--bs-btn-hover-color:oklch(from var(--bs-theme-text-emphasis)calc(l*.95)calc(c*1.1)h)}.btn-subtle:focus-visible{outline-color:var(--bs-theme-focus-ring)}.btn-subtle:active,.btn-subtle.active,.btn-subtle.btn-check:has(input:checked){--bs-btn-active-bg:var(--bs-theme-bg-subtle);--bs-btn-active-color:oklch(from var(--bs-theme-text-emphasis)calc(l*.9)calc(c*1.15)h)}.btn-subtle:disabled,.btn-subtle.disabled,.btn-subtle.btn-check:has(input:disabled){--bs-btn-disabled-bg:var(--bs-theme-bg-subtle);--bs-btn-disabled-color:var(--bs-theme-text);--bs-btn-disabled-border-color:transparent}.btn-text{--bs-btn-color:var(--bs-theme-text);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-active-color:oklch(from var(--bs-theme-text)calc(l*.9)calc(c*1.15)h);--bs-btn-active-bg:var(--bs-theme-bg-subtle);--bs-btn-disabled-color:var(--bs-theme-text);--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:transparent}.btn-text:hover{--bs-btn-hover-color:oklch(from var(--bs-theme-text)calc(l*.95)calc(c*1.1)h);--bs-btn-hover-bg:var(--bs-theme-bg-subtle)}.btn-text:focus-visible{outline-color:var(--bs-theme-focus-ring)}.btn-text:active,.btn-text.active,.btn-text.btn-check:has(input:checked){--bs-btn-active-color:oklch(from var(--bs-theme-text)calc(l*.9)calc(c*1.15)h);--bs-btn-active-bg:var(--bs-theme-bg-subtle)}.btn-text:disabled,.btn-text.disabled,.btn-text.btn-check:has(input:disabled){--bs-btn-disabled-color:var(--bs-theme-text);--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:transparent}.btn-link{--bs-btn-font-weight:var(--bs-font-weight-normal);--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-bg:transparent;--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-bg:transparent;--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:var(--bs-fg-3);--bs-btn-disabled-border-color:transparent;color:var(--bs-theme-text,var(--bs-btn-color));-webkit-text-decoration:var(--bs-link-decoration);text-decoration:var(--bs-link-decoration)}.btn-link:focus-visible{color:var(--bs-theme-text,var(--bs-btn-color))}.btn-link:hover{color:var(--bs-theme-text-emphasis,var(--bs-btn-hover-color))}.btn-xs,.btn-group-xs>[class*=btn-]{--bs-btn-min-height:var(--bs-btn-input-xs-min-height);--bs-btn-padding-y:var(--bs-btn-input-xs-padding-y);--bs-btn-padding-x:var(--bs-btn-input-xs-padding-x);--bs-btn-font-size:var(--bs-btn-input-xs-font-size);--bs-btn-line-height:var(--bs-btn-input-xs-line-height);--bs-btn-border-radius:var(--bs-btn-input-xs-border-radius)}.btn-sm,.btn-group-sm>[class*=btn-]{--bs-btn-min-height:var(--bs-btn-input-sm-min-height);--bs-btn-padding-y:var(--bs-btn-input-sm-padding-y);--bs-btn-padding-x:var(--bs-btn-input-sm-padding-x);--bs-btn-font-size:var(--bs-btn-input-sm-font-size);--bs-btn-line-height:var(--bs-btn-input-sm-line-height);--bs-btn-border-radius:var(--bs-btn-input-sm-border-radius)}.btn-lg,.btn-group-lg>[class*=btn-]{--bs-btn-min-height:var(--bs-btn-input-lg-min-height);--bs-btn-padding-y:var(--bs-btn-input-lg-padding-y);--bs-btn-padding-x:var(--bs-btn-input-lg-padding-x);--bs-btn-font-size:var(--bs-btn-input-lg-font-size);--bs-btn-line-height:var(--bs-btn-input-lg-line-height);--bs-btn-border-radius:var(--bs-btn-input-lg-border-radius)}.btn-icon{aspect-ratio:1;justify-content:center;align-items:center;padding:0}.btn-check>input{clip:rect(0,0,0,0);pointer-events:none;position:absolute}.btn-check:has(input:checked){color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg,var(--bs-bg-3));border-color:var(--bs-btn-active-border-color);box-shadow:var(--bs-btn-active-shadow)}.btn-check:has(input:focus-visible){outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:1px}.btn-check:has(input:disabled){color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg,var(--bs-bg-1));border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity);box-shadow:none}.btn-styled{--bs-btn-gradient-start:#ffffff20;--bs-btn-gradient-end:#00000013;--bs-btn-border-mix-color:#000;--bs-btn-border-mix-amount:10%;--bs-btn-border-hover-mix-amount:12.5%;--bs-btn-border-active-mix-amount:20%;--bs-btn-shadow:0 1px 2px #00000026,inset 0 1px 0 #ffffff1a;--bs-btn-active-shadow:inset 0 2px 4px #00000026;background-image:linear-gradient(to bottom,var(--bs-btn-gradient-start),var(--bs-btn-gradient-end));border-color:color-mix(in lab,var(--bs-theme-bg),var(--bs-btn-border-mix-color)var(--bs-btn-border-mix-amount));box-shadow:var(--bs-btn-shadow)}.btn-styled:hover{background-image:linear-gradient(to bottom,var(--bs-btn-gradient-start),var(--bs-btn-gradient-end));border-color:color-mix(in lab,var(--bs-theme-bg),var(--bs-btn-border-mix-color)var(--bs-btn-border-hover-mix-amount))}.btn-styled:active,.btn-styled.active{border-color:color-mix(in lab,var(--bs-theme-bg),var(--bs-btn-border-mix-color)var(--bs-btn-border-active-mix-amount));box-shadow:var(--bs-btn-active-shadow);background-image:none}.btn-styled:disabled,.btn-styled.disabled{box-shadow:none;background-image:none}.btn-group,.btn-group-vertical{vertical-align:middle;display:inline-flex;position:relative}.btn-group>[class*=btn-],.btn-group-vertical>[class*=btn-]{flex:auto;position:relative}.btn-group>[class*=btn-]:hover,.btn-group-vertical>[class*=btn-]:hover{z-index:1}.btn-group>.btn-check:has(input:checked),.btn-group>[class*=btn-]:active,.btn-group>[class*=btn-].active,.btn-group-vertical>.btn-check:has(input:checked),.btn-group-vertical>[class*=btn-]:active,.btn-group-vertical>[class*=btn-].active{z-index:2}.btn-group>.btn-check:has(input:focus),.btn-group>[class*=btn-]:focus,.btn-group-vertical>.btn-check:has(input:focus),.btn-group-vertical>[class*=btn-]:focus{z-index:3}.btn-toolbar{flex-wrap:wrap;justify-content:flex-start;gap:.5rem;display:flex}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-btn-border-radius)}.btn-group>[class*=btn-]:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-inline-start:calc(-1*var(--bs-btn-border-width))}.btn-group>[class*=btn-]:not(:last-child):not(.menu-toggle-split),.btn-group>.btn-group:not(:last-child)>[class*=btn-]{border-start-end-radius:0;border-end-end-radius:0}.btn-group>[class*=btn-]:not(:first-child),.btn-group>.btn-group:not(:first-child)>[class*=btn-]{border-start-start-radius:0;border-end-start-radius:0}.menu-toggle-split{padding-inline:calc(var(--bs-btn-padding-x)*.75)}.btn-group-vertical{flex-direction:column;justify-content:center;align-items:flex-start}.btn-group-vertical>[class*=btn-],.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>[class*=btn-]:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(-1*var(--bs-btn-border-width))}.btn-group-vertical>[class*=btn-]:not(:last-child):not(.menu-toggle-split),.btn-group-vertical>.btn-group:not(:last-child)>[class*=btn-]{border-end-end-radius:0;border-end-start-radius:0}.btn-group-vertical>[class*=btn-]:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>[class*=btn-]{border-start-start-radius:0;border-start-end-radius:0}.btn-close{--bs-btn-close-size:1.25rem;--bs-btn-close-color:var(--bs-fg-body);--bs-btn-close-opacity:.5;--bs-btn-close-hover-opacity:.75;--bs-btn-close-focus-opacity:.85;--bs-btn-close-disabled-opacity:.25;box-sizing:content-box;width:var(--bs-btn-close-size);height:var(--bs-btn-close-size);color:var(--bs-btn-close-color);border-radius:var(--bs-border-radius-sm);opacity:var(--bs-btn-close-opacity);background:0 0;border:0;padding:0}.btn-close>svg{fill:currentColor;width:100%;height:100%;display:block}.btn-close:hover{color:var(--bs-btn-close-color);opacity:var(--bs-btn-close-hover-opacity);text-decoration:none}.btn-close:focus-visible{opacity:var(--bs-btn-close-focus-opacity);outline:var(--bs-focus-ring)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.accordion{--bs-accordion-padding-x:1.25rem;--bs-accordion-padding-y:1rem;--bs-accordion-color:var(--bs-fg-body);--bs-accordion-bg:var(--bs-bg-body);--bs-accordion-transition-property:color,background-color,border-radius;--bs-accordion-transition-timing:.15s ease-in-out;--bs-accordion-transition:var(--bs-accordion-transition-property)var(--bs-accordion-timing);--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-accordion-radius,var(--bs-border-radius-lg));--bs-accordion-btn-color:var(--bs-fg-2);--bs-accordion-btn-bg:var(--bs-bg-body);--bs-accordion-btn-icon-width:1rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform .2s ease-in-out;--bs-accordion-active-color:var(--bs-fg);--bs-accordion-active-bg:var(--bs-bg-2)}.accordion-header{width:100%;padding:var(--bs-accordion-btn-padding-y,var(--bs-accordion-padding-y))var(--bs-accordion-btn-padding-x,var(--bs-accordion-padding-x));font-size:var(--bs-accordion-font-size,var(--bs-font-size-base));color:var(--bs-accordion-btn-color);text-align:start;cursor:pointer;background-color:var(--bs-accordion-btn-bg);transition:var(--bs-accordion-transition);align-items:center;list-style:none;display:flex}@media (prefers-reduced-motion:reduce){.accordion-header{transition:none}}.accordion-header .accordion-icon{width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);color:currentColor;transition:var(--bs-accordion-btn-icon-transition);flex-shrink:0;margin-inline-start:auto}@media (prefers-reduced-motion:reduce){.accordion-header .accordion-icon{transition:none}}.accordion-header:hover{z-index:2}.accordion-header:focus-visible{z-index:3;outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);outline-offset:-1px;position:relative}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width)solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-start-start-radius:var(--bs-accordion-border-radius);border-start-end-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type>.accordion-header{border-start-start-radius:calc(var(--bs-accordion-border-radius) - var(--bs-accordion-border-width));border-start-end-radius:calc(var(--bs-accordion-border-radius) - var(--bs-accordion-border-width))}.accordion-item:not(:first-of-type){border-block-start:0}.accordion-item:last-of-type{border-end-end-radius:var(--bs-accordion-border-radius);border-end-start-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type>.accordion-header{border-end-end-radius:calc(var(--bs-accordion-border-radius) - var(--bs-accordion-border-width));border-end-start-radius:calc(var(--bs-accordion-border-radius) - var(--bs-accordion-border-width))}.accordion-item:last-of-type>.accordion-body{border-end-end-radius:var(--bs-accordion-border-radius);border-end-start-radius:var(--bs-accordion-border-radius)}.accordion-item[open]{border-color:var(--bs-theme-border,var(--bs-accordion-border-color))}.accordion-item[open]>.accordion-header{color:var(--bs-theme-text,var(--bs-accordion-active-color));background-color:var(--bs-theme-bg-subtle,var(--bs-accordion-active-bg));box-shadow:inset 0 calc(-1*var(--bs-accordion-border-width))0 var(--bs-theme-border,var(--bs-accordion-border-color))}.accordion-item[open]>.accordion-header .accordion-icon{transform:var(--bs-accordion-btn-icon-transform)}.accordion-item[open]:last-of-type>.accordion-header{border-end-end-radius:0;border-end-start-radius:0}.accordion-body{padding:var(--bs-accordion-body-padding-y,var(--bs-accordion-padding-y))var(--bs-accordion-body-padding-x,var(--bs-accordion-padding-x))}.accordion-flush>.accordion-item{border-inline:0;border-radius:0}.accordion-flush>.accordion-item:first-child{border-block-start:0}.accordion-flush>.accordion-item:last-child{border-block-end:0}.accordion-flush>.accordion-item>.accordion-header,.accordion-flush>.accordion-item>.accordion-body{border-radius:0}.alert{--bs-alert-gap:.75rem;--bs-alert-bg:var(--bs-theme-bg-subtle,var(--bs-bg-1));--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-color:var(--bs-theme-text,inherit);--bs-alert-border-color:var(--bs-theme-border,var(--bs-border-color));--bs-alert-border:var(--bs-border-width)solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);--bs-alert-link-color:inherit;--bs-hr-border-color:var(--bs-theme-border,var(--bs-border-color));gap:var(--bs-alert-gap);padding:var(--bs-alert-padding-y)var(--bs-alert-padding-x);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius);align-items:start;display:flex}.alert-heading{color:inherit}.alert-link{font-weight:var(--bs-font-weight-semibold);color:var(--bs-alert-link-color)}.avatar{--bs-avatar-size:2.5rem;--bs-avatar-border-radius:50%;--bs-avatar-border-width:2px;--bs-avatar-border-color:var(--bs-bg-body);--bs-avatar-bg:var(--bs-bg-2);--bs-avatar-color:var(--bs-fg-body);--bs-avatar-status-size:.75rem;--bs-avatar-status-border-width:2px;--bs-avatar-status-border-color:var(--bs-bg-body);--bs-avatar-stack-spacing:-.3;--bs-avatar-stack-transition:transform .2s ease-in-out;width:var(--bs-avatar-size);height:var(--bs-avatar-size);font-size:calc(var(--bs-avatar-size)*.4);font-weight:var(--bs-avatar-font-weight,var(--bs-font-weight-medium));color:var(--bs-theme-contrast,var(--bs-avatar-color));text-transform:uppercase;vertical-align:middle;background-color:var(--bs-theme-bg,var(--bs-avatar-bg));border-radius:var(--bs-avatar-border-radius);justify-content:center;align-items:center;line-height:1;display:inline-flex;position:relative}.avatar-subtle{color:var(--bs-theme-text,var(--bs-avatar-color));background-color:var(--bs-theme-bg-subtle,var(--bs-avatar-bg))}.avatar-img{-o-object-fit:cover;object-fit:cover;border-radius:inherit;width:100%;height:100%}.avatar-status{right:calc(var(--bs-avatar-status-border-width)*-1);bottom:calc(var(--bs-avatar-status-border-width)*-1);width:var(--bs-avatar-status-size);height:var(--bs-avatar-status-size);background-color:var(--bs-gray-400);border:var(--bs-avatar-status-border-width)solid var(--bs-avatar-status-border-color);border-radius:50%;position:absolute}.avatar-status.status-online{background-color:var(--bs-green-500)}.avatar-status.status-offline{background-color:var(--bs-gray-400);border-radius:20%}.avatar-status.status-busy{background-color:var(--bs-red-500);border-radius:20%}.avatar-status.status-away{background-color:var(--bs-yellow-500)}.avatar-stack{flex-direction:row-reverse;display:inline-flex}.avatar-stack .avatar{margin-left:calc(var(--bs-avatar-size)*var(--bs-avatar-stack-spacing));border:var(--bs-avatar-border-width)solid var(--bs-avatar-border-color);transition:var(--bs-avatar-stack-transition);mask-image:none}@media (prefers-reduced-motion:reduce){.avatar-stack .avatar{transition:none}}.avatar-stack .avatar:last-child{margin-left:0}.avatar-stack .avatar:hover{z-index:1;transform:translateY(-2px)}.avatar-xs,.avatar-stack-xs{--bs-avatar-size:1.5rem;--bs-avatar-status-size:.625rem}.avatar-sm,.avatar-stack-sm{--bs-avatar-size:2rem}.avatar-lg,.avatar-stack-lg{--bs-avatar-size:3rem;--bs-avatar-status-size:1rem}.avatar-xl,.avatar-stack-xl{--bs-avatar-size:4rem;--bs-avatar-status-size:1.25rem}.badge{--bs-badge-padding-x:.625em;--bs-badge-padding-y:.25em;--bs-badge-font-size:clamp(12px,.75em,.75em);--bs-badge-font-weight:var(--bs-font-weight-semibold);--bs-badge-color:inherit;--bs-badge-bg:var(--bs-bg-2);--bs-badge-border-width:var(--bs-border-width);--bs-badge-border-color:transparent;--bs-badge-border-radius:var(--bs-border-radius-lg);min-height:1.375rem;padding:var(--bs-badge-padding-y)var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);color:var(--bs-theme-contrast,var(--bs-badge-color));text-align:center;white-space:nowrap;vertical-align:baseline;background-color:var(--bs-theme-bg,var(--bs-badge-bg));border:var(--bs-badge-border-width)solid var(--bs-badge-border-color);border-radius:var(--bs-badge-border-radius);justify-content:center;align-items:center;line-height:1;display:inline-flex}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-subtle{--bs-badge-color:var(--bs-theme-text);--bs-badge-bg:var(--bs-theme-bg-subtle);--bs-badge-border-color:transparent;color:var(--bs-badge-color);background-color:var(--bs-badge-bg);border-color:var(--bs-badge-border-color)}.badge-outline{--bs-badge-color:var(--bs-theme-text);--bs-badge-bg:transparent;--bs-badge-border-color:var(--bs-theme-border);color:var(--bs-badge-color);background-color:var(--bs-badge-bg);border-color:var(--bs-badge-border-color)}.breadcrumb{--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-font-size:inherit;--bs-breadcrumb-bg:transparent;--bs-breadcrumb-border-radius:var(--bs-border-radius);--bs-breadcrumb-divider-color:var(--bs-fg-4);--bs-breadcrumb-link-padding-x:.75rem;--bs-breadcrumb-link-padding-y:.25rem;--bs-breadcrumb-link-color:var(--bs-fg-3);--bs-breadcrumb-link-hover-color:var(--bs-fg-2);--bs-breadcrumb-link-hover-bg:var(--bs-bg-1);--bs-breadcrumb-link-active-color:var(--bs-fg-1);--bs-breadcrumb-link-border-radius:var(--bs-border-radius-lg);padding:var(--bs-breadcrumb-padding-y,0)var(--bs-breadcrumb-padding-x,0);font-size:var(--bs-breadcrumb-font-size);background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius);flex-wrap:wrap;align-items:center;list-style:none;display:flex}.breadcrumb-item{display:flex}.breadcrumb-divider{margin-inline:calc(var(--bs-breadcrumb-link-padding-x)/4);color:var(--bs-breadcrumb-divider-color)}.breadcrumb-link{min-height:2.25rem;padding:var(--bs-breadcrumb-link-padding-y)var(--bs-breadcrumb-link-padding-x);color:var(--bs-breadcrumb-link-color);border-radius:var(--bs-breadcrumb-link-border-radius);justify-content:center;align-items:center;text-decoration:none;transition:text-decoration-color .1s ease-in-out;display:flex;position:relative}@media (prefers-reduced-motion:reduce){.breadcrumb-link{transition:none}}.breadcrumb-link:hover{z-index:2;color:var(--bs-breadcrumb-link-hover-color);background-color:var(--bs-breadcrumb-link-hover-bg)}.breadcrumb-link.active{color:var(--bs-breadcrumb-link-active-color)}.chip{--bs-chip-height:1.75rem;--bs-chip-padding-x:.625rem;--bs-chip-gap:.3125rem;--bs-chip-border-radius:var(--bs-border-radius-pill);--bs-chip-img-size:1.25rem;--bs-chip-icon-size:1rem;--bs-chip-dismiss-size:1rem;--bs-chip-dismiss-opacity:.65;--bs-chip-dismiss-hover-opacity:1;--bs-chip-color:var(--bs-theme-text,var(--bs-fg-body));--bs-chip-bg:var(--bs-theme-bg-subtle,var(--bs-bg-2));--bs-chip-border-color:transparent;--bs-chip-selected-color:var(--bs-theme-contrast,var(--bs-primary-contrast));--bs-chip-selected-bg:var(--bs-theme-bg,var(--bs-primary-bg));--bs-chip-selected-border-color:var(--bs-theme-bg,var(--bs-primary-bg));gap:var(--bs-chip-gap);height:var(--bs-chip-height);padding-inline:var(--bs-chip-padding-x);font-size:var(--bs-chip-font-size,var(--bs-font-size-sm));font-weight:var(--bs-chip-font-weight,var(--bs-font-weight-base));line-height:var(--bs-chip-line-height,1.25rem);color:var(--bs-chip-color);white-space:nowrap;vertical-align:middle;cursor:pointer;background-color:var(--bs-chip-bg);border:var(--bs-border-width)solid var(--bs-chip-border-color);border-radius:var(--bs-chip-border-radius);align-items:center;text-decoration:none;display:inline-flex}.chip:hover{--bs-chip-bg:var(--bs-theme-bg-muted,var(--bs-bg-3))}.chip:focus-visible{outline:0}.chip.active{--bs-chip-color:var(--bs-chip-selected-color);--bs-chip-bg:var(--bs-chip-selected-bg);--bs-chip-border-color:var(--bs-chip-selected-border-color)}.chip.active:hover{--bs-chip-bg:var(--bs-chip-selected-bg);opacity:.9}.chip.disabled,.chip:disabled{pointer-events:none;opacity:.65}.chip-img{width:var(--bs-chip-img-size);height:var(--bs-chip-img-size);border-radius:50%}.chip-img:first-child{margin-inline-start:-.375rem}.chip-icon{flex-shrink:0;justify-content:center;align-items:center;margin-inline-start:calc(var(--bs-chip-gap)*-.25);display:flex}.chip-icon>svg{width:var(--bs-chip-icon-size);height:var(--bs-chip-icon-size);display:block}.chip-icon>img{width:var(--bs-chip-icon-size);height:var(--bs-chip-icon-size);-o-object-fit:cover;object-fit:cover;border-radius:50%}.chip-dismiss{width:var(--bs-chip-min-height);height:var(--bs-chip-min-height);color:inherit;cursor:pointer;opacity:var(--bs-chip-dismiss-opacity);background:0 0;border:0;flex-shrink:0;justify-content:center;align-items:center;margin-inline-end:calc(var(--bs-chip-padding-x)*-.25);padding:0;display:flex}.chip-dismiss:hover{opacity:var(--bs-chip-dismiss-hover-opacity)}.chip-dismiss:focus-visible{opacity:1;outline:0;outline:var(--bs-focus-ring)}.chip-dismiss>svg{width:var(--bs-chip-dismiss-size);height:var(--bs-chip-dismiss-size);display:block}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-subtitle-color:inherit;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius-lg);--bs-card-box-shadow:none;--bs-card-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-card-cap-padding-y:.75rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:var(--bs-bg-1);--bs-card-cap-color:inherit;--bs-card-height:auto;--bs-card-color:inherit;--bs-card-bg:var(--bs-bg-body);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:.75rem;--bs-card-body-gap:.5rem;min-width:0;height:var(--bs-card-height);color:var(--bs-fg-body);word-wrap:break-word;background-color:var(--bs-card-bg);box-shadow:var(--bs-card-box-shadow);flex-direction:column;display:flex;position:relative}.card>hr{margin-inline:0}.card-body{gap:var(--bs-card-body-gap);padding:var(--bs-card-spacer-y)var(--bs-card-spacer-x);color:var(--bs-card-color);border:solid var(--bs-theme-bg,var(--bs-card-border-color));border-width:0 var(--bs-card-border-width);flex-direction:column;flex:auto;align-items:flex-start;display:flex}.card-body>*{margin-block:0}.card-body,.card-list{border:solid var(--bs-theme-bg,var(--bs-card-border-color));border-width:0 var(--bs-card-border-width)}.card-body:first-child,.card-list:first-child{border-top-width:var(--bs-card-border-width);border-start-start-radius:var(--bs-card-border-radius);border-start-end-radius:var(--bs-card-border-radius)}.card-body:last-child,.card-list:last-child{border-bottom-width:var(--bs-card-border-width);border-end-end-radius:var(--bs-card-border-radius);border-end-start-radius:var(--bs-card-border-radius)}.card-body:not(:first-child):not(:last-child),.card-list:not(:first-child):not(:last-child){border-block-end-width:var(--bs-card-border-width)}.card-title,.card-subtitle,.card-text{align-self:stretch}.card-subtitle{margin-top:calc(var(--bs-card-body-gap)*-.5)}.card-header{padding:var(--bs-card-cap-padding-y)var(--bs-card-cap-padding-x);color:var(--bs-theme-contrast,var(--bs-card-cap-color));background-color:var(--bs-theme-bg,var(--bs-card-cap-bg));border:var(--bs-card-border-width)solid var(--bs-theme-bg,var(--bs-card-border-color));margin-bottom:0}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius)var(--bs-card-inner-border-radius)0 0}.card-footer{padding:var(--bs-card-cap-padding-y)var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-theme-bg,var(--bs-card-cap-bg));border:var(--bs-card-border-width)solid var(--bs-theme-bg,var(--bs-card-border-color))}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius)var(--bs-card-inner-border-radius)}.card-subtle{border-color:var(--bs-theme-border,var(--bs-card-border-color))}.card-subtle .card-header,.card-subtle .card-footer{color:var(--bs-theme-text-emphasis,currentcolor);background-color:var(--bs-theme-bg-subtle,var(--bs-card-cap-bg));border-color:var(--bs-theme-border,var(--bs-card-border-color))}.card-subtle .card-body,.card-subtle .card-list{border-color:var(--bs-theme-border,var(--bs-card-border-color))}.nav.card-header-tabs{margin-inline:calc(-.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));border-block-end:0}.nav.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-block-end-color:var(--bs-card-bg)}.card-img-overlay{padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius);position:absolute;inset:0}.card-img,.card-img-top,.card-img-bottom{outline:var(--bs-card-border-width)solid var(--bs-card-border-color);outline-offset:calc(var(--bs-card-border-width)*-1);width:100%}.card-img,.card-img-top{border-start-start-radius:var(--bs-card-inner-border-radius);border-start-end-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-end-end-radius:var(--bs-card-inner-border-radius);border-end-start-radius:var(--bs-card-inner-border-radius)}.card-row{flex-direction:row}.card-row .card-body,.card-row .card-list{border-width:var(--bs-card-border-width)0;border-radius:0}.card-row .card-body:first-child,.card-row .card-list:first-child{border-inline-start-width:var(--bs-card-border-width);border-start-start-radius:var(--bs-card-inner-border-radius);border-end-start-radius:var(--bs-card-inner-border-radius)}.card-row .card-body:last-child,.card-row .card-list:last-child{border-inline-end-width:var(--bs-card-border-width);border-start-end-radius:var(--bs-card-inner-border-radius);border-end-end-radius:var(--bs-card-inner-border-radius)}.card-row .card-body:not(:first-child):not(:last-child),.card-row .card-list:not(:first-child):not(:last-child){border-inline-end-width:var(--bs-card-border-width)}.card-img-start{border-start-start-radius:var(--bs-card-inner-border-radius);border-end-start-radius:var(--bs-card-inner-border-radius)}.card-img-end{border-start-end-radius:var(--bs-card-inner-border-radius);border-end-end-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (width>=576px){.card-group{flex-flow:wrap;display:flex}.card-group>.card{flex:1 0 0;margin-bottom:0}.card-group>.card+.card{border-inline-start:0;margin-inline-start:0}.card-group>.card:not(:last-child){border-start-end-radius:0;border-end-end-radius:0}.card-group>.card:not(:last-child)>.card-img-top,.card-group>.card:not(:last-child)>.card-header{border-start-end-radius:0}.card-group>.card:not(:last-child)>.card-img-bottom,.card-group>.card:not(:last-child)>.card-footer{border-end-end-radius:0}.card-group>.card:not(:first-child){border-start-start-radius:0;border-end-start-radius:0}.card-group>.card:not(:first-child)>.card-img-top,.card-group>.card:not(:first-child)>.card-header{border-start-start-radius:0}.card-group>.card:not(:first-child)>.card-img-bottom,.card-group>.card:not(:first-child)>.card-footer{border-end-start-radius:0}}.carousel{--bs-carousel-control-color:#fff;--bs-carousel-control-width:15%;--bs-carousel-control-opacity:.5;--bs-carousel-control-hover-opacity:.9;--bs-carousel-control-transition:opacity .15s ease;--bs-carousel-control-icon-filter:none;--bs-carousel-indicator-width:30px;--bs-carousel-indicator-height:3px;--bs-carousel-indicator-hit-area-height:10px;--bs-carousel-indicator-spacer:3px;--bs-carousel-indicator-opacity:.5;--bs-carousel-indicator-active-bg:var(--bs-white);--bs-carousel-indicator-active-opacity:1;--bs-carousel-indicator-transition:opacity .6s ease;--bs-carousel-caption-width:70%;--bs-carousel-caption-color:var(--bs-white);--bs-carousel-caption-padding-y:1.25rem;--bs-carousel-caption-spacer:1.25rem;--bs-carousel-control-icon-width:2rem;--bs-carousel-control-prev-icon-bg:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>");--bs-carousel-control-next-icon-bg:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>");--bs-carousel-transition-duration:.6s;--bs-carousel-transition:transform .6s ease-in-out;position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{width:100%;display:flow-root;position:relative;overflow:hidden}.carousel-item{float:inline-start;backface-visibility:hidden;width:100%;transition:var(--bs-carousel-transition);margin-inline-end:-100%;display:none;position:relative}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translate(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s var(--bs-carousel-transition-duration)}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{z-index:1;width:var(--bs-carousel-control-width);color:var(--bs-carousel-control-color);text-align:center;filter:var(--bs-carousel-control-icon-filter);opacity:var(--bs-carousel-control-opacity);transition:var(--bs-carousel-control-transition);background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:flex;position:absolute;inset-block:0}@media (prefers-reduced-motion:reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:var(--bs-carousel-control-color);opacity:var(--bs-carousel-control-hover-opacity);outline:0;text-decoration:none}.carousel-control-prev{inset-inline-start:0}.carousel-control-next{inset-inline-end:0}.carousel-control-prev-icon,.carousel-control-next-icon{width:var(--bs-carousel-control-icon-width);height:var(--bs-carousel-control-icon-width);background-position:50%;background-repeat:no-repeat;background-size:100% 100%;display:inline-block}.carousel-control-prev-icon{background-image:var(--bs-carousel-control-prev-icon-bg)}[dir=rtl] .carousel-control-prev-icon,.carousel-control-next-icon{background-image:var(--bs-carousel-control-next-icon-bg)}[dir=rtl] .carousel-control-next-icon{background-image:var(--bs-carousel-control-prev-icon-bg)}.carousel-indicators{z-index:2;margin-inline:var(--bs-carousel-control-width);justify-content:center;margin-bottom:1rem;padding:0;display:flex;position:absolute;inset:auto 0 0}.carousel-indicators [data-bs-target]{box-sizing:content-box;width:var(--bs-carousel-indicator-width);height:var(--bs-carousel-indicator-height);margin-inline:var(--bs-carousel-indicator-spacer);text-indent:-999px;cursor:pointer;background-color:var(--bs-carousel-indicator-active-bg);border:0;border-block:var(--bs-carousel-indicator-hit-area-height)solid transparent;opacity:var(--bs-carousel-indicator-opacity);transition:var(--bs-carousel-indicator-transition);background-clip:padding-box;flex:0 auto;padding:0}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:var(--bs-carousel-indicator-active-opacity)}.carousel-caption{right:calc((100% - var(--bs-carousel-caption-width))*.5);bottom:var(--bs-carousel-caption-spacer);left:calc((100% - var(--bs-carousel-caption-width))*.5);padding-top:var(--bs-carousel-caption-padding-y);padding-bottom:var(--bs-carousel-caption-padding-y);color:var(--bs-carousel-caption-color);text-align:center;position:absolute}.carousel-dark{--bs-carousel-indicator-active-bg:#000;--bs-carousel-caption-color:#000;--bs-carousel-control-icon-filter:invert(1)grayscale(100)}@media (prefers-color-scheme:dark){:root{--bs-carousel-indicator-active-bg:#000;--bs-carousel-caption-color:#000;--bs-carousel-control-icon-filter:invert(1)grayscale(100)}}[data-vc=calendar]{--bs-datepicker-padding:1rem;--bs-datepicker-bg:var(--bs-bg-body);--bs-datepicker-color:var(--bs-fg-body);--bs-datepicker-border-color:var(--bs-border-color-translucent);--bs-datepicker-border-width:var(--bs-border-width);--bs-datepicker-border-radius:var(--bs-border-radius-lg);--bs-datepicker-box-shadow:var(--bs-box-shadow);--bs-datepicker-font-size:var(--bs-font-size-sm);--bs-datepicker-min-width:280px;--bs-datepicker-zindex:1000;--bs-datepicker-header-font-weight:600;--bs-datepicker-weekday-color:var(--bs-fg-3);--bs-datepicker-day-hover-bg:var(--bs-bg-1);--bs-datepicker-day-selected-bg:var(--bs-primary-bg);--bs-datepicker-day-selected-color:var(--bs-primary-contrast);--bs-datepicker-day-today-bg:var(--bs-bg-2);--bs-datepicker-day-today-color:var(--bs-fg-1);--bs-datepicker-day-disabled-color:var(--bs-fg-4);z-index:var(--bs-datepicker-zindex);box-sizing:border-box;min-width:var(--bs-datepicker-min-width);padding:var(--bs-datepicker-padding);font-family:var(--bs-font-sans-serif);font-size:var(--bs-datepicker-font-size);color:var(--bs-datepicker-color);color-scheme:light dark;background-color:var(--bs-datepicker-bg);border:var(--bs-datepicker-border-width)solid var(--bs-datepicker-border-color);border-radius:var(--bs-datepicker-border-radius);box-shadow:var(--bs-datepicker-box-shadow);opacity:1;flex-direction:column;display:flex;position:absolute}[data-vc=calendar][data-bs-theme=light]{color-scheme:light}[data-vc=calendar][data-bs-theme=dark]{color-scheme:dark}[data-vc=calendar] button:focus-visible{z-index:1;outline:var(--bs-focus-ring);position:relative}[data-vc-calendar-hidden]{pointer-events:none;opacity:0}[data-vc=calendar]:not([data-vc-input]){width:fit-content;box-shadow:none;border:0;padding:0;position:relative}[data-vc-position=bottom]{margin-block-start:.25rem}[data-vc-position=top]{margin-block-end:-.25rem}[data-vc-arrow]{width:2rem;height:2rem;color:var(--bs-datepicker-color);pointer-events:auto;cursor:pointer;border-radius:var(--bs-border-radius);background-color:#0000;border:0;display:block;position:relative}[data-vc-arrow]:before{content:"";background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%236b7280' d='M12 16c-.3 0-.5-.1-.7-.3l-6-6c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l5.3 5.3 5.3-5.3c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-6 6c-.2.2-.4.3-.7.3'/></svg>");background-position:50%;background-repeat:no-repeat;position:absolute;inset:.25rem}[data-vc-arrow]:hover{background-color:var(--bs-datepicker-day-hover-bg)}[data-vc-arrow=prev]:before{transform:rotate(90deg)}[data-vc-arrow=next]:before{transform:rotate(-90deg)}[data-vc=controls]{z-index:20;pointer-events:none;justify-content:space-between;align-items:center;padding-top:1rem;padding-left:1rem;padding-right:1rem;display:flex;position:absolute;top:0;left:0;right:0}[data-vc=grid]{flex-wrap:wrap;flex-grow:1;gap:1.75rem;display:flex}[data-vc=column]{flex-direction:column;flex-grow:1;min-width:240px;display:flex}[data-vc=header]{align-items:center;margin-bottom:.75rem;display:flex;position:relative}[data-vc-header=content]{white-space:pre-wrap;flex-grow:1;justify-content:center;align-items:center;display:inline-flex}[data-vc=month],[data-vc=year]{font-size:1rem;font-weight:var(--bs-datepicker-header-font-weight);color:var(--bs-datepicker-color);border-radius:var(--bs-border-radius);background-color:#0000;border:0;margin-inline:-.125rem;padding:.25rem .5rem}[data-vc=month]:disabled,[data-vc=year]:disabled{color:var(--bs-datepicker-day-disabled-color);pointer-events:none}[data-vc=month]:hover:not(:disabled),[data-vc=year]:hover:not(:disabled){background-color:var(--bs-datepicker-day-hover-bg)}[data-vc=content]{flex-direction:column;flex-grow:1;display:flex}[data-vc=months],[data-vc=years]{grid-template-columns:repeat(var(--bs-vc-columns,4),minmax(0,1fr));-moz-column-gap:.25rem;flex-grow:1;align-items:center;gap:1rem .25rem;display:grid}[data-vc=years]{--bs-vc-columns:5}[data-vc-months-month],[data-vc-years-year]{height:2.5rem;color:var(--bs-datepicker-weekday-color);text-align:center;word-break:break-all;cursor:pointer;border-radius:var(--bs-border-radius);background-color:#0000;border:0;justify-content:center;align-items:center;padding:.25rem;font-size:.75rem;font-weight:600;line-height:1rem;display:flex}[data-vc-months-month]:disabled,[data-vc-years-year]:disabled{color:var(--bs-datepicker-day-disabled-color);pointer-events:none}[data-vc-months-month]:hover:not(:disabled),[data-vc-years-year]:hover:not(:disabled){background-color:var(--bs-datepicker-day-hover-bg)}[data-vc-months-month][data-vc-months-month-selected],[data-vc-months-month][data-vc-years-year-selected],[data-vc-years-year][data-vc-months-month-selected],[data-vc-years-year][data-vc-years-year-selected],[data-vc-months-month][data-vc-months-month-selected]:hover,[data-vc-months-month][data-vc-years-year-selected]:hover,[data-vc-years-year][data-vc-months-month-selected]:hover,[data-vc-years-year][data-vc-years-year-selected]:hover{color:var(--bs-datepicker-day-selected-color);background-color:var(--bs-datepicker-day-selected-bg)}[data-vc=week]{grid-template-columns:repeat(7,1fr);justify-items:center;margin-bottom:.5rem;display:grid}[data-vc-week-day]{width:100%;min-width:1.875rem;color:var(--bs-datepicker-weekday-color);background-color:#0000;border:0;justify-content:center;align-items:center;margin:0;padding:0;font-size:.75rem;font-weight:600;line-height:1rem;display:flex}button[data-vc-week-day]{cursor:pointer}[data-vc=dates]{pointer-events:none}[data-vc-dates=row]{grid-template-columns:repeat(7,1fr);place-items:center;width:100%;display:grid}[data-vc-date]{pointer-events:auto;justify-content:center;align-items:center;width:100%;padding-top:.125rem;padding-bottom:.125rem;display:flex;position:relative}[data-vc-date]:not(:has([data-vc-date-btn])),[data-vc-date][data-vc-date-disabled],[data-vc-date][data-vc-date-disabled] [data-vc-date-btn]{pointer-events:none}[data-vc-date-btn]{width:100%;min-width:1.875rem;height:100%;min-height:1.875rem;color:var(--bs-datepicker-color);cursor:pointer;border-radius:var(--bs-border-radius);background-color:#0000;border:0;justify-content:center;align-items:center;padding:0;font-size:.75rem;font-weight:400;line-height:1rem;display:flex}[data-vc-date-btn]:hover{background-color:var(--bs-datepicker-day-hover-bg)}[data-vc-date-today] [data-vc-date-btn]{color:var(--bs-datepicker-day-today-color);background-color:var(--bs-datepicker-day-today-bg);font-weight:600}[data-vc-date-month=next] [data-vc-date-btn],[data-vc-date-month=prev] [data-vc-date-btn]{opacity:.5}[data-vc-date-disabled] [data-vc-date-btn]{color:var(--bs-datepicker-day-disabled-color)}[data-vc-date-hover] [data-vc-date-btn]{background-color:var(--bs-datepicker-day-hover-bg);border-radius:0}[data-vc-date-hover=first] [data-vc-date-btn]{border-start-start-radius:var(--bs-border-radius);border-end-start-radius:var(--bs-border-radius)}[data-vc-date-hover=last] [data-vc-date-btn]{border-start-end-radius:var(--bs-border-radius);border-end-end-radius:var(--bs-border-radius)}[data-vc-date-hover=first-and-last] [data-vc-date-btn]{border-radius:var(--bs-border-radius)}[data-vc-date-selected=middle] [data-vc-date-btn]{opacity:.8;border-radius:0}[data-vc-date-selected] [data-vc-date-btn]{color:var(--bs-datepicker-day-selected-color);background-color:var(--bs-datepicker-day-selected-bg)}[data-vc-date-selected=first] [data-vc-date-btn]{border-top-left-radius:var(--bs-border-radius);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--bs-border-radius)}[data-vc-date-selected=last] [data-vc-date-btn]{border-top-left-radius:0;border-top-right-radius:var(--bs-border-radius);border-bottom-right-radius:var(--bs-border-radius);border-bottom-left-radius:0}[data-vc-date-selected=first-and-last] [data-vc-date-btn]{border-radius:var(--bs-border-radius)}.dialog-open{scrollbar-gutter:stable;overflow:hidden}.dialog{--bs-dialog-padding:1rem;--bs-dialog-width:500px;--bs-dialog-margin:1.75rem;--bs-dialog-color:var(--bs-fg-body);--bs-dialog-bg:var(--bs-bg-body);--bs-dialog-border-color:var(--bs-border-color-translucent);--bs-dialog-border-width:var(--bs-border-width);--bs-dialog-border-radius:var(--bs-border-radius-lg);--bs-dialog-box-shadow:var(--bs-box-shadow-lg);--bs-dialog-backdrop-bg:#00000080;--bs-dialog-backdrop-blur:8px;--bs-dialog-header-padding:1rem;--bs-dialog-header-border-color:var(--bs-border-color);--bs-dialog-header-border-width:var(--bs-border-width);--bs-dialog-footer-padding:1rem;--bs-dialog-footer-border-color:var(--bs-border-color);--bs-dialog-footer-border-width:var(--bs-border-width);--bs-dialog-footer-gap:.5rem;max-width:var(--bs-dialog-width);max-height:calc(100% - var(--bs-dialog-margin)*2);color:var(--bs-dialog-color);background-color:var(--bs-dialog-bg);border:var(--bs-dialog-border-width)solid var(--bs-dialog-border-color);border-radius:var(--bs-dialog-border-radius);box-shadow:var(--bs-dialog-box-shadow);background-clip:padding-box;margin:auto;padding:0}.dialog::backdrop{background-color:var(--bs-dialog-backdrop-bg);backdrop-filter:blur(var(--bs-dialog-backdrop-blur))}.dialog.fade{opacity:0;transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.dialog.fade{transition:none}}.dialog.fade::backdrop{opacity:0;transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.dialog.fade::backdrop{transition:none}}.dialog.fade[open],.dialog.fade[open]::backdrop{opacity:1}.dialog.dialog-static{transform:scale(1.02)}.dialog.dialog-nonmodal{z-index:1055;margin-inline:0;position:fixed;inset-block-start:50%;inset-inline-start:50%;transform:translate(-50%,-50%)}.dialog.dialog-overflow{width:100%;max-width:100%;height:100%;max-height:100%;padding:var(--bs-dialog-margin);overscroll-behavior:contain;box-shadow:none;background:0 0;border:0;margin:0;position:fixed;inset:0;overflow-y:auto}.dialog.dialog-overflow>.dialog-box{max-width:var(--bs-dialog-width);color:var(--bs-dialog-color);background-color:var(--bs-dialog-bg);border:var(--bs-dialog-border-width)solid var(--bs-dialog-border-color);border-radius:var(--bs-dialog-border-radius);box-shadow:var(--bs-dialog-box-shadow);background-clip:padding-box;margin-block-end:var(--bs-dialog-margin);margin-inline:auto}.dialog.dialog-scrollable[open]{max-height:calc(100% - var(--bs-dialog-margin)*2);flex-direction:column;display:flex}.dialog.dialog-scrollable[open] .dialog-body{overflow-y:auto}.dialog-sm{--bs-dialog-width:280px}.dialog-lg{--bs-dialog-width:800px}.dialog-xl{--bs-dialog-width:1140px}.dialog-fullscreen{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}@media (width<576px){.dialog-fullscreen-sm-down{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}}@media (width<768px){.dialog-fullscreen-md-down{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}}@media (width<1024px){.dialog-fullscreen-lg-down{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}}@media (width<1280px){.dialog-fullscreen-xl-down{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}}@media (width<1536px){.dialog-fullscreen-2xl-down{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}}.dialog-header{padding:var(--bs-dialog-header-padding);border-block-end:var(--bs-dialog-header-border-width)solid var(--bs-dialog-header-border-color);flex-shrink:0;align-items:center;display:flex}.dialog-header .btn-close{margin-inline-start:auto}.dialog-title{font-size:var(--bs-font-size-md);margin-bottom:0;line-height:1.5}.dialog-body{padding:var(--bs-dialog-padding);flex:auto;position:relative;overflow-y:auto}.dialog-footer{gap:var(--bs-dialog-footer-gap);padding:var(--bs-dialog-footer-padding);border-block-start:var(--bs-dialog-footer-border-width)solid var(--bs-dialog-footer-border-color);flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;display:flex}.menu{--bs-menu-zindex:1000;--bs-menu-gap:.125rem;--bs-menu-min-width:10rem;--bs-menu-padding-x:.25rem;--bs-menu-padding-y:.25rem;--bs-menu-spacer:.125rem;--bs-menu-font-size:var(--bs-font-size-sm);--bs-menu-color:var(--bs-fg-body);--bs-menu-bg:var(--bs-bg-body);--bs-menu-box-shadow:var(--bs-box-shadow);--bs-menu-divider-bg:var(--bs-border-color-translucent);--bs-menu-divider-margin-y:.125rem;--bs-menu-divider-margin-x:.25rem;--bs-menu-item-color:var(--bs-fg-body);--bs-menu-item-hover-color:var(--bs-fg-body);--bs-menu-item-hover-bg:var(--bs-bg-1);--bs-menu-item-active-color:var(--bs-primary-contrast);--bs-menu-item-active-bg:var(--bs-primary-bg);--bs-menu-item-disabled-color:var(--bs-fg-3);--bs-menu-item-gap:.5rem;--bs-menu-item-padding-x:.75rem;--bs-menu-item-padding-y:.25rem;--bs-menu-item-border-radius:var(--bs-border-radius);--bs-menu-icon-size:1rem;--bs-menu-image-size:1.5rem;--bs-menu-description-color:var(--bs-fg-3);--bs-menu-description-font-size:var(--bs-font-size-xs);--bs-menu-check-color:currentcolor;--bs-menu-header-color:var(--bs-fg-2);--bs-menu-header-padding-x:.75rem;--bs-menu-header-padding-y:.25rem;z-index:var(--bs-menu-zindex);gap:var(--bs-menu-gap);min-width:var(--bs-menu-min-width);max-height:var(--bs-menu-max-height,none);padding:var(--bs-menu-padding-y)var(--bs-menu-padding-x);overflow-y:var(--bs-menu-overflow-y,initial);overscroll-behavior:contain;font-size:var(--bs-menu-font-size);color:var(--bs-menu-color);text-align:start;background-color:var(--bs-menu-bg);border:var(--bs-menu-border-width,var(--bs-border-width))solid var(--bs-menu-border-color,var(--bs-border-color-translucent));border-radius:var(--bs-menu-border-radius,var(--bs-border-radius-lg));box-shadow:var(--bs-menu-box-shadow);background-clip:padding-box;flex-direction:column;margin:0;list-style:none;display:none;position:absolute}.menu.show{display:flex}.menu-scrollable{--bs-menu-max-height:80dvh;--bs-menu-overflow-y:auto}.menu-translucent{--bs-menu-item-hover-bg-light:color-mix(in oklch,var(--bs-bg-1)90%,transparent);--bs-menu-item-hover-bg-dark:color-mix(in oklch,var(--bs-bg-1)80%,transparent);--bs-menu-item-active-bg-light:color-mix(in oklch,var(--bs-primary-bg)80%,transparent);--bs-menu-item-active-bg-dark:color-mix(in oklch,var(--bs-primary-bg)70%,transparent);--bs-menu-item-active-bg:light-dark(var(--bs-menu-item-active-bg-light),var(--bs-menu-item-active-bg-dark));--bs-menu-item-hover-bg:light-dark(var(--bs-menu-item-hover-bg-light),var(--bs-menu-item-hover-bg-dark));background-color:color-mix(in oklch,var(--bs-menu-bg)80%,transparent);backdrop-filter:blur(5px)saturate(180%)}.menu-divider{height:0;margin:var(--bs-menu-divider-margin-y)var(--bs-menu-divider-margin-x);border-block-start:1px solid var(--bs-menu-divider-bg);opacity:1;overflow:hidden}.menu-item{gap:var(--bs-menu-item-gap);width:100%;padding:var(--bs-menu-item-padding-y)var(--bs-menu-item-padding-x);font-weight:var(--bs-menu-item-font-weight,var(--bs-font-weight-normal));color:var(--bs-theme-text,var(--bs-menu-item-color));text-align:inherit;white-space:nowrap;cursor:pointer;border-radius:var(--bs-menu-item-border-radius,0);background-color:#0000;border:0;outline:0;align-items:center;text-decoration:none;display:flex}.menu-item:hover,.menu-item:focus{color:var(--bs-theme-text,var(--bs-menu-item-hover-color));background-color:var(--bs-theme-bg-subtle,var(--bs-menu-item-hover-bg))}.menu-item.active,.menu-item:active{color:var(--bs-theme-contrast,var(--bs-menu-item-active-color));background-color:var(--bs-theme-bg,var(--bs-menu-item-active-bg))}.menu-item.selected{font-weight:600}.menu-item.disabled,.menu-item:disabled{color:var(--bs-menu-item-disabled-color);pointer-events:none;background-color:#0000}.menu-item-icon{width:var(--bs-menu-icon-size);flex-shrink:0;align-self:flex-start;height:auto;margin-top:.125rem}.menu-image{width:var(--bs-menu-image-size);height:var(--bs-menu-image-size);-o-object-fit:cover;object-fit:cover;border-radius:var(--bs-border-radius-sm)}.menu-item-content{flex-direction:column;flex:1;min-width:0;display:flex}.menu-item-description{font-size:var(--bs-menu-description-font-size);color:var(--bs-menu-description-color)}.menu-item-check{color:var(--bs-menu-check-color);visibility:hidden;flex-shrink:0;margin-inline-start:auto}.selected>.menu-item-check{visibility:visible}.menu-header{padding:var(--bs-menu-header-padding-y)var(--bs-menu-header-padding-x);font-size:var(--bs-font-size-sm);color:var(--bs-menu-header-color);white-space:nowrap;margin-bottom:0;display:block}.menu-text{padding:var(--bs-menu-item-padding-y)var(--bs-menu-item-padding-x);color:var(--bs-fg-2);display:block}.submenu{position:relative}.submenu>.menu-item{justify-content:space-between;align-items:center;display:flex}.submenu>.menu-item:after{content:"";border:.125em solid;border-width:0 .125em .125em 0;flex-shrink:0;width:.375em;height:.375em;margin-inline-start:auto;display:inline-block;transform:rotate(-45deg)}[dir=rtl] .submenu>.menu-item:after{transform:rotate(135deg)}.submenu>.menu{margin-top:calc(-1*var(--bs-menu-padding-y));top:0}.submenu:hover>.menu-item,.submenu:focus-within>.menu-item,.submenu.show>.menu-item{color:var(--bs-menu-item-hover-color);background-color:var(--bs-menu-item-hover-bg)}@media (width<=575.98px){.submenu:has(.submenu-stacked){position:static}.submenu-stacked{z-index:1;gap:var(--bs-menu-gap);min-width:0;padding:var(--bs-menu-padding-y)var(--bs-menu-padding-x);background-color:var(--bs-menu-bg);box-shadow:none;border:0;border-radius:0;flex-direction:column;display:flex;position:absolute;inset:0}.submenu-back{gap:var(--bs-menu-item-gap);padding:var(--bs-menu-item-padding-y)var(--bs-menu-item-padding-x);font-weight:var(--bs-font-weight-semibold,600);color:var(--bs-menu-item-color);align-items:center;display:flex}.submenu-back:before{content:"";border:0 solid;border-width:.125em 0 0 .125em;flex-shrink:0;width:.375em;height:.375em;display:inline-block;transform:rotate(-45deg)}[dir=rtl] .submenu-back:before{border-width:0 .125em .125em 0}.submenu-dimmed{pointer-events:none;filter:blur(2px);opacity:.3}}.list-group{--bs-list-group-color:var(--bs-fg-body);--bs-list-group-bg:var(--bs-bg-body);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:.5rem;--bs-list-group-action-color:var(--bs-fg-2);--bs-list-group-action-hover-color:var(--bs-fg-1);--bs-list-group-action-hover-bg:var(--bs-bg-1);--bs-list-group-action-active-color:var(--bs-fg-body);--bs-list-group-action-active-bg:var(--bs-bg-2);--bs-list-group-disabled-color:var(--bs-fg-3);--bs-list-group-disabled-bg:var(--bs-bg-body);--bs-list-group-active-color:var(--bs-primary-contrast);--bs-list-group-active-bg:var(--bs-primary-bg);--bs-list-group-active-border-color:var(--bs-primary-bg);border-radius:var(--bs-list-group-border-radius);flex-direction:column;margin-bottom:0;padding-inline-start:0;display:flex}.list-group-numbered{counter-reset:section;list-style-type:none}.list-group-numbered>.list-group-item:before{content:counters(section,".")". ";counter-increment:section}.list-group-item{padding:var(--bs-list-group-item-padding-y)var(--bs-list-group-item-padding-x);color:var(--bs-theme-text,var(--bs-list-group-color));background-color:var(--bs-theme-bg-subtle,var(--bs-list-group-bg));border:var(--bs-list-group-border-width)solid var(--bs-theme-border,var(--bs-list-group-border-color));display:block;position:relative}.list-group-item:first-child{border-start-start-radius:inherit;border-start-end-radius:inherit}.list-group-item:last-child{border-end-end-radius:inherit;border-end-start-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-block-start-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1*var(--bs-list-group-border-width));border-block-start-width:var(--bs-list-group-border-width)}.list-group-item-action{width:100%;color:var(--bs-theme-text,var(--bs-list-group-action-color));text-align:inherit;text-decoration:none}.list-group-item-action:not(.active):hover,.list-group-item-action:not(.active):focus{z-index:1;color:var(--bs-theme-text-emphasis,var(--bs-list-group-action-hover-color));background-color:var(--bs-theme-bg-muted,var(--bs-list-group-action-hover-bg));text-decoration:none}.list-group-item-action:not(.active):active{color:var(--bs-theme-text-emphasis,var(--bs-list-group-action-active-color));background-color:var(--bs-theme-bg-muted,var(--bs-list-group-action-active-bg))}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1*var(--bs-list-group-border-width))}@media (width>=576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1*var(--bs-list-group-border-width))}}@media (width>=768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1*var(--bs-list-group-border-width))}}@media (width>=1024px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1*var(--bs-list-group-border-width))}}@media (width>=1280px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1*var(--bs-list-group-border-width))}}@media (width>=1536px){.list-group-horizontal-2xl{flex-direction:row}.list-group-horizontal-2xl>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.list-group-horizontal-2xl>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.list-group-horizontal-2xl>.list-group-item.active{margin-top:0}.list-group-horizontal-2xl>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.list-group-horizontal-2xl>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1*var(--bs-list-group-border-width))}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-block-end-width:0}.nav{--bs-nav-gap:.125rem;--bs-nav-link-gap:.5rem;--bs-nav-link-align:center;--bs-nav-link-justify:center;--bs-nav-link-padding-x:.75rem;--bs-nav-link-padding-y:.375rem;--bs-nav-link-color:var(--bs-fg-2);--bs-nav-link-hover-color:var(--bs-fg-1);--bs-nav-link-hover-bg:var(--bs-bg-1);--bs-nav-link-active-color:var(--bs-fg-body);--bs-nav-link-active-bg:var(--bs-bg-2);--bs-nav-link-disabled-color:var(--bs-fg-4);--bs-nav-link-border-width:var(--bs-border-width);--bs-nav-link-transition-property:color,background-color,border-color;--bs-nav-link-transition-timing:.15s ease-in-out;--bs-nav-link-transition:var(--bs-nav-link-transition-property)var(--bs-nav-link-transition-timing);gap:var(--bs-nav-gap);flex-wrap:wrap;margin-bottom:0;padding-inline-start:0;list-style:none;display:flex}.nav-item{display:flex}.nav-link{gap:var(--bs-nav-link-gap);align-items:var(--bs-nav-link-align);justify-content:var(--bs-nav-link-justify);padding:var(--bs-nav-link-padding-y)var(--bs-nav-link-padding-x);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);white-space:nowrap;border:var(--bs-nav-link-border-width)solid transparent;border-radius:var(--bs-border-radius);transition:var(--bs-nav-link-transition);background:0 0;text-decoration:none;display:flex}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color);background-color:var(--bs-nav-link-hover-bg)}.nav-link:focus-visible{--bs-focus-ring-offset:1px;color:var(--bs-nav-link-hover-color);outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.nav-link.active,.nav-link:active{color:var(--bs-nav-link-active-color);background-color:var(--bs-nav-link-active-bg)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color:var(--bs-border-subtle);--bs-nav-tabs-link-active-color:var(--bs-fg-color);--bs-nav-tabs-link-active-bg:var(--bs-bg-body);--bs-nav-tabs-link-active-border-color:var(--bs-border-color)var(--bs-border-color)var(--bs-bg-body);box-shadow:inset 0 calc(-1*var(--bs-nav-tabs-border-width))0 var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{border:var(--bs-nav-tabs-border-width)solid transparent;border-bottom-color:var(--bs-nav-tabs-border-color);border-end-end-radius:0;border-end-start-radius:0}.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color);border-bottom-color:var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color);border-bottom-color:var(--bs-nav-tabs-link-active-bg)}.nav-tabs .menu{margin-top:calc(-1*var(--bs-nav-tabs-border-width));border-start-start-radius:0;border-start-end-radius:0}.nav-pills{--bs-nav-pills-link-active-color:var(--bs-primary-contrast);--bs-nav-pills-link-active-bg:var(--bs-primary-bg)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-gap:1rem;--bs-nav-link-active-bg:transparent;--bs-nav-underline-border-width:.125rem;--bs-nav-underline-link-active-color:var(--bs-fg-color)}.nav-underline .nav-link{border:0;border-block-end:var(--bs-nav-underline-border-width)solid transparent;border-radius:0;padding-inline:0}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-block-end-color:currentColor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{color:var(--bs-nav-underline-link-active-color);border-block-end-color:currentColor;font-weight:700}.nav-fill>.nav-link,.nav-fill .nav-item{text-align:center;flex:auto}.nav-justified>.nav-link,.nav-justified .nav-item{text-align:center;flex-grow:1;flex-basis:0}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-overflow{flex-wrap:nowrap;min-width:0}.nav-overflow-item{flex-shrink:0;margin-inline-start:auto}.nav-overflow [data-bs-nav-overflow=true]{display:none}.nav-overflow-keep{flex-shrink:0}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:.5rem;--bs-navbar-color:var(--bs-fg-2);--bs-navbar-hover-color:var(--bs-fg-1);--bs-navbar-disabled-color:var(--bs-fg-3);--bs-navbar-active-color:var(--bs-fg-body);--bs-navbar-brand-padding-y:.75rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:var(--bs-font-size-md);--bs-navbar-brand-font-weight:var(--bs-font-weight-medium);--bs-navbar-brand-color:var(--bs-fg-body);--bs-navbar-brand-hover-color:var(--bs-fg-body);--bs-navbar-nav-link-padding-x:.75rem;--bs-navbar-toggler-width:2rem;--bs-navbar-toggler-padding-y:.25rem;--bs-navbar-toggler-padding-x:.75rem;--bs-navbar-toggler-font-size:var(--bs-font-size-lg);--bs-navbar-toggler-border-color:color-mix(in oklch,var(--bs-fg-body)15%,transparent);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-transition:box-shadow .15s ease-in-out;padding:var(--bs-navbar-padding-y)var(--bs-navbar-padding-x);color:var(--bs-navbar-color,var(--bs-fg-body));background-color:var(--bs-navbar-bg,var(--bs-bg-body));flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex;position:relative;container-type:inline-size}.navbar>.container-2xl,.navbar>.container-xl,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container,.navbar>.container-fluid{flex-wrap:inherit;justify-content:space-between;align-items:center;display:flex}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);font-size:var(--bs-navbar-brand-font-size);font-weight:var(--bs-navbar-brand-font-weight);color:var(--bs-navbar-brand-color);white-space:nowrap;margin-inline-end:var(--bs-navbar-brand-margin-end);text-decoration:none}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-gap:.25rem;--bs-nav-link-gap:.5rem;--bs-nav-link-padding-x:.5rem;--bs-nav-link-padding-y:.375rem;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-border-width:var(--bs-border-width);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-hover-bg:transparent;--bs-nav-link-active-color:var(--bs-navbar-active-color);--bs-nav-link-active-bg:transparent;--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);gap:var(--bs-nav-gap);flex-direction:column;margin-bottom:0;padding-inline-start:0;list-style:none;display:flex}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color);border:var(--bs-nav-link-border-width)solid var(--bs-nav-link-border-color,transparent)}.navbar-text{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-toggler{--bs-btn-bg:transparent;--bs-btn-hover-bg:var(--bs-bg-2)}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.navbar-expand .navbar-toggler{display:none!important}.navbar-expand .offcanvas{z-index:auto;box-shadow:none;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{flex-direction:row;flex-grow:0;align-items:center;padding:0;display:flex;overflow-y:visible}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}@container (width>=576px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.navbar-expand-sm .navbar-toggler{display:none!important}.navbar-expand-sm .offcanvas{z-index:auto;box-shadow:none;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{flex-direction:row;flex-grow:0;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=768px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.navbar-expand-md .navbar-toggler{display:none!important}.navbar-expand-md .offcanvas{z-index:auto;box-shadow:none;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{flex-direction:row;flex-grow:0;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=1024px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.navbar-expand-lg .navbar-toggler{display:none!important}.navbar-expand-lg .offcanvas{z-index:auto;box-shadow:none;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{flex-direction:row;flex-grow:0;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=1280px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.navbar-expand-xl .navbar-toggler{display:none!important}.navbar-expand-xl .offcanvas{z-index:auto;box-shadow:none;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{flex-direction:row;flex-grow:0;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=1536px){.navbar-expand-2xl>.container,.navbar-expand-2xl>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-2xl .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.navbar-expand-2xl .navbar-toggler{display:none!important}.navbar-expand-2xl .offcanvas{z-index:auto;box-shadow:none;flex-grow:1;transition:none;position:static;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transform:none!important}.navbar-expand-2xl .offcanvas .offcanvas-header{display:none}.navbar-expand-2xl .offcanvas .offcanvas-body{flex-direction:row;flex-grow:0;align-items:center;padding:0;display:flex;overflow-y:visible}}.navbar[data-bs-theme=dark]{--bs-navbar-color:color-mix(in oklch,var(--bs-white).55,transparent);--bs-navbar-hover-color:color-mix(in oklch,var(--bs-white).75,transparent);--bs-navbar-disabled-color:color-mix(in oklch,var(--bs-white).25,transparent);--bs-navbar-active-color:var(--bs-white);--bs-navbar-brand-color:var(--bs-white);--bs-navbar-brand-hover-color:var(--bs-white);--bs-navbar-toggler-border-color:color-mix(in oklch,var(--bs-white).1,transparent)}@media (width<576px){.offcanvas-sm{z-index:var(--bs-offcanvas-zindex);max-width:calc(100% - var(--bs-offcanvas-inset)*2);max-height:calc(100% - var(--bs-offcanvas-inset)*2);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);border:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);border-radius:var(--bs-offcanvas-border-radius);box-shadow:var(--bs-offcanvas-box-shadow);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;display:flex;position:fixed}}@media (width<576px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (width<576px){.offcanvas-sm.offcanvas-start{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-start:var(--bs-offcanvas-inset);transform:translate(-100%)}:root:dir(rtl) .offcanvas-sm.offcanvas-start{transform:translate(100%)}.offcanvas-sm.offcanvas-end{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-end:var(--bs-offcanvas-inset);transform:translate(100%)}:root:dir(rtl) .offcanvas-sm.offcanvas-end{transform:translate(-100%)}.offcanvas-sm.offcanvas-top{inset:var(--bs-offcanvas-inset)var(--bs-offcanvas-inset)auto;height:var(--bs-offcanvas-height);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{inset:auto var(--bs-offcanvas-inset)var(--bs-offcanvas-inset);height:var(--bs-offcanvas-height);transform:translateY(100%)}.offcanvas-sm.offcanvas-fullscreen{inset:var(--bs-offcanvas-inset);width:auto;max-width:none;height:auto;max-height:none;transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media (width>=576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{flex-direction:row;flex-grow:0;padding:0;overflow-y:visible;background-color:#0000!important}}@media (width<768px){.offcanvas-md{z-index:var(--bs-offcanvas-zindex);max-width:calc(100% - var(--bs-offcanvas-inset)*2);max-height:calc(100% - var(--bs-offcanvas-inset)*2);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);border:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);border-radius:var(--bs-offcanvas-border-radius);box-shadow:var(--bs-offcanvas-box-shadow);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;display:flex;position:fixed}}@media (width<768px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (width<768px){.offcanvas-md.offcanvas-start{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-start:var(--bs-offcanvas-inset);transform:translate(-100%)}:root:dir(rtl) .offcanvas-md.offcanvas-start{transform:translate(100%)}.offcanvas-md.offcanvas-end{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-end:var(--bs-offcanvas-inset);transform:translate(100%)}:root:dir(rtl) .offcanvas-md.offcanvas-end{transform:translate(-100%)}.offcanvas-md.offcanvas-top{inset:var(--bs-offcanvas-inset)var(--bs-offcanvas-inset)auto;height:var(--bs-offcanvas-height);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{inset:auto var(--bs-offcanvas-inset)var(--bs-offcanvas-inset);height:var(--bs-offcanvas-height);transform:translateY(100%)}.offcanvas-md.offcanvas-fullscreen{inset:var(--bs-offcanvas-inset);width:auto;max-width:none;height:auto;max-height:none;transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media (width>=768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{flex-direction:row;flex-grow:0;padding:0;overflow-y:visible;background-color:#0000!important}}@media (width<1024px){.offcanvas-lg{z-index:var(--bs-offcanvas-zindex);max-width:calc(100% - var(--bs-offcanvas-inset)*2);max-height:calc(100% - var(--bs-offcanvas-inset)*2);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);border:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);border-radius:var(--bs-offcanvas-border-radius);box-shadow:var(--bs-offcanvas-box-shadow);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;display:flex;position:fixed}}@media (width<1024px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (width<1024px){.offcanvas-lg.offcanvas-start{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-start:var(--bs-offcanvas-inset);transform:translate(-100%)}:root:dir(rtl) .offcanvas-lg.offcanvas-start{transform:translate(100%)}.offcanvas-lg.offcanvas-end{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-end:var(--bs-offcanvas-inset);transform:translate(100%)}:root:dir(rtl) .offcanvas-lg.offcanvas-end{transform:translate(-100%)}.offcanvas-lg.offcanvas-top{inset:var(--bs-offcanvas-inset)var(--bs-offcanvas-inset)auto;height:var(--bs-offcanvas-height);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{inset:auto var(--bs-offcanvas-inset)var(--bs-offcanvas-inset);height:var(--bs-offcanvas-height);transform:translateY(100%)}.offcanvas-lg.offcanvas-fullscreen{inset:var(--bs-offcanvas-inset);width:auto;max-width:none;height:auto;max-height:none;transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media (width>=1024px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{flex-direction:row;flex-grow:0;padding:0;overflow-y:visible;background-color:#0000!important}}@media (width<1280px){.offcanvas-xl{z-index:var(--bs-offcanvas-zindex);max-width:calc(100% - var(--bs-offcanvas-inset)*2);max-height:calc(100% - var(--bs-offcanvas-inset)*2);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);border:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);border-radius:var(--bs-offcanvas-border-radius);box-shadow:var(--bs-offcanvas-box-shadow);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;display:flex;position:fixed}}@media (width<1280px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (width<1280px){.offcanvas-xl.offcanvas-start{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-start:var(--bs-offcanvas-inset);transform:translate(-100%)}:root:dir(rtl) .offcanvas-xl.offcanvas-start{transform:translate(100%)}.offcanvas-xl.offcanvas-end{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-end:var(--bs-offcanvas-inset);transform:translate(100%)}:root:dir(rtl) .offcanvas-xl.offcanvas-end{transform:translate(-100%)}.offcanvas-xl.offcanvas-top{inset:var(--bs-offcanvas-inset)var(--bs-offcanvas-inset)auto;height:var(--bs-offcanvas-height);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{inset:auto var(--bs-offcanvas-inset)var(--bs-offcanvas-inset);height:var(--bs-offcanvas-height);transform:translateY(100%)}.offcanvas-xl.offcanvas-fullscreen{inset:var(--bs-offcanvas-inset);width:auto;max-width:none;height:auto;max-height:none;transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media (width>=1280px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{flex-direction:row;flex-grow:0;padding:0;overflow-y:visible;background-color:#0000!important}}@media (width<1536px){.offcanvas-2xl{z-index:var(--bs-offcanvas-zindex);max-width:calc(100% - var(--bs-offcanvas-inset)*2);max-height:calc(100% - var(--bs-offcanvas-inset)*2);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);border:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);border-radius:var(--bs-offcanvas-border-radius);box-shadow:var(--bs-offcanvas-box-shadow);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;display:flex;position:fixed}}@media (width<1536px) and (prefers-reduced-motion:reduce){.offcanvas-2xl{transition:none}}@media (width<1536px){.offcanvas-2xl.offcanvas-start{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-start:var(--bs-offcanvas-inset);transform:translate(-100%)}:root:dir(rtl) .offcanvas-2xl.offcanvas-start{transform:translate(100%)}.offcanvas-2xl.offcanvas-end{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-end:var(--bs-offcanvas-inset);transform:translate(100%)}:root:dir(rtl) .offcanvas-2xl.offcanvas-end{transform:translate(-100%)}.offcanvas-2xl.offcanvas-top{inset:var(--bs-offcanvas-inset)var(--bs-offcanvas-inset)auto;height:var(--bs-offcanvas-height);transform:translateY(-100%)}.offcanvas-2xl.offcanvas-bottom{inset:auto var(--bs-offcanvas-inset)var(--bs-offcanvas-inset);height:var(--bs-offcanvas-height);transform:translateY(100%)}.offcanvas-2xl.offcanvas-fullscreen{inset:var(--bs-offcanvas-inset);width:auto;max-width:none;height:auto;max-height:none;transform:translateY(100%)}.offcanvas-2xl.showing,.offcanvas-2xl.show:not(.hiding){transform:none}.offcanvas-2xl.showing,.offcanvas-2xl.hiding,.offcanvas-2xl.show{visibility:visible}}@media (width>=1536px){.offcanvas-2xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:#0000!important}.offcanvas-2xl .offcanvas-header{display:none}.offcanvas-2xl .offcanvas-body{flex-direction:row;flex-grow:0;padding:0;overflow-y:visible;background-color:#0000!important}}.offcanvas{z-index:var(--bs-offcanvas-zindex);max-width:calc(100% - var(--bs-offcanvas-inset)*2);max-height:calc(100% - var(--bs-offcanvas-inset)*2);color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);border:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);border-radius:var(--bs-offcanvas-border-radius);box-shadow:var(--bs-offcanvas-box-shadow);transition:var(--bs-offcanvas-transition);background-clip:padding-box;outline:0;flex-direction:column;display:flex;position:fixed}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-start:var(--bs-offcanvas-inset);transform:translate(-100%)}:root:dir(rtl) .offcanvas.offcanvas-start{transform:translate(100%)}.offcanvas.offcanvas-end{inset-block:var(--bs-offcanvas-inset);width:var(--bs-offcanvas-width);inset-inline-end:var(--bs-offcanvas-inset);transform:translate(100%)}:root:dir(rtl) .offcanvas.offcanvas-end{transform:translate(-100%)}.offcanvas.offcanvas-top{inset:var(--bs-offcanvas-inset)var(--bs-offcanvas-inset)auto;height:var(--bs-offcanvas-height);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{inset:auto var(--bs-offcanvas-inset)var(--bs-offcanvas-inset);height:var(--bs-offcanvas-height);transform:translateY(100%)}.offcanvas.offcanvas-fullscreen{inset:var(--bs-offcanvas-inset);width:auto;max-width:none;height:auto;max-height:none;transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{--bs-offcanvas-backdrop-bg:var(--bs-bg-body);--bs-offcanvas-backdrop-opacity:25%;--bs-offcanvas-backdrop-blur:8px;z-index:1040;background-color:color-mix(in oklch,var(--bs-offcanvas-backdrop-bg)var(--bs-offcanvas-backdrop-opacity),transparent);backdrop-filter:blur(var(--bs-offcanvas-backdrop-blur));position:fixed;inset:0}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:1}.offcanvas-header{padding:var(--bs-offcanvas-padding-y)var(--bs-offcanvas-padding-x);align-items:center;display:flex}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5)calc(var(--bs-offcanvas-padding-x)*.5);margin-inline-start:auto;margin-inline-end:calc(-.5*var(--bs-offcanvas-padding-x));margin-top:calc(-.5*var(--bs-offcanvas-padding-y));margin-bottom:calc(-.5*var(--bs-offcanvas-padding-y))}.offcanvas-title{line-height:var(--bs-offcanvas-title-line-height);margin-bottom:0}.offcanvas-body{gap:var(--bs-offcanvas-padding-y);padding:var(--bs-offcanvas-padding-y)var(--bs-offcanvas-padding-x);flex-direction:column;flex-grow:1;display:flex;overflow-y:auto}.offcanvas-footer{padding:var(--bs-offcanvas-padding-y)var(--bs-offcanvas-padding-x);border-block-start:var(--bs-offcanvas-border-width)solid var(--bs-offcanvas-border-color);flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:.5rem;display:flex}.pagination{--bs-pagination-min-height:var(--bs-btn-input-min-height);--bs-pagination-padding-x:var(--bs-btn-input-padding-x);--bs-pagination-padding-y:var(--bs-btn-input-padding-y);--bs-pagination-font-size:var(--bs-btn-input-font-size);--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-bg-body);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-btn-input-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-bg-1);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-bg-2);--bs-pagination-active-color:var(--bs-primary-contrast);--bs-pagination-active-bg:var(--bs-primary-bg);--bs-pagination-active-border-color:var(--bs-primary-bg);--bs-pagination-disabled-color:var(--bs-fg-3);--bs-pagination-disabled-bg:var(--bs-bg-2);--bs-pagination-disabled-border-color:var(--bs-border-color);padding-inline-start:0;list-style:none;display:flex}.page-link{min-height:var(--bs-pagination-min-height);padding:var(--bs-pagination-padding-y)var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width)solid var(--bs-pagination-border-color);justify-content:center;align-items:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;display:flex;position:relative}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus-visible{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-inline-start:calc(-1*var(--bs-pagination-border-width))}.page-item:first-child .page-link{border-start-start-radius:var(--bs-pagination-border-radius);border-end-start-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-start-end-radius:var(--bs-pagination-border-radius);border-end-end-radius:var(--bs-pagination-border-radius)}.pagination-sm{--bs-pagination-min-height:var(--bs-btn-input-sm-min-height);--bs-pagination-padding-y:var(--bs-btn-input-sm-padding-y);--bs-pagination-padding-x:var(--bs-btn-input-sm-padding-x);--bs-pagination-font-size:var(--bs-btn-input-sm-font-size);--bs-pagination-border-radius:var(--bs-btn-input-sm-border-radius)}.pagination-lg{--bs-pagination-min-height:var(--bs-btn-input-lg-min-height);--bs-pagination-padding-y:var(--bs-btn-input-lg-padding-y);--bs-pagination-padding-x:var(--bs-btn-input-lg-padding-x);--bs-pagination-font-size:var(--bs-btn-input-lg-font-size);--bs-pagination-border-radius:var(--bs-btn-input-lg-border-radius)}.placeholder{--bs-placeholder-opacity-max:.5;--bs-placeholder-opacity-min:.2;vertical-align:middle;cursor:wait;min-height:1em;opacity:var(--bs-placeholder-opacity-max);background-color:currentColor;display:inline-block}.placeholder.btn:before{content:"";display:inline-block}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:2s ease-in-out infinite placeholder-glow}@keyframes placeholder-glow{50%{opacity:var(--bs-placeholder-opacity-min)}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,calc(1 - var(--bs-placeholder-opacity-min)))75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,calc(1 - var(--bs-placeholder-opacity-min)))75%,#000 95%);animation:2s linear infinite placeholder-wave;mask-size:200% 100%}@keyframes placeholder-wave{to{mask-position:-200% 0}}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:280px;--bs-popover-font-size:var(--bs-font-size-sm);--bs-popover-bg:var(--bs-bg-body);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-border-radius-lg);--bs-popover-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow:var(--bs-box-shadow);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:.75rem;--bs-popover-header-font-size:var(--bs-font-size-sm);--bs-popover-header-color:inherit;--bs-popover-header-bg:var(--bs-bg-1);--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:.75rem;--bs-popover-body-color:var(--bs-fg-body);--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);max-width:var(--bs-popover-max-width);font-family:var(--bs-body-font-family);font-style:normal;font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);text-align:start;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);border:var(--bs-popover-border-width)solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius);box-shadow:var(--bs-popover-box-shadow);background-clip:padding-box;text-decoration:none;display:block}.popover .popover-arrow{width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height);display:block}.popover .popover-arrow:before,.popover .popover-arrow:after{content:"";border:0 solid #0000;display:block;position:absolute}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-bs-placement^=top]>.popover-arrow{bottom:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=top]>.popover-arrow:after{border-width:var(--bs-popover-arrow-height)calc(var(--bs-popover-arrow-width)*.5)0}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=top]>.popover-arrow:before{border-block-start-color:var(--bs-popover-arrow-border);bottom:0}.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=top]>.popover-arrow:after{bottom:var(--bs-popover-border-width);border-block-start-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-bs-placement^=right]>.popover-arrow{left:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=right]>.popover-arrow:after{border-width:calc(var(--bs-popover-arrow-width)*.5)var(--bs-popover-arrow-height)calc(var(--bs-popover-arrow-width)*.5)0}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=right]>.popover-arrow:before{border-inline-end-color:var(--bs-popover-arrow-border);left:0}.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=right]>.popover-arrow:after{left:var(--bs-popover-border-width);border-inline-end-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow{top:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow:after{border-width:0 calc(var(--bs-popover-arrow-width)*.5)var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow:before{border-block-end-color:var(--bs-popover-arrow-border);top:0}.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow:after{top:var(--bs-popover-border-width);border-block-end-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header:before,.bs-popover-auto[data-bs-placement^=bottom] .popover-header:before{width:var(--bs-popover-arrow-width);content:"";border-block-end:var(--bs-popover-border-width)solid var(--bs-popover-header-bg);margin-inline-start:calc(-.5*var(--bs-popover-arrow-width));display:block;position:absolute;top:0;left:50%}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-bs-placement^=left]>.popover-arrow{right:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=left]>.popover-arrow:after{border-width:calc(var(--bs-popover-arrow-width)*.5)0 calc(var(--bs-popover-arrow-width)*.5)var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=left]>.popover-arrow:before{border-inline-start-color:var(--bs-popover-arrow-border);right:0}.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=left]>.popover-arrow:after{right:var(--bs-popover-border-width);border-inline-start-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y)var(--bs-popover-header-padding-x);font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-block-end:var(--bs-popover-border-width)solid var(--bs-popover-border-color);border-start-start-radius:var(--bs-popover-inner-border-radius);border-start-end-radius:var(--bs-popover-inner-border-radius);margin-bottom:0}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y)var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}@keyframes progress-bar-stripes{0%{background-position-x:var(--bs-progress-height)}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:var(--bs-font-size-sm);--bs-progress-bg:var(--bs-bg-2);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:var(--bs-white);--bs-progress-bar-bg:var(--bs-primary-bg);--bs-progress-bar-transition:width .6s ease;--bs-progress-bar-animation:progress-bar-stripes 1s linear infinite;height:var(--bs-progress-height);font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius);box-shadow:var(--bs-progress-box-shadow);display:flex;overflow:hidden}.progress-bar{color:var(--bs-theme-contrast,var(--bs-progress-bar-color));text-align:center;white-space:nowrap;background-color:var(--bs-theme-bg,var(--bs-progress-bar-bg));transition:var(--bs-progress-bar-transition);flex-direction:column;justify-content:center;display:flex;overflow:hidden}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,#ffffff26 25%,#0000 25% 50%,#ffffff26 50% 75%,#0000 75%,#0000);background-size:var(--bs-progress-height)var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:var(--bs-progress-bar-animation)}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.spinner-grow,.spinner-border{width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);animation:var(--bs-spinner-animation-speed)linear infinite var(--bs-spinner-animation-name);border-radius:50%;flex-shrink:0;display:inline-block}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-.125em;--bs-spinner-border-width:.25em;--bs-spinner-animation-speed:.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width)solid currentcolor;border-inline-end-color:#0000}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-.125em;--bs-spinner-animation-speed:.75s;--bs-spinner-animation-name:spinner-grow;opacity:0;background-color:currentColor}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:.75rem;--bs-toast-padding-y:.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:.875rem;--bs-toast-bg:rgba(var(--bs-body-bg-rgb),.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-fg-3);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb),.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);border:var(--bs-toast-border-width)solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius);background-clip:padding-box}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;z-index:var(--bs-toast-zindex);pointer-events:none;width:max-content;max-width:100%;position:absolute}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{padding:var(--bs-toast-padding-y)var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);border-block-end:var(--bs-toast-border-width)solid var(--bs-toast-header-border-color);background-clip:padding-box;border-start-start-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-start-end-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));align-items:center;display:flex}.toast-header .btn-close{margin-inline-start:var(--bs-toast-padding-x);margin-inline-end:calc(-.5*var(--bs-toast-padding-x))}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}}@layer custom;@layer helpers{.focus-ring:focus-visible{outline:var(--bs-focus-ring)}.icon-link{text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,.5));text-underline-offset:.25em;backface-visibility:hidden;align-items:center;gap:.375rem;display:inline-flex}.icon-link>.bi{fill:currentColor;flex-shrink:0;width:1em;height:1em;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em,0,0))}.fixed-top{z-index:1030;position:fixed;inset:0 0 auto}.fixed-bottom{z-index:1030;position:fixed;inset:auto 0 0}.sticky-top{z-index:1020;position:sticky;top:0}.sticky-bottom{z-index:1020;position:sticky;bottom:0}@media (width>=576px){.sticky-sm-top{z-index:1020;position:sticky;top:0}.sticky-sm-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=768px){.sticky-md-top{z-index:1020;position:sticky;top:0}.sticky-md-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1024px){.sticky-lg-top{z-index:1020;position:sticky;top:0}.sticky-lg-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1280px){.sticky-xl-top{z-index:1020;position:sticky;top:0}.sticky-xl-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1536px){.sticky-2xl-top{z-index:1020;position:sticky;top:0}.sticky-2xl-bottom{z-index:1020;position:sticky;bottom:0}}.stack-container{container-type:inline-size}[class*=hstack],[class*=vstack]{flex:var(--bs-stack-flex,1 1 auto);flex-direction:var(--bs-stack-direction,row);align-items:var(--bs-stack-align-items,center);align-self:var(--bs-stack-align-self,stretch);display:flex}.vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}@container (width>=576px){.vstack-sm{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack-sm{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=768px){.vstack-md{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack-md{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1024px){.vstack-lg{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack-lg{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1280px){.vstack-xl{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack-xl{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1536px){.vstack-2xl{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack-2xl{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}.theme-primary{--bs-theme-base:var(--bs-primary-base);--bs-theme-text:var(--bs-primary-text);--bs-theme-text-emphasis:var(--bs-primary-text-emphasis);--bs-theme-bg:var(--bs-primary-bg);--bs-theme-bg-subtle:var(--bs-primary-bg-subtle);--bs-theme-bg-muted:var(--bs-primary-bg-muted);--bs-theme-border:var(--bs-primary-border);--bs-theme-focus-ring:var(--bs-primary-focus-ring);--bs-theme-contrast:var(--bs-primary-contrast)}.theme-accent{--bs-theme-base:var(--bs-accent-base);--bs-theme-text:var(--bs-accent-text);--bs-theme-text-emphasis:var(--bs-accent-text-emphasis);--bs-theme-bg:var(--bs-accent-bg);--bs-theme-bg-subtle:var(--bs-accent-bg-subtle);--bs-theme-bg-muted:var(--bs-accent-bg-muted);--bs-theme-border:var(--bs-accent-border);--bs-theme-focus-ring:var(--bs-accent-focus-ring);--bs-theme-contrast:var(--bs-accent-contrast)}.theme-success{--bs-theme-base:var(--bs-success-base);--bs-theme-text:var(--bs-success-text);--bs-theme-text-emphasis:var(--bs-success-text-emphasis);--bs-theme-bg:var(--bs-success-bg);--bs-theme-bg-subtle:var(--bs-success-bg-subtle);--bs-theme-bg-muted:var(--bs-success-bg-muted);--bs-theme-border:var(--bs-success-border);--bs-theme-focus-ring:var(--bs-success-focus-ring);--bs-theme-contrast:var(--bs-success-contrast)}.theme-danger{--bs-theme-base:var(--bs-danger-base);--bs-theme-text:var(--bs-danger-text);--bs-theme-text-emphasis:var(--bs-danger-text-emphasis);--bs-theme-bg:var(--bs-danger-bg);--bs-theme-bg-subtle:var(--bs-danger-bg-subtle);--bs-theme-bg-muted:var(--bs-danger-bg-muted);--bs-theme-border:var(--bs-danger-border);--bs-theme-focus-ring:var(--bs-danger-focus-ring);--bs-theme-contrast:var(--bs-danger-contrast)}.theme-warning{--bs-theme-base:var(--bs-warning-base);--bs-theme-text:var(--bs-warning-text);--bs-theme-text-emphasis:var(--bs-warning-text-emphasis);--bs-theme-bg:var(--bs-warning-bg);--bs-theme-bg-subtle:var(--bs-warning-bg-subtle);--bs-theme-bg-muted:var(--bs-warning-bg-muted);--bs-theme-border:var(--bs-warning-border);--bs-theme-focus-ring:var(--bs-warning-focus-ring);--bs-theme-contrast:var(--bs-warning-contrast)}.theme-info{--bs-theme-base:var(--bs-info-base);--bs-theme-text:var(--bs-info-text);--bs-theme-text-emphasis:var(--bs-info-text-emphasis);--bs-theme-bg:var(--bs-info-bg);--bs-theme-bg-subtle:var(--bs-info-bg-subtle);--bs-theme-bg-muted:var(--bs-info-bg-muted);--bs-theme-border:var(--bs-info-border);--bs-theme-focus-ring:var(--bs-info-focus-ring);--bs-theme-contrast:var(--bs-info-contrast)}.theme-inverse{--bs-theme-base:var(--bs-inverse-base);--bs-theme-text:var(--bs-inverse-text);--bs-theme-text-emphasis:var(--bs-inverse-text-emphasis);--bs-theme-bg:var(--bs-inverse-bg);--bs-theme-bg-subtle:var(--bs-inverse-bg-subtle);--bs-theme-bg-muted:var(--bs-inverse-bg-muted);--bs-theme-border:var(--bs-inverse-border);--bs-theme-focus-ring:var(--bs-inverse-focus-ring);--bs-theme-contrast:var(--bs-inverse-contrast)}.theme-secondary{--bs-theme-base:var(--bs-secondary-base);--bs-theme-text:var(--bs-secondary-text);--bs-theme-text-emphasis:var(--bs-secondary-text-emphasis);--bs-theme-bg:var(--bs-secondary-bg);--bs-theme-bg-subtle:var(--bs-secondary-bg-subtle);--bs-theme-bg-muted:var(--bs-secondary-bg-muted);--bs-theme-border:var(--bs-secondary-border);--bs-theme-focus-ring:var(--bs-secondary-focus-ring);--bs-theme-contrast:var(--bs-secondary-contrast)}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute!important}.visually-hidden *,.visually-hidden-focusable:not(:focus):not(:focus-within) *{overflow:hidden!important}.stretched-link:after{z-index:1;content:"";position:absolute;inset:0}.text-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vr{width:var(--bs-vr-border-width,var(--bs-border-width));background-color:var(--bs-border-color);align-self:stretch;min-height:1em;display:inline-block}}@layer utilities{.align-baseline{vertical-align:baseline}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.align-text-bottom{vertical-align:text-bottom}.align-text-top{vertical-align:text-top}[class*=ratio-]{aspect-ratio:var(--bs-ratio)}.ratio-auto{--bs-ratio:auto}.ratio-1x1{--bs-ratio:1/1}.ratio-4x3{--bs-ratio:4/3}.ratio-16x9{--bs-ratio:16/9}.ratio-21x9{--bs-ratio:21/9}.float-start{float:inline-start}.float-end{float:inline-end}.float-none{float:none}.object-fit-contain{-o-object-fit:contain;object-fit:contain}.object-fit-cover{-o-object-fit:cover;object-fit:cover}.object-fit-fill{-o-object-fit:fill;object-fit:fill}.object-fit-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-none{-o-object-fit:none;object-fit:none}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-100{opacity:1}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-visible{overflow-x:visible}.overflow-x-scroll{overflow-x:scroll}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overflow-y-visible{overflow-y:visible}.overflow-y-scroll{overflow-y:scroll}.d-inline{display:inline}.d-inline-block{display:inline-block}.d-block{display:block}.d-grid{display:grid}.d-inline-grid{display:inline-grid}.d-table{display:table}.d-table-row{display:table-row}.d-table-cell{display:table-cell}.d-flex{display:flex}.d-inline-flex{display:inline-flex}.d-contents{display:contents}.d-flow-root{display:flow-root}.d-none{display:none}.shadow{box-shadow:var(--bs-box-shadow)}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)}.shadow-none{box-shadow:none}.focus-ring-primary{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-blue-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-blue-500)75%,var(--bs-bg-body)))}.focus-ring-accent{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-indigo-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-indigo-500)75%,var(--bs-bg-body)))}.focus-ring-success{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-green-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-green-500)75%,var(--bs-bg-body)))}.focus-ring-danger{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-red-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-red-500)75%,var(--bs-bg-body)))}.focus-ring-warning{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-yellow-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-yellow-400)85%,var(--bs-bg-body)))}.focus-ring-info{--bs-focus-ring-color:light-dark(color-mix(in oklch,var(--bs-cyan-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-cyan-500)75%,var(--bs-bg-body)))}.focus-ring-inverse{--bs-focus-ring-color:color-mix(in oklch,light-dark(var(--bs-gray-900),var(--bs-gray-100))50%,var(--bs-bg-body))}.focus-ring-secondary{--bs-focus-ring-color:color-mix(in oklch,light-dark(var(--bs-gray-500),var(--bs-gray-300))50%,var(--bs-bg-body))}.position-static{position:static}.position-relative{position:relative}.position-absolute{position:absolute}.position-fixed{position:fixed}.position-sticky{position:sticky}.top-0{top:0}.top-50{top:50%}.top-100{top:100%}.bottom-0{bottom:0}.bottom-50{bottom:50%}.bottom-100{bottom:100%}.start-0{left:0}.start-50{left:50%}.start-100{left:100%}.end-0{right:0}.end-50{right:50%}.end-100{right:100%}.translate-middle{transform:translate(-50%,-50%)}.translate-middle-x{transform:translate(-50%)}.translate-middle-y{transform:translateY(-50%)}.border{border:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-0{border:0}.border-top{border-block-start:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-top-0{border-block-start:0}.border-end{border-inline-end:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-end-0{border-inline-end:0}.border-bottom{border-block-end:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-bottom-0{border-block-end:0}.border-start{border-inline-start:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-start-0{border-inline-start:0}.border-block{border-block:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-block-0{border-block:0}.border-inline{border-inline:var(--bs-border-width)var(--bs-border-style)var(--bs-border-color)}.border-inline-0{border-inline:0}.border-primary{--bs-border-color:var(--bs-blue-500);border-color:var(--bs-border-color)}.border-accent{--bs-border-color:var(--bs-indigo-500);border-color:var(--bs-border-color)}.border-success{--bs-border-color:var(--bs-green-500);border-color:var(--bs-border-color)}.border-danger{--bs-border-color:var(--bs-red-500);border-color:var(--bs-border-color)}.border-warning{--bs-border-color:var(--bs-yellow-500);border-color:var(--bs-border-color)}.border-info{--bs-border-color:var(--bs-cyan-500);border-color:var(--bs-border-color)}.border-inverse{--bs-border-color:light-dark(var(--bs-gray-900),var(--bs-gray-025));border-color:var(--bs-border-color)}.border-secondary{--bs-border-color:light-dark(var(--bs-gray-100),var(--bs-gray-600));border-color:var(--bs-border-color)}.border-bg{--bs-border-color:var(--bs-bg-body);border-color:var(--bs-border-color)}.border-body{--bs-border-color:light-dark(var(--bs-gray-300),var(--bs-gray-800));border-color:var(--bs-border-color)}.border-muted{--bs-border-color:light-dark(var(--bs-gray-200),var(--bs-gray-800));border-color:var(--bs-border-color)}.border-subtle{--bs-border-color:light-dark(var(--bs-gray-100),var(--bs-gray-900));border-color:var(--bs-border-color)}.border-emphasized{--bs-border-color:light-dark(var(--bs-gray-400),var(--bs-gray-600));border-color:var(--bs-border-color)}.border-white{--bs-border-color:var(--bs-white);border-color:var(--bs-border-color)}.border-black{--bs-border-color:var(--bs-black);border-color:var(--bs-border-color)}.border-subtle-primary{--bs-border-color:light-dark(var(--bs-blue-300),var(--bs-blue-600));border-color:var(--bs-border-color)}.border-subtle-accent{--bs-border-color:light-dark(var(--bs-indigo-300),var(--bs-indigo-600));border-color:var(--bs-border-color)}.border-subtle-success{--bs-border-color:light-dark(var(--bs-green-300),var(--bs-green-600));border-color:var(--bs-border-color)}.border-subtle-danger{--bs-border-color:light-dark(var(--bs-red-300),var(--bs-red-600));border-color:var(--bs-border-color)}.border-subtle-warning{--bs-border-color:light-dark(var(--bs-yellow-300),var(--bs-yellow-600));border-color:var(--bs-border-color)}.border-subtle-info{--bs-border-color:light-dark(var(--bs-cyan-300),var(--bs-cyan-600));border-color:var(--bs-border-color)}.border-subtle-inverse{--bs-border-color:light-dark(var(--bs-gray-400),var(--bs-gray-100));border-color:var(--bs-border-color)}.border-subtle-secondary{--bs-border-color:light-dark(var(--bs-gray-300),var(--bs-gray-600));border-color:var(--bs-border-color)}.border-1{border-width:1px}.border-2{border-width:2px}.border-3{border-width:3px}.border-4{border-width:4px}.border-5{border-width:5px}.border-10{border-color:color-mix(in oklch,var(--bs-border-color)10%,transparent)}.border-20{border-color:color-mix(in oklch,var(--bs-border-color)20%,transparent)}.border-30{border-color:color-mix(in oklch,var(--bs-border-color)30%,transparent)}.border-40{border-color:color-mix(in oklch,var(--bs-border-color)40%,transparent)}.border-50{border-color:color-mix(in oklch,var(--bs-border-color)50%,transparent)}.border-60{border-color:color-mix(in oklch,var(--bs-border-color)60%,transparent)}.border-70{border-color:color-mix(in oklch,var(--bs-border-color)70%,transparent)}.border-80{border-color:color-mix(in oklch,var(--bs-border-color)80%,transparent)}.border-90{border-color:color-mix(in oklch,var(--bs-border-color)90%,transparent)}.border-100{border-color:var(--bs-border-color)}.w-1{width:1rem}.w-2{width:2rem}.w-3{width:3rem}.w-4{width:4rem}.w-5{width:5rem}.w-6{width:6rem}.w-7{width:7rem}.w-8{width:8rem}.w-9{width:9rem}.w-10{width:10rem}.w-11{width:11rem}.w-12{width:12rem}.w-25{width:25%}.w-50{width:50%}.w-75{width:75%}.w-100{width:100%}.w-auto{width:auto}.w-min{width:min-content}.w-max{width:max-content}.w-fit{width:fit-content}.max-w-100{max-width:100%}.min-w-0{min-width:0}.min-w-100{min-width:100%}.vw-100{width:100vw}.min-vw-100{min-width:100vw}.h-25{height:25%}.h-50{height:50%}.h-75{height:75%}.h-100{height:100%}.h-auto{height:auto}.h-min{height:min-content}.h-max{height:max-content}.h-fit{height:fit-content}.max-h-100{max-height:100%}.min-h-0{min-height:0}.min-h-100{min-height:100%}.vh-100{height:100vh}.min-vh-100{min-height:100vh}.flex-fill{flex:auto}.flex-row{flex-direction:row}.flex-column{flex-direction:column}.flex-row-reverse{flex-direction:row-reverse}.flex-column-reverse{flex-direction:column-reverse}.flex-grow-0{flex-grow:0}.flex-grow-1{flex-grow:1}.flex-shrink-0{flex-shrink:0}.flex-shrink-1{flex-shrink:1}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-start{justify-content:flex-start}.justify-content-end{justify-content:flex-end}.justify-content-center{justify-content:center}.justify-content-between{justify-content:space-between}.justify-content-around{justify-content:space-around}.justify-content-evenly{justify-content:space-evenly}.justify-items-start{justify-items:start}.justify-items-end{justify-items:end}.justify-items-center{justify-items:center}.justify-items-stretch{justify-items:stretch}.justify-self-start{justify-self:flex-start}.justify-self-end{justify-self:flex-end}.justify-self-center{justify-self:center}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.align-items-center{align-items:center}.align-items-baseline{align-items:baseline}.align-items-stretch{align-items:stretch}.align-content-start{align-content:flex-start}.align-content-end{align-content:flex-end}.align-content-center{align-content:center}.align-content-between{align-content:space-between}.align-content-around{align-content:space-around}.align-content-stretch{align-content:stretch}.align-self-auto{align-self:auto}.align-self-start{align-self:flex-start}.align-self-end{align-self:flex-end}.align-self-center{align-self:center}.align-self-baseline{align-self:baseline}.align-self-stretch{align-self:stretch}.place-items-start{place-items:start}.place-items-end{place-items:end}.place-items-center{place-items:center}.place-items-stretch{place-items:stretch stretch}.grid-cols-3{--bs-columns:3}.grid-cols-4{--bs-columns:4}.grid-cols-6{--bs-columns:6}.grid-cols-fill{grid-column:1/-1}.grid-auto-flow-row{grid-auto-flow:row}.grid-auto-flow-column{grid-auto-flow:column}.grid-auto-flow-dense{grid-auto-flow:dense}.order-first{order:-1}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-last{order:6}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-3{margin:1rem}.m-4{margin:1.5rem}.m-5{margin:3rem}.m-auto{margin:auto}.mx-0{margin-inline:0}.mx-1{margin-inline:.25rem}.mx-2{margin-inline:.5rem}.mx-3{margin-inline:1rem}.mx-4{margin-inline:1.5rem}.mx-5{margin-inline:3rem}.mx-auto{margin-inline:auto}.my-0{margin-block:0}.my-1{margin-block:.25rem}.my-2{margin-block:.5rem}.my-3{margin-block:1rem}.my-4{margin-block:1.5rem}.my-5{margin-block:3rem}.my-auto{margin-block:auto}.mt-0{margin-block-start:0}.mt-1{margin-block-start:.25rem}.mt-2{margin-block-start:.5rem}.mt-3{margin-block-start:1rem}.mt-4{margin-block-start:1.5rem}.mt-5{margin-block-start:3rem}.mt-auto{margin-block-start:auto}.me-0{margin-inline-end:0}.me-1{margin-inline-end:.25rem}.me-2{margin-inline-end:.5rem}.me-3{margin-inline-end:1rem}.me-4{margin-inline-end:1.5rem}.me-5{margin-inline-end:3rem}.me-auto{margin-inline-end:auto}.mb-0{margin-block-end:0}.mb-1{margin-block-end:.25rem}.mb-2{margin-block-end:.5rem}.mb-3{margin-block-end:1rem}.mb-4{margin-block-end:1.5rem}.mb-5{margin-block-end:3rem}.mb-auto{margin-block-end:auto}.ms-0{margin-inline-start:0}.ms-1{margin-inline-start:.25rem}.ms-2{margin-inline-start:.5rem}.ms-3{margin-inline-start:1rem}.ms-4{margin-inline-start:1.5rem}.ms-5{margin-inline-start:3rem}.ms--1{margin-inline-start:-.25rem}.ms--2{margin-inline-start:-.5rem}.ms-auto{margin-inline-start:auto}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:1rem}.p-4{padding:1.5rem}.p-5{padding:3rem}.px-0{padding-inline:0}.px-1{padding-inline:.25rem}.px-2{padding-inline:.5rem}.px-3{padding-inline:1rem}.px-4{padding-inline:1.5rem}.px-5{padding-inline:3rem}.py-0{padding-block:0}.py-1{padding-block:.25rem}.py-2{padding-block:.5rem}.py-3{padding-block:1rem}.py-4{padding-block:1.5rem}.py-5{padding-block:3rem}.pt-0{padding-block-start:0}.pt-1{padding-block-start:.25rem}.pt-2{padding-block-start:.5rem}.pt-3{padding-block-start:1rem}.pt-4{padding-block-start:1.5rem}.pt-5{padding-block-start:3rem}.pe-0{padding-inline-end:0}.pe-1{padding-inline-end:.25rem}.pe-2{padding-inline-end:.5rem}.pe-3{padding-inline-end:1rem}.pe-4{padding-inline-end:1.5rem}.pe-5{padding-inline-end:3rem}.pb-0{padding-block-end:0}.pb-1{padding-block-end:.25rem}.pb-2{padding-block-end:.5rem}.pb-3{padding-block-end:1rem}.pb-4{padding-block-end:1.5rem}.pb-5{padding-block-end:3rem}.ps-0{padding-inline-start:0}.ps-1{padding-inline-start:.25rem}.ps-2{padding-inline-start:.5rem}.ps-3{padding-inline-start:1rem}.ps-4{padding-inline-start:1.5rem}.ps-5{padding-inline-start:3rem}.gap-0{gap:0}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:1rem}.gap-4{gap:1.5rem}.gap-5{gap:3rem}.row-gap-0{row-gap:0}.row-gap-1{row-gap:.25rem}.row-gap-2{row-gap:.5rem}.row-gap-3{row-gap:1rem}.row-gap-4{row-gap:1.5rem}.row-gap-5{row-gap:3rem}.column-gap-0{-moz-column-gap:0;column-gap:0}.column-gap-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-5{-moz-column-gap:3rem;column-gap:3rem}.font-monospace{font-family:var(--bs-font-mono)}.font-body{font-family:var(--bs-body-font-family)}.fs-xs{font-size:.75rem}.fs-sm{font-size:.875rem}.fs-md{font-size:1rem}.fs-lg{font-size:clamp(1.25rem,1rem + .625vw,1.5rem)}.fs-xl{font-size:clamp(1.5rem,1.1rem + .75vw,1.75rem)}.fs-2xl{font-size:clamp(1.75rem,1.3rem + 1vw,2rem)}.fs-3xl{font-size:clamp(2rem,1.5rem + 1.875vw,2.5rem)}.fs-4xl{font-size:clamp(2.25rem,1.75rem + 2.5vw,3rem)}.fs-5xl{font-size:clamp(3rem,2rem + 5vw,4rem)}.fs-6xl{font-size:clamp(3.75rem,2.5rem + 6.25vw,5rem)}.text-xs{font-size:.75rem;line-height:1.25}.text-sm{font-size:.875rem;line-height:1.5}.text-md{font-size:1rem;line-height:1.5}.text-lg{font-size:clamp(1.25rem,1rem + .625vw,1.5rem);line-height:1.5}.text-xl{font-size:clamp(1.5rem,1.1rem + .75vw,1.75rem);line-height:1.42857}.text-2xl{font-size:clamp(1.75rem,1.3rem + 1vw,2rem);line-height:1.33333}.text-3xl{font-size:clamp(2rem,1.5rem + 1.875vw,2.5rem);line-height:1.2}.text-4xl{font-size:clamp(2.25rem,1.75rem + 2.5vw,3rem);line-height:1.1}.text-5xl{font-size:clamp(3rem,2rem + 5vw,4rem);line-height:1.1}.text-6xl{font-size:clamp(3.75rem,2.5rem + 6.25vw,5rem);line-height:1}.fst-italic{font-style:italic}.fst-normal{font-style:normal}.fw-lighter{font-weight:lighter}.fw-light{font-weight:300}.fw-normal{font-weight:400}.fw-medium{font-weight:500}.fw-semibold{font-weight:600}.fw-bold{font-weight:700}.fw-bolder{font-weight:bolder}.lh-1{line-height:1}.lh-sm{line-height:1.25}.lh-base{line-height:1.5}.lh-lg{line-height:2}.text-start{text-align:start}.text-end{text-align:end}.text-center{text-align:center}.text-decoration-none{text-decoration:none}.text-decoration-underline{text-decoration:underline}.text-decoration-line-through{text-decoration:line-through}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-wrap{white-space:wrap}.text-nowrap{white-space:nowrap}.text-balance{white-space:balance}.text-pretty{white-space:pretty}.text-break{word-wrap:break-word;word-break:break-word}.fg-primary{--bs-fg:light-dark(var(--bs-blue-600),var(--bs-blue-400));color:var(--bs-fg)}.fg-accent{--bs-fg:light-dark(var(--bs-indigo-600),color-mix(in oklch,var(--bs-indigo-400),var(--bs-indigo-300)));color:var(--bs-fg)}.fg-success{--bs-fg:light-dark(var(--bs-green-600),var(--bs-green-400));color:var(--bs-fg)}.fg-danger{--bs-fg:light-dark(var(--bs-red-600),var(--bs-red-400));color:var(--bs-fg)}.fg-warning{--bs-fg:light-dark(var(--bs-yellow-700),var(--bs-yellow-400));color:var(--bs-fg)}.fg-info{--bs-fg:light-dark(var(--bs-cyan-600),var(--bs-cyan-400));color:var(--bs-fg)}.fg-inverse{--bs-fg:light-dark(var(--bs-gray-900),var(--bs-gray-200));color:var(--bs-fg)}.fg-secondary{--bs-fg:light-dark(var(--bs-gray-600),var(--bs-gray-400));color:var(--bs-fg)}.fg-body{--bs-fg:light-dark(var(--bs-gray-900),var(--bs-gray-050));color:var(--bs-fg)}.fg-1{--bs-fg:light-dark(var(--bs-gray-800),var(--bs-gray-200));color:var(--bs-fg)}.fg-2{--bs-fg:light-dark(var(--bs-gray-700),var(--bs-gray-300));color:var(--bs-fg)}.fg-3{--bs-fg:light-dark(var(--bs-gray-600),var(--bs-gray-500));color:var(--bs-fg)}.fg-4{--bs-fg:light-dark(var(--bs-gray-500),var(--bs-gray-600));color:var(--bs-fg)}.fg-white{--bs-fg:var(--bs-white);color:var(--bs-fg)}.fg-black{--bs-fg:var(--bs-black);color:var(--bs-fg)}.fg-inherit{--bs-fg:inherit;color:var(--bs-fg)}.fg-emphasis-primary{--bs-fg:light-dark(var(--bs-blue-800),var(--bs-blue-200));color:var(--bs-fg)}.fg-emphasis-accent{--bs-fg:light-dark(var(--bs-indigo-800),var(--bs-indigo-300));color:var(--bs-fg)}.fg-emphasis-success{--bs-fg:light-dark(var(--bs-green-800),var(--bs-green-300));color:var(--bs-fg)}.fg-emphasis-danger{--bs-fg:light-dark(var(--bs-red-800),var(--bs-red-300));color:var(--bs-fg)}.fg-emphasis-warning{--bs-fg:light-dark(var(--bs-yellow-800),var(--bs-yellow-300));color:var(--bs-fg)}.fg-emphasis-info{--bs-fg:light-dark(var(--bs-cyan-800),var(--bs-cyan-300));color:var(--bs-fg)}.fg-emphasis-inverse{--bs-fg:light-dark(var(--bs-gray-975),var(--bs-white));color:var(--bs-fg)}.fg-emphasis-secondary{--bs-fg:light-dark(var(--bs-gray-800),var(--bs-gray-200));color:var(--bs-fg)}.fg-contrast-primary,.fg-contrast-accent,.fg-contrast-success,.fg-contrast-danger{--bs-fg:var(--bs-white);color:var(--bs-fg)}.fg-contrast-warning,.fg-contrast-info{--bs-fg:var(--bs-gray-900);color:var(--bs-fg)}.fg-contrast-inverse{--bs-fg:light-dark(var(--bs-white),var(--bs-gray-900));color:var(--bs-fg)}.fg-contrast-secondary{--bs-fg:light-dark(var(--bs-gray-900),var(--bs-white));color:var(--bs-fg)}.fg-10{color:color-mix(in oklch,var(--bs-fg)10%,transparent)}.fg-20{color:color-mix(in oklch,var(--bs-fg)20%,transparent)}.fg-30{color:color-mix(in oklch,var(--bs-fg)30%,transparent)}.fg-40{color:color-mix(in oklch,var(--bs-fg)40%,transparent)}.fg-50{color:color-mix(in oklch,var(--bs-fg)50%,transparent)}.fg-60{color:color-mix(in oklch,var(--bs-fg)60%,transparent)}.fg-70{color:color-mix(in oklch,var(--bs-fg)70%,transparent)}.fg-80{color:color-mix(in oklch,var(--bs-fg)80%,transparent)}.fg-90{color:color-mix(in oklch,var(--bs-fg)90%,transparent)}.fg-100{color:var(--bs-fg)}.link-10,.link-10-hover:hover{color:color-mix(in oklch,var(--bs-link-color)10%,transparent)}.link-20,.link-20-hover:hover{color:color-mix(in oklch,var(--bs-link-color)20%,transparent)}.link-30,.link-30-hover:hover{color:color-mix(in oklch,var(--bs-link-color)30%,transparent)}.link-40,.link-40-hover:hover{color:color-mix(in oklch,var(--bs-link-color)40%,transparent)}.link-50,.link-50-hover:hover{color:color-mix(in oklch,var(--bs-link-color)50%,transparent)}.link-60,.link-60-hover:hover{color:color-mix(in oklch,var(--bs-link-color)60%,transparent)}.link-70,.link-70-hover:hover{color:color-mix(in oklch,var(--bs-link-color)70%,transparent)}.link-80,.link-80-hover:hover{color:color-mix(in oklch,var(--bs-link-color)80%,transparent)}.link-90,.link-90-hover:hover{color:color-mix(in oklch,var(--bs-link-color)90%,transparent)}.link-100,.link-100-hover:hover{color:var(--bs-link-color)}.underline-offset-1,.underline-offset-1-hover:hover{text-underline-offset:.125em}.underline-offset-2,.underline-offset-2-hover:hover{text-underline-offset:.25em}.underline-offset-3,.underline-offset-3-hover:hover{text-underline-offset:.375em}.underline-primary{text-decoration-color:light-dark(var(--bs-blue-600),var(--bs-blue-400))}.underline-accent{text-decoration-color:light-dark(var(--bs-indigo-600),color-mix(in oklch,var(--bs-indigo-400),var(--bs-indigo-300)))}.underline-success{text-decoration-color:light-dark(var(--bs-green-600),var(--bs-green-400))}.underline-danger{text-decoration-color:light-dark(var(--bs-red-600),var(--bs-red-400))}.underline-warning{text-decoration-color:light-dark(var(--bs-yellow-700),var(--bs-yellow-400))}.underline-info{text-decoration-color:light-dark(var(--bs-cyan-600),var(--bs-cyan-400))}.underline-inverse{text-decoration-color:light-dark(var(--bs-gray-900),var(--bs-gray-200))}.underline-secondary{text-decoration-color:light-dark(var(--bs-gray-600),var(--bs-gray-400))}.underline-10,.underline-10-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)10%,transparent)}.underline-20,.underline-20-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)20%,transparent)}.underline-30,.underline-30-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)30%,transparent)}.underline-40,.underline-40-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)40%,transparent)}.underline-50,.underline-50-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)50%,transparent)}.underline-60,.underline-60-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)60%,transparent)}.underline-70,.underline-70-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)70%,transparent)}.underline-80,.underline-80-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)80%,transparent)}.underline-90,.underline-90-hover:hover{text-decoration-color:color-mix(in oklch,var(--bs-link-color)90%,transparent)}.underline-100,.underline-100-hover:hover{text-decoration-color:var(--bs-link-color)}.underline-thickness-1,.underline-thickness-1-hover:hover{text-decoration-thickness:1px}.underline-thickness-2,.underline-thickness-2-hover:hover{text-decoration-thickness:2px}.underline-thickness-3,.underline-thickness-3-hover:hover{text-decoration-thickness:3px}.underline-thickness-4,.underline-thickness-4-hover:hover{text-decoration-thickness:4px}.underline-thickness-5,.underline-thickness-5-hover:hover{text-decoration-thickness:5px}.bg-primary{--bs-bg:var(--bs-blue-500);background-color:var(--bs-bg)}.bg-accent{--bs-bg:var(--bs-indigo-500);background-color:var(--bs-bg)}.bg-success{--bs-bg:var(--bs-green-500);background-color:var(--bs-bg)}.bg-danger{--bs-bg:var(--bs-red-500);background-color:var(--bs-bg)}.bg-warning{--bs-bg:var(--bs-yellow-500);background-color:var(--bs-bg)}.bg-info{--bs-bg:var(--bs-cyan-500);background-color:var(--bs-bg)}.bg-inverse{--bs-bg:light-dark(var(--bs-gray-900),var(--bs-gray-025));background-color:var(--bs-bg)}.bg-secondary{--bs-bg:light-dark(var(--bs-gray-100),var(--bs-gray-600));background-color:var(--bs-bg)}.bg-body{--bs-bg:light-dark(var(--bs-white),var(--bs-gray-975));background-color:var(--bs-bg)}.bg-1{--bs-bg:light-dark(var(--bs-gray-025),var(--bs-gray-950));background-color:var(--bs-bg)}.bg-2{--bs-bg:light-dark(var(--bs-gray-050),var(--bs-gray-900));background-color:var(--bs-bg)}.bg-3{--bs-bg:light-dark(var(--bs-gray-100),var(--bs-gray-800));background-color:var(--bs-bg)}.bg-4{--bs-bg:light-dark(var(--bs-gray-200),var(--bs-gray-700));background-color:var(--bs-bg)}.bg-white{--bs-bg:var(--bs-white);background-color:var(--bs-bg)}.bg-black{--bs-bg:var(--bs-black);background-color:var(--bs-bg)}.bg-transparent{--bs-bg:transparent;background-color:var(--bs-bg)}.bg-inherit{--bs-bg:inherit;background-color:var(--bs-bg)}.bg-subtle-primary{--bs-bg:light-dark(var(--bs-blue-100),var(--bs-blue-900));background-color:var(--bs-bg)}.bg-subtle-accent{--bs-bg:light-dark(var(--bs-indigo-100),var(--bs-indigo-900));background-color:var(--bs-bg)}.bg-subtle-success{--bs-bg:light-dark(var(--bs-green-100),var(--bs-green-900));background-color:var(--bs-bg)}.bg-subtle-danger{--bs-bg:light-dark(var(--bs-red-100),var(--bs-red-900));background-color:var(--bs-bg)}.bg-subtle-warning{--bs-bg:light-dark(var(--bs-yellow-100),var(--bs-yellow-900));background-color:var(--bs-bg)}.bg-subtle-info{--bs-bg:light-dark(var(--bs-cyan-100),var(--bs-cyan-900));background-color:var(--bs-bg)}.bg-subtle-inverse{--bs-bg:light-dark(var(--bs-gray-100),var(--bs-gray-900));background-color:var(--bs-bg)}.bg-subtle-secondary{--bs-bg:light-dark(var(--bs-gray-050),var(--bs-gray-800));background-color:var(--bs-bg)}.bg-muted-primary{--bs-bg:light-dark(var(--bs-blue-200),var(--bs-blue-800));background-color:var(--bs-bg)}.bg-muted-accent{--bs-bg:light-dark(var(--bs-indigo-200),var(--bs-indigo-800));background-color:var(--bs-bg)}.bg-muted-success{--bs-bg:light-dark(var(--bs-green-200),var(--bs-green-800));background-color:var(--bs-bg)}.bg-muted-danger{--bs-bg:light-dark(var(--bs-red-200),var(--bs-red-800));background-color:var(--bs-bg)}.bg-muted-warning{--bs-bg:light-dark(var(--bs-yellow-200),var(--bs-yellow-800));background-color:var(--bs-bg)}.bg-muted-info{--bs-bg:light-dark(var(--bs-cyan-200),var(--bs-cyan-800));background-color:var(--bs-bg)}.bg-muted-inverse{--bs-bg:light-dark(var(--bs-gray-200),var(--bs-gray-300));background-color:var(--bs-bg)}.bg-muted-secondary{--bs-bg:light-dark(var(--bs-gray-100),var(--bs-gray-700));background-color:var(--bs-bg)}.bg-10{background-color:color-mix(in oklch,var(--bs-bg)10%,transparent)}.bg-20{background-color:color-mix(in oklch,var(--bs-bg)20%,transparent)}.bg-30{background-color:color-mix(in oklch,var(--bs-bg)30%,transparent)}.bg-40{background-color:color-mix(in oklch,var(--bs-bg)40%,transparent)}.bg-50{background-color:color-mix(in oklch,var(--bs-bg)50%,transparent)}.bg-60{background-color:color-mix(in oklch,var(--bs-bg)60%,transparent)}.bg-70{background-color:color-mix(in oklch,var(--bs-bg)70%,transparent)}.bg-80{background-color:color-mix(in oklch,var(--bs-bg)80%,transparent)}.bg-90{background-color:color-mix(in oklch,var(--bs-bg)90%,transparent)}.bg-100{background-color:var(--bs-bg)}.theme-contrast{background-color:var(--bs-theme-bg);color:var(--bs-theme-contrast)}.theme-subtle{background-color:var(--bs-theme-bg-subtle);color:var(--bs-theme-text)}.theme-muted{background-color:var(--bs-theme-bg-muted);color:var(--bs-theme-text-emphasis)}.theme-border{border:var(--bs-border-width)solid var(--bs-theme-border)}.bg-gradient{background-image:var(--bs-gradient)}.user-select-all{user-select:all}.user-select-auto{user-select:auto}.user-select-text{user-select:text}.user-select-none{user-select:none}.pe-none{pointer-events:none}.pe-auto{pointer-events:auto}.rounded{border-radius:var(--bs-border-radius)}.rounded-0{border-radius:0}.rounded-1{border-radius:var(--bs-border-radius-sm)}.rounded-2{border-radius:var(--bs-border-radius)}.rounded-3{border-radius:var(--bs-border-radius-lg)}.rounded-4{border-radius:var(--bs-border-radius-xl)}.rounded-5{border-radius:var(--bs-border-radius-2xl)}.rounded-circle{border-radius:50%}.rounded-pill{border-radius:var(--bs-border-radius-pill)}.rounded-top{border-start-start-radius:var(--bs-border-radius);border-start-end-radius:var(--bs-border-radius)}.rounded-top-0{border-start-start-radius:0;border-start-end-radius:0}.rounded-top-1{border-start-start-radius:var(--bs-border-radius-sm);border-start-end-radius:var(--bs-border-radius-sm)}.rounded-top-2{border-start-start-radius:var(--bs-border-radius);border-start-end-radius:var(--bs-border-radius)}.rounded-top-3{border-start-start-radius:var(--bs-border-radius-lg);border-start-end-radius:var(--bs-border-radius-lg)}.rounded-top-4{border-start-start-radius:var(--bs-border-radius-xl);border-start-end-radius:var(--bs-border-radius-xl)}.rounded-top-5{border-start-start-radius:var(--bs-border-radius-2xl);border-start-end-radius:var(--bs-border-radius-2xl)}.rounded-top-circle{border-start-start-radius:50%;border-start-end-radius:50%}.rounded-top-pill{border-start-start-radius:var(--bs-border-radius-pill);border-start-end-radius:var(--bs-border-radius-pill)}.rounded-end{border-end-end-radius:var(--bs-border-radius);border-end-start-radius:var(--bs-border-radius)}.rounded-end-0{border-end-end-radius:0;border-end-start-radius:0}.rounded-end-1{border-end-end-radius:var(--bs-border-radius-sm);border-end-start-radius:var(--bs-border-radius-sm)}.rounded-end-2{border-end-end-radius:var(--bs-border-radius);border-end-start-radius:var(--bs-border-radius)}.rounded-end-3{border-end-end-radius:var(--bs-border-radius-lg);border-end-start-radius:var(--bs-border-radius-lg)}.rounded-end-4{border-end-end-radius:var(--bs-border-radius-xl);border-end-start-radius:var(--bs-border-radius-xl)}.rounded-end-5{border-end-end-radius:var(--bs-border-radius-2xl);border-end-start-radius:var(--bs-border-radius-2xl)}.rounded-end-circle{border-end-end-radius:50%;border-end-start-radius:50%}.rounded-end-pill{border-end-end-radius:var(--bs-border-radius-pill);border-end-start-radius:var(--bs-border-radius-pill)}.rounded-bottom{border-end-end-radius:var(--bs-border-radius);border-end-start-radius:var(--bs-border-radius)}.rounded-bottom-0{border-end-end-radius:0;border-end-start-radius:0}.rounded-bottom-1{border-end-end-radius:var(--bs-border-radius-sm);border-end-start-radius:var(--bs-border-radius-sm)}.rounded-bottom-2{border-end-end-radius:var(--bs-border-radius);border-end-start-radius:var(--bs-border-radius)}.rounded-bottom-3{border-end-end-radius:var(--bs-border-radius-lg);border-end-start-radius:var(--bs-border-radius-lg)}.rounded-bottom-4{border-end-end-radius:var(--bs-border-radius-xl);border-end-start-radius:var(--bs-border-radius-xl)}.rounded-bottom-5{border-end-end-radius:var(--bs-border-radius-2xl);border-end-start-radius:var(--bs-border-radius-2xl)}.rounded-bottom-circle{border-end-end-radius:50%;border-end-start-radius:50%}.rounded-bottom-pill{border-end-end-radius:var(--bs-border-radius-pill);border-end-start-radius:var(--bs-border-radius-pill)}.rounded-start{border-start-start-radius:var(--bs-border-radius);border-start-end-radius:var(--bs-border-radius)}.rounded-start-0{border-start-start-radius:0;border-start-end-radius:0}.rounded-start-1{border-start-start-radius:var(--bs-border-radius-sm);border-start-end-radius:var(--bs-border-radius-sm)}.rounded-start-2{border-start-start-radius:var(--bs-border-radius);border-start-end-radius:var(--bs-border-radius)}.rounded-start-3{border-start-start-radius:var(--bs-border-radius-lg);border-start-end-radius:var(--bs-border-radius-lg)}.rounded-start-4{border-start-start-radius:var(--bs-border-radius-xl);border-start-end-radius:var(--bs-border-radius-xl)}.rounded-start-5{border-start-start-radius:var(--bs-border-radius-2xl);border-start-end-radius:var(--bs-border-radius-2xl)}.rounded-start-circle{border-start-start-radius:50%;border-start-end-radius:50%}.rounded-start-pill{border-start-start-radius:var(--bs-border-radius-pill);border-start-end-radius:var(--bs-border-radius-pill)}.visible{visibility:visible}.invisible{visibility:hidden}.z-n1{z-index:-1}.z-0{z-index:0}.z-1{z-index:1}.z-2{z-index:2}.z-3{z-index:3}@media (width>=576px){.float-sm-start{float:inline-start}.float-sm-end{float:inline-end}.float-sm-none{float:none}.object-fit-sm-contain{-o-object-fit:contain;object-fit:contain}.object-fit-sm-cover{-o-object-fit:cover;object-fit:cover}.object-fit-sm-fill{-o-object-fit:fill;object-fit:fill}.object-fit-sm-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-sm-none{-o-object-fit:none;object-fit:none}.d-sm-inline{display:inline}.d-sm-inline-block{display:inline-block}.d-sm-block{display:block}.d-sm-grid{display:grid}.d-sm-inline-grid{display:inline-grid}.d-sm-table{display:table}.d-sm-table-row{display:table-row}.d-sm-table-cell{display:table-cell}.d-sm-flex{display:flex}.d-sm-inline-flex{display:inline-flex}.d-sm-contents{display:contents}.d-sm-flow-root{display:flow-root}.d-sm-none{display:none}.flex-sm-fill{flex:auto}.flex-sm-row{flex-direction:row}.flex-sm-column{flex-direction:column}.flex-sm-row-reverse{flex-direction:row-reverse}.flex-sm-column-reverse{flex-direction:column-reverse}.flex-sm-grow-0{flex-grow:0}.flex-sm-grow-1{flex-grow:1}.flex-sm-shrink-0{flex-shrink:0}.flex-sm-shrink-1{flex-shrink:1}.flex-sm-wrap{flex-wrap:wrap}.flex-sm-nowrap{flex-wrap:nowrap}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-sm-start{justify-content:flex-start}.justify-content-sm-end{justify-content:flex-end}.justify-content-sm-center{justify-content:center}.justify-content-sm-between{justify-content:space-between}.justify-content-sm-around{justify-content:space-around}.justify-content-sm-evenly{justify-content:space-evenly}.justify-items-sm-start{justify-items:start}.justify-items-sm-end{justify-items:end}.justify-items-sm-center{justify-items:center}.justify-items-sm-stretch{justify-items:stretch}.justify-self-sm-start{justify-self:flex-start}.justify-self-sm-end{justify-self:flex-end}.justify-self-sm-center{justify-self:center}.align-items-sm-start{align-items:flex-start}.align-items-sm-end{align-items:flex-end}.align-items-sm-center{align-items:center}.align-items-sm-baseline{align-items:baseline}.align-items-sm-stretch{align-items:stretch}.align-content-sm-start{align-content:flex-start}.align-content-sm-end{align-content:flex-end}.align-content-sm-center{align-content:center}.align-content-sm-between{align-content:space-between}.align-content-sm-around{align-content:space-around}.align-content-sm-stretch{align-content:stretch}.align-self-sm-auto{align-self:auto}.align-self-sm-start{align-self:flex-start}.align-self-sm-end{align-self:flex-end}.align-self-sm-center{align-self:center}.align-self-sm-baseline{align-self:baseline}.align-self-sm-stretch{align-self:stretch}.place-items-sm-start{place-items:start}.place-items-sm-end{place-items:end}.place-items-sm-center{place-items:center}.place-items-sm-stretch{place-items:stretch stretch}.grid-cols-sm-3{--bs-columns:3}.grid-cols-sm-4{--bs-columns:4}.grid-cols-sm-6{--bs-columns:6}.grid-cols-sm-fill{grid-column:1/-1}.grid-auto-flow-sm-row{grid-auto-flow:row}.grid-auto-flow-sm-column{grid-auto-flow:column}.grid-auto-flow-sm-dense{grid-auto-flow:dense}.order-sm-first{order:-1}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-last{order:6}.m-sm-0{margin:0}.m-sm-1{margin:.25rem}.m-sm-2{margin:.5rem}.m-sm-3{margin:1rem}.m-sm-4{margin:1.5rem}.m-sm-5{margin:3rem}.m-sm-auto{margin:auto}.mx-sm-0{margin-inline:0}.mx-sm-1{margin-inline:.25rem}.mx-sm-2{margin-inline:.5rem}.mx-sm-3{margin-inline:1rem}.mx-sm-4{margin-inline:1.5rem}.mx-sm-5{margin-inline:3rem}.mx-sm-auto{margin-inline:auto}.my-sm-0{margin-block:0}.my-sm-1{margin-block:.25rem}.my-sm-2{margin-block:.5rem}.my-sm-3{margin-block:1rem}.my-sm-4{margin-block:1.5rem}.my-sm-5{margin-block:3rem}.my-sm-auto{margin-block:auto}.mt-sm-0{margin-block-start:0}.mt-sm-1{margin-block-start:.25rem}.mt-sm-2{margin-block-start:.5rem}.mt-sm-3{margin-block-start:1rem}.mt-sm-4{margin-block-start:1.5rem}.mt-sm-5{margin-block-start:3rem}.mt-sm-auto{margin-block-start:auto}.me-sm-0{margin-inline-end:0}.me-sm-1{margin-inline-end:.25rem}.me-sm-2{margin-inline-end:.5rem}.me-sm-3{margin-inline-end:1rem}.me-sm-4{margin-inline-end:1.5rem}.me-sm-5{margin-inline-end:3rem}.me-sm-auto{margin-inline-end:auto}.mb-sm-0{margin-block-end:0}.mb-sm-1{margin-block-end:.25rem}.mb-sm-2{margin-block-end:.5rem}.mb-sm-3{margin-block-end:1rem}.mb-sm-4{margin-block-end:1.5rem}.mb-sm-5{margin-block-end:3rem}.mb-sm-auto{margin-block-end:auto}.ms-sm-0{margin-inline-start:0}.ms-sm-1{margin-inline-start:.25rem}.ms-sm-2{margin-inline-start:.5rem}.ms-sm-3{margin-inline-start:1rem}.ms-sm-4{margin-inline-start:1.5rem}.ms-sm-5{margin-inline-start:3rem}.ms-sm--1{margin-inline-start:-.25rem}.ms-sm--2{margin-inline-start:-.5rem}.ms-sm-auto{margin-inline-start:auto}.p-sm-0{padding:0}.p-sm-1{padding:.25rem}.p-sm-2{padding:.5rem}.p-sm-3{padding:1rem}.p-sm-4{padding:1.5rem}.p-sm-5{padding:3rem}.px-sm-0{padding-inline:0}.px-sm-1{padding-inline:.25rem}.px-sm-2{padding-inline:.5rem}.px-sm-3{padding-inline:1rem}.px-sm-4{padding-inline:1.5rem}.px-sm-5{padding-inline:3rem}.py-sm-0{padding-block:0}.py-sm-1{padding-block:.25rem}.py-sm-2{padding-block:.5rem}.py-sm-3{padding-block:1rem}.py-sm-4{padding-block:1.5rem}.py-sm-5{padding-block:3rem}.pt-sm-0{padding-block-start:0}.pt-sm-1{padding-block-start:.25rem}.pt-sm-2{padding-block-start:.5rem}.pt-sm-3{padding-block-start:1rem}.pt-sm-4{padding-block-start:1.5rem}.pt-sm-5{padding-block-start:3rem}.pe-sm-0{padding-inline-end:0}.pe-sm-1{padding-inline-end:.25rem}.pe-sm-2{padding-inline-end:.5rem}.pe-sm-3{padding-inline-end:1rem}.pe-sm-4{padding-inline-end:1.5rem}.pe-sm-5{padding-inline-end:3rem}.pb-sm-0{padding-block-end:0}.pb-sm-1{padding-block-end:.25rem}.pb-sm-2{padding-block-end:.5rem}.pb-sm-3{padding-block-end:1rem}.pb-sm-4{padding-block-end:1.5rem}.pb-sm-5{padding-block-end:3rem}.ps-sm-0{padding-inline-start:0}.ps-sm-1{padding-inline-start:.25rem}.ps-sm-2{padding-inline-start:.5rem}.ps-sm-3{padding-inline-start:1rem}.ps-sm-4{padding-inline-start:1.5rem}.ps-sm-5{padding-inline-start:3rem}.gap-sm-0{gap:0}.gap-sm-1{gap:.25rem}.gap-sm-2{gap:.5rem}.gap-sm-3{gap:1rem}.gap-sm-4{gap:1.5rem}.gap-sm-5{gap:3rem}.row-gap-sm-0{row-gap:0}.row-gap-sm-1{row-gap:.25rem}.row-gap-sm-2{row-gap:.5rem}.row-gap-sm-3{row-gap:1rem}.row-gap-sm-4{row-gap:1.5rem}.row-gap-sm-5{row-gap:3rem}.column-gap-sm-0{-moz-column-gap:0;column-gap:0}.column-gap-sm-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-sm-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-sm-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-sm-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-sm-5{-moz-column-gap:3rem;column-gap:3rem}.text-sm-start{text-align:start}.text-sm-end{text-align:end}.text-sm-center{text-align:center}}@media (width>=768px){.float-md-start{float:inline-start}.float-md-end{float:inline-end}.float-md-none{float:none}.object-fit-md-contain{-o-object-fit:contain;object-fit:contain}.object-fit-md-cover{-o-object-fit:cover;object-fit:cover}.object-fit-md-fill{-o-object-fit:fill;object-fit:fill}.object-fit-md-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-md-none{-o-object-fit:none;object-fit:none}.d-md-inline{display:inline}.d-md-inline-block{display:inline-block}.d-md-block{display:block}.d-md-grid{display:grid}.d-md-inline-grid{display:inline-grid}.d-md-table{display:table}.d-md-table-row{display:table-row}.d-md-table-cell{display:table-cell}.d-md-flex{display:flex}.d-md-inline-flex{display:inline-flex}.d-md-contents{display:contents}.d-md-flow-root{display:flow-root}.d-md-none{display:none}.flex-md-fill{flex:auto}.flex-md-row{flex-direction:row}.flex-md-column{flex-direction:column}.flex-md-row-reverse{flex-direction:row-reverse}.flex-md-column-reverse{flex-direction:column-reverse}.flex-md-grow-0{flex-grow:0}.flex-md-grow-1{flex-grow:1}.flex-md-shrink-0{flex-shrink:0}.flex-md-shrink-1{flex-shrink:1}.flex-md-wrap{flex-wrap:wrap}.flex-md-nowrap{flex-wrap:nowrap}.flex-md-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-md-start{justify-content:flex-start}.justify-content-md-end{justify-content:flex-end}.justify-content-md-center{justify-content:center}.justify-content-md-between{justify-content:space-between}.justify-content-md-around{justify-content:space-around}.justify-content-md-evenly{justify-content:space-evenly}.justify-items-md-start{justify-items:start}.justify-items-md-end{justify-items:end}.justify-items-md-center{justify-items:center}.justify-items-md-stretch{justify-items:stretch}.justify-self-md-start{justify-self:flex-start}.justify-self-md-end{justify-self:flex-end}.justify-self-md-center{justify-self:center}.align-items-md-start{align-items:flex-start}.align-items-md-end{align-items:flex-end}.align-items-md-center{align-items:center}.align-items-md-baseline{align-items:baseline}.align-items-md-stretch{align-items:stretch}.align-content-md-start{align-content:flex-start}.align-content-md-end{align-content:flex-end}.align-content-md-center{align-content:center}.align-content-md-between{align-content:space-between}.align-content-md-around{align-content:space-around}.align-content-md-stretch{align-content:stretch}.align-self-md-auto{align-self:auto}.align-self-md-start{align-self:flex-start}.align-self-md-end{align-self:flex-end}.align-self-md-center{align-self:center}.align-self-md-baseline{align-self:baseline}.align-self-md-stretch{align-self:stretch}.place-items-md-start{place-items:start}.place-items-md-end{place-items:end}.place-items-md-center{place-items:center}.place-items-md-stretch{place-items:stretch stretch}.grid-cols-md-3{--bs-columns:3}.grid-cols-md-4{--bs-columns:4}.grid-cols-md-6{--bs-columns:6}.grid-cols-md-fill{grid-column:1/-1}.grid-auto-flow-md-row{grid-auto-flow:row}.grid-auto-flow-md-column{grid-auto-flow:column}.grid-auto-flow-md-dense{grid-auto-flow:dense}.order-md-first{order:-1}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-last{order:6}.m-md-0{margin:0}.m-md-1{margin:.25rem}.m-md-2{margin:.5rem}.m-md-3{margin:1rem}.m-md-4{margin:1.5rem}.m-md-5{margin:3rem}.m-md-auto{margin:auto}.mx-md-0{margin-inline:0}.mx-md-1{margin-inline:.25rem}.mx-md-2{margin-inline:.5rem}.mx-md-3{margin-inline:1rem}.mx-md-4{margin-inline:1.5rem}.mx-md-5{margin-inline:3rem}.mx-md-auto{margin-inline:auto}.my-md-0{margin-block:0}.my-md-1{margin-block:.25rem}.my-md-2{margin-block:.5rem}.my-md-3{margin-block:1rem}.my-md-4{margin-block:1.5rem}.my-md-5{margin-block:3rem}.my-md-auto{margin-block:auto}.mt-md-0{margin-block-start:0}.mt-md-1{margin-block-start:.25rem}.mt-md-2{margin-block-start:.5rem}.mt-md-3{margin-block-start:1rem}.mt-md-4{margin-block-start:1.5rem}.mt-md-5{margin-block-start:3rem}.mt-md-auto{margin-block-start:auto}.me-md-0{margin-inline-end:0}.me-md-1{margin-inline-end:.25rem}.me-md-2{margin-inline-end:.5rem}.me-md-3{margin-inline-end:1rem}.me-md-4{margin-inline-end:1.5rem}.me-md-5{margin-inline-end:3rem}.me-md-auto{margin-inline-end:auto}.mb-md-0{margin-block-end:0}.mb-md-1{margin-block-end:.25rem}.mb-md-2{margin-block-end:.5rem}.mb-md-3{margin-block-end:1rem}.mb-md-4{margin-block-end:1.5rem}.mb-md-5{margin-block-end:3rem}.mb-md-auto{margin-block-end:auto}.ms-md-0{margin-inline-start:0}.ms-md-1{margin-inline-start:.25rem}.ms-md-2{margin-inline-start:.5rem}.ms-md-3{margin-inline-start:1rem}.ms-md-4{margin-inline-start:1.5rem}.ms-md-5{margin-inline-start:3rem}.ms-md--1{margin-inline-start:-.25rem}.ms-md--2{margin-inline-start:-.5rem}.ms-md-auto{margin-inline-start:auto}.p-md-0{padding:0}.p-md-1{padding:.25rem}.p-md-2{padding:.5rem}.p-md-3{padding:1rem}.p-md-4{padding:1.5rem}.p-md-5{padding:3rem}.px-md-0{padding-inline:0}.px-md-1{padding-inline:.25rem}.px-md-2{padding-inline:.5rem}.px-md-3{padding-inline:1rem}.px-md-4{padding-inline:1.5rem}.px-md-5{padding-inline:3rem}.py-md-0{padding-block:0}.py-md-1{padding-block:.25rem}.py-md-2{padding-block:.5rem}.py-md-3{padding-block:1rem}.py-md-4{padding-block:1.5rem}.py-md-5{padding-block:3rem}.pt-md-0{padding-block-start:0}.pt-md-1{padding-block-start:.25rem}.pt-md-2{padding-block-start:.5rem}.pt-md-3{padding-block-start:1rem}.pt-md-4{padding-block-start:1.5rem}.pt-md-5{padding-block-start:3rem}.pe-md-0{padding-inline-end:0}.pe-md-1{padding-inline-end:.25rem}.pe-md-2{padding-inline-end:.5rem}.pe-md-3{padding-inline-end:1rem}.pe-md-4{padding-inline-end:1.5rem}.pe-md-5{padding-inline-end:3rem}.pb-md-0{padding-block-end:0}.pb-md-1{padding-block-end:.25rem}.pb-md-2{padding-block-end:.5rem}.pb-md-3{padding-block-end:1rem}.pb-md-4{padding-block-end:1.5rem}.pb-md-5{padding-block-end:3rem}.ps-md-0{padding-inline-start:0}.ps-md-1{padding-inline-start:.25rem}.ps-md-2{padding-inline-start:.5rem}.ps-md-3{padding-inline-start:1rem}.ps-md-4{padding-inline-start:1.5rem}.ps-md-5{padding-inline-start:3rem}.gap-md-0{gap:0}.gap-md-1{gap:.25rem}.gap-md-2{gap:.5rem}.gap-md-3{gap:1rem}.gap-md-4{gap:1.5rem}.gap-md-5{gap:3rem}.row-gap-md-0{row-gap:0}.row-gap-md-1{row-gap:.25rem}.row-gap-md-2{row-gap:.5rem}.row-gap-md-3{row-gap:1rem}.row-gap-md-4{row-gap:1.5rem}.row-gap-md-5{row-gap:3rem}.column-gap-md-0{-moz-column-gap:0;column-gap:0}.column-gap-md-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-md-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-md-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-md-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-md-5{-moz-column-gap:3rem;column-gap:3rem}.text-md-start{text-align:start}.text-md-end{text-align:end}.text-md-center{text-align:center}}@media (width>=1024px){.float-lg-start{float:inline-start}.float-lg-end{float:inline-end}.float-lg-none{float:none}.object-fit-lg-contain{-o-object-fit:contain;object-fit:contain}.object-fit-lg-cover{-o-object-fit:cover;object-fit:cover}.object-fit-lg-fill{-o-object-fit:fill;object-fit:fill}.object-fit-lg-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-lg-none{-o-object-fit:none;object-fit:none}.d-lg-inline{display:inline}.d-lg-inline-block{display:inline-block}.d-lg-block{display:block}.d-lg-grid{display:grid}.d-lg-inline-grid{display:inline-grid}.d-lg-table{display:table}.d-lg-table-row{display:table-row}.d-lg-table-cell{display:table-cell}.d-lg-flex{display:flex}.d-lg-inline-flex{display:inline-flex}.d-lg-contents{display:contents}.d-lg-flow-root{display:flow-root}.d-lg-none{display:none}.flex-lg-fill{flex:auto}.flex-lg-row{flex-direction:row}.flex-lg-column{flex-direction:column}.flex-lg-row-reverse{flex-direction:row-reverse}.flex-lg-column-reverse{flex-direction:column-reverse}.flex-lg-grow-0{flex-grow:0}.flex-lg-grow-1{flex-grow:1}.flex-lg-shrink-0{flex-shrink:0}.flex-lg-shrink-1{flex-shrink:1}.flex-lg-wrap{flex-wrap:wrap}.flex-lg-nowrap{flex-wrap:nowrap}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-lg-start{justify-content:flex-start}.justify-content-lg-end{justify-content:flex-end}.justify-content-lg-center{justify-content:center}.justify-content-lg-between{justify-content:space-between}.justify-content-lg-around{justify-content:space-around}.justify-content-lg-evenly{justify-content:space-evenly}.justify-items-lg-start{justify-items:start}.justify-items-lg-end{justify-items:end}.justify-items-lg-center{justify-items:center}.justify-items-lg-stretch{justify-items:stretch}.justify-self-lg-start{justify-self:flex-start}.justify-self-lg-end{justify-self:flex-end}.justify-self-lg-center{justify-self:center}.align-items-lg-start{align-items:flex-start}.align-items-lg-end{align-items:flex-end}.align-items-lg-center{align-items:center}.align-items-lg-baseline{align-items:baseline}.align-items-lg-stretch{align-items:stretch}.align-content-lg-start{align-content:flex-start}.align-content-lg-end{align-content:flex-end}.align-content-lg-center{align-content:center}.align-content-lg-between{align-content:space-between}.align-content-lg-around{align-content:space-around}.align-content-lg-stretch{align-content:stretch}.align-self-lg-auto{align-self:auto}.align-self-lg-start{align-self:flex-start}.align-self-lg-end{align-self:flex-end}.align-self-lg-center{align-self:center}.align-self-lg-baseline{align-self:baseline}.align-self-lg-stretch{align-self:stretch}.place-items-lg-start{place-items:start}.place-items-lg-end{place-items:end}.place-items-lg-center{place-items:center}.place-items-lg-stretch{place-items:stretch stretch}.grid-cols-lg-3{--bs-columns:3}.grid-cols-lg-4{--bs-columns:4}.grid-cols-lg-6{--bs-columns:6}.grid-cols-lg-fill{grid-column:1/-1}.grid-auto-flow-lg-row{grid-auto-flow:row}.grid-auto-flow-lg-column{grid-auto-flow:column}.grid-auto-flow-lg-dense{grid-auto-flow:dense}.order-lg-first{order:-1}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-last{order:6}.m-lg-0{margin:0}.m-lg-1{margin:.25rem}.m-lg-2{margin:.5rem}.m-lg-3{margin:1rem}.m-lg-4{margin:1.5rem}.m-lg-5{margin:3rem}.m-lg-auto{margin:auto}.mx-lg-0{margin-inline:0}.mx-lg-1{margin-inline:.25rem}.mx-lg-2{margin-inline:.5rem}.mx-lg-3{margin-inline:1rem}.mx-lg-4{margin-inline:1.5rem}.mx-lg-5{margin-inline:3rem}.mx-lg-auto{margin-inline:auto}.my-lg-0{margin-block:0}.my-lg-1{margin-block:.25rem}.my-lg-2{margin-block:.5rem}.my-lg-3{margin-block:1rem}.my-lg-4{margin-block:1.5rem}.my-lg-5{margin-block:3rem}.my-lg-auto{margin-block:auto}.mt-lg-0{margin-block-start:0}.mt-lg-1{margin-block-start:.25rem}.mt-lg-2{margin-block-start:.5rem}.mt-lg-3{margin-block-start:1rem}.mt-lg-4{margin-block-start:1.5rem}.mt-lg-5{margin-block-start:3rem}.mt-lg-auto{margin-block-start:auto}.me-lg-0{margin-inline-end:0}.me-lg-1{margin-inline-end:.25rem}.me-lg-2{margin-inline-end:.5rem}.me-lg-3{margin-inline-end:1rem}.me-lg-4{margin-inline-end:1.5rem}.me-lg-5{margin-inline-end:3rem}.me-lg-auto{margin-inline-end:auto}.mb-lg-0{margin-block-end:0}.mb-lg-1{margin-block-end:.25rem}.mb-lg-2{margin-block-end:.5rem}.mb-lg-3{margin-block-end:1rem}.mb-lg-4{margin-block-end:1.5rem}.mb-lg-5{margin-block-end:3rem}.mb-lg-auto{margin-block-end:auto}.ms-lg-0{margin-inline-start:0}.ms-lg-1{margin-inline-start:.25rem}.ms-lg-2{margin-inline-start:.5rem}.ms-lg-3{margin-inline-start:1rem}.ms-lg-4{margin-inline-start:1.5rem}.ms-lg-5{margin-inline-start:3rem}.ms-lg--1{margin-inline-start:-.25rem}.ms-lg--2{margin-inline-start:-.5rem}.ms-lg-auto{margin-inline-start:auto}.p-lg-0{padding:0}.p-lg-1{padding:.25rem}.p-lg-2{padding:.5rem}.p-lg-3{padding:1rem}.p-lg-4{padding:1.5rem}.p-lg-5{padding:3rem}.px-lg-0{padding-inline:0}.px-lg-1{padding-inline:.25rem}.px-lg-2{padding-inline:.5rem}.px-lg-3{padding-inline:1rem}.px-lg-4{padding-inline:1.5rem}.px-lg-5{padding-inline:3rem}.py-lg-0{padding-block:0}.py-lg-1{padding-block:.25rem}.py-lg-2{padding-block:.5rem}.py-lg-3{padding-block:1rem}.py-lg-4{padding-block:1.5rem}.py-lg-5{padding-block:3rem}.pt-lg-0{padding-block-start:0}.pt-lg-1{padding-block-start:.25rem}.pt-lg-2{padding-block-start:.5rem}.pt-lg-3{padding-block-start:1rem}.pt-lg-4{padding-block-start:1.5rem}.pt-lg-5{padding-block-start:3rem}.pe-lg-0{padding-inline-end:0}.pe-lg-1{padding-inline-end:.25rem}.pe-lg-2{padding-inline-end:.5rem}.pe-lg-3{padding-inline-end:1rem}.pe-lg-4{padding-inline-end:1.5rem}.pe-lg-5{padding-inline-end:3rem}.pb-lg-0{padding-block-end:0}.pb-lg-1{padding-block-end:.25rem}.pb-lg-2{padding-block-end:.5rem}.pb-lg-3{padding-block-end:1rem}.pb-lg-4{padding-block-end:1.5rem}.pb-lg-5{padding-block-end:3rem}.ps-lg-0{padding-inline-start:0}.ps-lg-1{padding-inline-start:.25rem}.ps-lg-2{padding-inline-start:.5rem}.ps-lg-3{padding-inline-start:1rem}.ps-lg-4{padding-inline-start:1.5rem}.ps-lg-5{padding-inline-start:3rem}.gap-lg-0{gap:0}.gap-lg-1{gap:.25rem}.gap-lg-2{gap:.5rem}.gap-lg-3{gap:1rem}.gap-lg-4{gap:1.5rem}.gap-lg-5{gap:3rem}.row-gap-lg-0{row-gap:0}.row-gap-lg-1{row-gap:.25rem}.row-gap-lg-2{row-gap:.5rem}.row-gap-lg-3{row-gap:1rem}.row-gap-lg-4{row-gap:1.5rem}.row-gap-lg-5{row-gap:3rem}.column-gap-lg-0{-moz-column-gap:0;column-gap:0}.column-gap-lg-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-lg-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-lg-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-lg-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-lg-5{-moz-column-gap:3rem;column-gap:3rem}.text-lg-start{text-align:start}.text-lg-end{text-align:end}.text-lg-center{text-align:center}}@media (width>=1280px){.float-xl-start{float:inline-start}.float-xl-end{float:inline-end}.float-xl-none{float:none}.object-fit-xl-contain{-o-object-fit:contain;object-fit:contain}.object-fit-xl-cover{-o-object-fit:cover;object-fit:cover}.object-fit-xl-fill{-o-object-fit:fill;object-fit:fill}.object-fit-xl-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-xl-none{-o-object-fit:none;object-fit:none}.d-xl-inline{display:inline}.d-xl-inline-block{display:inline-block}.d-xl-block{display:block}.d-xl-grid{display:grid}.d-xl-inline-grid{display:inline-grid}.d-xl-table{display:table}.d-xl-table-row{display:table-row}.d-xl-table-cell{display:table-cell}.d-xl-flex{display:flex}.d-xl-inline-flex{display:inline-flex}.d-xl-contents{display:contents}.d-xl-flow-root{display:flow-root}.d-xl-none{display:none}.flex-xl-fill{flex:auto}.flex-xl-row{flex-direction:row}.flex-xl-column{flex-direction:column}.flex-xl-row-reverse{flex-direction:row-reverse}.flex-xl-column-reverse{flex-direction:column-reverse}.flex-xl-grow-0{flex-grow:0}.flex-xl-grow-1{flex-grow:1}.flex-xl-shrink-0{flex-shrink:0}.flex-xl-shrink-1{flex-shrink:1}.flex-xl-wrap{flex-wrap:wrap}.flex-xl-nowrap{flex-wrap:nowrap}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-xl-start{justify-content:flex-start}.justify-content-xl-end{justify-content:flex-end}.justify-content-xl-center{justify-content:center}.justify-content-xl-between{justify-content:space-between}.justify-content-xl-around{justify-content:space-around}.justify-content-xl-evenly{justify-content:space-evenly}.justify-items-xl-start{justify-items:start}.justify-items-xl-end{justify-items:end}.justify-items-xl-center{justify-items:center}.justify-items-xl-stretch{justify-items:stretch}.justify-self-xl-start{justify-self:flex-start}.justify-self-xl-end{justify-self:flex-end}.justify-self-xl-center{justify-self:center}.align-items-xl-start{align-items:flex-start}.align-items-xl-end{align-items:flex-end}.align-items-xl-center{align-items:center}.align-items-xl-baseline{align-items:baseline}.align-items-xl-stretch{align-items:stretch}.align-content-xl-start{align-content:flex-start}.align-content-xl-end{align-content:flex-end}.align-content-xl-center{align-content:center}.align-content-xl-between{align-content:space-between}.align-content-xl-around{align-content:space-around}.align-content-xl-stretch{align-content:stretch}.align-self-xl-auto{align-self:auto}.align-self-xl-start{align-self:flex-start}.align-self-xl-end{align-self:flex-end}.align-self-xl-center{align-self:center}.align-self-xl-baseline{align-self:baseline}.align-self-xl-stretch{align-self:stretch}.place-items-xl-start{place-items:start}.place-items-xl-end{place-items:end}.place-items-xl-center{place-items:center}.place-items-xl-stretch{place-items:stretch stretch}.grid-cols-xl-3{--bs-columns:3}.grid-cols-xl-4{--bs-columns:4}.grid-cols-xl-6{--bs-columns:6}.grid-cols-xl-fill{grid-column:1/-1}.grid-auto-flow-xl-row{grid-auto-flow:row}.grid-auto-flow-xl-column{grid-auto-flow:column}.grid-auto-flow-xl-dense{grid-auto-flow:dense}.order-xl-first{order:-1}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-last{order:6}.m-xl-0{margin:0}.m-xl-1{margin:.25rem}.m-xl-2{margin:.5rem}.m-xl-3{margin:1rem}.m-xl-4{margin:1.5rem}.m-xl-5{margin:3rem}.m-xl-auto{margin:auto}.mx-xl-0{margin-inline:0}.mx-xl-1{margin-inline:.25rem}.mx-xl-2{margin-inline:.5rem}.mx-xl-3{margin-inline:1rem}.mx-xl-4{margin-inline:1.5rem}.mx-xl-5{margin-inline:3rem}.mx-xl-auto{margin-inline:auto}.my-xl-0{margin-block:0}.my-xl-1{margin-block:.25rem}.my-xl-2{margin-block:.5rem}.my-xl-3{margin-block:1rem}.my-xl-4{margin-block:1.5rem}.my-xl-5{margin-block:3rem}.my-xl-auto{margin-block:auto}.mt-xl-0{margin-block-start:0}.mt-xl-1{margin-block-start:.25rem}.mt-xl-2{margin-block-start:.5rem}.mt-xl-3{margin-block-start:1rem}.mt-xl-4{margin-block-start:1.5rem}.mt-xl-5{margin-block-start:3rem}.mt-xl-auto{margin-block-start:auto}.me-xl-0{margin-inline-end:0}.me-xl-1{margin-inline-end:.25rem}.me-xl-2{margin-inline-end:.5rem}.me-xl-3{margin-inline-end:1rem}.me-xl-4{margin-inline-end:1.5rem}.me-xl-5{margin-inline-end:3rem}.me-xl-auto{margin-inline-end:auto}.mb-xl-0{margin-block-end:0}.mb-xl-1{margin-block-end:.25rem}.mb-xl-2{margin-block-end:.5rem}.mb-xl-3{margin-block-end:1rem}.mb-xl-4{margin-block-end:1.5rem}.mb-xl-5{margin-block-end:3rem}.mb-xl-auto{margin-block-end:auto}.ms-xl-0{margin-inline-start:0}.ms-xl-1{margin-inline-start:.25rem}.ms-xl-2{margin-inline-start:.5rem}.ms-xl-3{margin-inline-start:1rem}.ms-xl-4{margin-inline-start:1.5rem}.ms-xl-5{margin-inline-start:3rem}.ms-xl--1{margin-inline-start:-.25rem}.ms-xl--2{margin-inline-start:-.5rem}.ms-xl-auto{margin-inline-start:auto}.p-xl-0{padding:0}.p-xl-1{padding:.25rem}.p-xl-2{padding:.5rem}.p-xl-3{padding:1rem}.p-xl-4{padding:1.5rem}.p-xl-5{padding:3rem}.px-xl-0{padding-inline:0}.px-xl-1{padding-inline:.25rem}.px-xl-2{padding-inline:.5rem}.px-xl-3{padding-inline:1rem}.px-xl-4{padding-inline:1.5rem}.px-xl-5{padding-inline:3rem}.py-xl-0{padding-block:0}.py-xl-1{padding-block:.25rem}.py-xl-2{padding-block:.5rem}.py-xl-3{padding-block:1rem}.py-xl-4{padding-block:1.5rem}.py-xl-5{padding-block:3rem}.pt-xl-0{padding-block-start:0}.pt-xl-1{padding-block-start:.25rem}.pt-xl-2{padding-block-start:.5rem}.pt-xl-3{padding-block-start:1rem}.pt-xl-4{padding-block-start:1.5rem}.pt-xl-5{padding-block-start:3rem}.pe-xl-0{padding-inline-end:0}.pe-xl-1{padding-inline-end:.25rem}.pe-xl-2{padding-inline-end:.5rem}.pe-xl-3{padding-inline-end:1rem}.pe-xl-4{padding-inline-end:1.5rem}.pe-xl-5{padding-inline-end:3rem}.pb-xl-0{padding-block-end:0}.pb-xl-1{padding-block-end:.25rem}.pb-xl-2{padding-block-end:.5rem}.pb-xl-3{padding-block-end:1rem}.pb-xl-4{padding-block-end:1.5rem}.pb-xl-5{padding-block-end:3rem}.ps-xl-0{padding-inline-start:0}.ps-xl-1{padding-inline-start:.25rem}.ps-xl-2{padding-inline-start:.5rem}.ps-xl-3{padding-inline-start:1rem}.ps-xl-4{padding-inline-start:1.5rem}.ps-xl-5{padding-inline-start:3rem}.gap-xl-0{gap:0}.gap-xl-1{gap:.25rem}.gap-xl-2{gap:.5rem}.gap-xl-3{gap:1rem}.gap-xl-4{gap:1.5rem}.gap-xl-5{gap:3rem}.row-gap-xl-0{row-gap:0}.row-gap-xl-1{row-gap:.25rem}.row-gap-xl-2{row-gap:.5rem}.row-gap-xl-3{row-gap:1rem}.row-gap-xl-4{row-gap:1.5rem}.row-gap-xl-5{row-gap:3rem}.column-gap-xl-0{-moz-column-gap:0;column-gap:0}.column-gap-xl-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-xl-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-xl-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-xl-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-xl-5{-moz-column-gap:3rem;column-gap:3rem}.text-xl-start{text-align:start}.text-xl-end{text-align:end}.text-xl-center{text-align:center}}@media (width>=1536px){.float-2xl-start{float:inline-start}.float-2xl-end{float:inline-end}.float-2xl-none{float:none}.object-fit-2xl-contain{-o-object-fit:contain;object-fit:contain}.object-fit-2xl-cover{-o-object-fit:cover;object-fit:cover}.object-fit-2xl-fill{-o-object-fit:fill;object-fit:fill}.object-fit-2xl-scale{-o-object-fit:scale-down;object-fit:scale-down}.object-fit-2xl-none{-o-object-fit:none;object-fit:none}.d-2xl-inline{display:inline}.d-2xl-inline-block{display:inline-block}.d-2xl-block{display:block}.d-2xl-grid{display:grid}.d-2xl-inline-grid{display:inline-grid}.d-2xl-table{display:table}.d-2xl-table-row{display:table-row}.d-2xl-table-cell{display:table-cell}.d-2xl-flex{display:flex}.d-2xl-inline-flex{display:inline-flex}.d-2xl-contents{display:contents}.d-2xl-flow-root{display:flow-root}.d-2xl-none{display:none}.flex-2xl-fill{flex:auto}.flex-2xl-row{flex-direction:row}.flex-2xl-column{flex-direction:column}.flex-2xl-row-reverse{flex-direction:row-reverse}.flex-2xl-column-reverse{flex-direction:column-reverse}.flex-2xl-grow-0{flex-grow:0}.flex-2xl-grow-1{flex-grow:1}.flex-2xl-shrink-0{flex-shrink:0}.flex-2xl-shrink-1{flex-shrink:1}.flex-2xl-wrap{flex-wrap:wrap}.flex-2xl-nowrap{flex-wrap:nowrap}.flex-2xl-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-2xl-start{justify-content:flex-start}.justify-content-2xl-end{justify-content:flex-end}.justify-content-2xl-center{justify-content:center}.justify-content-2xl-between{justify-content:space-between}.justify-content-2xl-around{justify-content:space-around}.justify-content-2xl-evenly{justify-content:space-evenly}.justify-items-2xl-start{justify-items:start}.justify-items-2xl-end{justify-items:end}.justify-items-2xl-center{justify-items:center}.justify-items-2xl-stretch{justify-items:stretch}.justify-self-2xl-start{justify-self:flex-start}.justify-self-2xl-end{justify-self:flex-end}.justify-self-2xl-center{justify-self:center}.align-items-2xl-start{align-items:flex-start}.align-items-2xl-end{align-items:flex-end}.align-items-2xl-center{align-items:center}.align-items-2xl-baseline{align-items:baseline}.align-items-2xl-stretch{align-items:stretch}.align-content-2xl-start{align-content:flex-start}.align-content-2xl-end{align-content:flex-end}.align-content-2xl-center{align-content:center}.align-content-2xl-between{align-content:space-between}.align-content-2xl-around{align-content:space-around}.align-content-2xl-stretch{align-content:stretch}.align-self-2xl-auto{align-self:auto}.align-self-2xl-start{align-self:flex-start}.align-self-2xl-end{align-self:flex-end}.align-self-2xl-center{align-self:center}.align-self-2xl-baseline{align-self:baseline}.align-self-2xl-stretch{align-self:stretch}.place-items-2xl-start{place-items:start}.place-items-2xl-end{place-items:end}.place-items-2xl-center{place-items:center}.place-items-2xl-stretch{place-items:stretch stretch}.grid-cols-2xl-3{--bs-columns:3}.grid-cols-2xl-4{--bs-columns:4}.grid-cols-2xl-6{--bs-columns:6}.grid-cols-2xl-fill{grid-column:1/-1}.grid-auto-flow-2xl-row{grid-auto-flow:row}.grid-auto-flow-2xl-column{grid-auto-flow:column}.grid-auto-flow-2xl-dense{grid-auto-flow:dense}.order-2xl-first{order:-1}.order-2xl-0{order:0}.order-2xl-1{order:1}.order-2xl-2{order:2}.order-2xl-3{order:3}.order-2xl-4{order:4}.order-2xl-5{order:5}.order-2xl-last{order:6}.m-2xl-0{margin:0}.m-2xl-1{margin:.25rem}.m-2xl-2{margin:.5rem}.m-2xl-3{margin:1rem}.m-2xl-4{margin:1.5rem}.m-2xl-5{margin:3rem}.m-2xl-auto{margin:auto}.mx-2xl-0{margin-inline:0}.mx-2xl-1{margin-inline:.25rem}.mx-2xl-2{margin-inline:.5rem}.mx-2xl-3{margin-inline:1rem}.mx-2xl-4{margin-inline:1.5rem}.mx-2xl-5{margin-inline:3rem}.mx-2xl-auto{margin-inline:auto}.my-2xl-0{margin-block:0}.my-2xl-1{margin-block:.25rem}.my-2xl-2{margin-block:.5rem}.my-2xl-3{margin-block:1rem}.my-2xl-4{margin-block:1.5rem}.my-2xl-5{margin-block:3rem}.my-2xl-auto{margin-block:auto}.mt-2xl-0{margin-block-start:0}.mt-2xl-1{margin-block-start:.25rem}.mt-2xl-2{margin-block-start:.5rem}.mt-2xl-3{margin-block-start:1rem}.mt-2xl-4{margin-block-start:1.5rem}.mt-2xl-5{margin-block-start:3rem}.mt-2xl-auto{margin-block-start:auto}.me-2xl-0{margin-inline-end:0}.me-2xl-1{margin-inline-end:.25rem}.me-2xl-2{margin-inline-end:.5rem}.me-2xl-3{margin-inline-end:1rem}.me-2xl-4{margin-inline-end:1.5rem}.me-2xl-5{margin-inline-end:3rem}.me-2xl-auto{margin-inline-end:auto}.mb-2xl-0{margin-block-end:0}.mb-2xl-1{margin-block-end:.25rem}.mb-2xl-2{margin-block-end:.5rem}.mb-2xl-3{margin-block-end:1rem}.mb-2xl-4{margin-block-end:1.5rem}.mb-2xl-5{margin-block-end:3rem}.mb-2xl-auto{margin-block-end:auto}.ms-2xl-0{margin-inline-start:0}.ms-2xl-1{margin-inline-start:.25rem}.ms-2xl-2{margin-inline-start:.5rem}.ms-2xl-3{margin-inline-start:1rem}.ms-2xl-4{margin-inline-start:1.5rem}.ms-2xl-5{margin-inline-start:3rem}.ms-2xl--1{margin-inline-start:-.25rem}.ms-2xl--2{margin-inline-start:-.5rem}.ms-2xl-auto{margin-inline-start:auto}.p-2xl-0{padding:0}.p-2xl-1{padding:.25rem}.p-2xl-2{padding:.5rem}.p-2xl-3{padding:1rem}.p-2xl-4{padding:1.5rem}.p-2xl-5{padding:3rem}.px-2xl-0{padding-inline:0}.px-2xl-1{padding-inline:.25rem}.px-2xl-2{padding-inline:.5rem}.px-2xl-3{padding-inline:1rem}.px-2xl-4{padding-inline:1.5rem}.px-2xl-5{padding-inline:3rem}.py-2xl-0{padding-block:0}.py-2xl-1{padding-block:.25rem}.py-2xl-2{padding-block:.5rem}.py-2xl-3{padding-block:1rem}.py-2xl-4{padding-block:1.5rem}.py-2xl-5{padding-block:3rem}.pt-2xl-0{padding-block-start:0}.pt-2xl-1{padding-block-start:.25rem}.pt-2xl-2{padding-block-start:.5rem}.pt-2xl-3{padding-block-start:1rem}.pt-2xl-4{padding-block-start:1.5rem}.pt-2xl-5{padding-block-start:3rem}.pe-2xl-0{padding-inline-end:0}.pe-2xl-1{padding-inline-end:.25rem}.pe-2xl-2{padding-inline-end:.5rem}.pe-2xl-3{padding-inline-end:1rem}.pe-2xl-4{padding-inline-end:1.5rem}.pe-2xl-5{padding-inline-end:3rem}.pb-2xl-0{padding-block-end:0}.pb-2xl-1{padding-block-end:.25rem}.pb-2xl-2{padding-block-end:.5rem}.pb-2xl-3{padding-block-end:1rem}.pb-2xl-4{padding-block-end:1.5rem}.pb-2xl-5{padding-block-end:3rem}.ps-2xl-0{padding-inline-start:0}.ps-2xl-1{padding-inline-start:.25rem}.ps-2xl-2{padding-inline-start:.5rem}.ps-2xl-3{padding-inline-start:1rem}.ps-2xl-4{padding-inline-start:1.5rem}.ps-2xl-5{padding-inline-start:3rem}.gap-2xl-0{gap:0}.gap-2xl-1{gap:.25rem}.gap-2xl-2{gap:.5rem}.gap-2xl-3{gap:1rem}.gap-2xl-4{gap:1.5rem}.gap-2xl-5{gap:3rem}.row-gap-2xl-0{row-gap:0}.row-gap-2xl-1{row-gap:.25rem}.row-gap-2xl-2{row-gap:.5rem}.row-gap-2xl-3{row-gap:1rem}.row-gap-2xl-4{row-gap:1.5rem}.row-gap-2xl-5{row-gap:3rem}.column-gap-2xl-0{-moz-column-gap:0;column-gap:0}.column-gap-2xl-1{-moz-column-gap:.25rem;column-gap:.25rem}.column-gap-2xl-2{-moz-column-gap:.5rem;column-gap:.5rem}.column-gap-2xl-3{-moz-column-gap:1rem;column-gap:1rem}.column-gap-2xl-4{-moz-column-gap:1.5rem;column-gap:1.5rem}.column-gap-2xl-5{-moz-column-gap:3rem;column-gap:3rem}.text-2xl-start{text-align:start}.text-2xl-end{text-align:end}.text-2xl-center{text-align:center}}}:root{--bs-black:#000;--bs-white:#fff;--bs-gradient:linear-gradient(180deg,color-mix(var(--bs-white)15%,transparent),color-mix(var(--bs-white)0%,transparent));--bs-font-weight-lighter:lighter;--bs-font-weight-light:300;--bs-font-weight-normal:400;--bs-font-weight-medium:500;--bs-font-weight-semibold:600;--bs-font-weight-bold:700;--bs-font-weight-bolder:bolder;--bs-body-font-family:system-ui;--bs-body-font-size:var(--bs-font-size-base);--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-heading-color:inherit;--bs-hr-border-color:var(--bs-border-color);--bs-link-color:light-dark(var(--bs-primary-base),var(--bs-primary-text));--bs-link-decoration:underline;--bs-link-hover-color:color-mix(in oklch,var(--bs-link-color)90%,#000);--bs-font-mono:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-code-font-size:95%;--bs-code-color:var(--bs-fg-2);--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:light-dark(color-mix(in oklch,var(--bs-gray-100),var(--bs-gray-200)),var(--bs-gray-700));--bs-border-color-translucent:color-mix(in oklch,var(--bs-fg-body)15%,transparent);--bs-border-radius:.5rem;--bs-border-radius-xs:.375rem;--bs-border-radius-sm:.5rem;--bs-border-radius-lg:.75rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-box-shadow:0 .5rem 1rem #00000026;--bs-box-shadow-sm:0 .125rem .25rem #00000013;--bs-box-shadow-lg:0 1rem 3rem #0000002d;--bs-box-shadow-inset:inset 0 1px 2px #00000013;--bs-spacer:1rem;--bs-focus-ring-width:3px;--bs-focus-ring-offset:1px;--bs-focus-ring-color:var(--bs-primary-focus-ring);--bs-focus-ring:var(--bs-focus-ring-width)solid var(--bs-focus-ring-color);--bs-control-checked-bg:var(--bs-primary-base);--bs-control-checked-border-color:var(--bs-control-checked-bg);--bs-control-active-bg:var(--bs-primary-base);--bs-control-active-border-color:var(--bs-control-active-bg);--bs-control-disabled-bg:var(--bs-bg-3);--bs-control-disabled-opacity:.65;--bs-btn-input-fg:var(--bs-fg-body);--bs-btn-input-bg:var(--bs-bg-body);--bs-btn-input-min-height:2.375rem;--bs-btn-input-padding-y:.375rem;--bs-btn-input-padding-x:.75rem;--bs-btn-input-font-size:var(--bs-font-size-base);--bs-btn-input-line-height:var(--bs-line-height-base);--bs-btn-input-border-radius:var(--bs-border-radius);--bs-btn-input-xs-min-height:1.5rem;--bs-btn-input-xs-padding-y:.125rem;--bs-btn-input-xs-padding-x:.5rem;--bs-btn-input-xs-font-size:var(--bs-font-size-xs);--bs-btn-input-xs-line-height:1.125;--bs-btn-input-xs-border-radius:var(--bs-border-radius-xs);--bs-btn-input-sm-min-height:2rem;--bs-btn-input-sm-padding-y:.25rem;--bs-btn-input-sm-padding-x:.625rem;--bs-btn-input-sm-font-size:var(--bs-font-size-sm);--bs-btn-input-sm-line-height:var(--bs-line-height-sm);--bs-btn-input-sm-border-radius:var(--bs-border-radius-sm);--bs-btn-input-lg-min-height:2.75rem;--bs-btn-input-lg-padding-y:.5rem;--bs-btn-input-lg-padding-x:1rem;--bs-btn-input-lg-font-size:var(--bs-font-size-md);--bs-btn-input-lg-line-height:var(--bs-line-height-md);--bs-btn-input-lg-border-radius:var(--bs-border-radius-lg);--bs-form-valid-color:var(--bs-success-text);--bs-form-valid-border-color:var(--bs-success-text);--bs-form-invalid-color:var(--bs-danger-text);--bs-form-invalid-border-color:var(--bs-danger-text);--bs-font-size-xs:.75rem;--bs-line-height-xs:1.25;--bs-font-size-sm:.875rem;--bs-line-height-sm:1.5;--bs-font-size-md:1rem;--bs-line-height-md:1.5;--bs-font-size-lg:clamp(1.25rem,1rem + .625vw,1.5rem);--bs-line-height-lg:1.5;--bs-font-size-xl:clamp(1.5rem,1.1rem + .75vw,1.75rem);--bs-line-height-xl:1.42857;--bs-font-size-2xl:clamp(1.75rem,1.3rem + 1vw,2rem);--bs-line-height-2xl:1.33333;--bs-font-size-3xl:clamp(2rem,1.5rem + 1.875vw,2.5rem);--bs-line-height-3xl:1.2;--bs-font-size-4xl:clamp(2.25rem,1.75rem + 2.5vw,3rem);--bs-line-height-4xl:1.1;--bs-font-size-5xl:clamp(3rem,2rem + 5vw,4rem);--bs-line-height-5xl:1.1;--bs-font-size-6xl:clamp(3.75rem,2.5rem + 6.25vw,5rem);--bs-line-height-6xl:1;--bs-primary-base:var(--bs-blue-500);--bs-primary-text:light-dark(var(--bs-blue-600),var(--bs-blue-400));--bs-primary-text-emphasis:light-dark(var(--bs-blue-800),var(--bs-blue-200));--bs-primary-bg:var(--bs-blue-500);--bs-primary-bg-subtle:light-dark(var(--bs-blue-100),var(--bs-blue-900));--bs-primary-bg-muted:light-dark(var(--bs-blue-200),var(--bs-blue-800));--bs-primary-border:light-dark(var(--bs-blue-300),var(--bs-blue-600));--bs-primary-focus-ring:light-dark(color-mix(in oklch,var(--bs-blue-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-blue-500)75%,var(--bs-bg-body)));--bs-primary-contrast:var(--bs-white);--bs-accent-base:var(--bs-indigo-500);--bs-accent-text:light-dark(var(--bs-indigo-600),color-mix(in oklch,var(--bs-indigo-400),var(--bs-indigo-300)));--bs-accent-text-emphasis:light-dark(var(--bs-indigo-800),var(--bs-indigo-300));--bs-accent-bg:var(--bs-indigo-500);--bs-accent-bg-subtle:light-dark(var(--bs-indigo-100),var(--bs-indigo-900));--bs-accent-bg-muted:light-dark(var(--bs-indigo-200),var(--bs-indigo-800));--bs-accent-border:light-dark(var(--bs-indigo-300),var(--bs-indigo-600));--bs-accent-focus-ring:light-dark(color-mix(in oklch,var(--bs-indigo-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-indigo-500)75%,var(--bs-bg-body)));--bs-accent-contrast:var(--bs-white);--bs-success-base:var(--bs-green-500);--bs-success-text:light-dark(var(--bs-green-600),var(--bs-green-400));--bs-success-text-emphasis:light-dark(var(--bs-green-800),var(--bs-green-300));--bs-success-bg:var(--bs-green-500);--bs-success-bg-subtle:light-dark(var(--bs-green-100),var(--bs-green-900));--bs-success-bg-muted:light-dark(var(--bs-green-200),var(--bs-green-800));--bs-success-border:light-dark(var(--bs-green-300),var(--bs-green-600));--bs-success-focus-ring:light-dark(color-mix(in oklch,var(--bs-green-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-green-500)75%,var(--bs-bg-body)));--bs-success-contrast:var(--bs-white);--bs-danger-base:var(--bs-red-500);--bs-danger-text:light-dark(var(--bs-red-600),var(--bs-red-400));--bs-danger-text-emphasis:light-dark(var(--bs-red-800),var(--bs-red-300));--bs-danger-bg:var(--bs-red-500);--bs-danger-bg-subtle:light-dark(var(--bs-red-100),var(--bs-red-900));--bs-danger-bg-muted:light-dark(var(--bs-red-200),var(--bs-red-800));--bs-danger-border:light-dark(var(--bs-red-300),var(--bs-red-600));--bs-danger-focus-ring:light-dark(color-mix(in oklch,var(--bs-red-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-red-500)75%,var(--bs-bg-body)));--bs-danger-contrast:var(--bs-white);--bs-warning-base:var(--bs-yellow-500);--bs-warning-text:light-dark(var(--bs-yellow-700),var(--bs-yellow-400));--bs-warning-text-emphasis:light-dark(var(--bs-yellow-800),var(--bs-yellow-300));--bs-warning-bg:var(--bs-yellow-500);--bs-warning-bg-subtle:light-dark(var(--bs-yellow-100),var(--bs-yellow-900));--bs-warning-bg-muted:light-dark(var(--bs-yellow-200),var(--bs-yellow-800));--bs-warning-border:light-dark(var(--bs-yellow-300),var(--bs-yellow-600));--bs-warning-focus-ring:light-dark(color-mix(in oklch,var(--bs-yellow-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-yellow-400)85%,var(--bs-bg-body)));--bs-warning-contrast:var(--bs-gray-900);--bs-info-base:var(--bs-cyan-500);--bs-info-text:light-dark(var(--bs-cyan-600),var(--bs-cyan-400));--bs-info-text-emphasis:light-dark(var(--bs-cyan-800),var(--bs-cyan-300));--bs-info-bg:var(--bs-cyan-500);--bs-info-bg-subtle:light-dark(var(--bs-cyan-100),var(--bs-cyan-900));--bs-info-bg-muted:light-dark(var(--bs-cyan-200),var(--bs-cyan-800));--bs-info-border:light-dark(var(--bs-cyan-300),var(--bs-cyan-600));--bs-info-focus-ring:light-dark(color-mix(in oklch,var(--bs-cyan-500)50%,var(--bs-bg-body)),color-mix(in oklch,var(--bs-cyan-500)75%,var(--bs-bg-body)));--bs-info-contrast:var(--bs-gray-900);--bs-inverse-base:var(--bs-gray-900);--bs-inverse-text:light-dark(var(--bs-gray-900),var(--bs-gray-200));--bs-inverse-text-emphasis:light-dark(var(--bs-gray-975),var(--bs-white));--bs-inverse-bg:light-dark(var(--bs-gray-900),var(--bs-gray-025));--bs-inverse-bg-subtle:light-dark(var(--bs-gray-100),var(--bs-gray-900));--bs-inverse-bg-muted:light-dark(var(--bs-gray-200),var(--bs-gray-300));--bs-inverse-border:light-dark(var(--bs-gray-400),var(--bs-gray-100));--bs-inverse-focus-ring:color-mix(in oklch,light-dark(var(--bs-gray-900),var(--bs-gray-100))50%,var(--bs-bg-body));--bs-inverse-contrast:light-dark(var(--bs-white),var(--bs-gray-900));--bs-secondary-base:var(--bs-gray-200);--bs-secondary-text:light-dark(var(--bs-gray-600),var(--bs-gray-400));--bs-secondary-text-emphasis:light-dark(var(--bs-gray-800),var(--bs-gray-200));--bs-secondary-bg:light-dark(var(--bs-gray-100),var(--bs-gray-600));--bs-secondary-bg-subtle:light-dark(var(--bs-gray-050),var(--bs-gray-800));--bs-secondary-bg-muted:light-dark(var(--bs-gray-100),var(--bs-gray-700));--bs-secondary-border:light-dark(var(--bs-gray-300),var(--bs-gray-600));--bs-secondary-focus-ring:color-mix(in oklch,light-dark(var(--bs-gray-500),var(--bs-gray-300))50%,var(--bs-bg-body));--bs-secondary-contrast:light-dark(var(--bs-gray-900),var(--bs-white));--bs-bg-body:light-dark(var(--bs-white),var(--bs-gray-975));--bs-bg-1:light-dark(var(--bs-gray-025),var(--bs-gray-950));--bs-bg-2:light-dark(var(--bs-gray-050),var(--bs-gray-900));--bs-bg-3:light-dark(var(--bs-gray-100),var(--bs-gray-800));--bs-bg-4:light-dark(var(--bs-gray-200),var(--bs-gray-700));--bs-bg-white:var(--bs-white);--bs-bg-black:var(--bs-black);--bs-bg-transparent:transparent;--bs-bg-inherit:inherit;--bs-fg-body:light-dark(var(--bs-gray-900),var(--bs-gray-050));--bs-fg-1:light-dark(var(--bs-gray-800),var(--bs-gray-200));--bs-fg-2:light-dark(var(--bs-gray-700),var(--bs-gray-300));--bs-fg-3:light-dark(var(--bs-gray-600),var(--bs-gray-500));--bs-fg-4:light-dark(var(--bs-gray-500),var(--bs-gray-600));--bs-fg-white:var(--bs-white);--bs-fg-black:var(--bs-black);--bs-fg-inherit:inherit;--bs-border-bg:var(--bs-bg-body);--bs-border-body:light-dark(var(--bs-gray-300),var(--bs-gray-800));--bs-border-muted:light-dark(var(--bs-gray-200),var(--bs-gray-800));--bs-border-subtle:light-dark(var(--bs-gray-100),var(--bs-gray-900));--bs-border-emphasized:light-dark(var(--bs-gray-400),var(--bs-gray-600));--bs-border-white:var(--bs-white);--bs-border-black:var(--bs-black);--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:1024px;--bs-breakpoint-xl:1280px;--bs-breakpoint-2xl:1536px;color-scheme:light dark}[data-bs-theme=dark]{color-scheme:dark}[data-bs-theme=light]{color-scheme:light}.offcanvas,.offcanvas-2xl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-inset:var(--bs-spacer);--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:var(--bs-spacer);--bs-offcanvas-padding-y:var(--bs-spacer);--bs-offcanvas-color:var(--bs-fg-body);--bs-offcanvas-bg:var(--bs-bg-body);--bs-offcanvas-border-width:var(--bs-border-width);--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-border-radius:var(--bs-border-radius-lg);--bs-offcanvas-box-shadow:var(--bs-box-shadow-lg);--bs-offcanvas-transition:transform .3s ease-in-out;--bs-offcanvas-title-line-height:1.5}.stepper{--bs-stepper-size:2rem;--bs-stepper-gap:1rem;--bs-stepper-bg:var(--bs-bg-2);--bs-stepper-track-size:.25rem;--bs-stepper-active-color:var(--bs-primary-contrast);--bs-stepper-active-bg:var(--bs-primary-bg);gap:var(--bs-stepper-gap);counter-reset:stepper;grid-auto-rows:1fr;grid-auto-flow:row;padding-left:0;list-style:none;display:grid}.stepper-item{grid-template-rows:auto;grid-template-columns:var(--bs-stepper-size)auto;text-align:center;place-items:center start;gap:.5rem;text-decoration:none;display:grid;position:relative}.stepper-item:before{z-index:1;width:var(--bs-stepper-size);height:var(--bs-stepper-size);text-align:center;content:counter(stepper);counter-increment:stepper;background-color:var(--bs-stepper-bg);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:.5rem;font-weight:600;line-height:1;display:flex;position:relative}.stepper-item:after{top:calc(var(--bs-stepper-gap)*-1);bottom:100%;left:calc(var(--bs-stepper-size)*.5 - var(--bs-stepper-track-size)*.5);width:var(--bs-stepper-track-size);content:"";background-color:var(--bs-stepper-bg);position:absolute}.stepper-item:first-child:after{display:none}.stepper-item.active:before,.stepper-item.active:after{color:var(--bs-theme-contrast,var(--bs-stepper-active-color));background-color:var(--bs-theme-bg,var(--bs-stepper-active-bg))}.stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.stepper-horizontal .stepper-item{grid-template-rows:repeat(2,var(--bs-stepper-size));grid-template-columns:auto;justify-items:center}.stepper-horizontal .stepper-item:after{top:calc(var(--bs-stepper-size)*.5 - var(--bs-stepper-track-size)*.5);bottom:auto;right:0;left:calc(-50% - var(--bs-stepper-gap));width:auto;height:var(--bs-stepper-track-size)}.stepper-horizontal .stepper-item:last-child:after{right:50%}@media (width>=576px){.stepper-horizontal-sm{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.stepper-horizontal-sm .stepper-item{grid-template-rows:repeat(2,var(--bs-stepper-size));grid-template-columns:auto;justify-items:center}.stepper-horizontal-sm .stepper-item:after{top:calc(var(--bs-stepper-size)*.5 - var(--bs-stepper-track-size)*.5);bottom:auto;right:0;left:calc(-50% - var(--bs-stepper-gap));width:auto;height:var(--bs-stepper-track-size)}.stepper-horizontal-sm .stepper-item:last-child:after{right:50%}}@media (width>=768px){.stepper-horizontal-md{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.stepper-horizontal-md .stepper-item{grid-template-rows:repeat(2,var(--bs-stepper-size));grid-template-columns:auto;justify-items:center}.stepper-horizontal-md .stepper-item:after{top:calc(var(--bs-stepper-size)*.5 - var(--bs-stepper-track-size)*.5);bottom:auto;right:0;left:calc(-50% - var(--bs-stepper-gap));width:auto;height:var(--bs-stepper-track-size)}.stepper-horizontal-md .stepper-item:last-child:after{right:50%}}@media (width>=1024px){.stepper-horizontal-lg{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.stepper-horizontal-lg .stepper-item{grid-template-rows:repeat(2,var(--bs-stepper-size));grid-template-columns:auto;justify-items:center}.stepper-horizontal-lg .stepper-item:after{top:calc(var(--bs-stepper-size)*.5 - var(--bs-stepper-track-size)*.5);bottom:auto;right:0;left:calc(-50% - var(--bs-stepper-gap));width:auto;height:var(--bs-stepper-track-size)}.stepper-horizontal-lg .stepper-item:last-child:after{right:50%}}@media (width>=1280px){.stepper-horizontal-xl{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.stepper-horizontal-xl .stepper-item{grid-template-rows:repeat(2,var(--bs-stepper-size));grid-template-columns:auto;justify-items:center}.stepper-horizontal-xl .stepper-item:after{top:calc(var(--bs-stepper-size)*.5 - var(--bs-stepper-track-size)*.5);bottom:auto;right:0;left:calc(-50% - var(--bs-stepper-gap));width:auto;height:var(--bs-stepper-track-size)}.stepper-horizontal-xl .stepper-item:last-child:after{right:50%}}@media (width>=1536px){.stepper-horizontal-2xl{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.stepper-horizontal-2xl .stepper-item{grid-template-rows:repeat(2,var(--bs-stepper-size));grid-template-columns:auto;justify-items:center}.stepper-horizontal-2xl .stepper-item:after{top:calc(var(--bs-stepper-size)*.5 - var(--bs-stepper-track-size)*.5);bottom:auto;right:0;left:calc(-50% - var(--bs-stepper-gap));width:auto;height:var(--bs-stepper-track-size)}.stepper-horizontal-2xl .stepper-item:last-child:after{right:50%}}.stepper-overflow{overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;overflow-x:auto;container-type:inline-size}.stepper-overflow>.stepper{width:max-content;min-width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;transition:height .35s;overflow:hidden}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}
 /*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
index 3ec8f8a21b05adaf990464e0a40b3ccb0b286d77..7e9c8c94684d5d246873abd74aa7efa20b2a03d8 100644 (file)
@@ -1 +1 @@
-{"version":3,"sourceRoot":null,"mappings":"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","sources":["bootstrap.css","../../scss/_banner.scss","../../scss/_colors.scss","../../scss/mixins/_tokens.scss","../../scss/_root.scss","../../scss/content/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_border-radius.scss","../../scss/content/_type.scss","../../scss/mixins/_lists.scss","../../scss/content/_tables.scss","../../scss/_config.scss","../../scss/layout/_breakpoints.scss","../../scss/content/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_box-shadow.scss","../../scss/content/_prose.scss","../../scss/mixins/_transition.scss","../../scss/layout/_containers.scss","../../scss/layout/_grid.scss","../../scss/mixins/_grid.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_focus-ring.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_check.scss","../../scss/forms/_radio.scss","../../scss/forms/_switch.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/forms/_strength.scss","../../scss/forms/_otp-input.scss","../../scss/forms/_form-adorn.scss","../../scss/forms/_chip-input.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/forms/_validation.scss","../../scss/forms/_form-variables.scss","../../scss/buttons/_button.scss","../../scss/buttons/_button-group.scss","../../scss/buttons/_close.scss","../../scss/_accordion.scss","../../scss/_alert.scss","../../scss/_avatar.scss","../../scss/_badge.scss","../../scss/_breadcrumb.scss","../../scss/_chip.scss","../../scss/_card.scss","../../scss/_carousel.scss","../../scss/mixins/_color-mode.scss","../../scss/_datepicker.scss","../../scss/_dialog.scss","../../scss/_dropdown.scss","../../scss/_list-group.scss","../../scss/_nav.scss","../../scss/_nav-overflow.scss","../../scss/_navbar.scss","../../scss/_offcanvas.scss","../../scss/mixins/_backdrop.scss","../../scss/_pagination.scss","../../scss/_placeholder.scss","../../scss/_popover.scss","../../scss/_progress.scss","../../scss/_spinner.scss","../../scss/_stepper.scss","../../scss/_toasts.scss","../../scss/_transitions.scss","../../scss/helpers/_focus-ring.scss","../../scss/helpers/_icon-link.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_theme-colors.scss","../../scss/_theme.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/utilities/_api.scss","../../scss/mixins/_utilities.scss"],"sourcesContent":["@charset \"UTF-8\";\n/*!\n  * Bootstrap  v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n:root {\n  --blue-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.24 240deg));\n  --blue-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.24 240deg));\n  --blue-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.24 240deg));\n  --blue-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.24 240deg));\n  --blue-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.24 240deg));\n  --blue-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.24 240deg));\n  --blue-500: oklch(60% 0.24 240deg);\n  --blue-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.24 240deg));\n  --blue-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.24 240deg));\n  --blue-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.24 240deg));\n  --blue-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.24 240deg));\n  --blue-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.24 240deg));\n  --blue-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.24 240deg));\n  --indigo-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.26 288deg));\n  --indigo-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.26 288deg));\n  --indigo-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.26 288deg));\n  --indigo-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.26 288deg));\n  --indigo-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.26 288deg));\n  --indigo-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.26 288deg));\n  --indigo-500: oklch(56% 0.26 288deg);\n  --indigo-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.26 288deg));\n  --indigo-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.26 288deg));\n  --indigo-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.26 288deg));\n  --indigo-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.26 288deg));\n  --indigo-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.26 288deg));\n  --indigo-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.26 288deg));\n  --violet-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 300deg));\n  --violet-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 300deg));\n  --violet-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 300deg));\n  --violet-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 300deg));\n  --violet-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 300deg));\n  --violet-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 300deg));\n  --violet-500: oklch(56% 0.24 300deg);\n  --violet-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 300deg));\n  --violet-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 300deg));\n  --violet-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 300deg));\n  --violet-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 300deg));\n  --violet-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 300deg));\n  --violet-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 300deg));\n  --purple-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 320deg));\n  --purple-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 320deg));\n  --purple-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 320deg));\n  --purple-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 320deg));\n  --purple-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 320deg));\n  --purple-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 320deg));\n  --purple-500: oklch(56% 0.24 320deg);\n  --purple-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 320deg));\n  --purple-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 320deg));\n  --purple-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 320deg));\n  --purple-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 320deg));\n  --purple-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 320deg));\n  --purple-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 320deg));\n  --pink-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 4deg));\n  --pink-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 4deg));\n  --pink-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 4deg));\n  --pink-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 4deg));\n  --pink-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 4deg));\n  --pink-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 4deg));\n  --pink-500: oklch(60% 0.22 4deg);\n  --pink-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 4deg));\n  --pink-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 4deg));\n  --pink-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 4deg));\n  --pink-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 4deg));\n  --pink-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 4deg));\n  --pink-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 4deg));\n  --red-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 20deg));\n  --red-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 20deg));\n  --red-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 20deg));\n  --red-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 20deg));\n  --red-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 20deg));\n  --red-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 20deg));\n  --red-500: oklch(60% 0.22 20deg);\n  --red-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 20deg));\n  --red-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 20deg));\n  --red-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 20deg));\n  --red-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 20deg));\n  --red-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 20deg));\n  --red-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 20deg));\n  --orange-025: color-mix(in lab, var(--white) 94%, oklch(70% 0.22 52deg));\n  --orange-050: color-mix(in lab, var(--white) 90%, oklch(70% 0.22 52deg));\n  --orange-100: color-mix(in lab, var(--white) 80%, oklch(70% 0.22 52deg));\n  --orange-200: color-mix(in lab, var(--white) 60%, oklch(70% 0.22 52deg));\n  --orange-300: color-mix(in lab, var(--white) 40%, oklch(70% 0.22 52deg));\n  --orange-400: color-mix(in lab, var(--white) 20%, oklch(70% 0.22 52deg));\n  --orange-500: oklch(70% 0.22 52deg);\n  --orange-600: color-mix(in lab, var(--black) 16%, oklch(70% 0.22 52deg));\n  --orange-700: color-mix(in lab, var(--black) 32%, oklch(70% 0.22 52deg));\n  --orange-800: color-mix(in lab, var(--black) 48%, oklch(70% 0.22 52deg));\n  --orange-900: color-mix(in lab, var(--black) 64%, oklch(70% 0.22 52deg));\n  --orange-950: color-mix(in lab, var(--black) 76%, oklch(70% 0.22 52deg));\n  --orange-975: color-mix(in lab, var(--black) 88%, oklch(70% 0.22 52deg));\n  --amber-025: color-mix(in lab, var(--white) 94%, oklch(79% 0.2 78deg));\n  --amber-050: color-mix(in lab, var(--white) 90%, oklch(79% 0.2 78deg));\n  --amber-100: color-mix(in lab, var(--white) 80%, oklch(79% 0.2 78deg));\n  --amber-200: color-mix(in lab, var(--white) 60%, oklch(79% 0.2 78deg));\n  --amber-300: color-mix(in lab, var(--white) 40%, oklch(79% 0.2 78deg));\n  --amber-400: color-mix(in lab, var(--white) 20%, oklch(79% 0.2 78deg));\n  --amber-500: oklch(79% 0.2 78deg);\n  --amber-600: color-mix(in lab, var(--black) 16%, oklch(79% 0.2 78deg));\n  --amber-700: color-mix(in lab, var(--black) 32%, oklch(79% 0.2 78deg));\n  --amber-800: color-mix(in lab, var(--black) 48%, oklch(79% 0.2 78deg));\n  --amber-900: color-mix(in lab, var(--black) 64%, oklch(79% 0.2 78deg));\n  --amber-950: color-mix(in lab, var(--black) 76%, oklch(79% 0.2 78deg));\n  --amber-975: color-mix(in lab, var(--black) 88%, oklch(79% 0.2 78deg));\n  --yellow-025: color-mix(in lab, var(--white) 94%, oklch(88% 0.24 88deg));\n  --yellow-050: color-mix(in lab, var(--white) 90%, oklch(88% 0.24 88deg));\n  --yellow-100: color-mix(in lab, var(--white) 80%, oklch(88% 0.24 88deg));\n  --yellow-200: color-mix(in lab, var(--white) 60%, oklch(88% 0.24 88deg));\n  --yellow-300: color-mix(in lab, var(--white) 40%, oklch(88% 0.24 88deg));\n  --yellow-400: color-mix(in lab, var(--white) 20%, oklch(88% 0.24 88deg));\n  --yellow-500: oklch(88% 0.24 88deg);\n  --yellow-600: color-mix(in lab, var(--black) 16%, oklch(88% 0.24 88deg));\n  --yellow-700: color-mix(in lab, var(--black) 32%, oklch(88% 0.24 88deg));\n  --yellow-800: color-mix(in lab, var(--black) 48%, oklch(88% 0.24 88deg));\n  --yellow-900: color-mix(in lab, var(--black) 64%, oklch(88% 0.24 88deg));\n  --yellow-950: color-mix(in lab, var(--black) 76%, oklch(88% 0.24 88deg));\n  --yellow-975: color-mix(in lab, var(--black) 88%, oklch(88% 0.24 88deg));\n  --lime-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.24 135deg));\n  --lime-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.24 135deg));\n  --lime-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.24 135deg));\n  --lime-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.24 135deg));\n  --lime-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.24 135deg));\n  --lime-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.24 135deg));\n  --lime-500: oklch(65% 0.24 135deg);\n  --lime-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.24 135deg));\n  --lime-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.24 135deg));\n  --lime-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.24 135deg));\n  --lime-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.24 135deg));\n  --lime-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.24 135deg));\n  --lime-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.24 135deg));\n  --green-025: color-mix(in lab, var(--white) 94%, oklch(64% 0.22 160deg));\n  --green-050: color-mix(in lab, var(--white) 90%, oklch(64% 0.22 160deg));\n  --green-100: color-mix(in lab, var(--white) 80%, oklch(64% 0.22 160deg));\n  --green-200: color-mix(in lab, var(--white) 60%, oklch(64% 0.22 160deg));\n  --green-300: color-mix(in lab, var(--white) 40%, oklch(64% 0.22 160deg));\n  --green-400: color-mix(in lab, var(--white) 20%, oklch(64% 0.22 160deg));\n  --green-500: oklch(64% 0.22 160deg);\n  --green-600: color-mix(in lab, var(--black) 16%, oklch(64% 0.22 160deg));\n  --green-700: color-mix(in lab, var(--black) 32%, oklch(64% 0.22 160deg));\n  --green-800: color-mix(in lab, var(--black) 48%, oklch(64% 0.22 160deg));\n  --green-900: color-mix(in lab, var(--black) 64%, oklch(64% 0.22 160deg));\n  --green-950: color-mix(in lab, var(--black) 76%, oklch(64% 0.22 160deg));\n  --green-975: color-mix(in lab, var(--black) 88%, oklch(64% 0.22 160deg));\n  --teal-025: color-mix(in lab, var(--white) 94%, oklch(68% 0.22 190deg));\n  --teal-050: color-mix(in lab, var(--white) 90%, oklch(68% 0.22 190deg));\n  --teal-100: color-mix(in lab, var(--white) 80%, oklch(68% 0.22 190deg));\n  --teal-200: color-mix(in lab, var(--white) 60%, oklch(68% 0.22 190deg));\n  --teal-300: color-mix(in lab, var(--white) 40%, oklch(68% 0.22 190deg));\n  --teal-400: color-mix(in lab, var(--white) 20%, oklch(68% 0.22 190deg));\n  --teal-500: oklch(68% 0.22 190deg);\n  --teal-600: color-mix(in lab, var(--black) 16%, oklch(68% 0.22 190deg));\n  --teal-700: color-mix(in lab, var(--black) 32%, oklch(68% 0.22 190deg));\n  --teal-800: color-mix(in lab, var(--black) 48%, oklch(68% 0.22 190deg));\n  --teal-900: color-mix(in lab, var(--black) 64%, oklch(68% 0.22 190deg));\n  --teal-950: color-mix(in lab, var(--black) 76%, oklch(68% 0.22 190deg));\n  --teal-975: color-mix(in lab, var(--black) 88%, oklch(68% 0.22 190deg));\n  --cyan-025: color-mix(in lab, var(--white) 94%, oklch(69% 0.22 220deg));\n  --cyan-050: color-mix(in lab, var(--white) 90%, oklch(69% 0.22 220deg));\n  --cyan-100: color-mix(in lab, var(--white) 80%, oklch(69% 0.22 220deg));\n  --cyan-200: color-mix(in lab, var(--white) 60%, oklch(69% 0.22 220deg));\n  --cyan-300: color-mix(in lab, var(--white) 40%, oklch(69% 0.22 220deg));\n  --cyan-400: color-mix(in lab, var(--white) 20%, oklch(69% 0.22 220deg));\n  --cyan-500: oklch(69% 0.22 220deg);\n  --cyan-600: color-mix(in lab, var(--black) 16%, oklch(69% 0.22 220deg));\n  --cyan-700: color-mix(in lab, var(--black) 32%, oklch(69% 0.22 220deg));\n  --cyan-800: color-mix(in lab, var(--black) 48%, oklch(69% 0.22 220deg));\n  --cyan-900: color-mix(in lab, var(--black) 64%, oklch(69% 0.22 220deg));\n  --cyan-950: color-mix(in lab, var(--black) 76%, oklch(69% 0.22 220deg));\n  --cyan-975: color-mix(in lab, var(--black) 88%, oklch(69% 0.22 220deg));\n  --brown-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.12 54deg));\n  --brown-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.12 54deg));\n  --brown-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.12 54deg));\n  --brown-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.12 54deg));\n  --brown-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.12 54deg));\n  --brown-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.12 54deg));\n  --brown-500: oklch(60% 0.12 54deg);\n  --brown-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.12 54deg));\n  --brown-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.12 54deg));\n  --brown-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.12 54deg));\n  --brown-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.12 54deg));\n  --brown-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.12 54deg));\n  --brown-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.12 54deg));\n  --gray-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.02 245deg));\n  --gray-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.02 245deg));\n  --gray-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.02 245deg));\n  --gray-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.02 245deg));\n  --gray-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.02 245deg));\n  --gray-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.02 245deg));\n  --gray-500: oklch(60% 0.02 245deg);\n  --gray-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.02 245deg));\n  --gray-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.02 245deg));\n  --gray-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.02 245deg));\n  --gray-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.02 245deg));\n  --gray-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.02 245deg));\n  --gray-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.02 245deg));\n  --pewter-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.01 290deg));\n  --pewter-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.01 290deg));\n  --pewter-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.01 290deg));\n  --pewter-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.01 290deg));\n  --pewter-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.01 290deg));\n  --pewter-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.01 290deg));\n  --pewter-500: oklch(65% 0.01 290deg);\n  --pewter-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.01 290deg));\n  --pewter-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.01 290deg));\n  --pewter-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.01 290deg));\n  --pewter-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.01 290deg));\n  --pewter-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.01 290deg));\n  --pewter-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.01 290deg));\n}\n\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n:root {\n  --black: #000;\n  --white: #fff;\n  --gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent));\n  --font-size-base: 1rem;\n  --font-size-xs: 0.75rem;\n  --font-size-sm: 0.875rem;\n  --font-size-md: 1rem;\n  --font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  --font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);\n  --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  --line-height-xs: 1.25;\n  --line-height-sm: 1.5;\n  --line-height-md: 1.5;\n  --line-height-lg: 1.5;\n  --line-height-xl: 1.4285714286;\n  --line-height-2xl: 1.3333333333;\n  --line-height-3xl: 1.2;\n  --line-height-4xl: 1.1;\n  --line-height-5xl: 1.1;\n  --line-height-6xl: 1;\n  --font-weight-lighter: lighter;\n  --font-weight-light: 300;\n  --font-weight-normal: 400;\n  --font-weight-medium: 500;\n  --font-weight-semibold: 600;\n  --font-weight-bold: 700;\n  --font-weight-bolder: bolder;\n  --body-font-family: system-ui;\n  --body-font-size: var(--font-size-base);\n  --body-font-weight: 400;\n  --body-line-height: 1.5;\n  --heading-color: inherit;\n  --hr-border-color: var(--border-color);\n  --link-color: light-dark(var(--primary-base), var(--primary-text));\n  --link-decoration: underline;\n  --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000);\n  --font-mono: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;\n  --code-font-size: 95%;\n  --code-color: var(--fg-2);\n  --border-width: 1px;\n  --border-style: solid;\n  --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700));\n  --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent);\n  --border-radius: 0.5rem;\n  --border-radius-xs: 0.375rem;\n  --border-radius-sm: 0.5rem;\n  --border-radius-lg: 0.75rem;\n  --border-radius-xl: 1rem;\n  --border-radius-2xl: 2rem;\n  --border-radius-pill: 50rem;\n  --box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  --box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n  --box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n  --box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n  --spacer: 1rem;\n  --focus-ring-width: 3px;\n  --focus-ring-offset: 1px;\n  --focus-ring-color: var(--primary-focus-ring);\n  --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color);\n  --control-checked-bg: var(--primary-base);\n  --control-checked-border-color: var(--control-checked-bg);\n  --control-active-bg: var(--primary-base);\n  --control-active-border-color: var(--control-active-bg);\n  --control-disabled-bg: var(--bg-3);\n  --control-disabled-opacity: 0.65;\n  --btn-input-fg: var(--fg-body);\n  --btn-input-bg: var(--bg-body);\n  --btn-input-min-height: 2.375rem;\n  --btn-input-padding-y: 0.375rem;\n  --btn-input-padding-x: 0.75rem;\n  --btn-input-font-size: var(--font-size-base);\n  --btn-input-line-height: var(--line-height-base);\n  --btn-input-border-radius: var(--border-radius);\n  --btn-input-xs-min-height: 1.5rem;\n  --btn-input-xs-padding-y: 0.125rem;\n  --btn-input-xs-padding-x: 0.5rem;\n  --btn-input-xs-font-size: var(--font-size-xs);\n  --btn-input-xs-line-height: 1.125;\n  --btn-input-xs-border-radius: var(--border-radius-xs);\n  --btn-input-sm-min-height: 2rem;\n  --btn-input-sm-padding-y: 0.25rem;\n  --btn-input-sm-padding-x: 0.625rem;\n  --btn-input-sm-font-size: var(--font-size-sm);\n  --btn-input-sm-line-height: var(--line-height-sm);\n  --btn-input-sm-border-radius: var(--border-radius-sm);\n  --btn-input-lg-min-height: 2.75rem;\n  --btn-input-lg-padding-y: 0.5rem;\n  --btn-input-lg-padding-x: 1rem;\n  --btn-input-lg-font-size: var(--font-size-md);\n  --btn-input-lg-line-height: var(--line-height-md);\n  --btn-input-lg-border-radius: var(--border-radius-lg);\n  --form-valid-color: var(--success-text);\n  --form-valid-border-color: var(--success-text);\n  --form-invalid-color: var(--danger-text);\n  --form-invalid-border-color: var(--danger-text);\n  --primary-base: var(--blue-500);\n  --primary-text: light-dark(var(--blue-600), var(--blue-400));\n  --primary-text-emphasis: light-dark(var(--blue-800), var(--blue-200));\n  --primary-bg: var(--blue-500);\n  --primary-bg-subtle: light-dark(var(--blue-100), var(--blue-900));\n  --primary-bg-muted: light-dark(var(--blue-200), var(--blue-800));\n  --primary-border: light-dark(var(--blue-300), var(--blue-600));\n  --primary-focus-ring: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  --primary-contrast: var(--white);\n  --accent-base: var(--indigo-500);\n  --accent-text: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  --accent-text-emphasis: light-dark(var(--indigo-800), var(--indigo-300));\n  --accent-bg: var(--indigo-500);\n  --accent-bg-subtle: light-dark(var(--indigo-100), var(--indigo-900));\n  --accent-bg-muted: light-dark(var(--indigo-200), var(--indigo-800));\n  --accent-border: light-dark(var(--indigo-300), var(--indigo-600));\n  --accent-focus-ring: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  --accent-contrast: var(--white);\n  --success-base: var(--green-500);\n  --success-text: light-dark(var(--green-600), var(--green-400));\n  --success-text-emphasis: light-dark(var(--green-800), var(--green-300));\n  --success-bg: var(--green-500);\n  --success-bg-subtle: light-dark(var(--green-100), var(--green-900));\n  --success-bg-muted: light-dark(var(--green-200), var(--green-800));\n  --success-border: light-dark(var(--green-300), var(--green-600));\n  --success-focus-ring: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  --success-contrast: var(--white);\n  --danger-base: var(--red-500);\n  --danger-text: light-dark(var(--red-600), var(--red-400));\n  --danger-text-emphasis: light-dark(var(--red-800), var(--red-300));\n  --danger-bg: var(--red-500);\n  --danger-bg-subtle: light-dark(var(--red-100), var(--red-900));\n  --danger-bg-muted: light-dark(var(--red-200), var(--red-800));\n  --danger-border: light-dark(var(--red-300), var(--red-600));\n  --danger-focus-ring: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  --danger-contrast: var(--white);\n  --warning-base: var(--yellow-500);\n  --warning-text: light-dark(var(--yellow-700), var(--yellow-400));\n  --warning-text-emphasis: light-dark(var(--yellow-800), var(--yellow-300));\n  --warning-bg: var(--yellow-500);\n  --warning-bg-subtle: light-dark(var(--yellow-100), var(--yellow-900));\n  --warning-bg-muted: light-dark(var(--yellow-200), var(--yellow-800));\n  --warning-border: light-dark(var(--yellow-300), var(--yellow-600));\n  --warning-focus-ring: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  --warning-contrast: var(--gray-900);\n  --info-base: var(--cyan-500);\n  --info-text: light-dark(var(--cyan-600), var(--cyan-400));\n  --info-text-emphasis: light-dark(var(--cyan-800), var(--cyan-300));\n  --info-bg: var(--cyan-500);\n  --info-bg-subtle: light-dark(var(--cyan-100), var(--cyan-900));\n  --info-bg-muted: light-dark(var(--cyan-200), var(--cyan-800));\n  --info-border: light-dark(var(--cyan-300), var(--cyan-600));\n  --info-focus-ring: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  --info-contrast: var(--gray-900);\n  --inverse-base: var(--gray-900);\n  --inverse-text: light-dark(var(--gray-900), var(--gray-200));\n  --inverse-text-emphasis: light-dark(var(--gray-975), var(--white));\n  --inverse-bg: light-dark(var(--gray-900), var(--gray-025));\n  --inverse-bg-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --inverse-bg-muted: light-dark(var(--gray-200), var(--gray-300));\n  --inverse-border: light-dark(var(--gray-400), var(--gray-100));\n  --inverse-focus-ring: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  --inverse-contrast: light-dark(var(--white), var(--gray-900));\n  --secondary-base: var(--gray-200);\n  --secondary-text: light-dark(var(--gray-600), var(--gray-400));\n  --secondary-text-emphasis: light-dark(var(--gray-800), var(--gray-200));\n  --secondary-bg: light-dark(var(--gray-100), var(--gray-600));\n  --secondary-bg-subtle: light-dark(var(--gray-050), var(--gray-800));\n  --secondary-bg-muted: light-dark(var(--gray-100), var(--gray-700));\n  --secondary-border: light-dark(var(--gray-300), var(--gray-600));\n  --secondary-focus-ring: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  --secondary-contrast: light-dark(var(--gray-900), var(--white));\n  --bg-body: light-dark(var(--white), var(--gray-975));\n  --bg-1: light-dark(var(--gray-025), var(--gray-950));\n  --bg-2: light-dark(var(--gray-050), var(--gray-900));\n  --bg-3: light-dark(var(--gray-100), var(--gray-800));\n  --bg-4: light-dark(var(--gray-200), var(--gray-700));\n  --bg-white: var(--white);\n  --bg-black: var(--black);\n  --bg-transparent: transparent;\n  --bg-inherit: inherit;\n  --fg-body: light-dark(var(--gray-900), var(--gray-050));\n  --fg-1: light-dark(var(--gray-800), var(--gray-200));\n  --fg-2: light-dark(var(--gray-700), var(--gray-300));\n  --fg-3: light-dark(var(--gray-600), var(--gray-500));\n  --fg-4: light-dark(var(--gray-500), var(--gray-600));\n  --fg-white: var(--white);\n  --fg-black: var(--black);\n  --fg-inherit: inherit;\n  --border-bg: var(--bg-body);\n  --border-body: light-dark(var(--gray-300), var(--gray-800));\n  --border-muted: light-dark(var(--gray-200), var(--gray-800));\n  --border-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --border-emphasized: light-dark(var(--gray-400), var(--gray-600));\n  --border-white: var(--white);\n  --border-black: var(--black);\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 1024px;\n  --breakpoint-xl: 1280px;\n  --breakpoint-2xl: 1536px;\n  color-scheme: light dark;\n}\n\n[data-bs-theme=dark] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=light] {\n  color-scheme: light;\n}\n\n@layer reboot {\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n  :root {\n    accent-color: var(--primary-base);\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    :root {\n      scroll-behavior: smooth;\n    }\n  }\n  body {\n    margin: 0;\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body);\n    -webkit-text-size-adjust: 100%;\n    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  }\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n  h6,\n  .h6, h5,\n  .h5, h4,\n  .h4, h3,\n  .h3, h2,\n  .h2, h1,\n  .h1 {\n    margin-top: 0;\n    margin-bottom: 0.5rem;\n    font-weight: 500;\n    line-height: 1.2;\n    color: var(--heading-color);\n  }\n  h1,\n  .h1 {\n    font-size: var(--font-size-3xl);\n  }\n  h2,\n  .h2 {\n    font-size: var(--font-size-2xl);\n  }\n  h3,\n  .h3 {\n    font-size: var(--font-size-xl);\n  }\n  h4,\n  .h4 {\n    font-size: var(--font-size-lg);\n  }\n  h5,\n  .h5 {\n    font-size: var(--font-size-md);\n  }\n  h6,\n  .h6 {\n    font-size: var(--font-size-sm);\n  }\n  p {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  abbr[title] {\n    text-decoration: underline dotted;\n    cursor: help;\n    text-decoration-skip-ink: none;\n  }\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n  dt {\n    font-weight: 700;\n  }\n  dd {\n    margin-inline-start: 0;\n    margin-bottom: 0.5rem;\n  }\n  blockquote {\n    margin: 0 0 1rem;\n  }\n  blockquote > * {\n    margin-block: 0;\n  }\n  b,\n  strong {\n    font-weight: bolder;\n  }\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n  mark,\n  .mark {\n    --mark-padding: 0.1875em;\n    --mark-color: var(--fg-body);\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900));\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, 0.75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n  sub {\n    bottom: -0.25em;\n  }\n  sup {\n    top: -0.5em;\n  }\n  a {\n    color: var(--theme-text, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: 0.2em;\n  }\n  a:hover {\n    color: var(--theme-text-emphasis, var(--link-hover-color));\n    text-decoration: var(--link-hover-decoration, var(--link-decoration));\n  }\n  a:not([href]):not([class]), a:not([href]):not([class]):hover {\n    color: inherit;\n    text-decoration: none;\n  }\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em;\n  }\n  pre {\n    display: block;\n    margin-top: 0;\n    margin-bottom: 1rem;\n    overflow: auto;\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n  }\n  pre code {\n    font-size: inherit;\n    color: inherit;\n    word-break: normal;\n  }\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n  }\n  a > code {\n    color: inherit;\n  }\n  kbd {\n    --kbd-padding-y: 0.125rem;\n    --kbd-padding-x: 0.25rem;\n    --kbd-font-size: var(--font-size-xs);\n    --kbd-color: var(--bg-body);\n    --kbd-bg: var(--fg-2);\n    --kbd-border-radius: var(--border-radius-sm);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    border-radius: var(--kbd-border-radius);\n  }\n  kbd kbd {\n    padding: 0;\n    font-size: 1em;\n    font-weight: inherit;\n  }\n  figure {\n    margin: 0 0 1rem;\n  }\n  img,\n  svg {\n    vertical-align: middle;\n  }\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n  caption {\n    padding-block: 0.5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n  th {\n    text-align: inherit;\n    text-align: -webkit-match-parent;\n  }\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n  label {\n    display: inline-block;\n  }\n  button {\n    border-radius: 0;\n  }\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0;\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n  button,\n  select {\n    text-transform: none;\n  }\n  [role=button] {\n    cursor: pointer;\n  }\n  select {\n    word-wrap: normal;\n  }\n  select:disabled {\n    opacity: 1;\n  }\n  [list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n  button,\n  [type=button],\n  [type=reset],\n  [type=submit] {\n    -webkit-appearance: button;\n  }\n  button:not(:disabled),\n  [type=button]:not(:disabled),\n  [type=reset]:not(:disabled),\n  [type=submit]:not(:disabled) {\n    cursor: pointer;\n  }\n  ::-moz-focus-inner {\n    padding: 0;\n    border-style: none;\n  }\n  textarea {\n    resize: vertical;\n  }\n  fieldset {\n    min-width: 0;\n    padding: 0;\n    margin: 0;\n    border: 0;\n  }\n  legend {\n    float: inline-start;\n    width: 100%;\n    padding: 0;\n    margin-bottom: 0.5rem;\n    font-size: 1.5rem;\n    line-height: inherit;\n  }\n  legend + * {\n    clear: inline-start;\n  }\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-ampm-field,\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n  ::-webkit-inner-spin-button {\n    height: auto;\n  }\n  [type=search] {\n    -webkit-appearance: textfield;\n    outline-offset: -2px;\n  }\n  [type=search]::-webkit-search-cancel-button {\n    cursor: pointer;\n    filter: grayscale(1);\n  }\n  [type=tel],\n  [type=url],\n  [type=email],\n  [type=number] {\n    direction: ltr;\n  }\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n  ::file-selector-button {\n    font: inherit;\n    -webkit-appearance: button;\n  }\n  output {\n    display: inline-block;\n  }\n  iframe {\n    border: 0;\n  }\n  summary {\n    display: list-item;\n    cursor: pointer;\n  }\n  progress {\n    vertical-align: baseline;\n  }\n  [hidden] {\n    display: none !important;\n  }\n}\n@layer content {\n  .list-unstyled {\n    padding-inline-start: 0;\n    list-style: none;\n  }\n  .list-inline {\n    padding-inline-start: 0;\n    list-style: none;\n  }\n  .list-inline-item {\n    display: inline-block;\n  }\n  .list-inline-item:not(:last-child) {\n    margin-inline-end: var(--list-inline-padding, var(--spacer)/2);\n  }\n  .initialism {\n    font-size: var(--initialism-font-size, var(--font-size-xs));\n    text-transform: uppercase;\n  }\n  .blockquote {\n    --blockquote-gap: calc(var(--spacer) / 2);\n    --blockquote-padding-x: var(--spacer);\n    --blockquote-margin-y: 1rem;\n    --blockquote-font-size: var(--font-size-md);\n    --blockquote-border-width: 0.25rem;\n    --blockquote-border-color: var(--border-color);\n    --blockquote-footer-font-size: var(--font-size-sm);\n    --blockquote-footer-color: var(--fg-3);\n    display: flex;\n    flex-direction: column;\n    gap: var(--blockquote-gap);\n    padding-inline-start: var(--blockquote-padding-x);\n    margin-bottom: var(--blockquote-margin-y);\n    font-size: var(--blockquote-font-size);\n    border-inline-start: var(--blockquote-border-width) solid var(--blockquote-border-color);\n  }\n  .blockquote > * {\n    margin-bottom: 0;\n  }\n  figure.blockquote blockquote {\n    margin-bottom: 0;\n  }\n  .blockquote-footer {\n    font-size: var(--blockquote-footer-font-size);\n    color: var(--blockquote-footer-color);\n  }\n  .blockquote-footer::before {\n    content: \"— \";\n  }\n}\n@layer content {\n  .table {\n    --table-cell-padding-y: 0.5rem;\n    --table-cell-padding-x: 0.5rem;\n    --table-cell-vertical-align: top;\n    --table-color: var(--fg-body);\n    --table-bg: var(--bg-body);\n    --table-accent-bg: transparent;\n    --table-border-width: var(--border-width);\n    --table-border-color: var(--border-color);\n    --table-group-separator-color: currentcolor;\n    --table-striped-color: var(--table-color);\n    --table-striped-bg-factor: 0.05;\n    --table-striped-bg: color-mix(in srgb, var(--table-color) var(--table-striped-bg-factor), transparent);\n    --table-active-color: var(--table-color);\n    --table-active-bg-factor: 0.1;\n    --table-active-bg: color-mix(in srgb, var(--table-color) var(--table-active-bg-factor), transparent);\n    --table-hover-color: var(--table-color);\n    --table-hover-bg-factor: 0.075;\n    --table-hover-bg: color-mix(in srgb, var(--table-color) var(--table-hover-bg-factor), transparent);\n    --table-color-type: initial;\n    --table-bg-type: initial;\n    --table-color-state: initial;\n    --table-bg-state: initial;\n    width: 100%;\n    margin-bottom: 1rem;\n    vertical-align: var(--table-cell-vertical-align);\n    border-color: var(--theme-border, var(--table-border-color));\n  }\n  .table > :not(caption) > * > * {\n    padding: var(--table-cell-padding-y) var(--table-cell-padding-x);\n    color: var(--table-color-state, var(--table-color-type, var(--theme-text, var(--table-color))));\n    background-color: var(--theme-bg-subtle, var(--table-bg));\n    border-block-end-width: var(--table-border-width);\n    box-shadow: inset 0 0 0 9999px var(--table-bg-state, var(--table-bg-type, var(--theme-bg-subtle, var(--table-accent-bg))));\n  }\n  .table > tbody {\n    vertical-align: inherit;\n  }\n  .table > thead {\n    vertical-align: bottom;\n  }\n  .table-group-divider {\n    border-block-start: calc(var(--table-border-width) * 2) solid var(--table-group-separator-color);\n  }\n  .caption-top {\n    caption-side: top;\n  }\n  .table-sm > :not(caption) > * > * {\n    --table-cell-padding-y: .25rem;\n    --table-cell-padding-x: .25rem;\n  }\n  .table-bordered > :not(caption) > * {\n    border-width: var(--table-border-width) 0;\n  }\n  .table-bordered > :not(caption) > * > * {\n    border-width: 0 var(--table-border-width);\n  }\n  .table-borderless > :not(caption) > * > * {\n    border-block-end-width: 0;\n  }\n  .table-borderless > :not(:first-child) {\n    border-block-start-width: 0;\n  }\n  .table-striped > tbody > tr:nth-of-type(odd) > * {\n    --table-color-type: var(--theme-text, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-striped-bg-factor), transparent);\n  }\n  .table-striped-columns > :not(caption) > tr > :nth-child(even) {\n    --table-color-type: var(--theme-text, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-striped-bg-factor), transparent);\n  }\n  .table-active {\n    --table-color-state: var(--theme-text, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-active-bg-factor), transparent);\n  }\n  .table-hover > tbody > tr:hover > * {\n    --table-color-state: var(--theme-text, var(--table-hover-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-hover-bg-factor), transparent);\n  }\n  .table-responsive {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n  @media (width < 576px) {\n    .table-responsive-sm {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  @media (width < 768px) {\n    .table-responsive-md {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  @media (width < 1024px) {\n    .table-responsive-lg {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  @media (width < 1280px) {\n    .table-responsive-xl {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  @media (width < 1536px) {\n    .table-responsive-2xl {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n}\n@layer content {\n  .img-fluid {\n    max-width: 100%;\n    height: auto;\n  }\n  .img-thumbnail {\n    --thumbnail-padding: 0.25rem;\n    --thumbnail-bg: var(--bg-body);\n    --thumbnail-border-width: var(--border-width);\n    --thumbnail-border-color: var(--border-color);\n    --thumbnail-border-radius: var(--border-radius);\n    --thumbnail-box-shadow: var(--box-shadow-sm);\n    padding: var(--thumbnail-padding);\n    background-color: var(--thumbnail-bg);\n    border: var(--thumbnail-border-width) solid var(--thumbnail-border-color);\n    border-radius: var(--thumbnail-border-radius);\n    box-shadow: var(--thumbnail-box-shadow);\n    max-width: 100%;\n    height: auto;\n  }\n  .figure {\n    --figure-gap: calc(var(--spacer) * 0.5);\n    --figure-caption-font-size: var(--font-size-sm);\n    --figure-caption-color: var(--fg-3);\n    display: flex;\n    flex-direction: column;\n    gap: var(--figure-gap);\n  }\n  .figure-caption {\n    font-size: var(--figure-caption-font-size);\n    color: var(--figure-caption-color);\n  }\n}\n@layer content {\n  .prose {\n    --content-font-size: 1rem;\n    --content-gap: 20px;\n    --heading-color: light-dark(var(--gray-900), var(--white));\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--content-gap);\n    max-width: 1000px;\n    margin-inline: auto;\n    font-size: var(--content-font-size);\n    line-height: 1.5;\n  }\n  @media (width >= 1024px) {\n    .prose {\n      --content-font-size: var(--font-size-md);\n      --content-gap: 24px;\n    }\n  }\n  .prose :where(p, ul, ol, dl, pre, table, blockquote):not(:where(.not-prose, .not-prose *)) {\n    margin-block: 0;\n  }\n  .prose :where(ul, ol):not([class]):not(:where(.not-prose, .not-prose *)) li:not(:last-child) {\n    margin-bottom: calc(var(--content-gap) / 4);\n  }\n  .prose :where(li ul, li ol):not(:where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) / 4);\n  }\n  .prose :where(hr):not(:where(.not-prose, .not-prose *)) {\n    margin: calc(var(--content-gap) * 1.5) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n  .prose :where(h1, h2, h3, h4, h5, h6):not([class]):not(:where(.not-prose, .not-prose *)) {\n    margin-top: 0;\n    margin-bottom: calc(var(--content-gap) / -2);\n    font-weight: 500;\n    line-height: 1.25;\n  }\n  .prose :where(h1, h2, h3, h4, h5, h6):not([class]):not(:where(.not-prose, .not-prose *)) code {\n    font-weight: 600;\n    color: inherit;\n  }\n  .prose :where(h1, h2):not(:first-child):not(:where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) * 0.75);\n  }\n  .prose :where(h3, h4, h5, h6):not(:first-child):not(:where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) * 0.5);\n  }\n  .prose :where(h1):not(:where(.not-prose, .not-prose *)) {\n    font-size: 2.25em;\n    line-height: 1.1;\n  }\n  .prose :where(h2):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.75em;\n  }\n  .prose :where(h3):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.5em;\n  }\n  .prose :where(h4):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.25em;\n  }\n  .prose :where(h5):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.125em;\n  }\n  .prose :where(h6):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1em;\n  }\n  .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n    color: var(--link-color);\n    text-decoration: underline;\n    text-decoration-color: color-mix(in srgb, var(--link-color) 25%, transparent);\n    text-underline-offset: 4px;\n    transition: 0.1s text-decoration-color ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n      transition: none;\n    }\n  }\n  .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)):hover {\n    text-decoration-color: var(--link-hover-color);\n  }\n  .prose :where(img):not(:where(.not-prose, .not-prose *)) {\n    max-width: 100%;\n  }\n  .prose :where(blockquote):not(:where(.not-prose, .not-prose *)) {\n    padding-inline-start: calc(var(--content-gap) / 2);\n    margin: 0;\n    border-inline-start: 4px solid var(--border-color);\n  }\n  .prose :where(table):not(:where(.not-prose, .not-prose *)) {\n    width: 100%;\n    border-spacing: 0;\n    border-collapse: collapse;\n  }\n  .prose :where(table:not([class])):not(:where(.not-prose, .not-prose *)) td,\n  .prose :where(table:not([class])):not(:where(.not-prose, .not-prose *)) th {\n    padding: 6px 12px;\n    text-align: inherit;\n    border: 1px solid var(--border-color);\n  }\n  .prose :where(dt):not(:where(.not-prose, .not-prose *)) {\n    font-weight: 500;\n  }\n  .prose :where(video, img):not(:where(.not-prose, .not-prose *)) {\n    max-width: 100%;\n  }\n}\n@layer layout {\n  .container,\n  .container-fluid,\n  .container-2xl,\n  .container-xl,\n  .container-lg,\n  .container-md,\n  .container-sm {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-inline: auto;\n  }\n  @media (width >= 576px) {\n    .container-sm, .container {\n      max-width: 540px;\n    }\n  }\n  @media (width >= 768px) {\n    .container-md, .container-sm, .container {\n      max-width: 720px;\n    }\n  }\n  @media (width >= 1024px) {\n    .container-lg, .container-md, .container-sm, .container {\n      max-width: 960px;\n    }\n  }\n  @media (width >= 1280px) {\n    .container-xl, .container-lg, .container-md, .container-sm, .container {\n      max-width: 1200px;\n    }\n  }\n  @media (width >= 1536px) {\n    .container-2xl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n      max-width: 1440px;\n    }\n  }\n}\n@layer layout {\n  .row {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    display: flex;\n    flex-wrap: wrap;\n    margin-inline: calc(-0.5 * var(--gutter-x));\n    margin-top: calc(-1 * var(--gutter-y));\n  }\n  .row > * {\n    flex-shrink: 0;\n    width: 100%;\n    max-width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-top: var(--gutter-y);\n  }\n  .col {\n    flex: 1 0 0;\n  }\n  .row-cols-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .row-cols-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .row-cols-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .row-cols-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .row-cols-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .row-cols-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n  .row-cols-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .col-1 {\n    flex: 0 0 auto;\n    width: 8.3333333333%;\n  }\n  .col-2 {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .col-4 {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .col-5 {\n    flex: 0 0 auto;\n    width: 41.6666666667%;\n  }\n  .col-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .col-7 {\n    flex: 0 0 auto;\n    width: 58.3333333333%;\n  }\n  .col-8 {\n    flex: 0 0 auto;\n    width: 66.6666666667%;\n  }\n  .col-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n  .col-10 {\n    flex: 0 0 auto;\n    width: 83.3333333333%;\n  }\n  .col-11 {\n    flex: 0 0 auto;\n    width: 91.6666666667%;\n  }\n  .col-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .offset-1 {\n    margin-inline-start: 8.3333333333%;\n  }\n  .offset-2 {\n    margin-inline-start: 16.6666666667%;\n  }\n  .offset-3 {\n    margin-inline-start: 25%;\n  }\n  .offset-4 {\n    margin-inline-start: 33.3333333333%;\n  }\n  .offset-5 {\n    margin-inline-start: 41.6666666667%;\n  }\n  .offset-6 {\n    margin-inline-start: 50%;\n  }\n  .offset-7 {\n    margin-inline-start: 58.3333333333%;\n  }\n  .offset-8 {\n    margin-inline-start: 66.6666666667%;\n  }\n  .offset-9 {\n    margin-inline-start: 75%;\n  }\n  .offset-10 {\n    margin-inline-start: 83.3333333333%;\n  }\n  .offset-11 {\n    margin-inline-start: 91.6666666667%;\n  }\n  .g--2,\n  .gx--2 {\n    --gutter-x: -0.5rem;\n  }\n  .g--2,\n  .gy--2 {\n    --gutter-y: -0.5rem;\n  }\n  .g--1,\n  .gx--1 {\n    --gutter-x: -0.25rem;\n  }\n  .g--1,\n  .gy--1 {\n    --gutter-y: -0.25rem;\n  }\n  .g-0,\n  .gx-0 {\n    --gutter-x: 0;\n  }\n  .g-0,\n  .gy-0 {\n    --gutter-y: 0;\n  }\n  .g-1,\n  .gx-1 {\n    --gutter-x: 0.25rem;\n  }\n  .g-1,\n  .gy-1 {\n    --gutter-y: 0.25rem;\n  }\n  .g-2,\n  .gx-2 {\n    --gutter-x: 0.5rem;\n  }\n  .g-2,\n  .gy-2 {\n    --gutter-y: 0.5rem;\n  }\n  .g-3,\n  .gx-3 {\n    --gutter-x: 1rem;\n  }\n  .g-3,\n  .gy-3 {\n    --gutter-y: 1rem;\n  }\n  .g-4,\n  .gx-4 {\n    --gutter-x: 1.5rem;\n  }\n  .g-4,\n  .gy-4 {\n    --gutter-y: 1.5rem;\n  }\n  .g-5,\n  .gx-5 {\n    --gutter-x: 3rem;\n  }\n  .g-5,\n  .gy-5 {\n    --gutter-y: 3rem;\n  }\n  @media (width >= 576px) {\n    .col-sm {\n      flex: 1 0 0;\n    }\n    .row-cols-sm-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-sm-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-sm-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-sm-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-sm-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-sm-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-sm-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-sm-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-sm-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-sm-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-sm-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-sm-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-sm-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-sm-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-sm-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-sm-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-sm-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-sm-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-sm-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-sm-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-sm-0 {\n      margin-inline-start: 0;\n    }\n    .offset-sm-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-sm-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-sm-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-sm-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-sm-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-sm-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-sm-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-sm-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-sm-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-sm-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-sm-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-sm--2,\n    .gx-sm--2 {\n      --gutter-x: -0.5rem;\n    }\n    .g-sm--2,\n    .gy-sm--2 {\n      --gutter-y: -0.5rem;\n    }\n    .g-sm--1,\n    .gx-sm--1 {\n      --gutter-x: -0.25rem;\n    }\n    .g-sm--1,\n    .gy-sm--1 {\n      --gutter-y: -0.25rem;\n    }\n    .g-sm-0,\n    .gx-sm-0 {\n      --gutter-x: 0;\n    }\n    .g-sm-0,\n    .gy-sm-0 {\n      --gutter-y: 0;\n    }\n    .g-sm-1,\n    .gx-sm-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-sm-1,\n    .gy-sm-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-sm-2,\n    .gx-sm-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-sm-2,\n    .gy-sm-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-sm-3,\n    .gx-sm-3 {\n      --gutter-x: 1rem;\n    }\n    .g-sm-3,\n    .gy-sm-3 {\n      --gutter-y: 1rem;\n    }\n    .g-sm-4,\n    .gx-sm-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-sm-4,\n    .gy-sm-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-sm-5,\n    .gx-sm-5 {\n      --gutter-x: 3rem;\n    }\n    .g-sm-5,\n    .gy-sm-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 768px) {\n    .col-md {\n      flex: 1 0 0;\n    }\n    .row-cols-md-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-md-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-md-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-md-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-md-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-md-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-md-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-md-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-md-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-md-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-md-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-md-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-md-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-md-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-md-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-md-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-md-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-md-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-md-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-md-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-md-0 {\n      margin-inline-start: 0;\n    }\n    .offset-md-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-md-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-md-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-md-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-md-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-md-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-md-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-md-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-md-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-md-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-md-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-md--2,\n    .gx-md--2 {\n      --gutter-x: -0.5rem;\n    }\n    .g-md--2,\n    .gy-md--2 {\n      --gutter-y: -0.5rem;\n    }\n    .g-md--1,\n    .gx-md--1 {\n      --gutter-x: -0.25rem;\n    }\n    .g-md--1,\n    .gy-md--1 {\n      --gutter-y: -0.25rem;\n    }\n    .g-md-0,\n    .gx-md-0 {\n      --gutter-x: 0;\n    }\n    .g-md-0,\n    .gy-md-0 {\n      --gutter-y: 0;\n    }\n    .g-md-1,\n    .gx-md-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-md-1,\n    .gy-md-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-md-2,\n    .gx-md-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-md-2,\n    .gy-md-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-md-3,\n    .gx-md-3 {\n      --gutter-x: 1rem;\n    }\n    .g-md-3,\n    .gy-md-3 {\n      --gutter-y: 1rem;\n    }\n    .g-md-4,\n    .gx-md-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-md-4,\n    .gy-md-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-md-5,\n    .gx-md-5 {\n      --gutter-x: 3rem;\n    }\n    .g-md-5,\n    .gy-md-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1024px) {\n    .col-lg {\n      flex: 1 0 0;\n    }\n    .row-cols-lg-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-lg-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-lg-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-lg-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-lg-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-lg-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-lg-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-lg-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-lg-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-lg-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-lg-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-lg-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-lg-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-lg-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-lg-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-lg-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-lg-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-lg-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-lg-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-lg-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-lg-0 {\n      margin-inline-start: 0;\n    }\n    .offset-lg-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-lg-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-lg-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-lg-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-lg-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-lg-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-lg-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-lg-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-lg-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-lg-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-lg-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-lg--2,\n    .gx-lg--2 {\n      --gutter-x: -0.5rem;\n    }\n    .g-lg--2,\n    .gy-lg--2 {\n      --gutter-y: -0.5rem;\n    }\n    .g-lg--1,\n    .gx-lg--1 {\n      --gutter-x: -0.25rem;\n    }\n    .g-lg--1,\n    .gy-lg--1 {\n      --gutter-y: -0.25rem;\n    }\n    .g-lg-0,\n    .gx-lg-0 {\n      --gutter-x: 0;\n    }\n    .g-lg-0,\n    .gy-lg-0 {\n      --gutter-y: 0;\n    }\n    .g-lg-1,\n    .gx-lg-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-lg-1,\n    .gy-lg-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-lg-2,\n    .gx-lg-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-lg-2,\n    .gy-lg-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-lg-3,\n    .gx-lg-3 {\n      --gutter-x: 1rem;\n    }\n    .g-lg-3,\n    .gy-lg-3 {\n      --gutter-y: 1rem;\n    }\n    .g-lg-4,\n    .gx-lg-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-lg-4,\n    .gy-lg-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-lg-5,\n    .gx-lg-5 {\n      --gutter-x: 3rem;\n    }\n    .g-lg-5,\n    .gy-lg-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1280px) {\n    .col-xl {\n      flex: 1 0 0;\n    }\n    .row-cols-xl-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-xl-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-xl-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-xl-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-xl-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-xl-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-xl-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-xl-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-xl-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-xl-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-xl-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-xl-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-xl-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-xl-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-xl-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-xl-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-xl-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-xl-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-xl-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-xl-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-xl-0 {\n      margin-inline-start: 0;\n    }\n    .offset-xl-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-xl-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-xl-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-xl-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-xl-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-xl-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-xl-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-xl-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-xl-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-xl-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-xl-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-xl--2,\n    .gx-xl--2 {\n      --gutter-x: -0.5rem;\n    }\n    .g-xl--2,\n    .gy-xl--2 {\n      --gutter-y: -0.5rem;\n    }\n    .g-xl--1,\n    .gx-xl--1 {\n      --gutter-x: -0.25rem;\n    }\n    .g-xl--1,\n    .gy-xl--1 {\n      --gutter-y: -0.25rem;\n    }\n    .g-xl-0,\n    .gx-xl-0 {\n      --gutter-x: 0;\n    }\n    .g-xl-0,\n    .gy-xl-0 {\n      --gutter-y: 0;\n    }\n    .g-xl-1,\n    .gx-xl-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-xl-1,\n    .gy-xl-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-xl-2,\n    .gx-xl-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-xl-2,\n    .gy-xl-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-xl-3,\n    .gx-xl-3 {\n      --gutter-x: 1rem;\n    }\n    .g-xl-3,\n    .gy-xl-3 {\n      --gutter-y: 1rem;\n    }\n    .g-xl-4,\n    .gx-xl-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-xl-4,\n    .gy-xl-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-xl-5,\n    .gx-xl-5 {\n      --gutter-x: 3rem;\n    }\n    .g-xl-5,\n    .gy-xl-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1536px) {\n    .col-2xl {\n      flex: 1 0 0;\n    }\n    .row-cols-2xl-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-2xl-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-2xl-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-2xl-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-2xl-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-2xl-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-2xl-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-2xl-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-2xl-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-2xl-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-2xl-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-2xl-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-2xl-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-2xl-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-2xl-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-2xl-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-2xl-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-2xl-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-2xl-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-2xl-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-2xl-0 {\n      margin-inline-start: 0;\n    }\n    .offset-2xl-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-2xl-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-2xl-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-2xl-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-2xl-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-2xl-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-2xl-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-2xl-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-2xl-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-2xl-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-2xl-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-2xl--2,\n    .gx-2xl--2 {\n      --gutter-x: -0.5rem;\n    }\n    .g-2xl--2,\n    .gy-2xl--2 {\n      --gutter-y: -0.5rem;\n    }\n    .g-2xl--1,\n    .gx-2xl--1 {\n      --gutter-x: -0.25rem;\n    }\n    .g-2xl--1,\n    .gy-2xl--1 {\n      --gutter-y: -0.25rem;\n    }\n    .g-2xl-0,\n    .gx-2xl-0 {\n      --gutter-x: 0;\n    }\n    .g-2xl-0,\n    .gy-2xl-0 {\n      --gutter-y: 0;\n    }\n    .g-2xl-1,\n    .gx-2xl-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-2xl-1,\n    .gy-2xl-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-2xl-2,\n    .gx-2xl-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-2xl-2,\n    .gy-2xl-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-2xl-3,\n    .gx-2xl-3 {\n      --gutter-x: 1rem;\n    }\n    .g-2xl-3,\n    .gy-2xl-3 {\n      --gutter-y: 1rem;\n    }\n    .g-2xl-4,\n    .gx-2xl-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-2xl-4,\n    .gy-2xl-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-2xl-5,\n    .gx-2xl-5 {\n      --gutter-x: 3rem;\n    }\n    .g-2xl-5,\n    .gy-2xl-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  .grid {\n    --columns: 12;\n    --rows: 1;\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-rows: repeat(var(--rows), 1fr);\n    grid-template-columns: repeat(var(--columns), 1fr);\n    gap: var(--gap);\n  }\n  .g-col-1 {\n    grid-column: auto/span 1;\n  }\n  .g-col-2 {\n    grid-column: auto/span 2;\n  }\n  .g-col-3 {\n    grid-column: auto/span 3;\n  }\n  .g-col-4 {\n    grid-column: auto/span 4;\n  }\n  .g-col-5 {\n    grid-column: auto/span 5;\n  }\n  .g-col-6 {\n    grid-column: auto/span 6;\n  }\n  .g-col-7 {\n    grid-column: auto/span 7;\n  }\n  .g-col-8 {\n    grid-column: auto/span 8;\n  }\n  .g-col-9 {\n    grid-column: auto/span 9;\n  }\n  .g-col-10 {\n    grid-column: auto/span 10;\n  }\n  .g-col-11 {\n    grid-column: auto/span 11;\n  }\n  .g-col-12 {\n    grid-column: auto/span 12;\n  }\n  .g-start-1 {\n    grid-column-start: 1;\n  }\n  .g-start-2 {\n    grid-column-start: 2;\n  }\n  .g-start-3 {\n    grid-column-start: 3;\n  }\n  .g-start-4 {\n    grid-column-start: 4;\n  }\n  .g-start-5 {\n    grid-column-start: 5;\n  }\n  .g-start-6 {\n    grid-column-start: 6;\n  }\n  .g-start-7 {\n    grid-column-start: 7;\n  }\n  .g-start-8 {\n    grid-column-start: 8;\n  }\n  .g-start-9 {\n    grid-column-start: 9;\n  }\n  .g-start-10 {\n    grid-column-start: 10;\n  }\n  .g-start-11 {\n    grid-column-start: 11;\n  }\n  @media (width >= 576px) {\n    .g-col-sm-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-sm-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-sm-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-sm-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-sm-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-sm-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-sm-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-sm-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-sm-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-sm-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-sm-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-sm-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-sm-1 {\n      grid-column-start: 1;\n    }\n    .g-start-sm-2 {\n      grid-column-start: 2;\n    }\n    .g-start-sm-3 {\n      grid-column-start: 3;\n    }\n    .g-start-sm-4 {\n      grid-column-start: 4;\n    }\n    .g-start-sm-5 {\n      grid-column-start: 5;\n    }\n    .g-start-sm-6 {\n      grid-column-start: 6;\n    }\n    .g-start-sm-7 {\n      grid-column-start: 7;\n    }\n    .g-start-sm-8 {\n      grid-column-start: 8;\n    }\n    .g-start-sm-9 {\n      grid-column-start: 9;\n    }\n    .g-start-sm-10 {\n      grid-column-start: 10;\n    }\n    .g-start-sm-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 768px) {\n    .g-col-md-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-md-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-md-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-md-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-md-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-md-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-md-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-md-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-md-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-md-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-md-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-md-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-md-1 {\n      grid-column-start: 1;\n    }\n    .g-start-md-2 {\n      grid-column-start: 2;\n    }\n    .g-start-md-3 {\n      grid-column-start: 3;\n    }\n    .g-start-md-4 {\n      grid-column-start: 4;\n    }\n    .g-start-md-5 {\n      grid-column-start: 5;\n    }\n    .g-start-md-6 {\n      grid-column-start: 6;\n    }\n    .g-start-md-7 {\n      grid-column-start: 7;\n    }\n    .g-start-md-8 {\n      grid-column-start: 8;\n    }\n    .g-start-md-9 {\n      grid-column-start: 9;\n    }\n    .g-start-md-10 {\n      grid-column-start: 10;\n    }\n    .g-start-md-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1024px) {\n    .g-col-lg-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-lg-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-lg-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-lg-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-lg-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-lg-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-lg-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-lg-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-lg-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-lg-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-lg-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-lg-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-lg-1 {\n      grid-column-start: 1;\n    }\n    .g-start-lg-2 {\n      grid-column-start: 2;\n    }\n    .g-start-lg-3 {\n      grid-column-start: 3;\n    }\n    .g-start-lg-4 {\n      grid-column-start: 4;\n    }\n    .g-start-lg-5 {\n      grid-column-start: 5;\n    }\n    .g-start-lg-6 {\n      grid-column-start: 6;\n    }\n    .g-start-lg-7 {\n      grid-column-start: 7;\n    }\n    .g-start-lg-8 {\n      grid-column-start: 8;\n    }\n    .g-start-lg-9 {\n      grid-column-start: 9;\n    }\n    .g-start-lg-10 {\n      grid-column-start: 10;\n    }\n    .g-start-lg-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1280px) {\n    .g-col-xl-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-xl-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-xl-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-xl-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-xl-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-xl-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-xl-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-xl-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-xl-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-xl-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-xl-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-xl-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-xl-1 {\n      grid-column-start: 1;\n    }\n    .g-start-xl-2 {\n      grid-column-start: 2;\n    }\n    .g-start-xl-3 {\n      grid-column-start: 3;\n    }\n    .g-start-xl-4 {\n      grid-column-start: 4;\n    }\n    .g-start-xl-5 {\n      grid-column-start: 5;\n    }\n    .g-start-xl-6 {\n      grid-column-start: 6;\n    }\n    .g-start-xl-7 {\n      grid-column-start: 7;\n    }\n    .g-start-xl-8 {\n      grid-column-start: 8;\n    }\n    .g-start-xl-9 {\n      grid-column-start: 9;\n    }\n    .g-start-xl-10 {\n      grid-column-start: 10;\n    }\n    .g-start-xl-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1536px) {\n    .g-col-2xl-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-2xl-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-2xl-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-2xl-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-2xl-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-2xl-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-2xl-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-2xl-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-2xl-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-2xl-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-2xl-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-2xl-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-2xl-1 {\n      grid-column-start: 1;\n    }\n    .g-start-2xl-2 {\n      grid-column-start: 2;\n    }\n    .g-start-2xl-3 {\n      grid-column-start: 3;\n    }\n    .g-start-2xl-4 {\n      grid-column-start: 4;\n    }\n    .g-start-2xl-5 {\n      grid-column-start: 5;\n    }\n    .g-start-2xl-6 {\n      grid-column-start: 6;\n    }\n    .g-start-2xl-7 {\n      grid-column-start: 7;\n    }\n    .g-start-2xl-8 {\n      grid-column-start: 8;\n    }\n    .g-start-2xl-9 {\n      grid-column-start: 9;\n    }\n    .g-start-2xl-10 {\n      grid-column-start: 10;\n    }\n    .g-start-2xl-11 {\n      grid-column-start: 11;\n    }\n  }\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n  .grid-fill {\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n}\n@layer forms {\n  .form-label,\n  .col-form-label {\n    font-size: var(--label-font-size, var(--font-size-sm));\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, inherit);\n    color: var(--label-color, var(--fg-body));\n  }\n  .form-label {\n    margin-bottom: var(--label-margin-bottom, calc(var(--spacer) / 2));\n  }\n  .col-form-label {\n    --label-padding-y: calc(var(--btn-input-padding-y) + var(--border-width));\n    padding-block: var(--label-padding-y);\n    margin-bottom: 0;\n  }\n  .col-form-label-lg {\n    --label-padding-y: calc(var(--btn-input-lg-padding-y) + var(--border-width));\n    font-size: var(--btn-input-lg-font-size);\n  }\n  .col-form-label-sm {\n    --label-padding-y: calc(var(--btn-input-sm-padding-y) + var(--border-width));\n    font-size: var(--btn-input-sm-font-size);\n  }\n}\n@layer forms {\n  .form-text {\n    --form-text-margin-top: 0.25rem;\n    --form-text-font-size: var(--font-size-sm);\n    --form-text-color: var(--fg-3);\n    margin-top: var(--form-text-margin-top);\n    font-size: var(--form-text-font-size);\n    font-style: var(--form-text-font-style);\n    font-weight: var(--form-text-font-weight);\n    color: var(--form-text-color);\n  }\n}\n@layer forms {\n  .form-control {\n    --control-min-height: var(--btn-input-min-height);\n    --control-padding-y: var(--btn-input-padding-y);\n    --control-padding-x: var(--btn-input-padding-x);\n    --control-font-size: var(--btn-input-font-size);\n    --control-line-height: var(--btn-input-line-height);\n    --control-fg: var(--btn-input-fg);\n    --control-bg: var(--btn-input-bg);\n    --control-border-width: var(--border-width);\n    --control-border-color: var(--border-color);\n    --control-border-radius: var(--border-radius);\n    --control-box-shadow: var(--box-shadow-inset);\n    --control-action-bg: var(--bg-1);\n    --control-action-hover-bg: var(--bg-2);\n    --control-transition-property: border-color, box-shadow;\n    --control-transition-timing: 0.15s ease-in-out;\n    --control-transition: var(--control-transition-property) var(--control-transition-timing);\n    --control-placeholder-color: var(--fg-3);\n    --control-disabled-color: var(--control-fg);\n    --control-disabled-bg: var(--bg-2);\n    --control-disabled-border-color: var(--control-border-color);\n    --control-select-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2300000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    --control-select-bg-position: right 0.75rem center;\n    --control-select-bg-size: 16px 12px;\n    --control-select-bg-dark: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    display: flex;\n    width: 100%;\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    font-size: var(--control-font-size);\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    appearance: none;\n    background-color: var(--control-bg);\n    background-clip: padding-box;\n    border: var(--control-border-width) solid var(--control-border-color);\n    border-radius: var(--control-border-radius);\n    box-shadow: var(--control-box-shadow);\n    transition: var(--control-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-control {\n      transition: none;\n    }\n  }\n  .form-control:focus-visible {\n    --focus-ring-offset: -1px;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-control::placeholder {\n    color: var(--control-placeholder-color);\n    opacity: 1;\n  }\n  .form-control:disabled {\n    color: var(--control-disabled-color);\n    background-color: var(--control-disabled-bg);\n    border-color: var(--control-disabled-border-color);\n    opacity: 1;\n  }\n  .form-control::-webkit-datetime-edit {\n    display: block;\n    height: 1.5rem;\n    padding: 0;\n    margin-bottom: -0.125rem;\n  }\n  .form-control::-webkit-datetime-edit-fields-wrapper {\n    height: 1.5rem;\n  }\n  .form-control[type=file] {\n    overflow: hidden;\n  }\n  .form-control[type=file]:not(:disabled):not([readonly]) {\n    cursor: pointer;\n  }\n  .form-control::file-selector-button {\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    margin: calc(var(--control-padding-y) * -1) calc(var(--control-padding-x) * -1);\n    margin-inline-end: var(--control-padding-x);\n    color: var(--control-fg);\n    background-color: var(--control-action-bg);\n    pointer-events: none;\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n    border-inline-end-width: var(--control-border-width);\n    border-radius: 0;\n    transition: var(--control-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-control::file-selector-button {\n      transition: none;\n    }\n  }\n  .form-control:hover:not(:disabled):not([readonly])::file-selector-button {\n    background-color: var(--control-action-hover-bg);\n  }\n  .form-control-plaintext {\n    display: block;\n    width: 100%;\n    padding: var(--control-padding-y) 0;\n    margin-bottom: 0;\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    background-color: transparent;\n    border: solid transparent;\n    border-width: var(--control-border-width) 0;\n  }\n  .form-control-plaintext:focus {\n    outline: 0;\n  }\n  .form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n    padding-inline: 0;\n  }\n  select.form-control {\n    padding-inline-end: calc(var(--control-padding-x) * 3);\n    background-image: var(--control-select-bg);\n    background-repeat: no-repeat;\n    background-position: var(--control-select-bg-position);\n    background-size: var(--control-select-bg-size);\n  }\n  select.form-control[multiple], select.form-control[size]:not([size=\"1\"]) {\n    padding-inline-end: var(--control-padding-x);\n    background-image: none;\n  }\n  @media (prefers-color-scheme: dark) {\n    select.form-control {\n      background-image: var(--control-select-bg-dark);\n    }\n  }\n  .form-control-sm {\n    --control-min-height: var(--btn-input-sm-min-height);\n    --control-padding-y: var(--btn-input-sm-padding-y);\n    --control-padding-x: var(--btn-input-sm-padding-x);\n    --control-font-size: var(--btn-input-sm-font-size);\n    --control-line-height: var(--btn-input-sm-line-height);\n    --control-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .form-control-lg {\n    --control-min-height: var(--btn-input-lg-min-height);\n    --control-padding-y: var(--btn-input-lg-padding-y);\n    --control-padding-x: var(--btn-input-lg-padding-x);\n    --control-font-size: var(--btn-input-lg-font-size);\n    --control-line-height: var(--btn-input-lg-line-height);\n    --control-border-radius: var(--btn-input-lg-border-radius);\n  }\n  .form-control-color {\n    width: var(--control-min-height);\n    padding: var(--control-padding-y);\n  }\n  .form-control-color:not(:disabled):not([readonly]) {\n    cursor: pointer;\n  }\n  .form-control-color::-moz-color-swatch {\n    border: 0 !important;\n    border-radius: var(--border-radius-sm);\n  }\n  .form-control-color::-webkit-color-swatch {\n    border: 0 !important;\n    border-radius: var(--border-radius-sm);\n  }\n  .form-ghost {\n    display: block;\n    width: 100%;\n    padding: 0;\n    font: inherit;\n    color: inherit;\n    appearance: none;\n    background: transparent;\n    border: 0;\n  }\n  .form-ghost:focus {\n    outline: 0;\n  }\n  .form-ghost::placeholder {\n    color: var(--fg-3);\n    opacity: 1;\n  }\n  .form-ghost:disabled {\n    color: var(--fg-4);\n    cursor: not-allowed;\n  }\n}\n@layer forms {\n  .checkgroup {\n    display: flex;\n    gap: var(--gap, 0.5rem);\n    align-items: var(--align-items, start);\n  }\n  .checkgroup .description {\n    color: var(--fg-3);\n  }\n  .check {\n    --check-size: 1.25rem;\n    --check-margin-block: 0.125rem;\n    --check-bg: transparent;\n    --check-border-color: var(--border-color);\n    --check-border-radius: 0.375rem;\n    --check-checked-bg: var(--control-checked-bg);\n    --check-checked-border-color: var(--control-checked-border-color);\n    --check-indeterminate-bg: var(--control-checked-bg);\n    --check-indeterminate-border-color: var(--control-checked-border-color);\n    --check-active-bg: var(--control-active-bg);\n    --check-active-border-color: var(--control-active-border-color);\n    --check-disabled-bg: var(--control-disabled-bg);\n    --check-disabled-opacity: var(--control-disabled-opacity);\n    display: grid;\n    grid-template-columns: repeat(1, minmax(0, 1fr));\n    margin-block: var(--check-margin-block);\n  }\n  .check :where(svg, input) {\n    flex-shrink: 0;\n    grid-row-start: 1;\n    grid-column-start: 1;\n    width: var(--check-size);\n    height: var(--check-size);\n  }\n  .check :where(input) {\n    appearance: none;\n    background-color: var(--theme-bg, var(--check-bg));\n    border: 1px solid var(--theme-bg, var(--check-border-color));\n    border-radius: 0.3em;\n  }\n  .check :where(input:checked, input:indeterminate) {\n    background-color: var(--theme-bg, var(--check-checked-bg));\n    border-color: var(--theme-bg, var(--check-checked-border-color));\n  }\n  .check :where(input:focus-visible) {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .check:has(input:checked) .checked, .check:has(input:indeterminate) .indeterminate {\n    display: block;\n    color: var(--theme-contrast, var(--primary-contrast));\n    stroke: currentcolor;\n  }\n  .check:has(input:disabled) {\n    --check-bg: var(--check-disabled-bg);\n  }\n  .check:has(input:disabled) ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .check:has(input:disabled:checked) {\n    opacity: var(--check-disabled-opacity);\n  }\n  .check :where(svg) {\n    pointer-events: none;\n  }\n  .check :where(svg path) {\n    display: none;\n  }\n  .check-sm {\n    --check-size: 1rem;\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: 0;\n  }\n}\n@layer forms {\n  .radiogroup {\n    display: flex;\n    gap: var(--gap, 0.5rem);\n    align-items: var(--align-items, start);\n  }\n  .radiogroup .description {\n    color: var(--fg-3);\n  }\n  .radio {\n    --radio-size: 1.25rem;\n    --radio-margin-block: 0.125rem;\n    --radio-bg: transparent;\n    --radio-border-color: var(--border-color);\n    --radio-checked-bg: var(--control-checked-bg);\n    --radio-checked-border-color: var(--control-checked-border-color);\n    --radio-disabled-bg: var(--control-disabled-bg);\n    --radio-disabled-opacity: var(--control-disabled-opacity);\n    position: relative;\n    flex-shrink: 0;\n    width: var(--radio-size);\n    height: var(--radio-size);\n    margin-block: var(--radio-margin-block);\n    appearance: none;\n    background-color: var(--theme-bg, var(--radio-bg));\n    border: 1px solid var(--theme-bg, var(--radio-border-color));\n    border-radius: 50%;\n  }\n  .radio:checked {\n    color: var(--theme-contrast, var(--primary-contrast));\n    background-color: var(--theme-bg, var(--radio-checked-bg));\n    border-color: var(--theme-bg, var(--radio-checked-border-color));\n  }\n  .radio:checked::before {\n    position: absolute;\n    inset: 0.25rem;\n    content: \"\";\n    background-color: currentcolor;\n    border-radius: 50%;\n  }\n  .radio:disabled {\n    --radio-bg: var(--radio-disabled-bg);\n  }\n  .radio:disabled ~ label {\n    color: var(--secondary-text);\n    cursor: default;\n  }\n  .radio:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .radio-sm {\n    --radio-size: 1rem;\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: 0;\n  }\n}\n@layer forms {\n  .switch {\n    --switch-height: 1.25rem;\n    --switch-width: calc(var(--switch-height) * 1.5);\n    --switch-padding: 0.0625rem;\n    --switch-margin-block: 0.125rem;\n    --switch-bg: var(--bg-3);\n    --switch-border-width: var(--border-width);\n    --switch-border-color: var(--border-color);\n    --switch-indicator-bg: var(--white);\n    --switch-checked-bg: var(--control-checked-bg);\n    --switch-checked-border-color: var(--switch-checked-bg);\n    --switch-checked-indicator-bg: var(--white);\n    --switch-disabled-bg: var(--control-disabled-bg);\n    --switch-disabled-indicator-bg: var(--fg-3);\n    position: relative;\n    display: flex;\n    flex-shrink: 0;\n    align-items: stretch;\n    justify-content: flex-start;\n    width: var(--switch-width);\n    height: var(--switch-height);\n    padding: var(--switch-padding);\n    margin-block: var(--switch-margin-block);\n    background-color: var(--switch-bg);\n    border: var(--switch-border-width) solid var(--switch-border-color);\n    border-radius: 10rem;\n    box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.05);\n    transition: 0.15s ease-in-out;\n    transition-property: padding-inline-start, background-color;\n  }\n  .switch::before {\n    flex-shrink: 0;\n    width: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\n    height: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\n    content: \"\";\n    background-color: var(--theme-contrast, var(--switch-indicator-bg));\n    border-radius: 50%;\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n  }\n  .switch input {\n    position: absolute;\n    inset: 0;\n    appearance: none;\n    background-color: transparent;\n    outline: 0;\n  }\n  .switch:focus-within {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .switch:has(input:checked) {\n    padding-inline-start: calc(var(--switch-height) / 2 + var(--switch-padding));\n    background-color: var(--theme-bg, var(--switch-checked-bg));\n    border-color: var(--theme-bg, var(--switch-checked-border-color));\n  }\n  .switch:has(input:disabled) {\n    --switch-bg: var(--switch-disabled-bg);\n    --switch-indicator-bg: var(--switch-disabled-indicator-bg);\n  }\n  .switch:has(input:disabled)::before {\n    opacity: 0.4;\n  }\n  .switch:has(input:disabled) ~ label {\n    color: var(--secondary-text);\n    cursor: default;\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: 0;\n  }\n}\n@layer forms {\n  .form-range {\n    --range-track-width: 100%;\n    --range-track-height: 0.5rem;\n    --range-track-cursor: pointer;\n    --range-track-bg: var(--bg-3);\n    --range-track-border-radius: 1rem;\n    --range-track-box-shadow: var(--box-shadow-inset);\n    --range-thumb-width: 1rem;\n    --range-thumb-height: var(--range-thumb-width);\n    --range-thumb-bg: var(--primary-base);\n    --range-thumb-border: 0;\n    --range-thumb-border-radius: 1rem;\n    --range-thumb-box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1);\n    --range-thumb-active-bg: color-mix(in oklch, var(--primary-base) 70%, var(--bg-body));\n    --range-thumb-disabled-bg: var(--fg-3);\n    --range-thumb-transition-property: background-color, border-color, box-shadow;\n    --range-thumb-transition-timing: 0.15s ease-in-out;\n    --range-thumb-transition: var(--range-thumb-transition-property) var(--range-thumb-transition-timing);\n    width: 100%;\n    height: calc(var(--range-thumb-height) + var(--focus-ring-width) * 2);\n    padding: 0;\n    appearance: none;\n    background-color: transparent;\n  }\n  .form-range:focus {\n    outline: 0;\n  }\n  .form-range:focus::-webkit-slider-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .form-range:focus::-moz-range-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .form-range::-moz-focus-outer {\n    border: 0;\n  }\n  .form-range::-webkit-slider-thumb {\n    width: var(--range-thumb-width);\n    height: var(--range-thumb-height);\n    appearance: none;\n    background-color: var(--range-thumb-bg);\n    border: var(--range-thumb-border);\n    border-radius: var(--range-thumb-border-radius);\n    box-shadow: var(--range-thumb-box-shadow);\n    transition: var(--range-thumb-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-range::-webkit-slider-thumb {\n      transition: none;\n    }\n  }\n  .form-range::-webkit-slider-thumb:active {\n    background-color: var(--range-thumb-active-bg);\n  }\n  .form-range::-webkit-slider-thumb {\n    margin-top: calc((var(--range-track-height) - var(--range-thumb-height)) * 0.5);\n  }\n  .form-range::-moz-range-thumb {\n    width: var(--range-thumb-width);\n    height: var(--range-thumb-height);\n    appearance: none;\n    background-color: var(--range-thumb-bg);\n    border: var(--range-thumb-border);\n    border-radius: var(--range-thumb-border-radius);\n    box-shadow: var(--range-thumb-box-shadow);\n    transition: var(--range-thumb-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-range::-moz-range-thumb {\n      transition: none;\n    }\n  }\n  .form-range::-moz-range-thumb:active {\n    background-color: var(--range-thumb-active-bg);\n  }\n  .form-range::-webkit-slider-runnable-track {\n    width: var(--range-track-width);\n    height: var(--range-track-height);\n    color: transparent;\n    cursor: var(--range-track-cursor);\n    background-color: var(--range-track-bg);\n    border-color: transparent;\n    border-radius: var(--range-track-border-radius);\n    box-shadow: var(--range-track-box-shadow);\n  }\n  .form-range::-moz-range-track {\n    width: var(--range-track-width);\n    height: var(--range-track-height);\n    color: transparent;\n    cursor: var(--range-track-cursor);\n    background-color: var(--range-track-bg);\n    border-color: transparent;\n    border-radius: var(--range-track-border-radius);\n    box-shadow: var(--range-track-box-shadow);\n  }\n  .form-range:disabled {\n    pointer-events: none;\n  }\n  .form-range:disabled::-webkit-slider-thumb {\n    background-color: var(--range-thumb-disabled-bg);\n  }\n  .form-range:disabled::-moz-range-thumb {\n    background-color: var(--range-thumb-disabled-bg);\n  }\n}\n@layer forms {\n  .form-floating {\n    --form-floating-height: calc(3.5rem + var(--border-width) * 2);\n    --form-floating-line-height: 1.25;\n    --form-floating-padding-x: var(--btn-input-padding-x);\n    --form-floating-padding-y: 1rem;\n    --form-floating-input-padding-t: 1.625rem;\n    --form-floating-input-padding-b: 0.625rem;\n    --form-floating-label-height: 1.5em;\n    --form-floating-label-opacity: 0.65;\n    --form-floating-label-transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n    --form-floating-label-disabled-color: var(--fg-3);\n    --form-floating-transition-property: opacity, transform;\n    --form-floating-transition-timing: 0.1s ease-in-out;\n    --form-floating-transition: var(--form-floating-transition-property) var(--form-floating-transition-timing);\n    position: relative;\n  }\n  .form-floating > label {\n    position: absolute;\n    inset-block-start: 0;\n    inset-inline-start: 0;\n    z-index: 2;\n    display: flex;\n    align-items: center;\n    max-width: 100%;\n    height: 100%;\n    padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n    overflow: hidden;\n    color: color-mix(in oklch, var(--fg-body) var(--form-floating-label-opacity), transparent);\n    text-align: start;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    pointer-events: none;\n    border: var(--input-btn-border-width) solid transparent;\n    transform-origin: 0 0;\n    transition: var(--form-floating-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-floating > label {\n      transition: none;\n    }\n  }\n  .form-floating > .form-control,\n  .form-floating > .form-control-plaintext {\n    height: var(--form-floating-height);\n    min-height: var(--form-floating-height);\n    padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n    line-height: var(--form-floating-line-height);\n  }\n  .form-floating > .form-control::placeholder,\n  .form-floating > .form-control-plaintext::placeholder {\n    color: transparent;\n  }\n  .form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),\n  .form-floating > .form-control-plaintext:focus,\n  .form-floating > .form-control-plaintext:not(:placeholder-shown) {\n    padding-top: var(--form-floating-input-padding-t);\n    padding-bottom: var(--form-floating-input-padding-b);\n  }\n  .form-floating > .form-control:-webkit-autofill,\n  .form-floating > .form-control-plaintext:-webkit-autofill {\n    padding-top: var(--form-floating-input-padding-t);\n    padding-bottom: var(--form-floating-input-padding-b);\n  }\n  .form-floating > .form-control:focus ~ label,\n  .form-floating > .form-control:not(:placeholder-shown) ~ label,\n  .form-floating > .form-control-plaintext ~ label {\n    transform: var(--form-floating-label-transform);\n  }\n  .form-floating > .form-control:-webkit-autofill ~ label {\n    transform: var(--form-floating-label-transform);\n  }\n  .form-floating > textarea:focus ~ label::after,\n  .form-floating > textarea:not(:placeholder-shown) ~ label::after {\n    position: absolute;\n    inset: var(--form-floating-padding-y) calc(var(--form-floating-padding-x) * 0.5);\n    z-index: -1;\n    height: var(--form-floating-label-height);\n    content: \"\";\n    background-color: var(--control-bg);\n    border-radius: var(--btn-input-border-radius);\n  }\n  .form-floating > textarea:disabled ~ label::after {\n    background-color: var(--control-disabled-bg);\n  }\n  .form-floating > .form-control-plaintext ~ label {\n    border-width: var(--control-border-width) 0;\n  }\n  .form-floating > :disabled ~ label,\n  .form-floating > .form-control:disabled ~ label {\n    color: var(--form-floating-label-disabled-color);\n  }\n}\n@layer components {\n  .input-group {\n    --input-group-addon-padding-y: var(--btn-input-padding-y);\n    --input-group-addon-padding-x: var(--btn-input-padding-x);\n    --input-group-addon-font-size: var(--btn-input-font-size);\n    --input-group-addon-line-height: var(--btn-input-line-height);\n    --input-group-addon-color: var(--fg-body);\n    --input-group-addon-bg: var(--bg-2);\n    --input-group-addon-border-color: var(--border-color);\n    position: relative;\n    display: flex;\n    flex-wrap: wrap;\n    align-items: stretch;\n    width: 100%;\n  }\n  .input-group > .form-control,\n  .input-group > .form-floating {\n    position: relative;\n    flex: 1 1 auto;\n    width: 1%;\n    min-width: 0;\n  }\n  .input-group > .form-control:focus,\n  .input-group > .form-floating:focus-within {\n    z-index: 5;\n  }\n  .input-group > .input-group-btn {\n    position: relative;\n    z-index: 2;\n  }\n  .input-group > .input-group-btn:focus {\n    z-index: 5;\n  }\n  .input-group-text {\n    display: flex;\n    align-items: center;\n    padding: var(--input-group-addon-padding-y) var(--input-group-addon-padding-x);\n    font-size: var(--input-group-addon-font-size);\n    line-height: var(--input-group-addon-line-height);\n    color: var(--input-group-addon-color);\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--input-group-addon-bg);\n    border: var(--border-width) solid var(--input-group-addon-border-color);\n    border-radius: var(--btn-input-border-radius);\n  }\n  .input-group-sm > .form-control,\n  .input-group-sm > .input-group-text,\n  .input-group-sm > .btn {\n    min-height: var(--btn-input-sm-min-height);\n    padding: var(--btn-input-sm-padding-y) var(--btn-input-sm-padding-x);\n    font-size: var(--btn-input-sm-font-size);\n    border-radius: var(--btn-input-sm-border-radius);\n  }\n  .input-group-lg > .form-control,\n  .input-group-lg > .input-group-text,\n  .input-group-lg > .btn {\n    min-height: var(--btn-input-lg-min-height);\n    padding: var(--btn-input-lg-padding-y) var(--btn-input-lg-padding-x);\n    font-size: var(--btn-input-lg-font-size);\n    border-radius: var(--btn-input-lg-border-radius);\n  }\n  .input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n  .input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3),\n  .input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control,\n  .input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n  .input-group.has-validation > .dropdown-toggle:nth-last-child(n+4),\n  .input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control,\n  .input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .input-group > :not(:first-child):not(.dropdown-menu) {\n    margin-inline-start: calc(-1 * var(--border-width));\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .input-group > .form-floating:not(:first-child) > .form-control,\n  .input-group > .form-floating:not(:first-child) > .form-select {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n}\n@layer forms {\n  .strength {\n    --strength-height: 0.375rem;\n    --strength-gap: 0.25rem;\n    --strength-margin-top: 0.25rem;\n    --strength-border-radius: var(--border-radius-pill);\n    --strength-bg: var(--bg-2);\n    --strength-color: var(--bg-2);\n    --strength-weak-color: var(--danger-bg);\n    --strength-fair-color: var(--warning-bg);\n    --strength-good-color: var(--info-bg);\n    --strength-strong-color: var(--success-bg);\n    display: flex;\n    gap: var(--strength-gap);\n    width: 100%;\n    margin-top: var(--strength-margin-top);\n  }\n  .strength-segment {\n    flex: 1;\n    height: var(--strength-height);\n    background-color: var(--strength-bg);\n    border-radius: var(--strength-border-radius);\n    transition: background-color 0.2s ease-in-out, width 0.3s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-segment {\n      transition: none;\n    }\n  }\n  .strength-segment.active {\n    background-color: var(--strength-color);\n  }\n  .strength[data-bs-strength=weak] {\n    --strength-color: var(--strength-weak-color);\n  }\n  .strength[data-bs-strength=fair] {\n    --strength-color: var(--strength-fair-color);\n  }\n  .strength[data-bs-strength=good] {\n    --strength-color: var(--strength-good-color);\n  }\n  .strength[data-bs-strength=strong] {\n    --strength-color: var(--strength-strong-color);\n  }\n  .strength-text {\n    display: block;\n    margin-top: var(--strength-margin-top);\n    font-size: var(--font-size-xs);\n    color: var(--strength-color, var(--fg-3));\n    transition: color 0.2s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-text {\n      transition: none;\n    }\n  }\n  .strength-text:empty {\n    display: none;\n  }\n  .strength-bar {\n    --strength-height: 0.375rem;\n    --strength-gap: 0.25rem;\n    --strength-margin-top: 0.25rem;\n    --strength-border-radius: var(--border-radius-pill);\n    --strength-bg: var(--bg-2);\n    --strength-color: var(--bg-2);\n    --strength-weak-color: var(--danger-bg);\n    --strength-fair-color: var(--warning-bg);\n    --strength-good-color: var(--info-bg);\n    --strength-strong-color: var(--success-bg);\n    --strength-color: transparent;\n    --strength-width: 0%;\n    width: 100%;\n    height: var(--strength-height);\n    margin-top: var(--strength-margin-top);\n    overflow: hidden;\n    background-color: var(--strength-bg);\n    border-radius: var(--strength-border-radius);\n  }\n  .strength-bar::after {\n    display: block;\n    width: var(--strength-width);\n    height: 100%;\n    content: \"\";\n    background-color: var(--strength-color);\n    border-radius: var(--strength-border-radius);\n    transition: background-color 0.2s ease-in-out, width 0.3s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-bar::after {\n      transition: none;\n    }\n  }\n  .strength-bar[data-bs-strength=weak] {\n    --strength-color: var(--strength-weak-color);\n    --strength-width: 25%;\n  }\n  .strength-bar[data-bs-strength=fair] {\n    --strength-color: var(--strength-fair-color);\n    --strength-width: 50%;\n  }\n  .strength-bar[data-bs-strength=good] {\n    --strength-color: var(--strength-good-color);\n    --strength-width: 75%;\n  }\n  .strength-bar[data-bs-strength=strong] {\n    --strength-color: var(--strength-strong-color);\n    --strength-width: 100%;\n  }\n}\n@layer components {\n  .otp {\n    --otp-size: var(--btn-input-lg-min-height);\n    --otp-font-size: var(--btn-input-font-size);\n    --otp-gap: 0.5rem;\n    display: inline-flex;\n    gap: var(--otp-gap);\n  }\n  .otp .form-control {\n    width: var(--otp-size);\n    min-height: var(--otp-size);\n    padding: 0;\n    font-size: var(--otp-font-size);\n    font-weight: 500;\n    line-height: 1;\n    text-align: center;\n    border-radius: var(--otp-border-radius, var(--btn-input-border-radius));\n  }\n  .otp .form-control::-webkit-outer-spin-button, .otp .form-control::-webkit-inner-spin-button {\n    margin: 0;\n    appearance: none;\n  }\n  .otp .form-control[type=number] {\n    appearance: textfield;\n  }\n  .otp .form-control:focus, .otp .form-control:focus-visible {\n    z-index: 1;\n  }\n  .otp.is-valid .form-control, .was-validated .otp:valid .form-control {\n    border-color: var(--form-valid-border-color);\n  }\n  .otp.is-valid .form-control:focus, .was-validated .otp:valid .form-control:focus {\n    --focus-ring-color: rgba(var(--success-rgb), .25);\n    border-color: var(--form-valid-border-color);\n  }\n  .otp.is-invalid .form-control, .was-validated .otp:invalid .form-control {\n    border-color: var(--form-invalid-border-color);\n  }\n  .otp.is-invalid .form-control:focus, .was-validated .otp:invalid .form-control:focus {\n    --focus-ring-color: rgba(var(--danger-rgb), .25);\n    border-color: var(--form-invalid-border-color);\n  }\n  .otp.input-group {\n    gap: 0;\n    width: auto;\n  }\n  .otp.input-group .form-control {\n    flex: 0 0 auto;\n  }\n  .otp-separator {\n    display: flex;\n    align-items: center;\n    padding-inline: var(--otp-gap);\n    font-size: var(--otp-font-size);\n    color: var(--fg-4);\n    user-select: none;\n  }\n  .otp-sm {\n    --otp-size: var(--btn-input-sm-min-height);\n    --otp-font-size: var(--btn-input-sm-font-size);\n    --otp-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .otp-lg {\n    --otp-size: var(--btn-input-lg-min-height);\n    --otp-font-size: var(--btn-input-lg-font-size);\n    --otp-border-radius: var(--btn-input-lg-border-radius);\n  }\n}\n@layer forms {\n  .form-adorn {\n    --form-adorn-gap: 0.375rem;\n    --form-adorn-icon-size: 1rem;\n    --form-adorn-icon-color: var(--fg-2);\n    gap: var(--form-adorn-gap);\n    align-items: center;\n  }\n  .form-adorn:focus-visible {\n    outline: 0;\n  }\n  .form-adorn:focus-within {\n    --focus-ring-offset: -1px;\n    border-color: var(--focus-ring-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-adorn > .form-ghost {\n    flex: 1;\n    min-width: 0;\n  }\n  .form-adorn.form-adorn-end > .form-ghost {\n    order: -1;\n  }\n  .form-adorn-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n  }\n  .form-adorn-icon > svg {\n    width: var(--form-adorn-icon-size);\n    height: var(--form-adorn-icon-size);\n  }\n  .form-adorn-text {\n    flex-shrink: 0;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n    user-select: none;\n  }\n}\n@layer forms {\n  .chip-input {\n    --chip-input-padding-y: 0.75rem;\n    --chip-input-padding-x: 0.75rem;\n    --chip-input-gap: 0.375rem;\n    --chip-input-ghost-min-width: 5rem;\n    --control-fg: var(--btn-input-fg);\n    --control-bg: var(--btn-input-bg);\n    --control-border-width: var(--border-width);\n    --control-border-color: var(--border-color);\n    --control-border-radius: var(--border-radius);\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--chip-input-gap);\n    align-items: center;\n    padding: var(--chip-input-padding-y) var(--chip-input-padding-x);\n    color: var(--control-fg);\n    background-color: var(--control-bg);\n    border: var(--control-border-width) solid var(--control-border-color);\n    border-radius: var(--control-border-radius);\n  }\n  .chip-input:focus-within {\n    --focus-ring-offset: -1px;\n    border-color: var(--focus-ring-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .chip-input > .form-ghost {\n    flex: 1 1 0;\n    min-width: var(--chip-input-ghost-min-width);\n    min-height: 1.75rem;\n  }\n  .chip-input.disabled, .chip-input:has(.form-ghost:disabled) {\n    background-color: var(--bg-2);\n    opacity: 1;\n  }\n  .chip-input.disabled > .chip, .chip-input:has(.form-ghost:disabled) > .chip {\n    opacity: var(--control-disabled-opacity);\n  }\n  .chip-input.disabled > .chip .chip-dismiss, .chip-input:has(.form-ghost:disabled) > .chip .chip-dismiss {\n    pointer-events: none;\n  }\n  .chip-input.disabled > .form-ghost, .chip-input:has(.form-ghost:disabled) > .form-ghost {\n    cursor: not-allowed;\n  }\n}\n@layer components {\n  .tooltip {\n    --tooltip-zindex: 1080;\n    --tooltip-max-width: 200px;\n    --tooltip-padding-x: 0.75rem;\n    --tooltip-padding-y: 0.375rem;\n    --tooltip-font-size: var(--font-size-sm);\n    --tooltip-color: var(--bg-body);\n    --tooltip-bg: var(--fg-body);\n    --tooltip-border-radius: var(--border-radius);\n    --tooltip-opacity: 0.95;\n    --tooltip-arrow-width: 0.8rem;\n    --tooltip-arrow-height: 0.4rem;\n    z-index: var(--tooltip-zindex);\n    display: block;\n    font-family: var(--body-font-family);\n    font-style: normal;\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    text-align: start;\n    text-decoration: none;\n    text-shadow: none;\n    text-transform: none;\n    letter-spacing: normal;\n    word-break: normal;\n    white-space: normal;\n    word-spacing: normal;\n    line-break: auto;\n    font-size: var(--tooltip-font-size);\n    word-wrap: break-word;\n    opacity: 0;\n  }\n  .tooltip.show {\n    opacity: var(--tooltip-opacity);\n  }\n  .tooltip .tooltip-arrow {\n    display: block;\n    width: var(--tooltip-arrow-width);\n    height: var(--tooltip-arrow-height);\n  }\n  .tooltip .tooltip-arrow::before {\n    position: absolute;\n    content: \"\";\n    border-color: transparent;\n    border-style: solid;\n  }\n  .bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow {\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n  }\n  .bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow::before {\n    top: -1px;\n    border-width: var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * 0.5) 0;\n    border-block-start-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow {\n    left: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n  }\n  .bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow::before {\n    right: -1px;\n    border-width: calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * 0.5) 0;\n    border-inline-end-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow {\n    top: calc(-1 * var(--tooltip-arrow-height));\n  }\n  .bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow::before {\n    bottom: -1px;\n    border-width: 0 calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height);\n    border-block-end-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow {\n    right: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n  }\n  .bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow::before {\n    left: -1px;\n    border-width: calc(var(--tooltip-arrow-width) * 0.5) 0 calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height);\n    border-inline-start-color: var(--tooltip-bg);\n  }\n  .tooltip-inner {\n    max-width: var(--tooltip-max-width);\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    color: var(--tooltip-color);\n    text-align: center;\n    background-color: var(--tooltip-bg);\n    border-radius: var(--tooltip-border-radius);\n  }\n}\n@layer components {\n  .valid-feedback {\n    display: none;\n    width: 100%;\n    margin-top: 0.5rem;\n    font-size: var(--font-size-xs);\n    color: var(--form-valid-color);\n  }\n  .valid-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    margin-top: 0.1rem;\n    font-size: var(--tooltip-font-size);\n    color: var(--success-contrast);\n    background-color: var(--success-bg);\n    border-radius: var(--tooltip-border-radius);\n  }\n  .was-validated :valid ~ .valid-feedback,\n  .was-validated :valid ~ .valid-tooltip,\n  .is-valid ~ .valid-feedback,\n  .is-valid ~ .valid-tooltip {\n    display: block;\n  }\n  .was-validated .form-control:valid, .form-control.is-valid {\n    border-color: var(--success-border);\n    padding-inline-end: calc(var(--control-padding-x) * 3.5);\n    background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300a748' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1'/%3e%3c/svg%3e\");\n    background-repeat: no-repeat;\n    background-position: right var(--control-padding-x) center;\n    background-size: 1rem;\n  }\n  .was-validated .form-control:valid:focus-visible, .form-control.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--success-border);\n  }\n  .was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n    background-position: right var(--control-padding-x) top var(--control-padding-x);\n  }\n  .was-validated .form-check-input:valid, .form-check-input.is-valid {\n    border-color: var(--success-border);\n  }\n  .was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {\n    background-color: var(--form-valid-color);\n  }\n  .was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n    color: var(--form-valid-color);\n  }\n  .form-check-inline .form-check-input ~ .valid-feedback {\n    margin-inline-start: 0.5em;\n  }\n  .was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid,\n  .was-validated .input-group > .form-select:not(:focus):valid,\n  .input-group > .form-select:not(:focus).is-valid,\n  .was-validated .input-group > .form-floating:not(:focus-within):valid,\n  .input-group > .form-floating:not(:focus-within).is-valid {\n    z-index: 3;\n  }\n  .invalid-feedback {\n    display: none;\n    width: 100%;\n    margin-top: 0.5rem;\n    font-size: var(--font-size-xs);\n    color: var(--form-invalid-color);\n  }\n  .invalid-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    margin-top: 0.1rem;\n    font-size: var(--tooltip-font-size);\n    color: var(--danger-contrast);\n    background-color: var(--danger-bg);\n    border-radius: var(--tooltip-border-radius);\n  }\n  .was-validated :invalid ~ .invalid-feedback,\n  .was-validated :invalid ~ .invalid-tooltip,\n  .is-invalid ~ .invalid-feedback,\n  .is-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  .was-validated .form-control:invalid, .form-control.is-invalid {\n    border-color: var(--danger-border);\n    padding-inline-end: calc(var(--control-padding-x) * 3.5);\n    background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dd0d37'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dd0d37' stroke='none'/%3e%3c/svg%3e\");\n    background-repeat: no-repeat;\n    background-position: right var(--control-padding-x) center;\n    background-size: 1rem;\n  }\n  .was-validated .form-control:invalid:focus-visible, .form-control.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--danger-border);\n  }\n  .was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n    background-position: right var(--control-padding-x) top var(--control-padding-x);\n  }\n  .was-validated .form-check-input:invalid, .form-check-input.is-invalid {\n    border-color: var(--danger-border);\n  }\n  .was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {\n    background-color: var(--form-invalid-color);\n  }\n  .was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n    color: var(--form-invalid-color);\n  }\n  .form-check-inline .form-check-input ~ .invalid-feedback {\n    margin-inline-start: 0.5em;\n  }\n  .was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid,\n  .was-validated .input-group > .form-select:not(:focus):invalid,\n  .input-group > .form-select:not(:focus).is-invalid,\n  .was-validated .input-group > .form-floating:not(:focus-within):invalid,\n  .input-group > .form-floating:not(:focus-within).is-invalid {\n    z-index: 4;\n  }\n}\n@layer components {\n  .btn, .btn-link, .btn-icon, .btn-solid, .btn-outline, .btn-subtle, .btn-text {\n    --btn-min-height: var(--btn-input-min-height);\n    --btn-padding-x: var(--btn-input-padding-x);\n    --btn-padding-y: var(--btn-input-padding-y);\n    --btn-font-size: var(--btn-input-font-size);\n    --btn-font-weight: var(--btn-input-font-weight);\n    --btn-line-height: var(--btn-input-line-height);\n    --btn-color: var(--fg-body);\n    --btn-white-space: nowrap;\n    --btn-border-width: var(--border-width);\n    --btn-border-color: transparent;\n    --btn-border-radius: var(--border-radius);\n    --btn-hover-border-color: transparent;\n    --btn-disabled-opacity: 0.65;\n    --btn-transition-timing: 0.15s ease-in-out;\n    --btn-transition-property: color, background-color, border-color, box-shadow;\n    --btn-transition: var(--btn-transition-property) var(--btn-transition-timing);\n    display: inline-flex;\n    gap: var(--btn-gap, 0.25rem);\n    align-items: center;\n    justify-content: center;\n    min-height: var(--btn-min-height);\n    padding: var(--btn-padding-y) var(--btn-padding-x);\n    font-size: var(--btn-font-size);\n    font-weight: var(--btn-font-weight);\n    line-height: var(--btn-line-height);\n    color: var(--btn-color);\n    text-decoration: none;\n    white-space: var(--btn-white-space);\n    vertical-align: middle;\n    cursor: pointer;\n    user-select: none;\n    background-color: var(--btn-bg, var(--bg-2));\n    border: var(--btn-border-width) solid var(--btn-border-color);\n    border-radius: var(--btn-border-radius);\n    transition: var(--btn-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .btn, .btn-link, .btn-icon, .btn-solid, .btn-outline, .btn-subtle, .btn-text {\n      transition: none;\n    }\n  }\n  .btn:hover, .btn-link:hover, .btn-icon:hover, .btn-solid:hover, .btn-outline:hover, .btn-subtle:hover, .btn-text:hover {\n    color: var(--btn-hover-color);\n    background-color: var(--btn-hover-bg, var(--bg-3));\n    border-color: var(--btn-hover-border-color);\n  }\n  .btn:focus-visible, .btn-link:focus-visible, .btn-icon:focus-visible, .btn-solid:focus-visible, .btn-outline:focus-visible, .btn-subtle:focus-visible, .btn-text:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .btn.active, .btn.show, .btn-link.active, .btn-link.show, .btn-icon.active, .btn-icon.show, .btn-solid.active, .btn-solid.show, .btn-outline.active, .btn-outline.show, .btn-subtle.active, .btn-subtle.show, .btn-text.active, .btn-text.show {\n    color: var(--btn-active-color);\n    background-color: var(--btn-active-bg, var(--bg-3));\n    border-color: var(--btn-active-border-color);\n  }\n  .btn.active:focus-visible, .btn.show:focus-visible, .btn-link.active:focus-visible, .btn-link.show:focus-visible, .btn-icon.active:focus-visible, .btn-icon.show:focus-visible, .btn-solid.active:focus-visible, .btn-solid.show:focus-visible, .btn-outline.active:focus-visible, .btn-outline.show:focus-visible, .btn-subtle.active:focus-visible, .btn-subtle.show:focus-visible, .btn-text.active:focus-visible, .btn-text.show:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .btn:disabled, .btn.disabled, fieldset:disabled .btn, .btn-link:disabled, .btn-link.disabled, fieldset:disabled .btn-link, .btn-icon:disabled, .btn-icon.disabled, fieldset:disabled .btn-icon, .btn-solid:disabled, .btn-solid.disabled, fieldset:disabled .btn-solid, .btn-outline:disabled, .btn-outline.disabled, fieldset:disabled .btn-outline, .btn-subtle:disabled, .btn-subtle.disabled, fieldset:disabled .btn-subtle, .btn-text:disabled, .btn-text.disabled, fieldset:disabled .btn-text {\n    color: var(--btn-disabled-color);\n    pointer-events: none;\n    background-color: var(--btn-disabled-bg, var(--bg-1));\n    border-color: var(--btn-disabled-border-color);\n    opacity: var(--btn-disabled-opacity);\n  }\n  .btn-solid {\n    --btn-bg: var(--theme-bg);\n    --btn-color: var(--theme-contrast);\n    --btn-border-color: var(--theme-bg);\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: var(--theme-bg);\n    --btn-disabled-color: var(--theme-contrast);\n    --btn-disabled-border-color: var(--theme-bg);\n  }\n  .btn-solid:hover {\n    --btn-hover-bg: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-border-color: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-color: oklch(from var(--theme-contrast) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-solid:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-solid:active, .btn-solid.active, .btn-solid.btn-check:has(input:checked) {\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-solid:disabled, .btn-solid.disabled, .btn-solid.btn-check:has(input:disabled) {\n    --btn-disabled-bg: var(--theme-bg);\n    --btn-disabled-color: var(--theme-contrast);\n    --btn-disabled-border-color: var(--theme-bg);\n  }\n  .btn-outline {\n    --btn-bg: transparent;\n    --btn-color: var(--theme-text);\n    --btn-border-color: var(--theme-border);\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-border-color: var(--theme-border);\n  }\n  .btn-outline:hover {\n    --btn-hover-bg: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-color: oklch(from var(--theme-contrast) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-border-color: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-outline:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-outline:active, .btn-outline.active, .btn-outline.btn-check:has(input:checked) {\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-outline:disabled, .btn-outline.disabled, .btn-outline.btn-check:has(input:disabled) {\n    --btn-disabled-bg: transparent;\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-border-color: var(--theme-border);\n  }\n  .btn-subtle {\n    --btn-bg: var(--theme-bg-subtle);\n    --btn-color: var(--theme-text);\n    --btn-border-color: transparent;\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-active-color: oklch(from var(--theme-text-emphasis) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-subtle:hover {\n    --btn-hover-bg: color-mix(in oklch, var(--theme-bg-muted) 50%, var(--theme-bg-subtle));\n    --btn-hover-color: oklch(from var(--theme-text-emphasis) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-subtle:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-subtle:active, .btn-subtle.active, .btn-subtle.btn-check:has(input:checked) {\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-active-color: oklch(from var(--theme-text-emphasis) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-subtle:disabled, .btn-subtle.disabled, .btn-subtle.btn-check:has(input:disabled) {\n    --btn-disabled-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text {\n    --btn-color: var(--theme-text);\n    --btn-bg: transparent;\n    --btn-border-color: transparent;\n    --btn-active-color: oklch(from var(--theme-text) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text:hover {\n    --btn-hover-color: oklch(from var(--theme-text) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-bg: var(--theme-bg-subtle);\n  }\n  .btn-text:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-text:active, .btn-text.active, .btn-text.btn-check:has(input:checked) {\n    --btn-active-color: oklch(from var(--theme-text) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-bg: var(--theme-bg-subtle);\n  }\n  .btn-text:disabled, .btn-text.disabled, .btn-text.btn-check:has(input:disabled) {\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-link {\n    --btn-font-weight: var(--font-weight-normal);\n    --btn-color: var(--link-color);\n    --btn-bg: transparent;\n    --btn-border-color: transparent;\n    --btn-hover-color: var(--link-hover-color);\n    --btn-hover-bg: transparent;\n    --btn-hover-border-color: transparent;\n    --btn-active-color: var(--link-hover-color);\n    --btn-active-bg: transparent;\n    --btn-active-border-color: transparent;\n    --btn-disabled-color: var(--fg-3);\n    --btn-disabled-border-color: transparent;\n    color: var(--theme-text, var(--btn-color));\n    text-decoration: var(--link-decoration);\n  }\n  .btn-link:focus-visible {\n    color: var(--theme-text, var(--btn-color));\n  }\n  .btn-link:hover {\n    color: var(--theme-text-emphasis, var(--btn-hover-color));\n  }\n  .btn-xs,\n  .btn-group-xs > [class*=btn-] {\n    --btn-min-height: var(--btn-input-xs-min-height);\n    --btn-padding-y: var(--btn-input-xs-padding-y);\n    --btn-padding-x: var(--btn-input-xs-padding-x);\n    --btn-font-size: var(--btn-input-xs-font-size);\n    --btn-line-height: var(--btn-input-xs-line-height);\n    --btn-border-radius: var(--btn-input-xs-border-radius);\n  }\n  .btn-sm,\n  .btn-group-sm > [class*=btn-] {\n    --btn-min-height: var(--btn-input-sm-min-height);\n    --btn-padding-y: var(--btn-input-sm-padding-y);\n    --btn-padding-x: var(--btn-input-sm-padding-x);\n    --btn-font-size: var(--btn-input-sm-font-size);\n    --btn-line-height: var(--btn-input-sm-line-height);\n    --btn-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .btn-lg,\n  .btn-group-lg > [class*=btn-] {\n    --btn-min-height: var(--btn-input-lg-min-height);\n    --btn-padding-y: var(--btn-input-lg-padding-y);\n    --btn-padding-x: var(--btn-input-lg-padding-x);\n    --btn-font-size: var(--btn-input-lg-font-size);\n    --btn-line-height: var(--btn-input-lg-line-height);\n    --btn-border-radius: var(--btn-input-lg-border-radius);\n  }\n  .btn-icon {\n    align-items: center;\n    justify-content: center;\n    aspect-ratio: 1;\n    padding: 0;\n  }\n  .btn-check > input {\n    position: absolute;\n    clip: rect(0, 0, 0, 0);\n    pointer-events: none;\n  }\n  .btn-check:has(input:checked) {\n    color: var(--btn-active-color);\n    background-color: var(--btn-active-bg, var(--bg-3));\n    border-color: var(--btn-active-border-color);\n    box-shadow: var(--btn-active-shadow);\n  }\n  .btn-check:has(input:focus-visible) {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .btn-check:has(input:disabled) {\n    color: var(--btn-disabled-color);\n    pointer-events: none;\n    background-color: var(--btn-disabled-bg, var(--bg-1));\n    border-color: var(--btn-disabled-border-color);\n    opacity: var(--btn-disabled-opacity);\n    box-shadow: none;\n  }\n  .btn-styled {\n    --btn-gradient-start: rgba(255, 255, 255, 0.125);\n    --btn-gradient-end: rgba(0, 0, 0, 0.075);\n    --btn-border-mix-color: #000;\n    --btn-border-mix-amount: 10%;\n    --btn-border-hover-mix-amount: 12.5%;\n    --btn-border-active-mix-amount: 20%;\n    --btn-shadow: 0 1px 2px rgb(0 0 0 / 15%), inset 0 1px 0 rgb(255 255 255 / 10%);\n    --btn-active-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n    background-image: linear-gradient(to bottom, var(--btn-gradient-start), var(--btn-gradient-end));\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-mix-amount));\n    box-shadow: var(--btn-shadow);\n  }\n  .btn-styled:hover {\n    background-image: linear-gradient(to bottom, var(--btn-gradient-start), var(--btn-gradient-end));\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-hover-mix-amount));\n  }\n  .btn-styled:active, .btn-styled.active {\n    background-image: none;\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-active-mix-amount));\n    box-shadow: var(--btn-active-shadow);\n  }\n  .btn-styled:disabled, .btn-styled.disabled {\n    background-image: none;\n    box-shadow: none;\n  }\n}\n@layer components {\n  .btn-group,\n  .btn-group-vertical {\n    position: relative;\n    display: inline-flex;\n    vertical-align: middle;\n  }\n  .btn-group > [class*=btn-],\n  .btn-group-vertical > [class*=btn-] {\n    position: relative;\n    flex: 1 1 auto;\n  }\n  .btn-group > [class*=btn-]:hover,\n  .btn-group-vertical > [class*=btn-]:hover {\n    z-index: 1;\n  }\n  .btn-group > .btn-check:has(input:checked),\n  .btn-group > [class*=btn-]:active,\n  .btn-group > [class*=btn-].active,\n  .btn-group-vertical > .btn-check:has(input:checked),\n  .btn-group-vertical > [class*=btn-]:active,\n  .btn-group-vertical > [class*=btn-].active {\n    z-index: 2;\n  }\n  .btn-group > .btn-check:has(input:focus),\n  .btn-group > [class*=btn-]:focus,\n  .btn-group-vertical > .btn-check:has(input:focus),\n  .btn-group-vertical > [class*=btn-]:focus {\n    z-index: 3;\n  }\n  .btn-toolbar {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 0.5rem;\n    justify-content: flex-start;\n  }\n  .btn-toolbar .input-group {\n    width: auto;\n  }\n  .btn-group {\n    border-radius: var(--btn-border-radius);\n  }\n  .btn-group > [class*=btn-]:not(:first-child),\n  .btn-group > .btn-group:not(:first-child) {\n    margin-inline-start: calc(-1 * var(--btn-border-width));\n  }\n  .btn-group > [class*=btn-]:not(:last-child):not(.dropdown-toggle),\n  .btn-group > .btn-group:not(:last-child) > [class*=btn-] {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .btn-group > [class*=btn-]:not(:first-child),\n  .btn-group > .btn-group:not(:first-child) > [class*=btn-] {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .dropdown-toggle-split {\n    padding-inline: calc(var(--btn-padding-x) * 0.75);\n  }\n  .dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {\n    margin-inline-start: 0;\n  }\n  .dropstart .dropdown-toggle-split::before {\n    margin-inline-end: 0;\n  }\n  .btn-group-vertical {\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: center;\n  }\n  .btn-group-vertical > [class*=btn-],\n  .btn-group-vertical > .btn-group {\n    width: 100%;\n  }\n  .btn-group-vertical > [class*=btn-]:not(:first-child),\n  .btn-group-vertical > .btn-group:not(:first-child) {\n    margin-top: calc(-1 * var(--btn-border-width));\n  }\n  .btn-group-vertical > [class*=btn-]:not(:last-child):not(.dropdown-toggle),\n  .btn-group-vertical > .btn-group:not(:last-child) > [class*=btn-] {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .btn-group-vertical > [class*=btn-]:not(:first-child),\n  .btn-group-vertical > .btn-group:not(:first-child) > [class*=btn-] {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n}\n@layer components {\n  .btn-close {\n    --btn-close-size: 1.25rem;\n    --btn-close-color: var(--fg-body);\n    --btn-close-opacity: 0.5;\n    --btn-close-hover-opacity: 0.75;\n    --btn-close-focus-opacity: 0.85;\n    --btn-close-disabled-opacity: 0.25;\n    box-sizing: content-box;\n    width: var(--btn-close-size);\n    height: var(--btn-close-size);\n    padding: 0;\n    color: var(--btn-close-color);\n    background: transparent;\n    border: 0;\n    border-radius: var(--border-radius-sm);\n    opacity: var(--btn-close-opacity);\n  }\n  .btn-close > svg {\n    display: block;\n    width: 100%;\n    height: 100%;\n    fill: currentcolor;\n  }\n  .btn-close:hover {\n    color: var(--btn-close-color);\n    text-decoration: none;\n    opacity: var(--btn-close-hover-opacity);\n  }\n  .btn-close:focus-visible {\n    opacity: var(--btn-close-focus-opacity);\n    outline: var(--focus-ring);\n  }\n  .btn-close:disabled, .btn-close.disabled {\n    pointer-events: none;\n    user-select: none;\n    opacity: var(--btn-close-disabled-opacity);\n  }\n}\n@layer components {\n  .accordion {\n    --accordion-padding-x: 1.25rem;\n    --accordion-padding-y: 1rem;\n    --accordion-color: var(--fg-body);\n    --accordion-bg: var(--bg-body);\n    --accordion-transition-property: color, background-color, border-radius;\n    --accordion-transition-timing: .15s ease-in-out;\n    --accordion-transition: var(--accordion-transition-property) var(--accordion-timing);\n    --accordion-border-color: var(--border-color);\n    --accordion-border-width: var(--border-width);\n    --accordion-border-radius: var(--accordion-radius, var(--border-radius-lg));\n    --accordion-btn-color: var(--fg-2);\n    --accordion-btn-bg: var(--bg-body);\n    --accordion-btn-icon-width: 1rem;\n    --accordion-btn-icon-transform: rotate(-180deg);\n    --accordion-btn-icon-transition: transform 0.2s ease-in-out;\n    --accordion-active-color: var(--fg);\n    --accordion-active-bg: var(--bg-2);\n  }\n  .accordion-header {\n    display: flex;\n    align-items: center;\n    width: 100%;\n    padding: var(--accordion-btn-padding-y, var(--accordion-padding-y)) var(--accordion-btn-padding-x, var(--accordion-padding-x));\n    font-size: var(--accordion-font-size, var(--font-size-base));\n    color: var(--accordion-btn-color);\n    text-align: start;\n    list-style: none;\n    cursor: pointer;\n    background-color: var(--accordion-btn-bg);\n    transition: var(--accordion-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-header {\n      transition: none;\n    }\n  }\n  .accordion-header .accordion-icon {\n    flex-shrink: 0;\n    width: var(--accordion-btn-icon-width);\n    height: var(--accordion-btn-icon-width);\n    margin-inline-start: auto;\n    color: currentcolor;\n    transition: var(--accordion-btn-icon-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-header .accordion-icon {\n      transition: none;\n    }\n  }\n  .accordion-header:hover {\n    z-index: 2;\n  }\n  .accordion-header:focus-visible {\n    position: relative;\n    z-index: 3;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    outline-offset: -1px;\n  }\n  .accordion-item {\n    color: var(--accordion-color);\n    background-color: var(--accordion-bg);\n    border: var(--accordion-border-width) solid var(--accordion-border-color);\n  }\n  .accordion-item:first-of-type {\n    border-start-start-radius: var(--accordion-border-radius);\n    border-start-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item:first-of-type > .accordion-header {\n    border-start-start-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n    border-start-end-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n  }\n  .accordion-item:not(:first-of-type) {\n    border-block-start: 0;\n  }\n  .accordion-item:last-of-type {\n    border-end-start-radius: var(--accordion-border-radius);\n    border-end-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item:last-of-type > .accordion-header {\n    border-end-start-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n    border-end-end-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n  }\n  .accordion-item:last-of-type > .accordion-body {\n    border-end-start-radius: var(--accordion-border-radius);\n    border-end-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item[open] {\n    border-color: var(--theme-border, var(--accordion-border-color));\n  }\n  .accordion-item[open] > .accordion-header {\n    color: var(--theme-text, var(--accordion-active-color));\n    background-color: var(--theme-bg-subtle, var(--accordion-active-bg));\n    box-shadow: inset 0 calc(-1 * var(--accordion-border-width)) 0 var(--theme-border, var(--accordion-border-color));\n  }\n  .accordion-item[open] > .accordion-header .accordion-icon {\n    transform: var(--accordion-btn-icon-transform);\n  }\n  .accordion-item[open]:last-of-type > .accordion-header {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .accordion-body {\n    padding: var(--accordion-body-padding-y, var(--accordion-padding-y)) var(--accordion-body-padding-x, var(--accordion-padding-x));\n  }\n  .accordion-flush > .accordion-item {\n    border-inline: 0;\n    border-radius: 0;\n  }\n  .accordion-flush > .accordion-item:first-child {\n    border-block-start: 0;\n  }\n  .accordion-flush > .accordion-item:last-child {\n    border-block-end: 0;\n  }\n  .accordion-flush > .accordion-item > .accordion-header,\n  .accordion-flush > .accordion-item > .accordion-body {\n    border-radius: 0;\n  }\n}\n@layer components {\n  .alert {\n    --alert-gap: 0.75rem;\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1));\n    --alert-padding-x: 1rem;\n    --alert-padding-y: 1rem;\n    --alert-color: var(--theme-text, inherit);\n    --alert-border-color: var(--theme-border, var(--border-color));\n    --alert-border: var(--border-width) solid var(--alert-border-color);\n    --alert-border-radius: var(--border-radius);\n    --alert-link-color: inherit;\n    --hr-border-color: var(--theme-border, var(--border-color));\n    display: flex;\n    gap: var(--alert-gap);\n    align-items: start;\n    padding: var(--alert-padding-y) var(--alert-padding-x);\n    color: var(--alert-color);\n    background-color: var(--alert-bg);\n    border: var(--alert-border);\n    border-radius: var(--alert-border-radius);\n  }\n  .alert-heading {\n    color: inherit;\n  }\n  .alert-link {\n    font-weight: var(--font-weight-semibold);\n    color: var(--alert-link-color);\n  }\n}\n@layer components {\n  .avatar {\n    --avatar-size: 2.5rem;\n    --avatar-border-radius: 50%;\n    --avatar-border-width: 2px;\n    --avatar-border-color: var(--bg-body);\n    --avatar-bg: var(--bg-2);\n    --avatar-color: var(--fg-body);\n    --avatar-status-size: 0.75rem;\n    --avatar-status-border-width: 2px;\n    --avatar-status-border-color: var(--bg-body);\n    --avatar-stack-spacing: -0.3;\n    --avatar-stack-transition: transform .2s ease-in-out;\n    position: relative;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--avatar-size);\n    height: var(--avatar-size);\n    font-size: calc(var(--avatar-size) * 0.4);\n    font-weight: var(--avatar-font-weight, var(--font-weight-medium));\n    line-height: 1;\n    color: var(--theme-contrast, var(--avatar-color));\n    text-transform: uppercase;\n    vertical-align: middle;\n    background-color: var(--theme-bg, var(--avatar-bg));\n    border-radius: var(--avatar-border-radius);\n  }\n  .avatar-subtle {\n    color: var(--theme-text, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n  .avatar-img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    border-radius: inherit;\n  }\n  .avatar-status {\n    position: absolute;\n    right: calc(var(--avatar-status-border-width) * -1);\n    bottom: calc(var(--avatar-status-border-width) * -1);\n    width: var(--avatar-status-size);\n    height: var(--avatar-status-size);\n    background-color: var(--gray-400);\n    border: var(--avatar-status-border-width) solid var(--avatar-status-border-color);\n    border-radius: 50%;\n  }\n  .avatar-status.status-online {\n    background-color: var(--green-500);\n  }\n  .avatar-status.status-offline {\n    background-color: var(--gray-400);\n    border-radius: 20%;\n  }\n  .avatar-status.status-busy {\n    background-color: var(--red-500);\n    border-radius: 20%;\n  }\n  .avatar-status.status-away {\n    background-color: var(--yellow-500);\n  }\n  .avatar-stack {\n    display: inline-flex;\n    flex-direction: row-reverse;\n  }\n  .avatar-stack .avatar {\n    margin-left: calc(var(--avatar-size) * var(--avatar-stack-spacing));\n    border: var(--avatar-border-width) solid var(--avatar-border-color);\n    mask-image: none;\n    transition: var(--avatar-stack-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .avatar-stack .avatar {\n      transition: none;\n    }\n  }\n  .avatar-stack .avatar:last-child {\n    margin-left: 0;\n  }\n  .avatar-stack .avatar:hover {\n    z-index: 1;\n    transform: translateY(-2px);\n  }\n  .avatar-xs,\n  .avatar-stack-xs {\n    --avatar-size: 1.5rem;\n    --avatar-status-size: 0.625rem;\n  }\n  .avatar-sm,\n  .avatar-stack-sm {\n    --avatar-size: 2rem;\n  }\n  .avatar-lg,\n  .avatar-stack-lg {\n    --avatar-size: 3rem;\n    --avatar-status-size: 1rem;\n  }\n  .avatar-xl,\n  .avatar-stack-xl {\n    --avatar-size: 4rem;\n    --avatar-status-size: 1.25rem;\n  }\n}\n@layer components {\n  .badge {\n    --badge-padding-x: 0.625em;\n    --badge-padding-y: 0.25em;\n    --badge-font-size: clamp(12px, 0.75em, 0.75em);\n    --badge-font-weight: var(--font-weight-semibold);\n    --badge-color: inherit;\n    --badge-bg: var(--bg-2);\n    --badge-border-width: var(--border-width);\n    --badge-border-color: transparent;\n    --badge-border-radius: var(--border-radius-lg);\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 1.375rem;\n    padding: var(--badge-padding-y) var(--badge-padding-x);\n    font-size: var(--badge-font-size);\n    font-weight: var(--badge-font-weight);\n    line-height: 1;\n    color: var(--theme-contrast, var(--badge-color));\n    text-align: center;\n    white-space: nowrap;\n    vertical-align: baseline;\n    background-color: var(--theme-bg, var(--badge-bg));\n    border: var(--badge-border-width) solid var(--badge-border-color);\n    border-radius: var(--badge-border-radius);\n  }\n  .badge:empty {\n    display: none;\n  }\n  .btn .badge {\n    position: relative;\n    top: -1px;\n  }\n  .badge-subtle {\n    --badge-color: var(--theme-text);\n    --badge-bg: var(--theme-bg-subtle);\n    --badge-border-color: transparent;\n    color: var(--badge-color);\n    background-color: var(--badge-bg);\n    border-color: var(--badge-border-color);\n  }\n  .badge-outline {\n    --badge-color: var(--theme-text);\n    --badge-bg: transparent;\n    --badge-border-color: var(--theme-border);\n    color: var(--badge-color);\n    background-color: var(--badge-bg);\n    border-color: var(--badge-border-color);\n  }\n}\n@layer components {\n  .breadcrumb {\n    --breadcrumb-margin-bottom: 1rem;\n    --breadcrumb-font-size: inherit;\n    --breadcrumb-bg: transparent;\n    --breadcrumb-border-radius: var(--border-radius);\n    --breadcrumb-divider-color: var(--fg-4);\n    --breadcrumb-link-padding-x: 0.75rem;\n    --breadcrumb-link-padding-y: 0.25rem;\n    --breadcrumb-link-color: var(--fg-3);\n    --breadcrumb-link-hover-color: var(--fg-2);\n    --breadcrumb-link-hover-bg: var(--bg-1);\n    --breadcrumb-link-active-color: var(--fg-1);\n    --breadcrumb-link-border-radius: var(--border-radius-lg);\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    padding: var(--breadcrumb-padding-y, 0) var(--breadcrumb-padding-x, 0);\n    font-size: var(--breadcrumb-font-size);\n    list-style: none;\n    background-color: var(--breadcrumb-bg);\n    border-radius: var(--breadcrumb-border-radius);\n  }\n  .breadcrumb-item {\n    display: flex;\n  }\n  .breadcrumb-divider {\n    margin-inline: calc(var(--breadcrumb-link-padding-x) / 4);\n    color: var(--breadcrumb-divider-color);\n  }\n  .breadcrumb-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 2.25rem;\n    padding: var(--breadcrumb-link-padding-y) var(--breadcrumb-link-padding-x);\n    color: var(--breadcrumb-link-color);\n    text-decoration: none;\n    border-radius: var(--breadcrumb-link-border-radius);\n    transition: 0.1s text-decoration-color ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .breadcrumb-link {\n      transition: none;\n    }\n  }\n  .breadcrumb-link:hover {\n    z-index: 2;\n    color: var(--breadcrumb-link-hover-color);\n    background-color: var(--breadcrumb-link-hover-bg);\n  }\n  .breadcrumb-link.active {\n    color: var(--breadcrumb-link-active-color);\n  }\n}\n@layer components {\n  .chip {\n    --chip-height: 1.75rem;\n    --chip-padding-x: 0.625rem;\n    --chip-gap: 0.3125rem;\n    --chip-border-radius: var(--border-radius-pill);\n    --chip-img-size: 1.25rem;\n    --chip-icon-size: 1rem;\n    --chip-dismiss-size: 1rem;\n    --chip-dismiss-opacity: 0.65;\n    --chip-dismiss-hover-opacity: 1;\n    --chip-color: var(--theme-text, var(--fg-body));\n    --chip-bg: var(--theme-bg-subtle, var(--bg-2));\n    --chip-border-color: transparent;\n    --chip-selected-color: var(--theme-contrast, var(--primary-contrast));\n    --chip-selected-bg: var(--theme-bg, var(--primary-bg));\n    --chip-selected-border-color: var(--theme-bg, var(--primary-bg));\n    display: inline-flex;\n    gap: var(--chip-gap);\n    align-items: center;\n    height: var(--chip-height);\n    padding-inline: var(--chip-padding-x);\n    font-size: var(--chip-font-size, var(--font-size-sm));\n    font-weight: var(--chip-font-weight, var(--font-weight-base));\n    line-height: var(--chip-line-height, 1.25rem);\n    color: var(--chip-color);\n    text-decoration: none;\n    white-space: nowrap;\n    vertical-align: middle;\n    cursor: pointer;\n    background-color: var(--chip-bg);\n    border: var(--border-width) solid var(--chip-border-color);\n    border-radius: var(--chip-border-radius);\n  }\n  .chip:hover {\n    --chip-bg: var(--theme-bg-muted, var(--bg-3));\n  }\n  .chip:focus-visible {\n    outline: 0;\n  }\n  .chip.active {\n    --chip-color: var(--chip-selected-color);\n    --chip-bg: var(--chip-selected-bg);\n    --chip-border-color: var(--chip-selected-border-color);\n  }\n  .chip.active:hover {\n    --chip-bg: var(--chip-selected-bg);\n    opacity: 0.9;\n  }\n  .chip.disabled, .chip:disabled {\n    pointer-events: none;\n    opacity: 0.65;\n  }\n  .chip-img {\n    width: var(--chip-img-size);\n    height: var(--chip-img-size);\n    border-radius: 50%;\n  }\n  .chip-img:first-child {\n    margin-inline-start: -0.375rem;\n  }\n  .chip-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    margin-inline-start: calc(var(--chip-gap) * -0.25);\n  }\n  .chip-icon > svg {\n    display: block;\n    width: var(--chip-icon-size);\n    height: var(--chip-icon-size);\n  }\n  .chip-icon > img {\n    width: var(--chip-icon-size);\n    height: var(--chip-icon-size);\n    object-fit: cover;\n    border-radius: 50%;\n  }\n  .chip-dismiss {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--chip-min-height);\n    height: var(--chip-min-height);\n    padding: 0;\n    margin-inline-end: calc(var(--chip-padding-x) * -0.25);\n    color: inherit;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    opacity: var(--chip-dismiss-opacity);\n  }\n  .chip-dismiss:hover {\n    opacity: var(--chip-dismiss-hover-opacity);\n  }\n  .chip-dismiss:focus-visible {\n    outline: 0;\n    opacity: 1;\n    outline: var(--focus-ring);\n  }\n  .chip-dismiss > svg {\n    display: block;\n    width: var(--chip-dismiss-size);\n    height: var(--chip-dismiss-size);\n  }\n}\n@layer components {\n  .card {\n    --card-spacer-y: 1rem;\n    --card-spacer-x: 1rem;\n    --card-subtitle-color: inherit;\n    --card-border-width: var(--border-width);\n    --card-border-color: var(--border-color-translucent);\n    --card-border-radius: var(--border-radius-lg);\n    --card-box-shadow: none;\n    --card-inner-border-radius: calc(var(--border-radius-lg) - var(--border-width));\n    --card-cap-padding-y: 0.75rem;\n    --card-cap-padding-x: 1rem;\n    --card-cap-bg: var(--bg-1);\n    --card-cap-color: inherit;\n    --card-height: auto;\n    --card-color: inherit;\n    --card-bg: var(--bg-body);\n    --card-img-overlay-padding: 1rem;\n    --card-group-margin: 0.75rem;\n    --card-body-gap: 0.5rem;\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    min-width: 0;\n    height: var(--card-height);\n    color: var(--fg-body);\n    word-wrap: break-word;\n    background-color: var(--card-bg);\n    box-shadow: var(--card-box-shadow);\n  }\n  .card > hr {\n    margin-inline: 0;\n  }\n  .card-body {\n    display: flex;\n    flex: 1 1 auto;\n    flex-direction: column;\n    gap: var(--card-body-gap);\n    align-items: flex-start;\n    padding: var(--card-spacer-y) var(--card-spacer-x);\n    color: var(--card-color);\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n  }\n  .card-body > * {\n    margin-block: 0;\n  }\n  .card-body,\n  .card-list {\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n  }\n  .card-body:first-child,\n  .card-list:first-child {\n    border-start-start-radius: var(--card-border-radius);\n    border-start-end-radius: var(--card-border-radius);\n    border-top-width: var(--card-border-width);\n  }\n  .card-body:last-child,\n  .card-list:last-child {\n    border-end-start-radius: var(--card-border-radius);\n    border-end-end-radius: var(--card-border-radius);\n    border-bottom-width: var(--card-border-width);\n  }\n  .card-body:not(:first-child):not(:last-child),\n  .card-list:not(:first-child):not(:last-child) {\n    border-block-end-width: var(--card-border-width);\n  }\n  .card-title,\n  .card-subtitle,\n  .card-text {\n    align-self: stretch;\n  }\n  .card-subtitle {\n    margin-top: calc(var(--card-body-gap) * -0.5);\n  }\n  .card-header {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    margin-bottom: 0;\n    color: var(--theme-contrast, var(--card-cap-color));\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n  }\n  .card-header:first-child {\n    border-radius: var(--card-inner-border-radius) var(--card-inner-border-radius) 0 0;\n  }\n  .card-footer {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    color: var(--card-cap-color);\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n  }\n  .card-footer:last-child {\n    border-radius: 0 0 var(--card-inner-border-radius) var(--card-inner-border-radius);\n  }\n  .card-subtle {\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-header {\n    color: var(--theme-text-emphasis, currentcolor);\n    background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-footer {\n    color: var(--theme-text-emphasis, currentcolor);\n    background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-body,\n  .card-subtle .card-list {\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .nav.card-header-tabs {\n    margin-inline: calc(-0.5 * var(--card-cap-padding-x));\n    margin-bottom: calc(-1 * var(--card-cap-padding-y));\n    border-block-end: 0;\n  }\n  .nav.card-header-tabs .nav-link.active {\n    background-color: var(--card-bg);\n    border-block-end-color: var(--card-bg);\n  }\n  .card-img-overlay {\n    position: absolute;\n    inset: 0;\n    padding: var(--card-img-overlay-padding);\n    border-radius: var(--card-inner-border-radius);\n  }\n  .card-img,\n  .card-img-top,\n  .card-img-bottom {\n    width: 100%;\n    outline: var(--card-border-width) solid var(--card-border-color);\n    outline-offset: calc(var(--card-border-width) * -1);\n  }\n  .card-img,\n  .card-img-top {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-start-end-radius: var(--card-inner-border-radius);\n  }\n  .card-img,\n  .card-img-bottom {\n    border-end-start-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n  }\n  .card-row {\n    flex-direction: row;\n  }\n  .card-row .card-body,\n  .card-row .card-list {\n    border-width: var(--card-border-width) 0;\n    border-radius: 0;\n  }\n  .card-row .card-body:first-child,\n  .card-row .card-list:first-child {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-end-start-radius: var(--card-inner-border-radius);\n    border-inline-start-width: var(--card-border-width);\n  }\n  .card-row .card-body:last-child,\n  .card-row .card-list:last-child {\n    border-start-end-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n    border-inline-end-width: var(--card-border-width);\n  }\n  .card-row .card-body:not(:first-child):not(:last-child),\n  .card-row .card-list:not(:first-child):not(:last-child) {\n    border-inline-end-width: var(--card-border-width);\n  }\n  .card-img-start {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-end-start-radius: var(--card-inner-border-radius);\n  }\n  .card-img-end {\n    border-start-end-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n  }\n  .card-group > .card {\n    margin-bottom: var(--card-group-margin);\n  }\n  @media (width >= 576px) {\n    .card-group {\n      display: flex;\n      flex-flow: row wrap;\n    }\n    .card-group > .card {\n      flex: 1 0 0;\n      margin-bottom: 0;\n    }\n    .card-group > .card + .card {\n      margin-inline-start: 0;\n      border-inline-start: 0;\n    }\n    .card-group > .card:not(:last-child) {\n      border-start-end-radius: 0;\n      border-end-end-radius: 0;\n    }\n    .card-group > .card:not(:last-child) > .card-img-top,\n    .card-group > .card:not(:last-child) > .card-header {\n      border-start-end-radius: 0;\n    }\n    .card-group > .card:not(:last-child) > .card-img-bottom,\n    .card-group > .card:not(:last-child) > .card-footer {\n      border-end-end-radius: 0;\n    }\n    .card-group > .card:not(:first-child) {\n      border-start-start-radius: 0;\n      border-end-start-radius: 0;\n    }\n    .card-group > .card:not(:first-child) > .card-img-top,\n    .card-group > .card:not(:first-child) > .card-header {\n      border-start-start-radius: 0;\n    }\n    .card-group > .card:not(:first-child) > .card-img-bottom,\n    .card-group > .card:not(:first-child) > .card-footer {\n      border-end-start-radius: 0;\n    }\n  }\n}\n@layer components {\n  .carousel {\n    position: relative;\n    --carousel-control-color: #fff;\n    --carousel-control-width: 15%;\n    --carousel-control-opacity: 0.5;\n    --carousel-control-hover-opacity: 0.9;\n    --carousel-control-transition: opacity 0.15s ease;\n    --carousel-control-icon-filter: none;\n    --carousel-indicator-width: 30px;\n    --carousel-indicator-height: 3px;\n    --carousel-indicator-hit-area-height: 10px;\n    --carousel-indicator-spacer: 3px;\n    --carousel-indicator-opacity: 0.5;\n    --carousel-indicator-active-bg: var(--white);\n    --carousel-indicator-active-opacity: 1;\n    --carousel-indicator-transition: opacity 0.6s ease;\n    --carousel-caption-width: 70%;\n    --carousel-caption-color: var(--white);\n    --carousel-caption-padding-y: 1.25rem;\n    --carousel-caption-spacer: 1.25rem;\n    --carousel-control-icon-width: 2rem;\n    --carousel-control-prev-icon-bg: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>\");\n    --carousel-control-next-icon-bg: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>\");\n    --carousel-transition-duration: 0.6s;\n    --carousel-transition: transform 0.6s ease-in-out;\n  }\n  .carousel.pointer-event {\n    touch-action: pan-y;\n  }\n  .carousel-inner {\n    position: relative;\n    display: flow-root;\n    width: 100%;\n    overflow: hidden;\n  }\n  .carousel-item {\n    position: relative;\n    display: none;\n    float: inline-start;\n    width: 100%;\n    margin-inline-end: -100%;\n    backface-visibility: hidden;\n    transition: var(--carousel-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-item {\n      transition: none;\n    }\n  }\n  .carousel-item.active,\n  .carousel-item-next,\n  .carousel-item-prev {\n    display: block;\n  }\n  .carousel-item-next:not(.carousel-item-start),\n  .active.carousel-item-end {\n    transform: translateX(100%);\n  }\n  .carousel-item-prev:not(.carousel-item-end),\n  .active.carousel-item-start {\n    transform: translateX(-100%);\n  }\n  .carousel-fade .carousel-item {\n    opacity: 0;\n    transition-property: opacity;\n    transform: none;\n  }\n  .carousel-fade .carousel-item.active,\n  .carousel-fade .carousel-item-next.carousel-item-start,\n  .carousel-fade .carousel-item-prev.carousel-item-end {\n    z-index: 1;\n    opacity: 1;\n  }\n  .carousel-fade .active.carousel-item-start,\n  .carousel-fade .active.carousel-item-end {\n    z-index: 0;\n    opacity: 0;\n    transition: opacity 0s var(--carousel-transition-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-fade .active.carousel-item-start,\n    .carousel-fade .active.carousel-item-end {\n      transition: none;\n    }\n  }\n  .carousel-control-prev,\n  .carousel-control-next {\n    position: absolute;\n    inset-block: 0;\n    z-index: 1;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--carousel-control-width);\n    padding: 0;\n    color: var(--carousel-control-color);\n    text-align: center;\n    background: none;\n    filter: var(--carousel-control-icon-filter);\n    border: 0;\n    opacity: var(--carousel-control-opacity);\n    transition: var(--carousel-control-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-control-prev,\n    .carousel-control-next {\n      transition: none;\n    }\n  }\n  .carousel-control-prev:hover, .carousel-control-prev:focus,\n  .carousel-control-next:hover,\n  .carousel-control-next:focus {\n    color: var(--carousel-control-color);\n    text-decoration: none;\n    outline: 0;\n    opacity: var(--carousel-control-hover-opacity);\n  }\n  .carousel-control-prev {\n    inset-inline-start: 0;\n  }\n  .carousel-control-next {\n    inset-inline-end: 0;\n  }\n  .carousel-control-prev-icon,\n  .carousel-control-next-icon {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-repeat: no-repeat;\n    background-position: 50%;\n    background-size: 100% 100%;\n  }\n  .carousel-control-prev-icon {\n    background-image: var(--carousel-control-prev-icon-bg);\n  }\n  [dir=rtl] .carousel-control-prev-icon {\n    background-image: var(--carousel-control-next-icon-bg);\n  }\n  .carousel-control-next-icon {\n    background-image: var(--carousel-control-next-icon-bg);\n  }\n  [dir=rtl] .carousel-control-next-icon {\n    background-image: var(--carousel-control-prev-icon-bg);\n  }\n  .carousel-indicators {\n    position: absolute;\n    inset: auto 0 0;\n    z-index: 2;\n    display: flex;\n    justify-content: center;\n    padding: 0;\n    margin-inline: var(--carousel-control-width);\n    margin-bottom: 1rem;\n  }\n  .carousel-indicators [data-bs-target] {\n    box-sizing: content-box;\n    flex: 0 1 auto;\n    width: var(--carousel-indicator-width);\n    height: var(--carousel-indicator-height);\n    padding: 0;\n    margin-inline: var(--carousel-indicator-spacer);\n    text-indent: -999px;\n    cursor: pointer;\n    background-color: var(--carousel-indicator-active-bg);\n    background-clip: padding-box;\n    border: 0;\n    border-block: var(--carousel-indicator-hit-area-height) solid transparent;\n    opacity: var(--carousel-indicator-opacity);\n    transition: var(--carousel-indicator-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-indicators [data-bs-target] {\n      transition: none;\n    }\n  }\n  .carousel-indicators .active {\n    opacity: var(--carousel-indicator-active-opacity);\n  }\n  .carousel-caption {\n    position: absolute;\n    right: calc((100% - var(--carousel-caption-width)) * 0.5);\n    bottom: var(--carousel-caption-spacer);\n    left: calc((100% - var(--carousel-caption-width)) * 0.5);\n    padding-top: var(--carousel-caption-padding-y);\n    padding-bottom: var(--carousel-caption-padding-y);\n    color: var(--carousel-caption-color);\n    text-align: center;\n  }\n  .carousel-dark {\n    --carousel-indicator-active-bg: #000;\n    --carousel-caption-color: #000;\n    --carousel-control-icon-filter: invert(1) grayscale(100);\n  }\n  [data-bs-theme=dark] {\n    --carousel-indicator-active-bg: #000;\n    --carousel-caption-color: #000;\n    --carousel-control-icon-filter: invert(1) grayscale(100);\n  }\n}\n@layer components {\n  [data-vc=calendar] {\n    --datepicker-padding: 1rem;\n    --datepicker-bg: var(--bg-body);\n    --datepicker-color: var(--fg-body);\n    --datepicker-border-color: var(--border-color-translucent);\n    --datepicker-border-width: var(--border-width);\n    --datepicker-border-radius: var(--border-radius-lg);\n    --datepicker-box-shadow: var(--box-shadow);\n    --datepicker-font-size: var(--font-size-sm);\n    --datepicker-min-width: 280px;\n    --datepicker-zindex: 1000;\n    --datepicker-header-font-weight: 600;\n    --datepicker-weekday-color: var(--fg-3);\n    --datepicker-day-hover-bg: var(--bg-1);\n    --datepicker-day-selected-bg: var(--primary-bg);\n    --datepicker-day-selected-color: var(--primary-contrast);\n    --datepicker-day-today-bg: var(--bg-2);\n    --datepicker-day-today-color: var(--fg-1);\n    --datepicker-day-disabled-color: var(--fg-4);\n    position: absolute;\n    z-index: var(--datepicker-zindex);\n    box-sizing: border-box;\n    display: flex;\n    flex-direction: column;\n    min-width: var(--datepicker-min-width);\n    padding: var(--datepicker-padding);\n    font-family: var(--font-sans-serif);\n    font-size: var(--datepicker-font-size);\n    color: var(--datepicker-color);\n    color-scheme: light dark;\n    background-color: var(--datepicker-bg);\n    border: var(--datepicker-border-width) solid var(--datepicker-border-color);\n    border-radius: var(--datepicker-border-radius);\n    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n  }\n  [data-vc=calendar][data-bs-theme=light] {\n    color-scheme: light;\n  }\n  [data-vc=calendar][data-bs-theme=dark] {\n    color-scheme: dark;\n  }\n  [data-vc=calendar] button:focus-visible {\n    position: relative;\n    z-index: 1;\n    outline: var(--focus-ring);\n  }\n  [data-vc-calendar-hidden] {\n    pointer-events: none;\n    opacity: 0;\n  }\n  [data-vc=calendar]:not([data-vc-input]) {\n    position: relative;\n    width: fit-content;\n    padding: 0;\n    border: 0;\n    box-shadow: none;\n  }\n  [data-vc-position=bottom] {\n    margin-block-start: 0.25rem;\n  }\n  [data-vc-position=top] {\n    margin-block-end: -0.25rem;\n  }\n  [data-vc-arrow] {\n    position: relative;\n    display: block;\n    width: 2rem;\n    height: 2rem;\n    color: var(--datepicker-color);\n    pointer-events: auto;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--border-radius);\n  }\n  [data-vc-arrow]::before {\n    position: absolute;\n    inset: 0.25rem;\n    content: \"\";\n    background-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%236b7280' d='M12 16c-.3 0-.5-.1-.7-.3l-6-6c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l5.3 5.3 5.3-5.3c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-6 6c-.2.2-.4.3-.7.3'/></svg>\");\n    background-repeat: no-repeat;\n    background-position: center;\n  }\n  [data-vc-arrow]:hover {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-arrow=prev]::before {\n    transform: rotate(90deg);\n  }\n  [data-vc-arrow=next]::before {\n    transform: rotate(-90deg);\n  }\n  [data-vc=controls] {\n    position: absolute;\n    top: 0;\n    right: 0;\n    left: 0;\n    z-index: 20;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding-top: 1rem;\n    padding-right: 1rem;\n    padding-left: 1rem;\n    pointer-events: none;\n  }\n  [data-vc=grid] {\n    display: flex;\n    flex-grow: 1;\n    flex-wrap: wrap;\n    gap: 1.75rem;\n  }\n  [data-vc=column] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    min-width: 240px;\n  }\n  [data-vc=header] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    margin-bottom: 0.75rem;\n  }\n  [data-vc-header=content] {\n    display: inline-flex;\n    flex-grow: 1;\n    align-items: center;\n    justify-content: center;\n    white-space: pre-wrap;\n  }\n  [data-vc=month],\n  [data-vc=year] {\n    padding: 0.25rem 0.5rem;\n    margin-inline: -0.125rem;\n    font-size: 1rem;\n    font-weight: var(--datepicker-header-font-weight);\n    color: var(--datepicker-color);\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--border-radius);\n  }\n  [data-vc=month]:disabled,\n  [data-vc=year]:disabled {\n    color: var(--datepicker-day-disabled-color);\n    pointer-events: none;\n  }\n  [data-vc=month]:hover:not(:disabled),\n  [data-vc=year]:hover:not(:disabled) {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc=content] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n  }\n  [data-vc=months],\n  [data-vc=years] {\n    display: grid;\n    flex-grow: 1;\n    grid-template-columns: repeat(var(--vc-columns, 4), minmax(0, 1fr));\n    row-gap: 1rem;\n    column-gap: 0.25rem;\n    align-items: center;\n  }\n  [data-vc=years] {\n    --vc-columns: 5;\n  }\n  [data-vc-months-month],\n  [data-vc-years-year] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 2.5rem;\n    padding: 0.25rem;\n    font-size: 0.75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    text-align: center;\n    word-break: break-all;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--border-radius);\n  }\n  [data-vc-months-month]:disabled,\n  [data-vc-years-year]:disabled {\n    color: var(--datepicker-day-disabled-color);\n    pointer-events: none;\n  }\n  [data-vc-months-month]:hover:not(:disabled),\n  [data-vc-years-year]:hover:not(:disabled) {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-months-month][data-vc-months-month-selected], [data-vc-months-month][data-vc-years-year-selected],\n  [data-vc-years-year][data-vc-months-month-selected],\n  [data-vc-years-year][data-vc-years-year-selected] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc-months-month][data-vc-months-month-selected]:hover, [data-vc-months-month][data-vc-years-year-selected]:hover,\n  [data-vc-years-year][data-vc-months-month-selected]:hover,\n  [data-vc-years-year][data-vc-years-year-selected]:hover {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc=week] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    justify-items: center;\n    margin-bottom: 0.5rem;\n  }\n  [data-vc-week-day] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    padding: 0;\n    margin: 0;\n    font-size: 0.75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    background-color: transparent;\n    border: 0;\n  }\n  button[data-vc-week-day] {\n    cursor: pointer;\n  }\n  [data-vc=dates] {\n    pointer-events: none;\n  }\n  [data-vc-dates=row] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    align-items: center;\n    justify-items: center;\n    width: 100%;\n  }\n  [data-vc-date] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    padding-top: 0.125rem;\n    padding-bottom: 0.125rem;\n    pointer-events: auto;\n  }\n  [data-vc-date]:not(:has([data-vc-date-btn])), [data-vc-date][data-vc-date-disabled], [data-vc-date][data-vc-date-disabled] [data-vc-date-btn] {\n    pointer-events: none;\n  }\n  [data-vc-date-btn] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    height: 100%;\n    min-height: 1.875rem;\n    padding: 0;\n    font-size: 0.75rem;\n    font-weight: 400;\n    line-height: 1rem;\n    color: var(--datepicker-color);\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--border-radius);\n  }\n  [data-vc-date-btn]:hover {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-date-today] [data-vc-date-btn] {\n    font-weight: 600;\n    color: var(--datepicker-day-today-color);\n    background-color: var(--datepicker-day-today-bg);\n  }\n  [data-vc-date-month=next] [data-vc-date-btn],\n  [data-vc-date-month=prev] [data-vc-date-btn] {\n    opacity: 0.5;\n  }\n  [data-vc-date-disabled] [data-vc-date-btn] {\n    color: var(--datepicker-day-disabled-color);\n  }\n  [data-vc-date-hover] [data-vc-date-btn] {\n    background-color: var(--datepicker-day-hover-bg);\n    border-radius: 0;\n  }\n  [data-vc-date-hover=first] [data-vc-date-btn] {\n    border-start-start-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  [data-vc-date-hover=last] [data-vc-date-btn] {\n    border-start-end-radius: var(--border-radius);\n    border-end-end-radius: var(--border-radius);\n  }\n  [data-vc-date-hover=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--border-radius);\n  }\n  [data-vc-date-selected=middle] [data-vc-date-btn] {\n    border-radius: 0;\n    opacity: 0.8;\n  }\n  [data-vc-date-selected] [data-vc-date-btn] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc-date-selected=first] [data-vc-date-btn] {\n    border-top-left-radius: var(--border-radius);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--border-radius);\n  }\n  [data-vc-date-selected=last] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--border-radius);\n    border-bottom-right-radius: var(--border-radius);\n    border-bottom-left-radius: 0;\n  }\n  [data-vc-date-selected=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--border-radius);\n  }\n}\n@layer components {\n  .dialog-open {\n    overflow: hidden;\n    scrollbar-gutter: stable;\n  }\n  .dialog {\n    --dialog-padding: 1rem;\n    --dialog-width: 500px;\n    --dialog-margin: 1.75rem;\n    --dialog-color: var(--fg-body);\n    --dialog-bg: var(--bg-body);\n    --dialog-border-color: var(--border-color-translucent);\n    --dialog-border-width: var(--border-width);\n    --dialog-border-radius: var(--border-radius-lg);\n    --dialog-box-shadow: var(--box-shadow-lg);\n    --dialog-backdrop-bg: rgba(0, 0, 0, 0.5);\n    --dialog-backdrop-blur: 8px;\n    --dialog-header-padding: 1rem;\n    --dialog-header-border-color: var(--border-color);\n    --dialog-header-border-width: var(--border-width);\n    --dialog-footer-padding: 1rem;\n    --dialog-footer-border-color: var(--border-color);\n    --dialog-footer-border-width: var(--border-width);\n    --dialog-footer-gap: 0.5rem;\n    max-width: var(--dialog-width);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    color: var(--dialog-color);\n    background-color: var(--dialog-bg);\n    background-clip: padding-box;\n    border: var(--dialog-border-width) solid var(--dialog-border-color);\n    border-radius: var(--dialog-border-radius);\n    box-shadow: var(--dialog-box-shadow);\n  }\n  .dialog::backdrop {\n    background-color: var(--dialog-backdrop-bg);\n    backdrop-filter: blur(var(--dialog-backdrop-blur));\n  }\n  .dialog.fade {\n    opacity: 0;\n    transition: opacity 0.15s linear;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog.fade {\n      transition: none;\n    }\n  }\n  .dialog.fade::backdrop {\n    opacity: 0;\n    transition: opacity 0.15s linear;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog.fade::backdrop {\n      transition: none;\n    }\n  }\n  .dialog.fade[open] {\n    opacity: 1;\n  }\n  .dialog.fade[open]::backdrop {\n    opacity: 1;\n  }\n  .dialog.dialog-static {\n    transform: scale(1.02);\n  }\n  .dialog.dialog-nonmodal {\n    position: fixed;\n    inset-block-start: 50%;\n    inset-inline-start: 50%;\n    z-index: 1055;\n    margin-inline: 0;\n    transform: translate(-50%, -50%);\n  }\n  .dialog.dialog-overflow {\n    position: fixed;\n    inset: 0;\n    width: 100%;\n    max-width: 100%;\n    height: 100%;\n    max-height: 100%;\n    padding: var(--dialog-margin);\n    margin: 0;\n    overflow-y: auto;\n    overscroll-behavior: contain;\n    background: transparent;\n    border: 0;\n    box-shadow: none;\n  }\n  .dialog.dialog-overflow > .dialog-box {\n    max-width: var(--dialog-width);\n    margin-block-end: var(--dialog-margin);\n    margin-inline: auto;\n    color: var(--dialog-color);\n    background-color: var(--dialog-bg);\n    background-clip: padding-box;\n    border: var(--dialog-border-width) solid var(--dialog-border-color);\n    border-radius: var(--dialog-border-radius);\n    box-shadow: var(--dialog-box-shadow);\n  }\n  .dialog.dialog-scrollable[open] {\n    display: flex;\n    flex-direction: column;\n    max-height: calc(100% - var(--dialog-margin) * 2);\n  }\n  .dialog.dialog-scrollable[open] .dialog-body {\n    overflow-y: auto;\n  }\n  .dialog-sm {\n    --dialog-width: 280px;\n  }\n  .dialog-lg {\n    --dialog-width: 800px;\n  }\n  .dialog-xl {\n    --dialog-width: 1140px;\n  }\n  .dialog-fullscreen {\n    --dialog-width: 100vw;\n    --dialog-margin: 0;\n    --dialog-border-radius: 0;\n    width: 100%;\n    max-width: none;\n    height: 100%;\n    max-height: none;\n  }\n  @media (width < 576px) {\n    .dialog-fullscreen-sm-down {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 768px) {\n    .dialog-fullscreen-md-down {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1024px) {\n    .dialog-fullscreen-lg-down {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1280px) {\n    .dialog-fullscreen-xl-down {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1536px) {\n    .dialog-fullscreen-2xl-down {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  .dialog-header {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    padding: var(--dialog-header-padding);\n    border-block-end: var(--dialog-header-border-width) solid var(--dialog-header-border-color);\n  }\n  .dialog-header .btn-close {\n    margin-inline-start: auto;\n  }\n  .dialog-title {\n    margin-bottom: 0;\n    font-size: var(--font-size-md);\n    line-height: 1.5;\n  }\n  .dialog-body {\n    position: relative;\n    flex: 1 1 auto;\n    padding: var(--dialog-padding);\n    overflow-y: auto;\n  }\n  .dialog-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: var(--dialog-footer-gap);\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--dialog-footer-padding);\n    border-block-start: var(--dialog-footer-border-width) solid var(--dialog-footer-border-color);\n  }\n}\n@layer components {\n  .dropdown {\n    position: relative;\n  }\n  .dropdown-menu {\n    --dropdown-zindex: 1000;\n    --dropdown-gap: 0.125rem;\n    --dropdown-min-width: 10rem;\n    --dropdown-padding-x: 0.25rem;\n    --dropdown-padding-y: 0.25rem;\n    --dropdown-spacer: 0.125rem;\n    --dropdown-font-size: var(--font-size-sm);\n    --dropdown-color: var(--fg-body);\n    --dropdown-bg: var(--bg-body);\n    --dropdown-border-color: var(--border-color-translucent);\n    --dropdown-border-radius: var(--border-radius-lg);\n    --dropdown-border-width: var(--border-width);\n    --dropdown-inner-border-radius: calc(var(--dropdown-border-radius) - var(--dropdown-border-width));\n    --dropdown-box-shadow: var(--box-shadow);\n    --dropdown-divider-bg: var(--border-color-translucent);\n    --dropdown-divider-margin-y: 0.125rem;\n    --dropdown-divider-margin-x: 0.25rem;\n    --dropdown-link-color: var(--fg-body);\n    --dropdown-link-hover-color: var(--fg-body);\n    --dropdown-link-hover-bg: var(--bg-1);\n    --dropdown-link-active-color: var(--primary-contrast);\n    --dropdown-link-active-bg: var(--primary-bg);\n    --dropdown-link-disabled-color: var(--fg-3);\n    --dropdown-item-gap: 0.5rem;\n    --dropdown-item-padding-x: 0.75rem;\n    --dropdown-item-padding-y: 0.25rem;\n    --dropdown-item-border-radius: var(--border-radius);\n    --dropdown-header-color: var(--fg-2);\n    --dropdown-header-padding-x: 0.75rem;\n    --dropdown-header-padding-y: 0.25rem;\n    position: absolute;\n    z-index: var(--dropdown-zindex);\n    display: none;\n    flex-direction: column;\n    gap: var(--dropdown-gap);\n    min-width: var(--dropdown-min-width);\n    padding: var(--dropdown-padding-y) var(--dropdown-padding-x);\n    margin: 0;\n    font-size: var(--dropdown-font-size);\n    color: var(--dropdown-color);\n    text-align: start;\n    list-style: none;\n    background-color: var(--dropdown-bg);\n    background-clip: padding-box;\n    border: var(--dropdown-border-width) solid var(--dropdown-border-color);\n    border-radius: var(--dropdown-border-radius);\n    box-shadow: var(--dropdown-box-shadow);\n  }\n  .dropdown-menu.show {\n    display: flex;\n  }\n  .dropdown-divider {\n    height: 0;\n    margin: var(--dropdown-divider-margin-y) var(--dropdown-divider-margin-x);\n    overflow: hidden;\n    border-block-start: 1px solid var(--dropdown-divider-bg);\n    opacity: 1;\n  }\n  .dropdown-item {\n    display: flex;\n    gap: var(--dropdown-item-gap);\n    align-items: center;\n    width: 100%;\n    padding: var(--dropdown-item-padding-y) var(--dropdown-item-padding-x);\n    font-weight: 400;\n    color: var(--theme-text, var(--dropdown-link-color));\n    text-align: inherit;\n    text-decoration: none;\n    white-space: nowrap;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--dropdown-item-border-radius, 0);\n  }\n  .dropdown-item:hover, .dropdown-item:focus {\n    color: var(--theme-text, var(--dropdown-link-hover-color));\n    background-color: var(--theme-bg-subtle, var(--dropdown-link-hover-bg));\n  }\n  .dropdown-item.active, .dropdown-item:active {\n    color: var(--theme-contrast, var(--dropdown-link-active-color));\n    background-color: var(--theme-bg, var(--dropdown-link-active-bg));\n  }\n  .dropdown-item.disabled, .dropdown-item:disabled {\n    color: var(--dropdown-link-disabled-color);\n    pointer-events: none;\n    background-color: transparent;\n  }\n  .dropdown-header {\n    display: block;\n    padding: var(--dropdown-header-padding-y) var(--dropdown-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--font-size-sm);\n    color: var(--dropdown-header-color);\n    white-space: nowrap;\n  }\n  .dropdown-item-text {\n    display: block;\n    padding: var(--dropdown-item-padding-y) var(--dropdown-item-padding-x);\n    color: var(--fg-2);\n  }\n  .dropdown-submenu {\n    position: relative;\n  }\n  .dropdown-submenu > .dropdown-item {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .dropdown-submenu > .dropdown-item::after {\n    display: inline-block;\n    flex-shrink: 0;\n    width: 0.375em;\n    height: 0.375em;\n    margin-inline-start: auto;\n    content: \"\";\n    border-color: currentcolor;\n    border-style: solid;\n    border-width: 0 0.125em 0.125em 0;\n    transform: rotate(-45deg);\n  }\n  [dir=rtl] .dropdown-submenu > .dropdown-item::after {\n    transform: rotate(135deg);\n  }\n  .dropdown-submenu > .dropdown-menu {\n    top: 0;\n    margin-top: calc(-1 * var(--dropdown-padding-y));\n  }\n  .dropdown-submenu:hover > .dropdown-item, .dropdown-submenu:focus-within > .dropdown-item {\n    color: var(--dropdown-link-hover-color);\n    background-color: var(--dropdown-link-hover-bg);\n  }\n  .dropdown-submenu.show > .dropdown-item {\n    color: var(--dropdown-link-hover-color);\n    background-color: var(--dropdown-link-hover-bg);\n  }\n}\n@layer components {\n  .list-group {\n    --list-group-color: var(--fg-body);\n    --list-group-bg: var(--bg-body);\n    --list-group-border-color: var(--border-color);\n    --list-group-border-width: var(--border-width);\n    --list-group-border-radius: var(--border-radius);\n    --list-group-item-padding-x: 1rem;\n    --list-group-item-padding-y: 0.5rem;\n    --list-group-action-color: var(--fg-2);\n    --list-group-action-hover-color: var(--fg-1);\n    --list-group-action-hover-bg: var(--bg-1);\n    --list-group-action-active-color: var(--fg-body);\n    --list-group-action-active-bg: var(--bg-2);\n    --list-group-disabled-color: var(--fg-3);\n    --list-group-disabled-bg: var(--bg-body);\n    --list-group-active-color: var(--primary-contrast);\n    --list-group-active-bg: var(--primary-bg);\n    --list-group-active-border-color: var(--primary-bg);\n    display: flex;\n    flex-direction: column;\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    border-radius: var(--list-group-border-radius);\n  }\n  .list-group-numbered {\n    list-style-type: none;\n    counter-reset: section;\n  }\n  .list-group-numbered > .list-group-item::before {\n    content: counters(section, \".\") \". \";\n    counter-increment: section;\n  }\n  .list-group-item {\n    position: relative;\n    display: block;\n    padding: var(--list-group-item-padding-y) var(--list-group-item-padding-x);\n    color: var(--theme-text, var(--list-group-color));\n    background-color: var(--theme-bg-subtle, var(--list-group-bg));\n    border: var(--list-group-border-width) solid var(--theme-border, var(--list-group-border-color));\n  }\n  .list-group-item:first-child {\n    border-start-start-radius: inherit;\n    border-start-end-radius: inherit;\n  }\n  .list-group-item:last-child {\n    border-end-start-radius: inherit;\n    border-end-end-radius: inherit;\n  }\n  .list-group-item.disabled, .list-group-item:disabled {\n    color: var(--list-group-disabled-color);\n    pointer-events: none;\n    background-color: var(--list-group-disabled-bg);\n  }\n  .list-group-item.active {\n    z-index: 2;\n    color: var(--list-group-active-color);\n    background-color: var(--list-group-active-bg);\n    border-color: var(--list-group-active-border-color);\n  }\n  .list-group-item + .list-group-item {\n    border-block-start-width: 0;\n  }\n  .list-group-item + .list-group-item.active {\n    margin-top: calc(-1 * var(--list-group-border-width));\n    border-block-start-width: var(--list-group-border-width);\n  }\n  .list-group-item-action {\n    width: 100%;\n    color: var(--theme-text, var(--list-group-action-color));\n    text-align: inherit;\n    text-decoration: none;\n  }\n  .list-group-item-action:not(.active):hover, .list-group-item-action:not(.active):focus {\n    z-index: 1;\n    color: var(--theme-text-emphasis, var(--list-group-action-hover-color));\n    text-decoration: none;\n    background-color: var(--theme-bg-muted, var(--list-group-action-hover-bg));\n  }\n  .list-group-item-action:not(.active):active {\n    color: var(--theme-text-emphasis, var(--list-group-action-active-color));\n    background-color: var(--theme-bg-muted, var(--list-group-action-active-bg));\n  }\n  .list-group-horizontal {\n    flex-direction: row;\n  }\n  .list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n    border-end-start-radius: var(--list-group-border-radius);\n    border-start-end-radius: 0;\n  }\n  .list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n    border-start-end-radius: var(--list-group-border-radius);\n    border-end-start-radius: 0;\n  }\n  .list-group-horizontal > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal > .list-group-item + .list-group-item {\n    border-block-start-width: var(--list-group-border-width);\n    border-inline-start-width: 0;\n  }\n  .list-group-horizontal > .list-group-item + .list-group-item.active {\n    margin-inline-start: calc(-1 * var(--list-group-border-width));\n    border-inline-start-width: var(--list-group-border-width);\n  }\n  @media (width >= 576px) {\n    .list-group-horizontal-sm {\n      flex-direction: row;\n    }\n    .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .list-group-horizontal-sm > .list-group-item.active {\n      margin-top: 0;\n    }\n    .list-group-horizontal-sm > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @media (width >= 768px) {\n    .list-group-horizontal-md {\n      flex-direction: row;\n    }\n    .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .list-group-horizontal-md > .list-group-item.active {\n      margin-top: 0;\n    }\n    .list-group-horizontal-md > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @media (width >= 1024px) {\n    .list-group-horizontal-lg {\n      flex-direction: row;\n    }\n    .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .list-group-horizontal-lg > .list-group-item.active {\n      margin-top: 0;\n    }\n    .list-group-horizontal-lg > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @media (width >= 1280px) {\n    .list-group-horizontal-xl {\n      flex-direction: row;\n    }\n    .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .list-group-horizontal-xl > .list-group-item.active {\n      margin-top: 0;\n    }\n    .list-group-horizontal-xl > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @media (width >= 1536px) {\n    .list-group-horizontal-2xl {\n      flex-direction: row;\n    }\n    .list-group-horizontal-2xl > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .list-group-horizontal-2xl > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .list-group-horizontal-2xl > .list-group-item.active {\n      margin-top: 0;\n    }\n    .list-group-horizontal-2xl > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .list-group-horizontal-2xl > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  .list-group-flush {\n    border-radius: 0;\n  }\n  .list-group-flush > .list-group-item {\n    border-width: 0 0 var(--list-group-border-width);\n  }\n  .list-group-flush > .list-group-item:last-child {\n    border-block-end-width: 0;\n  }\n}\n@layer components {\n  .nav {\n    --nav-gap: 0.125rem;\n    --nav-link-gap: 0.5rem;\n    --nav-link-align: center;\n    --nav-link-justify: center;\n    --nav-link-padding-x: 0.75rem;\n    --nav-link-padding-y: 0.375rem;\n    --nav-link-color: var(--fg-2);\n    --nav-link-hover-color: var(--fg-1);\n    --nav-link-hover-bg: var(--bg-1);\n    --nav-link-active-color: var(--fg-body);\n    --nav-link-active-bg: var(--bg-2);\n    --nav-link-disabled-color: var(--fg-4);\n    --nav-link-transition-property: color, background-color, border-color;\n    --nav-link-transition-timing: 0.15s ease-in-out;\n    --nav-link-transition: var(--nav-link-transition-property) var(--nav-link-transition-timing);\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style: none;\n  }\n  .nav-item {\n    display: flex;\n  }\n  .nav-link {\n    display: flex;\n    gap: var(--nav-link-gap);\n    align-items: var(--nav-link-align);\n    justify-content: var(--nav-link-justify);\n    padding: var(--nav-link-padding-y) var(--nav-link-padding-x);\n    font-weight: var(--nav-link-font-weight);\n    color: var(--nav-link-color);\n    text-decoration: none;\n    white-space: nowrap;\n    background: none;\n    border: 0;\n    border-radius: var(--border-radius);\n    transition: var(--nav-link-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .nav-link {\n      transition: none;\n    }\n  }\n  .nav-link:hover, .nav-link:focus {\n    color: var(--nav-link-hover-color);\n    background-color: var(--nav-link-hover-bg);\n  }\n  .nav-link:focus-visible {\n    --focus-ring-offset: 1px;\n    color: var(--nav-link-hover-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .nav-link.active, .nav-link:active {\n    color: var(--nav-link-active-color);\n    background-color: var(--nav-link-active-bg);\n  }\n  .nav-link.disabled, .nav-link:disabled {\n    color: var(--nav-link-disabled-color);\n    pointer-events: none;\n    cursor: default;\n  }\n  .nav-tabs {\n    --nav-tabs-border-width: var(--border-width);\n    --nav-tabs-border-color: var(--border-color);\n    --nav-tabs-border-radius: var(--border-radius);\n    --nav-tabs-link-hover-border-color: var(--border-subtle);\n    --nav-tabs-link-active-color: var(--fg-color);\n    --nav-tabs-link-active-bg: var(--bg-body);\n    --nav-tabs-link-active-border-color: var(--border-color) var(--border-color) var(--bg-body);\n    box-shadow: inset 0 calc(-1 * var(--nav-tabs-border-width)) 0 var(--nav-tabs-border-color);\n  }\n  .nav-tabs .nav-link {\n    border: var(--nav-tabs-border-width) solid transparent;\n    border-bottom-color: var(--nav-tabs-border-color);\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .nav-tabs .nav-link:hover {\n    isolation: isolate;\n    border-color: var(--nav-tabs-link-hover-border-color);\n    border-bottom-color: var(--nav-tabs-border-color);\n  }\n  .nav-tabs .nav-link.active,\n  .nav-tabs .nav-item.show .nav-link {\n    color: var(--nav-tabs-link-active-color);\n    background-color: var(--nav-tabs-link-active-bg);\n    border-color: var(--nav-tabs-link-active-border-color);\n    border-bottom-color: var(--nav-tabs-link-active-bg);\n  }\n  .nav-tabs .dropdown-menu {\n    margin-top: calc(-1 * var(--nav-tabs-border-width));\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .nav-pills {\n    --nav-pills-link-active-color: var(--component-active-color);\n    --nav-pills-link-active-bg: var(--component-active-bg);\n  }\n  .nav-pills .nav-link.active,\n  .nav-pills .show > .nav-link {\n    color: var(--nav-pills-link-active-color);\n    background-color: var(--nav-pills-link-active-bg);\n  }\n  .nav-underline {\n    --nav-gap: 1rem;\n    --nav-link-active-bg: transparent;\n    --nav-underline-border-width: 0.125rem;\n    --nav-underline-link-active-color: var(--fg-color);\n  }\n  .nav-underline .nav-link {\n    padding-inline: 0;\n    border-block-end: var(--nav-underline-border-width) solid transparent;\n    border-radius: 0;\n  }\n  .nav-underline .nav-link:hover, .nav-underline .nav-link:focus {\n    border-block-end-color: currentcolor;\n  }\n  .nav-underline .nav-link.active,\n  .nav-underline .show > .nav-link {\n    font-weight: 700;\n    color: var(--nav-underline-link-active-color);\n    border-block-end-color: currentcolor;\n  }\n  .nav-fill > .nav-link,\n  .nav-fill .nav-item {\n    flex: 1 1 auto;\n    text-align: center;\n  }\n  .nav-justified > .nav-link,\n  .nav-justified .nav-item {\n    flex-grow: 1;\n    flex-basis: 0;\n    text-align: center;\n  }\n  .nav-fill .nav-item .nav-link,\n  .nav-justified .nav-item .nav-link {\n    width: 100%;\n  }\n  .tab-content > .tab-pane {\n    display: none;\n  }\n  .tab-content > .active {\n    display: block;\n  }\n}\n@layer components {\n  .nav-overflow {\n    flex-wrap: nowrap;\n    min-width: 0;\n  }\n  .nav-overflow-item {\n    flex-shrink: 0;\n    margin-inline-start: auto;\n  }\n  .nav-overflow [data-bs-nav-overflow=true] {\n    display: none;\n  }\n  .nav-overflow-keep {\n    flex-shrink: 0;\n  }\n}\n@layer components {\n  .navbar {\n    --navbar-padding-x: 0;\n    --navbar-padding-y: 0.5rem;\n    --navbar-color: var(--fg-2);\n    --navbar-hover-color: var(--fg-1);\n    --navbar-disabled-color: var(--fg-3);\n    --navbar-active-color: var(--fg-body);\n    --navbar-brand-padding-y: 0.75rem;\n    --navbar-brand-margin-end: 1rem;\n    --navbar-brand-font-size: var(--font-size-md);\n    --navbar-brand-font-weight: var(--font-weight-medium);\n    --navbar-brand-color: var(--fg-body);\n    --navbar-brand-hover-color: var(--fg-body);\n    --navbar-nav-link-padding-x: 0.75rem;\n    --navbar-toggler-width: 2rem;\n    --navbar-toggler-padding-y: 0.25rem;\n    --navbar-toggler-padding-x: 0.75rem;\n    --navbar-toggler-font-size: var(--font-size-lg);\n    --navbar-toggler-border-color: color-mix(in oklch, var(--fg-body) 15%, transparent);\n    --navbar-toggler-border-radius: var(--border-radius);\n    --navbar-toggler-transition: box-shadow 0.15s ease-in-out;\n    position: relative;\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: space-between;\n    padding: var(--navbar-padding-y) var(--navbar-padding-x);\n    container-type: inline-size;\n  }\n  .navbar > .container-2xl, .navbar > .container-xl, .navbar > .container-lg, .navbar > .container-md, .navbar > .container-sm, .navbar > .container,\n  .navbar > .container-fluid {\n    display: flex;\n    flex-wrap: inherit;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .navbar-brand {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    margin-inline-end: var(--navbar-brand-margin-end);\n    font-size: var(--navbar-brand-font-size);\n    font-weight: var(--navbar-brand-font-weight);\n    color: var(--navbar-brand-color);\n    text-decoration: none;\n    white-space: nowrap;\n  }\n  .navbar-brand:hover, .navbar-brand:focus {\n    color: var(--navbar-brand-hover-color);\n  }\n  .navbar-nav {\n    --nav-gap: .25rem;\n    --nav-link-gap: .5rem;\n    --nav-link-padding-x: .5rem;\n    --nav-link-padding-y: .5rem;\n    --nav-link-color: var(--navbar-color);\n    --nav-link-hover-color: var(--navbar-hover-color);\n    --nav-link-hover-bg: transparent;\n    --nav-link-active-color: var(--navbar-active-color);\n    --nav-link-active-bg: transparent;\n    --nav-link-disabled-color: var(--navbar-disabled-color);\n    display: flex;\n    flex-direction: column;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style: none;\n  }\n  .navbar-nav .nav-link.active, .navbar-nav .nav-link.show {\n    color: var(--navbar-active-color);\n  }\n  .navbar-text {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    color: var(--navbar-color);\n  }\n  .navbar-text a,\n  .navbar-text a:hover,\n  .navbar-text a:focus {\n    color: var(--navbar-active-color);\n  }\n  .navbar-toggler {\n    --btn-bg: transparent;\n    --btn-hover-bg: var(--bg-2);\n  }\n  .navbar-expand > .container,\n  .navbar-expand > .container-fluid {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand .navbar-nav {\n    --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n    flex-direction: row;\n  }\n  .navbar-expand .navbar-toggler {\n    display: none !important;\n  }\n  .navbar-expand .offcanvas {\n    position: static;\n    z-index: auto;\n    flex-grow: 1;\n    width: auto !important;\n    height: auto !important;\n    visibility: visible !important;\n    background-color: transparent !important;\n    border: 0 !important;\n    transform: none !important;\n    box-shadow: none;\n    transition: none;\n  }\n  .navbar-expand .offcanvas .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand .offcanvas .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    flex-direction: row;\n    align-items: center;\n    padding: 0;\n    overflow-y: visible;\n  }\n  .navbar-expand {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  @container (width >= 576px) {\n    .navbar-expand-sm > .container,\n    .navbar-expand-sm > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .navbar-expand-sm .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .navbar-expand-sm .navbar-toggler {\n      display: none !important;\n    }\n    .navbar-expand-sm .offcanvas {\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .navbar-expand-sm .offcanvas .offcanvas-header {\n      display: none;\n    }\n    .navbar-expand-sm .offcanvas .offcanvas-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 768px) {\n    .navbar-expand-md > .container,\n    .navbar-expand-md > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .navbar-expand-md .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .navbar-expand-md .navbar-toggler {\n      display: none !important;\n    }\n    .navbar-expand-md .offcanvas {\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .navbar-expand-md .offcanvas .offcanvas-header {\n      display: none;\n    }\n    .navbar-expand-md .offcanvas .offcanvas-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1024px) {\n    .navbar-expand-lg > .container,\n    .navbar-expand-lg > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .navbar-expand-lg .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .navbar-expand-lg .navbar-toggler {\n      display: none !important;\n    }\n    .navbar-expand-lg .offcanvas {\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .navbar-expand-lg .offcanvas .offcanvas-header {\n      display: none;\n    }\n    .navbar-expand-lg .offcanvas .offcanvas-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1280px) {\n    .navbar-expand-xl > .container,\n    .navbar-expand-xl > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .navbar-expand-xl .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .navbar-expand-xl .navbar-toggler {\n      display: none !important;\n    }\n    .navbar-expand-xl .offcanvas {\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .navbar-expand-xl .offcanvas .offcanvas-header {\n      display: none;\n    }\n    .navbar-expand-xl .offcanvas .offcanvas-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1536px) {\n    .navbar-expand-2xl > .container,\n    .navbar-expand-2xl > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .navbar-expand-2xl .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .navbar-expand-2xl .navbar-toggler {\n      display: none !important;\n    }\n    .navbar-expand-2xl .offcanvas {\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .navbar-expand-2xl .offcanvas .offcanvas-header {\n      display: none;\n    }\n    .navbar-expand-2xl .offcanvas .offcanvas-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  .navbar[data-bs-theme=dark] {\n    --navbar-color: color-mix(in oklch, var(--white) 0.55, transparent);\n    --navbar-hover-color: color-mix(in oklch, var(--white) 0.75, transparent);\n    --navbar-disabled-color: color-mix(in oklch, var(--white) 0.25, transparent);\n    --navbar-active-color: var(--white);\n    --navbar-brand-color: var(--white);\n    --navbar-brand-hover-color: var(--white);\n    --navbar-toggler-border-color: color-mix(in oklch, var(--white) 0.1, transparent);\n  }\n}\n.offcanvas, .offcanvas-2xl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm {\n  --offcanvas-inset: var(--spacer);\n  --offcanvas-zindex: 1045;\n  --offcanvas-width: 400px;\n  --offcanvas-height: 30vh;\n  --offcanvas-padding-x: var(--spacer);\n  --offcanvas-padding-y: var(--spacer);\n  --offcanvas-color: var(--fg-body);\n  --offcanvas-bg: var(--bg-body);\n  --offcanvas-border-width: var(--border-width);\n  --offcanvas-border-color: var(--border-color-translucent);\n  --offcanvas-border-radius: var(--border-radius-lg);\n  --offcanvas-box-shadow: var(--box-shadow-lg);\n  --offcanvas-transition: transform 0.3s ease-in-out;\n  --offcanvas-title-line-height: 1.5;\n}\n\n@layer components {\n  @media (width < 576px) {\n    .offcanvas-sm {\n      position: fixed;\n      z-index: var(--offcanvas-zindex);\n      display: flex;\n      flex-direction: column;\n      max-width: calc(100% - var(--offcanvas-inset) * 2);\n      max-height: calc(100% - var(--offcanvas-inset) * 2);\n      color: var(--offcanvas-color);\n      visibility: hidden;\n      background-color: var(--offcanvas-bg);\n      background-clip: padding-box;\n      border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n      border-radius: var(--offcanvas-border-radius);\n      outline: 0;\n      box-shadow: var(--offcanvas-box-shadow);\n      transition: var(--offcanvas-transition);\n    }\n  }\n  @media (width < 576px) and (prefers-reduced-motion: reduce) {\n    .offcanvas-sm {\n      transition: none;\n    }\n  }\n  @media (width < 576px) {\n    .offcanvas-sm.offcanvas-start {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-start: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(-100%);\n    }\n    :root:dir(rtl) .offcanvas-sm.offcanvas-start {\n      transform: translateX(100%);\n    }\n    .offcanvas-sm.offcanvas-end {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-end: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(100%);\n    }\n    :root:dir(rtl) .offcanvas-sm.offcanvas-end {\n      transform: translateX(-100%);\n    }\n    .offcanvas-sm.offcanvas-top {\n      inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n      height: var(--offcanvas-height);\n      transform: translateY(-100%);\n    }\n    .offcanvas-sm.offcanvas-bottom {\n      inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n      height: var(--offcanvas-height);\n      transform: translateY(100%);\n    }\n    .offcanvas-sm.offcanvas-fullscreen {\n      inset: var(--offcanvas-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n      transform: translateY(100%);\n    }\n    .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) {\n      transform: none;\n    }\n    .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show {\n      visibility: visible;\n    }\n  }\n  @media (width >= 576px) {\n    .offcanvas-sm {\n      --offcanvas-height: auto;\n      --offcanvas-border-width: 0;\n      background-color: transparent !important;\n    }\n    .offcanvas-sm .offcanvas-header {\n      display: none;\n    }\n    .offcanvas-sm .offcanvas-body {\n      flex-grow: 0;\n      flex-direction: row;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 768px) {\n    .offcanvas-md {\n      position: fixed;\n      z-index: var(--offcanvas-zindex);\n      display: flex;\n      flex-direction: column;\n      max-width: calc(100% - var(--offcanvas-inset) * 2);\n      max-height: calc(100% - var(--offcanvas-inset) * 2);\n      color: var(--offcanvas-color);\n      visibility: hidden;\n      background-color: var(--offcanvas-bg);\n      background-clip: padding-box;\n      border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n      border-radius: var(--offcanvas-border-radius);\n      outline: 0;\n      box-shadow: var(--offcanvas-box-shadow);\n      transition: var(--offcanvas-transition);\n    }\n  }\n  @media (width < 768px) and (prefers-reduced-motion: reduce) {\n    .offcanvas-md {\n      transition: none;\n    }\n  }\n  @media (width < 768px) {\n    .offcanvas-md.offcanvas-start {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-start: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(-100%);\n    }\n    :root:dir(rtl) .offcanvas-md.offcanvas-start {\n      transform: translateX(100%);\n    }\n    .offcanvas-md.offcanvas-end {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-end: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(100%);\n    }\n    :root:dir(rtl) .offcanvas-md.offcanvas-end {\n      transform: translateX(-100%);\n    }\n    .offcanvas-md.offcanvas-top {\n      inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n      height: var(--offcanvas-height);\n      transform: translateY(-100%);\n    }\n    .offcanvas-md.offcanvas-bottom {\n      inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n      height: var(--offcanvas-height);\n      transform: translateY(100%);\n    }\n    .offcanvas-md.offcanvas-fullscreen {\n      inset: var(--offcanvas-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n      transform: translateY(100%);\n    }\n    .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) {\n      transform: none;\n    }\n    .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show {\n      visibility: visible;\n    }\n  }\n  @media (width >= 768px) {\n    .offcanvas-md {\n      --offcanvas-height: auto;\n      --offcanvas-border-width: 0;\n      background-color: transparent !important;\n    }\n    .offcanvas-md .offcanvas-header {\n      display: none;\n    }\n    .offcanvas-md .offcanvas-body {\n      flex-grow: 0;\n      flex-direction: row;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1024px) {\n    .offcanvas-lg {\n      position: fixed;\n      z-index: var(--offcanvas-zindex);\n      display: flex;\n      flex-direction: column;\n      max-width: calc(100% - var(--offcanvas-inset) * 2);\n      max-height: calc(100% - var(--offcanvas-inset) * 2);\n      color: var(--offcanvas-color);\n      visibility: hidden;\n      background-color: var(--offcanvas-bg);\n      background-clip: padding-box;\n      border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n      border-radius: var(--offcanvas-border-radius);\n      outline: 0;\n      box-shadow: var(--offcanvas-box-shadow);\n      transition: var(--offcanvas-transition);\n    }\n  }\n  @media (width < 1024px) and (prefers-reduced-motion: reduce) {\n    .offcanvas-lg {\n      transition: none;\n    }\n  }\n  @media (width < 1024px) {\n    .offcanvas-lg.offcanvas-start {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-start: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(-100%);\n    }\n    :root:dir(rtl) .offcanvas-lg.offcanvas-start {\n      transform: translateX(100%);\n    }\n    .offcanvas-lg.offcanvas-end {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-end: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(100%);\n    }\n    :root:dir(rtl) .offcanvas-lg.offcanvas-end {\n      transform: translateX(-100%);\n    }\n    .offcanvas-lg.offcanvas-top {\n      inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n      height: var(--offcanvas-height);\n      transform: translateY(-100%);\n    }\n    .offcanvas-lg.offcanvas-bottom {\n      inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n      height: var(--offcanvas-height);\n      transform: translateY(100%);\n    }\n    .offcanvas-lg.offcanvas-fullscreen {\n      inset: var(--offcanvas-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n      transform: translateY(100%);\n    }\n    .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) {\n      transform: none;\n    }\n    .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show {\n      visibility: visible;\n    }\n  }\n  @media (width >= 1024px) {\n    .offcanvas-lg {\n      --offcanvas-height: auto;\n      --offcanvas-border-width: 0;\n      background-color: transparent !important;\n    }\n    .offcanvas-lg .offcanvas-header {\n      display: none;\n    }\n    .offcanvas-lg .offcanvas-body {\n      flex-grow: 0;\n      flex-direction: row;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1280px) {\n    .offcanvas-xl {\n      position: fixed;\n      z-index: var(--offcanvas-zindex);\n      display: flex;\n      flex-direction: column;\n      max-width: calc(100% - var(--offcanvas-inset) * 2);\n      max-height: calc(100% - var(--offcanvas-inset) * 2);\n      color: var(--offcanvas-color);\n      visibility: hidden;\n      background-color: var(--offcanvas-bg);\n      background-clip: padding-box;\n      border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n      border-radius: var(--offcanvas-border-radius);\n      outline: 0;\n      box-shadow: var(--offcanvas-box-shadow);\n      transition: var(--offcanvas-transition);\n    }\n  }\n  @media (width < 1280px) and (prefers-reduced-motion: reduce) {\n    .offcanvas-xl {\n      transition: none;\n    }\n  }\n  @media (width < 1280px) {\n    .offcanvas-xl.offcanvas-start {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-start: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(-100%);\n    }\n    :root:dir(rtl) .offcanvas-xl.offcanvas-start {\n      transform: translateX(100%);\n    }\n    .offcanvas-xl.offcanvas-end {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-end: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(100%);\n    }\n    :root:dir(rtl) .offcanvas-xl.offcanvas-end {\n      transform: translateX(-100%);\n    }\n    .offcanvas-xl.offcanvas-top {\n      inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n      height: var(--offcanvas-height);\n      transform: translateY(-100%);\n    }\n    .offcanvas-xl.offcanvas-bottom {\n      inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n      height: var(--offcanvas-height);\n      transform: translateY(100%);\n    }\n    .offcanvas-xl.offcanvas-fullscreen {\n      inset: var(--offcanvas-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n      transform: translateY(100%);\n    }\n    .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) {\n      transform: none;\n    }\n    .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show {\n      visibility: visible;\n    }\n  }\n  @media (width >= 1280px) {\n    .offcanvas-xl {\n      --offcanvas-height: auto;\n      --offcanvas-border-width: 0;\n      background-color: transparent !important;\n    }\n    .offcanvas-xl .offcanvas-header {\n      display: none;\n    }\n    .offcanvas-xl .offcanvas-body {\n      flex-grow: 0;\n      flex-direction: row;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1536px) {\n    .offcanvas-2xl {\n      position: fixed;\n      z-index: var(--offcanvas-zindex);\n      display: flex;\n      flex-direction: column;\n      max-width: calc(100% - var(--offcanvas-inset) * 2);\n      max-height: calc(100% - var(--offcanvas-inset) * 2);\n      color: var(--offcanvas-color);\n      visibility: hidden;\n      background-color: var(--offcanvas-bg);\n      background-clip: padding-box;\n      border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n      border-radius: var(--offcanvas-border-radius);\n      outline: 0;\n      box-shadow: var(--offcanvas-box-shadow);\n      transition: var(--offcanvas-transition);\n    }\n  }\n  @media (width < 1536px) and (prefers-reduced-motion: reduce) {\n    .offcanvas-2xl {\n      transition: none;\n    }\n  }\n  @media (width < 1536px) {\n    .offcanvas-2xl.offcanvas-start {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-start: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(-100%);\n    }\n    :root:dir(rtl) .offcanvas-2xl.offcanvas-start {\n      transform: translateX(100%);\n    }\n    .offcanvas-2xl.offcanvas-end {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-end: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(100%);\n    }\n    :root:dir(rtl) .offcanvas-2xl.offcanvas-end {\n      transform: translateX(-100%);\n    }\n    .offcanvas-2xl.offcanvas-top {\n      inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n      height: var(--offcanvas-height);\n      transform: translateY(-100%);\n    }\n    .offcanvas-2xl.offcanvas-bottom {\n      inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n      height: var(--offcanvas-height);\n      transform: translateY(100%);\n    }\n    .offcanvas-2xl.offcanvas-fullscreen {\n      inset: var(--offcanvas-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n      transform: translateY(100%);\n    }\n    .offcanvas-2xl.showing, .offcanvas-2xl.show:not(.hiding) {\n      transform: none;\n    }\n    .offcanvas-2xl.showing, .offcanvas-2xl.hiding, .offcanvas-2xl.show {\n      visibility: visible;\n    }\n  }\n  @media (width >= 1536px) {\n    .offcanvas-2xl {\n      --offcanvas-height: auto;\n      --offcanvas-border-width: 0;\n      background-color: transparent !important;\n    }\n    .offcanvas-2xl .offcanvas-header {\n      display: none;\n    }\n    .offcanvas-2xl .offcanvas-body {\n      flex-grow: 0;\n      flex-direction: row;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  .offcanvas {\n    position: fixed;\n    z-index: var(--offcanvas-zindex);\n    display: flex;\n    flex-direction: column;\n    max-width: calc(100% - var(--offcanvas-inset) * 2);\n    max-height: calc(100% - var(--offcanvas-inset) * 2);\n    color: var(--offcanvas-color);\n    visibility: hidden;\n    background-color: var(--offcanvas-bg);\n    background-clip: padding-box;\n    border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n    border-radius: var(--offcanvas-border-radius);\n    outline: 0;\n    box-shadow: var(--offcanvas-box-shadow);\n    transition: var(--offcanvas-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .offcanvas {\n      transition: none;\n    }\n  }\n  .offcanvas.offcanvas-start {\n    inset-block: var(--offcanvas-inset);\n    inset-inline-start: var(--offcanvas-inset);\n    width: var(--offcanvas-width);\n    transform: translateX(-100%);\n  }\n  :root:dir(rtl) .offcanvas.offcanvas-start {\n    transform: translateX(100%);\n  }\n  .offcanvas.offcanvas-end {\n    inset-block: var(--offcanvas-inset);\n    inset-inline-end: var(--offcanvas-inset);\n    width: var(--offcanvas-width);\n    transform: translateX(100%);\n  }\n  :root:dir(rtl) .offcanvas.offcanvas-end {\n    transform: translateX(-100%);\n  }\n  .offcanvas.offcanvas-top {\n    inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n    height: var(--offcanvas-height);\n    transform: translateY(-100%);\n  }\n  .offcanvas.offcanvas-bottom {\n    inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n    height: var(--offcanvas-height);\n    transform: translateY(100%);\n  }\n  .offcanvas.offcanvas-fullscreen {\n    inset: var(--offcanvas-inset);\n    width: auto;\n    max-width: none;\n    height: auto;\n    max-height: none;\n    transform: translateY(100%);\n  }\n  .offcanvas.showing, .offcanvas.show:not(.hiding) {\n    transform: none;\n  }\n  .offcanvas.showing, .offcanvas.hiding, .offcanvas.show {\n    visibility: visible;\n  }\n  .offcanvas-backdrop {\n    --offcanvas-backdrop-bg: var(--bg-body);\n    --offcanvas-backdrop-opacity: 25%;\n    --offcanvas-backdrop-blur: 8px;\n    position: fixed;\n    inset: 0;\n    z-index: 1040;\n    background-color: color-mix(in oklch, var(--offcanvas-backdrop-bg) var(--offcanvas-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--offcanvas-backdrop-blur));\n  }\n  .offcanvas-backdrop.fade {\n    opacity: 0;\n  }\n  .offcanvas-backdrop.show {\n    opacity: 1;\n  }\n  .offcanvas-header {\n    display: flex;\n    align-items: center;\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n  }\n  .offcanvas-header .btn-close {\n    padding: calc(var(--offcanvas-padding-y) * 0.5) calc(var(--offcanvas-padding-x) * 0.5);\n    margin-inline-start: auto;\n    margin-inline-end: calc(-0.5 * var(--offcanvas-padding-x));\n    margin-top: calc(-0.5 * var(--offcanvas-padding-y));\n    margin-bottom: calc(-0.5 * var(--offcanvas-padding-y));\n  }\n  .offcanvas-title {\n    margin-bottom: 0;\n    line-height: var(--offcanvas-title-line-height);\n  }\n  .offcanvas-body {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    gap: var(--offcanvas-padding-y);\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n    overflow-y: auto;\n  }\n  .offcanvas-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: 0.5rem;\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n    border-block-start: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n  }\n}\n@layer components {\n  .pagination {\n    --pagination-min-height: var(--btn-input-min-height);\n    --pagination-padding-x: var(--btn-input-padding-x);\n    --pagination-padding-y: var(--btn-input-padding-y);\n    --pagination-font-size: var(--btn-input-font-size);\n    --pagination-color: var(--link-color);\n    --pagination-bg: var(--bg-body);\n    --pagination-border-width: var(--border-width);\n    --pagination-border-color: var(--border-color);\n    --pagination-border-radius: var(--btn-input-border-radius);\n    --pagination-hover-color: var(--link-hover-color);\n    --pagination-hover-bg: var(--bg-1);\n    --pagination-hover-border-color: var(--border-color);\n    --pagination-focus-color: var(--link-hover-color);\n    --pagination-focus-bg: var(--bg-2);\n    --pagination-active-color: var(--primary-contrast);\n    --pagination-active-bg: var(--primary-bg);\n    --pagination-active-border-color: var(--primary-bg);\n    --pagination-disabled-color: var(--fg-3);\n    --pagination-disabled-bg: var(--bg-2);\n    --pagination-disabled-border-color: var(--border-color);\n    display: flex;\n    padding-inline-start: 0;\n    list-style: none;\n  }\n  .page-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: var(--pagination-min-height);\n    padding: var(--pagination-padding-y) var(--pagination-padding-x);\n    font-size: var(--pagination-font-size);\n    color: var(--pagination-color);\n    text-decoration: none;\n    background-color: var(--pagination-bg);\n    border: var(--pagination-border-width) solid var(--pagination-border-color);\n    transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .page-link {\n      transition: none;\n    }\n  }\n  .page-link:hover {\n    z-index: 2;\n    color: var(--pagination-hover-color);\n    background-color: var(--pagination-hover-bg);\n    border-color: var(--pagination-hover-border-color);\n  }\n  .page-link:focus-visible {\n    z-index: 3;\n    color: var(--pagination-focus-color);\n    background-color: var(--pagination-focus-bg);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .page-link.active, .active > .page-link {\n    z-index: 3;\n    color: var(--pagination-active-color);\n    background-color: var(--pagination-active-bg);\n    border-color: var(--pagination-active-border-color);\n  }\n  .page-link.disabled, .disabled > .page-link {\n    color: var(--pagination-disabled-color);\n    pointer-events: none;\n    background-color: var(--pagination-disabled-bg);\n    border-color: var(--pagination-disabled-border-color);\n  }\n  .page-item:not(:first-child) .page-link {\n    margin-inline-start: calc(-1 * var(--pagination-border-width));\n  }\n  .page-item:first-child .page-link {\n    border-start-start-radius: var(--pagination-border-radius);\n    border-end-start-radius: var(--pagination-border-radius);\n  }\n  .page-item:last-child .page-link {\n    border-start-end-radius: var(--pagination-border-radius);\n    border-end-end-radius: var(--pagination-border-radius);\n  }\n  .pagination-sm {\n    --pagination-min-height: var(--bs-btn-input-sm-min-height);\n    --pagination-padding-y: var(--btn-input-sm-padding-y);\n    --pagination-padding-x: var(--btn-input-sm-padding-x);\n    --pagination-font-size: var(--btn-input-sm-font-size);\n    --pagination-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .pagination-lg {\n    --pagination-min-height: var(--bs-btn-input-lg-min-height);\n    --pagination-padding-y: var(--btn-input-lg-padding-y);\n    --pagination-padding-x: var(--btn-input-lg-padding-x);\n    --pagination-font-size: var(--btn-input-lg-font-size);\n    --pagination-border-radius: var(--btn-input-lg-border-radius);\n  }\n}\n@layer components {\n  .placeholder {\n    --placeholder-opacity-max: 0.5;\n    --placeholder-opacity-min: 0.2;\n    display: inline-block;\n    min-height: 1em;\n    vertical-align: middle;\n    cursor: wait;\n    background-color: currentcolor;\n    opacity: var(--placeholder-opacity-max);\n  }\n  .placeholder.btn::before {\n    display: inline-block;\n    content: \"\";\n  }\n  .placeholder-xs {\n    min-height: 0.6em;\n  }\n  .placeholder-sm {\n    min-height: 0.8em;\n  }\n  .placeholder-lg {\n    min-height: 1.2em;\n  }\n  .placeholder-glow .placeholder {\n    animation: placeholder-glow 2s ease-in-out infinite;\n  }\n  @keyframes placeholder-glow {\n    50% {\n      opacity: var(--placeholder-opacity-min);\n    }\n  }\n  .placeholder-wave {\n    mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, calc(1 - var(--placeholder-opacity-min))) 75%, #000 95%);\n    mask-size: 200% 100%;\n    animation: placeholder-wave 2s linear infinite;\n  }\n  @keyframes placeholder-wave {\n    100% {\n      mask-position: -200% 0%;\n    }\n  }\n}\n@layer components {\n  .popover {\n    --popover-zindex: 1070;\n    --popover-max-width: 280px;\n    --popover-font-size: var(--font-size-sm);\n    --popover-bg: var(--bg-body);\n    --popover-border-width: var(--border-width);\n    --popover-border-color: var(--border-color-translucent);\n    --popover-border-radius: var(--border-radius-lg);\n    --popover-inner-border-radius: calc(var(--border-radius-lg) - var(--border-width));\n    --popover-box-shadow: var(--box-shadow);\n    --popover-header-padding-x: 1rem;\n    --popover-header-padding-y: 0.75rem;\n    --popover-header-font-size: var(--font-size-sm);\n    --popover-header-color: inherit;\n    --popover-header-bg: var(--bg-1);\n    --popover-body-padding-x: 1rem;\n    --popover-body-padding-y: 0.75rem;\n    --popover-body-color: var(--fg-body);\n    --popover-arrow-width: 1rem;\n    --popover-arrow-height: 0.5rem;\n    --popover-arrow-border: var(--popover-border-color);\n    z-index: var(--popover-zindex);\n    display: block;\n    max-width: var(--popover-max-width);\n    font-family: var(--body-font-family);\n    font-style: normal;\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    text-align: start;\n    text-decoration: none;\n    text-shadow: none;\n    text-transform: none;\n    letter-spacing: normal;\n    word-break: normal;\n    white-space: normal;\n    word-spacing: normal;\n    line-break: auto;\n    font-size: var(--popover-font-size);\n    word-wrap: break-word;\n    background-color: var(--popover-bg);\n    background-clip: padding-box;\n    border: var(--popover-border-width) solid var(--popover-border-color);\n    border-radius: var(--popover-border-radius);\n    box-shadow: var(--popover-box-shadow);\n  }\n  .popover .popover-arrow {\n    display: block;\n    width: var(--popover-arrow-width);\n    height: var(--popover-arrow-height);\n  }\n  .popover .popover-arrow::before, .popover .popover-arrow::after {\n    position: absolute;\n    display: block;\n    content: \"\";\n    border-color: transparent;\n    border-style: solid;\n    border-width: 0;\n  }\n  .bs-popover-top > .popover-arrow, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow {\n    bottom: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n  }\n  .bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::after {\n    border-width: var(--popover-arrow-height) calc(var(--popover-arrow-width) * 0.5) 0;\n  }\n  .bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::before {\n    bottom: 0;\n    border-block-start-color: var(--popover-arrow-border);\n  }\n  .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::after {\n    bottom: var(--popover-border-width);\n    border-block-start-color: var(--popover-bg);\n  }\n  .bs-popover-end > .popover-arrow, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow {\n    left: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n    width: var(--popover-arrow-height);\n    height: var(--popover-arrow-width);\n  }\n  .bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::after {\n    border-width: calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height) calc(var(--popover-arrow-width) * 0.5) 0;\n  }\n  .bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::before {\n    left: 0;\n    border-inline-end-color: var(--popover-arrow-border);\n  }\n  .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::after {\n    left: var(--popover-border-width);\n    border-inline-end-color: var(--popover-bg);\n  }\n  .bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow {\n    top: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n  }\n  .bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::after {\n    border-width: 0 calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height);\n  }\n  .bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::before {\n    top: 0;\n    border-block-end-color: var(--popover-arrow-border);\n  }\n  .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::after {\n    top: var(--popover-border-width);\n    border-block-end-color: var(--popover-bg);\n  }\n  .bs-popover-bottom .popover-header::before, .bs-popover-auto[data-bs-placement^=bottom] .popover-header::before {\n    position: absolute;\n    top: 0;\n    left: 50%;\n    display: block;\n    width: var(--popover-arrow-width);\n    margin-inline-start: calc(-0.5 * var(--popover-arrow-width));\n    content: \"\";\n    border-block-end: var(--popover-border-width) solid var(--popover-header-bg);\n  }\n  .bs-popover-start > .popover-arrow, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow {\n    right: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n    width: var(--popover-arrow-height);\n    height: var(--popover-arrow-width);\n  }\n  .bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::after {\n    border-width: calc(var(--popover-arrow-width) * 0.5) 0 calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height);\n  }\n  .bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::before {\n    right: 0;\n    border-inline-start-color: var(--popover-arrow-border);\n  }\n  .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::after {\n    right: var(--popover-border-width);\n    border-inline-start-color: var(--popover-bg);\n  }\n  .popover-header {\n    padding: var(--popover-header-padding-y) var(--popover-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--popover-header-font-size);\n    color: var(--popover-header-color);\n    background-color: var(--popover-header-bg);\n    border-block-end: var(--popover-border-width) solid var(--popover-border-color);\n    border-start-start-radius: var(--popover-inner-border-radius);\n    border-start-end-radius: var(--popover-inner-border-radius);\n  }\n  .popover-header:empty {\n    display: none;\n  }\n  .popover-body {\n    padding: var(--popover-body-padding-y) var(--popover-body-padding-x);\n    color: var(--popover-body-color);\n  }\n}\n@layer components {\n  @keyframes progress-bar-stripes {\n    0% {\n      background-position-x: var(--progress-height);\n    }\n  }\n  .progress,\n  .progress-stacked {\n    --progress-height: 1rem;\n    --progress-font-size: var(--font-size-sm);\n    --progress-bg: var(--bg-2);\n    --progress-border-radius: var(--border-radius);\n    --progress-box-shadow: var(--box-shadow-inset);\n    --progress-bar-color: var(--white);\n    --progress-bar-bg: var(--primary-bg);\n    --progress-bar-transition: width 0.6s ease;\n    --progress-bar-animation: progress-bar-stripes 1s linear infinite;\n    display: flex;\n    height: var(--progress-height);\n    overflow: hidden;\n    font-size: var(--progress-font-size);\n    background-color: var(--progress-bg);\n    border-radius: var(--progress-border-radius);\n    box-shadow: var(--progress-box-shadow);\n  }\n  .progress-bar {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    overflow: hidden;\n    color: var(--theme-contrast, var(--progress-bar-color));\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--theme-bg, var(--progress-bar-bg));\n    transition: var(--progress-bar-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .progress-bar {\n      transition: none;\n    }\n  }\n  .progress-bar-striped {\n    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%, transparent);\n    background-size: var(--progress-height) var(--progress-height);\n  }\n  .progress-stacked > .progress {\n    overflow: visible;\n  }\n  .progress-stacked > .progress > .progress-bar {\n    width: 100%;\n  }\n  .progress-bar-animated {\n    animation: var(--progress-bar-animation);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .progress-bar-animated {\n      animation: none;\n    }\n  }\n}\n@layer components {\n  .spinner-grow,\n  .spinner-border {\n    display: inline-block;\n    flex-shrink: 0;\n    width: var(--spinner-width);\n    height: var(--spinner-height);\n    vertical-align: var(--spinner-vertical-align);\n    border-radius: 50%;\n    animation: var(--spinner-animation-speed) linear infinite var(--spinner-animation-name);\n  }\n  @keyframes spinner-border {\n    to {\n      transform: rotate(360deg);\n    }\n  }\n  .spinner-border {\n    --spinner-width: 2rem;\n    --spinner-height: 2rem;\n    --spinner-vertical-align: -0.125em;\n    --spinner-border-width: 0.25em;\n    --spinner-animation-speed: 0.75s;\n    --spinner-animation-name: spinner-border;\n    border: var(--spinner-border-width) solid currentcolor;\n    border-inline-end-color: transparent;\n  }\n  .spinner-border-sm {\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    --spinner-border-width: .2em;\n  }\n  @keyframes spinner-grow {\n    0% {\n      transform: scale(0);\n    }\n    50% {\n      opacity: 1;\n      transform: none;\n    }\n  }\n  .spinner-grow {\n    --spinner-width: 2rem;\n    --spinner-height: 2rem;\n    --spinner-vertical-align: -0.125em;\n    --spinner-animation-speed: 0.75s;\n    --spinner-animation-name: spinner-grow;\n    background-color: currentcolor;\n    opacity: 0;\n  }\n  .spinner-grow-sm {\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .spinner-border,\n    .spinner-grow {\n      --spinner-animation-speed: 1.5s;\n    }\n  }\n}\n.stepper {\n  --stepper-size: 2rem;\n  --stepper-gap: 1rem;\n  --stepper-bg: var(--bg-2);\n  --stepper-track-size: 0.25rem;\n  --stepper-active-color: var(--primary-contrast);\n  --stepper-active-bg: var(--primary-bg);\n  display: grid;\n  grid-auto-rows: 1fr;\n  grid-auto-flow: row;\n  gap: var(--stepper-gap);\n  padding-left: 0;\n  list-style: none;\n  counter-reset: stepper;\n}\n\n.stepper-item {\n  position: relative;\n  display: grid;\n  grid-template-rows: auto;\n  grid-template-columns: var(--stepper-size) auto;\n  gap: 0.5rem;\n  place-items: center;\n  justify-items: start;\n  text-align: center;\n  text-decoration: none;\n}\n.stepper-item::before {\n  position: relative;\n  z-index: 1;\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: center;\n  width: var(--stepper-size);\n  height: var(--stepper-size);\n  padding: 0.5rem;\n  font-weight: 600;\n  line-height: 1;\n  text-align: center;\n  content: counter(stepper);\n  counter-increment: stepper;\n  background-color: var(--stepper-bg);\n  border-radius: 50%;\n}\n.stepper-item::after {\n  position: absolute;\n  top: calc(var(--stepper-gap) * -1);\n  bottom: 100%;\n  left: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n  width: var(--stepper-track-size);\n  content: \"\";\n  background-color: var(--stepper-bg);\n}\n.stepper-item:first-child::after {\n  display: none;\n}\n.stepper-item.active::before, .stepper-item.active::after {\n  color: var(--theme-contrast, var(--stepper-active-color));\n  background-color: var(--theme-bg, var(--stepper-active-bg));\n}\n\n.stepper-horizontal {\n  display: inline-grid;\n  grid-auto-columns: 1fr;\n  grid-auto-flow: column;\n}\n.stepper-horizontal .stepper-item {\n  grid-template-rows: repeat(2, var(--stepper-size));\n  grid-template-columns: auto;\n  justify-items: center;\n}\n.stepper-horizontal .stepper-item::after {\n  top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n  right: 0;\n  bottom: auto;\n  left: calc(-50% - var(--stepper-gap));\n  width: auto;\n  height: var(--stepper-track-size);\n}\n.stepper-horizontal .stepper-item:last-child::after {\n  right: 50%;\n}\n\n@media (width >= 576px) {\n  .stepper-horizontal-sm {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal-sm .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n  }\n  .stepper-horizontal-sm .stepper-item::after {\n    top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    right: 0;\n    bottom: auto;\n    left: calc(-50% - var(--stepper-gap));\n    width: auto;\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal-sm .stepper-item:last-child::after {\n    right: 50%;\n  }\n}\n@media (width >= 768px) {\n  .stepper-horizontal-md {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal-md .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n  }\n  .stepper-horizontal-md .stepper-item::after {\n    top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    right: 0;\n    bottom: auto;\n    left: calc(-50% - var(--stepper-gap));\n    width: auto;\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal-md .stepper-item:last-child::after {\n    right: 50%;\n  }\n}\n@media (width >= 1024px) {\n  .stepper-horizontal-lg {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal-lg .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n  }\n  .stepper-horizontal-lg .stepper-item::after {\n    top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    right: 0;\n    bottom: auto;\n    left: calc(-50% - var(--stepper-gap));\n    width: auto;\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal-lg .stepper-item:last-child::after {\n    right: 50%;\n  }\n}\n@media (width >= 1280px) {\n  .stepper-horizontal-xl {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal-xl .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n  }\n  .stepper-horizontal-xl .stepper-item::after {\n    top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    right: 0;\n    bottom: auto;\n    left: calc(-50% - var(--stepper-gap));\n    width: auto;\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal-xl .stepper-item:last-child::after {\n    right: 50%;\n  }\n}\n@media (width >= 1536px) {\n  .stepper-horizontal-2xl {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal-2xl .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n  }\n  .stepper-horizontal-2xl .stepper-item::after {\n    top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    right: 0;\n    bottom: auto;\n    left: calc(-50% - var(--stepper-gap));\n    width: auto;\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal-2xl .stepper-item:last-child::after {\n    right: 50%;\n  }\n}\n.stepper-overflow {\n  container-type: inline-size;\n  overflow-x: auto;\n  overscroll-behavior-x: contain;\n  -webkit-overflow-scrolling: touch;\n}\n.stepper-overflow > .stepper {\n  width: max-content;\n  min-width: 100%;\n}\n\n@layer components {\n  .toast {\n    --toast-zindex: 1090;\n    --toast-padding-x: 0.75rem;\n    --toast-padding-y: 0.5rem;\n    --toast-spacing: 1.5rem;\n    --toast-max-width: 350px;\n    --toast-font-size: 0.875rem;\n    --toast-bg: rgba(var(--body-bg-rgb), 0.85);\n    --toast-border-width: var(--border-width);\n    --toast-border-color: var(--border-color-translucent);\n    --toast-border-radius: var(--border-radius);\n    --toast-box-shadow: var(--box-shadow);\n    --toast-header-color: var(--fg-3);\n    --toast-header-bg: rgba(var(--body-bg-rgb), 0.85);\n    --toast-header-border-color: var(--border-color-translucent);\n    width: var(--toast-max-width);\n    max-width: 100%;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color);\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--toast-border-color);\n    box-shadow: var(--toast-box-shadow);\n    border-radius: var(--toast-border-radius);\n  }\n  .toast.showing {\n    opacity: 0;\n  }\n  .toast:not(.show) {\n    display: none;\n  }\n  .toast-container {\n    --toast-zindex: 1090;\n    position: absolute;\n    z-index: var(--toast-zindex);\n    width: max-content;\n    max-width: 100%;\n    pointer-events: none;\n  }\n  .toast-container > :not(:last-child) {\n    margin-bottom: var(--toast-spacing);\n  }\n  .toast-header {\n    display: flex;\n    align-items: center;\n    padding: var(--toast-padding-y) var(--toast-padding-x);\n    color: var(--toast-header-color);\n    background-color: var(--toast-header-bg);\n    background-clip: padding-box;\n    border-block-end: var(--toast-border-width) solid var(--toast-header-border-color);\n    border-start-start-radius: calc(var(--toast-border-radius) - var(--toast-border-width));\n    border-start-end-radius: calc(var(--toast-border-radius) - var(--toast-border-width));\n  }\n  .toast-header .btn-close {\n    margin-inline-start: var(--toast-padding-x);\n    margin-inline-end: calc(-0.5 * var(--toast-padding-x));\n  }\n  .toast-body {\n    padding: var(--toast-padding-x);\n    word-wrap: break-word;\n  }\n}\n.fade {\n  transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n  .fade {\n    transition: none;\n  }\n}\n.fade:not(.show) {\n  opacity: 0;\n}\n\n.collapse:not(.show) {\n  display: none;\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing {\n    transition: none;\n  }\n}\n.collapsing.collapse-horizontal {\n  width: 0;\n  height: auto;\n  transition: width 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing.collapse-horizontal {\n    transition: none;\n  }\n}\n\n@layer helpers {\n  .focus-ring:focus-visible {\n    outline: var(--focus-ring);\n  }\n}\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: 0.375rem;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, 0.5));\n    text-underline-offset: 0.25em;\n    backface-visibility: hidden;\n  }\n  .icon-link > .bi {\n    flex-shrink: 0;\n    width: 1em;\n    height: 1em;\n    fill: currentcolor;\n    transition: 0.2s ease-in-out transform;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .icon-link > .bi {\n      transition: none;\n    }\n  }\n  .icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {\n    transform: var(--icon-link-transform, translate3d(0.25em, 0, 0));\n  }\n}\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: 1030;\n  }\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: 1030;\n  }\n  .sticky-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n  .sticky-bottom {\n    position: sticky;\n    bottom: 0;\n    z-index: 1020;\n  }\n  @media (width >= 576px) {\n    .sticky-sm-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-sm-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 768px) {\n    .sticky-md-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-md-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1024px) {\n    .sticky-lg-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-lg-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1280px) {\n    .sticky-xl-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-xl-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1536px) {\n    .sticky-2xl-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-2xl-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n}\n@layer helpers {\n  .stack-container {\n    container-type: inline-size;\n  }\n  [class*=hstack],\n  [class*=vstack] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n  .vstack {\n    --stack-direction: column;\n    --stack-align-items: stretch;\n  }\n  .hstack {\n    --stack-direction: row;\n    --stack-align-items: flex-start;\n  }\n  @container (width >= 576px) {\n    .vstack-sm {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 576px) {\n    .hstack-sm {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 768px) {\n    .vstack-md {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 768px) {\n    .hstack-md {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1024px) {\n    .vstack-lg {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1024px) {\n    .hstack-lg {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1280px) {\n    .vstack-xl {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1280px) {\n    .hstack-xl {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1536px) {\n    .vstack-2xl {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1536px) {\n    .hstack-2xl {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n}\n@layer helpers {\n  .theme-primary {\n    --theme-base: var(--primary-base);\n    --theme-text: var(--primary-text);\n    --theme-text-emphasis: var(--primary-text-emphasis);\n    --theme-bg: var(--primary-bg);\n    --theme-bg-subtle: var(--primary-bg-subtle);\n    --theme-bg-muted: var(--primary-bg-muted);\n    --theme-border: var(--primary-border);\n    --theme-focus-ring: var(--primary-focus-ring);\n    --theme-contrast: var(--primary-contrast);\n  }\n  .theme-accent {\n    --theme-base: var(--accent-base);\n    --theme-text: var(--accent-text);\n    --theme-text-emphasis: var(--accent-text-emphasis);\n    --theme-bg: var(--accent-bg);\n    --theme-bg-subtle: var(--accent-bg-subtle);\n    --theme-bg-muted: var(--accent-bg-muted);\n    --theme-border: var(--accent-border);\n    --theme-focus-ring: var(--accent-focus-ring);\n    --theme-contrast: var(--accent-contrast);\n  }\n  .theme-success {\n    --theme-base: var(--success-base);\n    --theme-text: var(--success-text);\n    --theme-text-emphasis: var(--success-text-emphasis);\n    --theme-bg: var(--success-bg);\n    --theme-bg-subtle: var(--success-bg-subtle);\n    --theme-bg-muted: var(--success-bg-muted);\n    --theme-border: var(--success-border);\n    --theme-focus-ring: var(--success-focus-ring);\n    --theme-contrast: var(--success-contrast);\n  }\n  .theme-danger {\n    --theme-base: var(--danger-base);\n    --theme-text: var(--danger-text);\n    --theme-text-emphasis: var(--danger-text-emphasis);\n    --theme-bg: var(--danger-bg);\n    --theme-bg-subtle: var(--danger-bg-subtle);\n    --theme-bg-muted: var(--danger-bg-muted);\n    --theme-border: var(--danger-border);\n    --theme-focus-ring: var(--danger-focus-ring);\n    --theme-contrast: var(--danger-contrast);\n  }\n  .theme-warning {\n    --theme-base: var(--warning-base);\n    --theme-text: var(--warning-text);\n    --theme-text-emphasis: var(--warning-text-emphasis);\n    --theme-bg: var(--warning-bg);\n    --theme-bg-subtle: var(--warning-bg-subtle);\n    --theme-bg-muted: var(--warning-bg-muted);\n    --theme-border: var(--warning-border);\n    --theme-focus-ring: var(--warning-focus-ring);\n    --theme-contrast: var(--warning-contrast);\n  }\n  .theme-info {\n    --theme-base: var(--info-base);\n    --theme-text: var(--info-text);\n    --theme-text-emphasis: var(--info-text-emphasis);\n    --theme-bg: var(--info-bg);\n    --theme-bg-subtle: var(--info-bg-subtle);\n    --theme-bg-muted: var(--info-bg-muted);\n    --theme-border: var(--info-border);\n    --theme-focus-ring: var(--info-focus-ring);\n    --theme-contrast: var(--info-contrast);\n  }\n  .theme-inverse {\n    --theme-base: var(--inverse-base);\n    --theme-text: var(--inverse-text);\n    --theme-text-emphasis: var(--inverse-text-emphasis);\n    --theme-bg: var(--inverse-bg);\n    --theme-bg-subtle: var(--inverse-bg-subtle);\n    --theme-bg-muted: var(--inverse-bg-muted);\n    --theme-border: var(--inverse-border);\n    --theme-focus-ring: var(--inverse-focus-ring);\n    --theme-contrast: var(--inverse-contrast);\n  }\n  .theme-secondary {\n    --theme-base: var(--secondary-base);\n    --theme-text: var(--secondary-text);\n    --theme-text-emphasis: var(--secondary-text-emphasis);\n    --theme-bg: var(--secondary-bg);\n    --theme-bg-subtle: var(--secondary-bg-subtle);\n    --theme-bg-muted: var(--secondary-bg-muted);\n    --theme-border: var(--secondary-border);\n    --theme-focus-ring: var(--secondary-focus-ring);\n    --theme-contrast: var(--secondary-contrast);\n  }\n}\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) {\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border: 0 !important;\n  }\n  .visually-hidden:not(caption),\n  .visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {\n    position: absolute !important;\n  }\n  .visually-hidden *,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) * {\n    overflow: hidden !important;\n  }\n}\n@layer helpers {\n  .stretched-link::after {\n    position: absolute;\n    inset: 0;\n    z-index: 1;\n    content: \"\";\n  }\n}\n@layer helpers {\n  .text-truncate {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n@layer utilities {\n  .align-baseline {\n    vertical-align: baseline;\n  }\n  .align-top {\n    vertical-align: top;\n  }\n  .align-middle {\n    vertical-align: middle;\n  }\n  .align-bottom {\n    vertical-align: bottom;\n  }\n  .align-text-bottom {\n    vertical-align: text-bottom;\n  }\n  .align-text-top {\n    vertical-align: text-top;\n  }\n  [class*=ratio-] {\n    aspect-ratio: var(--ratio);\n  }\n  .ratio-auto {\n    --ratio: auto;\n  }\n  .ratio-1x1 {\n    --ratio: 1 / 1;\n  }\n  .ratio-4x3 {\n    --ratio: 4 / 3;\n  }\n  .ratio-16x9 {\n    --ratio: 16 / 9;\n  }\n  .ratio-21x9 {\n    --ratio: 21 / 9;\n  }\n  .float-start {\n    float: inline-start;\n  }\n  .float-end {\n    float: inline-end;\n  }\n  .float-none {\n    float: none;\n  }\n  .object-fit-contain {\n    object-fit: contain;\n  }\n  .object-fit-cover {\n    object-fit: cover;\n  }\n  .object-fit-fill {\n    object-fit: fill;\n  }\n  .object-fit-scale {\n    object-fit: scale-down;\n  }\n  .object-fit-none {\n    object-fit: none;\n  }\n  .opacity-0 {\n    opacity: 0;\n  }\n  .opacity-25 {\n    opacity: 0.25;\n  }\n  .opacity-50 {\n    opacity: 0.5;\n  }\n  .opacity-75 {\n    opacity: 0.75;\n  }\n  .opacity-100 {\n    opacity: 1;\n  }\n  .overflow-auto {\n    overflow: auto;\n  }\n  .overflow-hidden {\n    overflow: hidden;\n  }\n  .overflow-visible {\n    overflow: visible;\n  }\n  .overflow-scroll {\n    overflow: scroll;\n  }\n  .overflow-x-auto {\n    overflow-x: auto;\n  }\n  .overflow-x-hidden {\n    overflow-x: hidden;\n  }\n  .overflow-x-visible {\n    overflow-x: visible;\n  }\n  .overflow-x-scroll {\n    overflow-x: scroll;\n  }\n  .overflow-y-auto {\n    overflow-y: auto;\n  }\n  .overflow-y-hidden {\n    overflow-y: hidden;\n  }\n  .overflow-y-visible {\n    overflow-y: visible;\n  }\n  .overflow-y-scroll {\n    overflow-y: scroll;\n  }\n  .d-inline {\n    display: inline;\n  }\n  .d-inline-block {\n    display: inline-block;\n  }\n  .d-block {\n    display: block;\n  }\n  .d-grid {\n    display: grid;\n  }\n  .d-inline-grid {\n    display: inline-grid;\n  }\n  .d-table {\n    display: table;\n  }\n  .d-table-row {\n    display: table-row;\n  }\n  .d-table-cell {\n    display: table-cell;\n  }\n  .d-flex {\n    display: flex;\n  }\n  .d-inline-flex {\n    display: inline-flex;\n  }\n  .d-contents {\n    display: contents;\n  }\n  .d-flow-root {\n    display: flow-root;\n  }\n  .d-none {\n    display: none;\n  }\n  .shadow {\n    box-shadow: var(--box-shadow);\n  }\n  .shadow-sm {\n    box-shadow: var(--box-shadow-sm);\n  }\n  .shadow-lg {\n    box-shadow: var(--box-shadow-lg);\n  }\n  .shadow-none {\n    box-shadow: none;\n  }\n  .focus-ring-primary {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-accent {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-success {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-danger {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-warning {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  }\n  .focus-ring-info {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-inverse {\n    --focus-ring-color: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  }\n  .focus-ring-secondary {\n    --focus-ring-color: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  }\n  .position-static {\n    position: static;\n  }\n  .position-relative {\n    position: relative;\n  }\n  .position-absolute {\n    position: absolute;\n  }\n  .position-fixed {\n    position: fixed;\n  }\n  .position-sticky {\n    position: sticky;\n  }\n  .top-0 {\n    top: 0;\n  }\n  .top-50 {\n    top: 50%;\n  }\n  .top-100 {\n    top: 100%;\n  }\n  .bottom-0 {\n    bottom: 0;\n  }\n  .bottom-50 {\n    bottom: 50%;\n  }\n  .bottom-100 {\n    bottom: 100%;\n  }\n  .start-0 {\n    left: 0;\n  }\n  .start-50 {\n    left: 50%;\n  }\n  .start-100 {\n    left: 100%;\n  }\n  .end-0 {\n    right: 0;\n  }\n  .end-50 {\n    right: 50%;\n  }\n  .end-100 {\n    right: 100%;\n  }\n  .translate-middle {\n    transform: translate(-50%, -50%);\n  }\n  .translate-middle-x {\n    transform: translateX(-50%);\n  }\n  .translate-middle-y {\n    transform: translateY(-50%);\n  }\n  .border {\n    border: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-0 {\n    border: 0;\n  }\n  .border-top {\n    border-block-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-top-0 {\n    border-block-start: 0;\n  }\n  .border-end {\n    border-inline-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-end-0 {\n    border-inline-end: 0;\n  }\n  .border-bottom {\n    border-block-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-bottom-0 {\n    border-block-end: 0;\n  }\n  .border-start {\n    border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-start-0 {\n    border-inline-start: 0;\n  }\n  .border-block {\n    border-block: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-block-0 {\n    border-block: 0;\n  }\n  .border-inline {\n    border-inline: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-inline-0 {\n    border-inline: 0;\n  }\n  .border-primary {\n    --border-color: var(--blue-500);\n    border-color: var(--border-color);\n  }\n  .border-accent {\n    --border-color: var(--indigo-500);\n    border-color: var(--border-color);\n  }\n  .border-success {\n    --border-color: var(--green-500);\n    border-color: var(--border-color);\n  }\n  .border-danger {\n    --border-color: var(--red-500);\n    border-color: var(--border-color);\n  }\n  .border-warning {\n    --border-color: var(--yellow-500);\n    border-color: var(--border-color);\n  }\n  .border-info {\n    --border-color: var(--cyan-500);\n    border-color: var(--border-color);\n  }\n  .border-inverse {\n    --border-color: light-dark(var(--gray-900), var(--gray-025));\n    border-color: var(--border-color);\n  }\n  .border-secondary {\n    --border-color: light-dark(var(--gray-100), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-bg {\n    --border-color: var(--bg-body);\n    border-color: var(--border-color);\n  }\n  .border-body {\n    --border-color: light-dark(var(--gray-300), var(--gray-800));\n    border-color: var(--border-color);\n  }\n  .border-muted {\n    --border-color: light-dark(var(--gray-200), var(--gray-800));\n    border-color: var(--border-color);\n  }\n  .border-subtle {\n    --border-color: light-dark(var(--gray-100), var(--gray-900));\n    border-color: var(--border-color);\n  }\n  .border-emphasized {\n    --border-color: light-dark(var(--gray-400), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-white {\n    --border-color: var(--white);\n    border-color: var(--border-color);\n  }\n  .border-black {\n    --border-color: var(--black);\n    border-color: var(--border-color);\n  }\n  .border-subtle-primary {\n    --border-color: light-dark(var(--blue-300), var(--blue-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-accent {\n    --border-color: light-dark(var(--indigo-300), var(--indigo-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-success {\n    --border-color: light-dark(var(--green-300), var(--green-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-danger {\n    --border-color: light-dark(var(--red-300), var(--red-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-warning {\n    --border-color: light-dark(var(--yellow-300), var(--yellow-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-info {\n    --border-color: light-dark(var(--cyan-300), var(--cyan-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-inverse {\n    --border-color: light-dark(var(--gray-400), var(--gray-100));\n    border-color: var(--border-color);\n  }\n  .border-subtle-secondary {\n    --border-color: light-dark(var(--gray-300), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-1 {\n    border-width: 1px;\n  }\n  .border-2 {\n    border-width: 2px;\n  }\n  .border-3 {\n    border-width: 3px;\n  }\n  .border-4 {\n    border-width: 4px;\n  }\n  .border-5 {\n    border-width: 5px;\n  }\n  .border-10 {\n    border-color: color-mix(in oklch, var(--border-color) 10%, transparent);\n  }\n  .border-20 {\n    border-color: color-mix(in oklch, var(--border-color) 20%, transparent);\n  }\n  .border-30 {\n    border-color: color-mix(in oklch, var(--border-color) 30%, transparent);\n  }\n  .border-40 {\n    border-color: color-mix(in oklch, var(--border-color) 40%, transparent);\n  }\n  .border-50 {\n    border-color: color-mix(in oklch, var(--border-color) 50%, transparent);\n  }\n  .border-60 {\n    border-color: color-mix(in oklch, var(--border-color) 60%, transparent);\n  }\n  .border-70 {\n    border-color: color-mix(in oklch, var(--border-color) 70%, transparent);\n  }\n  .border-80 {\n    border-color: color-mix(in oklch, var(--border-color) 80%, transparent);\n  }\n  .border-90 {\n    border-color: color-mix(in oklch, var(--border-color) 90%, transparent);\n  }\n  .border-100 {\n    border-color: var(--border-color);\n  }\n  .w-1 {\n    width: 1rem;\n  }\n  .w-2 {\n    width: 2rem;\n  }\n  .w-3 {\n    width: 3rem;\n  }\n  .w-4 {\n    width: 4rem;\n  }\n  .w-5 {\n    width: 5rem;\n  }\n  .w-6 {\n    width: 6rem;\n  }\n  .w-7 {\n    width: 7rem;\n  }\n  .w-8 {\n    width: 8rem;\n  }\n  .w-9 {\n    width: 9rem;\n  }\n  .w-10 {\n    width: 10rem;\n  }\n  .w-11 {\n    width: 11rem;\n  }\n  .w-12 {\n    width: 12rem;\n  }\n  .w-25 {\n    width: 25%;\n  }\n  .w-50 {\n    width: 50%;\n  }\n  .w-75 {\n    width: 75%;\n  }\n  .w-100 {\n    width: 100%;\n  }\n  .w-auto {\n    width: auto;\n  }\n  .w-min {\n    width: min-content;\n  }\n  .w-max {\n    width: max-content;\n  }\n  .w-fit {\n    width: fit-content;\n  }\n  .max-w-100 {\n    max-width: 100%;\n  }\n  .min-w-0 {\n    min-width: 0;\n  }\n  .min-w-100 {\n    min-width: 100%;\n  }\n  .vw-100 {\n    width: 100vw;\n  }\n  .min-vw-100 {\n    min-width: 100vw;\n  }\n  .h-25 {\n    height: 25%;\n  }\n  .h-50 {\n    height: 50%;\n  }\n  .h-75 {\n    height: 75%;\n  }\n  .h-100 {\n    height: 100%;\n  }\n  .h-auto {\n    height: auto;\n  }\n  .h-min {\n    height: min-content;\n  }\n  .h-max {\n    height: max-content;\n  }\n  .h-fit {\n    height: fit-content;\n  }\n  .max-h-100 {\n    max-height: 100%;\n  }\n  .min-h-0 {\n    min-height: 0;\n  }\n  .min-h-100 {\n    min-height: 100%;\n  }\n  .vh-100 {\n    height: 100vh;\n  }\n  .min-vh-100 {\n    min-height: 100vh;\n  }\n  .flex-fill {\n    flex: 1 1 auto;\n  }\n  .flex-row {\n    flex-direction: row;\n  }\n  .flex-column {\n    flex-direction: column;\n  }\n  .flex-row-reverse {\n    flex-direction: row-reverse;\n  }\n  .flex-column-reverse {\n    flex-direction: column-reverse;\n  }\n  .flex-grow-0 {\n    flex-grow: 0;\n  }\n  .flex-grow-1 {\n    flex-grow: 1;\n  }\n  .flex-shrink-0 {\n    flex-shrink: 0;\n  }\n  .flex-shrink-1 {\n    flex-shrink: 1;\n  }\n  .flex-wrap {\n    flex-wrap: wrap;\n  }\n  .flex-nowrap {\n    flex-wrap: nowrap;\n  }\n  .flex-wrap-reverse {\n    flex-wrap: wrap-reverse;\n  }\n  .justify-content-start {\n    justify-content: flex-start;\n  }\n  .justify-content-end {\n    justify-content: flex-end;\n  }\n  .justify-content-center {\n    justify-content: center;\n  }\n  .justify-content-between {\n    justify-content: space-between;\n  }\n  .justify-content-around {\n    justify-content: space-around;\n  }\n  .justify-content-evenly {\n    justify-content: space-evenly;\n  }\n  .justify-items-start {\n    justify-items: start;\n  }\n  .justify-items-end {\n    justify-items: end;\n  }\n  .justify-items-center {\n    justify-items: center;\n  }\n  .justify-items-stretch {\n    justify-items: stretch;\n  }\n  .justify-self-start {\n    justify-self: flex-start;\n  }\n  .justify-self-end {\n    justify-self: flex-end;\n  }\n  .justify-self-center {\n    justify-self: center;\n  }\n  .align-items-start {\n    align-items: flex-start;\n  }\n  .align-items-end {\n    align-items: flex-end;\n  }\n  .align-items-center {\n    align-items: center;\n  }\n  .align-items-baseline {\n    align-items: baseline;\n  }\n  .align-items-stretch {\n    align-items: stretch;\n  }\n  .align-content-start {\n    align-content: flex-start;\n  }\n  .align-content-end {\n    align-content: flex-end;\n  }\n  .align-content-center {\n    align-content: center;\n  }\n  .align-content-between {\n    align-content: space-between;\n  }\n  .align-content-around {\n    align-content: space-around;\n  }\n  .align-content-stretch {\n    align-content: stretch;\n  }\n  .align-self-auto {\n    align-self: auto;\n  }\n  .align-self-start {\n    align-self: flex-start;\n  }\n  .align-self-end {\n    align-self: flex-end;\n  }\n  .align-self-center {\n    align-self: center;\n  }\n  .align-self-baseline {\n    align-self: baseline;\n  }\n  .align-self-stretch {\n    align-self: stretch;\n  }\n  .place-items-start {\n    place-items: start;\n  }\n  .place-items-end {\n    place-items: end;\n  }\n  .place-items-center {\n    place-items: center;\n  }\n  .place-items-stretch {\n    place-items: stretch;\n  }\n  .grid-cols-3 {\n    --columns: 3;\n  }\n  .grid-cols-4 {\n    --columns: 4;\n  }\n  .grid-cols-6 {\n    --columns: 6;\n  }\n  .grid-cols-fill {\n    grid-column: 1 / -1;\n  }\n  .grid-auto-flow-row {\n    grid-auto-flow: row;\n  }\n  .grid-auto-flow-column {\n    grid-auto-flow: column;\n  }\n  .grid-auto-flow-dense {\n    grid-auto-flow: dense;\n  }\n  .order-first {\n    order: -1;\n  }\n  .order-0 {\n    order: 0;\n  }\n  .order-1 {\n    order: 1;\n  }\n  .order-2 {\n    order: 2;\n  }\n  .order-3 {\n    order: 3;\n  }\n  .order-4 {\n    order: 4;\n  }\n  .order-5 {\n    order: 5;\n  }\n  .order-last {\n    order: 6;\n  }\n  .m--2 {\n    margin: -0.5rem;\n  }\n  .m--1 {\n    margin: -0.25rem;\n  }\n  .m-0 {\n    margin: 0;\n  }\n  .m-1 {\n    margin: 0.25rem;\n  }\n  .m-2 {\n    margin: 0.5rem;\n  }\n  .m-3 {\n    margin: 1rem;\n  }\n  .m-4 {\n    margin: 1.5rem;\n  }\n  .m-5 {\n    margin: 3rem;\n  }\n  .m-auto {\n    margin: auto;\n  }\n  .mx--2 {\n    margin-inline: -0.5rem;\n  }\n  .mx--1 {\n    margin-inline: -0.25rem;\n  }\n  .mx-0 {\n    margin-inline: 0;\n  }\n  .mx-1 {\n    margin-inline: 0.25rem;\n  }\n  .mx-2 {\n    margin-inline: 0.5rem;\n  }\n  .mx-3 {\n    margin-inline: 1rem;\n  }\n  .mx-4 {\n    margin-inline: 1.5rem;\n  }\n  .mx-5 {\n    margin-inline: 3rem;\n  }\n  .mx-auto {\n    margin-inline: auto;\n  }\n  .my--2 {\n    margin-block: -0.5rem;\n  }\n  .my--1 {\n    margin-block: -0.25rem;\n  }\n  .my-0 {\n    margin-block: 0;\n  }\n  .my-1 {\n    margin-block: 0.25rem;\n  }\n  .my-2 {\n    margin-block: 0.5rem;\n  }\n  .my-3 {\n    margin-block: 1rem;\n  }\n  .my-4 {\n    margin-block: 1.5rem;\n  }\n  .my-5 {\n    margin-block: 3rem;\n  }\n  .my-auto {\n    margin-block: auto;\n  }\n  .mt--2 {\n    margin-block-start: -0.5rem;\n  }\n  .mt--1 {\n    margin-block-start: -0.25rem;\n  }\n  .mt-0 {\n    margin-block-start: 0;\n  }\n  .mt-1 {\n    margin-block-start: 0.25rem;\n  }\n  .mt-2 {\n    margin-block-start: 0.5rem;\n  }\n  .mt-3 {\n    margin-block-start: 1rem;\n  }\n  .mt-4 {\n    margin-block-start: 1.5rem;\n  }\n  .mt-5 {\n    margin-block-start: 3rem;\n  }\n  .mt-auto {\n    margin-block-start: auto;\n  }\n  .me--2 {\n    margin-inline-end: -0.5rem;\n  }\n  .me--1 {\n    margin-inline-end: -0.25rem;\n  }\n  .me-0 {\n    margin-inline-end: 0;\n  }\n  .me-1 {\n    margin-inline-end: 0.25rem;\n  }\n  .me-2 {\n    margin-inline-end: 0.5rem;\n  }\n  .me-3 {\n    margin-inline-end: 1rem;\n  }\n  .me-4 {\n    margin-inline-end: 1.5rem;\n  }\n  .me-5 {\n    margin-inline-end: 3rem;\n  }\n  .me-auto {\n    margin-inline-end: auto;\n  }\n  .mb--2 {\n    margin-block-end: -0.5rem;\n  }\n  .mb--1 {\n    margin-block-end: -0.25rem;\n  }\n  .mb-0 {\n    margin-block-end: 0;\n  }\n  .mb-1 {\n    margin-block-end: 0.25rem;\n  }\n  .mb-2 {\n    margin-block-end: 0.5rem;\n  }\n  .mb-3 {\n    margin-block-end: 1rem;\n  }\n  .mb-4 {\n    margin-block-end: 1.5rem;\n  }\n  .mb-5 {\n    margin-block-end: 3rem;\n  }\n  .mb-auto {\n    margin-block-end: auto;\n  }\n  .ms--2 {\n    margin-inline-start: -0.5rem;\n  }\n  .ms--1 {\n    margin-inline-start: -0.25rem;\n  }\n  .ms-0 {\n    margin-inline-start: 0;\n  }\n  .ms-1 {\n    margin-inline-start: 0.25rem;\n  }\n  .ms-2 {\n    margin-inline-start: 0.5rem;\n  }\n  .ms-3 {\n    margin-inline-start: 1rem;\n  }\n  .ms-4 {\n    margin-inline-start: 1.5rem;\n  }\n  .ms-5 {\n    margin-inline-start: 3rem;\n  }\n  .ms-auto {\n    margin-inline-start: auto;\n  }\n  .p--2 {\n    padding: -0.5rem;\n  }\n  .p--1 {\n    padding: -0.25rem;\n  }\n  .p-0 {\n    padding: 0;\n  }\n  .p-1 {\n    padding: 0.25rem;\n  }\n  .p-2 {\n    padding: 0.5rem;\n  }\n  .p-3 {\n    padding: 1rem;\n  }\n  .p-4 {\n    padding: 1.5rem;\n  }\n  .p-5 {\n    padding: 3rem;\n  }\n  .px--2 {\n    padding-inline: -0.5rem;\n  }\n  .px--1 {\n    padding-inline: -0.25rem;\n  }\n  .px-0 {\n    padding-inline: 0;\n  }\n  .px-1 {\n    padding-inline: 0.25rem;\n  }\n  .px-2 {\n    padding-inline: 0.5rem;\n  }\n  .px-3 {\n    padding-inline: 1rem;\n  }\n  .px-4 {\n    padding-inline: 1.5rem;\n  }\n  .px-5 {\n    padding-inline: 3rem;\n  }\n  .py--2 {\n    padding-block: -0.5rem;\n  }\n  .py--1 {\n    padding-block: -0.25rem;\n  }\n  .py-0 {\n    padding-block: 0;\n  }\n  .py-1 {\n    padding-block: 0.25rem;\n  }\n  .py-2 {\n    padding-block: 0.5rem;\n  }\n  .py-3 {\n    padding-block: 1rem;\n  }\n  .py-4 {\n    padding-block: 1.5rem;\n  }\n  .py-5 {\n    padding-block: 3rem;\n  }\n  .pt--2 {\n    padding-block-start: -0.5rem;\n  }\n  .pt--1 {\n    padding-block-start: -0.25rem;\n  }\n  .pt-0 {\n    padding-block-start: 0;\n  }\n  .pt-1 {\n    padding-block-start: 0.25rem;\n  }\n  .pt-2 {\n    padding-block-start: 0.5rem;\n  }\n  .pt-3 {\n    padding-block-start: 1rem;\n  }\n  .pt-4 {\n    padding-block-start: 1.5rem;\n  }\n  .pt-5 {\n    padding-block-start: 3rem;\n  }\n  .pe--2 {\n    padding-inline-end: -0.5rem;\n  }\n  .pe--1 {\n    padding-inline-end: -0.25rem;\n  }\n  .pe-0 {\n    padding-inline-end: 0;\n  }\n  .pe-1 {\n    padding-inline-end: 0.25rem;\n  }\n  .pe-2 {\n    padding-inline-end: 0.5rem;\n  }\n  .pe-3 {\n    padding-inline-end: 1rem;\n  }\n  .pe-4 {\n    padding-inline-end: 1.5rem;\n  }\n  .pe-5 {\n    padding-inline-end: 3rem;\n  }\n  .pb--2 {\n    padding-block-end: -0.5rem;\n  }\n  .pb--1 {\n    padding-block-end: -0.25rem;\n  }\n  .pb-0 {\n    padding-block-end: 0;\n  }\n  .pb-1 {\n    padding-block-end: 0.25rem;\n  }\n  .pb-2 {\n    padding-block-end: 0.5rem;\n  }\n  .pb-3 {\n    padding-block-end: 1rem;\n  }\n  .pb-4 {\n    padding-block-end: 1.5rem;\n  }\n  .pb-5 {\n    padding-block-end: 3rem;\n  }\n  .ps--2 {\n    padding-inline-start: -0.5rem;\n  }\n  .ps--1 {\n    padding-inline-start: -0.25rem;\n  }\n  .ps-0 {\n    padding-inline-start: 0;\n  }\n  .ps-1 {\n    padding-inline-start: 0.25rem;\n  }\n  .ps-2 {\n    padding-inline-start: 0.5rem;\n  }\n  .ps-3 {\n    padding-inline-start: 1rem;\n  }\n  .ps-4 {\n    padding-inline-start: 1.5rem;\n  }\n  .ps-5 {\n    padding-inline-start: 3rem;\n  }\n  .gap--2 {\n    gap: -0.5rem;\n  }\n  .gap--1 {\n    gap: -0.25rem;\n  }\n  .gap-0 {\n    gap: 0;\n  }\n  .gap-1 {\n    gap: 0.25rem;\n  }\n  .gap-2 {\n    gap: 0.5rem;\n  }\n  .gap-3 {\n    gap: 1rem;\n  }\n  .gap-4 {\n    gap: 1.5rem;\n  }\n  .gap-5 {\n    gap: 3rem;\n  }\n  .row-gap--2 {\n    row-gap: -0.5rem;\n  }\n  .row-gap--1 {\n    row-gap: -0.25rem;\n  }\n  .row-gap-0 {\n    row-gap: 0;\n  }\n  .row-gap-1 {\n    row-gap: 0.25rem;\n  }\n  .row-gap-2 {\n    row-gap: 0.5rem;\n  }\n  .row-gap-3 {\n    row-gap: 1rem;\n  }\n  .row-gap-4 {\n    row-gap: 1.5rem;\n  }\n  .row-gap-5 {\n    row-gap: 3rem;\n  }\n  .column-gap--2 {\n    column-gap: -0.5rem;\n  }\n  .column-gap--1 {\n    column-gap: -0.25rem;\n  }\n  .column-gap-0 {\n    column-gap: 0;\n  }\n  .column-gap-1 {\n    column-gap: 0.25rem;\n  }\n  .column-gap-2 {\n    column-gap: 0.5rem;\n  }\n  .column-gap-3 {\n    column-gap: 1rem;\n  }\n  .column-gap-4 {\n    column-gap: 1.5rem;\n  }\n  .column-gap-5 {\n    column-gap: 3rem;\n  }\n  .font-monospace {\n    font-family: var(--font-mono);\n  }\n  .font-body {\n    font-family: var(--body-font-family);\n  }\n  .fs-xs {\n    font-size: var(--font-size-xs);\n  }\n  .fs-sm {\n    font-size: var(--font-size-sm);\n  }\n  .fs-md {\n    font-size: var(--font-size-md);\n  }\n  .fs-lg {\n    font-size: var(--font-size-lg);\n  }\n  .fs-xl {\n    font-size: var(--font-size-xl);\n  }\n  .fs-2xl {\n    font-size: var(--font-size-2xl);\n  }\n  .fs-3xl {\n    font-size: var(--font-size-3xl);\n  }\n  .fs-4xl {\n    font-size: var(--font-size-4xl);\n  }\n  .fs-5xl {\n    font-size: var(--font-size-5xl);\n  }\n  .fs-6xl {\n    font-size: var(--font-size-6xl);\n  }\n  .text-xs {\n    font-size: var(--font-size-xs);\n    line-height: var(--line-height-xs);\n  }\n  .text-sm {\n    font-size: var(--font-size-sm);\n    line-height: var(--line-height-sm);\n  }\n  .text-md {\n    font-size: var(--font-size-md);\n    line-height: var(--line-height-md);\n  }\n  .text-lg {\n    font-size: var(--font-size-lg);\n    line-height: var(--line-height-lg);\n  }\n  .text-xl {\n    font-size: var(--font-size-xl);\n    line-height: var(--line-height-xl);\n  }\n  .text-2xl {\n    font-size: var(--font-size-2xl);\n    line-height: var(--line-height-2xl);\n  }\n  .text-3xl {\n    font-size: var(--font-size-3xl);\n    line-height: var(--line-height-3xl);\n  }\n  .text-4xl {\n    font-size: var(--font-size-4xl);\n    line-height: var(--line-height-4xl);\n  }\n  .text-5xl {\n    font-size: var(--font-size-5xl);\n    line-height: var(--line-height-5xl);\n  }\n  .text-6xl {\n    font-size: var(--font-size-6xl);\n    line-height: var(--line-height-6xl);\n  }\n  .fst-italic {\n    font-style: italic;\n  }\n  .fst-normal {\n    font-style: normal;\n  }\n  .fw-lighter {\n    font-weight: lighter;\n  }\n  .fw-light {\n    font-weight: 300;\n  }\n  .fw-normal {\n    font-weight: 400;\n  }\n  .fw-medium {\n    font-weight: 500;\n  }\n  .fw-semibold {\n    font-weight: 600;\n  }\n  .fw-bold {\n    font-weight: 700;\n  }\n  .fw-bolder {\n    font-weight: bolder;\n  }\n  .lh-1 {\n    line-height: 1;\n  }\n  .lh-sm {\n    line-height: 1.25;\n  }\n  .lh-base {\n    line-height: 1.5;\n  }\n  .lh-lg {\n    line-height: 2;\n  }\n  .text-start {\n    text-align: start;\n  }\n  .text-end {\n    text-align: end;\n  }\n  .text-center {\n    text-align: center;\n  }\n  .text-decoration-none {\n    text-decoration: none;\n  }\n  .text-decoration-underline {\n    text-decoration: underline;\n  }\n  .text-decoration-line-through {\n    text-decoration: line-through;\n  }\n  .text-lowercase {\n    text-transform: lowercase;\n  }\n  .text-uppercase {\n    text-transform: uppercase;\n  }\n  .text-capitalize {\n    text-transform: capitalize;\n  }\n  .text-wrap {\n    white-space: wrap;\n  }\n  .text-nowrap {\n    white-space: nowrap;\n  }\n  .text-balance {\n    white-space: balance;\n  }\n  .text-pretty {\n    white-space: pretty;\n  }\n  .text-break {\n    word-wrap: break-word;\n    word-break: break-word;\n  }\n  .fg-primary {\n    --fg: light-dark(var(--blue-600), var(--blue-400));\n    color: var(--fg);\n  }\n  .fg-accent {\n    --fg: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n    color: var(--fg);\n  }\n  .fg-success {\n    --fg: light-dark(var(--green-600), var(--green-400));\n    color: var(--fg);\n  }\n  .fg-danger {\n    --fg: light-dark(var(--red-600), var(--red-400));\n    color: var(--fg);\n  }\n  .fg-warning {\n    --fg: light-dark(var(--yellow-700), var(--yellow-400));\n    color: var(--fg);\n  }\n  .fg-info {\n    --fg: light-dark(var(--cyan-600), var(--cyan-400));\n    color: var(--fg);\n  }\n  .fg-inverse {\n    --fg: light-dark(var(--gray-900), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-secondary {\n    --fg: light-dark(var(--gray-600), var(--gray-400));\n    color: var(--fg);\n  }\n  .fg-body {\n    --fg: light-dark(var(--gray-900), var(--gray-050));\n    color: var(--fg);\n  }\n  .fg-1 {\n    --fg: light-dark(var(--gray-800), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-2 {\n    --fg: light-dark(var(--gray-700), var(--gray-300));\n    color: var(--fg);\n  }\n  .fg-3 {\n    --fg: light-dark(var(--gray-600), var(--gray-500));\n    color: var(--fg);\n  }\n  .fg-4 {\n    --fg: light-dark(var(--gray-500), var(--gray-600));\n    color: var(--fg);\n  }\n  .fg-white {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-black {\n    --fg: var(--black);\n    color: var(--fg);\n  }\n  .fg-inherit {\n    --fg: inherit;\n    color: var(--fg);\n  }\n  .fg-emphasis-primary {\n    --fg: light-dark(var(--blue-800), var(--blue-200));\n    color: var(--fg);\n  }\n  .fg-emphasis-accent {\n    --fg: light-dark(var(--indigo-800), var(--indigo-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-success {\n    --fg: light-dark(var(--green-800), var(--green-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-danger {\n    --fg: light-dark(var(--red-800), var(--red-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-warning {\n    --fg: light-dark(var(--yellow-800), var(--yellow-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-info {\n    --fg: light-dark(var(--cyan-800), var(--cyan-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-inverse {\n    --fg: light-dark(var(--gray-975), var(--white));\n    color: var(--fg);\n  }\n  .fg-emphasis-secondary {\n    --fg: light-dark(var(--gray-800), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-contrast-primary {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-accent {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-success {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-danger {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-warning {\n    --fg: var(--gray-900);\n    color: var(--fg);\n  }\n  .fg-contrast-info {\n    --fg: var(--gray-900);\n    color: var(--fg);\n  }\n  .fg-contrast-inverse {\n    --fg: light-dark(var(--white), var(--gray-900));\n    color: var(--fg);\n  }\n  .fg-contrast-secondary {\n    --fg: light-dark(var(--gray-900), var(--white));\n    color: var(--fg);\n  }\n  .fg-10 {\n    color: color-mix(in oklch, var(--fg) 10%, transparent);\n  }\n  .fg-20 {\n    color: color-mix(in oklch, var(--fg) 20%, transparent);\n  }\n  .fg-30 {\n    color: color-mix(in oklch, var(--fg) 30%, transparent);\n  }\n  .fg-40 {\n    color: color-mix(in oklch, var(--fg) 40%, transparent);\n  }\n  .fg-50 {\n    color: color-mix(in oklch, var(--fg) 50%, transparent);\n  }\n  .fg-60 {\n    color: color-mix(in oklch, var(--fg) 60%, transparent);\n  }\n  .fg-70 {\n    color: color-mix(in oklch, var(--fg) 70%, transparent);\n  }\n  .fg-80 {\n    color: color-mix(in oklch, var(--fg) 80%, transparent);\n  }\n  .fg-90 {\n    color: color-mix(in oklch, var(--fg) 90%, transparent);\n  }\n  .fg-100 {\n    color: var(--fg);\n  }\n  .link-10 {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .link-10-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .link-20 {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .link-20-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .link-30 {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .link-30-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .link-40 {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .link-40-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .link-50 {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .link-50-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .link-60 {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .link-60-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .link-70 {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .link-70-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .link-80 {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .link-80-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .link-90 {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-90-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-100 {\n    color: var(--link-color);\n  }\n  .link-100-hover:hover {\n    color: var(--link-color);\n  }\n  .underline-offset-1 {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-1-hover:hover {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-2 {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-2-hover:hover {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-3 {\n    text-underline-offset: 0.375em;\n  }\n  .underline-offset-3-hover:hover {\n    text-underline-offset: 0.375em;\n  }\n  .underline-primary {\n    text-decoration-color: light-dark(var(--blue-600), var(--blue-400));\n  }\n  .underline-accent {\n    text-decoration-color: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  }\n  .underline-success {\n    text-decoration-color: light-dark(var(--green-600), var(--green-400));\n  }\n  .underline-danger {\n    text-decoration-color: light-dark(var(--red-600), var(--red-400));\n  }\n  .underline-warning {\n    text-decoration-color: light-dark(var(--yellow-700), var(--yellow-400));\n  }\n  .underline-info {\n    text-decoration-color: light-dark(var(--cyan-600), var(--cyan-400));\n  }\n  .underline-inverse {\n    text-decoration-color: light-dark(var(--gray-900), var(--gray-200));\n  }\n  .underline-secondary {\n    text-decoration-color: light-dark(var(--gray-600), var(--gray-400));\n  }\n  .underline-10 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .underline-10-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .underline-20 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .underline-20-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .underline-30 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .underline-30-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .underline-40 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .underline-40-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .underline-50 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .underline-50-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .underline-60 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .underline-60-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .underline-70 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .underline-70-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .underline-80 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .underline-80-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .underline-90 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .underline-90-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .underline-100 {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-100-hover:hover {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-thickness-1 {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-1-hover:hover {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-2 {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-2-hover:hover {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-3 {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-3-hover:hover {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-4 {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-4-hover:hover {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-5 {\n    text-decoration-thickness: 5px;\n  }\n  .underline-thickness-5-hover:hover {\n    text-decoration-thickness: 5px;\n  }\n  .bg-primary {\n    --bg: var(--blue-500);\n    background-color: var(--bg);\n  }\n  .bg-accent {\n    --bg: var(--indigo-500);\n    background-color: var(--bg);\n  }\n  .bg-success {\n    --bg: var(--green-500);\n    background-color: var(--bg);\n  }\n  .bg-danger {\n    --bg: var(--red-500);\n    background-color: var(--bg);\n  }\n  .bg-warning {\n    --bg: var(--yellow-500);\n    background-color: var(--bg);\n  }\n  .bg-info {\n    --bg: var(--cyan-500);\n    background-color: var(--bg);\n  }\n  .bg-inverse {\n    --bg: light-dark(var(--gray-900), var(--gray-025));\n    background-color: var(--bg);\n  }\n  .bg-secondary {\n    --bg: light-dark(var(--gray-100), var(--gray-600));\n    background-color: var(--bg);\n  }\n  .bg-body {\n    --bg: light-dark(var(--white), var(--gray-975));\n    background-color: var(--bg);\n  }\n  .bg-1 {\n    --bg: light-dark(var(--gray-025), var(--gray-950));\n    background-color: var(--bg);\n  }\n  .bg-2 {\n    --bg: light-dark(var(--gray-050), var(--gray-900));\n    background-color: var(--bg);\n  }\n  .bg-3 {\n    --bg: light-dark(var(--gray-100), var(--gray-800));\n    background-color: var(--bg);\n  }\n  .bg-4 {\n    --bg: light-dark(var(--gray-200), var(--gray-700));\n    background-color: var(--bg);\n  }\n  .bg-white {\n    --bg: var(--white);\n    background-color: var(--bg);\n  }\n  .bg-black {\n    --bg: var(--black);\n    background-color: var(--bg);\n  }\n  .bg-transparent {\n    --bg: transparent;\n    background-color: var(--bg);\n  }\n  .bg-inherit {\n    --bg: inherit;\n    background-color: var(--bg);\n  }\n  .bg-subtle-primary {\n    --bg: light-dark(var(--blue-100), var(--blue-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-accent {\n    --bg: light-dark(var(--indigo-100), var(--indigo-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-success {\n    --bg: light-dark(var(--green-100), var(--green-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-danger {\n    --bg: light-dark(var(--red-100), var(--red-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-warning {\n    --bg: light-dark(var(--yellow-100), var(--yellow-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-info {\n    --bg: light-dark(var(--cyan-100), var(--cyan-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-inverse {\n    --bg: light-dark(var(--gray-100), var(--gray-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-secondary {\n    --bg: light-dark(var(--gray-050), var(--gray-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-primary {\n    --bg: light-dark(var(--blue-200), var(--blue-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-accent {\n    --bg: light-dark(var(--indigo-200), var(--indigo-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-success {\n    --bg: light-dark(var(--green-200), var(--green-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-danger {\n    --bg: light-dark(var(--red-200), var(--red-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-warning {\n    --bg: light-dark(var(--yellow-200), var(--yellow-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-info {\n    --bg: light-dark(var(--cyan-200), var(--cyan-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-inverse {\n    --bg: light-dark(var(--gray-200), var(--gray-300));\n    background-color: var(--bg);\n  }\n  .bg-muted-secondary {\n    --bg: light-dark(var(--gray-100), var(--gray-700));\n    background-color: var(--bg);\n  }\n  .bg-10 {\n    background-color: color-mix(in oklch, var(--bg) 10%, transparent);\n  }\n  .bg-20 {\n    background-color: color-mix(in oklch, var(--bg) 20%, transparent);\n  }\n  .bg-30 {\n    background-color: color-mix(in oklch, var(--bg) 30%, transparent);\n  }\n  .bg-40 {\n    background-color: color-mix(in oklch, var(--bg) 40%, transparent);\n  }\n  .bg-50 {\n    background-color: color-mix(in oklch, var(--bg) 50%, transparent);\n  }\n  .bg-60 {\n    background-color: color-mix(in oklch, var(--bg) 60%, transparent);\n  }\n  .bg-70 {\n    background-color: color-mix(in oklch, var(--bg) 70%, transparent);\n  }\n  .bg-80 {\n    background-color: color-mix(in oklch, var(--bg) 80%, transparent);\n  }\n  .bg-90 {\n    background-color: color-mix(in oklch, var(--bg) 90%, transparent);\n  }\n  .bg-100 {\n    background-color: var(--bg);\n  }\n  .theme-contrast {\n    background-color: var(--theme-bg);\n    color: var(--theme-contrast);\n  }\n  .theme-subtle {\n    background-color: var(--theme-bg-subtle);\n    color: var(--theme-text);\n  }\n  .theme-muted {\n    background-color: var(--theme-bg-muted);\n    color: var(--theme-text-emphasis);\n  }\n  .theme-border {\n    border: var(--border-width) solid var(--theme-border);\n  }\n  .bg-gradient {\n    background-image: var(--gradient);\n  }\n  .user-select-all {\n    user-select: all;\n  }\n  .user-select-auto {\n    user-select: auto;\n  }\n  .user-select-none {\n    user-select: none;\n  }\n  .pe-none {\n    pointer-events: none;\n  }\n  .pe-auto {\n    pointer-events: auto;\n  }\n  .rounded {\n    border-radius: var(--border-radius);\n  }\n  .rounded-0 {\n    border-radius: 0;\n  }\n  .rounded-1 {\n    border-radius: var(--border-radius-sm);\n  }\n  .rounded-2 {\n    border-radius: var(--border-radius);\n  }\n  .rounded-3 {\n    border-radius: var(--border-radius-lg);\n  }\n  .rounded-4 {\n    border-radius: var(--border-radius-xl);\n  }\n  .rounded-5 {\n    border-radius: var(--border-radius-2xl);\n  }\n  .rounded-circle {\n    border-radius: 50%;\n  }\n  .rounded-pill {\n    border-radius: var(--border-radius-pill);\n  }\n  .rounded-top {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-top-0 {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .rounded-top-1 {\n    border-start-start-radius: var(--border-radius-sm);\n    border-start-end-radius: var(--border-radius-sm);\n  }\n  .rounded-top-2 {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-top-3 {\n    border-start-start-radius: var(--border-radius-lg);\n    border-start-end-radius: var(--border-radius-lg);\n  }\n  .rounded-top-4 {\n    border-start-start-radius: var(--border-radius-xl);\n    border-start-end-radius: var(--border-radius-xl);\n  }\n  .rounded-top-5 {\n    border-start-start-radius: var(--border-radius-2xl);\n    border-start-end-radius: var(--border-radius-2xl);\n  }\n  .rounded-top-circle {\n    border-start-start-radius: 50%;\n    border-start-end-radius: 50%;\n  }\n  .rounded-top-pill {\n    border-start-start-radius: var(--border-radius-pill);\n    border-start-end-radius: var(--border-radius-pill);\n  }\n  .rounded-end {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-end-0 {\n    border-end-end-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-end-1 {\n    border-end-end-radius: var(--border-radius-sm);\n    border-end-start-radius: var(--border-radius-sm);\n  }\n  .rounded-end-2 {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-end-3 {\n    border-end-end-radius: var(--border-radius-lg);\n    border-end-start-radius: var(--border-radius-lg);\n  }\n  .rounded-end-4 {\n    border-end-end-radius: var(--border-radius-xl);\n    border-end-start-radius: var(--border-radius-xl);\n  }\n  .rounded-end-5 {\n    border-end-end-radius: var(--border-radius-2xl);\n    border-end-start-radius: var(--border-radius-2xl);\n  }\n  .rounded-end-circle {\n    border-end-end-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-end-pill {\n    border-end-end-radius: var(--border-radius-pill);\n    border-end-start-radius: var(--border-radius-pill);\n  }\n  .rounded-bottom {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-bottom-0 {\n    border-end-end-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-bottom-1 {\n    border-end-end-radius: var(--border-radius-sm);\n    border-end-start-radius: var(--border-radius-sm);\n  }\n  .rounded-bottom-2 {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-bottom-3 {\n    border-end-end-radius: var(--border-radius-lg);\n    border-end-start-radius: var(--border-radius-lg);\n  }\n  .rounded-bottom-4 {\n    border-end-end-radius: var(--border-radius-xl);\n    border-end-start-radius: var(--border-radius-xl);\n  }\n  .rounded-bottom-5 {\n    border-end-end-radius: var(--border-radius-2xl);\n    border-end-start-radius: var(--border-radius-2xl);\n  }\n  .rounded-bottom-circle {\n    border-end-end-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-bottom-pill {\n    border-end-end-radius: var(--border-radius-pill);\n    border-end-start-radius: var(--border-radius-pill);\n  }\n  .rounded-start {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-start-0 {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .rounded-start-1 {\n    border-start-start-radius: var(--border-radius-sm);\n    border-start-end-radius: var(--border-radius-sm);\n  }\n  .rounded-start-2 {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-start-3 {\n    border-start-start-radius: var(--border-radius-lg);\n    border-start-end-radius: var(--border-radius-lg);\n  }\n  .rounded-start-4 {\n    border-start-start-radius: var(--border-radius-xl);\n    border-start-end-radius: var(--border-radius-xl);\n  }\n  .rounded-start-5 {\n    border-start-start-radius: var(--border-radius-2xl);\n    border-start-end-radius: var(--border-radius-2xl);\n  }\n  .rounded-start-circle {\n    border-start-start-radius: 50%;\n    border-start-end-radius: 50%;\n  }\n  .rounded-start-pill {\n    border-start-start-radius: var(--border-radius-pill);\n    border-start-end-radius: var(--border-radius-pill);\n  }\n  .visible {\n    visibility: visible;\n  }\n  .invisible {\n    visibility: hidden;\n  }\n  .z-n1 {\n    z-index: -1;\n  }\n  .z-0 {\n    z-index: 0;\n  }\n  .z-1 {\n    z-index: 1;\n  }\n  .z-2 {\n    z-index: 2;\n  }\n  .z-3 {\n    z-index: 3;\n  }\n  @media (width >= 576px) {\n    .float-sm-start {\n      float: inline-start;\n    }\n    .float-sm-end {\n      float: inline-end;\n    }\n    .float-sm-none {\n      float: none;\n    }\n    .object-fit-sm-contain {\n      object-fit: contain;\n    }\n    .object-fit-sm-cover {\n      object-fit: cover;\n    }\n    .object-fit-sm-fill {\n      object-fit: fill;\n    }\n    .object-fit-sm-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-sm-none {\n      object-fit: none;\n    }\n    .d-sm-inline {\n      display: inline;\n    }\n    .d-sm-inline-block {\n      display: inline-block;\n    }\n    .d-sm-block {\n      display: block;\n    }\n    .d-sm-grid {\n      display: grid;\n    }\n    .d-sm-inline-grid {\n      display: inline-grid;\n    }\n    .d-sm-table {\n      display: table;\n    }\n    .d-sm-table-row {\n      display: table-row;\n    }\n    .d-sm-table-cell {\n      display: table-cell;\n    }\n    .d-sm-flex {\n      display: flex;\n    }\n    .d-sm-inline-flex {\n      display: inline-flex;\n    }\n    .d-sm-contents {\n      display: contents;\n    }\n    .d-sm-flow-root {\n      display: flow-root;\n    }\n    .d-sm-none {\n      display: none;\n    }\n    .flex-sm-fill {\n      flex: 1 1 auto;\n    }\n    .flex-sm-row {\n      flex-direction: row;\n    }\n    .flex-sm-column {\n      flex-direction: column;\n    }\n    .flex-sm-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-sm-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-sm-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-sm-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-sm-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-sm-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-sm-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-sm-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-sm-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-sm-start {\n      justify-content: flex-start;\n    }\n    .justify-content-sm-end {\n      justify-content: flex-end;\n    }\n    .justify-content-sm-center {\n      justify-content: center;\n    }\n    .justify-content-sm-between {\n      justify-content: space-between;\n    }\n    .justify-content-sm-around {\n      justify-content: space-around;\n    }\n    .justify-content-sm-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-sm-start {\n      justify-items: start;\n    }\n    .justify-items-sm-end {\n      justify-items: end;\n    }\n    .justify-items-sm-center {\n      justify-items: center;\n    }\n    .justify-items-sm-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-sm-start {\n      justify-self: flex-start;\n    }\n    .justify-self-sm-end {\n      justify-self: flex-end;\n    }\n    .justify-self-sm-center {\n      justify-self: center;\n    }\n    .align-items-sm-start {\n      align-items: flex-start;\n    }\n    .align-items-sm-end {\n      align-items: flex-end;\n    }\n    .align-items-sm-center {\n      align-items: center;\n    }\n    .align-items-sm-baseline {\n      align-items: baseline;\n    }\n    .align-items-sm-stretch {\n      align-items: stretch;\n    }\n    .align-content-sm-start {\n      align-content: flex-start;\n    }\n    .align-content-sm-end {\n      align-content: flex-end;\n    }\n    .align-content-sm-center {\n      align-content: center;\n    }\n    .align-content-sm-between {\n      align-content: space-between;\n    }\n    .align-content-sm-around {\n      align-content: space-around;\n    }\n    .align-content-sm-stretch {\n      align-content: stretch;\n    }\n    .align-self-sm-auto {\n      align-self: auto;\n    }\n    .align-self-sm-start {\n      align-self: flex-start;\n    }\n    .align-self-sm-end {\n      align-self: flex-end;\n    }\n    .align-self-sm-center {\n      align-self: center;\n    }\n    .align-self-sm-baseline {\n      align-self: baseline;\n    }\n    .align-self-sm-stretch {\n      align-self: stretch;\n    }\n    .place-items-sm-start {\n      place-items: start;\n    }\n    .place-items-sm-end {\n      place-items: end;\n    }\n    .place-items-sm-center {\n      place-items: center;\n    }\n    .place-items-sm-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-sm-3 {\n      --columns: 3;\n    }\n    .grid-cols-sm-4 {\n      --columns: 4;\n    }\n    .grid-cols-sm-6 {\n      --columns: 6;\n    }\n    .grid-cols-sm-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-sm-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-sm-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-sm-dense {\n      grid-auto-flow: dense;\n    }\n    .order-sm-first {\n      order: -1;\n    }\n    .order-sm-0 {\n      order: 0;\n    }\n    .order-sm-1 {\n      order: 1;\n    }\n    .order-sm-2 {\n      order: 2;\n    }\n    .order-sm-3 {\n      order: 3;\n    }\n    .order-sm-4 {\n      order: 4;\n    }\n    .order-sm-5 {\n      order: 5;\n    }\n    .order-sm-last {\n      order: 6;\n    }\n    .m-sm--2 {\n      margin: -0.5rem;\n    }\n    .m-sm--1 {\n      margin: -0.25rem;\n    }\n    .m-sm-0 {\n      margin: 0;\n    }\n    .m-sm-1 {\n      margin: 0.25rem;\n    }\n    .m-sm-2 {\n      margin: 0.5rem;\n    }\n    .m-sm-3 {\n      margin: 1rem;\n    }\n    .m-sm-4 {\n      margin: 1.5rem;\n    }\n    .m-sm-5 {\n      margin: 3rem;\n    }\n    .m-sm-auto {\n      margin: auto;\n    }\n    .mx-sm--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-sm--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-sm-0 {\n      margin-inline: 0;\n    }\n    .mx-sm-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-sm-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-sm-3 {\n      margin-inline: 1rem;\n    }\n    .mx-sm-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-sm-5 {\n      margin-inline: 3rem;\n    }\n    .mx-sm-auto {\n      margin-inline: auto;\n    }\n    .my-sm--2 {\n      margin-block: -0.5rem;\n    }\n    .my-sm--1 {\n      margin-block: -0.25rem;\n    }\n    .my-sm-0 {\n      margin-block: 0;\n    }\n    .my-sm-1 {\n      margin-block: 0.25rem;\n    }\n    .my-sm-2 {\n      margin-block: 0.5rem;\n    }\n    .my-sm-3 {\n      margin-block: 1rem;\n    }\n    .my-sm-4 {\n      margin-block: 1.5rem;\n    }\n    .my-sm-5 {\n      margin-block: 3rem;\n    }\n    .my-sm-auto {\n      margin-block: auto;\n    }\n    .mt-sm--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-sm--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-sm-0 {\n      margin-block-start: 0;\n    }\n    .mt-sm-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-sm-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-sm-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-sm-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-sm-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-sm-auto {\n      margin-block-start: auto;\n    }\n    .me-sm--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-sm--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-sm-0 {\n      margin-inline-end: 0;\n    }\n    .me-sm-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-sm-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-sm-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-sm-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-sm-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-sm-auto {\n      margin-inline-end: auto;\n    }\n    .mb-sm--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-sm--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-sm-0 {\n      margin-block-end: 0;\n    }\n    .mb-sm-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-sm-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-sm-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-sm-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-sm-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-sm-auto {\n      margin-block-end: auto;\n    }\n    .ms-sm--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-sm--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-sm-0 {\n      margin-inline-start: 0;\n    }\n    .ms-sm-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-sm-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-sm-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-sm-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-sm-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-sm-auto {\n      margin-inline-start: auto;\n    }\n    .p-sm--2 {\n      padding: -0.5rem;\n    }\n    .p-sm--1 {\n      padding: -0.25rem;\n    }\n    .p-sm-0 {\n      padding: 0;\n    }\n    .p-sm-1 {\n      padding: 0.25rem;\n    }\n    .p-sm-2 {\n      padding: 0.5rem;\n    }\n    .p-sm-3 {\n      padding: 1rem;\n    }\n    .p-sm-4 {\n      padding: 1.5rem;\n    }\n    .p-sm-5 {\n      padding: 3rem;\n    }\n    .px-sm--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-sm--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-sm-0 {\n      padding-inline: 0;\n    }\n    .px-sm-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-sm-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-sm-3 {\n      padding-inline: 1rem;\n    }\n    .px-sm-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-sm-5 {\n      padding-inline: 3rem;\n    }\n    .py-sm--2 {\n      padding-block: -0.5rem;\n    }\n    .py-sm--1 {\n      padding-block: -0.25rem;\n    }\n    .py-sm-0 {\n      padding-block: 0;\n    }\n    .py-sm-1 {\n      padding-block: 0.25rem;\n    }\n    .py-sm-2 {\n      padding-block: 0.5rem;\n    }\n    .py-sm-3 {\n      padding-block: 1rem;\n    }\n    .py-sm-4 {\n      padding-block: 1.5rem;\n    }\n    .py-sm-5 {\n      padding-block: 3rem;\n    }\n    .pt-sm--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-sm--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-sm-0 {\n      padding-block-start: 0;\n    }\n    .pt-sm-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-sm-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-sm-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-sm-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-sm-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-sm--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-sm--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-sm-0 {\n      padding-inline-end: 0;\n    }\n    .pe-sm-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-sm-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-sm-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-sm-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-sm-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-sm--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-sm--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-sm-0 {\n      padding-block-end: 0;\n    }\n    .pb-sm-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-sm-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-sm-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-sm-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-sm-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-sm--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-sm--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-sm-0 {\n      padding-inline-start: 0;\n    }\n    .ps-sm-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-sm-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-sm-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-sm-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-sm-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-sm--2 {\n      gap: -0.5rem;\n    }\n    .gap-sm--1 {\n      gap: -0.25rem;\n    }\n    .gap-sm-0 {\n      gap: 0;\n    }\n    .gap-sm-1 {\n      gap: 0.25rem;\n    }\n    .gap-sm-2 {\n      gap: 0.5rem;\n    }\n    .gap-sm-3 {\n      gap: 1rem;\n    }\n    .gap-sm-4 {\n      gap: 1.5rem;\n    }\n    .gap-sm-5 {\n      gap: 3rem;\n    }\n    .row-gap-sm--2 {\n      row-gap: -0.5rem;\n    }\n    .row-gap-sm--1 {\n      row-gap: -0.25rem;\n    }\n    .row-gap-sm-0 {\n      row-gap: 0;\n    }\n    .row-gap-sm-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-sm-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-sm-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-sm-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-sm-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-sm--2 {\n      column-gap: -0.5rem;\n    }\n    .column-gap-sm--1 {\n      column-gap: -0.25rem;\n    }\n    .column-gap-sm-0 {\n      column-gap: 0;\n    }\n    .column-gap-sm-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-sm-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-sm-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-sm-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-sm-5 {\n      column-gap: 3rem;\n    }\n    .text-sm-start {\n      text-align: start;\n    }\n    .text-sm-end {\n      text-align: end;\n    }\n    .text-sm-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 768px) {\n    .float-md-start {\n      float: inline-start;\n    }\n    .float-md-end {\n      float: inline-end;\n    }\n    .float-md-none {\n      float: none;\n    }\n    .object-fit-md-contain {\n      object-fit: contain;\n    }\n    .object-fit-md-cover {\n      object-fit: cover;\n    }\n    .object-fit-md-fill {\n      object-fit: fill;\n    }\n    .object-fit-md-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-md-none {\n      object-fit: none;\n    }\n    .d-md-inline {\n      display: inline;\n    }\n    .d-md-inline-block {\n      display: inline-block;\n    }\n    .d-md-block {\n      display: block;\n    }\n    .d-md-grid {\n      display: grid;\n    }\n    .d-md-inline-grid {\n      display: inline-grid;\n    }\n    .d-md-table {\n      display: table;\n    }\n    .d-md-table-row {\n      display: table-row;\n    }\n    .d-md-table-cell {\n      display: table-cell;\n    }\n    .d-md-flex {\n      display: flex;\n    }\n    .d-md-inline-flex {\n      display: inline-flex;\n    }\n    .d-md-contents {\n      display: contents;\n    }\n    .d-md-flow-root {\n      display: flow-root;\n    }\n    .d-md-none {\n      display: none;\n    }\n    .flex-md-fill {\n      flex: 1 1 auto;\n    }\n    .flex-md-row {\n      flex-direction: row;\n    }\n    .flex-md-column {\n      flex-direction: column;\n    }\n    .flex-md-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-md-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-md-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-md-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-md-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-md-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-md-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-md-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-md-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-md-start {\n      justify-content: flex-start;\n    }\n    .justify-content-md-end {\n      justify-content: flex-end;\n    }\n    .justify-content-md-center {\n      justify-content: center;\n    }\n    .justify-content-md-between {\n      justify-content: space-between;\n    }\n    .justify-content-md-around {\n      justify-content: space-around;\n    }\n    .justify-content-md-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-md-start {\n      justify-items: start;\n    }\n    .justify-items-md-end {\n      justify-items: end;\n    }\n    .justify-items-md-center {\n      justify-items: center;\n    }\n    .justify-items-md-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-md-start {\n      justify-self: flex-start;\n    }\n    .justify-self-md-end {\n      justify-self: flex-end;\n    }\n    .justify-self-md-center {\n      justify-self: center;\n    }\n    .align-items-md-start {\n      align-items: flex-start;\n    }\n    .align-items-md-end {\n      align-items: flex-end;\n    }\n    .align-items-md-center {\n      align-items: center;\n    }\n    .align-items-md-baseline {\n      align-items: baseline;\n    }\n    .align-items-md-stretch {\n      align-items: stretch;\n    }\n    .align-content-md-start {\n      align-content: flex-start;\n    }\n    .align-content-md-end {\n      align-content: flex-end;\n    }\n    .align-content-md-center {\n      align-content: center;\n    }\n    .align-content-md-between {\n      align-content: space-between;\n    }\n    .align-content-md-around {\n      align-content: space-around;\n    }\n    .align-content-md-stretch {\n      align-content: stretch;\n    }\n    .align-self-md-auto {\n      align-self: auto;\n    }\n    .align-self-md-start {\n      align-self: flex-start;\n    }\n    .align-self-md-end {\n      align-self: flex-end;\n    }\n    .align-self-md-center {\n      align-self: center;\n    }\n    .align-self-md-baseline {\n      align-self: baseline;\n    }\n    .align-self-md-stretch {\n      align-self: stretch;\n    }\n    .place-items-md-start {\n      place-items: start;\n    }\n    .place-items-md-end {\n      place-items: end;\n    }\n    .place-items-md-center {\n      place-items: center;\n    }\n    .place-items-md-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-md-3 {\n      --columns: 3;\n    }\n    .grid-cols-md-4 {\n      --columns: 4;\n    }\n    .grid-cols-md-6 {\n      --columns: 6;\n    }\n    .grid-cols-md-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-md-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-md-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-md-dense {\n      grid-auto-flow: dense;\n    }\n    .order-md-first {\n      order: -1;\n    }\n    .order-md-0 {\n      order: 0;\n    }\n    .order-md-1 {\n      order: 1;\n    }\n    .order-md-2 {\n      order: 2;\n    }\n    .order-md-3 {\n      order: 3;\n    }\n    .order-md-4 {\n      order: 4;\n    }\n    .order-md-5 {\n      order: 5;\n    }\n    .order-md-last {\n      order: 6;\n    }\n    .m-md--2 {\n      margin: -0.5rem;\n    }\n    .m-md--1 {\n      margin: -0.25rem;\n    }\n    .m-md-0 {\n      margin: 0;\n    }\n    .m-md-1 {\n      margin: 0.25rem;\n    }\n    .m-md-2 {\n      margin: 0.5rem;\n    }\n    .m-md-3 {\n      margin: 1rem;\n    }\n    .m-md-4 {\n      margin: 1.5rem;\n    }\n    .m-md-5 {\n      margin: 3rem;\n    }\n    .m-md-auto {\n      margin: auto;\n    }\n    .mx-md--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-md--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-md-0 {\n      margin-inline: 0;\n    }\n    .mx-md-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-md-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-md-3 {\n      margin-inline: 1rem;\n    }\n    .mx-md-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-md-5 {\n      margin-inline: 3rem;\n    }\n    .mx-md-auto {\n      margin-inline: auto;\n    }\n    .my-md--2 {\n      margin-block: -0.5rem;\n    }\n    .my-md--1 {\n      margin-block: -0.25rem;\n    }\n    .my-md-0 {\n      margin-block: 0;\n    }\n    .my-md-1 {\n      margin-block: 0.25rem;\n    }\n    .my-md-2 {\n      margin-block: 0.5rem;\n    }\n    .my-md-3 {\n      margin-block: 1rem;\n    }\n    .my-md-4 {\n      margin-block: 1.5rem;\n    }\n    .my-md-5 {\n      margin-block: 3rem;\n    }\n    .my-md-auto {\n      margin-block: auto;\n    }\n    .mt-md--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-md--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-md-0 {\n      margin-block-start: 0;\n    }\n    .mt-md-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-md-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-md-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-md-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-md-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-md-auto {\n      margin-block-start: auto;\n    }\n    .me-md--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-md--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-md-0 {\n      margin-inline-end: 0;\n    }\n    .me-md-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-md-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-md-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-md-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-md-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-md-auto {\n      margin-inline-end: auto;\n    }\n    .mb-md--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-md--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-md-0 {\n      margin-block-end: 0;\n    }\n    .mb-md-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-md-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-md-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-md-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-md-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-md-auto {\n      margin-block-end: auto;\n    }\n    .ms-md--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-md--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-md-0 {\n      margin-inline-start: 0;\n    }\n    .ms-md-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-md-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-md-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-md-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-md-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-md-auto {\n      margin-inline-start: auto;\n    }\n    .p-md--2 {\n      padding: -0.5rem;\n    }\n    .p-md--1 {\n      padding: -0.25rem;\n    }\n    .p-md-0 {\n      padding: 0;\n    }\n    .p-md-1 {\n      padding: 0.25rem;\n    }\n    .p-md-2 {\n      padding: 0.5rem;\n    }\n    .p-md-3 {\n      padding: 1rem;\n    }\n    .p-md-4 {\n      padding: 1.5rem;\n    }\n    .p-md-5 {\n      padding: 3rem;\n    }\n    .px-md--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-md--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-md-0 {\n      padding-inline: 0;\n    }\n    .px-md-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-md-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-md-3 {\n      padding-inline: 1rem;\n    }\n    .px-md-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-md-5 {\n      padding-inline: 3rem;\n    }\n    .py-md--2 {\n      padding-block: -0.5rem;\n    }\n    .py-md--1 {\n      padding-block: -0.25rem;\n    }\n    .py-md-0 {\n      padding-block: 0;\n    }\n    .py-md-1 {\n      padding-block: 0.25rem;\n    }\n    .py-md-2 {\n      padding-block: 0.5rem;\n    }\n    .py-md-3 {\n      padding-block: 1rem;\n    }\n    .py-md-4 {\n      padding-block: 1.5rem;\n    }\n    .py-md-5 {\n      padding-block: 3rem;\n    }\n    .pt-md--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-md--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-md-0 {\n      padding-block-start: 0;\n    }\n    .pt-md-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-md-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-md-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-md-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-md-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-md--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-md--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-md-0 {\n      padding-inline-end: 0;\n    }\n    .pe-md-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-md-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-md-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-md-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-md-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-md--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-md--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-md-0 {\n      padding-block-end: 0;\n    }\n    .pb-md-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-md-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-md-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-md-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-md-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-md--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-md--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-md-0 {\n      padding-inline-start: 0;\n    }\n    .ps-md-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-md-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-md-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-md-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-md-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-md--2 {\n      gap: -0.5rem;\n    }\n    .gap-md--1 {\n      gap: -0.25rem;\n    }\n    .gap-md-0 {\n      gap: 0;\n    }\n    .gap-md-1 {\n      gap: 0.25rem;\n    }\n    .gap-md-2 {\n      gap: 0.5rem;\n    }\n    .gap-md-3 {\n      gap: 1rem;\n    }\n    .gap-md-4 {\n      gap: 1.5rem;\n    }\n    .gap-md-5 {\n      gap: 3rem;\n    }\n    .row-gap-md--2 {\n      row-gap: -0.5rem;\n    }\n    .row-gap-md--1 {\n      row-gap: -0.25rem;\n    }\n    .row-gap-md-0 {\n      row-gap: 0;\n    }\n    .row-gap-md-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-md-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-md-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-md-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-md-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-md--2 {\n      column-gap: -0.5rem;\n    }\n    .column-gap-md--1 {\n      column-gap: -0.25rem;\n    }\n    .column-gap-md-0 {\n      column-gap: 0;\n    }\n    .column-gap-md-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-md-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-md-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-md-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-md-5 {\n      column-gap: 3rem;\n    }\n    .text-md-start {\n      text-align: start;\n    }\n    .text-md-end {\n      text-align: end;\n    }\n    .text-md-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1024px) {\n    .float-lg-start {\n      float: inline-start;\n    }\n    .float-lg-end {\n      float: inline-end;\n    }\n    .float-lg-none {\n      float: none;\n    }\n    .object-fit-lg-contain {\n      object-fit: contain;\n    }\n    .object-fit-lg-cover {\n      object-fit: cover;\n    }\n    .object-fit-lg-fill {\n      object-fit: fill;\n    }\n    .object-fit-lg-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-lg-none {\n      object-fit: none;\n    }\n    .d-lg-inline {\n      display: inline;\n    }\n    .d-lg-inline-block {\n      display: inline-block;\n    }\n    .d-lg-block {\n      display: block;\n    }\n    .d-lg-grid {\n      display: grid;\n    }\n    .d-lg-inline-grid {\n      display: inline-grid;\n    }\n    .d-lg-table {\n      display: table;\n    }\n    .d-lg-table-row {\n      display: table-row;\n    }\n    .d-lg-table-cell {\n      display: table-cell;\n    }\n    .d-lg-flex {\n      display: flex;\n    }\n    .d-lg-inline-flex {\n      display: inline-flex;\n    }\n    .d-lg-contents {\n      display: contents;\n    }\n    .d-lg-flow-root {\n      display: flow-root;\n    }\n    .d-lg-none {\n      display: none;\n    }\n    .flex-lg-fill {\n      flex: 1 1 auto;\n    }\n    .flex-lg-row {\n      flex-direction: row;\n    }\n    .flex-lg-column {\n      flex-direction: column;\n    }\n    .flex-lg-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-lg-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-lg-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-lg-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-lg-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-lg-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-lg-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-lg-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-lg-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-lg-start {\n      justify-content: flex-start;\n    }\n    .justify-content-lg-end {\n      justify-content: flex-end;\n    }\n    .justify-content-lg-center {\n      justify-content: center;\n    }\n    .justify-content-lg-between {\n      justify-content: space-between;\n    }\n    .justify-content-lg-around {\n      justify-content: space-around;\n    }\n    .justify-content-lg-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-lg-start {\n      justify-items: start;\n    }\n    .justify-items-lg-end {\n      justify-items: end;\n    }\n    .justify-items-lg-center {\n      justify-items: center;\n    }\n    .justify-items-lg-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-lg-start {\n      justify-self: flex-start;\n    }\n    .justify-self-lg-end {\n      justify-self: flex-end;\n    }\n    .justify-self-lg-center {\n      justify-self: center;\n    }\n    .align-items-lg-start {\n      align-items: flex-start;\n    }\n    .align-items-lg-end {\n      align-items: flex-end;\n    }\n    .align-items-lg-center {\n      align-items: center;\n    }\n    .align-items-lg-baseline {\n      align-items: baseline;\n    }\n    .align-items-lg-stretch {\n      align-items: stretch;\n    }\n    .align-content-lg-start {\n      align-content: flex-start;\n    }\n    .align-content-lg-end {\n      align-content: flex-end;\n    }\n    .align-content-lg-center {\n      align-content: center;\n    }\n    .align-content-lg-between {\n      align-content: space-between;\n    }\n    .align-content-lg-around {\n      align-content: space-around;\n    }\n    .align-content-lg-stretch {\n      align-content: stretch;\n    }\n    .align-self-lg-auto {\n      align-self: auto;\n    }\n    .align-self-lg-start {\n      align-self: flex-start;\n    }\n    .align-self-lg-end {\n      align-self: flex-end;\n    }\n    .align-self-lg-center {\n      align-self: center;\n    }\n    .align-self-lg-baseline {\n      align-self: baseline;\n    }\n    .align-self-lg-stretch {\n      align-self: stretch;\n    }\n    .place-items-lg-start {\n      place-items: start;\n    }\n    .place-items-lg-end {\n      place-items: end;\n    }\n    .place-items-lg-center {\n      place-items: center;\n    }\n    .place-items-lg-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-lg-3 {\n      --columns: 3;\n    }\n    .grid-cols-lg-4 {\n      --columns: 4;\n    }\n    .grid-cols-lg-6 {\n      --columns: 6;\n    }\n    .grid-cols-lg-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-lg-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-lg-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-lg-dense {\n      grid-auto-flow: dense;\n    }\n    .order-lg-first {\n      order: -1;\n    }\n    .order-lg-0 {\n      order: 0;\n    }\n    .order-lg-1 {\n      order: 1;\n    }\n    .order-lg-2 {\n      order: 2;\n    }\n    .order-lg-3 {\n      order: 3;\n    }\n    .order-lg-4 {\n      order: 4;\n    }\n    .order-lg-5 {\n      order: 5;\n    }\n    .order-lg-last {\n      order: 6;\n    }\n    .m-lg--2 {\n      margin: -0.5rem;\n    }\n    .m-lg--1 {\n      margin: -0.25rem;\n    }\n    .m-lg-0 {\n      margin: 0;\n    }\n    .m-lg-1 {\n      margin: 0.25rem;\n    }\n    .m-lg-2 {\n      margin: 0.5rem;\n    }\n    .m-lg-3 {\n      margin: 1rem;\n    }\n    .m-lg-4 {\n      margin: 1.5rem;\n    }\n    .m-lg-5 {\n      margin: 3rem;\n    }\n    .m-lg-auto {\n      margin: auto;\n    }\n    .mx-lg--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-lg--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-lg-0 {\n      margin-inline: 0;\n    }\n    .mx-lg-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-lg-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-lg-3 {\n      margin-inline: 1rem;\n    }\n    .mx-lg-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-lg-5 {\n      margin-inline: 3rem;\n    }\n    .mx-lg-auto {\n      margin-inline: auto;\n    }\n    .my-lg--2 {\n      margin-block: -0.5rem;\n    }\n    .my-lg--1 {\n      margin-block: -0.25rem;\n    }\n    .my-lg-0 {\n      margin-block: 0;\n    }\n    .my-lg-1 {\n      margin-block: 0.25rem;\n    }\n    .my-lg-2 {\n      margin-block: 0.5rem;\n    }\n    .my-lg-3 {\n      margin-block: 1rem;\n    }\n    .my-lg-4 {\n      margin-block: 1.5rem;\n    }\n    .my-lg-5 {\n      margin-block: 3rem;\n    }\n    .my-lg-auto {\n      margin-block: auto;\n    }\n    .mt-lg--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-lg--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-lg-0 {\n      margin-block-start: 0;\n    }\n    .mt-lg-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-lg-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-lg-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-lg-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-lg-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-lg-auto {\n      margin-block-start: auto;\n    }\n    .me-lg--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-lg--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-lg-0 {\n      margin-inline-end: 0;\n    }\n    .me-lg-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-lg-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-lg-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-lg-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-lg-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-lg-auto {\n      margin-inline-end: auto;\n    }\n    .mb-lg--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-lg--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-lg-0 {\n      margin-block-end: 0;\n    }\n    .mb-lg-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-lg-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-lg-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-lg-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-lg-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-lg-auto {\n      margin-block-end: auto;\n    }\n    .ms-lg--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-lg--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-lg-0 {\n      margin-inline-start: 0;\n    }\n    .ms-lg-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-lg-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-lg-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-lg-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-lg-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-lg-auto {\n      margin-inline-start: auto;\n    }\n    .p-lg--2 {\n      padding: -0.5rem;\n    }\n    .p-lg--1 {\n      padding: -0.25rem;\n    }\n    .p-lg-0 {\n      padding: 0;\n    }\n    .p-lg-1 {\n      padding: 0.25rem;\n    }\n    .p-lg-2 {\n      padding: 0.5rem;\n    }\n    .p-lg-3 {\n      padding: 1rem;\n    }\n    .p-lg-4 {\n      padding: 1.5rem;\n    }\n    .p-lg-5 {\n      padding: 3rem;\n    }\n    .px-lg--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-lg--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-lg-0 {\n      padding-inline: 0;\n    }\n    .px-lg-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-lg-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-lg-3 {\n      padding-inline: 1rem;\n    }\n    .px-lg-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-lg-5 {\n      padding-inline: 3rem;\n    }\n    .py-lg--2 {\n      padding-block: -0.5rem;\n    }\n    .py-lg--1 {\n      padding-block: -0.25rem;\n    }\n    .py-lg-0 {\n      padding-block: 0;\n    }\n    .py-lg-1 {\n      padding-block: 0.25rem;\n    }\n    .py-lg-2 {\n      padding-block: 0.5rem;\n    }\n    .py-lg-3 {\n      padding-block: 1rem;\n    }\n    .py-lg-4 {\n      padding-block: 1.5rem;\n    }\n    .py-lg-5 {\n      padding-block: 3rem;\n    }\n    .pt-lg--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-lg--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-lg-0 {\n      padding-block-start: 0;\n    }\n    .pt-lg-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-lg-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-lg-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-lg-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-lg-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-lg--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-lg--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-lg-0 {\n      padding-inline-end: 0;\n    }\n    .pe-lg-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-lg-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-lg-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-lg-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-lg-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-lg--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-lg--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-lg-0 {\n      padding-block-end: 0;\n    }\n    .pb-lg-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-lg-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-lg-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-lg-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-lg-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-lg--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-lg--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-lg-0 {\n      padding-inline-start: 0;\n    }\n    .ps-lg-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-lg-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-lg-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-lg-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-lg-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-lg--2 {\n      gap: -0.5rem;\n    }\n    .gap-lg--1 {\n      gap: -0.25rem;\n    }\n    .gap-lg-0 {\n      gap: 0;\n    }\n    .gap-lg-1 {\n      gap: 0.25rem;\n    }\n    .gap-lg-2 {\n      gap: 0.5rem;\n    }\n    .gap-lg-3 {\n      gap: 1rem;\n    }\n    .gap-lg-4 {\n      gap: 1.5rem;\n    }\n    .gap-lg-5 {\n      gap: 3rem;\n    }\n    .row-gap-lg--2 {\n      row-gap: -0.5rem;\n    }\n    .row-gap-lg--1 {\n      row-gap: -0.25rem;\n    }\n    .row-gap-lg-0 {\n      row-gap: 0;\n    }\n    .row-gap-lg-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-lg-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-lg-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-lg-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-lg-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-lg--2 {\n      column-gap: -0.5rem;\n    }\n    .column-gap-lg--1 {\n      column-gap: -0.25rem;\n    }\n    .column-gap-lg-0 {\n      column-gap: 0;\n    }\n    .column-gap-lg-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-lg-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-lg-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-lg-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-lg-5 {\n      column-gap: 3rem;\n    }\n    .text-lg-start {\n      text-align: start;\n    }\n    .text-lg-end {\n      text-align: end;\n    }\n    .text-lg-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1280px) {\n    .float-xl-start {\n      float: inline-start;\n    }\n    .float-xl-end {\n      float: inline-end;\n    }\n    .float-xl-none {\n      float: none;\n    }\n    .object-fit-xl-contain {\n      object-fit: contain;\n    }\n    .object-fit-xl-cover {\n      object-fit: cover;\n    }\n    .object-fit-xl-fill {\n      object-fit: fill;\n    }\n    .object-fit-xl-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-xl-none {\n      object-fit: none;\n    }\n    .d-xl-inline {\n      display: inline;\n    }\n    .d-xl-inline-block {\n      display: inline-block;\n    }\n    .d-xl-block {\n      display: block;\n    }\n    .d-xl-grid {\n      display: grid;\n    }\n    .d-xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-xl-table {\n      display: table;\n    }\n    .d-xl-table-row {\n      display: table-row;\n    }\n    .d-xl-table-cell {\n      display: table-cell;\n    }\n    .d-xl-flex {\n      display: flex;\n    }\n    .d-xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-xl-contents {\n      display: contents;\n    }\n    .d-xl-flow-root {\n      display: flow-root;\n    }\n    .d-xl-none {\n      display: none;\n    }\n    .flex-xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-xl-row {\n      flex-direction: row;\n    }\n    .flex-xl-column {\n      flex-direction: column;\n    }\n    .flex-xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-xl-center {\n      justify-content: center;\n    }\n    .justify-content-xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-xl-start {\n      justify-items: start;\n    }\n    .justify-items-xl-end {\n      justify-items: end;\n    }\n    .justify-items-xl-center {\n      justify-items: center;\n    }\n    .justify-items-xl-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-xl-start {\n      justify-self: flex-start;\n    }\n    .justify-self-xl-end {\n      justify-self: flex-end;\n    }\n    .justify-self-xl-center {\n      justify-self: center;\n    }\n    .align-items-xl-start {\n      align-items: flex-start;\n    }\n    .align-items-xl-end {\n      align-items: flex-end;\n    }\n    .align-items-xl-center {\n      align-items: center;\n    }\n    .align-items-xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-xl-start {\n      align-content: flex-start;\n    }\n    .align-content-xl-end {\n      align-content: flex-end;\n    }\n    .align-content-xl-center {\n      align-content: center;\n    }\n    .align-content-xl-between {\n      align-content: space-between;\n    }\n    .align-content-xl-around {\n      align-content: space-around;\n    }\n    .align-content-xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-xl-auto {\n      align-self: auto;\n    }\n    .align-self-xl-start {\n      align-self: flex-start;\n    }\n    .align-self-xl-end {\n      align-self: flex-end;\n    }\n    .align-self-xl-center {\n      align-self: center;\n    }\n    .align-self-xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-xl-start {\n      place-items: start;\n    }\n    .place-items-xl-end {\n      place-items: end;\n    }\n    .place-items-xl-center {\n      place-items: center;\n    }\n    .place-items-xl-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-xl-3 {\n      --columns: 3;\n    }\n    .grid-cols-xl-4 {\n      --columns: 4;\n    }\n    .grid-cols-xl-6 {\n      --columns: 6;\n    }\n    .grid-cols-xl-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-xl-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-xl-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-xl-dense {\n      grid-auto-flow: dense;\n    }\n    .order-xl-first {\n      order: -1;\n    }\n    .order-xl-0 {\n      order: 0;\n    }\n    .order-xl-1 {\n      order: 1;\n    }\n    .order-xl-2 {\n      order: 2;\n    }\n    .order-xl-3 {\n      order: 3;\n    }\n    .order-xl-4 {\n      order: 4;\n    }\n    .order-xl-5 {\n      order: 5;\n    }\n    .order-xl-last {\n      order: 6;\n    }\n    .m-xl--2 {\n      margin: -0.5rem;\n    }\n    .m-xl--1 {\n      margin: -0.25rem;\n    }\n    .m-xl-0 {\n      margin: 0;\n    }\n    .m-xl-1 {\n      margin: 0.25rem;\n    }\n    .m-xl-2 {\n      margin: 0.5rem;\n    }\n    .m-xl-3 {\n      margin: 1rem;\n    }\n    .m-xl-4 {\n      margin: 1.5rem;\n    }\n    .m-xl-5 {\n      margin: 3rem;\n    }\n    .m-xl-auto {\n      margin: auto;\n    }\n    .mx-xl--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-xl--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-xl-0 {\n      margin-inline: 0;\n    }\n    .mx-xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-xl-auto {\n      margin-inline: auto;\n    }\n    .my-xl--2 {\n      margin-block: -0.5rem;\n    }\n    .my-xl--1 {\n      margin-block: -0.25rem;\n    }\n    .my-xl-0 {\n      margin-block: 0;\n    }\n    .my-xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-xl-3 {\n      margin-block: 1rem;\n    }\n    .my-xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-xl-5 {\n      margin-block: 3rem;\n    }\n    .my-xl-auto {\n      margin-block: auto;\n    }\n    .mt-xl--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-xl--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-xl-auto {\n      margin-block-start: auto;\n    }\n    .me-xl--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-xl--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-xl--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-xl--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-xl--2 {\n      padding: -0.5rem;\n    }\n    .p-xl--1 {\n      padding: -0.25rem;\n    }\n    .p-xl-0 {\n      padding: 0;\n    }\n    .p-xl-1 {\n      padding: 0.25rem;\n    }\n    .p-xl-2 {\n      padding: 0.5rem;\n    }\n    .p-xl-3 {\n      padding: 1rem;\n    }\n    .p-xl-4 {\n      padding: 1.5rem;\n    }\n    .p-xl-5 {\n      padding: 3rem;\n    }\n    .px-xl--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-xl--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-xl-0 {\n      padding-inline: 0;\n    }\n    .px-xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-xl--2 {\n      padding-block: -0.5rem;\n    }\n    .py-xl--1 {\n      padding-block: -0.25rem;\n    }\n    .py-xl-0 {\n      padding-block: 0;\n    }\n    .py-xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-xl-3 {\n      padding-block: 1rem;\n    }\n    .py-xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-xl--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-xl--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-xl--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-xl--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-xl--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-xl--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-xl--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-xl--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-xl-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-xl--2 {\n      gap: -0.5rem;\n    }\n    .gap-xl--1 {\n      gap: -0.25rem;\n    }\n    .gap-xl-0 {\n      gap: 0;\n    }\n    .gap-xl-1 {\n      gap: 0.25rem;\n    }\n    .gap-xl-2 {\n      gap: 0.5rem;\n    }\n    .gap-xl-3 {\n      gap: 1rem;\n    }\n    .gap-xl-4 {\n      gap: 1.5rem;\n    }\n    .gap-xl-5 {\n      gap: 3rem;\n    }\n    .row-gap-xl--2 {\n      row-gap: -0.5rem;\n    }\n    .row-gap-xl--1 {\n      row-gap: -0.25rem;\n    }\n    .row-gap-xl-0 {\n      row-gap: 0;\n    }\n    .row-gap-xl-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-xl-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-xl-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-xl-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-xl-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-xl--2 {\n      column-gap: -0.5rem;\n    }\n    .column-gap-xl--1 {\n      column-gap: -0.25rem;\n    }\n    .column-gap-xl-0 {\n      column-gap: 0;\n    }\n    .column-gap-xl-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-xl-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-xl-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-xl-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-xl-5 {\n      column-gap: 3rem;\n    }\n    .text-xl-start {\n      text-align: start;\n    }\n    .text-xl-end {\n      text-align: end;\n    }\n    .text-xl-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1536px) {\n    .float-2xl-start {\n      float: inline-start;\n    }\n    .float-2xl-end {\n      float: inline-end;\n    }\n    .float-2xl-none {\n      float: none;\n    }\n    .object-fit-2xl-contain {\n      object-fit: contain;\n    }\n    .object-fit-2xl-cover {\n      object-fit: cover;\n    }\n    .object-fit-2xl-fill {\n      object-fit: fill;\n    }\n    .object-fit-2xl-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-2xl-none {\n      object-fit: none;\n    }\n    .d-2xl-inline {\n      display: inline;\n    }\n    .d-2xl-inline-block {\n      display: inline-block;\n    }\n    .d-2xl-block {\n      display: block;\n    }\n    .d-2xl-grid {\n      display: grid;\n    }\n    .d-2xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-2xl-table {\n      display: table;\n    }\n    .d-2xl-table-row {\n      display: table-row;\n    }\n    .d-2xl-table-cell {\n      display: table-cell;\n    }\n    .d-2xl-flex {\n      display: flex;\n    }\n    .d-2xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-2xl-contents {\n      display: contents;\n    }\n    .d-2xl-flow-root {\n      display: flow-root;\n    }\n    .d-2xl-none {\n      display: none;\n    }\n    .flex-2xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-2xl-row {\n      flex-direction: row;\n    }\n    .flex-2xl-column {\n      flex-direction: column;\n    }\n    .flex-2xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-2xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-2xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-2xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-2xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-2xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-2xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-2xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-2xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-2xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-2xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-2xl-center {\n      justify-content: center;\n    }\n    .justify-content-2xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-2xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-2xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-2xl-start {\n      justify-items: start;\n    }\n    .justify-items-2xl-end {\n      justify-items: end;\n    }\n    .justify-items-2xl-center {\n      justify-items: center;\n    }\n    .justify-items-2xl-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-2xl-start {\n      justify-self: flex-start;\n    }\n    .justify-self-2xl-end {\n      justify-self: flex-end;\n    }\n    .justify-self-2xl-center {\n      justify-self: center;\n    }\n    .align-items-2xl-start {\n      align-items: flex-start;\n    }\n    .align-items-2xl-end {\n      align-items: flex-end;\n    }\n    .align-items-2xl-center {\n      align-items: center;\n    }\n    .align-items-2xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-2xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-2xl-start {\n      align-content: flex-start;\n    }\n    .align-content-2xl-end {\n      align-content: flex-end;\n    }\n    .align-content-2xl-center {\n      align-content: center;\n    }\n    .align-content-2xl-between {\n      align-content: space-between;\n    }\n    .align-content-2xl-around {\n      align-content: space-around;\n    }\n    .align-content-2xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-2xl-auto {\n      align-self: auto;\n    }\n    .align-self-2xl-start {\n      align-self: flex-start;\n    }\n    .align-self-2xl-end {\n      align-self: flex-end;\n    }\n    .align-self-2xl-center {\n      align-self: center;\n    }\n    .align-self-2xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-2xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-2xl-start {\n      place-items: start;\n    }\n    .place-items-2xl-end {\n      place-items: end;\n    }\n    .place-items-2xl-center {\n      place-items: center;\n    }\n    .place-items-2xl-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-2xl-3 {\n      --columns: 3;\n    }\n    .grid-cols-2xl-4 {\n      --columns: 4;\n    }\n    .grid-cols-2xl-6 {\n      --columns: 6;\n    }\n    .grid-cols-2xl-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-2xl-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-2xl-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-2xl-dense {\n      grid-auto-flow: dense;\n    }\n    .order-2xl-first {\n      order: -1;\n    }\n    .order-2xl-0 {\n      order: 0;\n    }\n    .order-2xl-1 {\n      order: 1;\n    }\n    .order-2xl-2 {\n      order: 2;\n    }\n    .order-2xl-3 {\n      order: 3;\n    }\n    .order-2xl-4 {\n      order: 4;\n    }\n    .order-2xl-5 {\n      order: 5;\n    }\n    .order-2xl-last {\n      order: 6;\n    }\n    .m-2xl--2 {\n      margin: -0.5rem;\n    }\n    .m-2xl--1 {\n      margin: -0.25rem;\n    }\n    .m-2xl-0 {\n      margin: 0;\n    }\n    .m-2xl-1 {\n      margin: 0.25rem;\n    }\n    .m-2xl-2 {\n      margin: 0.5rem;\n    }\n    .m-2xl-3 {\n      margin: 1rem;\n    }\n    .m-2xl-4 {\n      margin: 1.5rem;\n    }\n    .m-2xl-5 {\n      margin: 3rem;\n    }\n    .m-2xl-auto {\n      margin: auto;\n    }\n    .mx-2xl--2 {\n      margin-inline: -0.5rem;\n    }\n    .mx-2xl--1 {\n      margin-inline: -0.25rem;\n    }\n    .mx-2xl-0 {\n      margin-inline: 0;\n    }\n    .mx-2xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-2xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-2xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-2xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-2xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-2xl-auto {\n      margin-inline: auto;\n    }\n    .my-2xl--2 {\n      margin-block: -0.5rem;\n    }\n    .my-2xl--1 {\n      margin-block: -0.25rem;\n    }\n    .my-2xl-0 {\n      margin-block: 0;\n    }\n    .my-2xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-2xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-2xl-3 {\n      margin-block: 1rem;\n    }\n    .my-2xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-2xl-5 {\n      margin-block: 3rem;\n    }\n    .my-2xl-auto {\n      margin-block: auto;\n    }\n    .mt-2xl--2 {\n      margin-block-start: -0.5rem;\n    }\n    .mt-2xl--1 {\n      margin-block-start: -0.25rem;\n    }\n    .mt-2xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-2xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-2xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-2xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-2xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-2xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-2xl-auto {\n      margin-block-start: auto;\n    }\n    .me-2xl--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .me-2xl--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .me-2xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-2xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-2xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-2xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-2xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-2xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-2xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-2xl--2 {\n      margin-block-end: -0.5rem;\n    }\n    .mb-2xl--1 {\n      margin-block-end: -0.25rem;\n    }\n    .mb-2xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-2xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-2xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-2xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-2xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-2xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-2xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-2xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-2xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-2xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-2xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-2xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-2xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-2xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-2xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-2xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-2xl--2 {\n      padding: -0.5rem;\n    }\n    .p-2xl--1 {\n      padding: -0.25rem;\n    }\n    .p-2xl-0 {\n      padding: 0;\n    }\n    .p-2xl-1 {\n      padding: 0.25rem;\n    }\n    .p-2xl-2 {\n      padding: 0.5rem;\n    }\n    .p-2xl-3 {\n      padding: 1rem;\n    }\n    .p-2xl-4 {\n      padding: 1.5rem;\n    }\n    .p-2xl-5 {\n      padding: 3rem;\n    }\n    .px-2xl--2 {\n      padding-inline: -0.5rem;\n    }\n    .px-2xl--1 {\n      padding-inline: -0.25rem;\n    }\n    .px-2xl-0 {\n      padding-inline: 0;\n    }\n    .px-2xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-2xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-2xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-2xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-2xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-2xl--2 {\n      padding-block: -0.5rem;\n    }\n    .py-2xl--1 {\n      padding-block: -0.25rem;\n    }\n    .py-2xl-0 {\n      padding-block: 0;\n    }\n    .py-2xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-2xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-2xl-3 {\n      padding-block: 1rem;\n    }\n    .py-2xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-2xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-2xl--2 {\n      padding-block-start: -0.5rem;\n    }\n    .pt-2xl--1 {\n      padding-block-start: -0.25rem;\n    }\n    .pt-2xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-2xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-2xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-2xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-2xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-2xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-2xl--2 {\n      padding-inline-end: -0.5rem;\n    }\n    .pe-2xl--1 {\n      padding-inline-end: -0.25rem;\n    }\n    .pe-2xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-2xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-2xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-2xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-2xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-2xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-2xl--2 {\n      padding-block-end: -0.5rem;\n    }\n    .pb-2xl--1 {\n      padding-block-end: -0.25rem;\n    }\n    .pb-2xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-2xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-2xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-2xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-2xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-2xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-2xl--2 {\n      padding-inline-start: -0.5rem;\n    }\n    .ps-2xl--1 {\n      padding-inline-start: -0.25rem;\n    }\n    .ps-2xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-2xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-2xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-2xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-2xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-2xl-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-2xl--2 {\n      gap: -0.5rem;\n    }\n    .gap-2xl--1 {\n      gap: -0.25rem;\n    }\n    .gap-2xl-0 {\n      gap: 0;\n    }\n    .gap-2xl-1 {\n      gap: 0.25rem;\n    }\n    .gap-2xl-2 {\n      gap: 0.5rem;\n    }\n    .gap-2xl-3 {\n      gap: 1rem;\n    }\n    .gap-2xl-4 {\n      gap: 1.5rem;\n    }\n    .gap-2xl-5 {\n      gap: 3rem;\n    }\n    .row-gap-2xl--2 {\n      row-gap: -0.5rem;\n    }\n    .row-gap-2xl--1 {\n      row-gap: -0.25rem;\n    }\n    .row-gap-2xl-0 {\n      row-gap: 0;\n    }\n    .row-gap-2xl-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-2xl-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-2xl-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-2xl-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-2xl-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-2xl--2 {\n      column-gap: -0.5rem;\n    }\n    .column-gap-2xl--1 {\n      column-gap: -0.25rem;\n    }\n    .column-gap-2xl-0 {\n      column-gap: 0;\n    }\n    .column-gap-2xl-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-2xl-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-2xl-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-2xl-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-2xl-5 {\n      column-gap: 3rem;\n    }\n    .text-2xl-start {\n      text-align: start;\n    }\n    .text-2xl-end {\n      text-align: end;\n    }\n    .text-2xl-center {\n      text-align: center;\n    }\n  }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */\n","$file: \"\" !default;\n\n/*!\n  * Bootstrap #{$file} v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n","// stylelint-disable hue-degree-notation, @stylistic/number-leading-zero\n\n@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// Easily convert colors to oklch() with https://oklch.com/\n\n$white: #fff !default;\n$black: #000 !default;\n\n// scss-docs-start colors-list\n$blue: oklch(60% 0.24 240) !default;\n$indigo: oklch(56% 0.26 288) !default;\n$violet: oklch(56% 0.24 300) !default;\n$purple: oklch(56% 0.24 320) !default;\n$pink: oklch(60% 0.22 4) !default;\n$red: oklch(60% 0.22 20) !default;\n$orange: oklch(70% 0.22 52) !default;\n$amber: oklch(79% 0.2 78) !default;\n$yellow: oklch(88% 0.24 88) !default;\n$lime: oklch(65% 0.24 135) !default;\n$green: oklch(64% 0.22 160) !default;\n$teal: oklch(68% 0.22 190) !default;\n$cyan: oklch(69% 0.22 220) !default;\n$brown: oklch(60% 0.12 54) !default;\n$gray: oklch(60% 0.02 245) !default;\n$pewter: oklch(65% 0.01 290) !default;\n// scss-docs-end colors-list\n\n// scss-docs-start colors-map\n$colors: () !default;\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$colors: defaults(\n  (\n    \"blue\": $blue,\n    \"indigo\": $indigo,\n    \"violet\": $violet,\n    \"purple\": $purple,\n    \"pink\": $pink,\n    \"red\": $red,\n    \"orange\": $orange,\n    \"amber\": $amber,\n    \"yellow\": $yellow,\n    \"lime\": $lime,\n    \"green\": $green,\n    \"teal\": $teal,\n    \"cyan\": $cyan,\n    \"brown\": $brown,\n    \"gray\": $gray,\n    \"pewter\": $pewter,\n  ),\n  $colors\n);\n// scss-docs-end colors-map\n\n// scss-docs-start color-mix-options\n$color-mix-space: lab !default;\n$tint-color: var(--white) !default;\n$shade-color: var(--black) !default;\n\n$color-tints: (\n  \"025\": 94%,\n  \"050\": 90%,\n  \"100\": 80%,\n  \"200\": 60%,\n  \"300\": 40%,\n  \"400\": 20%,\n) !default;\n\n$color-shades: (\n  \"600\": 16%,\n  \"700\": 32%,\n  \"800\": 48%,\n  \"900\": 64%,\n  \"950\": 76%,\n  \"975\": 88%,\n) !default;\n// scss-docs-end color-mix-options\n\n// scss-docs-start color-tokens\n$color-tokens: () !default;\n\n$-color-defaults: () !default;\n@each $color, $value in $colors {\n  @each $stop, $percent in $color-tints {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$tint-color} #{$percent}, #{$value}));\n  }\n  $-color-defaults: map.set($-color-defaults, --#{$color}-500, #{$value});\n  @each $stop, $percent in $color-shades {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$shade-color} #{$percent}, #{$value}));\n  }\n}\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$color-tokens: defaults($-color-defaults, $color-tokens);\n// scss-docs-end color-tokens\n\n:root {\n  @include tokens($color-tokens);\n}\n","// Mixin to output tokens as CSS custom properties\n\n// scss-docs-start mixin-tokens\n@mixin tokens($map) {\n  @each $prop, $value in $map {\n    #{$prop}: #{$value};\n  }\n}\n// scss-docs-end mixin-tokens\n","@use \"sass:map\";\n@use \"colors\" as *;\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"theme\" as *;\n@use \"mixins/tokens\" as *;\n@use \"forms/form-variables\" as *;\n\n// mdo-do: do we need theme?\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n\n$root-tokens: () !default;\n\n// scss-docs-start root-tokens\n// stylelint-disable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: defaults(\n  (\n    --black: #{$black},\n    --white: #{$white},\n\n    --gradient: #{$gradient},\n\n    // scss-docs-start root-font-size-variables\n    --font-size-base: 1rem,\n    --font-size-xs: .75rem,\n    --font-size-sm: .875rem,\n    --font-size-md: 1rem,\n    --font-size-lg: clamp(1.25rem, 1rem + .625vw, 1.5rem),\n    --font-size-xl: clamp(1.5rem, 1.1rem + .75vw, 1.75rem),\n    --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem),\n    --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem),\n    --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem),\n    --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem),\n    --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem),\n\n    --line-height-xs: 1.25,\n    --line-height-sm: 1.5,\n    --line-height-md: 1.5,\n    --line-height-lg: 1.5,\n    --line-height-xl: calc(2.5 / 1.75),\n    --line-height-2xl: calc(3 / 2.25),\n    --line-height-3xl: 1.2,\n    --line-height-4xl: 1.1,\n    --line-height-5xl: 1.1,\n    --line-height-6xl: 1,\n    // scss-docs-end root-font-size-variables\n\n    // scss-docs-start root-font-weight-variables\n    --font-weight-lighter: lighter,\n    --font-weight-light: 300,\n    --font-weight-normal: 400,\n    --font-weight-medium: 500,\n    --font-weight-semibold: 600,\n    --font-weight-bold: 700,\n    --font-weight-bolder: bolder,\n    // scss-docs-end root-font-weight-variables\n\n    // scss-docs-start root-body-variables\n    --body-font-family: system-ui,\n    --body-font-size: var(--font-size-base),\n    --body-font-weight: #{$font-weight-base},\n    --body-line-height: #{$line-height-base},\n\n    --heading-color: #{$headings-color},\n\n    --hr-border-color: var(--border-color),\n\n    --link-color: light-dark(var(--primary-base), var(--primary-text)),\n    --link-decoration: #{$link-decoration},\n    --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000),\n\n    --font-mono: \"SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace\",\n    --code-font-size: 95%,\n    --code-color: var(--fg-2),\n\n    // scss-docs-start root-border-var\n    --border-width: #{$border-width},\n    --border-style: #{$border-style},\n    --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700)),\n    --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    // scss-docs-end root-border-var\n\n    // scss-docs-start root-border-radius-var\n    --border-radius: .5rem,\n    --border-radius-xs: .375rem,\n    --border-radius-sm: .5rem,\n    --border-radius-lg: .75rem,\n    --border-radius-xl: 1rem,\n    --border-radius-2xl: 2rem,\n    --border-radius-pill: 50rem,\n    // scss-docs-end root-border-radius-var\n\n    // scss-docs-start root-box-shadow-variables\n    --box-shadow: 0 .5rem 1rem rgb(0 0 0 / 15%),\n    --box-shadow-sm: 0 .125rem .25rem rgb(0 0 0 / 7.5%),\n    --box-shadow-lg: 0 1rem 3rem rgb(0 0 0 / 17.5%),\n    --box-shadow-inset: inset 0 1px 2px rgb(0 0 0 / 7.5%),\n    // scss-docs-end root-box-shadow-variables\n\n    --spacer: 1rem,\n\n    // scss-docs-start root-focus-variables\n    --focus-ring-width: 3px,\n    --focus-ring-offset: 1px,\n    --focus-ring-color: var(--primary-focus-ring),\n    --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color),\n    // scss-docs-end root-focus-variables\n\n    // scss-docs-start root-form-variables\n    --control-checked-bg: var(--primary-base),\n    --control-checked-border-color: var(--control-checked-bg),\n    --control-active-bg: var(--primary-base),\n    --control-active-border-color: var(--control-active-bg),\n    --control-disabled-bg: var(--bg-3),\n    --control-disabled-opacity: .65,\n\n    --btn-input-fg: var(--fg-body),\n    --btn-input-bg: var(--bg-body),\n\n    --btn-input-min-height: 2.375rem,\n    --btn-input-padding-y: .375rem,\n    --btn-input-padding-x: .75rem,\n    --btn-input-font-size: var(--font-size-base),\n    --btn-input-line-height: var(--line-height-base),\n    --btn-input-border-radius: var(--border-radius),\n\n    --btn-input-xs-min-height: 1.5rem,\n    --btn-input-xs-padding-y: .125rem,\n    --btn-input-xs-padding-x: .5rem,\n    --btn-input-xs-font-size: var(--font-size-xs),\n    --btn-input-xs-line-height: 1.125,\n    --btn-input-xs-border-radius: var(--border-radius-xs),\n\n    --btn-input-sm-min-height: 2rem,\n    --btn-input-sm-padding-y: .25rem,\n    --btn-input-sm-padding-x: .625rem,\n    --btn-input-sm-font-size: var(--font-size-sm),\n    --btn-input-sm-line-height: var(--line-height-sm),\n    --btn-input-sm-border-radius: var(--border-radius-sm),\n\n    --btn-input-lg-min-height: 2.75rem,\n    --btn-input-lg-padding-y: .5rem,\n    --btn-input-lg-padding-x: 1rem,\n    --btn-input-lg-font-size: var(--font-size-md),\n    --btn-input-lg-line-height: var(--line-height-md),\n    --btn-input-lg-border-radius: var(--border-radius-lg),\n    // scss-docs-end root-form-variables\n\n    // scss-docs-start root-form-validation-variables\n    --form-valid-color: #{$form-valid-color},\n    --form-valid-border-color: #{$form-valid-border-color},\n    --form-invalid-color: #{$form-invalid-color},\n    --form-invalid-border-color: #{$form-invalid-border-color},\n    // scss-docs-end root-form-validation-variables\n  ),\n  $root-tokens\n);\n// stylelint-enable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// scss-docs-end root-tokens\n\n// scss-docs-start root-theme-tokens\n// Generate semantic theme colors\n@each $color-name, $color-map in $theme-colors {\n  @each $key, $value in $color-map {\n    $root-tokens: map.set($root-tokens, --#{$color-name}-#{$key}, $value);\n  }\n}\n\n// Generate background tokens\n@each $key, $value in $theme-bgs {\n  $root-tokens: map.set($root-tokens, --bg-#{$key}, $value);\n}\n\n// Generate foreground tokens\n@each $key, $value in $theme-fgs {\n  $root-tokens: map.set($root-tokens, --fg-#{$key}, $value);\n}\n\n// Generate border tokens\n@each $key, $value in $theme-borders {\n  $root-tokens: map.set($root-tokens, --border-#{$key}, $value);\n}\n// scss-docs-end root-theme-tokens\n\n// Generate breakpoint tokens\n@each $name, $value in $breakpoints {\n  $root-tokens: map.set($root-tokens, --breakpoint-#{$name}, $value);\n}\n\n:root {\n  @include tokens($root-tokens);\n\n  color-scheme: light dark;\n}\n\n[data-bs-theme=\"dark\"] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=\"light\"] {\n  color-scheme: light;\n}\n","@use \"../colors\" as *;\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../variables\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n$reboot-kbd-tokens: () !default;\n\n// scss-docs-start reboot-kbd-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-kbd-tokens: defaults(\n  (\n    --kbd-padding-y: .125rem,\n    --kbd-padding-x: .25rem,\n    --kbd-font-size: var(--font-size-xs),\n    --kbd-color: var(--bg-body),\n    --kbd-bg: var(--fg-2),\n    --kbd-border-radius: var(--border-radius-sm),\n  ),\n  $reboot-kbd-tokens\n);\n// scss-docs-end reboot-kbd-tokens\n\n$reboot-mark-tokens: () !default;\n\n// scss-docs-start reboot-mark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-mark-tokens: defaults(\n  (\n    --mark-padding: .1875em,\n    --mark-color: var(--fg-body),\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900)),\n  ),\n  $reboot-mark-tokens\n);\n// scss-docs-end reboot-mark-tokens\n\n@layer reboot {\n  // Reboot\n  //\n  // Normalization of HTML elements, manually forked from Normalize.css to remove\n  // styles targeting irrelevant browsers while applying new styles.\n  //\n  // Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n  // Document\n  //\n  // Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n\n  // Root\n  //\n  // Ability to the value of the root font sizes, affecting the value of `rem`.\n  // null by default, thus nothing is generated.\n\n  :root {\n    // Assume browser default font-size of 16px, or a user's preference\n    accent-color: var(--primary-base);\n\n    @if $enable-smooth-scroll {\n      @media (prefers-reduced-motion: no-preference) {\n        scroll-behavior: smooth;\n      }\n    }\n  }\n\n  // Body\n  //\n  // 1. Remove the margin in all browsers.\n  // 2. As a best practice, apply a default `background-color`.\n  // 3. Prevent adjustments of font size after orientation changes in iOS.\n  // 4. Change the default tap highlight to be completely transparent in iOS.\n\n  // scss-docs-start reboot-body-rules\n  body {\n    margin: 0; // 1\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body); // 2\n    -webkit-text-size-adjust: 100%; // 3\n    -webkit-tap-highlight-color: rgba($black, 0); // 4\n  }\n  // scss-docs-end reboot-body-rules\n\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n\n  // Typography\n  //\n  // 1. Remove top margins from headings\n  //    By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n  //    margin for easier control within type scales as it avoids margin collapsing.\n\n  %heading {\n    margin-top: 0; // 1\n    margin-bottom: $headings-margin-bottom;\n    font-family: $headings-font-family;\n    font-style: $headings-font-style;\n    font-weight: $headings-font-weight;\n    line-height: $headings-line-height;\n    color: var(--heading-color);\n  }\n\n  h1,\n  .h1 {\n    @extend %heading;\n    font-size: $h1-font-size;\n  }\n\n  h2,\n  .h2 {\n    @extend %heading;\n    font-size: $h2-font-size;\n  }\n\n  h3,\n  .h3 {\n    @extend %heading;\n    font-size: $h3-font-size;\n  }\n\n  h4,\n  .h4 {\n    @extend %heading;\n    font-size: $h4-font-size;\n  }\n\n  h5,\n  .h5 {\n    @extend %heading;\n    font-size: $h5-font-size;\n  }\n\n  h6,\n  .h6 {\n    @extend %heading;\n    font-size: $h6-font-size;\n  }\n\n  // Reset margins on paragraphs\n  //\n  // Similarly, the top margin on `<p>`s get reset. However, we also reset the\n  // bottom margin to use `rem` units instead of `em`.\n\n  p {\n    margin-top: 0;\n    margin-bottom: $paragraph-margin-bottom;\n  }\n\n  // Abbreviations\n  //\n  // 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n  // 2. Add explicit cursor to indicate changed behavior.\n  // 3. Prevent the text-decoration to be skipped.\n\n  abbr[title] {\n    text-decoration: underline dotted; // 1\n    cursor: help; // 2\n    text-decoration-skip-ink: none; // 3\n  }\n\n  // Address\n\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n\n  // Lists\n\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n\n  dt {\n    font-weight: $dt-font-weight;\n  }\n\n  // 1. Undo browser default\n\n  dd {\n    margin-inline-start: 0; // 1\n    margin-bottom: .5rem;\n  }\n\n  // Blockquote\n\n  blockquote {\n    margin: 0 0 1rem;\n    > * {\n      margin-block: 0;\n    }\n  }\n\n  // Strong\n  //\n  // Add the correct font weight in Chrome, Edge, and Safari\n\n  b,\n  strong {\n    font-weight: $font-weight-bolder;\n  }\n\n  // Small\n  //\n  // Add the correct font size in all browsers\n\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n\n  // Mark\n\n  mark,\n  .mark {\n    @include tokens($reboot-mark-tokens);\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n\n  // Sub and Sup\n  //\n  // Prevent `sub` and `sup` elements from affecting the line height in\n  // all browsers.\n\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, .75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n\n  sub { bottom: -.25em; }\n  sup { top: -.5em; }\n\n  // Links\n\n  a {\n    color: var(--theme-text, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: $link-underline-offset;\n\n    &:hover {\n      // --link-color: var(--link-hover-color);\n      // --link-decoration: var(--link-hover-decoration, var(--link-decoration));\n      color: var(--theme-text-emphasis, var(--link-hover-color));\n      text-decoration: var(--link-hover-decoration, var(--link-decoration));\n    }\n  }\n\n  // And undo these styles for placeholder links/named anchors (without href).\n  // It would be more straightforward to just use a[href] in previous block, but that\n  // causes specificity issues in many other styles that are too complex to fix.\n  // See https://github.com/twbs/bootstrap/issues/19402\n\n  a:not([href]):not([class]) {\n    &,\n    &:hover {\n      color: inherit;\n      text-decoration: none;\n    }\n  }\n\n  // Code\n\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n  }\n\n  // 1. Remove browser default top margin\n  // 2. Reset browser default of `1em` to use `rem`s\n  // 3. Don't allow content to break outside\n\n  pre {\n    display: block;\n    margin-top: 0; // 1\n    margin-bottom: 1rem; // 2\n    overflow: auto; // 3\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n\n    // Account for some code outputs that place code tags in pre tags\n    code {\n      font-size: inherit;\n      color: inherit;\n      word-break: normal;\n    }\n  }\n\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n\n    // Streamline the style when inside anchors to avoid broken underline and more\n    a > & {\n      color: inherit;\n    }\n  }\n\n  kbd {\n    @include tokens($reboot-kbd-tokens);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    @include border-radius(var(--kbd-border-radius));\n\n    kbd {\n      padding: 0;\n      font-size: 1em;\n      font-weight: inherit; // mdo-do: check if this is needed\n    }\n  }\n\n  // Figures\n  //\n  // Apply a consistent margin strategy (matches our type styles).\n\n  figure {\n    margin: 0 0 1rem;\n  }\n\n  // Images and content\n\n  img,\n  svg {\n    vertical-align: middle;\n  }\n\n  // Tables\n  //\n  // Prevent double borders\n\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n\n  caption {\n    // padding-top: $table-cell-padding-y;\n    // padding-bottom: $table-cell-padding-y;\n    // color: $table-caption-color;\n    padding-block: .5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n\n  // 1. Removes font-weight bold by inheriting\n  // 2. Matches default `<td>` alignment by inheriting `text-align`.\n  // 3. Fix alignment for Safari\n\n  th {\n    // font-weight: $table-th-font-weight; // 1 // mdo-do: it's null by default. maybe we remove?\n    text-align: inherit; // 2\n    text-align: -webkit-match-parent; // 3\n  }\n\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n\n  // Forms\n  //\n  // 1. Allow labels to use `margin` for spacing.\n\n  label {\n    display: inline-block; // 1\n  }\n\n  // Remove the default `border-radius` that macOS Chrome adds.\n  // See https://github.com/twbs/bootstrap/issues/24093\n\n  button {\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 0;\n  }\n\n  // Explicitly remove focus outline in Chromium when it shouldn't be\n  // visible (e.g. as result of mouse click or touch tap). It already\n  // should be doing this automatically, but seems to currently be\n  // confused and applies its very visible two-tone outline anyway.\n\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n\n  // 1. Remove the margin in Firefox and Safari\n\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0; // 1\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n\n  // Remove the inheritance of text transform in Firefox\n  button,\n  select {\n    text-transform: none;\n  }\n  // Set the cursor for non-`<button>` buttons\n  //\n  // Details at https://github.com/twbs/bootstrap/pull/30562\n  [role=\"button\"] {\n    cursor: pointer;\n  }\n\n  select {\n    // Remove the inheritance of word-wrap in Safari.\n    // See https://github.com/twbs/bootstrap/issues/24990\n    word-wrap: normal;\n\n    // Undo the opacity change from Chrome\n    &:disabled {\n      opacity: 1;\n    }\n  }\n\n  // Remove the dropdown arrow only from text type inputs built with datalists in Chrome.\n  // See https://stackoverflow.com/a/54997118\n\n  [list]:not([type=\"date\"]):not([type=\"datetime-local\"]):not([type=\"month\"]):not([type=\"week\"]):not([type=\"time\"])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n\n  // 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n  //    controls in Android 4.\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n  // 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\n  button,\n  [type=\"button\"], // 1\n  [type=\"reset\"],\n  [type=\"submit\"] {\n    -webkit-appearance: button; // 2\n\n    @if $enable-button-pointers {\n      &:not(:disabled) {\n        cursor: pointer; // 3\n      }\n    }\n  }\n\n  // Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\n\n  ::-moz-focus-inner {\n    padding: 0;\n    border-style: none;\n  }\n\n  // 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\n  textarea {\n    resize: vertical; // 1\n  }\n\n  // 1. Browsers set a default `min-width: min-content;` on fieldsets,\n  //    unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n  //    So we reset that to ensure fieldsets behave more like a standard block element.\n  //    See https://github.com/twbs/bootstrap/issues/12359\n  //    and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n  // 2. Reset the default outline behavior of fieldsets so they don't affect page layout.\n\n  fieldset {\n    min-width: 0; // 1\n    padding: 0; // 2\n    margin: 0; // 2\n    border: 0; // 2\n  }\n\n  // 1. By using `float: inline-start`, the legend will behave like a block element.\n  //    This way the border of a fieldset wraps around the legend if present.\n  // 2. Fix wrapping bug.\n  //    See https://github.com/twbs/bootstrap/issues/29712\n\n  legend {\n    float: inline-start; // 1\n    width: 100%;\n    padding: 0;\n    margin-bottom: $legend-margin-bottom;\n    font-size: $legend-font-size;\n    font-weight: $legend-font-weight;\n    line-height: inherit;\n\n    + * {\n      clear: inline-start; // 2\n    }\n  }\n\n  // Fix height of inputs with a type of datetime-local, date, month, week, or time\n  // See https://github.com/twbs/bootstrap/issues/18842\n\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-ampm-field,\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n\n  ::-webkit-inner-spin-button {\n    height: auto;\n  }\n\n  // 1. This overrides the extra rounded corners on search inputs in iOS so that our\n  //    `.form-control` class can properly style them. Note that this cannot simply\n  //    be added to `.form-control` as it's not specific enough. For details, see\n  //    https://github.com/twbs/bootstrap/issues/11586.\n  // 2. Correct the outline style in Safari.\n\n  [type=\"search\"] {\n    -webkit-appearance: textfield; // 1\n    outline-offset: -2px; // 2\n\n    // 3. Better affordance and consistent appearance for search cancel button\n    &::-webkit-search-cancel-button {\n      cursor: pointer;\n      filter: grayscale(1);\n    }\n  }\n\n  // A few input types should stay LTR regardless of document direction\n  // See https://rtlstyling.com/posts/rtl-styling#form-inputs\n\n  [type=\"tel\"],\n  [type=\"url\"],\n  [type=\"email\"],\n  [type=\"number\"] {\n    direction: ltr;\n  }\n\n  // Remove the inner padding in Chrome and Safari on macOS.\n\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n\n  // Remove padding around color pickers in webkit browsers\n\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n\n  // 1. Inherit font family and line height for file input buttons\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n\n  ::file-selector-button {\n    font: inherit; // 1\n    -webkit-appearance: button; // 2\n  }\n\n  // Correct element displays\n\n  output {\n    display: inline-block;\n  }\n\n  // Remove border from iframe\n\n  iframe {\n    border: 0;\n  }\n\n  // Summary\n  //\n  // 1. Add the correct display in all browsers\n\n  summary {\n    display: list-item; // 1\n    cursor: pointer;\n  }\n\n  // Progress\n  //\n  // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\n  progress {\n    vertical-align: baseline;\n  }\n\n  // Hidden attribute\n  //\n  // Always hide an element with the `hidden` HTML attribute.\n\n  [hidden] {\n    display: none !important;\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n\n// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $btn-padding-y-lg.\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `<body>` element.\n\n// $body-text-align:           null !default;\n\n// Links\n//\n// Style anchor elements.\n\n// $link-color:                              var !default;\n$link-decoration:                         underline !default;\n$link-underline-offset:                   .2em !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap:               .375rem !default;\n$icon-link-underline-offset:  .25em !default;\n$icon-link-icon-size:         1em !default;\n$icon-link-icon-transition:   .2s ease-in-out transform !default;\n$icon-link-icon-transform:    translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n$border-style:                solid !default;\n$border-color:                color-mix(in oklch, var(--gray-100), var(--gray-200)) !default;\n// scss-docs-end border-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"auto\": auto,\n  \"1x1\": #{\"1 / 1\"},\n  \"4x3\": #{\"4 / 3\"},\n  \"16x9\": #{\"16 / 9\"},\n  \"21x9\": #{\"21 / 9\"}\n) !default;\n// scss-docs-end aspect-ratios\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// $font-family-sans-serif:      system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n// $font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// $font-family-base:            var(--font-sans-serif) !default;\n// $font-family-code:            var(--font-monospace) !default;\n\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-medium:          500 !default;\n$font-weight-semibold:        600 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n\n$h1-font-size: var(--font-size-3xl) !default;\n$h2-font-size: var(--font-size-2xl) !default;\n$h3-font-size: var(--font-size-xl) !default;\n$h4-font-size: var(--font-size-lg) !default;\n$h5-font-size: var(--font-size-md) !default;\n$h6-font-size: var(--font-size-sm) !default;\n// scss-docs-end font-variables\n\n// Font sizes with line-height for utilities\n$font-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$font-sizes: defaults(\n  (\n    \"xs\": (\n      \"font-size\": var(--font-size-xs),\n      \"line-height\": var(--line-height-xs)\n    ),\n    \"sm\": (\n      \"font-size\": var(--font-size-sm),\n      \"line-height\": var(--line-height-sm)\n    ),\n    \"md\": (\n      \"font-size\": var(--font-size-md),\n      \"line-height\": var(--line-height-md)\n    ),\n    \"lg\": (\n      \"font-size\": var(--font-size-lg),\n      \"line-height\": var(--line-height-lg)\n    ),\n    \"xl\": (\n      \"font-size\": var(--font-size-xl),\n      \"line-height\": var(--line-height-xl)\n    ),\n    \"2xl\": (\n      \"font-size\": var(--font-size-2xl),\n      \"line-height\": var(--line-height-2xl)\n    ),\n    \"3xl\": (\n      \"font-size\": var(--font-size-3xl),\n      \"line-height\": var(--line-height-3xl)\n    ),\n    \"4xl\": (\n      \"font-size\": var(--font-size-4xl),\n      \"line-height\": var(--line-height-4xl)\n    ),\n    \"5xl\": (\n      \"font-size\": var(--font-size-5xl),\n      \"line-height\": var(--line-height-5xl)\n    ),\n    \"6xl\": (\n      \"font-size\": var(--font-size-6xl),\n      \"line-height\": var(--line-height-6xl)\n    ),\n  ),\n  $font-sizes\n);\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start type-variables\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n// $list-inline-padding:         .5rem !default;\n// scss-docs-end type-variables\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown:                   1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-dialog:                     1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n$zindex-toast:                      1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n  n1: -1,\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n","@use \"sass:list\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n  $return: ();\n  @each $value in $radius {\n    @if meta.type-of($value) == number {\n      $return: list.append($return, math.max($value, 0));\n    } @else {\n      $return: list.append($return, $value);\n    }\n  }\n  @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: var(--border-radius), $fallback-border-radius: false) {\n  @if $enable-rounded {\n    border-radius: valid-radius($radius);\n  }\n  @else if $fallback-border-radius != false {\n    border-radius: $fallback-border-radius;\n  }\n}\n\n@mixin border-top-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n// scss-docs-end border-radius-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/lists\" as *;\n@use \"../mixins/tokens\" as *;\n\n$blockquote-tokens: () !default;\n\n// scss-docs-start blockquote-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$blockquote-tokens: defaults(\n  (\n    --blockquote-gap: calc(var(--spacer) / 2),\n    --blockquote-padding-x: var(--spacer),\n    --blockquote-margin-y: 1rem,\n    --blockquote-font-size: var(--font-size-md),\n    --blockquote-border-width: .25rem,\n    --blockquote-border-color: var(--border-color),\n    --blockquote-footer-font-size: var(--font-size-sm),\n    --blockquote-footer-color: var(--fg-3),\n  ),\n  $blockquote-tokens\n);\n// scss-docs-end blockquote-tokens\n\n@layer content {\n  //\n  // Lists\n  //\n\n  .list-unstyled {\n    @include list-unstyled();\n  }\n\n  // Inline turns list items into inline-block\n  .list-inline {\n    @include list-unstyled();\n  }\n  .list-inline-item {\n    display: inline-block;\n\n    &:not(:last-child) {\n      margin-inline-end: var(--list-inline-padding, var(--spacer) / 2);\n    }\n  }\n\n  //\n  // Misc\n  //\n\n  // Builds on `abbr`\n  .initialism {\n    font-size: var(--initialism-font-size, var(--font-size-xs));\n    text-transform: uppercase;\n  }\n\n  // Blockquotes\n  .blockquote {\n    @include tokens($blockquote-tokens);\n    display: flex;\n    flex-direction: column;\n    gap: var(--blockquote-gap);\n    padding-inline-start: var(--blockquote-padding-x);\n    margin-bottom: var(--blockquote-margin-y);\n    font-size: var(--blockquote-font-size);\n    border-inline-start: var(--blockquote-border-width) solid var(--blockquote-border-color);\n\n    > * {\n      margin-bottom: 0;\n    }\n  }\n\n  // stylelint-disable-next-line selector-no-qualifying-type\n  figure.blockquote {\n    blockquote {\n      margin-bottom: 0;\n    }\n  }\n\n  .blockquote-footer {\n    font-size: var(--blockquote-footer-font-size);\n    color: var(--blockquote-footer-color);\n\n    &::before {\n      content: \"\\2014\\00A0\"; // em dash, nbsp\n    }\n  }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n  padding-inline-start: 0;\n  list-style: none;\n}\n","@use \"sass:map\";\n@use \"../config\" as *;\n@use \"../variables\" as *;\n@use \"../functions\" as *;\n@use \"../layout/breakpoints\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$table-tokens: () !default;\n\n// scss-docs-start table-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$table-tokens: defaults(\n  (\n    --table-cell-padding-y: .5rem,\n    --table-cell-padding-x: .5rem,\n    --table-cell-vertical-align: top,\n    --table-color: var(--fg-body),\n    --table-bg: var(--bg-body),\n    --table-accent-bg: transparent,\n    --table-border-width: var(--border-width),\n    --table-border-color: var(--border-color),\n    --table-group-separator-color: currentcolor,\n    --table-striped-color: var(--table-color),\n    --table-striped-bg-factor: .05,\n    --table-striped-bg: color-mix(in srgb, var(--table-color) var(--table-striped-bg-factor), transparent),\n    --table-active-color: var(--table-color),\n    --table-active-bg-factor: .1,\n    --table-active-bg: color-mix(in srgb, var(--table-color) var(--table-active-bg-factor), transparent),\n    --table-hover-color: var(--table-color),\n    --table-hover-bg-factor: .075,\n    --table-hover-bg: color-mix(in srgb, var(--table-color) var(--table-hover-bg-factor), transparent),\n  ),\n  $table-tokens\n);\n// scss-docs-end table-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n//\n// Basic Bootstrap table\n//\n\n@layer content {\n  .table {\n    @include tokens($table-tokens);\n\n    // Reset needed for nesting tables\n    --table-color-type: initial;\n    --table-bg-type: initial;\n    --table-color-state: initial;\n    --table-bg-state: initial;\n    // End of reset\n\n    width: 100%;\n    margin-bottom: $spacer;\n    vertical-align: var(--table-cell-vertical-align);\n    border-color: var(--theme-border, var(--table-border-color));\n\n    // Target th & td\n    // We need the child combinator to prevent styles leaking to nested tables which doesn't have a `.table` class.\n    // We use the universal selectors here to simplify the selector (else we would need 6 different selectors).\n    // Another advantage is that this generates less code and makes the selector less specific making it easier to override.\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      padding: var(--table-cell-padding-y) var(--table-cell-padding-x);\n      // Following the precept of cascades: https://codepen.io/miriamsuzanne/full/vYNgodb\n      color: var(--table-color-state, var(--table-color-type, var(--theme-text, var(--table-color))));\n      background-color: var(--theme-bg-subtle, var(--table-bg));\n      border-block-end-width: var(--table-border-width);\n      box-shadow: inset 0 0 0 9999px var(--table-bg-state, var(--table-bg-type, var(--theme-bg-subtle, var(--table-accent-bg))));\n    }\n\n    > tbody {\n      vertical-align: inherit;\n    }\n\n    > thead {\n      vertical-align: bottom;\n    }\n  }\n\n  .table-group-divider {\n    border-block-start: calc(var(--table-border-width) * 2) solid var(--table-group-separator-color);\n  }\n\n  //\n  // Change placement of captions with a class\n  //\n\n  .caption-top {\n    caption-side: top;\n  }\n\n  //\n  // Condensed table w/ half padding\n  //\n\n  .table-sm {\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      --table-cell-padding-y: .25rem;\n      --table-cell-padding-x: .25rem;\n    }\n  }\n\n  // Border versions\n  //\n  // Add or remove borders all around the table and between all the columns.\n  //\n  // When borders are added on all sides of the cells, the corners can render odd when\n  // these borders do not have the same color or if they are semi-transparent.\n  // Therefore we add top and border bottoms to the `tr`s and left and right borders\n  // to the `td`s or `th`s\n\n  .table-bordered {\n    > :not(caption) > * {\n      border-width: var(--table-border-width) 0;\n\n      // stylelint-disable-next-line selector-max-universal\n      > * {\n        border-width: 0 var(--table-border-width);\n      }\n    }\n  }\n\n  .table-borderless {\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      border-block-end-width: 0;\n    }\n\n    > :not(:first-child) {\n      border-block-start-width: 0;\n    }\n  }\n\n  // Zebra-striping\n  //\n  // Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n  // For rows\n  .table-striped {\n    > tbody > tr:nth-of-type(#{$table-striped-order}) > * {\n      --table-color-type: var(--theme-text, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-striped-bg-factor), transparent);\n    }\n  }\n\n  // For columns\n  .table-striped-columns {\n    > :not(caption) > tr > :nth-child(#{$table-striped-columns-order}) {\n      --table-color-type: var(--theme-text, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-striped-bg-factor), transparent);\n    }\n  }\n\n  // Active table\n  //\n  // The `.table-active` class can be added to highlight rows or cells\n\n  .table-active {\n    --table-color-state: var(--theme-text, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-active-bg-factor), transparent);\n  }\n\n  // Hover effect\n  //\n  // Placed here since it has to come after the potential zebra striping\n\n  .table-hover {\n    > tbody > tr:hover > * {\n      --table-color-state: var(--theme-text, var(--table-hover-color));\n      --table-bg-state: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-hover-bg-factor), transparent);\n    }\n  }\n\n  // Responsive tables\n  //\n  // Generate series of `.table-responsive-*` classes for configuring the screen\n  // size of where your table will overflow.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-down($breakpoint) {\n      .table-responsive#{$infix} {\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n      }\n    }\n  }\n}\n","// Configuration\n//\n// Variables and settings not related to theme, components, and more go here. It does include layout.\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              true !default;\n$enable-gradients:            false !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        true !default;\n$enable-grid-classes:         true !default;\n$enable-container-classes:    true !default;\n$enable-cssgrid:              true !default;\n$enable-button-pointers:      true !default;\n$enable-validation-icons:     true !default;\n// $enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n\n$enable-dark-mode:            true !default;\n$color-mode-type:             data !default; // `data` or `media-query`\n\n// more to come here…\n\n$color-mode-type:          \"media-query\" !default;\n$color-contrast-dark:      #000 !default;\n$color-contrast-light:     #fff !default;\n$min-contrast-ratio:         4.5 !default;\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  -2: $spacer * -.5,\n  -1: $spacer * -.25,\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n$sizes: (\n  1: $spacer,\n  2: calc($spacer * 2),\n  3: calc($spacer * 3),\n  4: calc($spacer * 4),\n  5: calc($spacer * 5),\n  6: calc($spacer * 6),\n  7: calc($spacer * 7),\n  8: calc($spacer * 8),\n  9: calc($spacer * 9),\n  10: calc($spacer * 10),\n  11: calc($spacer * 11),\n  12: calc($spacer * 12),\n) !default;\n\n// Breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start breakpoints\n$breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 1024px,\n  xl: 1280px,\n  2xl: 1536px\n) !default;\n// scss-docs-end breakpoints\n\n// @include _assert-ascending($breakpoints, \"$breakpoints\");\n// @include _assert-starts-at-zero($breakpoints, \"$breakpoints\");\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-x: 1.5rem !default;\n$grid-gutter-y: 0 !default;\n$grid-row-columns: 6 !default;\n\n$gutters: $spacers !default;\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1200px,\n  2xl: 1440px\n) !default;\n// scss-docs-end container-max-widths\n\n$container-padding-x: $grid-gutter-x !default;\n\n$utilities: () !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"../config\" as *;\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px)\n//\n// The map defined in the `$breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl 2xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $breakpoints, $breakpoint-names: map.keys($breakpoints)) {\n  $n: list.index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoint-names}`\";\n  }\n  // Use @if/@else because list.nth would error if evaluated when $n equals list length\n  @if $n < list.length($breakpoint-names) {\n    @return list.nth($breakpoint-names, $n + 1);\n  } @else {\n    @return null;\n  }\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $breakpoints) {\n  $min: map.get($breakpoints, $name);\n  @return if(sass($min != 0): $min; else: null);\n}\n\n// Maximum breakpoint width for range media queries.\n// Returns the breakpoint value to use as an upper bound in range queries.\n//\n//    >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n//    >> breakpoint-max(xxl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    null\n@function breakpoint-max($name, $breakpoints: $breakpoints) {\n  @if $name == null {\n    @return null;\n  }\n  $max: map.get($breakpoints, $name);\n  @return if(sass($max and $max > 0): $max; else: null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $breakpoints) {\n  @return if(sass(breakpoint-min($name, $breakpoints) == null): \"\"; else: \"-#{$name}\");\n}\n\n// Iterate all breakpoints and provide the current name and infix.\n//\n//    @include loop-breakpoints-up() using ($breakpoint, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-up($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n    @content($breakpoint, $infix);\n  }\n}\n\n// Iterate all breakpoints and provide the current name, next name, and next infix.\n//\n//    @include loop-breakpoints-down() using ($breakpoint, $next, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-down($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $next: breakpoint-next($breakpoint, $breakpoints);\n    $infix: breakpoint-infix($next, $breakpoints);\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Backwards-compatible alias for next/down breakpoint loops.\n@mixin loop-breakpoints($breakpoints: $breakpoints) {\n  @include loop-breakpoints-down($breakpoints) using ($breakpoint, $next, $infix) {\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (width >= $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (width < $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n\n// Container queries\n//\n// Container queries allow elements to respond to the size of a containing element\n// rather than the viewport. These mixins mirror the media-breakpoint-* mixins above.\n//\n// scss-docs-start container-query-mixins\n\n// Set an element as a query container.\n//\n//    @include set-container();                    // container-type: inline-size\n//    @include set-container(size);                // container-type: size\n//    @include set-container(inline-size, sidebar); // container: sidebar / inline-size\n//\n@mixin set-container($type: inline-size, $name: null) {\n  @if $name {\n    container: #{$name} / #{$type};\n  } @else {\n    container-type: #{$type};\n  }\n}\n\n// Container query of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider within the container.\n//\n//    @include container-breakpoint-up(md) { ... }\n//    @include container-breakpoint-up(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-up($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower within the container.\n//\n//    @include container-breakpoint-down(lg) { ... }\n//    @include container-breakpoint-down(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-down($name, $container-name: null, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @if $container-name {\n      @container #{$container-name} (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints within the container.\n//\n//    @include container-breakpoint-between(md, xl) { ... }\n//    @include container-breakpoint-between(md, xl, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-between($lower, $upper, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($lower, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($upper, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Container query between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint within the container.\n//\n//    @include container-breakpoint-only(md) { ... }\n//    @include container-breakpoint-only(md, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-only($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($name, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($next, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n// scss-docs-end container-query-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/image\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/tokens\" as *;\n\n$thumbnail-tokens: () !default;\n\n// scss-docs-start thumbnail-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$thumbnail-tokens: defaults(\n  (\n    --thumbnail-padding: .25rem,\n    --thumbnail-bg: var(--bg-body),\n    --thumbnail-border-width: var(--border-width),\n    --thumbnail-border-color: var(--border-color),\n    --thumbnail-border-radius: var(--border-radius),\n    --thumbnail-box-shadow: var(--box-shadow-sm),\n  ),\n  $thumbnail-tokens\n);\n// scss-docs-end thumbnail-tokens\n\n$figure-tokens: () !default;\n\n// scss-docs-start figure-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$figure-tokens: defaults(\n  (\n    --figure-gap: calc(var(--spacer) * .5),\n    --figure-caption-font-size: var(--font-size-sm),\n    --figure-caption-color: var(--fg-3),\n  ),\n  $figure-tokens\n);\n// scss-docs-end figure-tokens\n\n@layer content {\n  // Responsive images (ensure images don't scale beyond their parents)\n  //\n  // This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.\n  // We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n  // and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n  // which weren't expecting the images within themselves to be involuntarily resized.\n  // See also https://github.com/twbs/bootstrap/issues/18178\n  .img-fluid {\n    @include img-fluid();\n  }\n\n  .img-thumbnail {\n    @include tokens($thumbnail-tokens);\n    padding: var(--thumbnail-padding);\n    background-color: var(--thumbnail-bg);\n    border: var(--thumbnail-border-width) solid var(--thumbnail-border-color);\n    @include border-radius(var(--thumbnail-border-radius));\n    @include box-shadow(var(--thumbnail-box-shadow));\n\n    // Keep them at most 100% wide\n    @include img-fluid();\n  }\n\n  .figure {\n    @include tokens($figure-tokens);\n    // Ensures the caption's text aligns with the image.\n    display: flex;\n    flex-direction: column;\n    gap: var(--figure-gap);\n  }\n\n  .figure-caption {\n    font-size: var(--figure-caption-font-size);\n    color: var(--figure-caption-color);\n  }\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n  // Part 1: Set a maximum relative to the parent\n  max-width: 100%;\n  // Part 2: Override the height to auto, otherwise images will be stretched\n  // when setting a width and height attribute on the img element.\n  height: auto;\n}\n","@use \"sass:list\";\n@use \"../config\" as *;\n\n@mixin box-shadow($shadow...) {\n  @if $enable-shadows {\n    $result: ();\n    $has-single-value: false;\n    $single-value: null;\n\n    @each $value in $shadow {\n      @if $value != null {\n        @if $value == none or $value == initial or $value == inherit or $value == unset {\n          $has-single-value: true;\n          $single-value: $value;\n        } @else {\n          $result: list.append($result, $value, \"comma\");\n        }\n      }\n    }\n\n    @if $has-single-value {\n      box-shadow: $single-value;\n    } @else if (list.length($result) > 0) {\n      box-shadow: $result;\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$prose-tokens: () !default;\n\n// scss-docs-start prose-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$prose-tokens: defaults(\n  (\n    --content-font-size: 1rem,\n    --content-gap: 20px,\n    --heading-color: light-dark(var(--gray-900), var(--white)),\n  ),\n  $prose-tokens\n);\n// scss-docs-end prose-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer content {\n  .prose {\n    @include tokens($prose-tokens);\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--content-gap);\n    max-width: 1000px;\n    margin-inline: auto;\n    font-size: var(--content-font-size);\n    line-height: 1.5;\n\n    @media (width >= 1024px) {\n      --content-font-size: var(--font-size-md);\n      --content-gap: 24px;\n    }\n\n    :where(p, ul, ol, dl, pre, table, blockquote):not(:where(.not-prose, .not-prose *)) {\n      margin-block: 0;\n    }\n\n    :where(ul, ol):not([class]):not(:where(.not-prose, .not-prose *)) li:not(:last-child) {\n      margin-bottom: calc(var(--content-gap) / 4);\n    }\n\n    :where(li ul, li ol):not(:where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) / 4);\n    }\n\n    :where(hr):not(:where(.not-prose, .not-prose *)) {\n      margin: calc(var(--content-gap) * 1.5) 0;\n      border: 0;\n      border-block-start: var(--border-width) solid var(--hr-border-color);\n    }\n\n    :where(h1, h2, h3, h4, h5, h6):not([class]):not(:where(.not-prose, .not-prose *)) {\n      margin-top: 0;\n      margin-bottom: calc(var(--content-gap) / -2);\n      font-weight: 500;\n      line-height: 1.25;\n\n      code {\n        font-weight: 600;\n        color: inherit;\n      }\n    }\n\n    :where(h1, h2):not(:first-child):not(:where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) * .75);\n    }\n\n    :where(h3, h4, h5, h6):not(:first-child):not(:where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) * .5);\n    }\n\n    :where(h1):not(:where(.not-prose, .not-prose *)) {\n      font-size: 2.25em;\n      line-height: 1.1;\n    }\n    :where(h2):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.75em;\n    }\n    :where(h3):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.5em;\n    }\n    :where(h4):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.25em;\n    }\n    :where(h5):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.125em;\n    }\n    :where(h6):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1em;\n    }\n\n    :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n      color: var(--link-color);\n      text-decoration: underline;\n      text-decoration-color: color-mix(in srgb, var(--link-color) 25%, transparent);\n      text-underline-offset: 4px;\n      @include transition(.1s text-decoration-color ease-in-out);\n\n      &:hover {\n        text-decoration-color: var(--link-hover-color);\n      }\n    }\n\n    :where(img):not(:where(.not-prose, .not-prose *)) {\n      max-width: 100%;\n    }\n\n    :where(blockquote):not(:where(.not-prose, .not-prose *)) {\n      padding-inline-start: calc(var(--content-gap) / 2);\n      margin: 0;\n      border-inline-start: 4px solid var(--border-color);\n    }\n\n    :where(table):not(:where(.not-prose, .not-prose *)) {\n      width: 100%;\n      border-spacing: 0;\n      border-collapse: collapse;\n    }\n\n    :where(table:not([class])):not(:where(.not-prose, .not-prose *)) {\n      td,\n      th {\n        padding: 6px 12px;\n        text-align: inherit;\n        border: 1px solid var(--border-color);\n      }\n    }\n\n    :where(dt):not(:where(.not-prose, .not-prose *)) {\n      font-weight: 500;\n    }\n\n    :where(video, img):not(:where(.not-prose, .not-prose *)) {\n      max-width: 100%;\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n@mixin transition($transition...) {\n  @if list.length($transition) == 0 {\n    $transition: $transition-base;\n  }\n\n  @if list.length($transition) > 1 {\n    @each $value in $transition {\n      @if $value == null or $value == none {\n        @warn \"The keyword 'none' or 'null' must be used as a single argument.\";\n      }\n    }\n  }\n\n  @if $enable-transitions {\n    @if list.nth($transition, 1) != null {\n      transition: $transition;\n    }\n\n    @if $enable-reduced-motion and list.nth($transition, 1) != null and list.nth($transition, 1) != none {\n      @media (prefers-reduced-motion: reduce) {\n        transition: none;\n      }\n    }\n  }\n}\n","@use \"../config\" as *;\n@use \"breakpoints\" as *;\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n  --gutter-x: #{$gutter};\n  --gutter-y: 0;\n  width: 100%;\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-inline: auto;\n}\n\n@layer layout {\n  @if $enable-container-classes {\n    // Single container class with breakpoint max-widths\n    .container,\n    // 100% wide container at all breakpoints\n    .container-fluid {\n      @include make-container();\n    }\n\n    // Responsive containers that are 100% wide until a breakpoint\n    @each $breakpoint, $container-max-width in $container-max-widths {\n      .container-#{$breakpoint} {\n        @extend .container-fluid;\n      }\n\n      @include media-breakpoint-up($breakpoint, $breakpoints) {\n        // Extend each breakpoint which is smaller or equal to the current breakpoint\n        $extend-breakpoint: true;\n\n        %responsive-container-#{$breakpoint} {\n          max-width: $container-max-width;\n        }\n\n        @each $name, $width in $breakpoints {\n          @if ($extend-breakpoint) {\n            .container#{breakpoint-infix($name, $breakpoints)} {\n              @extend %responsive-container-#{$breakpoint};\n            }\n\n            // Once the current breakpoint is reached, stop extending\n            @if ($breakpoint == $name) {\n              $extend-breakpoint: false;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"../config\" as *;\n@use \"../mixins/grid\" as *;\n\n// mdo-do\n// - check gap utilities as replacement for gutter classes from v5\n\n@layer layout {\n  @if $enable-grid-classes {\n    .row {\n      @include make-row();\n\n      > * {\n        @include make-col-ready();\n      }\n    }\n\n    @include make-grid-columns();\n  }\n\n  @if $enable-cssgrid {\n    .grid {\n      --columns: #{$grid-columns};\n      --rows: 1;\n      --gap: #{$grid-gutter-x};\n\n      display: grid;\n      grid-template-rows: repeat(var(--rows), 1fr);\n      grid-template-columns: repeat(var(--columns), 1fr);\n      gap: var(--gap);\n\n    }\n\n    @include make-cssgrid();\n  }\n\n  // mdo-do: add to utilities?\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n\n  .grid-fill {\n    --gap: #{$grid-gutter-x};\n\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n\n  // .g-col-auto {\n  //   grid-column: auto;\n  // }\n\n  // mdo-do: add to utilities?\n  // .grid-cols-3 {\n  //   --columns: 3;\n  // }\n  // .grid-cols-4 {\n  //   --columns: 4;\n  // }\n  // .grid-cols-6 {\n  //   --columns: 6;\n  // }\n\n  // .grid-full {\n  //   grid-column: 1 / -1;\n  // }\n}\n","@use \"sass:map\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n\n// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter-x: $grid-gutter-x, $gutter-y: $grid-gutter-y) {\n  --gutter-x: #{$gutter-x};\n  --gutter-y: #{$gutter-y};\n  display: flex;\n  flex-wrap: wrap;\n  // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n  margin-inline: calc(-.5 * var(--gutter-x));\n  margin-top: calc(-1 * var(--gutter-y));\n}\n\n@mixin make-col-ready() {\n  // Add box sizing if only the grid is loaded\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  box-sizing: if(sass(meta.variable-exists(include-column-box-sizing) and $include-column-box-sizing): border-box; else: null);\n  // Prevent columns from becoming too narrow when at smaller grid tiers by\n  // always setting `width: 100%;`. This works because we set the width\n  // later on to override this initial width.\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-top: var(--gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n  @if $size {\n    flex: 0 0 auto;\n    width: math.percentage(math.div($size, $columns));\n\n  } @else {\n    flex: 1 1 0;\n    max-width: 100%;\n  }\n}\n\n@mixin make-col-auto() {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n  $num: math.div($size, $columns);\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  margin-inline-start: if(sass($num == 0): 0; else: math.percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n  > * {\n    flex: 0 0 auto;\n    width: math.percentage(math.div(1, $count));\n  }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-x, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n      .col#{$infix} {\n        flex: 1 0 0;\n      }\n\n      .row-cols#{$infix}-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .row-cols#{$infix}-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .col#{$infix}-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .col#{$infix}-#{$i} {\n            @include make-col($i, $columns);\n          }\n        }\n\n        // `$columns - 1` because offsetting by the width of an entire row isn't possible\n        @for $i from 0 through ($columns - 1) {\n          @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .offset#{$infix}-#{$i} {\n              @include make-col-offset($i, $columns);\n            }\n          }\n        }\n      }\n\n      // Gutters\n      //\n      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n      @each $key, $value in $gutters {\n        .g#{$infix}-#{$key},\n        .gx#{$infix}-#{$key} {\n          --gutter-x: #{$value};\n        }\n\n        .g#{$infix}-#{$key},\n        .gy#{$infix}-#{$key} {\n          --gutter-y: #{$value};\n        }\n      }\n    }\n  }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .g-col#{$infix}-#{$i} {\n            grid-column: auto / span $i;\n          }\n        }\n\n        // Start with `1` because `0` is an invalid value.\n        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n        @for $i from 1 through ($columns - 1) {\n          .g-start#{$infix}-#{$i} {\n            grid-column-start: $i;\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"../functions\" as *;\n\n$form-label-tokens: () !default;\n\n// scss-docs-start form-label-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-label-tokens: defaults(\n  (\n    --label-margin-bottom: calc(var(--spacer) / 2),\n    --label-font-size: null,\n    --label-font-style: null,\n    --label-font-weight: null,\n    --label-color: null,\n  ),\n  $form-label-tokens\n);\n// scss-docs-end form-label-tokens\n\n@layer forms {\n  .form-label,\n  .col-form-label {\n    font-size: var(--label-font-size, var(--font-size-sm));\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, inherit);\n    color: var(--label-color, var(--fg-body));\n  }\n\n  .form-label {\n    margin-bottom: var(--label-margin-bottom, calc(var(--spacer) / 2));\n  }\n\n  // For use with horizontal and inline forms, when you need the label (or legend)\n  // text to align with the form controls.\n  .col-form-label {\n    --label-padding-y: calc(var(--btn-input-padding-y) + var(--border-width));\n    padding-block: var(--label-padding-y);\n    margin-bottom: 0; // Override the `<legend>` default\n  }\n\n  .col-form-label-lg {\n    --label-padding-y: calc(var(--btn-input-lg-padding-y) + var(--border-width));\n    font-size: var(--btn-input-lg-font-size);\n  }\n\n  .col-form-label-sm {\n    --label-padding-y: calc(var(--btn-input-sm-padding-y) + var(--border-width));\n    font-size: var(--btn-input-sm-font-size);\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/tokens\" as *;\n\n$form-text-tokens: () !default;\n\n// scss-docs-start form-text-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-text-tokens: defaults(\n  (\n    --form-text-margin-top: .25rem,\n    --form-text-font-size: var(--font-size-sm),\n    --form-text-font-style: null,\n    --form-text-font-weight: null,\n    --form-text-color: var(--fg-3),\n  ),\n  $form-text-tokens\n);\n// scss-docs-end form-text-tokens\n\n@layer forms {\n  .form-text {\n    @include tokens($form-text-tokens);\n\n    margin-top: var(--form-text-margin-top);\n    font-size: var(--form-text-font-size);\n    font-style: var(--form-text-font-style);\n    font-weight: var(--form-text-font-weight);\n    color: var(--form-text-color);\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/gradients\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$form-control-tokens: () !default;\n\n// scss-docs-start form-control-tokens\n// stylelint-disable custom-property-no-missing-var-function\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-control-tokens: defaults(\n  (\n    --control-min-height: var(--btn-input-min-height),\n    --control-padding-y: var(--btn-input-padding-y),\n    --control-padding-x: var(--btn-input-padding-x),\n    --control-font-size: var(--btn-input-font-size),\n    --control-line-height: var(--btn-input-line-height),\n    --control-fg: var(--btn-input-fg),\n    --control-bg: var(--btn-input-bg),\n    --control-border-width: var(--border-width),\n    --control-border-color: var(--border-color),\n    --control-border-radius: var(--border-radius),\n    --control-box-shadow: var(--box-shadow-inset),\n    --control-action-bg: var(--bg-1),\n    --control-action-hover-bg: var(--bg-2),\n    --control-transition-property: \"border-color, box-shadow\",\n    --control-transition-timing: .15s ease-in-out,\n    --control-transition: var(--control-transition-property) var(--control-transition-timing),\n    --control-placeholder-color: var(--fg-3),\n    --control-disabled-color: var(--control-fg),\n    --control-disabled-bg: var(--bg-2),\n    --control-disabled-border-color: var(--control-border-color),\n    --control-select-bg: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#00000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>\"))},\n    --control-select-bg-position: right .75rem center,\n    --control-select-bg-size: 16px 12px,\n    --control-select-bg-dark: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>\"))},\n  ),\n  $form-control-tokens\n);\n// scss-docs-end form-control-tokens\n\n// scss-docs-start form-control-sizes\n$form-control-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-control-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $form-control-sizes\n);\n// scss-docs-end form-control-sizes\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .form-control {\n    @include tokens($form-control-tokens);\n\n    display: flex;\n    width: 100%;\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    font-size: var(--control-font-size);\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    appearance: none;\n    background-color: var(--control-bg);\n    background-clip: padding-box;\n    border: var(--control-border-width) solid var(--control-border-color);\n    @include border-radius(var(--control-border-radius), 0);\n    @include box-shadow(var(--control-box-shadow));\n    @include transition(var(--control-transition));\n\n    // Customize the `:focus` state to imitate native WebKit styles.\n    &:focus-visible {\n      --focus-ring-offset: -1px;\n      @include focus-ring(true);\n    }\n\n    // Placeholder\n    &::placeholder {\n      color: var(--control-placeholder-color);\n      // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.\n      opacity: 1;\n    }\n\n    // Disabled inputs\n    //\n    // HTML5 says that controls under a fieldset > legend:first-child won't be\n    // disabled if the fieldset is disabled. Due to implementation difficulty, we\n    // don't honor that edge case; we style them as disabled anyway.\n    &:disabled {\n      color: var(--control-disabled-color);\n      background-color: var(--control-disabled-bg);\n      border-color: var(--control-disabled-border-color);\n      // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.\n      opacity: 1;\n    }\n\n    // Date and time inputs\n    // &::-webkit-date-and-time-value {\n    //   // On Android Chrome, form-control's \"width: 100%\" makes the input width too small\n    //   // Tested under Android 11 / Chrome 89, Android 12 / Chrome 100, Android 13 / Chrome 109\n    //   //\n    //   // On iOS Safari, form-control's \"appearance: none\" + \"width: 100%\" makes the input width too small\n    //   // Tested under iOS 16.2 / Safari 16.2\n    //   min-width: 85px; // Seems to be a good minimum safe width\n\n    //   // Add some height to date inputs on iOS\n    //   // https://github.com/twbs/bootstrap/issues/23307\n    //   // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved\n    //   // Multiply line-height by 1em if it has no unit\n    //   height: 1.5em;\n\n    //   // Android Chrome type=\"date\" is taller than the other inputs\n    //   // because of \"margin: 1px 24px 1px 4px\" inside the shadow DOM\n    //   // Tested under Android 11 / Chrome 89, Android 12 / Chrome 100, Android 13 / Chrome 109\n    //   margin: 0;\n    //   background-color: var(--red-500);\n    // }\n\n    // Prevent excessive date input height in Webkit\n    // https://github.com/twbs/bootstrap/issues/34433\n\n    // mdo-do: need to check this stuff out across browsers\n    &::-webkit-datetime-edit {\n      display: block;\n      height: 1.5rem;\n      padding: 0;\n      margin-bottom: -.125rem;\n    }\n    &::-webkit-datetime-edit-fields-wrapper {\n      height: 1.5rem;\n    }\n\n    // File inputs\n    &[type=\"file\"] {\n      overflow: hidden; // prevent pseudo element button overlap\n\n      &:not(:disabled):not([readonly]) {\n        cursor: pointer;\n      }\n    }\n    &::file-selector-button {\n      min-height: var(--control-min-height);\n      padding: var(--control-padding-y) var(--control-padding-x);\n      margin: calc(var(--control-padding-y) * -1) calc(var(--control-padding-x) * -1);\n      margin-inline-end: var(--control-padding-x);\n      color: var(--control-fg);\n      @include gradient-bg(var(--control-action-bg));\n      pointer-events: none;\n      border-color: inherit;\n      border-style: solid;\n      border-width: 0;\n      border-inline-end-width: var(--control-border-width);\n      border-radius: 0; // stylelint-disable-line property-disallowed-list\n      @include transition(var(--control-transition));\n    }\n\n    &:hover:not(:disabled):not([readonly])::file-selector-button {\n      background-color: var(--control-action-hover-bg);\n    }\n  }\n\n  // Readonly controls as plain text\n  //\n  // Apply class to a readonly input to make it appear like regular plain\n  // text (without any border, background color, focus indicator)\n\n  .form-control-plaintext {\n    display: block;\n    width: 100%;\n    padding: var(--control-padding-y) 0;\n    margin-bottom: 0; // match inputs if this class comes on inputs with default margins\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    background-color: transparent;\n    border: solid transparent;\n    border-width: var(--control-border-width) 0;\n\n    &:focus {\n      outline: 0;\n    }\n\n    &.form-control-sm,\n    &.form-control-lg {\n      padding-inline: 0;\n    }\n  }\n\n  // stylelint-disable selector-no-qualifying-type\n  select.form-control {\n    padding-inline-end: calc(var(--control-padding-x) * 3);\n    background-image: var(--control-select-bg);\n    background-repeat: no-repeat;\n    background-position: var(--control-select-bg-position);\n    background-size: var(--control-select-bg-size);\n\n    &[multiple],\n    &[size]:not([size=\"1\"]) {\n      padding-inline-end: var(--control-padding-x);\n      background-image: none;\n    }\n  }\n\n  @media (prefers-color-scheme: dark) {\n    select.form-control {\n      background-image: var(--control-select-bg-dark);\n    }\n  }\n  // stylelint-enable selector-no-qualifying-type\n\n  // Form control sizing\n  //\n  // Build on `.form-control` with modifier classes to decrease or increase the\n  // height and font-size of form controls.\n  //\n  // Repeated in `_input_group.scss` to avoid Sass extend issues.\n  @each $size, $_ in $form-control-sizes {\n    .form-control-#{$size} {\n      --control-min-height: var(--btn-input-#{$size}-min-height);\n      --control-padding-y: var(--btn-input-#{$size}-padding-y);\n      --control-padding-x: var(--btn-input-#{$size}-padding-x);\n      --control-font-size: var(--btn-input-#{$size}-font-size);\n      --control-line-height: var(--btn-input-#{$size}-line-height);\n      --control-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n\n  .form-control-color {\n    width: var(--control-min-height);\n    padding: var(--control-padding-y);\n\n    &:not(:disabled):not([readonly]) {\n      cursor: pointer;\n    }\n\n    &::-moz-color-swatch {\n      border: 0 !important; // stylelint-disable-line declaration-no-important\n      @include border-radius(var(--border-radius-sm));\n    }\n\n    &::-webkit-color-swatch {\n      border: 0 !important; // stylelint-disable-line declaration-no-important\n      @include border-radius(var(--border-radius-sm));\n    }\n  }\n\n  // Ghost input - removes all visual styling\n  // Used inside custom wrappers that handle their own styling\n  .form-ghost {\n    display: block;\n    width: 100%;\n    padding: 0;\n    font: inherit;\n    color: inherit;\n    appearance: none;\n    background: transparent;\n    border: 0;\n\n    &:focus {\n      outline: 0;\n    }\n\n    &::placeholder {\n      color: var(--fg-3);\n      opacity: 1;\n    }\n\n    &:disabled {\n      color: var(--fg-4);\n      cursor: not-allowed;\n    }\n  }\n}\n","@mixin focus-ring($offset: false, $color: null) {\n  @if $color != null {\n    outline: var(--focus-ring-width) solid #{$color};\n  } @else {\n    outline: var(--focus-ring);\n  }\n  @if $offset {\n    outline-offset: var(--focus-ring-offset);\n  }\n}\n","@use \"../colors\" as *;\n@use \"../config\" as *;\n\n// Gradients\n\n// scss-docs-start gradient-bg-mixin\n@mixin gradient-bg($color: null) {\n  background-color: $color;\n\n  @if $enable-gradients {\n    background-image: var(--gradient);\n  }\n}\n// scss-docs-end gradient-bg-mixin\n\n// scss-docs-start gradient-mixins\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: var(--gray-700), $end-color: var(--gray-800), $start-percent: 0%, $end-percent: 100%) {\n  background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: var(--gray-700), $end-color: var(--gray-800), $start-percent: null, $end-percent: null) {\n  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n}\n\n@mixin gradient-directional($start-color: var(--gray-700), $end-color: var(--gray-800), $deg: 45deg) {\n  background-image: linear-gradient($deg, $start-color, $end-color);\n}\n\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-radial($inner-color: var(--gray-700), $outer-color: var(--gray-800)) {\n  background-image: radial-gradient(circle, $inner-color, $outer-color);\n}\n\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\n  background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n// scss-docs-end gradient-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$check-tokens: () !default;\n\n// scss-docs-start check-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$check-tokens: defaults(\n  (\n    --check-size: 1.25rem,\n    --check-margin-block: .125rem,\n    --check-bg: transparent,\n    --check-border-color: var(--border-color),\n    --check-border-radius: .375rem,\n    --check-checked-bg: var(--control-checked-bg),\n    --check-checked-border-color: var(--control-checked-border-color),\n    --check-indeterminate-bg: var(--control-checked-bg),\n    --check-indeterminate-border-color: var(--control-checked-border-color),\n    --check-active-bg: var(--control-active-bg),\n    --check-active-border-color: var(--control-active-border-color),\n    --check-disabled-bg: var(--control-disabled-bg),\n    --check-disabled-opacity: var(--control-disabled-opacity),\n  ),\n  $check-tokens\n);\n// scss-docs-end check-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .checkgroup {\n    display: flex;\n    gap: var(--gap, .5rem);\n    align-items: var(--align-items, start);\n\n    .description {\n      color: var(--fg-3);\n    }\n  }\n\n  .check {\n    @include tokens($check-tokens);\n\n    display: grid;\n    grid-template-columns: repeat(1, minmax(0, 1fr));\n    margin-block: var(--check-margin-block);\n\n    :where(svg, input) {\n      flex-shrink: 0;\n      grid-row-start: 1;\n      grid-column-start: 1;\n      width: var(--check-size);\n      height: var(--check-size);\n    }\n\n    :where(input) {\n      appearance: none;\n      // later: maybe set a tertiary bg color?\n      background-color: var(--theme-bg, var(--check-bg));\n      border: 1px solid var(--theme-bg, var(--check-border-color));\n      // stylelint-disable-next-line property-disallowed-list\n      border-radius: .3em;\n    }\n\n    :where(input:checked, input:indeterminate) {\n      background-color: var(--theme-bg, var(--check-checked-bg));\n      border-color: var(--theme-bg, var(--check-checked-border-color));\n    }\n\n    :where(input:focus-visible) {\n      @include focus-ring(true);\n    }\n\n    &:has(input:checked) .checked,\n    &:has(input:indeterminate) .indeterminate {\n      display: block;\n      color: var(--theme-contrast, var(--primary-contrast));\n      stroke: currentcolor;\n    }\n\n    &:has(input:disabled) {\n      --check-bg: var(--check-disabled-bg);\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n    &:has(input:disabled:checked) {\n      opacity: var(--check-disabled-opacity);\n    }\n\n    :where(svg) {\n      pointer-events: none;\n    }\n\n    :where(svg path) {\n      display: none;\n    }\n  }\n\n  .check-sm {\n    --check-size: 1rem;\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: 0;\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$radio-tokens: () !default;\n\n// scss-docs-start radio-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$radio-tokens: defaults(\n  (\n    --radio-size: 1.25rem,\n    --radio-margin-block: .125rem,\n    --radio-bg: transparent,\n    --radio-border-color: var(--border-color),\n    --radio-checked-bg: var(--control-checked-bg),\n    --radio-checked-border-color: var(--control-checked-border-color),\n    --radio-disabled-bg: var(--control-disabled-bg),\n    --radio-disabled-opacity: var(--control-disabled-opacity),\n  ),\n  $radio-tokens\n);\n// scss-docs-end radio-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .radiogroup {\n    display: flex;\n    gap: var(--gap, .5rem);\n    align-items: var(--align-items, start);\n\n    .description {\n      color: var(--fg-3);\n    }\n  }\n\n  .radio {\n    @include tokens($radio-tokens);\n\n    position: relative;\n    flex-shrink: 0;\n    width: var(--radio-size);\n    height: var(--radio-size);\n    margin-block: var(--radio-margin-block);\n    appearance: none;\n    background-color: var(--theme-bg, var(--radio-bg));\n    border: 1px solid var(--theme-bg, var(--radio-border-color));\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 50%;\n\n    &:checked {\n      color: var(--theme-contrast, var(--primary-contrast));\n      background-color: var(--theme-bg, var(--radio-checked-bg));\n      border-color: var(--theme-bg, var(--radio-checked-border-color));\n\n      &::before {\n        position: absolute;\n        inset: .25rem;\n        content: \"\";\n        background-color: currentcolor;\n        // stylelint-disable-next-line property-disallowed-list\n        border-radius: 50%;\n      }\n    }\n\n    &:disabled {\n      --radio-bg: var(--radio-disabled-bg);\n\n      ~ label {\n        color: var(--secondary-text);\n        cursor: default;\n      }\n    }\n\n    &:focus-visible {\n      @include focus-ring(true);\n    }\n  }\n\n  .radio-sm {\n    --radio-size: 1rem;\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: 0;\n  }\n}\n","@use \"../colors\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$switch-tokens: () !default;\n\n// scss-docs-start switch-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$switch-tokens: defaults(\n  (\n    --switch-height: 1.25rem,\n    --switch-width: calc(var(--switch-height) * 1.5),\n    --switch-padding: .0625rem,\n    --switch-margin-block: .125rem,\n    --switch-bg: var(--bg-3),\n    --switch-border-width: var(--border-width),\n    --switch-border-color: var(--border-color),\n    --switch-indicator-bg: var(--white),\n    --switch-checked-bg: var(--control-checked-bg),\n    --switch-checked-border-color: var(--switch-checked-bg),\n    --switch-checked-indicator-bg: var(--white),\n    --switch-disabled-bg: var(--control-disabled-bg),\n    --switch-disabled-indicator-bg: var(--fg-3),\n  ),\n  $switch-tokens\n);\n// scss-docs-end switch-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .switch {\n    @include tokens($switch-tokens);\n\n    position: relative;\n    display: flex;\n    flex-shrink: 0;\n    align-items: stretch;\n    justify-content: flex-start;\n    width: var(--switch-width);\n    height: var(--switch-height);\n    padding: var(--switch-padding);\n    margin-block: var(--switch-margin-block);\n    background-color: var(--switch-bg);\n    border: var(--switch-border-width) solid var(--switch-border-color);\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 10rem;\n    box-shadow: inset 0 1px 2px rgba($black, .05);\n    // stylelint-disable-next-line property-disallowed-list\n    transition: .15s ease-in-out;\n    transition-property: padding-inline-start, background-color;\n\n    &::before {\n      flex-shrink: 0;\n      width: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2);\n      height: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2);\n      content: \"\";\n      background-color: var(--theme-contrast, var(--switch-indicator-bg));\n      // stylelint-disable-next-line property-disallowed-list\n      border-radius: 50%;\n      box-shadow: 0 1px 2px rgba($black, .1);\n    }\n\n    input {\n      position: absolute;\n      inset: 0;\n      appearance: none;\n      background-color: transparent;\n      outline: 0;\n    }\n\n    &:focus-within {\n      @include focus-ring(true);\n    }\n\n    &:has(input:checked) {\n      padding-inline-start: calc(var(--switch-height) / 2 + var(--switch-padding));\n      background-color: var(--theme-bg, var(--switch-checked-bg));\n      border-color: var(--theme-bg, var(--switch-checked-border-color));\n    }\n\n    &:has(input:disabled) {\n      --switch-bg: var(--switch-disabled-bg);\n      --switch-indicator-bg: var(--switch-disabled-indicator-bg);\n\n      &::before { opacity: .4; }\n\n      ~ label {\n        color: var(--secondary-text);\n        cursor: default;\n      }\n    }\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: 0;\n  }\n}\n","@use \"../colors\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/transition\" as *;\n@use \"../mixins/gradients\" as *;\n@use \"../mixins/tokens\" as *;\n\n$range-tokens: () !default;\n\n// scss-docs-start range-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$range-tokens: defaults(\n  (\n    --range-track-width: 100%,\n    --range-track-height: .5rem,\n    --range-track-cursor: pointer,\n    --range-track-bg: var(--bg-3),\n    --range-track-border-radius: 1rem,\n    --range-track-box-shadow: var(--box-shadow-inset),\n    --range-thumb-width: 1rem,\n    --range-thumb-height: var(--range-thumb-width),\n    --range-thumb-bg: var(--primary-base),\n    --range-thumb-border: 0,\n    --range-thumb-border-radius: 1rem,\n    --range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1),\n    --range-thumb-active-bg: color-mix(in oklch, var(--primary-base) 70%, var(--bg-body)),\n    --range-thumb-disabled-bg: var(--fg-3),\n    --range-thumb-transition-property: \"background-color, border-color, box-shadow\",\n    --range-thumb-transition-timing: .15s ease-in-out,\n    --range-thumb-transition: var(--range-thumb-transition-property) var(--range-thumb-transition-timing),\n  ),\n  $range-tokens\n);\n// scss-docs-end range-tokens\n\n// scss-docs-start range-mixins\n@mixin range-thumb() {\n  width: var(--range-thumb-width);\n  height: var(--range-thumb-height);\n  appearance: none;\n  @include gradient-bg(var(--range-thumb-bg));\n  border: var(--range-thumb-border);\n  @include border-radius(var(--range-thumb-border-radius));\n  @include box-shadow(var(--range-thumb-box-shadow));\n  @include transition(var(--range-thumb-transition));\n\n  &:active {\n    @include gradient-bg(var(--range-thumb-active-bg));\n  }\n}\n\n@mixin range-track() {\n  width: var(--range-track-width);\n  height: var(--range-track-height);\n  color: transparent; // Why?\n  cursor: var(--range-track-cursor);\n  background-color: var(--range-track-bg);\n  border-color: transparent; // Firefox specific?\n  @include border-radius(var(--range-track-border-radius));\n  @include box-shadow(var(--range-track-box-shadow));\n}\n// scss-docs-end range-mixins\n\n@layer forms {\n  .form-range {\n    @include tokens($range-tokens);\n\n    width: 100%;\n    height: calc(var(--range-thumb-height) + (var(--focus-ring-width) * 2));\n    padding: 0; // Need to reset padding\n    appearance: none;\n    background-color: transparent;\n\n    &:focus {\n      outline: 0;\n\n      // Pseudo-elements must be split across multiple rulesets to have an effect.\n      &::-webkit-slider-thumb {\n        @include focus-ring(true);\n        --focus-ring-offset: 1px;\n      }\n      &::-moz-range-thumb     {\n        @include focus-ring(true);\n        --focus-ring-offset: 1px;\n      }\n    }\n\n    &::-moz-focus-outer {\n      border: 0;\n    }\n\n    &::-webkit-slider-thumb {\n      @include range-thumb();\n      margin-top: calc((var(--range-track-height) - var(--range-thumb-height)) * .5); // Webkit specific\n    }\n\n    &::-moz-range-thumb {\n      @include range-thumb();\n    }\n\n    &::-webkit-slider-runnable-track {\n      @include range-track();\n    }\n\n    &::-moz-range-track {\n      @include range-track();\n    }\n\n    &:disabled {\n      pointer-events: none;\n\n      &::-webkit-slider-thumb {\n        background-color: var(--range-thumb-disabled-bg);\n      }\n\n      &::-moz-range-thumb {\n        background-color: var(--range-thumb-disabled-bg);\n      }\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$form-floating-tokens: () !default;\n\n// scss-docs-start form-floating-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-floating-tokens: defaults(\n  (\n    --form-floating-height: calc(3.5rem + (var(--border-width) * 2)),\n    --form-floating-line-height: 1.25,\n    --form-floating-padding-x: var(--btn-input-padding-x),\n    --form-floating-padding-y: 1rem,\n    --form-floating-input-padding-t: 1.625rem,\n    --form-floating-input-padding-b: .625rem,\n    --form-floating-label-height: 1.5em,\n    --form-floating-label-opacity: .65,\n    --form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem),\n    --form-floating-label-disabled-color: var(--fg-3),\n    --form-floating-transition-property: \"opacity, transform\",\n    --form-floating-transition-timing: .1s ease-in-out,\n    --form-floating-transition: var(--form-floating-transition-property) var(--form-floating-transition-timing),\n  ),\n  $form-floating-tokens\n);\n// scss-docs-end form-floating-tokens\n\n@layer forms {\n  .form-floating {\n    @include tokens($form-floating-tokens);\n\n    position: relative;\n\n    > label {\n      position: absolute;\n      inset-block-start: 0;\n      inset-inline-start: 0;\n      z-index: 2;\n      display: flex;\n      align-items: center;\n      max-width: 100%;\n      height: 100%; // allow textareas\n      padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n      overflow: hidden;\n      color: color-mix(in oklch, var(--fg-body) var(--form-floating-label-opacity), transparent);\n      text-align: start;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n      pointer-events: none;\n      border: var(--input-btn-border-width) solid transparent; // Required for aligning label's text with the input as it affects inner box model\n      transform-origin: 0 0;\n      @include transition(var(--form-floating-transition));\n    }\n\n    > .form-control,\n    > .form-control-plaintext {\n      height: var(--form-floating-height);\n      min-height: var(--form-floating-height);\n      padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n      line-height: var(--form-floating-line-height);\n\n      &::placeholder {\n        color: transparent;\n      }\n\n      &:focus,\n      &:not(:placeholder-shown) {\n        padding-top: var(--form-floating-input-padding-t);\n        padding-bottom: var(--form-floating-input-padding-b);\n      }\n      // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n      &:-webkit-autofill {\n        padding-top: var(--form-floating-input-padding-t);\n        padding-bottom: var(--form-floating-input-padding-b);\n      }\n    }\n\n    > .form-control:focus,\n    > .form-control:not(:placeholder-shown),\n    > .form-control-plaintext {\n      ~ label {\n        transform: var(--form-floating-label-transform);\n      }\n    }\n\n    // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n    > .form-control:-webkit-autofill {\n      ~ label {\n        transform: var(--form-floating-label-transform);\n      }\n    }\n    > textarea:focus,\n    > textarea:not(:placeholder-shown) {\n      ~ label::after {\n        position: absolute;\n        inset: var(--form-floating-padding-y) calc(var(--form-floating-padding-x) * .5);\n        z-index: -1;\n        height: var(--form-floating-label-height);\n        content: \"\";\n        background-color: var(--control-bg);\n        @include border-radius(var(--btn-input-border-radius));\n      }\n    }\n    > textarea:disabled ~ label::after {\n      background-color: var(--control-disabled-bg);\n    }\n\n    > .form-control-plaintext {\n      ~ label {\n        border-width: var(--control-border-width) 0; // Required to properly position label text - as explained above\n      }\n    }\n\n    > :disabled ~ label,\n    > .form-control:disabled ~ label { // Required for `.form-control`s because of specificity\n      color: var(--form-floating-label-disabled-color);\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"sass:string\";\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"form-variables\" as *;\n\n$input-group-addon-tokens: () !default;\n\n// scss-docs-start input-group-addon-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$input-group-addon-tokens: defaults(\n  (\n    --input-group-addon-padding-y: var(--btn-input-padding-y),\n    --input-group-addon-padding-x: var(--btn-input-padding-x),\n    --input-group-addon-font-size: var(--btn-input-font-size),\n    --input-group-addon-line-height: var(--btn-input-line-height),\n    --input-group-addon-color: var(--fg-body),\n    --input-group-addon-bg: var(--bg-2),\n    --input-group-addon-border-color: var(--border-color),\n  ),\n  $input-group-addon-tokens\n);\n// scss-docs-end input-group-addon-tokens\n\n// scss-docs-start input-group-sizes\n$input-group-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$input-group-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $input-group-sizes\n);\n// scss-docs-end input-group-sizes\n\n@layer components {\n  .input-group {\n    @include tokens($input-group-addon-tokens);\n\n    position: relative;\n    display: flex;\n    flex-wrap: wrap; // For form validation feedback\n    align-items: stretch;\n    width: 100%;\n\n    > .form-control,\n    > .form-floating {\n      position: relative; // For focus state's z-index\n      flex: 1 1 auto;\n      width: 1%;\n      min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size\n    }\n\n    // Bring the \"active\" form control to the top of surrounding elements\n    > .form-control:focus,\n    > .form-floating:focus-within {\n      z-index: 5;\n    }\n\n    // Ensure buttons are always above inputs for more visually pleasing borders.\n    // This isn't needed for `.input-group-text` since it shares the same border-color\n    // as our inputs.\n    > .input-group-btn {\n      position: relative;\n      z-index: 2;\n\n      &:focus {\n        z-index: 5;\n      }\n    }\n  }\n\n  // Textual addons\n  //\n  // Serves as a catch-all element for any text or radio/checkbox input you wish\n  // to prepend or append to an input.\n\n  .input-group-text {\n    display: flex;\n    align-items: center;\n    padding: var(--input-group-addon-padding-y) var(--input-group-addon-padding-x);\n    font-size: var(--input-group-addon-font-size); // Match inputs\n    // font-weight: $input-group-addon-font-weight;\n    line-height: var(--input-group-addon-line-height);\n    color: var(--input-group-addon-color);\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--input-group-addon-bg);\n    border: var(--border-width) solid var(--input-group-addon-border-color);\n    @include border-radius(var(--btn-input-border-radius));\n  }\n\n  // Sizing\n  //\n  // Remix the default form control sizing classes into new ones for easier\n  // manipulation.\n\n  @each $size, $_ in $input-group-sizes {\n    .input-group-#{$size} {\n      > .form-control,\n      > .input-group-text,\n      > .btn {\n        min-height: var(--btn-input-#{$size}-min-height);\n        padding: var(--btn-input-#{$size}-padding-y) var(--btn-input-#{$size}-padding-x);\n        font-size: var(--btn-input-#{$size}-font-size);\n        @include border-radius(var(--btn-input-#{$size}-border-radius));\n      }\n    }\n  }\n\n  // Rounded corners\n  //\n  // These rulesets must come after the sizing ones to properly override sm and lg\n  // border-radius values when extending. They're more specific than we'd like\n  // with the `.input-group >` part, but without it, we cannot override the sizing.\n\n  // stylelint-disable-next-line no-duplicate-selectors\n  .input-group {\n\n    $validation-messages: \"\";\n    &:not(.has-validation) {\n      > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n      > .dropdown-toggle:nth-last-child(n + 3),\n      > .form-floating:not(:last-child) > .form-control,\n      > .form-floating:not(:last-child) > .form-select {\n        @include border-end-radius(0);\n      }\n    }\n\n    &.has-validation {\n      > :nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),\n      > .dropdown-toggle:nth-last-child(n + 4),\n      > .form-floating:nth-last-child(n + 3) > .form-control,\n      > .form-floating:nth-last-child(n + 3) > .form-select {\n        @include border-end-radius(0);\n      }\n    }\n\n    > :not(:first-child):not(.dropdown-menu)#{$validation-messages} {\n      margin-inline-start: calc(-1 * var(--border-width));\n      @include border-start-radius(0);\n    }\n\n    > .form-floating:not(:first-child) > .form-control,\n    > .form-floating:not(:first-child) > .form-select {\n      @include border-start-radius(0);\n    }\n    @each $state in map.keys($form-validation-states) {\n      $validation-messages: $validation-messages + \":not(.\" + string.unquote($state) + \"-tooltip)\" + \":not(.\" + string.unquote($state) + \"-feedback)\";\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$strength-tokens: () !default;\n\n// scss-docs-start strength-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$strength-tokens: defaults(\n  (\n    --strength-height: .375rem,\n    --strength-gap: .25rem,\n    --strength-margin-top: .25rem,\n    --strength-border-radius: var(--border-radius-pill),\n    --strength-bg: var(--bg-2),\n    --strength-color: var(--bg-2),\n    --strength-weak-color: var(--danger-bg),\n    --strength-fair-color: var(--warning-bg),\n    --strength-good-color: var(--info-bg),\n    --strength-strong-color: var(--success-bg),\n  ),\n  $strength-tokens\n);\n// scss-docs-end strength-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start strength-levels\n$strength-levels: weak, fair, good, strong !default;\n// scss-docs-end strength-levels\n\n$strength-transition: background-color .2s ease-in-out, width .3s ease-in-out !default;\n\n@layer forms {\n  // Strength meter container\n  .strength {\n    @include tokens($strength-tokens);\n\n    display: flex;\n    gap: var(--strength-gap);\n    width: 100%;\n    margin-top: var(--strength-margin-top);\n  }\n\n  // Individual strength segments\n  .strength-segment {\n    flex: 1;\n    height: var(--strength-height);\n    background-color: var(--strength-bg);\n    @include border-radius(var(--strength-border-radius));\n    @include transition($strength-transition);\n\n    // Filled state\n    &.active {\n      background-color: var(--strength-color);\n    }\n  }\n\n  @each $level in $strength-levels {\n    .strength[data-bs-strength=\"#{$level}\"] {\n      --strength-color: var(--strength-#{$level}-color);\n    }\n  }\n  // Optional text feedback\n  .strength-text {\n    display: block;\n    margin-top: var(--strength-margin-top);\n    font-size: var(--font-size-xs);\n    color: var(--strength-color, var(--fg-3));\n    @include transition(color .2s ease-in-out);\n\n    // Hide when empty\n    &:empty {\n      display: none;\n    }\n  }\n\n  // Alternative: Single bar variant (like a progress bar)\n  .strength-bar {\n    @include tokens($strength-tokens);\n\n    --strength-color: transparent;\n    --strength-width: 0%;\n\n    width: 100%;\n    height: var(--strength-height);\n    margin-top: var(--strength-margin-top);\n    overflow: hidden;\n    background-color: var(--strength-bg);\n    @include border-radius(var(--strength-border-radius));\n\n    &::after {\n      display: block;\n      width: var(--strength-width);\n      height: 100%;\n      content: \"\";\n      background-color: var(--strength-color);\n      @include border-radius(var(--strength-border-radius));\n      @include transition($strength-transition);\n    }\n\n    @each $level in $strength-levels {\n      &[data-bs-strength=\"#{$level}\"] {\n        --strength-color: var(--strength-#{$level}-color);\n        --strength-width: #{list.index($strength-levels, $level) * 25%};\n      }\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$otp-tokens: () !default;\n\n// scss-docs-start otp-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$otp-tokens: defaults(\n  (\n    --otp-size: var(--btn-input-lg-min-height),\n    --otp-font-size: var(--btn-input-font-size),\n    --otp-gap: .5rem,\n  ),\n  $otp-tokens\n);\n// scss-docs-end otp-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start otp-sizes\n$otp-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$otp-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $otp-sizes\n);\n// scss-docs-end otp-sizes\n\n@layer components {\n  .otp {\n    @include tokens($otp-tokens);\n\n    display: inline-flex;\n    gap: var(--otp-gap);\n\n    .form-control {\n      width: var(--otp-size);\n      min-height: var(--otp-size);\n      padding: 0;\n      font-size: var(--otp-font-size);\n      font-weight: 500;\n      line-height: 1;\n      text-align: center;\n      @include border-radius(var(--otp-border-radius, var(--btn-input-border-radius)));\n\n      // Remove default number spinners\n      &::-webkit-outer-spin-button,\n      &::-webkit-inner-spin-button {\n        margin: 0;\n        appearance: none;\n      }\n\n      &[type=\"number\"] {\n        appearance: textfield;\n      }\n\n      &:focus,\n      &:focus-visible {\n        z-index: 1;\n      }\n    }\n\n    &.is-valid .form-control,\n    .was-validated &:valid .form-control {\n      border-color: var(--form-valid-border-color);\n\n      &:focus {\n        --focus-ring-color: rgba(var(--success-rgb), .25);\n        border-color: var(--form-valid-border-color);\n      }\n    }\n\n    &.is-invalid .form-control,\n    .was-validated &:invalid .form-control {\n      border-color: var(--form-invalid-border-color);\n\n      &:focus {\n        --focus-ring-color: rgba(var(--danger-rgb), .25);\n        border-color: var(--form-invalid-border-color);\n      }\n    }\n  }\n\n  // When used with .input-group, disable the gap and prevent inputs from stretching\n  .otp.input-group {\n    gap: 0;\n    width: auto; // Override input-group's width: 100%\n\n    .form-control {\n      flex: 0 0 auto; // Don't grow or shrink, use fixed width\n    }\n  }\n\n  .otp-separator {\n    display: flex;\n    align-items: center;\n    padding-inline: var(--otp-gap);\n    font-size: var(--otp-font-size);\n    color: var(--fg-4);\n    user-select: none;\n  }\n\n  @each $size, $_ in $otp-sizes {\n    .otp-#{$size} {\n      --otp-size: var(--btn-input-#{$size}-min-height);\n      --otp-font-size: var(--btn-input-#{$size}-font-size);\n      --otp-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n$form-adorn-tokens: () !default;\n\n// scss-docs-start form-adorn-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-adorn-tokens: defaults(\n  (\n    --form-adorn-gap: .375rem,\n    --form-adorn-icon-size: 1rem,\n    --form-adorn-icon-color: var(--fg-2),\n  ),\n  $form-adorn-tokens\n);\n// scss-docs-end form-adorn-tokens\n\n@layer forms {\n  .form-adorn {\n    @include tokens($form-adorn-tokens);\n\n    gap: var(--form-adorn-gap);\n    align-items: center;\n\n    // Prevent default `.form-control` focus\n    &:focus-visible {\n      outline: 0;\n    }\n\n    &:focus-within {\n      --focus-ring-offset: -1px;\n      border-color: var(--focus-ring-color);\n      @include focus-ring(true);\n    }\n\n    // Ghost input fills remaining space\n    > .form-ghost {\n      flex: 1;\n      min-width: 0; // Prevent text overflow\n    }\n\n    &.form-adorn-end > .form-ghost {\n      order: -1;\n    }\n  }\n\n  .form-adorn-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n\n    > svg {\n      width: var(--form-adorn-icon-size);\n      height: var(--form-adorn-icon-size);\n    }\n  }\n\n  .form-adorn-text {\n    flex-shrink: 0;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n    user-select: none;\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n$chip-input-tokens: () !default;\n\n// scss-docs-start chip-input-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$chip-input-tokens: defaults(\n  (\n    --chip-input-padding-y: .75rem,\n    --chip-input-padding-x: .75rem,\n    --chip-input-gap: .375rem,\n    --chip-input-ghost-min-width: 5rem,\n    --control-fg: var(--btn-input-fg),\n    --control-bg: var(--btn-input-bg),\n    --control-border-width: var(--border-width),\n    --control-border-color: var(--border-color),\n    --control-border-radius: var(--border-radius),\n  ),\n  $chip-input-tokens\n);\n// scss-docs-end chip-input-tokens\n\n@layer forms {\n  .chip-input {\n    @include tokens($chip-input-tokens);\n\n    // Flexbox wrapping layout\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--chip-input-gap);\n    align-items: center;\n    padding: var(--chip-input-padding-y) var(--chip-input-padding-x);\n\n    color: var(--control-fg);\n    background-color: var(--control-bg);\n    border: var(--control-border-width) solid var(--control-border-color);\n    @include border-radius(var(--control-border-radius), 0);\n\n    // Focus state when ghost input is focused\n    &:focus-within {\n      --focus-ring-offset: -1px;\n      border-color: var(--focus-ring-color);\n      @include focus-ring(true);\n    }\n\n    // Ghost input fills remaining space\n    > .form-ghost {\n      flex: 1 1 0;\n      min-width: var(--chip-input-ghost-min-width);\n      min-height: 1.75rem;\n    }\n\n    // Disabled state\n    &.disabled,\n    &:has(.form-ghost:disabled) {\n      background-color: var(--bg-2);\n      opacity: 1;\n\n      > .chip {\n        opacity: var(--control-disabled-opacity);\n\n        .chip-dismiss {\n          pointer-events: none;\n        }\n      }\n\n      > .form-ghost {\n        cursor: not-allowed;\n      }\n    }\n  }\n\n  // Theme cascade: .chip-input.theme-* passes theme to child chips\n  // Chips inherit theme variables from parent\n  // @each $color-name, $theme-props in $theme-map {\n  //   .chip-input.theme-#{$color-name} > .chip {\n  //     // Subtle default state\n  //     --chip-color: var(--theme-text);\n  //     --chip-bg: var(--theme-bg-subtle);\n\n  //     // Selected/active solid state\n  //     --chip-selected-color: var(--theme-contrast);\n  //     --chip-selected-bg: var(--theme-bg);\n  //     --chip-selected-border-color: var(--theme-bg);\n  //   }\n  // }\n\n  // // Sizing variants\n  // .chip-input-sm {\n  //   --control-min-height: #{$control-min-height-sm};\n  //   --control-padding-y: #{$control-padding-y-sm};\n  //   --control-padding-x: #{$control-padding-x-sm};\n  //   --control-font-size: #{$control-font-size-sm};\n  //   --control-line-height: #{$control-line-height-sm};\n  //   --control-border-radius: #{$control-border-radius-sm};\n  //   --chip-input-gap: .25rem;\n  //   --chip-input-chip-font-size: .8125em;\n  // }\n\n  // .chip-input-lg {\n  //   --control-min-height: #{$control-min-height-lg};\n  //   --control-padding-y: #{$control-padding-y-lg};\n  //   --control-padding-x: #{$control-padding-x-lg};\n  //   --control-font-size: #{$control-font-size-lg};\n  //   --control-line-height: #{$control-line-height-lg};\n  //   --control-border-radius: #{$control-border-radius-lg};\n  //   --chip-input-gap: .5rem;\n  //   --chip-input-chip-font-size: .9375em;\n  // }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/reset-text\" as *;\n@use \"mixins/tokens\" as *;\n\n$tooltip-tokens: () !default;\n\n// scss-docs-start tooltip-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$tooltip-tokens: defaults(\n  (\n    --tooltip-zindex: #{$zindex-tooltip},\n    --tooltip-max-width: 200px,\n    --tooltip-padding-x: #{$spacer * .75},\n    --tooltip-padding-y: #{$spacer * .375},\n    --tooltip-font-size: var(--font-size-sm),\n    --tooltip-color: var(--bg-body),\n    --tooltip-bg: var(--fg-body),\n    --tooltip-border-radius: var(--border-radius),\n    --tooltip-opacity: .95,\n    --tooltip-arrow-width: .8rem,\n    --tooltip-arrow-height: .4rem,\n  ),\n  $tooltip-tokens\n);\n// scss-docs-end tooltip-tokens\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y:     var(--tooltip-padding-y) !default;\n$form-feedback-tooltip-padding-x:     var(--tooltip-padding-x) !default;\n$form-feedback-tooltip-font-size:     var(--tooltip-font-size) !default;\n$form-feedback-tooltip-line-height:   null !default;\n$form-feedback-tooltip-opacity:       var(--tooltip-opacity) !default;\n$form-feedback-tooltip-border-radius: var(--tooltip-border-radius) !default;\n// scss-docs-end tooltip-feedback-variables\n\n@layer components {\n  .tooltip {\n    @include tokens($tooltip-tokens);\n\n    z-index: var(--tooltip-zindex);\n    display: block;\n    // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n    // So reset our font and text properties to avoid inheriting weird values.\n    @include reset-text();\n    font-size: var(--tooltip-font-size);\n    // Allow breaking very long words so they don't overflow the tooltip's bounds\n    word-wrap: break-word;\n    opacity: 0;\n\n    &.show { opacity: var(--tooltip-opacity); }\n\n    .tooltip-arrow {\n      display: block;\n      width: var(--tooltip-arrow-width);\n      height: var(--tooltip-arrow-height);\n\n      &::before {\n        position: absolute;\n        content: \"\";\n        border-color: transparent;\n        border-style: solid;\n      }\n    }\n  }\n\n  .bs-tooltip-top .tooltip-arrow {\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n\n    &::before {\n      top: -1px;\n      border-width: var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * .5) 0;\n      border-block-start-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-end .tooltip-arrow {\n    left: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n\n    &::before {\n      right: -1px;\n      border-width: calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * .5) 0;\n      border-inline-end-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-bottom .tooltip-arrow {\n    top: calc(-1 * var(--tooltip-arrow-height));\n\n    &::before {\n      bottom: -1px;\n      border-width: 0 calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height);\n      border-block-end-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-start .tooltip-arrow {\n    right: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n\n    &::before {\n      left: -1px;\n      border-width: calc(var(--tooltip-arrow-width) * .5) 0 calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height);\n      border-inline-start-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-auto {\n    &[data-bs-placement^=\"top\"] {\n      @extend .bs-tooltip-top;\n    }\n    &[data-bs-placement^=\"right\"] {\n      @extend .bs-tooltip-end;\n    }\n    &[data-bs-placement^=\"bottom\"] {\n      @extend .bs-tooltip-bottom;\n    }\n    &[data-bs-placement^=\"left\"] {\n      @extend .bs-tooltip-start;\n    }\n  }\n\n  // Wrapper for the tooltip content\n  .tooltip-inner {\n    max-width: var(--tooltip-max-width);\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    color: var(--tooltip-color);\n    text-align: center;\n    background-color: var(--tooltip-bg);\n    @include border-radius(var(--tooltip-border-radius));\n  }\n}\n","@mixin reset-text {\n  font-family: var(--body-font-family);\n  // We deliberately do NOT reset font-size or overflow-wrap / word-wrap.\n  font-style: normal;\n  font-weight: var(--body-font-weight);\n  line-height: var(--body-line-height);\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  white-space: normal;\n  word-spacing: normal;\n  line-break: auto;\n}\n","@use \"../config\" as *;\n@use \"../variables\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"form-variables\" as *;\n@use \"../tooltip\" as *; // bring in tooltip variables\n\n// Form validation\n//\n// Provide feedback to users when form field values are valid or invalid. Works\n// primarily for client-side validation via scoped `:invalid` and `:valid`\n// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for\n// server-side validation.\n\n// This mixin uses an `if()` technique to be compatible with Dart Sass\n// See https://github.com/sass/sass/issues/1873#issuecomment-152293725 for more details\n\n// scss-docs-start form-validation-mixins\n@mixin form-validation-state-selector($state) {\n  @if ($state == \"valid\" or $state == \"invalid\") {\n    .was-validated #{if(sass(&): \"&\"; else: \"\")}:#{$state},\n    #{if(sass(&): \"&\"; else: \"\")}.is-#{$state} {\n      @content;\n    }\n  } @else {\n    #{if(sass(&): \"&\"; else: \"\")}.is-#{$state} {\n      @content;\n    }\n  }\n}\n\n@mixin form-validation-state(\n  $state,\n  $color,\n  $icon,\n  $tooltip-color: color-contrast($color),\n  $tooltip-bg-color: rgba($color, $form-feedback-tooltip-opacity),\n  $focus-ring-color: null, // mdo-do: fix\n  $border-color: $color\n) {\n  .#{$state}-feedback {\n    display: none;\n    width: 100%;\n    margin-top: $form-feedback-margin-top;\n    font-size: $form-feedback-font-size;\n    font-style: $form-feedback-font-style;\n    color: $color;\n  }\n\n  .#{$state}-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%; // Contain to parent when possible\n    padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\n    margin-top: .1rem;\n    font-size: $form-feedback-tooltip-font-size;\n    line-height: $form-feedback-tooltip-line-height;\n    color: $tooltip-color;\n    background-color: $tooltip-bg-color;\n    @include border-radius($form-feedback-tooltip-border-radius);\n  }\n\n  @include form-validation-state-selector($state) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip {\n      display: block;\n    }\n  }\n\n  .form-control {\n    @include form-validation-state-selector($state) {\n      border-color: $border-color;\n\n      @if $enable-validation-icons {\n        padding-inline-end: calc(var(--control-padding-x) * 3.5);\n        background-image: escape-svg($icon);\n        background-repeat: no-repeat;\n        background-position: right var(--control-padding-x) center;\n        background-size: 1rem;\n      }\n\n      &:focus-visible {\n        @include focus-ring(true, $color: $focus-ring-color);\n        border-color: $border-color;\n      }\n    }\n\n    &::-webkit-contacts-auto-fill-button {\n      @if $enable-validation-icons {\n        // margin-inline-end: calc(var(--control-padding-x) * 3);\n      }\n    }\n  }\n\n  // stylelint-disable-next-line selector-no-qualifying-type\n  textarea.form-control {\n    @include form-validation-state-selector($state) {\n      @if $enable-validation-icons {\n        // padding-inline-end: $input-height-inner;\n        background-position: right var(--control-padding-x) top var(--control-padding-x);\n        // background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\n      }\n    }\n  }\n\n  .form-control-color {\n    @include form-validation-state-selector($state) {\n      @if $enable-validation-icons {\n        // width: add($form-color-width, $input-height-inner);\n      }\n    }\n  }\n\n  .form-check-input {\n    @include form-validation-state-selector($state) {\n      border-color: $border-color;\n\n      &:checked {\n        background-color: $color;\n      }\n\n      &:focus {\n        // box-shadow: $focus-box-shadow;\n      }\n\n      ~ .form-check-label {\n        color: $color;\n      }\n    }\n  }\n  .form-check-inline .form-check-input {\n    ~ .#{$state}-feedback {\n      margin-inline-start: .5em;\n    }\n  }\n\n  .input-group {\n    > .form-control:not(:focus),\n    > .form-select:not(:focus),\n    > .form-floating:not(:focus-within) {\n      @include form-validation-state-selector($state) {\n        @if $state == \"valid\" {\n          z-index: 3;\n        } @else if $state == \"invalid\" {\n          z-index: 4;\n        }\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-mixins\n\n@layer components {\n  // scss-docs-start form-validation-states-loop\n  @each $state, $data in $form-validation-states {\n    @include form-validation-state($state, $data...);\n  }\n  // scss-docs-end form-validation-states-loop\n}\n","// scss-docs-start form-feedback-variables\n$form-feedback-margin-top:          .5rem !default;\n$form-feedback-font-size:           var(--font-size-xs) !default;\n$form-feedback-font-style:          null !default;\n$form-feedback-valid-color:         var(--success-text) !default;\n$form-feedback-invalid-color:       var(--danger-text) !default;\n\n$form-feedback-icon-valid-color:    #00a748 !default;\n$form-feedback-icon-valid:          url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1'/></svg>\") !default;\n$form-feedback-icon-invalid-color:  #dd0d37 !default;\n$form-feedback-icon-invalid:        url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-colors\n$form-valid-color:                  $form-feedback-valid-color !default;\n$form-valid-border-color:           $form-feedback-valid-color !default;\n$form-invalid-color:                $form-feedback-invalid-color !default;\n$form-invalid-border-color:         $form-feedback-invalid-color !default;\n// scss-docs-end form-validation-colors\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n  \"valid\": (\n    \"color\": var(--form-valid-color),\n    \"icon\": $form-feedback-icon-valid,\n    \"tooltip-color\": var(--success-contrast),\n    \"tooltip-bg-color\": var(--success-bg),\n    \"focus-ring-color\": var(--success-focus-ring),\n    \"border-color\": var(--success-border),\n  ),\n  \"invalid\": (\n    \"color\": var(--form-invalid-color),\n    \"icon\": $form-feedback-icon-invalid,\n    \"tooltip-color\": var(--danger-contrast),\n    \"tooltip-bg-color\": var(--danger-bg),\n    \"focus-ring-color\": var(--danger-focus-ring),\n    \"border-color\": var(--danger-border),\n  )\n) !default;\n// scss-docs-end form-validation-states\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n@use \"sass:string\";\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n$button-tokens: () !default;\n\n// scss-docs-start btn-tokens\n$button-tokens: defaults(\n  (\n    --btn-min-height: var(--btn-input-min-height),\n    --btn-padding-x: var(--btn-input-padding-x),\n    --btn-padding-y: var(--btn-input-padding-y),\n    --btn-font-size: var(--btn-input-font-size),\n    --btn-font-weight: var(--btn-input-font-weight),\n    --btn-line-height: var(--btn-input-line-height),\n    --btn-color: var(--fg-body),\n    --btn-white-space: nowrap,\n    --btn-border-width: var(--border-width),\n    --btn-border-color: transparent,\n    --btn-border-radius: var(--border-radius),\n    --btn-hover-border-color: transparent,\n    --btn-disabled-opacity: .65,\n    --btn-transition-timing: .15s ease-in-out,\n    --btn-transition-property: \"color, background-color, border-color, box-shadow\",\n    --btn-transition: var(--btn-transition-property) var(--btn-transition-timing),\n  ),\n  $button-tokens\n);\n// scss-docs-end btn-tokens\n\n$button-link-tokens: () !default;\n\n// scss-docs-start button-link-tokens\n$button-link-tokens: defaults(\n  (\n    --btn-font-weight: var(--font-weight-normal),\n    --btn-color: var(--link-color),\n    --btn-bg: transparent,\n    --btn-border-color: transparent,\n    --btn-hover-color: var(--link-hover-color),\n    --btn-hover-bg: transparent,\n    --btn-hover-border-color: transparent,\n    --btn-active-color: var(--link-hover-color),\n    --btn-active-bg: transparent,\n    --btn-active-border-color: transparent,\n    --btn-disabled-color: var(--fg-3),\n    --btn-disabled-border-color: transparent,\n  ),\n  $button-link-tokens\n);\n// scss-docs-end button-link-tokens\n\n$button-styled-tokens: () !default;\n\n// scss-docs-start button-styled-tokens\n$button-styled-tokens: defaults(\n  (\n    --btn-gradient-start: rgb(255 255 255 / 12.5%),\n    --btn-gradient-end: rgb(0 0 0 / 7.5%) ,\n    --btn-border-mix-color: #000,\n    --btn-border-mix-amount: 10%,\n    --btn-border-hover-mix-amount: 12.5%,\n    --btn-border-active-mix-amount: 20%,\n    --btn-shadow: \"0 1px 2px rgb(0 0 0 / 15%), inset 0 1px 0 rgb(255 255 255 / 10%)\",\n    --btn-active-shadow: inset 0 2px 4px rgba(0, 0, 0, .15) ,\n  ),\n  $button-styled-tokens\n);\n// scss-docs-end button-styled-tokens\n\n// scss-docs-start button-sizes\n$button-sizes: () !default;\n$button-sizes: defaults(\n  (\"xs\", \"sm\", \"lg\"),\n  $button-sizes\n);\n// scss-docs-end button-sizes\n\n$button-variants: () !default;\n\n// scss-docs-start btn-variants\n$button-variants: defaults(\n  (\n    \"solid\": (\n      \"base\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      ),\n      \"hover\": (\n        \"bg\": \"bg\",\n        \"border-color\": \"bg\",\n        \"color\": \"contrast\"\n      ),\n      \"active\": (\n        \"bg\": \"bg\",\n        \"border-color\": \"bg\",\n        \"color\": \"contrast\"\n      )\n    ),\n    \"outline\": (\n      \"base\": (\n        \"bg\": \"transparent\",\n        \"color\": \"text\",\n        \"border-color\": \"border\"\n      ),\n      \"hover\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      ),\n      \"active\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      )\n    ),\n    \"subtle\": (\n      \"base\": (\n        \"bg\": \"bg-subtle\",\n        \"color\": \"text\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"bg\": (\"bg-muted\", \"bg-subtle\"),\n        \"color\": \"text-emphasis\"\n      ),\n      \"active\": (\n        \"bg\": \"bg-subtle\",\n        \"color\": \"text-emphasis\"\n      )\n    ),\n    \"text\": (\n      \"base\": (\n        \"color\": \"text\",\n        \"bg\": \"transparent\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"color\": \"text\",\n        \"bg\": \"bg-subtle\"\n      ),\n      \"active\": (\n        \"color\": \"text\",\n        \"bg\": \"bg-subtle\"\n      )\n    )\n  ),\n  $button-variants\n);\n// scss-docs-end btn-variants\n// stylelint-enable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n//\n// Base styles\n//\n\n// scss-docs-start btn-variant-selectors\n$btn-variant-selectors: (string.unquote(\".btn\"), string.unquote(\".btn-link\"), string.unquote(\".btn-icon\")) !default;\n@each $variant, $config in $button-variants {\n  $btn-variant-selectors: list.append($btn-variant-selectors, string.unquote(\".btn-#{$variant}\"), comma);\n}\n// scss-docs-end btn-variant-selectors\n\n@layer components {\n  #{$btn-variant-selectors} {\n    @include tokens($button-tokens);\n\n    display: inline-flex;\n    gap: var(--btn-gap, .25rem);\n    align-items: center;\n    justify-content: center;\n    min-height: var(--btn-min-height);\n    padding: var(--btn-padding-y) var(--btn-padding-x);\n    // font-family: var(--btn-font-family);\n    font-size: var(--btn-font-size);\n    font-weight: var(--btn-font-weight);\n    line-height: var(--btn-line-height);\n    color: var(--btn-color);\n    text-decoration: none;\n    white-space: var(--btn-white-space);\n    vertical-align: middle;\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    cursor: if(sass($enable-button-pointers): pointer; else: null);\n    user-select: none;\n    background-color: var(--btn-bg, var(--bg-2));\n    border: var(--btn-border-width) solid var(--btn-border-color);\n    @include border-radius(var(--btn-border-radius));\n    @include transition(var(--btn-transition));\n\n    &:hover {\n      color: var(--btn-hover-color);\n      background-color: var(--btn-hover-bg, var(--bg-3));\n      border-color: var(--btn-hover-border-color);\n    }\n\n    &:focus-visible {\n      @include focus-ring(true);\n      --focus-ring-offset: 1px;\n    }\n\n    &.active,\n    &.show {\n      color: var(--btn-active-color);\n      background-color: var(--btn-active-bg, var(--bg-3));\n      border-color: var(--btn-active-border-color);\n\n      &:focus-visible {\n        @include focus-ring(true);\n      }\n    }\n\n    &:disabled,\n    &.disabled,\n    fieldset:disabled & {\n      color: var(--btn-disabled-color);\n      pointer-events: none;\n      background-color: var(--btn-disabled-bg, var(--bg-1));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-disabled-border-color);\n      opacity: var(--btn-disabled-opacity);\n    }\n  }\n\n  // Main button style generator mixin\n  // Generate button variant classes (e.g., .btn-solid, .btn-outline, etc.)\n  // scss-docs-start btn-variant-mixin\n  @each $variant, $config in $button-variants {\n    .btn-#{$variant} {\n      @each $property, $value in map.get($button-variants, $variant, \"base\") {\n        @if $value == \"transparent\" {\n          --btn-#{$property}: transparent;\n        } @else {\n          --btn-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      @each $property, $value in map.get($button-variants, $variant, \"active\") {\n        @if $value == \"transparent\" {\n          --btn-active-#{$property}: transparent;\n        } @else if $value == \"bg-subtle\" {\n          --btn-active-#{$property}: var(--theme-#{$value});\n        } @else {\n          --btn-active-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .9) calc(c * 1.15) h);\n        }\n      }\n      @each $property, $value in map.get($button-variants, $variant, \"base\") {\n        @if $value == \"transparent\" {\n          --btn-disabled-#{$property}: transparent;\n        } @else {\n          --btn-disabled-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      &:hover {\n        @each $property, $value in map.get($button-variants, $variant, \"hover\") {\n          @if $value == \"transparent\" {\n            --btn-hover-#{$property}: transparent;\n          } @else if meta.type-of($value) == \"list\" {\n            $first-value: list.nth($value, 1);\n            $second-value: list.nth($value, 2);\n            --btn-hover-#{$property}: color-mix(in oklch, var(--theme-#{$first-value}) 50%, var(--theme-#{$second-value}));\n          } @else if $value == \"bg-subtle\" {\n            --btn-hover-#{$property}: var(--theme-#{$value});\n          } @else {\n            --btn-hover-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .95) calc(c * 1.1) h);\n          }\n        }\n      }\n\n      &:focus-visible {\n        outline-color: var(--theme-focus-ring);\n      }\n\n      &:active,\n      &.active,\n      &.btn-check:has(input:checked) {\n        @each $property, $value in map.get($button-variants, $variant, \"active\") {\n          @if $value == \"transparent\" {\n            --btn-active-#{$property}: transparent;\n          } @else if $value == \"bg-subtle\" {\n            --btn-active-#{$property}: var(--theme-#{$value});\n          } @else {\n            --btn-active-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .9) calc(c * 1.15) h);\n          }\n        }\n      }\n\n      // Disabled state for toggle buttons\n      &:disabled,\n      &.disabled,\n      &.btn-check:has(input:disabled) {\n        @each $property, $value in map.get($button-variants, $variant, \"base\") {\n          @if $value == \"transparent\" {\n            --btn-disabled-#{$property}: transparent;\n          } @else {\n            --btn-disabled-#{$property}: var(--theme-#{$value});\n          }\n        }\n      }\n    }\n  }\n  // scss-docs-end btn-variant-mixin\n\n  //\n  // Link buttons\n  //\n\n  // Make a button look and behave like a link\n  .btn-link {\n    @include tokens($button-link-tokens);\n\n    color: var(--theme-text, var(--btn-color));\n    text-decoration: var(--link-decoration);\n\n    @if $enable-gradients {\n      background-image: none;\n    }\n\n    &:focus-visible {\n      color: var(--theme-text, var(--btn-color));\n    }\n\n    &:hover {\n      color: var(--theme-text-emphasis, var(--btn-hover-color));\n    }\n\n    // No need for an active state here\n  }\n\n  //\n  // Button Sizes\n  //\n\n  // Generate button size classes from the $button-sizes map\n  // Skip \"md\" as it's the default size for .btn\n\n  // scss-docs-start btn-sizes-loop\n  @each $size, $_ in $button-sizes {\n    .btn-#{$size},\n    .btn-group-#{$size} > [class*=\"btn-\"] {\n      --btn-min-height: var(--btn-input-#{$size}-min-height);\n      --btn-padding-y: var(--btn-input-#{$size}-padding-y);\n      --btn-padding-x: var(--btn-input-#{$size}-padding-x);\n      --btn-font-size: var(--btn-input-#{$size}-font-size);\n      --btn-line-height: var(--btn-input-#{$size}-line-height);\n      --btn-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n  // scss-docs-end btn-sizes-loop\n\n  .btn-icon {\n    align-items: center;\n    justify-content: center;\n    aspect-ratio: 1;\n    padding: 0;\n  }\n\n  //\n  // Toggle buttons (.btn-check)\n  //\n  // Checkbox and radio inputs that look like buttons. Add .btn-check to a\n  // label with button classes, with the input nested inside.\n  //\n  // Example: <label class=\"btn-check btn-solid theme-primary\"><input type=\"checkbox\">Toggle</label>\n\n  .btn-check {\n    > input {\n      position: absolute;\n      clip: rect(0, 0, 0, 0);\n      pointer-events: none;\n    }\n\n    &:has(input:checked) {\n      color: var(--btn-active-color);\n      background-color: var(--btn-active-bg, var(--bg-3));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-active-border-color);\n      @include box-shadow(var(--btn-active-shadow));\n    }\n\n    &:has(input:focus-visible) {\n      @include focus-ring(true);\n      --focus-ring-offset: 1px;\n    }\n\n    &:has(input:disabled) {\n      color: var(--btn-disabled-color);\n      pointer-events: none;\n      background-color: var(--btn-disabled-bg, var(--bg-1));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-disabled-border-color);\n      opacity: var(--btn-disabled-opacity);\n      @include box-shadow(none);\n    }\n  }\n\n  //\n  // Styled buttons\n  //\n  // Add visual depth with gradients and shadows. Customize via CSS variables.\n\n  .btn-styled {\n    @include tokens($button-styled-tokens);\n\n    background-image:\n      linear-gradient(\n        to bottom,\n        var(--btn-gradient-start),\n        var(--btn-gradient-end)\n      );\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-mix-amount));\n    box-shadow: var(--btn-shadow);\n\n    &:hover {\n      background-image:\n        linear-gradient(\n          to bottom,\n          var(--btn-gradient-start),\n          var(--btn-gradient-end)\n        );\n      border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-hover-mix-amount));\n    }\n\n    &:active,\n    &.active {\n      background-image: none;\n      border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-active-mix-amount));\n      box-shadow: var(--btn-active-shadow);\n    }\n\n    &:disabled,\n    &.disabled {\n      background-image: none;\n      box-shadow: none;\n    }\n  }\n}\n","@use \"../mixins/border-radius\" as *;\n\n@layer components {\n  // Make the div behave like a button\n  .btn-group,\n  .btn-group-vertical {\n    position: relative;\n    display: inline-flex;\n    vertical-align: middle; // match .btn alignment given font-size hack above\n\n    > [class*=\"btn-\"] {\n      position: relative;\n      flex: 1 1 auto;\n\n      &:hover {\n        z-index: 1;\n      }\n    }\n\n    > .btn-check:has(input:checked),\n    > [class*=\"btn-\"]:active,\n    > [class*=\"btn-\"].active {\n      z-index: 2;\n    }\n\n    > .btn-check:has(input:focus),\n    > [class*=\"btn-\"]:focus {\n      z-index: 3;\n    }\n  }\n\n  // Optional: Group multiple button groups together for a toolbar\n  .btn-toolbar {\n    display: flex;\n    flex-wrap: wrap;\n    gap: .5rem;\n    justify-content: flex-start;\n\n    .input-group {\n      width: auto;\n    }\n  }\n\n  .btn-group {\n    @include border-radius(var(--btn-border-radius));\n\n    // Prevent double borders when buttons are next to each other\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) {\n      margin-inline-start: calc(-1 * var(--btn-border-width));\n    }\n\n    // Reset rounded corners\n    > [class*=\"btn-\"]:not(:last-child):not(.dropdown-toggle),\n    > .btn-group:not(:last-child) > [class*=\"btn-\"] {\n      @include border-end-radius(0);\n    }\n\n    // The left radius should be 0 if the button is not the first child\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) > [class*=\"btn-\"] {\n      @include border-start-radius(0);\n    }\n  }\n\n  //\n  // Split button dropdowns\n  //\n\n  .dropdown-toggle-split {\n    padding-inline: calc(var(--btn-padding-x) * .75);\n\n    &::after,\n    .dropup &::after,\n    .dropend &::after {\n      margin-inline-start: 0;\n    }\n\n    .dropstart &::before {\n      margin-inline-end: 0;\n    }\n  }\n\n  //\n  // Vertical button groups\n  //\n\n  .btn-group-vertical {\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: center;\n\n    > [class*=\"btn-\"],\n    > .btn-group {\n      width: 100%;\n    }\n\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) {\n      margin-top: calc(-1 * var(--btn-border-width));\n    }\n\n    // Reset rounded corners\n    > [class*=\"btn-\"]:not(:last-child):not(.dropdown-toggle),\n    > .btn-group:not(:last-child) > [class*=\"btn-\"] {\n      @include border-bottom-radius(0);\n    }\n\n    // The top radius should be 0 if the button is not the first child\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) > [class*=\"btn-\"] {\n      @include border-top-radius(0);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n$btn-close-tokens: () !default;\n\n// scss-docs-start btn-close-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$btn-close-tokens: defaults(\n  (\n    --btn-close-size: 1.25rem,\n    --btn-close-color: var(--fg-body),\n    --btn-close-opacity: .5,\n    --btn-close-hover-opacity: .75,\n    --btn-close-focus-opacity: .85,\n    --btn-close-disabled-opacity: .25,\n  ),\n  $btn-close-tokens\n);\n// scss-docs-end btn-close-tokens\n\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n@layer components {\n  .btn-close {\n    @include tokens($btn-close-tokens);\n\n    box-sizing: content-box;\n    width: var(--btn-close-size);\n    height: var(--btn-close-size);\n    padding: 0;\n    color: var(--btn-close-color);\n    background: transparent; // for button elements\n    border: 0; // for button elements\n    @include border-radius(var(--border-radius-sm));\n    opacity: var(--btn-close-opacity);\n\n    > svg {\n      display: block;\n      width: 100%;\n      height: 100%;\n      fill: currentcolor;\n    }\n\n    // Override <a>'s hover style\n    &:hover {\n      color: var(--btn-close-color);\n      text-decoration: none;\n      opacity: var(--btn-close-hover-opacity);\n    }\n\n    &:focus-visible {\n      opacity: var(--btn-close-focus-opacity);\n      @include focus-ring();\n    }\n\n    &:disabled,\n    &.disabled {\n      pointer-events: none;\n      user-select: none;\n      opacity: var(--btn-close-disabled-opacity);\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/tokens\" as *;\n\n$accordion-tokens: () !default;\n\n// scss-docs-start accordion-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$accordion-tokens: defaults(\n  (\n    --accordion-padding-x: 1.25rem,\n    --accordion-padding-y: 1rem,\n    --accordion-color: var(--fg-body),\n    --accordion-bg: var(--bg-body),\n    --accordion-transition-property: \"color, background-color, border-radius\",\n    --accordion-transition-timing: \".15s ease-in-out\",\n    --accordion-transition: var(--accordion-transition-property) var(--accordion-timing),\n    --accordion-border-color: var(--border-color),\n    --accordion-border-width: var(--border-width),\n    --accordion-border-radius: var(--accordion-radius, var(--border-radius-lg)),\n    --accordion-btn-color: var(--fg-2),\n    --accordion-btn-bg: var(--bg-body),\n    --accordion-btn-icon-width: 1rem,\n    --accordion-btn-icon-transform: rotate(-180deg),\n    --accordion-btn-icon-transition: transform .2s ease-in-out,\n    --accordion-active-color: var(--fg),\n    --accordion-active-bg: var(--bg-2),\n  ),\n  $accordion-tokens\n);\n// scss-docs-end accordion-tokens\n\n@layer components {\n  .accordion {\n    @include tokens($accordion-tokens);\n  }\n\n  .accordion-header {\n    display: flex;\n    align-items: center;\n    width: 100%;\n    padding: var(--accordion-btn-padding-y, var(--accordion-padding-y)) var(--accordion-btn-padding-x, var(--accordion-padding-x));\n    font-size: var(--accordion-font-size, var(--font-size-base));\n    color: var(--accordion-btn-color);\n    text-align: start;\n    list-style: none; // Remove default marker\n    cursor: pointer;\n    background-color: var(--accordion-btn-bg);\n    @include transition(var(--accordion-transition));\n\n    .accordion-icon {\n      flex-shrink: 0;\n      width: var(--accordion-btn-icon-width);\n      height: var(--accordion-btn-icon-width);\n      margin-inline-start: auto;\n      color: currentcolor;\n      @include transition(var(--accordion-btn-icon-transition));\n    }\n\n    &:hover {\n      z-index: 2;\n    }\n\n    &:focus-visible {\n      position: relative;\n      z-index: 3;\n      @include focus-ring(true);\n      outline-offset: -1px;\n    }\n  }\n\n  .accordion-item {\n    color: var(--accordion-color);\n    background-color: var(--accordion-bg);\n    border: var(--accordion-border-width) solid var(--accordion-border-color);\n\n    &:first-of-type {\n      @include border-top-radius(var(--accordion-border-radius));\n\n      > .accordion-header {\n        @include border-top-radius(calc(var(--accordion-border-radius) - var(--accordion-border-width)));\n      }\n    }\n\n    &:not(:first-of-type) {\n      border-block-start: 0;\n    }\n\n    // Only set a border-radius on the last item if the accordion is collapsed\n    &:last-of-type {\n      @include border-bottom-radius(var(--accordion-border-radius));\n\n      > .accordion-header {\n        @include border-bottom-radius(calc(var(--accordion-border-radius) - var(--accordion-border-width)));\n      }\n\n      > .accordion-body {\n        @include border-bottom-radius(var(--accordion-border-radius));\n      }\n    }\n\n    // Open state - details[open] applies these styles\n    &[open] {\n      border-color: var(--theme-border, var(--accordion-border-color));\n\n      > .accordion-header {\n        color: var(--theme-text, var(--accordion-active-color));\n        background-color: var(--theme-bg-subtle, var(--accordion-active-bg));\n        box-shadow: inset 0 calc(-1 * var(--accordion-border-width)) 0 var(--theme-border, var(--accordion-border-color));\n\n        .accordion-icon {\n          transform: var(--accordion-btn-icon-transform);\n        }\n      }\n\n      // Remove bottom radius from header when open (even on last item)\n      &:last-of-type > .accordion-header {\n        @include border-bottom-radius(0);\n      }\n    }\n  }\n\n  .accordion-body {\n    padding: var(--accordion-body-padding-y, var(--accordion-padding-y)) var(--accordion-body-padding-x, var(--accordion-padding-x));\n  }\n\n\n  // Flush accordion items\n  //\n  // Remove borders and border-radius to keep accordion items edge-to-edge.\n\n  .accordion-flush {\n    > .accordion-item {\n      border-inline: 0;\n      @include border-radius(0);\n\n      &:first-child {\n        border-block-start: 0;\n      }\n\n      &:last-child {\n        border-block-end: 0;\n      }\n\n      > .accordion-header,\n      > .accordion-body {\n        @include border-radius(0);\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$alert-tokens: () !default;\n\n// scss-docs-start alert-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$alert-tokens: defaults(\n  (\n    --alert-gap: #{$spacer * .75},\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1)),\n    --alert-padding-x: #{$spacer},\n    --alert-padding-y: #{$spacer},\n    --alert-color: var(--theme-text, inherit),\n    --alert-border-color: var(--theme-border, var(--border-color)),\n    --alert-border: var(--border-width) solid var(--alert-border-color),\n    --alert-border-radius: var(--border-radius),\n    --alert-link-color: inherit,\n    --hr-border-color: var(--theme-border, var(--border-color)),\n  ),\n  $alert-tokens\n);\n// scss-docs-end alert-tokens\n\n@layer components {\n  .alert {\n    @include tokens($alert-tokens);\n\n    display: flex;\n    gap: var(--alert-gap);\n    align-items: start;\n    padding: var(--alert-padding-y) var(--alert-padding-x);\n    color: var(--alert-color);\n    background-color: var(--alert-bg);\n    border: var(--alert-border);\n    @include border-radius(var(--alert-border-radius));\n  }\n\n  .alert-heading {\n    // Specified to prevent conflicts of changing $headings-color\n    color: inherit;\n  }\n\n  // Provide class for links that match alerts\n  .alert-link {\n    font-weight: var(--font-weight-semibold);\n    color: var(--alert-link-color);\n  }\n}\n","@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n$avatar-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start avatar-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$avatar-tokens: defaults(\n  (\n    --avatar-size: 2.5rem,\n    --avatar-border-radius: 50%,\n    --avatar-border-width: 2px,\n    --avatar-border-color: var(--bg-body),\n    --avatar-bg: var(--bg-2),\n    --avatar-color: var(--fg-body),\n    // --avatar-font-weight: var(--font-weight-medium), // Defaults to fallback\n    --avatar-status-size: .75rem,\n    --avatar-status-border-width: 2px,\n    --avatar-status-border-color: var(--bg-body),\n    --avatar-stack-spacing: -.3,\n    --avatar-stack-transition: \"transform .2s ease-in-out\",\n  ),\n  $avatar-tokens\n);\n// scss-docs-end avatar-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start avatar-sizes\n$avatar-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$avatar-sizes: defaults(\n  (\n    \"xs\": (\n      size: 1.5rem,\n      status-size: .625rem,\n    ),\n    \"sm\": (\n      size: 2rem,\n    ),\n    \"lg\": (\n      size: 3rem,\n      status-size: 1rem,\n    ),\n    \"xl\": (\n      size: 4rem,\n      status-size: 1.25rem,\n    ),\n  ),\n  $avatar-sizes\n);\n// scss-docs-end avatar-sizes\n\n@layer components {\n  .avatar {\n    @include tokens($avatar-tokens);\n\n    position: relative;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--avatar-size);\n    height: var(--avatar-size);\n    font-size: calc(var(--avatar-size) * .4);\n    font-weight: var(--avatar-font-weight, var(--font-weight-medium));\n    line-height: 1;\n    color: var(--theme-contrast, var(--avatar-color));\n    text-transform: uppercase;\n    vertical-align: middle;\n    background-color: var(--theme-bg, var(--avatar-bg));\n    @include border-radius(var(--avatar-border-radius));\n  }\n\n  .avatar-subtle {\n    color: var(--theme-text, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n\n  .avatar-img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    @include border-radius(inherit);\n  }\n\n  .avatar-status {\n    position: absolute;\n    right: calc(var(--avatar-status-border-width) * -1);\n    bottom: calc(var(--avatar-status-border-width) * -1);\n    width: var(--avatar-status-size);\n    height: var(--avatar-status-size);\n    background-color: var(--gray-400);\n    border: var(--avatar-status-border-width) solid var(--avatar-status-border-color);\n    @include border-radius(50%);\n\n    &.status-online {\n      background-color: var(--green-500);\n    }\n\n    &.status-offline {\n      background-color: var(--gray-400);\n      @include border-radius(20%);\n    }\n\n    &.status-busy {\n      background-color: var(--red-500);\n      @include border-radius(20%);\n    }\n\n    &.status-away {\n      background-color: var(--yellow-500);\n    }\n  }\n\n  .avatar-stack {\n    display: inline-flex;\n    flex-direction: row-reverse;\n\n    .avatar {\n      // Stack spacing is calculated as a percentage of avatar size\n      margin-left: calc(var(--avatar-size) * var(--avatar-stack-spacing));\n      border: var(--avatar-border-width) solid var(--avatar-border-color);\n      mask-image: none;\n      @include transition(var(--avatar-stack-transition));\n\n      &:last-child {\n        margin-left: 0;\n      }\n\n      &:hover {\n        z-index: 1;\n        transform: translateY(-2px);\n      }\n    }\n  }\n\n  @each $size, $tokens in $avatar-sizes {\n    .avatar-#{$size},\n    .avatar-stack-#{$size} {\n      --avatar-size: #{map.get($tokens, size)};\n\n      @if map.has-key($tokens, status-size) {\n        --avatar-status-size: #{map.get($tokens, status-size)};\n      }\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/tokens\" as *;\n\n$badge-tokens: () !default;\n\n// scss-docs-start badge-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$badge-tokens: defaults(\n  (\n    --badge-padding-x: .625em,\n    --badge-padding-y: .25em,\n    --badge-font-size: clamp(12px, .75em, .75em),\n    --badge-font-weight: var(--font-weight-semibold),\n    --badge-color: inherit,\n    --badge-bg: var(--bg-2),\n    --badge-border-width: var(--border-width),\n    --badge-border-color: transparent,\n    --badge-border-radius: var(--border-radius-lg),\n  ),\n  $badge-tokens\n);\n// scss-docs-end badge-tokens\n\n// scss-docs-start badge-variants\n$badge-variants: (\n  \"subtle\": (\n    \"color\": \"text\",\n    \"bg\": \"bg-subtle\",\n    \"border-color\": \"transparent\"\n  ),\n  \"outline\": (\n    \"color\": \"text\",\n    \"bg\": \"transparent\",\n    \"border-color\": \"border\"\n  )\n) !default;\n// scss-docs-end badge-variants\n\n@layer components {\n  .badge {\n    @include tokens($badge-tokens);\n\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 1.375rem;\n    padding: var(--badge-padding-y) var(--badge-padding-x);\n    font-size: var(--badge-font-size);\n    font-weight: var(--badge-font-weight);\n    line-height: 1;\n    color: var(--theme-contrast, var(--badge-color));\n    text-align: center;\n    white-space: nowrap;\n    vertical-align: baseline;\n    background-color: var(--theme-bg, var(--badge-bg));\n    border: var(--badge-border-width) solid var(--badge-border-color);\n    @include border-radius(var(--badge-border-radius));\n    @include gradient-bg();\n\n    // Empty badges collapse automatically\n    &:empty {\n      display: none;\n    }\n  }\n\n  // Quick fix for badges in buttons\n  .btn .badge {\n    position: relative;\n    top: -1px;\n  }\n\n  // scss-docs-start badge-variant-loop\n  @each $variant, $properties in $badge-variants {\n    .badge-#{$variant} {\n      @each $property, $value in $properties {\n        @if $value == \"transparent\" {\n          --badge-#{$property}: transparent;\n        } @else {\n          --badge-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      color: var(--badge-color);\n      background-color: var(--badge-bg);\n      border-color: var(--badge-border-color);\n    }\n  }\n  // scss-docs-end badge-variant-loop\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n$breadcrumb-tokens: () !default;\n\n// scss-docs-start breadcrumb-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$breadcrumb-tokens: defaults(\n  (\n    --breadcrumb-margin-bottom: 1rem,\n    --breadcrumb-font-size: inherit,\n    --breadcrumb-bg: transparent,\n    --breadcrumb-border-radius: var(--border-radius),\n    --breadcrumb-divider-color: var(--fg-4),\n    --breadcrumb-link-padding-x: .75rem,\n    --breadcrumb-link-padding-y: .25rem,\n    --breadcrumb-link-color: var(--fg-3),\n    --breadcrumb-link-hover-color: var(--fg-2),\n    --breadcrumb-link-hover-bg: var(--bg-1),\n    --breadcrumb-link-active-color: var(--fg-1),\n    --breadcrumb-link-border-radius: var(--border-radius-lg),\n  ),\n  $breadcrumb-tokens\n);\n// scss-docs-end breadcrumb-tokens\n\n@layer components {\n  .breadcrumb {\n    @include tokens($breadcrumb-tokens);\n\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    padding: var(--breadcrumb-padding-y, 0) var(--breadcrumb-padding-x, 0);\n    font-size: var(--breadcrumb-font-size);\n    list-style: none;\n    background-color: var(--breadcrumb-bg);\n    @include border-radius(var(--breadcrumb-border-radius));\n  }\n\n  .breadcrumb-item {\n    display: flex;\n  }\n\n  .breadcrumb-divider {\n    margin-inline: calc(var(--breadcrumb-link-padding-x) / 4);\n    color: var(--breadcrumb-divider-color);\n  }\n\n  .breadcrumb-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 2.25rem;\n    padding: var(--breadcrumb-link-padding-y) var(--breadcrumb-link-padding-x);\n    color: var(--breadcrumb-link-color);\n    text-decoration: none;\n    @include border-radius(var(--breadcrumb-link-border-radius));\n    @include transition(.1s text-decoration-color ease-in-out);\n\n    &:hover {\n      z-index: 2;\n      color: var(--breadcrumb-link-hover-color);\n      background-color: var(--breadcrumb-link-hover-bg);\n    }\n\n    &.active {\n      color: var(--breadcrumb-link-active-color);\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/tokens\" as *;\n\n$chip-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start chip-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$chip-tokens: defaults(\n  (\n    --chip-height: 1.75rem,\n    --chip-padding-x: .625rem,\n    --chip-gap: .3125rem,\n    --chip-border-radius: var(--border-radius-pill),\n    --chip-img-size: 1.25rem,\n    --chip-icon-size: 1rem,\n    --chip-dismiss-size: 1rem,\n    --chip-dismiss-opacity: .65,\n    --chip-dismiss-hover-opacity: 1,\n    --chip-color: var(--theme-text, var(--fg-body)),\n    --chip-bg: var(--theme-bg-subtle, var(--bg-2)),\n    --chip-border-color: transparent,\n    --chip-selected-color: var(--theme-contrast, var(--primary-contrast)),\n    --chip-selected-bg: var(--theme-bg, var(--primary-bg)),\n    --chip-selected-border-color: var(--theme-bg, var(--primary-bg)),\n  ),\n  $chip-tokens\n);\n// scss-docs-end chip-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .chip {\n    @include tokens($chip-tokens);\n\n    display: inline-flex;\n    gap: var(--chip-gap);\n    align-items: center;\n    height: var(--chip-height);\n    padding-inline: var(--chip-padding-x);\n    font-size: var(--chip-font-size, var(--font-size-sm));\n    font-weight: var(--chip-font-weight, var(--font-weight-base));\n    line-height: var(--chip-line-height, 1.25rem);\n    color: var(--chip-color);\n    text-decoration: none;\n    white-space: nowrap;\n    vertical-align: middle;\n    cursor: pointer;\n    background-color: var(--chip-bg);\n    border: var(--border-width) solid var(--chip-border-color);\n    @include border-radius(var(--chip-border-radius));\n\n    &:hover {\n      --chip-bg: var(--theme-bg-muted, var(--bg-3));\n    }\n\n    &:focus-visible {\n      outline: 0;\n      // @include focus-ring();\n    }\n\n    &.active {\n      --chip-color: var(--chip-selected-color);\n      --chip-bg: var(--chip-selected-bg);\n      --chip-border-color: var(--chip-selected-border-color);\n\n      &:hover {\n        --chip-bg: var(--chip-selected-bg);\n        opacity: .9;\n      }\n    }\n\n    &.disabled,\n    &:disabled {\n      pointer-events: none;\n      opacity: .65;\n    }\n  }\n\n  .chip-img {\n    width: var(--chip-img-size);\n    height: var(--chip-img-size);\n    @include border-radius(50%);\n\n    &:first-child {\n      margin-inline-start: -.375rem;\n    }\n  }\n\n  // Chip icon (left side)\n  .chip-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    margin-inline-start: calc(var(--chip-gap) * -.25);\n\n    > svg {\n      display: block; // Prevents baseline alignment issues\n      width: var(--chip-icon-size);\n      height: var(--chip-icon-size);\n    }\n\n    > img {\n      width: var(--chip-icon-size);\n      height: var(--chip-icon-size);\n      object-fit: cover;\n      @include border-radius(50%);\n    }\n  }\n\n  // Dismiss button (right side)\n  .chip-dismiss {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--chip-min-height);\n    height: var(--chip-min-height);\n    padding: 0;\n    // margin-inline-start: calc(var(--chip-padding-x) * -.5);\n    margin-inline-end: calc(var(--chip-padding-x) * -.25);\n    color: inherit;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    opacity: var(--chip-dismiss-opacity);\n    // @include transition(opacity .15s ease-in-out);\n\n    &:hover {\n      opacity: var(--chip-dismiss-hover-opacity);\n    }\n\n    &:focus-visible {\n      outline: 0;\n      opacity: 1;\n      @include focus-ring();\n    }\n\n    > svg {\n      display: block; // Prevents baseline alignment issues\n      width: var(--chip-dismiss-size);\n      height: var(--chip-dismiss-size);\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/tokens\" as *;\n@use \"layout/breakpoints\" as *;\n\n$card-tokens: () !default;\n\n// scss-docs-start card-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$card-tokens: defaults(\n  (\n    --card-spacer-y: #{$spacer},\n    --card-spacer-x: #{$spacer},\n    --card-subtitle-color: inherit,\n    --card-border-width: var(--border-width),\n    --card-border-color: var(--border-color-translucent),\n    --card-border-radius: var(--border-radius-lg),\n    --card-box-shadow: none,\n    --card-inner-border-radius: calc(var(--border-radius-lg) - var(--border-width)),\n    --card-cap-padding-y: #{$spacer * .75},\n    --card-cap-padding-x: #{$spacer},\n    --card-cap-bg: var(--bg-1),\n    --card-cap-color: inherit,\n    --card-height: auto,\n    --card-color: inherit,\n    --card-bg: var(--bg-body),\n    --card-img-overlay-padding: #{$spacer},\n    --card-group-margin: #{$grid-gutter-x * .5},\n    --card-body-gap: #{$spacer * .5},\n  ),\n  $card-tokens\n);\n// scss-docs-end card-tokens\n\n@layer components {\n  .card {\n    @include tokens($card-tokens);\n\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106\n    height: var(--card-height);\n    color: var(--fg-body);\n    word-wrap: break-word;\n    background-color: var(--card-bg);\n    // border: var(--card-border-width) solid var(--card-border-color);\n    // @include border-radius(var(--card-border-radius));\n    @include box-shadow(var(--card-box-shadow));\n\n    > hr {\n      margin-inline: 0;\n    }\n  }\n\n  .card-body {\n    display: flex;\n    // Enable `flex-grow: 1` for decks and groups so that card blocks take up\n    // as much space as possible, ensuring footers are aligned to the bottom.\n    flex: 1 1 auto;\n    flex-direction: column;\n    gap: var(--card-body-gap);\n    align-items: flex-start;\n    padding: var(--card-spacer-y) var(--card-spacer-x);\n    color: var(--card-color);\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n\n    > * {\n      margin-block: 0;\n    }\n  }\n\n  .card-body,\n  .card-list {\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n\n    &:first-child {\n      @include border-top-radius(var(--card-border-radius));\n      border-top-width: var(--card-border-width);\n    }\n\n    &:last-child {\n      @include border-bottom-radius(var(--card-border-radius));\n      border-bottom-width: var(--card-border-width);\n    }\n\n    &:not(:first-child):not(:last-child) {\n      border-block-end-width: var(--card-border-width);\n    }\n  }\n\n  .card-title,\n  .card-subtitle,\n  .card-text {\n    align-self: stretch;\n  }\n\n  .card-subtitle {\n    margin-top: calc(var(--card-body-gap) * -.5);\n  }\n\n  .card-header {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    margin-bottom: 0; // Removes the default margin-bottom of <hN>\n    color: var(--theme-contrast, var(--card-cap-color));\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n\n    &:first-child {\n      @include border-radius(var(--card-inner-border-radius) var(--card-inner-border-radius) 0 0);\n    }\n  }\n\n  .card-footer {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    color: var(--card-cap-color);\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n\n    &:last-child {\n      @include border-radius(0 0 var(--card-inner-border-radius) var(--card-inner-border-radius));\n    }\n  }\n\n  .card-subtle {\n    border-color: var(--theme-border, var(--card-border-color));\n\n    .card-header {\n      color: var(--theme-text-emphasis, currentcolor);\n      background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n\n    .card-footer {\n      color: var(--theme-text-emphasis, currentcolor);\n      background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n\n    .card-body,\n    .card-list {\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n  }\n\n  //\n  // Header navs\n  //\n\n  // Combined selector because of specificity match with `.nav` base class\n  .nav.card-header-tabs {\n    margin-inline: calc(-.5 * var(--card-cap-padding-x));\n    margin-bottom: calc(-1 * var(--card-cap-padding-y));\n    border-block-end: 0;\n\n    .nav-link.active {\n      background-color: var(--card-bg);\n      border-block-end-color: var(--card-bg);\n    }\n  }\n\n  // Card image\n  .card-img-overlay {\n    position: absolute;\n    inset: 0;\n    padding: var(--card-img-overlay-padding);\n    @include border-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img,\n  .card-img-top,\n  .card-img-bottom {\n    width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n    outline: var(--card-border-width) solid var(--card-border-color);\n    outline-offset: calc(var(--card-border-width) * -1);\n  }\n\n  .card-img,\n  .card-img-top {\n    @include border-top-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img,\n  .card-img-bottom {\n    @include border-bottom-radius(var(--card-inner-border-radius));\n  }\n\n  .card-row {\n    flex-direction: row;\n\n    .card-body,\n    .card-list {\n      border-width: var(--card-border-width) 0;\n      @include border-radius(0);\n\n      &:first-child {\n        @include border-start-radius(var(--card-inner-border-radius));\n        border-inline-start-width: var(--card-border-width);\n      }\n\n      &:last-child {\n        @include border-end-radius(var(--card-inner-border-radius));\n        border-inline-end-width: var(--card-border-width);\n      }\n\n      &:not(:first-child):not(:last-child) {\n        border-inline-end-width: var(--card-border-width);\n      }\n    }\n  }\n\n  .card-img-start {\n    @include border-start-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img-end {\n    @include border-end-radius(var(--card-inner-border-radius));\n  }\n\n  //\n  // Card groups\n  //\n\n  .card-group {\n    // The child selector allows nested `.card` within `.card-group`\n    // to display properly.\n    > .card {\n      margin-bottom: var(--card-group-margin);\n    }\n\n    @include media-breakpoint-up(sm) {\n      display: flex;\n      flex-flow: row wrap;\n      // The child selector allows nested `.card` within `.card-group`\n      // to display properly.\n      > .card {\n        flex: 1 0 0;\n        margin-bottom: 0;\n\n        + .card {\n          margin-inline-start: 0;\n          border-inline-start: 0;\n        }\n\n        // Handle rounded corners\n        @if $enable-rounded {\n          &:not(:last-child) {\n            @include border-end-radius(0);\n\n            > .card-img-top,\n            > .card-header {\n              border-start-end-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer {\n              border-end-end-radius: 0;\n            }\n          }\n\n          &:not(:first-child) {\n            @include border-start-radius(0);\n\n            > .card-img-top,\n            > .card-header {\n              border-start-start-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer {\n              border-end-start-radius: 0;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"colors\" as *;\n@use \"functions\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/color-mode\" as *;\n@use \"mixins/tokens\" as *;\n\n$carousel-tokens: () !default;\n\n// scss-docs-start carousel-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$carousel-tokens: defaults(\n  (\n    --carousel-control-color: #{$white},\n    --carousel-control-width: 15%,\n    --carousel-control-opacity: .5,\n    --carousel-control-hover-opacity: .9,\n    --carousel-control-transition: opacity .15s ease,\n    --carousel-control-icon-filter: none,\n    --carousel-indicator-width: 30px,\n    --carousel-indicator-height: 3px,\n    --carousel-indicator-hit-area-height: 10px,\n    --carousel-indicator-spacer: 3px,\n    --carousel-indicator-opacity: .5,\n    --carousel-indicator-active-bg: var(--white),\n    --carousel-indicator-active-opacity: 1,\n    --carousel-indicator-transition: opacity .6s ease,\n    --carousel-caption-width: 70%,\n    --carousel-caption-color: var(--white),\n    --carousel-caption-padding-y: 1.25rem,\n    --carousel-caption-spacer: 1.25rem,\n    --carousel-control-icon-width: 2rem,\n    --carousel-control-prev-icon-bg: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>\"),\n    --carousel-control-next-icon-bg: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>\"),\n    --carousel-transition-duration: .6s,\n    --carousel-transition: transform .6s ease-in-out,\n  ),\n  $carousel-tokens\n);\n// scss-docs-end carousel-tokens\n\n$carousel-dark-tokens: () !default;\n\n// scss-docs-start carousel-dark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$carousel-dark-tokens: defaults(\n  (\n    --carousel-indicator-active-bg: #{$black},\n    --carousel-caption-color: #{$black},\n    --carousel-control-icon-filter: invert(1) grayscale(100),\n  ),\n  $carousel-dark-tokens\n);\n// scss-docs-end carousel-dark-tokens\n\n// Notes on the classes:\n//\n// 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically)\n//    even when their scroll action started on a carousel, but for compatibility (with Firefox)\n//    we're preventing all actions instead\n// 2. The .carousel-item-start and .carousel-item-end is used to indicate where\n//    the active slide is heading.\n// 3. .active.carousel-item is the current slide.\n// 4. .active.carousel-item-start and .active.carousel-item-end is the current\n//    slide in its in-transition state. Only one of these occurs at a time.\n// 5. .carousel-item-next.carousel-item-start and .carousel-item-prev.carousel-item-end\n//    is the upcoming slide in transition.\n\n@layer components {\n  .carousel {\n    position: relative;\n    @include tokens($carousel-tokens);\n  }\n\n  .carousel.pointer-event {\n    touch-action: pan-y;\n  }\n\n  .carousel-inner {\n    position: relative;\n    display: flow-root;\n    width: 100%;\n    overflow: hidden;\n  }\n\n  .carousel-item {\n    position: relative;\n    display: none;\n    float: inline-start;\n    width: 100%;\n    margin-inline-end: -100%;\n    backface-visibility: hidden;\n    @include transition(var(--carousel-transition));\n  }\n\n  .carousel-item.active,\n  .carousel-item-next,\n  .carousel-item-prev {\n    display: block;\n  }\n\n  .carousel-item-next:not(.carousel-item-start),\n  .active.carousel-item-end {\n    transform: translateX(100%);\n  }\n\n  .carousel-item-prev:not(.carousel-item-end),\n  .active.carousel-item-start {\n    transform: translateX(-100%);\n  }\n\n  //\n  // Alternate transitions\n  //\n\n  .carousel-fade {\n    .carousel-item {\n      opacity: 0;\n      transition-property: opacity;\n      transform: none;\n    }\n\n    .carousel-item.active,\n    .carousel-item-next.carousel-item-start,\n    .carousel-item-prev.carousel-item-end {\n      z-index: 1;\n      opacity: 1;\n    }\n\n    .active.carousel-item-start,\n    .active.carousel-item-end {\n      z-index: 0;\n      opacity: 0;\n      @include transition(opacity 0s var(--carousel-transition-duration));\n    }\n  }\n\n  //\n  // Left/right controls for nav\n  //\n\n  .carousel-control-prev,\n  .carousel-control-next {\n    position: absolute;\n    inset-block: 0;\n    z-index: 1;\n    // Use flex for alignment (1-3)\n    display: flex; // 1. allow flex styles\n    align-items: center; // 2. vertically center contents\n    justify-content: center; // 3. horizontally center contents\n    width: var(--carousel-control-width);\n    padding: 0;\n    color: var(--carousel-control-color);\n    text-align: center;\n    background: none;\n    filter: var(--carousel-control-icon-filter);\n    border: 0;\n    opacity: var(--carousel-control-opacity);\n    @include transition(var(--carousel-control-transition));\n\n    // Hover/focus state\n    &:hover,\n    &:focus {\n      color: var(--carousel-control-color);\n      text-decoration: none;\n      outline: 0;\n      opacity: var(--carousel-control-hover-opacity);\n    }\n  }\n  .carousel-control-prev {\n    inset-inline-start: 0;\n    // stylelint-disable-next-line scss/at-function-named-arguments, @stylistic/function-whitespace-after\n    background-image: if(sass($enable-gradients): linear-gradient(90deg, rgba($black, .25), rgba($black, .001)); else: null);\n  }\n  .carousel-control-next {\n    inset-inline-end: 0;\n    // stylelint-disable-next-line scss/at-function-named-arguments, @stylistic/function-whitespace-after\n    background-image: if(sass($enable-gradients): linear-gradient(270deg, rgba($black, .25), rgba($black, .001)); else: null);\n  }\n\n  // Icons for within\n  .carousel-control-prev-icon,\n  .carousel-control-next-icon {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-repeat: no-repeat;\n    background-position: 50%;\n    background-size: 100% 100%;\n  }\n\n  .carousel-control-prev-icon {\n    background-image: var(--carousel-control-prev-icon-bg);\n  }\n\n  [dir=\"rtl\"] .carousel-control-prev-icon {\n    background-image: var(--carousel-control-next-icon-bg);\n  }\n\n  .carousel-control-next-icon {\n    background-image: var(--carousel-control-next-icon-bg);\n  }\n\n  [dir=\"rtl\"] .carousel-control-next-icon {\n    background-image: var(--carousel-control-prev-icon-bg);\n  }\n\n  // Optional indicator pips/controls\n  //\n  // Add a container (such as a list) with the following class and add an item (ideally a focusable control,\n  // like a button) with data-bs-target for each slide your carousel holds.\n\n  .carousel-indicators {\n    position: absolute;\n    inset: auto 0 0;\n    z-index: 2;\n    display: flex;\n    justify-content: center;\n    padding: 0;\n    // Use the .carousel-control's width as margin so we don't overlay those\n    margin-inline: var(--carousel-control-width);\n    margin-bottom: 1rem;\n\n    [data-bs-target] {\n      box-sizing: content-box;\n      flex: 0 1 auto;\n      width: var(--carousel-indicator-width);\n      height: var(--carousel-indicator-height);\n      padding: 0;\n      margin-inline: var(--carousel-indicator-spacer);\n      text-indent: -999px;\n      cursor: pointer;\n      background-color: var(--carousel-indicator-active-bg);\n      background-clip: padding-box;\n      border: 0;\n      // Use transparent borders to increase the hit area by 10px on top and bottom.\n      border-block: var(--carousel-indicator-hit-area-height) solid transparent;\n      opacity: var(--carousel-indicator-opacity);\n      @include transition(var(--carousel-indicator-transition));\n    }\n\n    .active {\n      opacity: var(--carousel-indicator-active-opacity);\n    }\n  }\n\n  // Optional captions\n  //\n  //\n\n  .carousel-caption {\n    position: absolute;\n    right: calc((100% - var(--carousel-caption-width)) * .5);\n    bottom: var(--carousel-caption-spacer);\n    left: calc((100% - var(--carousel-caption-width)) * .5);\n    padding-top: var(--carousel-caption-padding-y);\n    padding-bottom: var(--carousel-caption-padding-y);\n    color: var(--carousel-caption-color);\n    text-align: center;\n  }\n\n  // Dark mode carousel\n\n  @mixin carousel-dark() {\n    @include tokens($carousel-dark-tokens);\n  }\n\n  .carousel-dark {\n    @include carousel-dark();\n  }\n\n  @if $enable-dark-mode {\n    @include color-mode(dark, true) {\n      @include carousel-dark();\n    }\n  }\n}\n","@use \"../config\" as *;\n\n// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n  @if $color-mode-type == \"media-query\" {\n    @if $root == true {\n      @media (prefers-color-scheme: $mode) {\n        :root {\n          @content;\n        }\n      }\n    } @else {\n      @media (prefers-color-scheme: $mode) {\n        @content;\n      }\n    }\n  } @else {\n    [data-bs-theme=\"#{$mode}\"] {\n      @content;\n    }\n  }\n}\n// scss-docs-end color-mode-mixin\n","// stylelint-disable selector-max-attribute, property-disallowed-list, selector-no-qualifying-type -- VCP uses extensive data attributes and requires direct border-radius properties for range selection\n\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/tokens\" as *;\n\n$datepicker-tokens: () !default;\n\n// scss-docs-start datepicker-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$datepicker-tokens: defaults(\n  (\n    --datepicker-padding: 1rem,\n    --datepicker-bg: var(--bg-body),\n    --datepicker-color: var(--fg-body),\n    --datepicker-border-color: var(--border-color-translucent),\n    --datepicker-border-width: var(--border-width),\n    --datepicker-border-radius: var(--border-radius-lg),\n    --datepicker-box-shadow: var(--box-shadow),\n    --datepicker-font-size: var(--font-size-sm),\n    --datepicker-min-width: 280px,\n    --datepicker-zindex: #{$zindex-dropdown},\n    --datepicker-header-font-weight: 600,\n    --datepicker-weekday-color: var(--fg-3),\n    --datepicker-day-hover-bg: var(--bg-1),\n    --datepicker-day-selected-bg: var(--primary-bg),\n    --datepicker-day-selected-color: var(--primary-contrast),\n    --datepicker-day-today-bg: var(--bg-2),\n    --datepicker-day-today-color: var(--fg-1),\n    --datepicker-day-disabled-color: var(--fg-4),\n  ),\n  $datepicker-tokens\n);\n// scss-docs-end datepicker-tokens\n\n@layer components {\n  [data-vc=\"calendar\"] {\n    @include tokens($datepicker-tokens);\n\n    position: absolute;\n    z-index: var(--datepicker-zindex);\n    box-sizing: border-box;\n    display: flex;\n    flex-direction: column;\n    min-width: var(--datepicker-min-width);\n    padding: var(--datepicker-padding);\n    font-family: var(--font-sans-serif);\n    font-size: var(--datepicker-font-size);\n    color: var(--datepicker-color);\n    color-scheme: light dark;\n    background-color: var(--datepicker-bg);\n    border: var(--datepicker-border-width) solid var(--datepicker-border-color);\n    @include border-radius(var(--datepicker-border-radius));\n    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n\n    // Respond to Bootstrap's color mode system\n    &[data-bs-theme=\"light\"] {\n      color-scheme: light;\n    }\n\n    &[data-bs-theme=\"dark\"] {\n      color-scheme: dark;\n    }\n\n    // Catch-all for focus styles\n    button:focus-visible {\n      position: relative;\n      z-index: 1;\n      @include focus-ring();\n    }\n  }\n\n  [data-vc-calendar-hidden] {\n    pointer-events: none;\n    opacity: 0;\n  }\n\n  // Inline calendars\n  //\n  // Remove popover styling for more neutral styling\n  [data-vc=\"calendar\"]:not([data-vc-input]) {\n    position: relative;\n    width: fit-content;\n    padding: 0;\n    border: 0;\n    box-shadow: none;\n  }\n\n  [data-vc-position=\"bottom\"] {\n    margin-block-start: .25rem;\n  }\n\n  [data-vc-position=\"top\"] {\n    margin-block-end: -.25rem;\n  }\n\n  [data-vc-arrow] {\n    position: relative;\n    display: block;\n    width: 2rem;\n    height: 2rem;\n    color: var(--datepicker-color);\n    pointer-events: auto;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--border-radius));\n\n    &::before {\n      position: absolute;\n      inset: .25rem;\n      content: \"\";\n      background-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%236b7280' d='M12 16c-.3 0-.5-.1-.7-.3l-6-6c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l5.3 5.3 5.3-5.3c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-6 6c-.2.2-.4.3-.7.3'/></svg>\");\n      background-repeat: no-repeat;\n      background-position: center;\n    }\n\n    &:hover {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  [data-vc-arrow=\"prev\"]::before {\n    transform: rotate(90deg);\n  }\n\n  [data-vc-arrow=\"next\"]::before {\n    transform: rotate(-90deg);\n  }\n\n  // Grid layout\n  [data-vc=\"controls\"] {\n    position: absolute;\n    top: 0;\n    right: 0;\n    left: 0;\n    z-index: 20;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding-top: 1rem;\n    padding-right: 1rem;\n    padding-left: 1rem;\n    pointer-events: none;\n  }\n\n  [data-vc=\"grid\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-wrap: wrap;\n    gap: 1.75rem;\n  }\n\n  [data-vc=\"column\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    min-width: 240px;\n  }\n\n  //\n  // Header\n  //\n\n  [data-vc=\"header\"] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    margin-bottom: .75rem;\n  }\n\n  // Month and year\n  [data-vc-header=\"content\"] {\n    display: inline-flex;\n    flex-grow: 1;\n    align-items: center;\n    justify-content: center;\n    white-space: pre-wrap;\n  }\n\n  [data-vc=\"month\"],\n  [data-vc=\"year\"] {\n    padding: .25rem .5rem;\n    margin-inline: -.125rem;\n    font-size: 1rem;\n    font-weight: var(--datepicker-header-font-weight);\n    color: var(--datepicker-color);\n    // cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--border-radius));\n\n    &:disabled {\n      color: var(--datepicker-day-disabled-color);\n      pointer-events: none;\n    }\n\n    &:hover:not(:disabled) {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  [data-vc=\"content\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n  }\n\n  // Month/Year grids\n  [data-vc=\"months\"],\n  [data-vc=\"years\"] {\n    display: grid;\n    flex-grow: 1;\n    grid-template-columns: repeat(var(--vc-columns, 4), minmax(0, 1fr));\n    row-gap: 1rem;\n    column-gap: .25rem;\n    align-items: center;\n  }\n\n  [data-vc=\"years\"] {\n    --vc-columns: 5;\n  }\n\n  [data-vc-months-month],\n  [data-vc-years-year] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 2.5rem;\n    padding: .25rem;\n    font-size: .75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    text-align: center;\n    word-break: break-all;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--border-radius));\n\n    &:disabled {\n      color: var(--datepicker-day-disabled-color);\n      pointer-events: none;\n    }\n\n    &:hover:not(:disabled) {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n\n    &[data-vc-months-month-selected],\n    &[data-vc-years-year-selected] {\n      color: var(--datepicker-day-selected-color);\n      background-color: var(--datepicker-day-selected-bg);\n\n      &:hover {\n        color: var(--datepicker-day-selected-color);\n        background-color: var(--datepicker-day-selected-bg);\n      }\n    }\n  }\n\n  // Week days header\n  [data-vc=\"week\"] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    justify-items: center;\n    margin-bottom: .5rem;\n  }\n\n  [data-vc-week-day] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    padding: 0;\n    margin: 0;\n    font-size: .75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    background-color: transparent;\n    border: 0;\n  }\n\n  button[data-vc-week-day] {\n    cursor: pointer;\n  }\n\n  // Dates grid\n  [data-vc=\"dates\"] {\n    pointer-events: none;\n  }\n\n  [data-vc-dates=\"row\"] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    align-items: center;\n    justify-items: center;\n    width: 100%;\n  }\n\n  [data-vc-date] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    padding-top: .125rem;\n    padding-bottom: .125rem;\n    pointer-events: auto;\n\n    &:not(:has([data-vc-date-btn])),\n    &[data-vc-date-disabled],\n    &[data-vc-date-disabled] [data-vc-date-btn] {\n      pointer-events: none;\n    }\n  }\n\n  // Date button\n  [data-vc-date-btn] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    height: 100%;\n    min-height: 1.875rem;\n    padding: 0;\n    font-size: .75rem;\n    font-weight: 400;\n    line-height: 1rem;\n    color: var(--datepicker-color);\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--border-radius);\n\n    &:hover {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  // Today\n  [data-vc-date-today] [data-vc-date-btn] {\n    font-weight: 600;\n    color: var(--datepicker-day-today-color);\n    background-color: var(--datepicker-day-today-bg);\n  }\n\n  // Outside month\n  [data-vc-date-month=\"next\"] [data-vc-date-btn],\n  [data-vc-date-month=\"prev\"] [data-vc-date-btn] {\n    opacity: .5;\n  }\n\n  // Disabled\n  [data-vc-date-disabled] [data-vc-date-btn] {\n    color: var(--datepicker-day-disabled-color);\n  }\n\n  // Range selection styles\n  [data-vc-date-hover] [data-vc-date-btn] {\n    background-color: var(--datepicker-day-hover-bg);\n    border-radius: 0;\n  }\n\n  [data-vc-date-hover=\"first\"] [data-vc-date-btn] {\n    border-start-start-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n\n  [data-vc-date-hover=\"last\"] [data-vc-date-btn] {\n    border-start-end-radius: var(--border-radius);\n    border-end-end-radius: var(--border-radius);\n  }\n\n  [data-vc-date-hover=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--border-radius);\n  }\n\n  [data-vc-date-selected=\"middle\"] [data-vc-date-btn] {\n    border-radius: 0;\n    opacity: .8;\n  }\n\n  // Selected\n  [data-vc-date-selected] [data-vc-date-btn] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n\n  }\n\n  [data-vc-date-selected=\"first\"] [data-vc-date-btn] {\n    border-top-left-radius: var(--border-radius);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--border-radius);\n  }\n\n  [data-vc-date-selected=\"last\"] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--border-radius);\n    border-bottom-right-radius: var(--border-radius);\n    border-bottom-left-radius: 0;\n  }\n\n  [data-vc-date-selected=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--border-radius);\n  }\n}\n","@use \"sass:map\";\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n// Native <dialog> component\n// Uses the browser's native dialog element with showModal()/show()/close() APIs\n// Leverages native [open] attribute and ::backdrop pseudo-element\n\n// stylelint-disable custom-property-no-missing-var-function\n$dialog-tokens: () !default;\n\n// scss-docs-start dialog-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$dialog-tokens: defaults(\n  (\n    --dialog-padding: 1rem,\n    --dialog-width: 500px,\n    --dialog-margin: 1.75rem,\n    --dialog-color: var(--fg-body),\n    --dialog-bg: var(--bg-body),\n    --dialog-border-color: var(--border-color-translucent),\n    --dialog-border-width: var(--border-width),\n    --dialog-border-radius: var(--border-radius-lg),\n    --dialog-box-shadow: var(--box-shadow-lg),\n    --dialog-backdrop-bg: rgb(0 0 0 / 50%),\n    --dialog-backdrop-blur: 8px,\n    --dialog-header-padding: 1rem,\n    --dialog-header-border-color: var(--border-color),\n    --dialog-header-border-width: var(--border-width),\n    --dialog-footer-padding: 1rem,\n    --dialog-footer-border-color: var(--border-color),\n    --dialog-footer-border-width: var(--border-width),\n    --dialog-footer-gap: .5rem,\n  ),\n  $dialog-tokens\n);\n// scss-docs-end dialog-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start dialog-sizes\n$dialog-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$dialog-sizes: defaults(\n  (\n    sm: 280px,\n    lg: 800px,\n    xl: 1140px,\n  ),\n  $dialog-sizes\n);\n// scss-docs-end dialog-sizes\n\n@layer components {\n  // Prevent body scroll when dialog is open\n  .dialog-open {\n    overflow: hidden;\n    scrollbar-gutter: stable;\n  }\n\n  .dialog {\n    @include tokens($dialog-tokens);\n\n    // Reset native dialog styles\n    max-width: var(--dialog-width);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    color: var(--dialog-color);\n    background-color: var(--dialog-bg);\n    background-clip: padding-box;\n    border: var(--dialog-border-width) solid var(--dialog-border-color);\n    @include border-radius(var(--dialog-border-radius));\n    @include box-shadow(var(--dialog-box-shadow));\n\n    // Native backdrop styling via ::backdrop pseudo-element\n    &::backdrop {\n      background-color: var(--dialog-backdrop-bg);\n      backdrop-filter: blur(var(--dialog-backdrop-blur));\n    }\n\n    // Animation support using native [open] attribute\n    &.fade {\n      opacity: 0;\n      @include transition(opacity .15s linear);\n\n      &::backdrop {\n        opacity: 0;\n        @include transition(opacity .15s linear);\n      }\n\n      &[open] {\n        opacity: 1;\n\n        &::backdrop {\n          opacity: 1;\n        }\n      }\n    }\n\n    // Static backdrop \"bounce\" animation (modal dialogs only)\n    &.dialog-static {\n      transform: scale(1.02);\n    }\n\n    // Non-modal dialog positioning\n    // show() doesn't use the top layer, so we need explicit positioning and z-index\n    &.dialog-nonmodal {\n      position: fixed;\n      inset-block-start: 50%;\n      inset-inline-start: 50%;\n      z-index: $zindex-dialog;\n      margin-inline: 0;\n      transform: translate(-50%, -50%);\n    }\n\n    // Overflow dialog - scrollable viewport container with dialog box inside\n    &.dialog-overflow {\n      // Make dialog element the full-viewport scrollable container\n      position: fixed;\n      inset: 0;\n      width: 100%;\n      max-width: 100%;\n      height: 100%;\n      max-height: 100%;\n      padding: var(--dialog-margin);\n      margin: 0;\n      overflow-y: auto;\n      overscroll-behavior: contain;\n      background: transparent;\n      border: 0;\n      box-shadow: none;\n\n      // The visual dialog box is a child wrapper\n      > .dialog-box {\n        max-width: var(--dialog-width);\n        margin-block-end: var(--dialog-margin);\n        margin-inline: auto;\n        color: var(--dialog-color);\n        background-color: var(--dialog-bg);\n        background-clip: padding-box;\n        border: var(--dialog-border-width) solid var(--dialog-border-color);\n        @include border-radius(var(--dialog-border-radius));\n        @include box-shadow(var(--dialog-box-shadow));\n      }\n    }\n\n    // Scrollable dialog body (header/footer stay fixed)\n    &.dialog-scrollable[open] {\n      display: flex;\n      flex-direction: column;\n      max-height: calc(100% - var(--dialog-margin) * 2);\n\n      .dialog-body {\n        overflow-y: auto;\n      }\n    }\n  }\n\n  // Dialog sizes\n  @each $size, $value in $dialog-sizes {\n    .dialog-#{$size} { --dialog-width: #{$value}; }\n  }\n\n  // Fullscreen dialog\n  .dialog-fullscreen {\n    --dialog-width: 100vw;\n    --dialog-margin: 0;\n    --dialog-border-radius: 0;\n\n    width: 100%;\n    max-width: none;\n    height: 100%;\n    max-height: none;\n  }\n\n  // Responsive fullscreen dialogs\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    $postfix: if(sass($infix != \"\"): #{$infix}-down; else: \"\");\n\n    @if $postfix != \"\" {\n      @include media-breakpoint-down($breakpoint) {\n        .dialog-fullscreen#{$postfix} {\n          --dialog-width: 100vw;\n          --dialog-margin: 0;\n          --dialog-border-radius: 0;\n\n          width: 100%;\n          max-width: none;\n          height: 100%;\n          max-height: none;\n        }\n      }\n    }\n  }\n\n  // Dialog header\n  .dialog-header {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    padding: var(--dialog-header-padding);\n    border-block-end: var(--dialog-header-border-width) solid var(--dialog-header-border-color);\n\n    .btn-close {\n      margin-inline-start: auto;\n    }\n  }\n\n  // Dialog title\n  .dialog-title {\n    margin-bottom: 0;\n    font-size: var(--font-size-md);\n    line-height: 1.5;\n  }\n\n  // Dialog body\n  .dialog-body {\n    position: relative;\n    flex: 1 1 auto;\n    padding: var(--dialog-padding);\n    overflow-y: auto;\n  }\n\n  // Dialog footer\n  .dialog-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: var(--dialog-footer-gap);\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--dialog-footer-padding);\n    border-block-start: var(--dialog-footer-border-width) solid var(--dialog-footer-border-color);\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/tokens\" as *;\n\n$dropdown-tokens: () !default;\n\n// scss-docs-start dropdown-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$dropdown-tokens: defaults(\n  (\n    --dropdown-zindex: #{$zindex-dropdown},\n    --dropdown-gap: .125rem,\n    --dropdown-min-width: 10rem,\n    --dropdown-padding-x: .25rem,\n    --dropdown-padding-y: .25rem,\n    --dropdown-spacer: .125rem,\n    --dropdown-font-size: var(--font-size-sm),\n    --dropdown-color: var(--fg-body),\n    --dropdown-bg: var(--bg-body),\n    --dropdown-border-color: var(--border-color-translucent),\n    --dropdown-border-radius: var(--border-radius-lg),\n    --dropdown-border-width: var(--border-width),\n    --dropdown-inner-border-radius: calc(var(--dropdown-border-radius) - var(--dropdown-border-width)),\n    --dropdown-box-shadow: var(--box-shadow),\n    --dropdown-divider-bg: var(--border-color-translucent),\n    --dropdown-divider-margin-y: .125rem,\n    --dropdown-divider-margin-x: .25rem,\n    --dropdown-link-color: var(--fg-body),\n    --dropdown-link-hover-color: var(--fg-body),\n    --dropdown-link-hover-bg: var(--bg-1),\n    --dropdown-link-active-color: var(--primary-contrast),\n    --dropdown-link-active-bg: var(--primary-bg),\n    --dropdown-link-disabled-color: var(--fg-3),\n    --dropdown-item-gap: .5rem,\n    --dropdown-item-padding-x: .75rem,\n    --dropdown-item-padding-y: .25rem,\n    --dropdown-item-border-radius: var(--border-radius),\n    --dropdown-header-color: var(--fg-2),\n    --dropdown-header-padding-x: .75rem,\n    --dropdown-header-padding-y: .25rem,\n  ),\n  $dropdown-tokens\n);\n// scss-docs-end dropdown-tokens\n\n@layer components {\n  .dropdown {\n    position: relative;\n  }\n\n  .dropdown-menu {\n    @include tokens($dropdown-tokens);\n\n    position: absolute;\n    z-index: var(--dropdown-zindex);\n    display: none; // none by default, but flex on \"open\" of the menu\n    flex-direction: column;\n    gap: var(--dropdown-gap);\n    min-width: var(--dropdown-min-width);\n    padding: var(--dropdown-padding-y) var(--dropdown-padding-x);\n    margin: 0; // Override default margin of ul\n    font-size: var(--dropdown-font-size);\n    color: var(--dropdown-color);\n    text-align: start; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n    list-style: none;\n    background-color: var(--dropdown-bg);\n    background-clip: padding-box;\n    border: var(--dropdown-border-width) solid var(--dropdown-border-color);\n    @include border-radius(var(--dropdown-border-radius));\n    @include box-shadow(var(--dropdown-box-shadow));\n  }\n\n  .dropdown-menu.show {\n    display: flex;\n  }\n\n  .dropdown-divider {\n    height: 0;\n    margin: var(--dropdown-divider-margin-y) var(--dropdown-divider-margin-x);\n    overflow: hidden;\n    border-block-start: 1px solid var(--dropdown-divider-bg);\n    opacity: 1;\n  }\n\n  // Links, buttons, and more within the dropdown menu\n  //\n  // `<button>`-specific styles are denoted with `// For <button>s`\n  .dropdown-item {\n    display: flex;\n    gap: var(--dropdown-item-gap);\n    align-items: center;\n    width: 100%; // For `<button>`s\n    padding: var(--dropdown-item-padding-y) var(--dropdown-item-padding-x);\n    font-weight: $font-weight-normal;\n    color: var(--theme-text, var(--dropdown-link-color));\n    text-align: inherit; // For `<button>`s\n    text-decoration: none;\n    white-space: nowrap; // prevent links from randomly breaking onto new lines\n    background-color: transparent; // For `<button>`s\n    border: 0; // For `<button>`s\n    @include border-radius(var(--dropdown-item-border-radius, 0));\n\n    &:hover,\n    &:focus {\n      color: var(--theme-text, var(--dropdown-link-hover-color));\n      @include gradient-bg(var(--theme-bg-subtle, var(--dropdown-link-hover-bg)));\n    }\n\n    &.active,\n    &:active {\n      color: var(--theme-contrast, var(--dropdown-link-active-color));\n      @include gradient-bg(var(--theme-bg, var(--dropdown-link-active-bg)));\n    }\n\n    &.disabled,\n    &:disabled {\n      color: var(--dropdown-link-disabled-color);\n      pointer-events: none;\n      background-color: transparent;\n      // Remove CSS gradients if they're enabled\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n    }\n  }\n\n  .dropdown-header {\n    display: block;\n    padding: var(--dropdown-header-padding-y) var(--dropdown-header-padding-x);\n    margin-bottom: 0; // for use with heading elements\n    font-size: var(--font-size-sm);\n    color: var(--dropdown-header-color);\n    white-space: nowrap; // as with > li > a\n  }\n\n  .dropdown-item-text {\n    display: block;\n    padding: var(--dropdown-item-padding-y) var(--dropdown-item-padding-x);\n    color: var(--fg-2);\n  }\n\n  // scss-docs-start dropdown-submenu\n  // Submenus\n  //\n  // Nested dropdown menus with hover/click activation and keyboard support.\n\n  .dropdown-submenu {\n    position: relative;\n\n    > .dropdown-item {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n\n    > .dropdown-item::after {\n      display: inline-block;\n      flex-shrink: 0;\n      width: .375em;\n      height: .375em;\n      margin-inline-start: auto;\n      content: \"\";\n      border-color: currentcolor;\n      border-style: solid;\n      border-width: 0 .125em .125em 0;\n      transform: rotate(-45deg);\n\n      // RTL: flip the chevron direction\n      [dir=\"rtl\"] & {\n        transform: rotate(135deg);\n      }\n    }\n\n    // Submenu positioning (set by JS via Floating UI)\n    > .dropdown-menu {\n      top: 0;\n      // Offset to align with parent item\n      margin-top: calc(-1 * var(--dropdown-padding-y));\n    }\n\n    &:hover > .dropdown-item,\n    &:focus-within > .dropdown-item {\n      color: var(--dropdown-link-hover-color);\n      background-color: var(--dropdown-link-hover-bg);\n    }\n\n    &.show > .dropdown-item {\n      color: var(--dropdown-link-hover-color);\n      background-color: var(--dropdown-link-hover-bg);\n    }\n  }\n  // scss-docs-end dropdown-submenu\n}\n","@use \"sass:map\";\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/tokens\" as *;\n\n$list-group-tokens: () !default;\n\n// scss-docs-start list-group-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$list-group-tokens: defaults(\n  (\n    --list-group-color: var(--fg-body),\n    --list-group-bg: var(--bg-body),\n    --list-group-border-color: var(--border-color),\n    --list-group-border-width: var(--border-width),\n    --list-group-border-radius: var(--border-radius),\n    --list-group-item-padding-x: #{$spacer},\n    --list-group-item-padding-y: #{$spacer * .5},\n    --list-group-action-color: var(--fg-2),\n    --list-group-action-hover-color: var(--fg-1),\n    --list-group-action-hover-bg: var(--bg-1),\n    --list-group-action-active-color: var(--fg-body),\n    --list-group-action-active-bg: var(--bg-2),\n    --list-group-disabled-color: var(--fg-3),\n    --list-group-disabled-bg: var(--bg-body),\n    --list-group-active-color: var(--primary-contrast),\n    --list-group-active-bg: var(--primary-bg),\n    --list-group-active-border-color: var(--primary-bg),\n  ),\n  $list-group-tokens\n);\n// scss-docs-end list-group-tokens\n\n@layer components {\n  .list-group {\n    @include tokens($list-group-tokens);\n\n    display: flex;\n    flex-direction: column;\n\n    // No need to set list-style: none; since .list-group-item is block level\n    padding-inline-start: 0; // reset padding because ul and ol\n    margin-bottom: 0;\n    @include border-radius(var(--list-group-border-radius));\n  }\n\n  .list-group-numbered {\n    list-style-type: none;\n    counter-reset: section;\n\n    > .list-group-item::before {\n      // Increments only this instance of the section counter\n      content: counters(section, \".\") \". \";\n      counter-increment: section;\n    }\n  }\n\n  // Individual list items\n  //\n  // Use on `li`s or `div`s within the `.list-group` parent.\n\n  .list-group-item {\n    position: relative;\n    display: block;\n    padding: var(--list-group-item-padding-y) var(--list-group-item-padding-x);\n    color: var(--theme-text, var(--list-group-color));\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    text-decoration: if(sass($link-decoration == none): null);\n    background-color: var(--theme-bg-subtle, var(--list-group-bg));\n    border: var(--list-group-border-width) solid var(--theme-border, var(--list-group-border-color));\n\n    &:first-child {\n      @include border-top-radius(inherit);\n    }\n\n    &:last-child {\n      @include border-bottom-radius(inherit);\n    }\n\n    &.disabled,\n    &:disabled {\n      color: var(--list-group-disabled-color);\n      pointer-events: none;\n      background-color: var(--list-group-disabled-bg);\n    }\n\n    // Include both here for `<a>`s and `<button>`s\n    &.active {\n      z-index: 2; // Place active items above their siblings for proper border styling\n      color: var(--list-group-active-color);\n      background-color: var(--list-group-active-bg);\n      border-color: var(--list-group-active-border-color);\n    }\n\n    // stylelint-disable-next-line scss/selector-no-redundant-nesting-selector\n    & + .list-group-item {\n      border-block-start-width: 0;\n\n      &.active {\n        margin-top: calc(-1 * var(--list-group-border-width));\n        border-block-start-width: var(--list-group-border-width);\n      }\n    }\n  }\n\n  // Interactive list items\n  //\n  // Use anchor or button elements instead of `li`s or `div`s to create interactive\n  // list items. Includes an extra `.active` modifier class for selected items.\n\n  .list-group-item-action {\n    width: 100%; // For `<button>`s (anchors become 100% by default though)\n    color: var(--theme-text, var(--list-group-action-color));\n    text-align: inherit; // For `<button>`s (anchors inherit)\n    text-decoration: none;\n\n    &:not(.active) {\n      // Hover state\n      &:hover,\n      &:focus {\n        z-index: 1; // Place hover/focus items above their siblings for proper border styling\n        color: var(--theme-text-emphasis, var(--list-group-action-hover-color));\n        text-decoration: none;\n        background-color: var(--theme-bg-muted, var(--list-group-action-hover-bg));\n      }\n\n      &:active {\n        color: var(--theme-text-emphasis, var(--list-group-action-active-color));\n        background-color: var(--theme-bg-muted, var(--list-group-action-active-bg));\n      }\n    }\n  }\n\n  // Horizontal\n  //\n  // Change the layout of list group items from vertical (default) to horizontal.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      .list-group-horizontal#{$infix} {\n        flex-direction: row;\n\n        > .list-group-item {\n          &:first-child:not(:last-child) {\n            @include border-bottom-start-radius(var(--list-group-border-radius));\n            @include border-top-end-radius(0);\n          }\n\n          &:last-child:not(:first-child) {\n            @include border-top-end-radius(var(--list-group-border-radius));\n            @include border-bottom-start-radius(0);\n          }\n\n          &.active {\n            margin-top: 0;\n          }\n\n          + .list-group-item {\n            border-block-start-width: var(--list-group-border-width);\n            border-inline-start-width: 0;\n\n            &.active {\n              margin-inline-start: calc(-1 * var(--list-group-border-width));\n              border-inline-start-width: var(--list-group-border-width);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  // Flush list items\n  //\n  // Remove borders and border-radius to keep list group items edge-to-edge. Most\n  // useful within other components (e.g., cards).\n\n  .list-group-flush {\n    @include border-radius(0);\n\n    > .list-group-item {\n      border-width: 0 0 var(--list-group-border-width);\n\n      &:last-child {\n        border-block-end-width: 0;\n      }\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/tokens\" as *;\n@use \"mixins/transition\" as *;\n\n$nav-tokens: () !default;\n\n// scss-docs-start nav-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-tokens: defaults(\n  (\n    --nav-gap: .125rem,\n    --nav-link-gap: .5rem,\n    --nav-link-align: center,\n    --nav-link-justify: center,\n    --nav-link-padding-x: .75rem,\n    --nav-link-padding-y: .375rem,\n    --nav-link-color: var(--fg-2),\n    --nav-link-hover-color: var(--fg-1),\n    --nav-link-hover-bg: var(--bg-1),\n    --nav-link-active-color: var(--fg-body),\n    --nav-link-active-bg: var(--bg-2),\n    --nav-link-disabled-color: var(--fg-4),\n    --nav-link-transition-property: \"color, background-color, border-color\",\n    --nav-link-transition-timing: .15s ease-in-out,\n    --nav-link-transition: var(--nav-link-transition-property) var(--nav-link-transition-timing),\n  ),\n  $nav-tokens\n);\n// scss-docs-end nav-tokens\n\n$nav-tabs-tokens: () !default;\n\n// scss-docs-start nav-tabs-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-tabs-tokens: defaults(\n  (\n    --nav-tabs-border-width: var(--border-width),\n    --nav-tabs-border-color: var(--border-color),\n    --nav-tabs-border-radius: var(--border-radius),\n    --nav-tabs-link-hover-border-color: var(--border-subtle),\n    --nav-tabs-link-active-color: var(--fg-color),\n    --nav-tabs-link-active-bg: var(--bg-body),\n    --nav-tabs-link-active-border-color: var(--border-color) var(--border-color) var(--bg-body),\n  ),\n  $nav-tabs-tokens\n);\n// scss-docs-end nav-tabs-tokens\n\n$nav-pills-tokens: () !default;\n\n// scss-docs-start nav-pills-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-pills-tokens: defaults(\n  (\n    --nav-pills-link-active-color: var(--component-active-color),\n    --nav-pills-link-active-bg: var(--component-active-bg),\n  ),\n  $nav-pills-tokens\n);\n// scss-docs-end nav-pills-tokens\n\n$nav-underline-tokens: () !default;\n\n// scss-docs-start nav-underline-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-underline-tokens: defaults(\n  (\n    --nav-gap: 1rem,\n    --nav-link-active-bg: transparent,\n    --nav-underline-border-width: .125rem,\n    --nav-underline-link-active-color: var(--fg-color),\n  ),\n  $nav-underline-tokens\n);\n// scss-docs-end nav-underline-tokens\n\n// Base class\n//\n// Kickstart any navigation component with a set of style resets. Works with\n// `<nav>`s, `<ul>`s or `<ol>`s.\n\n@layer components {\n  .nav {\n    @include tokens($nav-tokens);\n\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style: none;\n  }\n\n  .nav-item {\n    display: flex;\n  }\n\n  .nav-link {\n    display: flex;\n    gap: var(--nav-link-gap);\n    align-items: var(--nav-link-align);\n    justify-content: var(--nav-link-justify);\n    padding: var(--nav-link-padding-y) var(--nav-link-padding-x);\n    font-weight: var(--nav-link-font-weight);\n    color: var(--nav-link-color);\n    text-decoration: none;\n    white-space: nowrap;\n    background: none;\n    border: 0;\n    @include border-radius(var(--border-radius));\n    // @include font-size(var(--nav-link-font-size));\n    @include transition(var(--nav-link-transition));\n\n    &:hover,\n    &:focus {\n      color: var(--nav-link-hover-color);\n      background-color: var(--nav-link-hover-bg);\n    }\n\n    &:focus-visible {\n      --focus-ring-offset: 1px;\n      color: var(--nav-link-hover-color);\n      @include focus-ring(true);\n    }\n\n    &.active,\n    &:active {\n      color: var(--nav-link-active-color);\n      background-color: var(--nav-link-active-bg);\n    }\n\n    // Disabled state lightens text\n    &.disabled,\n    &:disabled {\n      color: var(--nav-link-disabled-color);\n      pointer-events: none;\n      cursor: default;\n    }\n  }\n\n  //\n  // Tabs\n  //\n\n  .nav-tabs {\n    // scss-docs-start nav-tabs-css-vars\n    @include tokens($nav-tabs-tokens);\n    // scss-docs-end nav-tabs-css-vars\n\n    box-shadow: inset 0 calc(-1 * var(--nav-tabs-border-width)) 0 var(--nav-tabs-border-color);\n\n    .nav-link {\n      border: var(--nav-tabs-border-width) solid transparent;\n      border-bottom-color: var(--nav-tabs-border-color);\n      @include border-bottom-radius(0);\n\n      &:hover {\n        // Prevents active .nav-link tab overlapping focus outline of previous/next .nav-link\n        isolation: isolate;\n        border-color: var(--nav-tabs-link-hover-border-color);\n        border-bottom-color: var(--nav-tabs-border-color);\n      }\n    }\n\n    .nav-link.active,\n    .nav-item.show .nav-link {\n      color: var(--nav-tabs-link-active-color);\n      background-color: var(--nav-tabs-link-active-bg);\n      border-color: var(--nav-tabs-link-active-border-color);\n      border-bottom-color: var(--nav-tabs-link-active-bg);\n    }\n\n    .dropdown-menu {\n      // Make dropdown border overlap tab border\n      margin-top: calc(-1 * var(--nav-tabs-border-width));\n      // Remove the top rounded corners here since there is a hard edge above the menu\n      @include border-top-radius(0);\n    }\n  }\n\n  //\n  // Pills\n  //\n\n  .nav-pills {\n    // scss-docs-start nav-pills-css-vars\n    @include tokens($nav-pills-tokens);\n    // scss-docs-end nav-pills-css-vars\n\n    .nav-link.active,\n    .show > .nav-link {\n      color: var(--nav-pills-link-active-color);\n      @include gradient-bg(var(--nav-pills-link-active-bg));\n    }\n  }\n\n  //\n  // Underline\n  //\n\n  .nav-underline {\n    // scss-docs-start nav-underline-css-vars\n    @include tokens($nav-underline-tokens);\n    // scss-docs-end nav-underline-css-vars\n\n    .nav-link {\n      padding-inline: 0;\n      border-block-end: var(--nav-underline-border-width) solid transparent;\n      @include border-radius(0);\n\n      &:hover,\n      &:focus {\n        border-block-end-color: currentcolor;\n      }\n    }\n\n    .nav-link.active,\n    .show > .nav-link {\n      font-weight: $font-weight-bold;\n      color: var(--nav-underline-link-active-color);\n      border-block-end-color: currentcolor;\n    }\n  }\n\n  //\n  // Justified variants\n  //\n\n  .nav-fill {\n    > .nav-link,\n    .nav-item {\n      flex: 1 1 auto;\n      text-align: center;\n    }\n  }\n\n  .nav-justified {\n    > .nav-link,\n    .nav-item {\n      flex-grow: 1;\n      flex-basis: 0;\n      text-align: center;\n    }\n  }\n\n  .nav-fill,\n  .nav-justified {\n    .nav-item .nav-link {\n      width: 100%; // Make sure button will grow\n    }\n  }\n\n  // Tabbable tabs\n  //\n  // Hide tabbable panes to start, show them when `.active`\n\n  .tab-content {\n    > .tab-pane {\n      display: none;\n    }\n    > .active {\n      display: block;\n    }\n  }\n}\n","// Nav Overflow (Priority+ Pattern)\n//\n// A responsive navigation pattern that automatically moves items\n// to an overflow dropdown when space is limited.\n\n@layer components {\n  .nav-overflow {\n    flex-wrap: nowrap;\n    min-width: 0; // Allow flex child to shrink below content width\n  }\n\n  // Container item for overflow\n  .nav-overflow-item {\n    flex-shrink: 0;\n    margin-inline-start: auto;\n  }\n\n  // Hide items that have been moved to overflow\n  .nav-overflow [data-bs-nav-overflow=\"true\"] {\n    display: none;\n  }\n\n  // Preserve items that should never overflow\n  .nav-overflow-keep {\n    flex-shrink: 0;\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/tokens\" as *;\n@use \"mixins/transition\" as *;\n\n// mdo-do: fix nav-link-height and navbar-brand-height, which we previously calculated with font-size, line-height, and block padding\n\n// scss-docs-start navbar-breakpoints\n$navbar-breakpoints: $breakpoints !default;\n// scss-docs-end navbar-breakpoints\n\n$navbar-tokens: () !default;\n\n// scss-docs-start navbar-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-tokens: defaults(\n  (\n    --navbar-padding-x: 0,\n    --navbar-padding-y: .5rem,\n    --navbar-color: var(--fg-2),\n    --navbar-hover-color: var(--fg-1),\n    --navbar-disabled-color: var(--fg-3),\n    --navbar-active-color: var(--fg-body),\n    --navbar-brand-padding-y: .75rem,\n    --navbar-brand-margin-end: 1rem,\n    --navbar-brand-font-size: var(--font-size-md),\n    --navbar-brand-font-weight: var(--font-weight-medium),\n    --navbar-brand-color: var(--fg-body),\n    --navbar-brand-hover-color: var(--fg-body),\n    --navbar-nav-link-padding-x: .75rem,\n    --navbar-toggler-width: 2rem,\n    --navbar-toggler-padding-y: .25rem,\n    --navbar-toggler-padding-x: .75rem,\n    --navbar-toggler-font-size: var(--font-size-lg),\n    --navbar-toggler-border-color: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    --navbar-toggler-border-radius: var(--border-radius),\n    --navbar-toggler-transition: box-shadow .15s ease-in-out,\n  ),\n  $navbar-tokens\n);\n// scss-docs-end navbar-tokens\n\n$navbar-dark-tokens: () !default;\n\n// scss-docs-start navbar-dark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-dark-tokens: defaults(\n  (\n    --navbar-color: color-mix(in oklch, var(--white) .55, transparent),\n    --navbar-hover-color: color-mix(in oklch, var(--white) .75, transparent),\n    --navbar-disabled-color: color-mix(in oklch, var(--white) .25, transparent),\n    --navbar-active-color: var(--white),\n    --navbar-brand-color: var(--white),\n    --navbar-brand-hover-color: var(--white),\n    --navbar-toggler-border-color: color-mix(in oklch, var(--white) .1, transparent),\n  ),\n  $navbar-dark-tokens\n);\n// scss-docs-end navbar-dark-tokens\n\n@layer components {\n  // Base navbar\n  .navbar {\n    @include tokens($navbar-tokens);\n\n    position: relative;\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: space-between;\n    padding: var(--navbar-padding-y) var(--navbar-padding-x);\n    @include set-container();\n    @include gradient-bg();\n\n    // Container properties for nested containers\n    %container-flex-properties {\n      display: flex;\n      flex-wrap: inherit;\n      align-items: center;\n      justify-content: space-between;\n    }\n\n    > .container,\n    > .container-fluid {\n      @extend %container-flex-properties;\n    }\n\n    @each $breakpoint, $container-max-width in $container-max-widths {\n      > .container#{breakpoint-infix($breakpoint, $container-max-widths)} {\n        @extend %container-flex-properties;\n      }\n    }\n  }\n\n  // Navbar brand\n  //\n  // Used for brand, project, or site names.\n  .navbar-brand {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    margin-inline-end: var(--navbar-brand-margin-end);\n    font-size: var(--navbar-brand-font-size);\n    font-weight: var(--navbar-brand-font-weight);\n    color: var(--navbar-brand-color);\n    text-decoration: none;\n    white-space: nowrap;\n\n    &:hover,\n    &:focus {\n      color: var(--navbar-brand-hover-color);\n    }\n  }\n\n  // Navigation within navbars. Sets all nav-link CSS variables needed for\n  // proper styling.\n  //\n  // Relies on `.nav` base class.\n  .navbar-nav {\n    // scss-docs-start navbar-nav-css-vars\n    // Set all nav-link variables for self-contained styling\n    --nav-gap: .25rem;\n    --nav-link-gap: .5rem;\n    --nav-link-padding-x: .5rem;\n    --nav-link-padding-y: .5rem;\n    --nav-link-color: var(--navbar-color);\n    --nav-link-hover-color: var(--navbar-hover-color);\n    --nav-link-hover-bg: transparent;\n    --nav-link-active-color: var(--navbar-active-color);\n    --nav-link-active-bg: transparent;\n    --nav-link-disabled-color: var(--navbar-disabled-color);\n    // scss-docs-end navbar-nav-css-vars\n\n    display: flex;\n    flex-direction: column;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style: none;\n\n    .nav-link {\n      &.active,\n      &.show {\n        color: var(--navbar-active-color);\n      }\n    }\n  }\n\n  // Navbar text\n  //\n  // For adding text or inline elements to the navbar\n  .navbar-text {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    color: var(--navbar-color);\n\n    a,\n    a:hover,\n    a:focus {\n      color: var(--navbar-active-color);\n    }\n  }\n\n  // Button for toggling the navbar when in its collapsed state\n  .navbar-toggler {\n    --btn-bg: transparent;\n    --btn-hover-bg: var(--bg-2);\n  }\n\n  // scss-docs-start navbar-expand-loop\n  // Generate series of `.navbar-expand-*` responsive classes for configuring\n  // where your navbar collapses and expands. Uses container queries so the\n  // navbar responds to its own width, not the viewport width.\n\n  // Mixin for expanded state styles (applied to descendants)\n  @mixin navbar-expanded {\n    // Style the inner container since we can't style .navbar itself with container queries\n    > .container,\n    > .container-fluid,\n    %navbar-expand-container {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n\n    .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n\n    .navbar-toggler {\n      display: none !important; // stylelint-disable-line declaration-no-important\n    }\n\n    .offcanvas {\n      // stylelint-disable declaration-no-important\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      @include box-shadow(none);\n      @include transition(none);\n      // stylelint-enable declaration-no-important\n\n      .offcanvas-header {\n        display: none;\n      }\n\n      .offcanvas-body {\n        display: flex;\n        flex-grow: 0;\n        flex-direction: row;\n        align-items: center;\n        padding: 0;\n        overflow-y: visible;\n      }\n    }\n  }\n\n  // Always expanded (no responsive behavior)\n  .navbar-expand {\n    @include navbar-expanded();\n\n    // Also set on navbar itself for non-responsive case\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n\n  // Responsive navbar expand classes using container queries\n  @include loop-breakpoints-down($navbar-breakpoints) using ($breakpoint, $next, $infix) {\n    @if $next {\n      .navbar-expand#{$infix} {\n        @include container-breakpoint-up($next) {\n          @include navbar-expanded();\n        }\n      }\n    }\n  }\n  // scss-docs-end navbar-expand-loop\n\n  .navbar[data-bs-theme=\"dark\"] {\n    @include tokens($navbar-dark-tokens);\n  }\n}\n","@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/backdrop\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$offcanvas-tokens: () !default;\n\n// scss-docs-start offcanvas-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$offcanvas-tokens: defaults(\n  (\n    --offcanvas-inset: var(--spacer),\n    --offcanvas-zindex: #{$zindex-offcanvas},\n    --offcanvas-width: 400px,\n    --offcanvas-height: 30vh,\n    --offcanvas-padding-x: var(--spacer),\n    --offcanvas-padding-y: var(--spacer),\n    --offcanvas-color: var(--fg-body),\n    --offcanvas-bg: var(--bg-body),\n    --offcanvas-border-width: var(--border-width),\n    --offcanvas-border-color: var(--border-color-translucent),\n    --offcanvas-border-radius: var(--border-radius-lg),\n    --offcanvas-box-shadow: var(--box-shadow-lg),\n    --offcanvas-transition: transform .3s ease-in-out,\n    --offcanvas-title-line-height: 1.5,\n  ),\n  $offcanvas-tokens\n);\n// scss-docs-end offcanvas-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n$offcanvas-backdrop-tokens: () !default;\n\n// scss-docs-start offcanvas-backdrop-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$offcanvas-backdrop-tokens: defaults(\n  (\n    --offcanvas-backdrop-bg: var(--bg-body),\n    --offcanvas-backdrop-opacity: 25%,\n    --offcanvas-backdrop-blur: 8px,\n  ),\n  $offcanvas-backdrop-tokens\n);\n// scss-docs-end offcanvas-backdrop-tokens\n\n%offcanvas-css-vars {\n  @include tokens($offcanvas-tokens);\n}\n\n@layer components {\n  // Apply CSS vars to all offcanvas responsive variants\n  @include loop-breakpoints-down() using ($breakpoint, $next, $infix) {\n    .offcanvas#{$infix} {\n      @extend %offcanvas-css-vars;\n    }\n  }\n\n  // Responsive offcanvas styles\n  @include loop-breakpoints-down() using ($breakpoint, $next, $infix) {\n    .offcanvas#{$infix} {\n      @include media-breakpoint-down($next) {\n        position: fixed;\n        z-index: var(--offcanvas-zindex);\n        display: flex;\n        flex-direction: column;\n        max-width: calc(100% - var(--offcanvas-inset) * 2);\n        max-height: calc(100% - var(--offcanvas-inset) * 2);\n        color: var(--offcanvas-color);\n        visibility: hidden;\n        background-color: var(--offcanvas-bg);\n        background-clip: padding-box;\n        border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n        @include border-radius(var(--offcanvas-border-radius));\n        outline: 0;\n        @include box-shadow(var(--offcanvas-box-shadow));\n        @include transition(var(--offcanvas-transition));\n\n        // Placement: Start (left in LTR, right in RTL)\n        &.offcanvas-start {\n          inset-block: var(--offcanvas-inset);\n          inset-inline-start: var(--offcanvas-inset);\n          width: var(--offcanvas-width);\n          transform: translateX(-100%);\n\n          :root:dir(rtl) & {\n            transform: translateX(100%);\n          }\n        }\n\n        // Placement: End (right in LTR, left in RTL)\n        &.offcanvas-end {\n          inset-block: var(--offcanvas-inset);\n          inset-inline-end: var(--offcanvas-inset);\n          width: var(--offcanvas-width);\n          transform: translateX(100%);\n\n          :root:dir(rtl) & {\n            transform: translateX(-100%);\n          }\n        }\n\n        // Placement: Top\n        &.offcanvas-top {\n          inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n          height: var(--offcanvas-height);\n          transform: translateY(-100%);\n        }\n\n        // Placement: Bottom\n        &.offcanvas-bottom {\n          inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n          height: var(--offcanvas-height);\n          transform: translateY(100%);\n        }\n\n        // Fullscreen variant - covers entire viewport\n        &.offcanvas-fullscreen {\n          inset: var(--offcanvas-inset);\n          width: auto;\n          max-width: none;\n          height: auto;\n          max-height: none;\n          transform: translateY(100%);\n        }\n\n        // Show/hide states\n        &.showing,\n        &.show:not(.hiding) {\n          transform: none;\n        }\n\n        &.showing,\n        &.hiding,\n        &.show {\n          visibility: visible;\n        }\n      }\n\n      // Above breakpoint - show content inline (for responsive offcanvas)\n      @if not ($infix == \"\") {\n        @include media-breakpoint-up($next) {\n          --offcanvas-height: auto;\n          --offcanvas-border-width: 0;\n          background-color: transparent !important; // stylelint-disable-line declaration-no-important\n\n          .offcanvas-header {\n            display: none;\n          }\n\n          .offcanvas-body {\n            flex-grow: 0;\n            flex-direction: row;\n            padding: 0;\n            overflow-y: visible;\n            background-color: transparent !important; // stylelint-disable-line declaration-no-important\n          }\n        }\n      }\n    }\n  }\n\n  // Backdrop overlay\n  .offcanvas-backdrop {\n    @include tokens($offcanvas-backdrop-tokens);\n    @include overlay-backdrop($zindex-offcanvas-backdrop, var(--offcanvas-backdrop-bg), var(--offcanvas-backdrop-opacity), var(--offcanvas-backdrop-blur));\n  }\n\n  // Header with close button\n  .offcanvas-header {\n    display: flex;\n    align-items: center;\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n\n    .btn-close {\n      padding: calc(var(--offcanvas-padding-y) * .5) calc(var(--offcanvas-padding-x) * .5);\n      margin-inline-start: auto;\n      margin-inline-end: calc(-.5 * var(--offcanvas-padding-x));\n      margin-top: calc(-.5 * var(--offcanvas-padding-y));\n      margin-bottom: calc(-.5 * var(--offcanvas-padding-y));\n    }\n  }\n\n  // Title\n  .offcanvas-title {\n    margin-bottom: 0;\n    line-height: var(--offcanvas-title-line-height);\n  }\n\n  // Scrollable body\n  .offcanvas-body {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    gap: var(--offcanvas-padding-y);\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n    overflow-y: auto;\n  }\n\n  // Optional footer\n  .offcanvas-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: .5rem;\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n    border-block-start: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n  }\n}\n","// Shared between modals and offcanvases\n@mixin overlay-backdrop($zindex, $backdrop-bg, $backdrop-opacity, $backdrop-blur) {\n  position: fixed;\n  inset: 0;\n  z-index: $zindex;\n  background-color: color-mix(in oklch, var(--offcanvas-backdrop-bg) var(--offcanvas-backdrop-opacity), transparent);\n  @if $backdrop-blur {\n    backdrop-filter: blur($backdrop-blur);\n  }\n\n  // Fade for backdrop\n  &.fade { opacity: 0; }\n  &.show { opacity: 1; }\n}\n","@use \"functions\" as *;\n@use \"mixins/lists\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n// mdo-do: Update pagination to support variant themes\n\n// stylelint-disable custom-property-no-missing-var-function\n$pagination-tokens: () !default;\n\n// scss-docs-start pagination-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$pagination-tokens: defaults(\n  (\n    --pagination-min-height: var(--btn-input-min-height),\n    --pagination-padding-x: var(--btn-input-padding-x),\n    --pagination-padding-y: var(--btn-input-padding-y),\n    --pagination-font-size: var(--btn-input-font-size),\n    --pagination-color: var(--link-color),\n    --pagination-bg: var(--bg-body),\n    --pagination-border-width: var(--border-width),\n    --pagination-border-color: var(--border-color),\n    --pagination-border-radius: var(--btn-input-border-radius),\n    --pagination-hover-color: var(--link-hover-color),\n    --pagination-hover-bg: var(--bg-1),\n    --pagination-hover-border-color: var(--border-color),\n    --pagination-focus-color: var(--link-hover-color),\n    --pagination-focus-bg: var(--bg-2),\n    --pagination-active-color: var(--primary-contrast),\n    --pagination-active-bg: var(--primary-bg),\n    --pagination-active-border-color: var(--primary-bg),\n    --pagination-disabled-color: var(--fg-3),\n    --pagination-disabled-bg: var(--bg-2),\n    --pagination-disabled-border-color: var(--border-color),\n  ),\n  $pagination-tokens\n);\n// scss-docs-end pagination-tokens\n\n// scss-docs-start pagination-sizes\n$pagination-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$pagination-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $pagination-sizes\n);\n// scss-docs-end pagination-sizes\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .pagination {\n    @include tokens($pagination-tokens);\n\n    display: flex;\n    @include list-unstyled();\n  }\n\n  .page-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: var(--pagination-min-height);\n    padding: var(--pagination-padding-y) var(--pagination-padding-x);\n    font-size: var(--pagination-font-size);\n    color: var(--pagination-color);\n    text-decoration: none;\n    background-color: var(--pagination-bg);\n    border: var(--pagination-border-width) solid var(--pagination-border-color);\n    @include transition(color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out);\n\n    &:hover {\n      z-index: 2;\n      color: var(--pagination-hover-color);\n      background-color: var(--pagination-hover-bg);\n      border-color: var(--pagination-hover-border-color);\n    }\n\n    &:focus-visible {\n      z-index: 3;\n      color: var(--pagination-focus-color);\n      background-color: var(--pagination-focus-bg);\n      @include focus-ring(true);\n    }\n\n    &.active,\n    .active > & {\n      z-index: 3;\n      color: var(--pagination-active-color);\n      @include gradient-bg(var(--pagination-active-bg));\n      border-color: var(--pagination-active-border-color);\n    }\n\n    &.disabled,\n    .disabled > & {\n      color: var(--pagination-disabled-color);\n      pointer-events: none;\n      background-color: var(--pagination-disabled-bg);\n      border-color: var(--pagination-disabled-border-color);\n    }\n  }\n\n  .page-item {\n    &:not(:first-child) .page-link {\n      margin-inline-start: calc(-1 * var(--pagination-border-width));\n    }\n\n    &:first-child {\n      .page-link {\n        @include border-start-radius(var(--pagination-border-radius));\n      }\n    }\n\n    &:last-child {\n      .page-link {\n        @include border-end-radius(var(--pagination-border-radius));\n      }\n    }\n  }\n\n  //\n  // Sizing\n  //\n\n  // scss-docs-start pagination-sizes-loop\n  @each $size, $_ in $pagination-sizes {\n    .pagination-#{$size} {\n      --pagination-min-height: var(--bs-btn-input-#{$size}-min-height);\n      --pagination-padding-y: var(--btn-input-#{$size}-padding-y);\n      --pagination-padding-x: var(--btn-input-#{$size}-padding-x);\n      --pagination-font-size: var(--btn-input-#{$size}-font-size);\n      --pagination-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n  // scss-docs-end pagination-sizes-loop\n}\n","@use \"colors\" as *;\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n$placeholder-tokens: () !default;\n\n// scss-docs-start placeholder-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$placeholder-tokens: defaults(\n  (\n    --placeholder-opacity-max: .5,\n    --placeholder-opacity-min: .2,\n  ),\n  $placeholder-tokens\n);\n// scss-docs-end placeholder-tokens\n\n@layer components {\n  .placeholder {\n    @include tokens($placeholder-tokens);\n\n    display: inline-block;\n    min-height: 1em;\n    vertical-align: middle;\n    cursor: wait;\n    background-color: currentcolor;\n    opacity: var(--placeholder-opacity-max);\n\n    &.btn::before {\n      display: inline-block;\n      content: \"\";\n    }\n  }\n\n  // Sizing\n  .placeholder-xs {\n    min-height: .6em;\n  }\n\n  .placeholder-sm {\n    min-height: .8em;\n  }\n\n  .placeholder-lg {\n    min-height: 1.2em;\n  }\n\n  // Animation\n  .placeholder-glow {\n    .placeholder {\n      animation: placeholder-glow 2s ease-in-out infinite;\n    }\n  }\n\n  @keyframes placeholder-glow {\n    50% {\n      opacity: var(--placeholder-opacity-min);\n    }\n  }\n\n  .placeholder-wave {\n    mask-image: linear-gradient(130deg, $black 55%, rgba(0, 0, 0, calc(1 - var(--placeholder-opacity-min))) 75%, $black 95%);\n    mask-size: 200% 100%;\n    animation: placeholder-wave 2s linear infinite;\n  }\n\n  @keyframes placeholder-wave {\n    100% {\n      mask-position: -200% 0%;\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/reset-text\" as *;\n@use \"mixins/tokens\" as *;\n\n$popover-tokens: () !default;\n\n// scss-docs-start popover-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$popover-tokens: defaults(\n  (\n    --popover-zindex: #{$zindex-popover},\n    --popover-max-width: 280px,\n    --popover-font-size: var(--font-size-sm),\n    --popover-bg: var(--bg-body),\n    --popover-border-width: var(--border-width),\n    --popover-border-color: var(--border-color-translucent),\n    --popover-border-radius: var(--border-radius-lg),\n    --popover-inner-border-radius: calc(var(--border-radius-lg) - var(--border-width)),\n    --popover-box-shadow: var(--box-shadow),\n    --popover-header-padding-x: #{$spacer},\n    --popover-header-padding-y: #{$spacer * .75},\n    --popover-header-font-size: var(--font-size-sm),\n    --popover-header-color: #{$headings-color},\n    --popover-header-bg: var(--bg-1),\n    --popover-body-padding-x: #{$spacer},\n    --popover-body-padding-y: #{$spacer * .75},\n    --popover-body-color: var(--fg-body),\n    --popover-arrow-width: 1rem,\n    --popover-arrow-height: .5rem,\n    --popover-arrow-border: var(--popover-border-color),\n  ),\n  $popover-tokens\n);\n// scss-docs-end popover-tokens\n\n@layer components {\n  .popover {\n    // scss-docs-start popover-css-vars\n    @include tokens($popover-tokens);\n    // scss-docs-end popover-css-vars\n\n    z-index: var(--popover-zindex);\n    display: block;\n    max-width: var(--popover-max-width);\n    // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n    // So reset our font and text properties to avoid inheriting weird values.\n    @include reset-text();\n    font-size: var(--popover-font-size);\n    // Allow breaking very long words so they don't overflow the popover's bounds\n    word-wrap: break-word;\n    background-color: var(--popover-bg);\n    background-clip: padding-box;\n    border: var(--popover-border-width) solid var(--popover-border-color);\n    @include border-radius(var(--popover-border-radius));\n    @include box-shadow(var(--popover-box-shadow));\n\n    .popover-arrow {\n      display: block;\n      width: var(--popover-arrow-width);\n      height: var(--popover-arrow-height);\n\n      &::before,\n      &::after {\n        position: absolute;\n        display: block;\n        content: \"\";\n        border-color: transparent;\n        border-style: solid;\n        border-width: 0;\n      }\n    }\n  }\n\n  .bs-popover-top {\n    > .popover-arrow {\n      bottom: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n\n      &::before,\n      &::after {\n        border-width: var(--popover-arrow-height) calc(var(--popover-arrow-width) * .5) 0;\n      }\n\n      &::before {\n        bottom: 0;\n        border-block-start-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        bottom: var(--popover-border-width);\n        border-block-start-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-end {\n    > .popover-arrow {\n      left: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n      width: var(--popover-arrow-height);\n      height: var(--popover-arrow-width);\n\n      &::before,\n      &::after {\n        border-width: calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height) calc(var(--popover-arrow-width) * .5) 0;\n      }\n\n      &::before {\n        left: 0;\n        border-inline-end-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        left: var(--popover-border-width);\n        border-inline-end-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-bottom {\n    > .popover-arrow {\n      top: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n\n      &::before,\n      &::after {\n        border-width: 0 calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height);\n      }\n\n      &::before {\n        top: 0;\n        border-block-end-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        top: var(--popover-border-width);\n        border-block-end-color: var(--popover-bg);\n      }\n    }\n\n    // This will remove the popover-header's border just below the arrow\n    .popover-header::before {\n      position: absolute;\n      top: 0;\n      left: 50%;\n      display: block;\n      width: var(--popover-arrow-width);\n      margin-inline-start: calc(-.5 * var(--popover-arrow-width));\n      content: \"\";\n      border-block-end: var(--popover-border-width) solid var(--popover-header-bg);\n    }\n  }\n\n  .bs-popover-start {\n    > .popover-arrow {\n      right: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n      width: var(--popover-arrow-height);\n      height: var(--popover-arrow-width);\n\n      &::before,\n      &::after {\n        border-width: calc(var(--popover-arrow-width) * .5) 0 calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height);\n      }\n\n      &::before {\n        right: 0;\n        border-inline-start-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        right: var(--popover-border-width);\n        border-inline-start-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-auto {\n    &[data-bs-placement^=\"top\"] {\n      @extend .bs-popover-top;\n    }\n    &[data-bs-placement^=\"right\"] {\n      @extend .bs-popover-end;\n    }\n    &[data-bs-placement^=\"bottom\"] {\n      @extend .bs-popover-bottom;\n    }\n    &[data-bs-placement^=\"left\"] {\n      @extend .bs-popover-start;\n    }\n  }\n\n  // Offset the popover to account for the popover arrow\n  .popover-header {\n    padding: var(--popover-header-padding-y) var(--popover-header-padding-x);\n    margin-bottom: 0; // Reset the default from Reboot\n    font-size: var(--popover-header-font-size);\n    color: var(--popover-header-color);\n    background-color: var(--popover-header-bg);\n    border-block-end: var(--popover-border-width) solid var(--popover-border-color);\n    @include border-top-radius(var(--popover-inner-border-radius));\n\n    &:empty {\n      display: none;\n    }\n  }\n\n  .popover-body {\n    padding: var(--popover-body-padding-y) var(--popover-body-padding-x);\n    color: var(--popover-body-color);\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/tokens\" as *;\n\n$progress-tokens: () !default;\n\n// scss-docs-start progress-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$progress-tokens: defaults(\n  (\n    --progress-height: 1rem,\n    --progress-font-size: var(--font-size-sm),\n    --progress-bg: var(--bg-2),\n    --progress-border-radius: var(--border-radius),\n    --progress-box-shadow: var(--box-shadow-inset),\n    --progress-bar-color: var(--white),\n    --progress-bar-bg: var(--primary-bg),\n    --progress-bar-transition: width .6s ease,\n    --progress-bar-animation: progress-bar-stripes 1s linear infinite,\n  ),\n  $progress-tokens\n);\n// scss-docs-end progress-tokens\n\n// Disable animation if transitions are disabled\n\n@layer components {\n  // scss-docs-start progress-keyframes\n  @if $enable-transitions {\n    @keyframes progress-bar-stripes {\n      0% { background-position-x: var(--progress-height); }\n    }\n  }\n  // scss-docs-end progress-keyframes\n\n  .progress,\n  .progress-stacked {\n    @include tokens($progress-tokens);\n\n    display: flex;\n    height: var(--progress-height);\n    overflow: hidden;\n    font-size: var(--progress-font-size);\n    background-color: var(--progress-bg);\n    @include border-radius(var(--progress-border-radius));\n    @include box-shadow(var(--progress-box-shadow));\n  }\n\n  .progress-bar {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    overflow: hidden;\n    color: var(--theme-contrast, var(--progress-bar-color));\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--theme-bg, var(--progress-bar-bg));\n    @include transition(var(--progress-bar-transition));\n  }\n\n  .progress-bar-striped {\n    @include gradient-striped();\n    background-size: var(--progress-height) var(--progress-height);\n  }\n\n  .progress-stacked > .progress {\n    overflow: visible;\n  }\n\n  .progress-stacked > .progress > .progress-bar {\n    width: 100%;\n  }\n\n  @if $enable-transitions {\n    .progress-bar-animated {\n      animation: var(--progress-bar-animation);\n\n      @if $enable-reduced-motion {\n        @media (prefers-reduced-motion: reduce) {\n          animation: none;\n        }\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$spinner-border-tokens: () !default;\n\n// scss-docs-start spinner-border-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$spinner-border-tokens: defaults(\n  (\n    --spinner-width: 2rem,\n    --spinner-height: 2rem,\n    --spinner-vertical-align: -.125em,\n    --spinner-border-width: .25em,\n    --spinner-animation-speed: .75s,\n    --spinner-animation-name: spinner-border,\n  ),\n  $spinner-border-tokens\n);\n// scss-docs-end spinner-border-tokens\n\n$spinner-grow-tokens: () !default;\n\n// scss-docs-start spinner-grow-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$spinner-grow-tokens: defaults(\n  (\n    --spinner-width: 2rem,\n    --spinner-height: 2rem,\n    --spinner-vertical-align: -.125em,\n    --spinner-animation-speed: .75s,\n    --spinner-animation-name: spinner-grow,\n  ),\n  $spinner-grow-tokens\n);\n// scss-docs-end spinner-grow-tokens\n\n// stylelint-enable custom-property-no-missing-var-function\n\n//\n// Rotating border\n//\n\n@layer components {\n  // mdo-do: Refactor this to assume flex parent and remove `vertical-align`\n  .spinner-grow,\n  .spinner-border {\n    display: inline-block;\n    flex-shrink: 0;\n    width: var(--spinner-width);\n    height: var(--spinner-height);\n    vertical-align: var(--spinner-vertical-align);\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 50%;\n    animation: var(--spinner-animation-speed) linear infinite var(--spinner-animation-name);\n  }\n\n  // scss-docs-start spinner-border-keyframes\n  @keyframes spinner-border {\n    to { transform: rotate(360deg); }\n  }\n  // scss-docs-end spinner-border-keyframes\n\n  .spinner-border {\n    @include tokens($spinner-border-tokens);\n\n    border: var(--spinner-border-width) solid currentcolor;\n    border-inline-end-color: transparent;\n  }\n\n  .spinner-border-sm {\n    // scss-docs-start spinner-border-sm-css-vars\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    --spinner-border-width: .2em;\n    // scss-docs-end spinner-border-sm-css-vars\n  }\n\n  //\n  // Growing circle\n  //\n\n  // scss-docs-start spinner-grow-keyframes\n  @keyframes spinner-grow {\n    0% {\n      transform: scale(0);\n    }\n    50% {\n      opacity: 1;\n      transform: none;\n    }\n  }\n  // scss-docs-end spinner-grow-keyframes\n\n  .spinner-grow {\n    @include tokens($spinner-grow-tokens);\n\n    background-color: currentcolor;\n    opacity: 0;\n  }\n\n  .spinner-grow-sm {\n    // scss-docs-start spinner-grow-sm-css-vars\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    // scss-docs-end spinner-grow-sm-css-vars\n  }\n\n  @if $enable-reduced-motion {\n    @media (prefers-reduced-motion: reduce) {\n      .spinner-border,\n      .spinner-grow {\n        --spinner-animation-speed: 1.5s;\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$stepper-tokens: () !default;\n\n// scss-docs-start stepper-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$stepper-tokens: defaults(\n  (\n    --stepper-size: 2rem,\n    --stepper-gap: 1rem,\n    --stepper-bg: var(--bg-2),\n    --stepper-track-size: .25rem,\n    --stepper-active-color: var(--primary-contrast),\n    --stepper-active-bg: var(--primary-bg),\n  ),\n  $stepper-tokens\n);\n// scss-docs-end stepper-tokens\n\n// scss-docs-start stepper-horizontal-mixin\n@mixin stepper-horizontal() {\n  display: inline-grid;\n  grid-auto-columns: 1fr;\n  grid-auto-flow: column;\n\n  .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n\n    &::after {\n      top: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n      right: 0;\n      bottom: auto;\n      left: calc(-50% - var(--stepper-gap));\n      width: auto;\n      height: var(--stepper-track-size);\n    }\n\n    &:last-child::after {\n      right: 50%;\n    }\n  }\n}\n// scss-docs-end stepper-horizontal-mixin\n\n// scss-docs-start stepper-css\n.stepper {\n  // scss-docs-start stepper-css-vars\n  @include tokens($stepper-tokens);\n  // scss-docs-end stepper-css-vars\n\n  display: grid;\n  grid-auto-rows: 1fr;\n  grid-auto-flow: row;\n  gap: var(--stepper-gap);\n  padding-left: 0;\n  list-style: none;\n  counter-reset: stepper;\n}\n\n.stepper-item {\n  position: relative;\n  display: grid;\n  grid-template-rows: auto;\n  grid-template-columns: var(--stepper-size) auto;\n  gap: .5rem;\n  place-items: center;\n  justify-items: start;\n  text-align: center;\n  text-decoration: none;\n\n  // The counter\n  &::before {\n    position: relative;\n    z-index: 1;\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--stepper-size);\n    height: var(--stepper-size);\n    padding: .5rem;\n    font-weight: 600;\n    line-height: 1;\n    text-align: center;\n    content: counter(stepper);\n    counter-increment: stepper;\n    background-color: var(--stepper-bg);\n    @include border-radius(50%);\n  }\n\n  // Connecting lines\n  &::after {\n    position: absolute;\n    top: calc(var(--stepper-gap) * -1);\n    bottom: 100%;\n    left: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n    width: var(--stepper-track-size);\n    content: \"\";\n    background-color: var(--stepper-bg);\n  }\n\n  // Avoid sibling selector for easier CSS overrides\n  &:first-child::after {\n    display: none;\n  }\n\n  &.active {\n    &::before,\n    &::after {\n      color: var(--theme-contrast, var(--stepper-active-color));\n      background-color: var(--theme-bg, var(--stepper-active-bg));\n    }\n  }\n}\n\n@each $breakpoint in map.keys($breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    .stepper-horizontal#{$infix} {\n      @include stepper-horizontal();\n    }\n  }\n}\n\n// scss-docs-start stepper-overflow\n.stepper-overflow {\n  container-type: inline-size;\n  overflow-x: auto;\n  overscroll-behavior-x: contain;\n  -webkit-overflow-scrolling: touch;\n\n  > .stepper {\n    width: max-content;\n    min-width: 100%;\n  }\n}\n// scss-docs-end stepper-overflow\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"variables\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$toast-tokens: () !default;\n\n// scss-docs-start toast-tokens\n// stylelint-disable custom-property-no-missing-var-function\n// stylelint-disable-next-line scss/dollar-variable-default\n$toast-tokens: defaults(\n  (\n    --toast-zindex: #{$zindex-toast},\n    --toast-padding-x: .75rem,\n    --toast-padding-y: .5rem,\n    --toast-spacing: #{$container-padding-x},\n    --toast-max-width: 350px,\n    --toast-font-size: .875rem,\n    --toast-color: null,\n    --toast-bg: rgba(var(--body-bg-rgb), .85),\n    --toast-border-width: var(--border-width),\n    --toast-border-color: var(--border-color-translucent),\n    --toast-border-radius: var(--border-radius),\n    --toast-box-shadow: var(--box-shadow),\n    --toast-header-color: var(--fg-3),\n    --toast-header-bg: rgba(var(--body-bg-rgb), .85),\n    --toast-header-border-color: var(--border-color-translucent),\n  ),\n  $toast-tokens\n);\n// stylelint-enable custom-property-no-missing-var-function\n// scss-docs-end toast-tokens\n\n@layer components {\n  .toast {\n    @include tokens($toast-tokens);\n\n    width: var(--toast-max-width);\n    max-width: 100%;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color);\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--toast-border-color);\n    box-shadow: var(--toast-box-shadow);\n    @include border-radius(var(--toast-border-radius));\n\n    &.showing {\n      opacity: 0;\n    }\n\n    &:not(.show) {\n      display: none;\n    }\n  }\n\n  .toast-container {\n    --toast-zindex: #{$zindex-toast};\n\n    position: absolute;\n    z-index: var(--toast-zindex);\n    width: max-content;\n    max-width: 100%;\n    pointer-events: none;\n\n    > :not(:last-child) {\n      margin-bottom: var(--toast-spacing);\n    }\n  }\n\n  .toast-header {\n    display: flex;\n    align-items: center;\n    padding: var(--toast-padding-y) var(--toast-padding-x);\n    color: var(--toast-header-color);\n    background-color: var(--toast-header-bg);\n    background-clip: padding-box;\n    border-block-end: var(--toast-border-width) solid var(--toast-header-border-color);\n    @include border-top-radius(calc(var(--toast-border-radius) - var(--toast-border-width)));\n\n    .btn-close {\n      margin-inline-start: var(--toast-padding-x);\n      margin-inline-end: calc(-.5 * var(--toast-padding-x));\n    }\n  }\n\n  .toast-body {\n    padding: var(--toast-padding-x);\n    word-wrap: break-word;\n  }\n}\n","@use \"variables\" as *;\n@use \"mixins/transition\" as *;\n\n.fade {\n  @include transition($transition-fade);\n\n  &:not(.show) {\n    opacity: 0;\n  }\n}\n\n// scss-docs-start collapse-classes\n.collapse {\n  &:not(.show) {\n    display: none;\n  }\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  @include transition($transition-collapse);\n\n  &.collapse-horizontal {\n    width: 0;\n    height: auto;\n    @include transition($transition-collapse-width);\n  }\n}\n// scss-docs-end collapse-classes\n","@layer helpers {\n  .focus-ring:focus-visible {\n    outline: var(--focus-ring);\n  }\n}\n","@use \"../variables\" as *;\n@use \"../mixins/transition\" as *;\n\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: $icon-link-gap;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, .5));\n    text-underline-offset: $icon-link-underline-offset;\n    backface-visibility: hidden;\n\n    > .bi {\n      flex-shrink: 0;\n      width: $icon-link-icon-size;\n      height: $icon-link-icon-size;\n      fill: currentcolor;\n      @include transition($icon-link-icon-transition);\n    }\n  }\n\n  .icon-link-hover {\n    &:hover,\n    &:focus-visible {\n      > .bi {\n        transform: var(--icon-link-transform, $icon-link-icon-transform);\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"../config\" as *;\n@use \"../variables\" as *;\n@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: $zindex-fixed;\n  }\n\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: $zindex-fixed;\n  }\n\n  // Responsive sticky top and bottom\n  @each $breakpoint in map.keys($breakpoints) {\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      .sticky#{$infix}-top {\n        position: sticky;\n        top: 0;\n        z-index: $zindex-sticky;\n      }\n\n      .sticky#{$infix}-bottom {\n        position: sticky;\n        bottom: 0;\n        z-index: $zindex-sticky;\n      }\n    }\n  }\n}\n","@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  // scss-docs-start stacks\n  .stack-container {\n    @include set-container();\n  }\n\n  [class*=\"hstack\"],\n  [class*=\"vstack\"] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n\n  @include loop-breakpoints-up() using ($breakpoint, $infix) {\n    .vstack#{$infix} {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: column;\n        --stack-align-items: stretch;\n      }\n    }\n    .hstack#{$infix} {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: row;\n        --stack-align-items: flex-start;\n      }\n    }\n  }\n  // scss-docs-end stacks\n}\n","@use \"../theme\" as *;\n\n// Generate theme modifier classes (e.g., .theme-primary, .theme-accent, etc.)\n@layer helpers {\n  @include generate-theme-classes();\n}\n","@use \"sass:meta\";\n@use \"sass:map\";\n\n@function theme-color-values($key) {\n  $result: ();\n\n  @each $color-name, $color-map in $theme-colors {\n    @if map.has-key($color-map, $key) {\n      $result: map.merge($result, ($color-name: map.get($color-map, $key)));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate opacity values using color-mix()\n@function theme-opacity-values($color-var, $opacities: $util-opacity) {\n  $result: ();\n\n  @each $key, $value in $opacities {\n    @if $key == 100 {\n      // For 100%, use direct variable reference (more efficient)\n      $result: map.merge($result, ($key: var($color-var)));\n    } @else {\n      // For other values, use color-mix()\n      $percentage: $key * 1%;\n      $result: map.merge($result, ($key: color-mix(in oklch, var($color-var) $percentage, transparent)));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate theme classes dynamically based on the keys in each theme color map\n@mixin generate-theme-classes() {\n  @each $color-name, $color-map in $theme-colors {\n    .theme-#{$color-name} {\n      @each $key, $value in $color-map {\n        --theme-#{$key}: var(--#{$color-name}-#{$key});\n      }\n    }\n  }\n}\n\n// Recursive mixin to handle nested maps\n@mixin create-css-vars($map, $parent-key: \"\") {\n  @each $key, $value in $map {\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    $current-key: if(sass($parent-key == \"\"): $key; else: \"#{$parent-key}-#{$key}\");\n\n    @if meta.type-of($value) == \"map\" {\n      @include create-css-vars($value, $current-key);\n    } @else {\n      --#{$current-key}: #{$value};\n    }\n  }\n}\n\n// scss-docs-start theme-colors\n$theme-colors: (\n  \"primary\": (\n    \"base\": var(--blue-500),\n    \"text\": light-dark(var(--blue-600), var(--blue-400)),\n    \"text-emphasis\": light-dark(var(--blue-800), var(--blue-200)),\n    \"bg\": var(--blue-500),\n    \"bg-subtle\": light-dark(var(--blue-100), var(--blue-900)),\n    \"bg-muted\": light-dark(var(--blue-200), var(--blue-800)),\n    \"border\": light-dark(var(--blue-300), var(--blue-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"accent\": (\n    \"base\": var(--indigo-500),\n    \"text\": light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300))),\n    \"text-emphasis\": light-dark(var(--indigo-800), var(--indigo-300)),\n    \"bg\": var(--indigo-500),\n    \"bg-subtle\": light-dark(var(--indigo-100), var(--indigo-900)),\n    \"bg-muted\": light-dark(var(--indigo-200), var(--indigo-800)),\n    \"border\": light-dark(var(--indigo-300), var(--indigo-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"success\": (\n    \"base\": var(--green-500),\n    \"text\": light-dark(var(--green-600), var(--green-400)),\n    \"text-emphasis\": light-dark(var(--green-800), var(--green-300)),\n    \"bg\": var(--green-500),\n    \"bg-subtle\": light-dark(var(--green-100), var(--green-900)),\n    \"bg-muted\": light-dark(var(--green-200), var(--green-800)),\n    \"border\": light-dark(var(--green-300), var(--green-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"danger\": (\n    \"base\": var(--red-500),\n    \"text\": light-dark(var(--red-600), var(--red-400)),\n    \"text-emphasis\": light-dark(var(--red-800), var(--red-300)),\n    \"bg\": var(--red-500),\n    \"bg-subtle\": light-dark(var(--red-100), var(--red-900)),\n    \"bg-muted\": light-dark(var(--red-200), var(--red-800)),\n    \"border\": light-dark(var(--red-300), var(--red-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"warning\": (\n    \"base\": var(--yellow-500),\n    \"text\": light-dark(var(--yellow-700), var(--yellow-400)),\n    \"text-emphasis\": light-dark(var(--yellow-800), var(--yellow-300)),\n    \"bg\": var(--yellow-500),\n    \"bg-subtle\": light-dark(var(--yellow-100), var(--yellow-900)),\n    \"bg-muted\": light-dark(var(--yellow-200), var(--yellow-800)),\n    \"border\": light-dark(var(--yellow-300), var(--yellow-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"info\": (\n    \"base\": var(--cyan-500),\n    \"text\": light-dark(var(--cyan-600), var(--cyan-400)),\n    \"text-emphasis\": light-dark(var(--cyan-800), var(--cyan-300)),\n    \"bg\": var(--cyan-500),\n    \"bg-subtle\": light-dark(var(--cyan-100), var(--cyan-900)),\n    \"bg-muted\": light-dark(var(--cyan-200), var(--cyan-800)),\n    \"border\": light-dark(var(--cyan-300), var(--cyan-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"inverse\": (\n    \"base\": var(--gray-900),\n    \"text\": light-dark(var(--gray-900), var(--gray-200)),\n    \"text-emphasis\": light-dark(var(--gray-975), var(--white)),\n    \"bg\": light-dark(var(--gray-900), var(--gray-025)),\n    \"bg-subtle\": light-dark(var(--gray-100), var(--gray-900)),\n    \"bg-muted\": light-dark(var(--gray-200), var(--gray-300)),\n    \"border\": light-dark(var(--gray-400), var(--gray-100)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--white), var(--gray-900))\n  ),\n  \"secondary\": (\n    \"base\": var(--gray-200),\n    \"text\": light-dark(var(--gray-600), var(--gray-400)),\n    \"text-emphasis\": light-dark(var(--gray-800), var(--gray-200)),\n    \"bg\": light-dark(var(--gray-100), var(--gray-600)),\n    \"bg-subtle\": light-dark(var(--gray-050), var(--gray-800)),\n    \"bg-muted\": light-dark(var(--gray-100), var(--gray-700)),\n    \"border\": light-dark(var(--gray-300), var(--gray-600)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--gray-900), var(--white))\n  )\n) !default;\n// scss-docs-end theme-colors\n\n// mdo-do: consider using muted, subtle, ghost or something instead of linear scale?\n$theme-bgs: (\n  \"body\": light-dark(var(--white), var(--gray-975)),\n  \"1\": light-dark(var(--gray-025), var(--gray-950)),\n  \"2\": light-dark(var(--gray-050), var(--gray-900)),\n  \"3\": light-dark(var(--gray-100), var(--gray-800)),\n  \"4\": light-dark(var(--gray-200), var(--gray-700)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"transparent\": transparent,\n  \"inherit\": inherit,\n) !default;\n\n$theme-fgs: (\n  \"body\": light-dark(var(--gray-900), var(--gray-050)),\n  \"1\": light-dark(var(--gray-800), var(--gray-200)),\n  \"2\": light-dark(var(--gray-700), var(--gray-300)),\n  \"3\": light-dark(var(--gray-600), var(--gray-500)),\n  \"4\": light-dark(var(--gray-500), var(--gray-600)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"inherit\": inherit,\n) !default;\n\n$theme-borders: (\n  \"bg\": var(--bg-body),\n  \"body\": light-dark(var(--gray-300), var(--gray-800)),\n  \"muted\": light-dark(var(--gray-200), var(--gray-800)),\n  \"subtle\": light-dark(var(--gray-100), var(--gray-900)),\n  \"emphasized\": light-dark(var(--gray-400), var(--gray-600)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n) !default;\n\n$util-opacity: (\n  10: .1,\n  20: .2,\n  30: .3,\n  40: .4,\n  50: .5,\n  60: .6,\n  70: .7,\n  80: .8,\n  90: .9,\n  100: 1\n) !default;\n","@use \"../mixins/visually-hidden\" as *;\n\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","// stylelint-disable declaration-no-important\n\n// Hide content visually while keeping it accessible to assistive technologies\n//\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin visually-hidden() {\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n\n  // Fix for positioned table caption that could become anonymous cells\n  &:not(caption) {\n    position: absolute !important;\n  }\n\n  // Fix to prevent overflowing children to become focusable\n  * {\n    overflow: hidden !important;\n  }\n}\n\n// Use to only display content when it's focused, or one of its child elements is focused\n// (i.e. when focus is within the element/container that the class was applied to)\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/WAI/WCAG22/Techniques/general/G1.html\n\n@mixin visually-hidden-focusable() {\n  &:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","@use \"../variables\" as *;\n\n@layer helpers {\n  .stretched-link {\n    &::#{$stretched-link-pseudo-element} {\n      position: absolute;\n      inset: 0;\n      z-index: $stretched-link-z-index;\n      content: \"\";\n    }\n  }\n}\n","@use \"../mixins/text-truncate\" as *;\n\n@layer helpers {\n  .text-truncate {\n    @include text-truncate();\n  }\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n","@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n@use \"../mixins/utilities\" as *;\n@use \"../utilities\" as *;\n\n@layer utilities {\n  // Loop over each breakpoint\n  @each $breakpoint in map.keys($breakpoints) {\n\n    // Generate media query if needed\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if meta.type-of($utility) == \"map\" and (map.get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix);\n        }\n      }\n    }\n  }\n\n  // Print utilities\n  @media print {\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Then check if the utility needs print styles\n      @if meta.type-of($utility) == \"map\" and map.get($utility, print) == true {\n        @include generate-utility($utility, \"-print\");\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n\n// stylelint-disable scss/dollar-variable-pattern\n\n// Utility generator\n\n// - Utilities can use three different types of selectors:\n//   - class: .class\n//   - attr-starts: [class^=\"class\"]\n//   - attr-includes: [class*=\"class\"]\n// - Utilities can generate regular CSS properties and CSS custom properties\n// - Utilities can be responsive or not\n// - Utilities can have state variants (e.g., hover, focus, active)\n// - Utilities can define local CSS variables\n//\n// CSS custom properties can be generated in two ways:\n//\n// 1. Property map with null values (CSS var receives the utility value):\n// \"bg-color\": (\n//   property: (\n//     \"--bg\": null,\n//     \"background-color\": var(--bg)\n//   ),\n//   class: bg,\n//   values: (\n//     primary: var(--blue-500),\n//   )\n// )\n// Generates:\n// .bg-primary {\n//   --bs-bg: var(--bs-blue-500);\n//   background-color: var(--bs-bg);\n// }\n//\n// 2. Variables map (static CSS custom properties on every class):\n// \"link-underline\": (\n//   property: text-decoration-color,\n//   class: link-underline,\n//   variables: (\n//     \"link-underline-opacity\": 1\n//   ),\n//   values: (...)\n// )\n// Generates:\n// .link-underline {\n//   --bs-link-underline-opacity: 1;\n//   text-decoration-color: ...;\n// }\n\n// Helper mixin to generate CSS properties for both legacy and property map approaches\n@mixin generate-properties($utility, $propertyMap, $properties, $value) {\n  @if $propertyMap != null {\n    // New Property-Value Mapping approach\n    @each $property, $defaultValue in $propertyMap {\n      // If value is a map, check if it has a key for this property\n      // Otherwise, use defaultValue (or $value if defaultValue is null)\n      $actualValue: $defaultValue;\n      @if meta.type-of($value) == \"map\" and map.has-key($value, $property) {\n        $actualValue: map.get($value, $property);\n      } @else if $defaultValue == null {\n        $actualValue: $value;\n      }\n      @if map.get($utility, important) {\n        #{$property}: $actualValue !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $actualValue;\n      }\n    }\n  } @else {\n    // Legacy approach\n    @each $property in $properties {\n      @if map.get($utility, important) {\n        #{$property}: $value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $value;\n      }\n    }\n  }\n}\n\n@mixin generate-utility($utility, $infix: \"\") {\n  // Validate required keys\n  @if not map.has-key($utility, property) {\n    @error \"Utility is missing required `property` key: #{$utility}\";\n  }\n  @if not map.has-key($utility, values) {\n    @error \"Utility is missing required `values` key: #{$utility}\";\n  }\n\n  // Warn on unknown keys (likely typos)\n  $valid-keys: property, values, class, selector, responsive, print, important, state, variables;\n  @each $key in map.keys($utility) {\n    @if not list.index($valid-keys, $key) {\n      @warn \"Unknown utility key `#{$key}` found. Valid keys are: #{$valid-keys}\";\n    }\n  }\n\n  // Determine if we're generating a class, or an attribute selector\n  $selectorType: \"class\";\n  @if map.has-key($utility, selector) {\n    $selectorType: map.get($utility, selector);\n    // Validate selector type\n    $valid-selectors: \"class\", \"attr-starts\", \"attr-includes\";\n    @if not list.index($valid-selectors, $selectorType) {\n      @error \"Invalid `selector` value `#{$selectorType}`. Must be one of: #{$valid-selectors}\";\n    }\n  }\n  // Then get the class name to use in a class (e.g., .class) or in a attribute selector (e.g., [class^=\"class\"])\n  $selectorClass: map.get($utility, class);\n\n  // Attribute selectors require a `class` key\n  @if $selectorType != \"class\" and not map.has-key($utility, class) {\n    @error \"Utility with `selector: #{$selectorType}` requires a `class` key.\";\n  }\n\n  // Get the list or map of values and ensure it's a map\n  $values: map.get($utility, values);\n  @if meta.type-of($values) != \"map\" {\n    @if meta.type-of($values) == \"list\" {\n      $list: ();\n      @each $value in $values {\n        $list: map.merge($list, ($value: $value));\n      }\n      $values: $list;\n    } @else {\n      $values: (null: $values);\n    }\n  }\n\n  // Calculate infix once, before the loop\n  // Note: $infix already includes the leading dash from breakpoint-infix()\n  // $infix: if($infix == \"\", \"\", \"-\" + $infix);\n\n  @each $key, $value in $values {\n    $properties: map.get($utility, property);\n    $propertyMap: null;\n    $customClass: \"\";\n\n    // Check if property is a map (new Property-Value Mapping approach)\n    // @debug \"Properties type: #{meta.type-of($properties)}\";\n    // @debug \"Properties: #{$properties}\";\n    @if meta.type-of($properties) == \"map\" {\n      $propertyMap: $properties;\n      // For property maps, we need to determine the class from the utility definition\n      $customClass: \"\";\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      }\n    } @else {\n      // Legacy approach: Multiple properties are possible, for example with vertical or horizontal margins or paddings\n      @if meta.type-of($properties) == \"string\" {\n        $properties: list.append((), $properties);\n      }\n      // Use custom class if present, otherwise use the first value from the list of properties\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      } @else {\n        $customClass: list.nth($properties, 1);\n      }\n      @if $customClass == null {\n        $customClass: \"\";\n      }\n    }\n\n    // Use custom CSS variable name if present, otherwise default to `class`\n    // mdo-do: restore?\n    // $css-variable-name: if(map.has-key($utility, css-variable-name), map.get($utility, css-variable-name), map.get($utility, class));\n\n    // State params to generate state variants\n    $state: ();\n    @if map.has-key($utility, state) {\n      $state: map.get($utility, state);\n    }\n\n    // $infix: if($customClass == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (e.g. with shadow class)\n    $customClassModifier: \"\";\n    @if $key {\n      @if $customClass == \"\" and $infix == \"\" {\n        $customClassModifier: $key;\n      } @else {\n        $customClassModifier: \"-\" + $key;\n      }\n    }\n\n    $selector: \"\";\n    @if $selectorType == \"class\" {\n      // Use the fallback of the first property if no `class` key is used\n      @if $customClass != \"\" {\n        $selector: \".#{$customClass + $infix + $customClassModifier}\";\n      } @else {\n        $selector: \".#{$selectorClass + $infix + $customClassModifier}\";\n      }\n    } @else if $selectorType == \"attr-starts\" {\n      $selector: \"[class^=\\\"#{$selectorClass}\\\"]\";\n    } @else if $selectorType == \"attr-includes\" {\n      $selector: \"[class*=\\\"#{$selectorClass}\\\"]\";\n    }\n\n    // @debug $utility;\n    // @debug $selectorType;\n    // @debug $selector;\n    // @debug $properties;\n    // @debug $values;\n\n    #{$selector} {\n      // Generate CSS custom properties (variables) if provided\n      // Variables receive the current utility value, then properties reference them\n      @if map.has-key($utility, variables) {\n        $variables: map.get($utility, variables);\n        @if meta.type-of($variables) == \"list\" {\n          // If variables is a list, each variable gets the utility value\n          @each $var-name in $variables {\n            --#{$var-name}: #{$value};\n          }\n        } @else if meta.type-of($variables) == \"map\" {\n          // If variables is a map, use the provided values (for static variables)\n          @each $var-key, $var-value in $variables {\n            --#{$var-key}: #{$var-value};\n          }\n        }\n      }\n      @include generate-properties($utility, $propertyMap, $properties, $value);\n    }\n\n    // Generate state variants\n    @if $state != () {\n      @each $state-variant in $state {\n        #{$selector}-#{$state-variant}:#{$state-variant} {\n          // Generate CSS custom properties (variables) if provided\n          @if map.has-key($utility, variables) {\n            $variables: map.get($utility, variables);\n            @if meta.type-of($variables) == \"list\" {\n              // If variables is a list, each variable gets the utility value\n              @each $var-name in $variables {\n                --#{$var-name}: #{$value};\n              }\n            } @else if meta.type-of($variables) == \"map\" {\n              // If variables is a map, use the provided values (for static variables)\n              @each $var-key, $var-value in $variables {\n                --#{$var-key}: #{$var-value};\n              }\n            }\n          }\n          @include generate-properties($utility, $propertyMap, $properties, $value);\n        }\n      }\n    }\n  }\n}\n"],"names":[]}
\ No newline at end of file
+{"version":3,"sourceRoot":null,"mappings":"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","sources":["bootstrap.css","../../scss/_banner.scss","../../scss/_colors.scss","../../scss/mixins/_tokens.scss","../../scss/_root.scss","../../scss/content/_reboot.scss","../../scss/_config.scss","../../scss/mixins/_border-radius.scss","../../scss/content/_type.scss","../../scss/mixins/_lists.scss","../../scss/content/_tables.scss","../../scss/layout/_breakpoints.scss","../../scss/content/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_box-shadow.scss","../../scss/content/_prose.scss","../../scss/mixins/_transition.scss","../../scss/layout/_containers.scss","../../scss/layout/_grid.scss","../../scss/mixins/_grid.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_focus-ring.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_check.scss","../../scss/forms/_radio.scss","../../scss/forms/_switch.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/forms/_strength.scss","../../scss/forms/_otp-input.scss","../../scss/forms/_form-adorn.scss","../../scss/forms/_chip-input.scss","../../scss/forms/_combobox.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/forms/_validation.scss","../../scss/forms/_form-variables.scss","../../scss/buttons/_button.scss","../../scss/buttons/_button-group.scss","../../scss/buttons/_close.scss","../../scss/_accordion.scss","../../scss/_alert.scss","../../scss/_avatar.scss","../../scss/_badge.scss","../../scss/_breadcrumb.scss","../../scss/_chip.scss","../../scss/_card.scss","../../scss/_carousel.scss","../../scss/mixins/_color-mode.scss","../../scss/_datepicker.scss","../../scss/_dialog.scss","../../scss/_menu.scss","../../scss/_list-group.scss","../../scss/_nav.scss","../../scss/_nav-overflow.scss","../../scss/_navbar.scss","../../scss/_offcanvas.scss","../../scss/mixins/_backdrop.scss","../../scss/_pagination.scss","../../scss/_placeholder.scss","../../scss/_popover.scss","../../scss/_progress.scss","../../scss/_spinner.scss","../../scss/_stepper.scss","../../scss/_toasts.scss","../../scss/_transitions.scss","../../scss/helpers/_focus-ring.scss","../../scss/helpers/_icon-link.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_theme-colors.scss","../../scss/_theme.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/utilities/_api.scss","../../scss/mixins/_utilities.scss"],"sourcesContent":["@charset \"UTF-8\";\n/*!\n  * Bootstrap  v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n:root {\n  --blue-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.24 240deg));\n  --blue-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.24 240deg));\n  --blue-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.24 240deg));\n  --blue-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.24 240deg));\n  --blue-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.24 240deg));\n  --blue-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.24 240deg));\n  --blue-500: oklch(60% 0.24 240deg);\n  --blue-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.24 240deg));\n  --blue-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.24 240deg));\n  --blue-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.24 240deg));\n  --blue-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.24 240deg));\n  --blue-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.24 240deg));\n  --blue-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.24 240deg));\n  --indigo-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.26 288deg));\n  --indigo-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.26 288deg));\n  --indigo-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.26 288deg));\n  --indigo-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.26 288deg));\n  --indigo-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.26 288deg));\n  --indigo-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.26 288deg));\n  --indigo-500: oklch(56% 0.26 288deg);\n  --indigo-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.26 288deg));\n  --indigo-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.26 288deg));\n  --indigo-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.26 288deg));\n  --indigo-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.26 288deg));\n  --indigo-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.26 288deg));\n  --indigo-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.26 288deg));\n  --violet-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 300deg));\n  --violet-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 300deg));\n  --violet-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 300deg));\n  --violet-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 300deg));\n  --violet-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 300deg));\n  --violet-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 300deg));\n  --violet-500: oklch(56% 0.24 300deg);\n  --violet-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 300deg));\n  --violet-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 300deg));\n  --violet-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 300deg));\n  --violet-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 300deg));\n  --violet-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 300deg));\n  --violet-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 300deg));\n  --purple-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 320deg));\n  --purple-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 320deg));\n  --purple-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 320deg));\n  --purple-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 320deg));\n  --purple-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 320deg));\n  --purple-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 320deg));\n  --purple-500: oklch(56% 0.24 320deg);\n  --purple-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 320deg));\n  --purple-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 320deg));\n  --purple-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 320deg));\n  --purple-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 320deg));\n  --purple-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 320deg));\n  --purple-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 320deg));\n  --pink-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 4deg));\n  --pink-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 4deg));\n  --pink-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 4deg));\n  --pink-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 4deg));\n  --pink-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 4deg));\n  --pink-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 4deg));\n  --pink-500: oklch(60% 0.22 4deg);\n  --pink-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 4deg));\n  --pink-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 4deg));\n  --pink-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 4deg));\n  --pink-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 4deg));\n  --pink-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 4deg));\n  --pink-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 4deg));\n  --red-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 20deg));\n  --red-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 20deg));\n  --red-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 20deg));\n  --red-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 20deg));\n  --red-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 20deg));\n  --red-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 20deg));\n  --red-500: oklch(60% 0.22 20deg);\n  --red-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 20deg));\n  --red-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 20deg));\n  --red-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 20deg));\n  --red-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 20deg));\n  --red-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 20deg));\n  --red-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 20deg));\n  --orange-025: color-mix(in lab, var(--white) 94%, oklch(70% 0.22 52deg));\n  --orange-050: color-mix(in lab, var(--white) 90%, oklch(70% 0.22 52deg));\n  --orange-100: color-mix(in lab, var(--white) 80%, oklch(70% 0.22 52deg));\n  --orange-200: color-mix(in lab, var(--white) 60%, oklch(70% 0.22 52deg));\n  --orange-300: color-mix(in lab, var(--white) 40%, oklch(70% 0.22 52deg));\n  --orange-400: color-mix(in lab, var(--white) 20%, oklch(70% 0.22 52deg));\n  --orange-500: oklch(70% 0.22 52deg);\n  --orange-600: color-mix(in lab, var(--black) 16%, oklch(70% 0.22 52deg));\n  --orange-700: color-mix(in lab, var(--black) 32%, oklch(70% 0.22 52deg));\n  --orange-800: color-mix(in lab, var(--black) 48%, oklch(70% 0.22 52deg));\n  --orange-900: color-mix(in lab, var(--black) 64%, oklch(70% 0.22 52deg));\n  --orange-950: color-mix(in lab, var(--black) 76%, oklch(70% 0.22 52deg));\n  --orange-975: color-mix(in lab, var(--black) 88%, oklch(70% 0.22 52deg));\n  --amber-025: color-mix(in lab, var(--white) 94%, oklch(79% 0.2 78deg));\n  --amber-050: color-mix(in lab, var(--white) 90%, oklch(79% 0.2 78deg));\n  --amber-100: color-mix(in lab, var(--white) 80%, oklch(79% 0.2 78deg));\n  --amber-200: color-mix(in lab, var(--white) 60%, oklch(79% 0.2 78deg));\n  --amber-300: color-mix(in lab, var(--white) 40%, oklch(79% 0.2 78deg));\n  --amber-400: color-mix(in lab, var(--white) 20%, oklch(79% 0.2 78deg));\n  --amber-500: oklch(79% 0.2 78deg);\n  --amber-600: color-mix(in lab, var(--black) 16%, oklch(79% 0.2 78deg));\n  --amber-700: color-mix(in lab, var(--black) 32%, oklch(79% 0.2 78deg));\n  --amber-800: color-mix(in lab, var(--black) 48%, oklch(79% 0.2 78deg));\n  --amber-900: color-mix(in lab, var(--black) 64%, oklch(79% 0.2 78deg));\n  --amber-950: color-mix(in lab, var(--black) 76%, oklch(79% 0.2 78deg));\n  --amber-975: color-mix(in lab, var(--black) 88%, oklch(79% 0.2 78deg));\n  --yellow-025: color-mix(in lab, var(--white) 94%, oklch(88% 0.24 88deg));\n  --yellow-050: color-mix(in lab, var(--white) 90%, oklch(88% 0.24 88deg));\n  --yellow-100: color-mix(in lab, var(--white) 80%, oklch(88% 0.24 88deg));\n  --yellow-200: color-mix(in lab, var(--white) 60%, oklch(88% 0.24 88deg));\n  --yellow-300: color-mix(in lab, var(--white) 40%, oklch(88% 0.24 88deg));\n  --yellow-400: color-mix(in lab, var(--white) 20%, oklch(88% 0.24 88deg));\n  --yellow-500: oklch(88% 0.24 88deg);\n  --yellow-600: color-mix(in lab, var(--black) 16%, oklch(88% 0.24 88deg));\n  --yellow-700: color-mix(in lab, var(--black) 32%, oklch(88% 0.24 88deg));\n  --yellow-800: color-mix(in lab, var(--black) 48%, oklch(88% 0.24 88deg));\n  --yellow-900: color-mix(in lab, var(--black) 64%, oklch(88% 0.24 88deg));\n  --yellow-950: color-mix(in lab, var(--black) 76%, oklch(88% 0.24 88deg));\n  --yellow-975: color-mix(in lab, var(--black) 88%, oklch(88% 0.24 88deg));\n  --lime-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.24 135deg));\n  --lime-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.24 135deg));\n  --lime-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.24 135deg));\n  --lime-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.24 135deg));\n  --lime-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.24 135deg));\n  --lime-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.24 135deg));\n  --lime-500: oklch(65% 0.24 135deg);\n  --lime-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.24 135deg));\n  --lime-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.24 135deg));\n  --lime-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.24 135deg));\n  --lime-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.24 135deg));\n  --lime-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.24 135deg));\n  --lime-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.24 135deg));\n  --green-025: color-mix(in lab, var(--white) 94%, oklch(64% 0.22 160deg));\n  --green-050: color-mix(in lab, var(--white) 90%, oklch(64% 0.22 160deg));\n  --green-100: color-mix(in lab, var(--white) 80%, oklch(64% 0.22 160deg));\n  --green-200: color-mix(in lab, var(--white) 60%, oklch(64% 0.22 160deg));\n  --green-300: color-mix(in lab, var(--white) 40%, oklch(64% 0.22 160deg));\n  --green-400: color-mix(in lab, var(--white) 20%, oklch(64% 0.22 160deg));\n  --green-500: oklch(64% 0.22 160deg);\n  --green-600: color-mix(in lab, var(--black) 16%, oklch(64% 0.22 160deg));\n  --green-700: color-mix(in lab, var(--black) 32%, oklch(64% 0.22 160deg));\n  --green-800: color-mix(in lab, var(--black) 48%, oklch(64% 0.22 160deg));\n  --green-900: color-mix(in lab, var(--black) 64%, oklch(64% 0.22 160deg));\n  --green-950: color-mix(in lab, var(--black) 76%, oklch(64% 0.22 160deg));\n  --green-975: color-mix(in lab, var(--black) 88%, oklch(64% 0.22 160deg));\n  --teal-025: color-mix(in lab, var(--white) 94%, oklch(68% 0.22 190deg));\n  --teal-050: color-mix(in lab, var(--white) 90%, oklch(68% 0.22 190deg));\n  --teal-100: color-mix(in lab, var(--white) 80%, oklch(68% 0.22 190deg));\n  --teal-200: color-mix(in lab, var(--white) 60%, oklch(68% 0.22 190deg));\n  --teal-300: color-mix(in lab, var(--white) 40%, oklch(68% 0.22 190deg));\n  --teal-400: color-mix(in lab, var(--white) 20%, oklch(68% 0.22 190deg));\n  --teal-500: oklch(68% 0.22 190deg);\n  --teal-600: color-mix(in lab, var(--black) 16%, oklch(68% 0.22 190deg));\n  --teal-700: color-mix(in lab, var(--black) 32%, oklch(68% 0.22 190deg));\n  --teal-800: color-mix(in lab, var(--black) 48%, oklch(68% 0.22 190deg));\n  --teal-900: color-mix(in lab, var(--black) 64%, oklch(68% 0.22 190deg));\n  --teal-950: color-mix(in lab, var(--black) 76%, oklch(68% 0.22 190deg));\n  --teal-975: color-mix(in lab, var(--black) 88%, oklch(68% 0.22 190deg));\n  --cyan-025: color-mix(in lab, var(--white) 94%, oklch(69% 0.22 220deg));\n  --cyan-050: color-mix(in lab, var(--white) 90%, oklch(69% 0.22 220deg));\n  --cyan-100: color-mix(in lab, var(--white) 80%, oklch(69% 0.22 220deg));\n  --cyan-200: color-mix(in lab, var(--white) 60%, oklch(69% 0.22 220deg));\n  --cyan-300: color-mix(in lab, var(--white) 40%, oklch(69% 0.22 220deg));\n  --cyan-400: color-mix(in lab, var(--white) 20%, oklch(69% 0.22 220deg));\n  --cyan-500: oklch(69% 0.22 220deg);\n  --cyan-600: color-mix(in lab, var(--black) 16%, oklch(69% 0.22 220deg));\n  --cyan-700: color-mix(in lab, var(--black) 32%, oklch(69% 0.22 220deg));\n  --cyan-800: color-mix(in lab, var(--black) 48%, oklch(69% 0.22 220deg));\n  --cyan-900: color-mix(in lab, var(--black) 64%, oklch(69% 0.22 220deg));\n  --cyan-950: color-mix(in lab, var(--black) 76%, oklch(69% 0.22 220deg));\n  --cyan-975: color-mix(in lab, var(--black) 88%, oklch(69% 0.22 220deg));\n  --brown-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.12 54deg));\n  --brown-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.12 54deg));\n  --brown-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.12 54deg));\n  --brown-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.12 54deg));\n  --brown-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.12 54deg));\n  --brown-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.12 54deg));\n  --brown-500: oklch(60% 0.12 54deg);\n  --brown-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.12 54deg));\n  --brown-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.12 54deg));\n  --brown-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.12 54deg));\n  --brown-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.12 54deg));\n  --brown-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.12 54deg));\n  --brown-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.12 54deg));\n  --gray-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.02 245deg));\n  --gray-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.02 245deg));\n  --gray-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.02 245deg));\n  --gray-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.02 245deg));\n  --gray-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.02 245deg));\n  --gray-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.02 245deg));\n  --gray-500: oklch(60% 0.02 245deg);\n  --gray-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.02 245deg));\n  --gray-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.02 245deg));\n  --gray-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.02 245deg));\n  --gray-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.02 245deg));\n  --gray-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.02 245deg));\n  --gray-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.02 245deg));\n  --pewter-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.01 290deg));\n  --pewter-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.01 290deg));\n  --pewter-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.01 290deg));\n  --pewter-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.01 290deg));\n  --pewter-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.01 290deg));\n  --pewter-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.01 290deg));\n  --pewter-500: oklch(65% 0.01 290deg);\n  --pewter-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.01 290deg));\n  --pewter-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.01 290deg));\n  --pewter-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.01 290deg));\n  --pewter-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.01 290deg));\n  --pewter-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.01 290deg));\n  --pewter-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.01 290deg));\n}\n\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n:root {\n  --black: #000;\n  --white: #fff;\n  --gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent));\n  --font-weight-lighter: lighter;\n  --font-weight-light: 300;\n  --font-weight-normal: 400;\n  --font-weight-medium: 500;\n  --font-weight-semibold: 600;\n  --font-weight-bold: 700;\n  --font-weight-bolder: bolder;\n  --body-font-family: system-ui;\n  --body-font-size: var(--font-size-base);\n  --body-font-weight: 400;\n  --body-line-height: 1.5;\n  --heading-color: inherit;\n  --hr-border-color: var(--border-color);\n  --link-color: light-dark(var(--primary-base), var(--primary-text));\n  --link-decoration: underline;\n  --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000);\n  --font-mono: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;\n  --code-font-size: 95%;\n  --code-color: var(--fg-2);\n  --border-width: 1px;\n  --border-style: solid;\n  --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700));\n  --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent);\n  --border-radius: 0.5rem;\n  --border-radius-xs: 0.375rem;\n  --border-radius-sm: 0.5rem;\n  --border-radius-lg: 0.75rem;\n  --border-radius-xl: 1rem;\n  --border-radius-2xl: 2rem;\n  --border-radius-pill: 50rem;\n  --box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  --box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n  --box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n  --box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n  --spacer: 1rem;\n  --focus-ring-width: 3px;\n  --focus-ring-offset: 1px;\n  --focus-ring-color: var(--primary-focus-ring);\n  --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color);\n  --control-checked-bg: var(--primary-base);\n  --control-checked-border-color: var(--control-checked-bg);\n  --control-active-bg: var(--primary-base);\n  --control-active-border-color: var(--control-active-bg);\n  --control-disabled-bg: var(--bg-3);\n  --control-disabled-opacity: 0.65;\n  --btn-input-fg: var(--fg-body);\n  --btn-input-bg: var(--bg-body);\n  --btn-input-min-height: 2.375rem;\n  --btn-input-padding-y: 0.375rem;\n  --btn-input-padding-x: 0.75rem;\n  --btn-input-font-size: var(--font-size-base);\n  --btn-input-line-height: var(--line-height-base);\n  --btn-input-border-radius: var(--border-radius);\n  --btn-input-xs-min-height: 1.5rem;\n  --btn-input-xs-padding-y: 0.125rem;\n  --btn-input-xs-padding-x: 0.5rem;\n  --btn-input-xs-font-size: var(--font-size-xs);\n  --btn-input-xs-line-height: 1.125;\n  --btn-input-xs-border-radius: var(--border-radius-xs);\n  --btn-input-sm-min-height: 2rem;\n  --btn-input-sm-padding-y: 0.25rem;\n  --btn-input-sm-padding-x: 0.625rem;\n  --btn-input-sm-font-size: var(--font-size-sm);\n  --btn-input-sm-line-height: var(--line-height-sm);\n  --btn-input-sm-border-radius: var(--border-radius-sm);\n  --btn-input-lg-min-height: 2.75rem;\n  --btn-input-lg-padding-y: 0.5rem;\n  --btn-input-lg-padding-x: 1rem;\n  --btn-input-lg-font-size: var(--font-size-md);\n  --btn-input-lg-line-height: var(--line-height-md);\n  --btn-input-lg-border-radius: var(--border-radius-lg);\n  --form-valid-color: var(--success-text);\n  --form-valid-border-color: var(--success-text);\n  --form-invalid-color: var(--danger-text);\n  --form-invalid-border-color: var(--danger-text);\n  --font-size-xs: 0.75rem;\n  --line-height-xs: 1.25;\n  --font-size-sm: 0.875rem;\n  --line-height-sm: 1.5;\n  --font-size-md: 1rem;\n  --line-height-md: 1.5;\n  --font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  --line-height-lg: 1.5;\n  --font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  --line-height-xl: 1.4285714286;\n  --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  --line-height-2xl: 1.3333333333;\n  --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  --line-height-3xl: 1.2;\n  --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  --line-height-4xl: 1.1;\n  --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);\n  --line-height-5xl: 1.1;\n  --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  --line-height-6xl: 1;\n  --primary-base: var(--blue-500);\n  --primary-text: light-dark(var(--blue-600), var(--blue-400));\n  --primary-text-emphasis: light-dark(var(--blue-800), var(--blue-200));\n  --primary-bg: var(--blue-500);\n  --primary-bg-subtle: light-dark(var(--blue-100), var(--blue-900));\n  --primary-bg-muted: light-dark(var(--blue-200), var(--blue-800));\n  --primary-border: light-dark(var(--blue-300), var(--blue-600));\n  --primary-focus-ring: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  --primary-contrast: var(--white);\n  --accent-base: var(--indigo-500);\n  --accent-text: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  --accent-text-emphasis: light-dark(var(--indigo-800), var(--indigo-300));\n  --accent-bg: var(--indigo-500);\n  --accent-bg-subtle: light-dark(var(--indigo-100), var(--indigo-900));\n  --accent-bg-muted: light-dark(var(--indigo-200), var(--indigo-800));\n  --accent-border: light-dark(var(--indigo-300), var(--indigo-600));\n  --accent-focus-ring: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  --accent-contrast: var(--white);\n  --success-base: var(--green-500);\n  --success-text: light-dark(var(--green-600), var(--green-400));\n  --success-text-emphasis: light-dark(var(--green-800), var(--green-300));\n  --success-bg: var(--green-500);\n  --success-bg-subtle: light-dark(var(--green-100), var(--green-900));\n  --success-bg-muted: light-dark(var(--green-200), var(--green-800));\n  --success-border: light-dark(var(--green-300), var(--green-600));\n  --success-focus-ring: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  --success-contrast: var(--white);\n  --danger-base: var(--red-500);\n  --danger-text: light-dark(var(--red-600), var(--red-400));\n  --danger-text-emphasis: light-dark(var(--red-800), var(--red-300));\n  --danger-bg: var(--red-500);\n  --danger-bg-subtle: light-dark(var(--red-100), var(--red-900));\n  --danger-bg-muted: light-dark(var(--red-200), var(--red-800));\n  --danger-border: light-dark(var(--red-300), var(--red-600));\n  --danger-focus-ring: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  --danger-contrast: var(--white);\n  --warning-base: var(--yellow-500);\n  --warning-text: light-dark(var(--yellow-700), var(--yellow-400));\n  --warning-text-emphasis: light-dark(var(--yellow-800), var(--yellow-300));\n  --warning-bg: var(--yellow-500);\n  --warning-bg-subtle: light-dark(var(--yellow-100), var(--yellow-900));\n  --warning-bg-muted: light-dark(var(--yellow-200), var(--yellow-800));\n  --warning-border: light-dark(var(--yellow-300), var(--yellow-600));\n  --warning-focus-ring: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  --warning-contrast: var(--gray-900);\n  --info-base: var(--cyan-500);\n  --info-text: light-dark(var(--cyan-600), var(--cyan-400));\n  --info-text-emphasis: light-dark(var(--cyan-800), var(--cyan-300));\n  --info-bg: var(--cyan-500);\n  --info-bg-subtle: light-dark(var(--cyan-100), var(--cyan-900));\n  --info-bg-muted: light-dark(var(--cyan-200), var(--cyan-800));\n  --info-border: light-dark(var(--cyan-300), var(--cyan-600));\n  --info-focus-ring: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  --info-contrast: var(--gray-900);\n  --inverse-base: var(--gray-900);\n  --inverse-text: light-dark(var(--gray-900), var(--gray-200));\n  --inverse-text-emphasis: light-dark(var(--gray-975), var(--white));\n  --inverse-bg: light-dark(var(--gray-900), var(--gray-025));\n  --inverse-bg-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --inverse-bg-muted: light-dark(var(--gray-200), var(--gray-300));\n  --inverse-border: light-dark(var(--gray-400), var(--gray-100));\n  --inverse-focus-ring: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  --inverse-contrast: light-dark(var(--white), var(--gray-900));\n  --secondary-base: var(--gray-200);\n  --secondary-text: light-dark(var(--gray-600), var(--gray-400));\n  --secondary-text-emphasis: light-dark(var(--gray-800), var(--gray-200));\n  --secondary-bg: light-dark(var(--gray-100), var(--gray-600));\n  --secondary-bg-subtle: light-dark(var(--gray-050), var(--gray-800));\n  --secondary-bg-muted: light-dark(var(--gray-100), var(--gray-700));\n  --secondary-border: light-dark(var(--gray-300), var(--gray-600));\n  --secondary-focus-ring: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  --secondary-contrast: light-dark(var(--gray-900), var(--white));\n  --bg-body: light-dark(var(--white), var(--gray-975));\n  --bg-1: light-dark(var(--gray-025), var(--gray-950));\n  --bg-2: light-dark(var(--gray-050), var(--gray-900));\n  --bg-3: light-dark(var(--gray-100), var(--gray-800));\n  --bg-4: light-dark(var(--gray-200), var(--gray-700));\n  --bg-white: var(--white);\n  --bg-black: var(--black);\n  --bg-transparent: transparent;\n  --bg-inherit: inherit;\n  --fg-body: light-dark(var(--gray-900), var(--gray-050));\n  --fg-1: light-dark(var(--gray-800), var(--gray-200));\n  --fg-2: light-dark(var(--gray-700), var(--gray-300));\n  --fg-3: light-dark(var(--gray-600), var(--gray-500));\n  --fg-4: light-dark(var(--gray-500), var(--gray-600));\n  --fg-white: var(--white);\n  --fg-black: var(--black);\n  --fg-inherit: inherit;\n  --border-bg: var(--bg-body);\n  --border-body: light-dark(var(--gray-300), var(--gray-800));\n  --border-muted: light-dark(var(--gray-200), var(--gray-800));\n  --border-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --border-emphasized: light-dark(var(--gray-400), var(--gray-600));\n  --border-white: var(--white);\n  --border-black: var(--black);\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 1024px;\n  --breakpoint-xl: 1280px;\n  --breakpoint-2xl: 1536px;\n  color-scheme: light dark;\n}\n\n[data-bs-theme=dark] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=light] {\n  color-scheme: light;\n}\n\n@layer reboot {\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n  :root {\n    accent-color: var(--primary-base);\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    :root {\n      scroll-behavior: smooth;\n    }\n  }\n  body {\n    margin: 0;\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body);\n    -webkit-text-size-adjust: 100%;\n    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  }\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n  h6,\n  .h6, h5,\n  .h5, h4,\n  .h4, h3,\n  .h3, h2,\n  .h2, h1,\n  .h1 {\n    margin-top: 0;\n    margin-bottom: 0.5rem;\n    font-weight: 500;\n    line-height: 1.2;\n    color: var(--heading-color);\n  }\n  h1,\n  .h1 {\n    font-size: var(--font-size-3xl);\n  }\n  h2,\n  .h2 {\n    font-size: var(--font-size-2xl);\n  }\n  h3,\n  .h3 {\n    font-size: var(--font-size-xl);\n  }\n  h4,\n  .h4 {\n    font-size: var(--font-size-lg);\n  }\n  h5,\n  .h5 {\n    font-size: var(--font-size-md);\n  }\n  h6,\n  .h6 {\n    font-size: var(--font-size-sm);\n  }\n  p {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  abbr[title] {\n    text-decoration: underline dotted;\n    cursor: help;\n    text-decoration-skip-ink: none;\n  }\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n  dt {\n    font-weight: 700;\n  }\n  dd {\n    margin-inline-start: 0;\n    margin-bottom: 0.5rem;\n  }\n  blockquote {\n    margin: 0 0 1rem;\n  }\n  blockquote > * {\n    margin-block: 0;\n  }\n  b,\n  strong {\n    font-weight: bolder;\n  }\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n  mark,\n  .mark {\n    --mark-padding: 0.1875em;\n    --mark-color: var(--fg-body);\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900));\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, 0.75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n  sub {\n    bottom: -0.25em;\n  }\n  sup {\n    top: -0.5em;\n  }\n  a {\n    color: var(--theme-text, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: 0.2em;\n  }\n  a:hover {\n    color: var(--theme-text-emphasis, var(--link-hover-color));\n    text-decoration: var(--link-hover-decoration, var(--link-decoration));\n  }\n  a:not([href]):not([class]), a:not([href]):not([class]):hover {\n    color: inherit;\n    text-decoration: none;\n  }\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em;\n  }\n  pre {\n    display: block;\n    margin-top: 0;\n    margin-bottom: 1rem;\n    overflow: auto;\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n  }\n  pre code {\n    font-size: inherit;\n    color: inherit;\n    word-break: normal;\n  }\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n  }\n  a > code {\n    color: inherit;\n  }\n  kbd {\n    --kbd-padding-y: 0.125rem;\n    --kbd-padding-x: 0.25rem;\n    --kbd-font-size: var(--font-size-xs);\n    --kbd-color: var(--bg-body);\n    --kbd-bg: var(--fg-2);\n    --kbd-border-radius: var(--border-radius-sm);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    border-radius: var(--kbd-border-radius);\n  }\n  kbd kbd {\n    padding: 0;\n    font-size: 1em;\n    font-weight: inherit;\n  }\n  figure {\n    margin: 0 0 1rem;\n  }\n  img,\n  svg {\n    vertical-align: middle;\n  }\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n  caption {\n    padding-block: 0.5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n  th {\n    text-align: inherit;\n    text-align: -webkit-match-parent;\n  }\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n  label {\n    display: inline-block;\n  }\n  button {\n    border-radius: 0;\n  }\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0;\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n  button,\n  select {\n    text-transform: none;\n  }\n  [role=button] {\n    cursor: pointer;\n  }\n  select {\n    word-wrap: normal;\n  }\n  select:disabled {\n    opacity: 1;\n  }\n  [list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n  button,\n  [type=button],\n  [type=reset],\n  [type=submit] {\n    -webkit-appearance: button;\n  }\n  button:not(:disabled),\n  [type=button]:not(:disabled),\n  [type=reset]:not(:disabled),\n  [type=submit]:not(:disabled) {\n    cursor: pointer;\n  }\n  ::-moz-focus-inner {\n    padding: 0;\n    border-style: none;\n  }\n  textarea {\n    resize: vertical;\n  }\n  fieldset {\n    min-width: 0;\n    padding: 0;\n    margin: 0;\n    border: 0;\n  }\n  legend {\n    float: inline-start;\n    width: 100%;\n    padding: 0;\n    margin-bottom: 0.5rem;\n    font-size: 1.5rem;\n    line-height: inherit;\n  }\n  legend + * {\n    clear: inline-start;\n  }\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-ampm-field,\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n  ::-webkit-inner-spin-button {\n    height: auto;\n  }\n  [type=search] {\n    -webkit-appearance: textfield;\n    outline-offset: -2px;\n  }\n  [type=search]::-webkit-search-cancel-button {\n    cursor: pointer;\n    filter: grayscale(1);\n  }\n  [type=tel],\n  [type=url],\n  [type=email],\n  [type=number] {\n    direction: ltr;\n  }\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n  ::file-selector-button {\n    font: inherit;\n    -webkit-appearance: button;\n  }\n  output {\n    display: inline-block;\n  }\n  iframe {\n    border: 0;\n  }\n  summary {\n    display: list-item;\n    cursor: pointer;\n  }\n  progress {\n    vertical-align: baseline;\n  }\n  [hidden] {\n    display: none !important;\n  }\n}\n@layer content {\n  .list-unstyled {\n    padding-inline-start: 0;\n    list-style: none;\n  }\n  .list-inline {\n    padding-inline-start: 0;\n    list-style: none;\n  }\n  .list-inline-item {\n    display: inline-block;\n  }\n  .list-inline-item:not(:last-child) {\n    margin-inline-end: var(--list-inline-padding, var(--spacer)/2);\n  }\n  .initialism {\n    font-size: var(--initialism-font-size, var(--font-size-xs));\n    text-transform: uppercase;\n  }\n  .blockquote {\n    --blockquote-gap: calc(var(--spacer) / 2);\n    --blockquote-padding-x: var(--spacer);\n    --blockquote-margin-y: 1rem;\n    --blockquote-font-size: var(--font-size-md);\n    --blockquote-border-width: 0.25rem;\n    --blockquote-border-color: var(--border-color);\n    --blockquote-footer-font-size: var(--font-size-sm);\n    --blockquote-footer-color: var(--fg-3);\n    display: flex;\n    flex-direction: column;\n    gap: var(--blockquote-gap);\n    padding-inline-start: var(--blockquote-padding-x);\n    margin-bottom: var(--blockquote-margin-y);\n    font-size: var(--blockquote-font-size);\n    border-inline-start: var(--blockquote-border-width) solid var(--blockquote-border-color);\n  }\n  .blockquote > * {\n    margin-bottom: 0;\n  }\n  figure.blockquote blockquote {\n    margin-bottom: 0;\n  }\n  .blockquote-footer {\n    font-size: var(--blockquote-footer-font-size);\n    color: var(--blockquote-footer-color);\n  }\n  .blockquote-footer::before {\n    content: \"— \";\n  }\n}\n@layer content {\n  .table {\n    --table-cell-padding-y: 0.5rem;\n    --table-cell-padding-x: 0.5rem;\n    --table-cell-vertical-align: top;\n    --table-color: var(--fg-body);\n    --table-bg: var(--bg-body);\n    --table-accent-bg: transparent;\n    --table-border-width: var(--border-width);\n    --table-border-color: var(--border-color);\n    --table-group-separator-color: currentcolor;\n    --table-striped-color: var(--table-color);\n    --table-striped-bg-factor: 0.05;\n    --table-striped-bg: color-mix(in srgb, var(--table-color) var(--table-striped-bg-factor), transparent);\n    --table-active-color: var(--table-color);\n    --table-active-bg-factor: 0.1;\n    --table-active-bg: color-mix(in srgb, var(--table-color) var(--table-active-bg-factor), transparent);\n    --table-hover-color: var(--table-color);\n    --table-hover-bg-factor: 0.075;\n    --table-hover-bg: color-mix(in srgb, var(--table-color) var(--table-hover-bg-factor), transparent);\n    --table-color-type: initial;\n    --table-bg-type: initial;\n    --table-color-state: initial;\n    --table-bg-state: initial;\n    width: 100%;\n    margin-bottom: 1rem;\n    vertical-align: var(--table-cell-vertical-align);\n    border-color: var(--theme-border, var(--table-border-color));\n  }\n  .table > :not(caption) > * > * {\n    padding: var(--table-cell-padding-y) var(--table-cell-padding-x);\n    color: var(--table-color-state, var(--table-color-type, var(--theme-text, var(--table-color))));\n    background-color: var(--theme-bg-subtle, var(--table-bg));\n    border-block-end-width: var(--table-border-width);\n    box-shadow: inset 0 0 0 9999px var(--table-bg-state, var(--table-bg-type, var(--theme-bg-subtle, var(--table-accent-bg))));\n  }\n  .table > tbody {\n    vertical-align: inherit;\n  }\n  .table > thead {\n    vertical-align: bottom;\n  }\n  .table-group-divider {\n    border-block-start: calc(var(--table-border-width) * 2) solid var(--table-group-separator-color);\n  }\n  .caption-top {\n    caption-side: top;\n  }\n  .table-sm > :not(caption) > * > * {\n    --table-cell-padding-y: .25rem;\n    --table-cell-padding-x: .25rem;\n  }\n  .table-bordered > :not(caption) > * {\n    border-width: var(--table-border-width) 0;\n  }\n  .table-bordered > :not(caption) > * > * {\n    border-width: 0 var(--table-border-width);\n  }\n  .table-borderless > :not(caption) > * > * {\n    border-block-end-width: 0;\n  }\n  .table-borderless > :not(:first-child) {\n    border-block-start-width: 0;\n  }\n  .table-striped > tbody > tr:nth-of-type(odd) > * {\n    --table-color-type: var(--theme-text, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-striped-bg-factor), transparent);\n  }\n  .table-striped-columns > :not(caption) > tr > :nth-child(even) {\n    --table-color-type: var(--theme-text, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-striped-bg-factor), transparent);\n  }\n  .table-active {\n    --table-color-state: var(--theme-text, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-active-bg-factor), transparent);\n  }\n  .table-hover > tbody > tr:hover > * {\n    --table-color-state: var(--theme-text, var(--table-hover-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-hover-bg-factor), transparent);\n  }\n  .table-responsive {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n  @media (width < 576px) {\n    .table-responsive-sm {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  @media (width < 768px) {\n    .table-responsive-md {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  @media (width < 1024px) {\n    .table-responsive-lg {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  @media (width < 1280px) {\n    .table-responsive-xl {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  @media (width < 1536px) {\n    .table-responsive-2xl {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n}\n@layer content {\n  .img-fluid {\n    max-width: 100%;\n    height: auto;\n  }\n  .img-thumbnail {\n    --thumbnail-padding: 0.25rem;\n    --thumbnail-bg: var(--bg-body);\n    --thumbnail-border-width: var(--border-width);\n    --thumbnail-border-color: var(--border-color);\n    --thumbnail-border-radius: var(--border-radius);\n    --thumbnail-box-shadow: var(--box-shadow-sm);\n    padding: var(--thumbnail-padding);\n    background-color: var(--thumbnail-bg);\n    border: var(--thumbnail-border-width) solid var(--thumbnail-border-color);\n    border-radius: var(--thumbnail-border-radius);\n    box-shadow: var(--thumbnail-box-shadow);\n    max-width: 100%;\n    height: auto;\n  }\n  .figure {\n    --figure-gap: calc(var(--spacer) * 0.5);\n    --figure-caption-font-size: var(--font-size-sm);\n    --figure-caption-color: var(--fg-3);\n    display: flex;\n    flex-direction: column;\n    gap: var(--figure-gap);\n  }\n  .figure-caption {\n    font-size: var(--figure-caption-font-size);\n    color: var(--figure-caption-color);\n  }\n}\n@layer content {\n  .prose {\n    --content-font-size: 1rem;\n    --content-gap: 20px;\n    --heading-color: light-dark(var(--gray-900), var(--white));\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--content-gap);\n    max-width: 1000px;\n    margin-inline: auto;\n    font-size: var(--content-font-size);\n    line-height: 1.5;\n  }\n  @media (width >= 1024px) {\n    .prose {\n      --content-font-size: var(--font-size-md);\n      --content-gap: 24px;\n    }\n  }\n  .prose :where(p, ul, ol, dl, pre, table, blockquote):not(:where(.not-prose, .not-prose *)) {\n    margin-block: 0;\n  }\n  .prose :where(ul, ol):not([class]):not(:where(.not-prose, .not-prose *)) li:not(:last-child) {\n    margin-bottom: calc(var(--content-gap) / 4);\n  }\n  .prose :where(li ul, li ol):not(:where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) / 4);\n  }\n  .prose :where(hr):not(:where(.not-prose, .not-prose *)) {\n    margin: calc(var(--content-gap) * 1.5) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n  .prose :where(h1, h2, h3, h4, h5, h6):not([class]):not(:where(.not-prose, .not-prose *)) {\n    margin-top: 0;\n    margin-bottom: calc(var(--content-gap) / -2);\n    font-weight: 500;\n    line-height: 1.25;\n  }\n  .prose :where(h1, h2, h3, h4, h5, h6):not([class]):not(:where(.not-prose, .not-prose *)) code {\n    font-weight: 600;\n    color: inherit;\n  }\n  .prose :where(h1, h2):not(:first-child):not(:where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) * 0.75);\n  }\n  .prose :where(h3, h4, h5, h6):not(:first-child):not(:where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) * 0.5);\n  }\n  .prose :where(h1):not(:where(.not-prose, .not-prose *)) {\n    font-size: 2.25em;\n    line-height: 1.1;\n  }\n  .prose :where(h2):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.75em;\n  }\n  .prose :where(h3):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.5em;\n  }\n  .prose :where(h4):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.25em;\n  }\n  .prose :where(h5):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.125em;\n  }\n  .prose :where(h6):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1em;\n  }\n  .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n    color: var(--link-color);\n    text-decoration: underline;\n    text-decoration-color: color-mix(in srgb, var(--link-color) 25%, transparent);\n    text-underline-offset: 4px;\n    transition: 0.1s text-decoration-color ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n      transition: none;\n    }\n  }\n  .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)):hover {\n    text-decoration-color: var(--link-hover-color);\n  }\n  .prose :where(img):not(:where(.not-prose, .not-prose *)) {\n    max-width: 100%;\n  }\n  .prose :where(blockquote):not(:where(.not-prose, .not-prose *)) {\n    padding-inline-start: calc(var(--content-gap) / 2);\n    margin: 0;\n    border-inline-start: 4px solid var(--border-color);\n  }\n  .prose :where(table):not(:where(.not-prose, .not-prose *)) {\n    width: 100%;\n    border-spacing: 0;\n    border-collapse: collapse;\n  }\n  .prose :where(table:not([class])):not(:where(.not-prose, .not-prose *)) td,\n  .prose :where(table:not([class])):not(:where(.not-prose, .not-prose *)) th {\n    padding: 6px 12px;\n    text-align: inherit;\n    border: 1px solid var(--border-color);\n  }\n  .prose :where(dt):not(:where(.not-prose, .not-prose *)) {\n    font-weight: 500;\n  }\n  .prose :where(video, img):not(:where(.not-prose, .not-prose *)) {\n    max-width: 100%;\n  }\n}\n@layer layout {\n  .container,\n  .container-fluid,\n  .container-2xl,\n  .container-xl,\n  .container-lg,\n  .container-md,\n  .container-sm {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-inline: auto;\n  }\n  @media (width >= 576px) {\n    .container-sm, .container {\n      max-width: 540px;\n    }\n  }\n  @media (width >= 768px) {\n    .container-md, .container-sm, .container {\n      max-width: 720px;\n    }\n  }\n  @media (width >= 1024px) {\n    .container-lg, .container-md, .container-sm, .container {\n      max-width: 960px;\n    }\n  }\n  @media (width >= 1280px) {\n    .container-xl, .container-lg, .container-md, .container-sm, .container {\n      max-width: 1200px;\n    }\n  }\n  @media (width >= 1536px) {\n    .container-2xl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n      max-width: 1440px;\n    }\n  }\n}\n@layer layout {\n  .row {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    display: flex;\n    flex-wrap: wrap;\n    margin-inline: calc(-0.5 * var(--gutter-x));\n    margin-top: calc(-1 * var(--gutter-y));\n  }\n  .row > * {\n    flex-shrink: 0;\n    width: 100%;\n    max-width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-top: var(--gutter-y);\n  }\n  .col {\n    flex: 1 0 0;\n  }\n  .row-cols-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .row-cols-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .row-cols-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .row-cols-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .row-cols-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .row-cols-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n  .row-cols-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .col-1 {\n    flex: 0 0 auto;\n    width: 8.3333333333%;\n  }\n  .col-2 {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .col-4 {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .col-5 {\n    flex: 0 0 auto;\n    width: 41.6666666667%;\n  }\n  .col-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .col-7 {\n    flex: 0 0 auto;\n    width: 58.3333333333%;\n  }\n  .col-8 {\n    flex: 0 0 auto;\n    width: 66.6666666667%;\n  }\n  .col-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n  .col-10 {\n    flex: 0 0 auto;\n    width: 83.3333333333%;\n  }\n  .col-11 {\n    flex: 0 0 auto;\n    width: 91.6666666667%;\n  }\n  .col-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .offset-1 {\n    margin-inline-start: 8.3333333333%;\n  }\n  .offset-2 {\n    margin-inline-start: 16.6666666667%;\n  }\n  .offset-3 {\n    margin-inline-start: 25%;\n  }\n  .offset-4 {\n    margin-inline-start: 33.3333333333%;\n  }\n  .offset-5 {\n    margin-inline-start: 41.6666666667%;\n  }\n  .offset-6 {\n    margin-inline-start: 50%;\n  }\n  .offset-7 {\n    margin-inline-start: 58.3333333333%;\n  }\n  .offset-8 {\n    margin-inline-start: 66.6666666667%;\n  }\n  .offset-9 {\n    margin-inline-start: 75%;\n  }\n  .offset-10 {\n    margin-inline-start: 83.3333333333%;\n  }\n  .offset-11 {\n    margin-inline-start: 91.6666666667%;\n  }\n  .g-0,\n  .gx-0 {\n    --gutter-x: 0;\n  }\n  .g-0,\n  .gy-0 {\n    --gutter-y: 0;\n  }\n  .g-1,\n  .gx-1 {\n    --gutter-x: 0.25rem;\n  }\n  .g-1,\n  .gy-1 {\n    --gutter-y: 0.25rem;\n  }\n  .g-2,\n  .gx-2 {\n    --gutter-x: 0.5rem;\n  }\n  .g-2,\n  .gy-2 {\n    --gutter-y: 0.5rem;\n  }\n  .g-3,\n  .gx-3 {\n    --gutter-x: 1rem;\n  }\n  .g-3,\n  .gy-3 {\n    --gutter-y: 1rem;\n  }\n  .g-4,\n  .gx-4 {\n    --gutter-x: 1.5rem;\n  }\n  .g-4,\n  .gy-4 {\n    --gutter-y: 1.5rem;\n  }\n  .g-5,\n  .gx-5 {\n    --gutter-x: 3rem;\n  }\n  .g-5,\n  .gy-5 {\n    --gutter-y: 3rem;\n  }\n  @media (width >= 576px) {\n    .col-sm {\n      flex: 1 0 0;\n    }\n    .row-cols-sm-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-sm-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-sm-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-sm-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-sm-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-sm-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-sm-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-sm-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-sm-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-sm-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-sm-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-sm-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-sm-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-sm-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-sm-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-sm-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-sm-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-sm-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-sm-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-sm-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-sm-0 {\n      margin-inline-start: 0;\n    }\n    .offset-sm-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-sm-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-sm-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-sm-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-sm-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-sm-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-sm-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-sm-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-sm-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-sm-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-sm-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-sm-0,\n    .gx-sm-0 {\n      --gutter-x: 0;\n    }\n    .g-sm-0,\n    .gy-sm-0 {\n      --gutter-y: 0;\n    }\n    .g-sm-1,\n    .gx-sm-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-sm-1,\n    .gy-sm-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-sm-2,\n    .gx-sm-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-sm-2,\n    .gy-sm-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-sm-3,\n    .gx-sm-3 {\n      --gutter-x: 1rem;\n    }\n    .g-sm-3,\n    .gy-sm-3 {\n      --gutter-y: 1rem;\n    }\n    .g-sm-4,\n    .gx-sm-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-sm-4,\n    .gy-sm-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-sm-5,\n    .gx-sm-5 {\n      --gutter-x: 3rem;\n    }\n    .g-sm-5,\n    .gy-sm-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 768px) {\n    .col-md {\n      flex: 1 0 0;\n    }\n    .row-cols-md-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-md-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-md-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-md-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-md-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-md-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-md-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-md-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-md-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-md-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-md-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-md-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-md-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-md-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-md-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-md-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-md-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-md-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-md-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-md-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-md-0 {\n      margin-inline-start: 0;\n    }\n    .offset-md-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-md-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-md-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-md-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-md-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-md-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-md-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-md-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-md-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-md-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-md-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-md-0,\n    .gx-md-0 {\n      --gutter-x: 0;\n    }\n    .g-md-0,\n    .gy-md-0 {\n      --gutter-y: 0;\n    }\n    .g-md-1,\n    .gx-md-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-md-1,\n    .gy-md-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-md-2,\n    .gx-md-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-md-2,\n    .gy-md-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-md-3,\n    .gx-md-3 {\n      --gutter-x: 1rem;\n    }\n    .g-md-3,\n    .gy-md-3 {\n      --gutter-y: 1rem;\n    }\n    .g-md-4,\n    .gx-md-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-md-4,\n    .gy-md-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-md-5,\n    .gx-md-5 {\n      --gutter-x: 3rem;\n    }\n    .g-md-5,\n    .gy-md-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1024px) {\n    .col-lg {\n      flex: 1 0 0;\n    }\n    .row-cols-lg-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-lg-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-lg-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-lg-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-lg-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-lg-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-lg-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-lg-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-lg-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-lg-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-lg-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-lg-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-lg-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-lg-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-lg-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-lg-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-lg-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-lg-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-lg-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-lg-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-lg-0 {\n      margin-inline-start: 0;\n    }\n    .offset-lg-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-lg-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-lg-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-lg-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-lg-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-lg-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-lg-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-lg-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-lg-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-lg-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-lg-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-lg-0,\n    .gx-lg-0 {\n      --gutter-x: 0;\n    }\n    .g-lg-0,\n    .gy-lg-0 {\n      --gutter-y: 0;\n    }\n    .g-lg-1,\n    .gx-lg-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-lg-1,\n    .gy-lg-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-lg-2,\n    .gx-lg-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-lg-2,\n    .gy-lg-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-lg-3,\n    .gx-lg-3 {\n      --gutter-x: 1rem;\n    }\n    .g-lg-3,\n    .gy-lg-3 {\n      --gutter-y: 1rem;\n    }\n    .g-lg-4,\n    .gx-lg-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-lg-4,\n    .gy-lg-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-lg-5,\n    .gx-lg-5 {\n      --gutter-x: 3rem;\n    }\n    .g-lg-5,\n    .gy-lg-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1280px) {\n    .col-xl {\n      flex: 1 0 0;\n    }\n    .row-cols-xl-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-xl-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-xl-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-xl-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-xl-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-xl-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-xl-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-xl-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-xl-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-xl-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-xl-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-xl-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-xl-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-xl-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-xl-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-xl-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-xl-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-xl-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-xl-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-xl-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-xl-0 {\n      margin-inline-start: 0;\n    }\n    .offset-xl-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-xl-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-xl-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-xl-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-xl-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-xl-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-xl-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-xl-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-xl-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-xl-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-xl-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-xl-0,\n    .gx-xl-0 {\n      --gutter-x: 0;\n    }\n    .g-xl-0,\n    .gy-xl-0 {\n      --gutter-y: 0;\n    }\n    .g-xl-1,\n    .gx-xl-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-xl-1,\n    .gy-xl-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-xl-2,\n    .gx-xl-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-xl-2,\n    .gy-xl-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-xl-3,\n    .gx-xl-3 {\n      --gutter-x: 1rem;\n    }\n    .g-xl-3,\n    .gy-xl-3 {\n      --gutter-y: 1rem;\n    }\n    .g-xl-4,\n    .gx-xl-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-xl-4,\n    .gy-xl-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-xl-5,\n    .gx-xl-5 {\n      --gutter-x: 3rem;\n    }\n    .g-xl-5,\n    .gy-xl-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1536px) {\n    .col-2xl {\n      flex: 1 0 0;\n    }\n    .row-cols-2xl-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .row-cols-2xl-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .row-cols-2xl-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .row-cols-2xl-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .row-cols-2xl-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .row-cols-2xl-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .row-cols-2xl-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-2xl-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .col-2xl-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .col-2xl-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .col-2xl-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .col-2xl-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .col-2xl-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .col-2xl-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .col-2xl-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .col-2xl-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .col-2xl-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .col-2xl-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .col-2xl-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .col-2xl-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .offset-2xl-0 {\n      margin-inline-start: 0;\n    }\n    .offset-2xl-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .offset-2xl-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .offset-2xl-3 {\n      margin-inline-start: 25%;\n    }\n    .offset-2xl-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .offset-2xl-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .offset-2xl-6 {\n      margin-inline-start: 50%;\n    }\n    .offset-2xl-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .offset-2xl-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .offset-2xl-9 {\n      margin-inline-start: 75%;\n    }\n    .offset-2xl-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .offset-2xl-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .g-2xl-0,\n    .gx-2xl-0 {\n      --gutter-x: 0;\n    }\n    .g-2xl-0,\n    .gy-2xl-0 {\n      --gutter-y: 0;\n    }\n    .g-2xl-1,\n    .gx-2xl-1 {\n      --gutter-x: 0.25rem;\n    }\n    .g-2xl-1,\n    .gy-2xl-1 {\n      --gutter-y: 0.25rem;\n    }\n    .g-2xl-2,\n    .gx-2xl-2 {\n      --gutter-x: 0.5rem;\n    }\n    .g-2xl-2,\n    .gy-2xl-2 {\n      --gutter-y: 0.5rem;\n    }\n    .g-2xl-3,\n    .gx-2xl-3 {\n      --gutter-x: 1rem;\n    }\n    .g-2xl-3,\n    .gy-2xl-3 {\n      --gutter-y: 1rem;\n    }\n    .g-2xl-4,\n    .gx-2xl-4 {\n      --gutter-x: 1.5rem;\n    }\n    .g-2xl-4,\n    .gy-2xl-4 {\n      --gutter-y: 1.5rem;\n    }\n    .g-2xl-5,\n    .gx-2xl-5 {\n      --gutter-x: 3rem;\n    }\n    .g-2xl-5,\n    .gy-2xl-5 {\n      --gutter-y: 3rem;\n    }\n  }\n  .grid {\n    --columns: 12;\n    --rows: 1;\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-rows: repeat(var(--rows), 1fr);\n    grid-template-columns: repeat(var(--columns), 1fr);\n    gap: var(--gap);\n  }\n  .g-col-1 {\n    grid-column: auto/span 1;\n  }\n  .g-col-2 {\n    grid-column: auto/span 2;\n  }\n  .g-col-3 {\n    grid-column: auto/span 3;\n  }\n  .g-col-4 {\n    grid-column: auto/span 4;\n  }\n  .g-col-5 {\n    grid-column: auto/span 5;\n  }\n  .g-col-6 {\n    grid-column: auto/span 6;\n  }\n  .g-col-7 {\n    grid-column: auto/span 7;\n  }\n  .g-col-8 {\n    grid-column: auto/span 8;\n  }\n  .g-col-9 {\n    grid-column: auto/span 9;\n  }\n  .g-col-10 {\n    grid-column: auto/span 10;\n  }\n  .g-col-11 {\n    grid-column: auto/span 11;\n  }\n  .g-col-12 {\n    grid-column: auto/span 12;\n  }\n  .g-start-1 {\n    grid-column-start: 1;\n  }\n  .g-start-2 {\n    grid-column-start: 2;\n  }\n  .g-start-3 {\n    grid-column-start: 3;\n  }\n  .g-start-4 {\n    grid-column-start: 4;\n  }\n  .g-start-5 {\n    grid-column-start: 5;\n  }\n  .g-start-6 {\n    grid-column-start: 6;\n  }\n  .g-start-7 {\n    grid-column-start: 7;\n  }\n  .g-start-8 {\n    grid-column-start: 8;\n  }\n  .g-start-9 {\n    grid-column-start: 9;\n  }\n  .g-start-10 {\n    grid-column-start: 10;\n  }\n  .g-start-11 {\n    grid-column-start: 11;\n  }\n  @media (width >= 576px) {\n    .g-col-sm-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-sm-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-sm-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-sm-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-sm-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-sm-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-sm-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-sm-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-sm-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-sm-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-sm-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-sm-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-sm-1 {\n      grid-column-start: 1;\n    }\n    .g-start-sm-2 {\n      grid-column-start: 2;\n    }\n    .g-start-sm-3 {\n      grid-column-start: 3;\n    }\n    .g-start-sm-4 {\n      grid-column-start: 4;\n    }\n    .g-start-sm-5 {\n      grid-column-start: 5;\n    }\n    .g-start-sm-6 {\n      grid-column-start: 6;\n    }\n    .g-start-sm-7 {\n      grid-column-start: 7;\n    }\n    .g-start-sm-8 {\n      grid-column-start: 8;\n    }\n    .g-start-sm-9 {\n      grid-column-start: 9;\n    }\n    .g-start-sm-10 {\n      grid-column-start: 10;\n    }\n    .g-start-sm-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 768px) {\n    .g-col-md-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-md-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-md-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-md-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-md-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-md-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-md-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-md-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-md-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-md-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-md-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-md-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-md-1 {\n      grid-column-start: 1;\n    }\n    .g-start-md-2 {\n      grid-column-start: 2;\n    }\n    .g-start-md-3 {\n      grid-column-start: 3;\n    }\n    .g-start-md-4 {\n      grid-column-start: 4;\n    }\n    .g-start-md-5 {\n      grid-column-start: 5;\n    }\n    .g-start-md-6 {\n      grid-column-start: 6;\n    }\n    .g-start-md-7 {\n      grid-column-start: 7;\n    }\n    .g-start-md-8 {\n      grid-column-start: 8;\n    }\n    .g-start-md-9 {\n      grid-column-start: 9;\n    }\n    .g-start-md-10 {\n      grid-column-start: 10;\n    }\n    .g-start-md-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1024px) {\n    .g-col-lg-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-lg-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-lg-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-lg-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-lg-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-lg-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-lg-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-lg-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-lg-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-lg-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-lg-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-lg-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-lg-1 {\n      grid-column-start: 1;\n    }\n    .g-start-lg-2 {\n      grid-column-start: 2;\n    }\n    .g-start-lg-3 {\n      grid-column-start: 3;\n    }\n    .g-start-lg-4 {\n      grid-column-start: 4;\n    }\n    .g-start-lg-5 {\n      grid-column-start: 5;\n    }\n    .g-start-lg-6 {\n      grid-column-start: 6;\n    }\n    .g-start-lg-7 {\n      grid-column-start: 7;\n    }\n    .g-start-lg-8 {\n      grid-column-start: 8;\n    }\n    .g-start-lg-9 {\n      grid-column-start: 9;\n    }\n    .g-start-lg-10 {\n      grid-column-start: 10;\n    }\n    .g-start-lg-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1280px) {\n    .g-col-xl-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-xl-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-xl-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-xl-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-xl-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-xl-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-xl-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-xl-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-xl-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-xl-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-xl-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-xl-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-xl-1 {\n      grid-column-start: 1;\n    }\n    .g-start-xl-2 {\n      grid-column-start: 2;\n    }\n    .g-start-xl-3 {\n      grid-column-start: 3;\n    }\n    .g-start-xl-4 {\n      grid-column-start: 4;\n    }\n    .g-start-xl-5 {\n      grid-column-start: 5;\n    }\n    .g-start-xl-6 {\n      grid-column-start: 6;\n    }\n    .g-start-xl-7 {\n      grid-column-start: 7;\n    }\n    .g-start-xl-8 {\n      grid-column-start: 8;\n    }\n    .g-start-xl-9 {\n      grid-column-start: 9;\n    }\n    .g-start-xl-10 {\n      grid-column-start: 10;\n    }\n    .g-start-xl-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1536px) {\n    .g-col-2xl-1 {\n      grid-column: auto/span 1;\n    }\n    .g-col-2xl-2 {\n      grid-column: auto/span 2;\n    }\n    .g-col-2xl-3 {\n      grid-column: auto/span 3;\n    }\n    .g-col-2xl-4 {\n      grid-column: auto/span 4;\n    }\n    .g-col-2xl-5 {\n      grid-column: auto/span 5;\n    }\n    .g-col-2xl-6 {\n      grid-column: auto/span 6;\n    }\n    .g-col-2xl-7 {\n      grid-column: auto/span 7;\n    }\n    .g-col-2xl-8 {\n      grid-column: auto/span 8;\n    }\n    .g-col-2xl-9 {\n      grid-column: auto/span 9;\n    }\n    .g-col-2xl-10 {\n      grid-column: auto/span 10;\n    }\n    .g-col-2xl-11 {\n      grid-column: auto/span 11;\n    }\n    .g-col-2xl-12 {\n      grid-column: auto/span 12;\n    }\n    .g-start-2xl-1 {\n      grid-column-start: 1;\n    }\n    .g-start-2xl-2 {\n      grid-column-start: 2;\n    }\n    .g-start-2xl-3 {\n      grid-column-start: 3;\n    }\n    .g-start-2xl-4 {\n      grid-column-start: 4;\n    }\n    .g-start-2xl-5 {\n      grid-column-start: 5;\n    }\n    .g-start-2xl-6 {\n      grid-column-start: 6;\n    }\n    .g-start-2xl-7 {\n      grid-column-start: 7;\n    }\n    .g-start-2xl-8 {\n      grid-column-start: 8;\n    }\n    .g-start-2xl-9 {\n      grid-column-start: 9;\n    }\n    .g-start-2xl-10 {\n      grid-column-start: 10;\n    }\n    .g-start-2xl-11 {\n      grid-column-start: 11;\n    }\n  }\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n  .grid-fill {\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n}\n@layer forms {\n  .form-label,\n  .col-form-label {\n    font-size: var(--label-font-size, var(--font-size-sm));\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, inherit);\n    color: var(--label-color, var(--fg-body));\n  }\n  .form-label {\n    margin-bottom: var(--label-margin-bottom, calc(var(--spacer) / 2));\n  }\n  .col-form-label {\n    --label-padding-y: calc(var(--btn-input-padding-y) + var(--border-width));\n    padding-block: var(--label-padding-y);\n    margin-bottom: 0;\n  }\n  .col-form-label-lg {\n    --label-padding-y: calc(var(--btn-input-lg-padding-y) + var(--border-width));\n    font-size: var(--btn-input-lg-font-size);\n  }\n  .col-form-label-sm {\n    --label-padding-y: calc(var(--btn-input-sm-padding-y) + var(--border-width));\n    font-size: var(--btn-input-sm-font-size);\n  }\n}\n@layer forms {\n  .form-text {\n    --form-text-margin-top: 0.25rem;\n    --form-text-font-size: var(--font-size-sm);\n    --form-text-color: var(--fg-3);\n    margin-top: var(--form-text-margin-top);\n    font-size: var(--form-text-font-size);\n    font-style: var(--form-text-font-style);\n    font-weight: var(--form-text-font-weight);\n    color: var(--form-text-color);\n  }\n}\n@layer forms {\n  .form-control {\n    --control-min-height: var(--btn-input-min-height);\n    --control-padding-y: var(--btn-input-padding-y);\n    --control-padding-x: var(--btn-input-padding-x);\n    --control-font-size: var(--btn-input-font-size);\n    --control-line-height: var(--btn-input-line-height);\n    --control-fg: var(--btn-input-fg);\n    --control-bg: var(--btn-input-bg);\n    --control-border-width: var(--border-width);\n    --control-border-color: var(--border-color);\n    --control-border-radius: var(--border-radius);\n    --control-box-shadow: var(--box-shadow-inset);\n    --control-action-bg: var(--bg-1);\n    --control-action-hover-bg: var(--bg-2);\n    --control-transition-property: border-color, box-shadow;\n    --control-transition-timing: 0.15s ease-in-out;\n    --control-transition: var(--control-transition-property) var(--control-transition-timing);\n    --control-placeholder-color: var(--fg-3);\n    --control-disabled-color: var(--control-fg);\n    --control-disabled-bg: var(--bg-2);\n    --control-disabled-border-color: var(--control-border-color);\n    --control-select-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2300000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    --control-select-bg-position: right 0.75rem center;\n    --control-select-bg-size: 16px 12px;\n    --control-select-bg-dark: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    display: flex;\n    width: 100%;\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    font-size: var(--control-font-size);\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    appearance: none;\n    background-color: var(--control-bg);\n    background-clip: padding-box;\n    border: var(--control-border-width) solid var(--control-border-color);\n    border-radius: var(--control-border-radius);\n    box-shadow: var(--control-box-shadow);\n    transition: var(--control-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-control {\n      transition: none;\n    }\n  }\n  .form-control:focus-visible {\n    --focus-ring-offset: -1px;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-control::placeholder {\n    color: var(--control-placeholder-color);\n    opacity: 1;\n  }\n  .form-control:disabled {\n    color: var(--control-disabled-color);\n    background-color: var(--control-disabled-bg);\n    border-color: var(--control-disabled-border-color);\n    opacity: 1;\n  }\n  .form-control::-webkit-datetime-edit {\n    display: block;\n    height: 1.5rem;\n    padding: 0;\n    margin-bottom: -0.125rem;\n  }\n  .form-control::-webkit-datetime-edit-fields-wrapper {\n    height: 1.5rem;\n  }\n  .form-control[type=file] {\n    overflow: hidden;\n  }\n  .form-control[type=file]:not(:disabled):not([readonly]) {\n    cursor: pointer;\n  }\n  .form-control::file-selector-button {\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    margin: calc(var(--control-padding-y) * -1) calc(var(--control-padding-x) * -1);\n    margin-inline-end: var(--control-padding-x);\n    color: var(--control-fg);\n    background-color: var(--control-action-bg);\n    pointer-events: none;\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n    border-inline-end-width: var(--control-border-width);\n    border-radius: 0;\n    transition: var(--control-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-control::file-selector-button {\n      transition: none;\n    }\n  }\n  .form-control:hover:not(:disabled):not([readonly])::file-selector-button {\n    background-color: var(--control-action-hover-bg);\n  }\n  .form-control-plaintext {\n    display: block;\n    width: 100%;\n    padding: var(--control-padding-y) 0;\n    margin-bottom: 0;\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    background-color: transparent;\n    border: solid transparent;\n    border-width: var(--control-border-width) 0;\n  }\n  .form-control-plaintext:focus {\n    outline: 0;\n  }\n  .form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n    padding-inline: 0;\n  }\n  select.form-control {\n    padding-inline-end: calc(var(--control-padding-x) * 3);\n    background-image: var(--control-select-bg);\n    background-repeat: no-repeat;\n    background-position: var(--control-select-bg-position);\n    background-size: var(--control-select-bg-size);\n  }\n  select.form-control[multiple], select.form-control[size]:not([size=\"1\"]) {\n    padding-inline-end: var(--control-padding-x);\n    background-image: none;\n  }\n  @media (prefers-color-scheme: dark) {\n    select.form-control {\n      background-image: var(--control-select-bg-dark);\n    }\n  }\n  .form-control-sm {\n    --control-min-height: var(--btn-input-sm-min-height);\n    --control-padding-y: var(--btn-input-sm-padding-y);\n    --control-padding-x: var(--btn-input-sm-padding-x);\n    --control-font-size: var(--btn-input-sm-font-size);\n    --control-line-height: var(--btn-input-sm-line-height);\n    --control-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .form-control-lg {\n    --control-min-height: var(--btn-input-lg-min-height);\n    --control-padding-y: var(--btn-input-lg-padding-y);\n    --control-padding-x: var(--btn-input-lg-padding-x);\n    --control-font-size: var(--btn-input-lg-font-size);\n    --control-line-height: var(--btn-input-lg-line-height);\n    --control-border-radius: var(--btn-input-lg-border-radius);\n  }\n  .form-control-color {\n    width: var(--control-min-height);\n    padding: var(--control-padding-y);\n  }\n  .form-control-color:not(:disabled):not([readonly]) {\n    cursor: pointer;\n  }\n  .form-control-color::-moz-color-swatch {\n    border: 0 !important;\n    border-radius: var(--border-radius-sm);\n  }\n  .form-control-color::-webkit-color-swatch {\n    border: 0 !important;\n    border-radius: var(--border-radius-sm);\n  }\n  .form-ghost {\n    display: block;\n    width: 100%;\n    padding: 0;\n    font: inherit;\n    color: inherit;\n    appearance: none;\n    background: transparent;\n    border: 0;\n  }\n  .form-ghost:focus {\n    outline: 0;\n  }\n  .form-ghost::placeholder {\n    color: var(--fg-3);\n    opacity: 1;\n  }\n  .form-ghost:disabled {\n    color: var(--fg-4);\n    cursor: not-allowed;\n  }\n}\n@layer forms {\n  .checkgroup {\n    display: flex;\n    gap: var(--gap, 0.5rem);\n    align-items: var(--align-items, start);\n  }\n  .checkgroup .description {\n    color: var(--fg-3);\n  }\n  .check {\n    --check-size: 1.25rem;\n    --check-margin-block: 0.125rem;\n    --check-bg: transparent;\n    --check-border-color: var(--border-color);\n    --check-border-radius: 0.375rem;\n    --check-checked-bg: var(--control-checked-bg);\n    --check-checked-border-color: var(--control-checked-border-color);\n    --check-indeterminate-bg: var(--control-checked-bg);\n    --check-indeterminate-border-color: var(--control-checked-border-color);\n    --check-active-bg: var(--control-active-bg);\n    --check-active-border-color: var(--control-active-border-color);\n    --check-disabled-bg: var(--control-disabled-bg);\n    --check-disabled-opacity: var(--control-disabled-opacity);\n    display: grid;\n    grid-template-columns: repeat(1, minmax(0, 1fr));\n    margin-block: var(--check-margin-block);\n  }\n  .check :where(svg, input) {\n    flex-shrink: 0;\n    grid-row-start: 1;\n    grid-column-start: 1;\n    width: var(--check-size);\n    height: var(--check-size);\n  }\n  .check :where(input) {\n    appearance: none;\n    background-color: var(--theme-bg, var(--check-bg));\n    border: 1px solid var(--theme-bg, var(--check-border-color));\n    border-radius: 0.3em;\n  }\n  .check :where(input:checked, input:indeterminate) {\n    background-color: var(--theme-bg, var(--check-checked-bg));\n    border-color: var(--theme-bg, var(--check-checked-border-color));\n  }\n  .check :where(input:focus-visible) {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .check:has(input:checked) .checked, .check:has(input:indeterminate) .indeterminate {\n    display: block;\n    color: var(--theme-contrast, var(--primary-contrast));\n    stroke: currentcolor;\n  }\n  .check:has(input:disabled) {\n    --check-bg: var(--check-disabled-bg);\n  }\n  .check:has(input:disabled) ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .check:has(input:disabled:checked) {\n    opacity: var(--check-disabled-opacity);\n  }\n  .check :where(svg) {\n    pointer-events: none;\n  }\n  .check :where(svg path) {\n    display: none;\n  }\n  .check-sm {\n    --check-size: 1rem;\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: 0;\n  }\n}\n@layer forms {\n  .radiogroup {\n    display: flex;\n    gap: var(--gap, 0.5rem);\n    align-items: var(--align-items, start);\n  }\n  .radiogroup .description {\n    color: var(--fg-3);\n  }\n  .radio {\n    --radio-size: 1.25rem;\n    --radio-margin-block: 0.125rem;\n    --radio-bg: transparent;\n    --radio-border-color: var(--border-color);\n    --radio-checked-bg: var(--control-checked-bg);\n    --radio-checked-border-color: var(--control-checked-border-color);\n    --radio-disabled-bg: var(--control-disabled-bg);\n    --radio-disabled-opacity: var(--control-disabled-opacity);\n    position: relative;\n    flex-shrink: 0;\n    width: var(--radio-size);\n    height: var(--radio-size);\n    margin-block: var(--radio-margin-block);\n    appearance: none;\n    background-color: var(--theme-bg, var(--radio-bg));\n    border: 1px solid var(--theme-bg, var(--radio-border-color));\n    border-radius: 50%;\n  }\n  .radio:checked {\n    color: var(--theme-contrast, var(--primary-contrast));\n    background-color: var(--theme-bg, var(--radio-checked-bg));\n    border-color: var(--theme-bg, var(--radio-checked-border-color));\n  }\n  .radio:checked::before {\n    position: absolute;\n    inset: 0.25rem;\n    content: \"\";\n    background-color: currentcolor;\n    border-radius: 50%;\n  }\n  .radio:disabled {\n    --radio-bg: var(--radio-disabled-bg);\n  }\n  .radio:disabled ~ label {\n    color: var(--secondary-text);\n    cursor: default;\n  }\n  .radio:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .radio-sm {\n    --radio-size: 1rem;\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: 0;\n  }\n}\n@layer forms {\n  .switch {\n    --switch-height: 1.25rem;\n    --switch-width: calc(var(--switch-height) * 1.5);\n    --switch-padding: 0.0625rem;\n    --switch-margin-block: 0.125rem;\n    --switch-bg: var(--bg-3);\n    --switch-border-width: var(--border-width);\n    --switch-border-color: var(--border-color);\n    --switch-indicator-bg: var(--white);\n    --switch-checked-bg: var(--control-checked-bg);\n    --switch-checked-border-color: var(--switch-checked-bg);\n    --switch-checked-indicator-bg: var(--white);\n    --switch-disabled-bg: var(--control-disabled-bg);\n    --switch-disabled-indicator-bg: var(--fg-3);\n    position: relative;\n    display: flex;\n    flex-shrink: 0;\n    align-items: stretch;\n    justify-content: flex-start;\n    width: var(--switch-width);\n    height: var(--switch-height);\n    padding: var(--switch-padding);\n    margin-block: var(--switch-margin-block);\n    background-color: var(--switch-bg);\n    border: var(--switch-border-width) solid var(--switch-border-color);\n    border-radius: 10rem;\n    box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.05);\n    transition: 0.15s ease-in-out;\n    transition-property: padding-inline-start, background-color;\n  }\n  .switch::before {\n    flex-shrink: 0;\n    width: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\n    height: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\n    content: \"\";\n    background-color: var(--theme-contrast, var(--switch-indicator-bg));\n    border-radius: 50%;\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n  }\n  .switch input {\n    position: absolute;\n    inset: 0;\n    appearance: none;\n    background-color: transparent;\n    outline: 0;\n  }\n  .switch:focus-within {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .switch:has(input:checked) {\n    padding-inline-start: calc(var(--switch-height) / 2 + var(--switch-padding));\n    background-color: var(--theme-bg, var(--switch-checked-bg));\n    border-color: var(--theme-bg, var(--switch-checked-border-color));\n  }\n  .switch:has(input:disabled) {\n    --switch-bg: var(--switch-disabled-bg);\n    --switch-indicator-bg: var(--switch-disabled-indicator-bg);\n  }\n  .switch:has(input:disabled)::before {\n    opacity: 0.4;\n  }\n  .switch:has(input:disabled) ~ label {\n    color: var(--secondary-text);\n    cursor: default;\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: 0;\n  }\n}\n@layer forms {\n  .form-range {\n    --range-track-width: 100%;\n    --range-track-height: 0.5rem;\n    --range-track-cursor: pointer;\n    --range-track-bg: var(--bg-3);\n    --range-track-border-radius: 1rem;\n    --range-track-box-shadow: var(--box-shadow-inset);\n    --range-thumb-width: 1rem;\n    --range-thumb-height: var(--range-thumb-width);\n    --range-thumb-bg: var(--primary-base);\n    --range-thumb-border: 0;\n    --range-thumb-border-radius: 1rem;\n    --range-thumb-box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1);\n    --range-thumb-active-bg: color-mix(in oklch, var(--primary-base) 70%, var(--bg-body));\n    --range-thumb-disabled-bg: var(--fg-3);\n    --range-thumb-transition-property: background-color, border-color, box-shadow;\n    --range-thumb-transition-timing: 0.15s ease-in-out;\n    --range-thumb-transition: var(--range-thumb-transition-property) var(--range-thumb-transition-timing);\n    width: 100%;\n    height: calc(var(--range-thumb-height) + var(--focus-ring-width) * 2);\n    padding: 0;\n    appearance: none;\n    background-color: transparent;\n  }\n  .form-range:focus {\n    outline: 0;\n  }\n  .form-range:focus::-webkit-slider-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .form-range:focus::-moz-range-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .form-range::-moz-focus-outer {\n    border: 0;\n  }\n  .form-range::-webkit-slider-thumb {\n    width: var(--range-thumb-width);\n    height: var(--range-thumb-height);\n    appearance: none;\n    background-color: var(--range-thumb-bg);\n    border: var(--range-thumb-border);\n    border-radius: var(--range-thumb-border-radius);\n    box-shadow: var(--range-thumb-box-shadow);\n    transition: var(--range-thumb-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-range::-webkit-slider-thumb {\n      transition: none;\n    }\n  }\n  .form-range::-webkit-slider-thumb:active {\n    background-color: var(--range-thumb-active-bg);\n  }\n  .form-range::-webkit-slider-thumb {\n    margin-top: calc((var(--range-track-height) - var(--range-thumb-height)) * 0.5);\n  }\n  .form-range::-moz-range-thumb {\n    width: var(--range-thumb-width);\n    height: var(--range-thumb-height);\n    appearance: none;\n    background-color: var(--range-thumb-bg);\n    border: var(--range-thumb-border);\n    border-radius: var(--range-thumb-border-radius);\n    box-shadow: var(--range-thumb-box-shadow);\n    transition: var(--range-thumb-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-range::-moz-range-thumb {\n      transition: none;\n    }\n  }\n  .form-range::-moz-range-thumb:active {\n    background-color: var(--range-thumb-active-bg);\n  }\n  .form-range::-webkit-slider-runnable-track {\n    width: var(--range-track-width);\n    height: var(--range-track-height);\n    color: transparent;\n    cursor: var(--range-track-cursor);\n    background-color: var(--range-track-bg);\n    border-color: transparent;\n    border-radius: var(--range-track-border-radius);\n    box-shadow: var(--range-track-box-shadow);\n  }\n  .form-range::-moz-range-track {\n    width: var(--range-track-width);\n    height: var(--range-track-height);\n    color: transparent;\n    cursor: var(--range-track-cursor);\n    background-color: var(--range-track-bg);\n    border-color: transparent;\n    border-radius: var(--range-track-border-radius);\n    box-shadow: var(--range-track-box-shadow);\n  }\n  .form-range:disabled {\n    pointer-events: none;\n  }\n  .form-range:disabled::-webkit-slider-thumb {\n    background-color: var(--range-thumb-disabled-bg);\n  }\n  .form-range:disabled::-moz-range-thumb {\n    background-color: var(--range-thumb-disabled-bg);\n  }\n}\n@layer forms {\n  .form-floating {\n    --form-floating-height: calc(3.5rem + var(--border-width) * 2);\n    --form-floating-line-height: 1.25;\n    --form-floating-padding-x: var(--btn-input-padding-x);\n    --form-floating-padding-y: 1rem;\n    --form-floating-input-padding-t: 1.625rem;\n    --form-floating-input-padding-b: 0.625rem;\n    --form-floating-label-height: 1.5em;\n    --form-floating-label-opacity: 0.65;\n    --form-floating-label-transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n    --form-floating-label-disabled-color: var(--fg-3);\n    --form-floating-transition-property: opacity, transform;\n    --form-floating-transition-timing: 0.1s ease-in-out;\n    --form-floating-transition: var(--form-floating-transition-property) var(--form-floating-transition-timing);\n    position: relative;\n  }\n  .form-floating > label {\n    position: absolute;\n    inset-block-start: 0;\n    inset-inline-start: 0;\n    z-index: 2;\n    display: flex;\n    align-items: center;\n    max-width: 100%;\n    height: 100%;\n    padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n    overflow: hidden;\n    color: color-mix(in oklch, var(--fg-body) var(--form-floating-label-opacity), transparent);\n    text-align: start;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    pointer-events: none;\n    border: var(--input-btn-border-width) solid transparent;\n    transform-origin: 0 0;\n    transition: var(--form-floating-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-floating > label {\n      transition: none;\n    }\n  }\n  .form-floating > .form-control,\n  .form-floating > .form-control-plaintext {\n    height: var(--form-floating-height);\n    min-height: var(--form-floating-height);\n    padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n    line-height: var(--form-floating-line-height);\n  }\n  .form-floating > .form-control::placeholder,\n  .form-floating > .form-control-plaintext::placeholder {\n    color: transparent;\n  }\n  .form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),\n  .form-floating > .form-control-plaintext:focus,\n  .form-floating > .form-control-plaintext:not(:placeholder-shown) {\n    padding-top: var(--form-floating-input-padding-t);\n    padding-bottom: var(--form-floating-input-padding-b);\n  }\n  .form-floating > .form-control:-webkit-autofill,\n  .form-floating > .form-control-plaintext:-webkit-autofill {\n    padding-top: var(--form-floating-input-padding-t);\n    padding-bottom: var(--form-floating-input-padding-b);\n  }\n  .form-floating > .form-control:focus ~ label,\n  .form-floating > .form-control:not(:placeholder-shown) ~ label,\n  .form-floating > .form-control-plaintext ~ label {\n    transform: var(--form-floating-label-transform);\n  }\n  .form-floating > .form-control:-webkit-autofill ~ label {\n    transform: var(--form-floating-label-transform);\n  }\n  .form-floating > textarea:focus ~ label::after,\n  .form-floating > textarea:not(:placeholder-shown) ~ label::after {\n    position: absolute;\n    inset: var(--form-floating-padding-y) calc(var(--form-floating-padding-x) * 0.5);\n    z-index: -1;\n    height: var(--form-floating-label-height);\n    content: \"\";\n    background-color: var(--control-bg);\n    border-radius: var(--btn-input-border-radius);\n  }\n  .form-floating > textarea:disabled ~ label::after {\n    background-color: var(--control-disabled-bg);\n  }\n  .form-floating > .form-control-plaintext ~ label {\n    border-width: var(--control-border-width) 0;\n  }\n  .form-floating > :disabled ~ label,\n  .form-floating > .form-control:disabled ~ label {\n    color: var(--form-floating-label-disabled-color);\n  }\n}\n@layer components {\n  .input-group {\n    --input-group-addon-padding-y: var(--btn-input-padding-y);\n    --input-group-addon-padding-x: var(--btn-input-padding-x);\n    --input-group-addon-font-size: var(--btn-input-font-size);\n    --input-group-addon-line-height: var(--btn-input-line-height);\n    --input-group-addon-color: var(--fg-body);\n    --input-group-addon-bg: var(--bg-2);\n    --input-group-addon-border-color: var(--border-color);\n    position: relative;\n    display: flex;\n    flex-wrap: wrap;\n    align-items: stretch;\n    width: 100%;\n  }\n  .input-group > .form-control,\n  .input-group > .form-floating {\n    position: relative;\n    flex: 1 1 auto;\n    width: 1%;\n    min-width: 0;\n  }\n  .input-group > .form-control:focus,\n  .input-group > .form-floating:focus-within {\n    z-index: 5;\n  }\n  .input-group > .input-group-btn {\n    position: relative;\n    z-index: 2;\n  }\n  .input-group > .input-group-btn:focus {\n    z-index: 5;\n  }\n  .input-group-text {\n    display: flex;\n    align-items: center;\n    padding: var(--input-group-addon-padding-y) var(--input-group-addon-padding-x);\n    font-size: var(--input-group-addon-font-size);\n    line-height: var(--input-group-addon-line-height);\n    color: var(--input-group-addon-color);\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--input-group-addon-bg);\n    border: var(--border-width) solid var(--input-group-addon-border-color);\n    border-radius: var(--btn-input-border-radius);\n  }\n  .input-group-sm > .form-control,\n  .input-group-sm > .input-group-text,\n  .input-group-sm > .btn {\n    min-height: var(--btn-input-sm-min-height);\n    padding: var(--btn-input-sm-padding-y) var(--btn-input-sm-padding-x);\n    font-size: var(--btn-input-sm-font-size);\n    border-radius: var(--btn-input-sm-border-radius);\n  }\n  .input-group-lg > .form-control,\n  .input-group-lg > .input-group-text,\n  .input-group-lg > .btn {\n    min-height: var(--btn-input-lg-min-height);\n    padding: var(--btn-input-lg-padding-y) var(--btn-input-lg-padding-x);\n    font-size: var(--btn-input-lg-font-size);\n    border-radius: var(--btn-input-lg-border-radius);\n  }\n  .input-group:not(.has-validation) > :not(:last-child):not(.menu-toggle-split):not(.menu):not(.form-floating),\n  .input-group:not(.has-validation) > .menu-toggle-split:nth-last-child(n+3),\n  .input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control,\n  .input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .input-group.has-validation > :nth-last-child(n+3):not(.menu-toggle-split):not(.menu):not(.form-floating),\n  .input-group.has-validation > .menu-toggle-split:nth-last-child(n+4),\n  .input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control,\n  .input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .input-group > :not(:first-child):not(.menu) {\n    margin-inline-start: calc(-1 * var(--border-width));\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .input-group > .form-floating:not(:first-child) > .form-control,\n  .input-group > .form-floating:not(:first-child) > .form-select {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n}\n@layer forms {\n  .strength {\n    --strength-height: 0.375rem;\n    --strength-gap: 0.25rem;\n    --strength-margin-top: 0.25rem;\n    --strength-border-radius: var(--border-radius-pill);\n    --strength-bg: var(--bg-2);\n    --strength-color: var(--bg-2);\n    --strength-weak-color: var(--danger-bg);\n    --strength-fair-color: var(--warning-bg);\n    --strength-good-color: var(--info-bg);\n    --strength-strong-color: var(--success-bg);\n    display: flex;\n    gap: var(--strength-gap);\n    width: 100%;\n    margin-top: var(--strength-margin-top);\n  }\n  .strength-segment {\n    flex: 1;\n    height: var(--strength-height);\n    background-color: var(--strength-bg);\n    border-radius: var(--strength-border-radius);\n    transition: background-color 0.2s ease-in-out, width 0.3s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-segment {\n      transition: none;\n    }\n  }\n  .strength-segment.active {\n    background-color: var(--strength-color);\n  }\n  .strength[data-bs-strength=weak] {\n    --strength-color: var(--strength-weak-color);\n  }\n  .strength[data-bs-strength=fair] {\n    --strength-color: var(--strength-fair-color);\n  }\n  .strength[data-bs-strength=good] {\n    --strength-color: var(--strength-good-color);\n  }\n  .strength[data-bs-strength=strong] {\n    --strength-color: var(--strength-strong-color);\n  }\n  .strength-text {\n    display: block;\n    margin-top: var(--strength-margin-top);\n    font-size: var(--font-size-xs);\n    color: var(--strength-color, var(--fg-3));\n    transition: color 0.2s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-text {\n      transition: none;\n    }\n  }\n  .strength-text:empty {\n    display: none;\n  }\n  .strength-bar {\n    --strength-height: 0.375rem;\n    --strength-gap: 0.25rem;\n    --strength-margin-top: 0.25rem;\n    --strength-border-radius: var(--border-radius-pill);\n    --strength-bg: var(--bg-2);\n    --strength-color: var(--bg-2);\n    --strength-weak-color: var(--danger-bg);\n    --strength-fair-color: var(--warning-bg);\n    --strength-good-color: var(--info-bg);\n    --strength-strong-color: var(--success-bg);\n    --strength-color: transparent;\n    --strength-width: 0%;\n    width: 100%;\n    height: var(--strength-height);\n    margin-top: var(--strength-margin-top);\n    overflow: hidden;\n    background-color: var(--strength-bg);\n    border-radius: var(--strength-border-radius);\n  }\n  .strength-bar::after {\n    display: block;\n    width: var(--strength-width);\n    height: 100%;\n    content: \"\";\n    background-color: var(--strength-color);\n    border-radius: var(--strength-border-radius);\n    transition: background-color 0.2s ease-in-out, width 0.3s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-bar::after {\n      transition: none;\n    }\n  }\n  .strength-bar[data-bs-strength=weak] {\n    --strength-color: var(--strength-weak-color);\n    --strength-width: 25%;\n  }\n  .strength-bar[data-bs-strength=fair] {\n    --strength-color: var(--strength-fair-color);\n    --strength-width: 50%;\n  }\n  .strength-bar[data-bs-strength=good] {\n    --strength-color: var(--strength-good-color);\n    --strength-width: 75%;\n  }\n  .strength-bar[data-bs-strength=strong] {\n    --strength-color: var(--strength-strong-color);\n    --strength-width: 100%;\n  }\n}\n@layer components {\n  .otp {\n    --otp-size: var(--btn-input-lg-min-height);\n    --otp-font-size: var(--btn-input-font-size);\n    --otp-gap: 0.5rem;\n    display: inline-flex;\n    gap: var(--otp-gap);\n  }\n  .otp .form-control {\n    width: var(--otp-size);\n    min-height: var(--otp-size);\n    padding: 0;\n    font-size: var(--otp-font-size);\n    font-weight: 500;\n    line-height: 1;\n    text-align: center;\n    border-radius: var(--otp-border-radius, var(--btn-input-border-radius));\n  }\n  .otp .form-control::-webkit-outer-spin-button, .otp .form-control::-webkit-inner-spin-button {\n    margin: 0;\n    appearance: none;\n  }\n  .otp .form-control[type=number] {\n    appearance: textfield;\n  }\n  .otp .form-control:focus, .otp .form-control:focus-visible {\n    z-index: 1;\n  }\n  .otp.is-valid .form-control, .was-validated .otp:valid .form-control {\n    border-color: var(--form-valid-border-color);\n  }\n  .otp.is-valid .form-control:focus, .was-validated .otp:valid .form-control:focus {\n    --focus-ring-color: rgba(var(--success-rgb), .25);\n    border-color: var(--form-valid-border-color);\n  }\n  .otp.is-invalid .form-control, .was-validated .otp:invalid .form-control {\n    border-color: var(--form-invalid-border-color);\n  }\n  .otp.is-invalid .form-control:focus, .was-validated .otp:invalid .form-control:focus {\n    --focus-ring-color: rgba(var(--danger-rgb), .25);\n    border-color: var(--form-invalid-border-color);\n  }\n  .otp.input-group {\n    gap: 0;\n    width: auto;\n  }\n  .otp.input-group .form-control {\n    flex: 0 0 auto;\n  }\n  .otp-separator {\n    display: flex;\n    align-items: center;\n    padding-inline: var(--otp-gap);\n    font-size: var(--otp-font-size);\n    color: var(--fg-4);\n    user-select: none;\n  }\n  .otp-sm {\n    --otp-size: var(--btn-input-sm-min-height);\n    --otp-font-size: var(--btn-input-sm-font-size);\n    --otp-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .otp-lg {\n    --otp-size: var(--btn-input-lg-min-height);\n    --otp-font-size: var(--btn-input-lg-font-size);\n    --otp-border-radius: var(--btn-input-lg-border-radius);\n  }\n}\n@layer forms {\n  .form-adorn {\n    --form-adorn-gap: 0.375rem;\n    --form-adorn-icon-size: 1rem;\n    --form-adorn-icon-color: var(--fg-2);\n    gap: var(--form-adorn-gap);\n    align-items: center;\n  }\n  .form-adorn:focus-visible {\n    outline: 0;\n  }\n  .form-adorn:focus-within {\n    --focus-ring-offset: -1px;\n    border-color: var(--focus-ring-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-adorn > .form-ghost {\n    flex: 1;\n    min-width: 0;\n  }\n  .form-adorn.form-adorn-end > .form-ghost {\n    order: -1;\n  }\n  .form-adorn-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n  }\n  .form-adorn-icon > svg {\n    width: var(--form-adorn-icon-size);\n    height: var(--form-adorn-icon-size);\n  }\n  .form-adorn-text {\n    flex-shrink: 0;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n    user-select: none;\n  }\n}\n@layer forms {\n  .chip-input {\n    --chip-input-padding-y: 0.75rem;\n    --chip-input-padding-x: 0.75rem;\n    --chip-input-gap: 0.375rem;\n    --chip-input-ghost-min-width: 5rem;\n    --control-fg: var(--btn-input-fg);\n    --control-bg: var(--btn-input-bg);\n    --control-border-width: var(--border-width);\n    --control-border-color: var(--border-color);\n    --control-border-radius: var(--border-radius);\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--chip-input-gap);\n    align-items: center;\n    padding: var(--chip-input-padding-y) var(--chip-input-padding-x);\n    color: var(--control-fg);\n    background-color: var(--control-bg);\n    border: var(--control-border-width) solid var(--control-border-color);\n    border-radius: var(--control-border-radius);\n  }\n  .chip-input:focus-within {\n    --focus-ring-offset: -1px;\n    border-color: var(--focus-ring-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .chip-input > .form-ghost {\n    flex: 1 1 0;\n    min-width: var(--chip-input-ghost-min-width);\n    min-height: 1.75rem;\n  }\n  .chip-input.disabled, .chip-input:has(.form-ghost:disabled) {\n    background-color: var(--bg-2);\n    opacity: 1;\n  }\n  .chip-input.disabled > .chip, .chip-input:has(.form-ghost:disabled) > .chip {\n    opacity: var(--control-disabled-opacity);\n  }\n  .chip-input.disabled > .chip .chip-dismiss, .chip-input:has(.form-ghost:disabled) > .chip .chip-dismiss {\n    pointer-events: none;\n  }\n  .chip-input.disabled > .form-ghost, .chip-input:has(.form-ghost:disabled) > .form-ghost {\n    cursor: not-allowed;\n  }\n}\n@layer components {\n  .combobox-toggle {\n    display: inline-flex;\n    gap: 0.5rem;\n    align-items: center;\n    justify-content: space-between;\n    width: 100%;\n    padding-inline-end: var(--control-padding-x);\n    text-align: start;\n    cursor: pointer;\n  }\n  .combobox-toggle.show {\n    background-color: var(--bg-1);\n  }\n  .combobox-toggle:disabled, .combobox-toggle.disabled {\n    cursor: not-allowed;\n    opacity: 0.65;\n  }\n  .combobox-value {\n    display: flex;\n    flex: 1;\n    gap: 0.5rem;\n    align-items: center;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .combobox-placeholder {\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n  .combobox-caret {\n    flex-shrink: 0;\n    transition: transform 0.2s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .combobox-caret {\n      transition: none;\n    }\n  }\n  .show > .combobox-caret {\n    transform: rotate(180deg);\n  }\n  .combobox-toggle + .menu {\n    --menu-max-height: 300px;\n    --menu-overflow-y: auto;\n  }\n  .combobox-search {\n    position: sticky;\n    top: 0;\n    z-index: 1;\n    padding: var(--menu-padding-x, 0.25rem);\n    background-color: var(--menu-bg, var(--bg-body));\n  }\n  .combobox-search-input {\n    width: 100%;\n  }\n  .combobox-no-results {\n    padding: 1rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-3);\n    text-align: center;\n  }\n}\n@layer components {\n  .tooltip {\n    --tooltip-zindex: 1080;\n    --tooltip-max-width: 200px;\n    --tooltip-padding-x: 0.75rem;\n    --tooltip-padding-y: 0.375rem;\n    --tooltip-font-size: var(--font-size-sm);\n    --tooltip-color: var(--bg-body);\n    --tooltip-bg: var(--fg-body);\n    --tooltip-border-radius: var(--border-radius);\n    --tooltip-opacity: 0.95;\n    --tooltip-arrow-width: 0.8rem;\n    --tooltip-arrow-height: 0.4rem;\n    z-index: var(--tooltip-zindex);\n    display: block;\n    font-family: var(--body-font-family);\n    font-style: normal;\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    text-align: start;\n    text-decoration: none;\n    text-shadow: none;\n    text-transform: none;\n    letter-spacing: normal;\n    word-break: normal;\n    white-space: normal;\n    word-spacing: normal;\n    line-break: auto;\n    font-size: var(--tooltip-font-size);\n    word-wrap: break-word;\n    opacity: 0;\n  }\n  .tooltip.show {\n    opacity: var(--tooltip-opacity);\n  }\n  .tooltip .tooltip-arrow {\n    display: block;\n    width: var(--tooltip-arrow-width);\n    height: var(--tooltip-arrow-height);\n  }\n  .tooltip .tooltip-arrow::before {\n    position: absolute;\n    content: \"\";\n    border-color: transparent;\n    border-style: solid;\n  }\n  .bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow {\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n  }\n  .bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow::before {\n    top: -1px;\n    border-width: var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * 0.5) 0;\n    border-block-start-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow {\n    left: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n  }\n  .bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow::before {\n    right: -1px;\n    border-width: calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * 0.5) 0;\n    border-inline-end-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow {\n    top: calc(-1 * var(--tooltip-arrow-height));\n  }\n  .bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow::before {\n    bottom: -1px;\n    border-width: 0 calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height);\n    border-block-end-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow {\n    right: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n  }\n  .bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow::before {\n    left: -1px;\n    border-width: calc(var(--tooltip-arrow-width) * 0.5) 0 calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height);\n    border-inline-start-color: var(--tooltip-bg);\n  }\n  .tooltip-inner {\n    max-width: var(--tooltip-max-width);\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    color: var(--tooltip-color);\n    text-align: center;\n    background-color: var(--tooltip-bg);\n    border-radius: var(--tooltip-border-radius);\n  }\n}\n@layer components {\n  .valid-feedback {\n    display: none;\n    width: 100%;\n    margin-top: 0.5rem;\n    font-size: var(--font-size-xs);\n    color: var(--form-valid-color);\n  }\n  .valid-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    margin-top: 0.1rem;\n    font-size: var(--tooltip-font-size);\n    color: var(--success-contrast);\n    background-color: var(--success-bg);\n    border-radius: var(--tooltip-border-radius);\n  }\n  .was-validated :valid ~ .valid-feedback,\n  .was-validated :valid ~ .valid-tooltip,\n  .is-valid ~ .valid-feedback,\n  .is-valid ~ .valid-tooltip {\n    display: block;\n  }\n  .was-validated .form-control:valid, .form-control.is-valid {\n    border-color: var(--success-border);\n    padding-inline-end: calc(var(--control-padding-x) * 3.5);\n    background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2300a748' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1'/%3e%3c/svg%3e\");\n    background-repeat: no-repeat;\n    background-position: right var(--control-padding-x) center;\n    background-size: 1rem;\n  }\n  .was-validated .form-control:valid:focus-visible, .form-control.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--success-border);\n  }\n  .was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n    background-position: right var(--control-padding-x) top var(--control-padding-x);\n  }\n  .was-validated .form-check-input:valid, .form-check-input.is-valid {\n    border-color: var(--success-border);\n  }\n  .was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {\n    background-color: var(--form-valid-color);\n  }\n  .was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n    color: var(--form-valid-color);\n  }\n  .form-check-inline .form-check-input ~ .valid-feedback {\n    margin-inline-start: 0.5em;\n  }\n  .was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid,\n  .was-validated .input-group > .form-select:not(:focus):valid,\n  .input-group > .form-select:not(:focus).is-valid,\n  .was-validated .input-group > .form-floating:not(:focus-within):valid,\n  .input-group > .form-floating:not(:focus-within).is-valid {\n    z-index: 3;\n  }\n  .invalid-feedback {\n    display: none;\n    width: 100%;\n    margin-top: 0.5rem;\n    font-size: var(--font-size-xs);\n    color: var(--form-invalid-color);\n  }\n  .invalid-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    margin-top: 0.1rem;\n    font-size: var(--tooltip-font-size);\n    color: var(--danger-contrast);\n    background-color: var(--danger-bg);\n    border-radius: var(--tooltip-border-radius);\n  }\n  .was-validated :invalid ~ .invalid-feedback,\n  .was-validated :invalid ~ .invalid-tooltip,\n  .is-invalid ~ .invalid-feedback,\n  .is-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  .was-validated .form-control:invalid, .form-control.is-invalid {\n    border-color: var(--danger-border);\n    padding-inline-end: calc(var(--control-padding-x) * 3.5);\n    background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dd0d37'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dd0d37' stroke='none'/%3e%3c/svg%3e\");\n    background-repeat: no-repeat;\n    background-position: right var(--control-padding-x) center;\n    background-size: 1rem;\n  }\n  .was-validated .form-control:invalid:focus-visible, .form-control.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--danger-border);\n  }\n  .was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n    background-position: right var(--control-padding-x) top var(--control-padding-x);\n  }\n  .was-validated .form-check-input:invalid, .form-check-input.is-invalid {\n    border-color: var(--danger-border);\n  }\n  .was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {\n    background-color: var(--form-invalid-color);\n  }\n  .was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n    color: var(--form-invalid-color);\n  }\n  .form-check-inline .form-check-input ~ .invalid-feedback {\n    margin-inline-start: 0.5em;\n  }\n  .was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid,\n  .was-validated .input-group > .form-select:not(:focus):invalid,\n  .input-group > .form-select:not(:focus).is-invalid,\n  .was-validated .input-group > .form-floating:not(:focus-within):invalid,\n  .input-group > .form-floating:not(:focus-within).is-invalid {\n    z-index: 4;\n  }\n}\n@layer components {\n  .btn, .btn-link, .btn-icon, .btn-solid, .btn-outline, .btn-subtle, .btn-text {\n    --btn-min-height: var(--btn-input-min-height);\n    --btn-padding-x: var(--btn-input-padding-x);\n    --btn-padding-y: var(--btn-input-padding-y);\n    --btn-font-size: var(--btn-input-font-size);\n    --btn-font-weight: var(--btn-input-font-weight);\n    --btn-line-height: var(--btn-input-line-height);\n    --btn-color: var(--fg-body);\n    --btn-white-space: nowrap;\n    --btn-border-width: var(--border-width);\n    --btn-border-color: transparent;\n    --btn-border-radius: var(--border-radius);\n    --btn-hover-border-color: transparent;\n    --btn-disabled-opacity: 0.65;\n    --btn-transition-timing: 0.15s ease-in-out;\n    --btn-transition-property: color, background-color, border-color, box-shadow;\n    --btn-transition: var(--btn-transition-property) var(--btn-transition-timing);\n    display: inline-flex;\n    gap: var(--btn-gap, 0.25rem);\n    align-items: center;\n    justify-content: center;\n    min-height: var(--btn-min-height);\n    padding: var(--btn-padding-y) var(--btn-padding-x);\n    font-size: var(--btn-font-size);\n    font-weight: var(--btn-font-weight);\n    line-height: var(--btn-line-height);\n    color: var(--btn-color);\n    text-decoration: none;\n    white-space: var(--btn-white-space);\n    vertical-align: middle;\n    cursor: pointer;\n    user-select: none;\n    background-color: var(--btn-bg, var(--bg-2));\n    border: var(--btn-border-width) solid var(--btn-border-color);\n    border-radius: var(--btn-border-radius);\n    transition: var(--btn-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .btn, .btn-link, .btn-icon, .btn-solid, .btn-outline, .btn-subtle, .btn-text {\n      transition: none;\n    }\n  }\n  .btn:hover, .btn-link:hover, .btn-icon:hover, .btn-solid:hover, .btn-outline:hover, .btn-subtle:hover, .btn-text:hover {\n    color: var(--btn-hover-color);\n    background-color: var(--btn-hover-bg, var(--bg-3));\n    border-color: var(--btn-hover-border-color);\n  }\n  .btn:focus-visible, .btn-link:focus-visible, .btn-icon:focus-visible, .btn-solid:focus-visible, .btn-outline:focus-visible, .btn-subtle:focus-visible, .btn-text:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .btn.active, .btn.show, .btn-link.active, .btn-link.show, .btn-icon.active, .btn-icon.show, .btn-solid.active, .btn-solid.show, .btn-outline.active, .btn-outline.show, .btn-subtle.active, .btn-subtle.show, .btn-text.active, .btn-text.show {\n    color: var(--btn-active-color);\n    background-color: var(--btn-active-bg, var(--bg-3));\n    border-color: var(--btn-active-border-color);\n  }\n  .btn.active:focus-visible, .btn.show:focus-visible, .btn-link.active:focus-visible, .btn-link.show:focus-visible, .btn-icon.active:focus-visible, .btn-icon.show:focus-visible, .btn-solid.active:focus-visible, .btn-solid.show:focus-visible, .btn-outline.active:focus-visible, .btn-outline.show:focus-visible, .btn-subtle.active:focus-visible, .btn-subtle.show:focus-visible, .btn-text.active:focus-visible, .btn-text.show:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .btn:disabled, .btn.disabled, fieldset:disabled .btn, .btn-link:disabled, .btn-link.disabled, fieldset:disabled .btn-link, .btn-icon:disabled, .btn-icon.disabled, fieldset:disabled .btn-icon, .btn-solid:disabled, .btn-solid.disabled, fieldset:disabled .btn-solid, .btn-outline:disabled, .btn-outline.disabled, fieldset:disabled .btn-outline, .btn-subtle:disabled, .btn-subtle.disabled, fieldset:disabled .btn-subtle, .btn-text:disabled, .btn-text.disabled, fieldset:disabled .btn-text {\n    color: var(--btn-disabled-color);\n    pointer-events: none;\n    background-color: var(--btn-disabled-bg, var(--bg-1));\n    border-color: var(--btn-disabled-border-color);\n    opacity: var(--btn-disabled-opacity);\n  }\n  .btn-solid {\n    --btn-bg: var(--theme-bg);\n    --btn-color: var(--theme-contrast);\n    --btn-border-color: var(--theme-bg);\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: var(--theme-bg);\n    --btn-disabled-color: var(--theme-contrast);\n    --btn-disabled-border-color: var(--theme-bg);\n  }\n  .btn-solid:hover {\n    --btn-hover-bg: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-border-color: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-color: oklch(from var(--theme-contrast) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-solid:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-solid:active, .btn-solid.active, .btn-solid.btn-check:has(input:checked) {\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-solid:disabled, .btn-solid.disabled, .btn-solid.btn-check:has(input:disabled) {\n    --btn-disabled-bg: var(--theme-bg);\n    --btn-disabled-color: var(--theme-contrast);\n    --btn-disabled-border-color: var(--theme-bg);\n  }\n  .btn-outline {\n    --btn-bg: transparent;\n    --btn-color: var(--theme-text);\n    --btn-border-color: var(--theme-border);\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-border-color: var(--theme-border);\n  }\n  .btn-outline:hover {\n    --btn-hover-bg: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-color: oklch(from var(--theme-contrast) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-border-color: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-outline:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-outline:active, .btn-outline.active, .btn-outline.btn-check:has(input:checked) {\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-outline:disabled, .btn-outline.disabled, .btn-outline.btn-check:has(input:disabled) {\n    --btn-disabled-bg: transparent;\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-border-color: var(--theme-border);\n  }\n  .btn-subtle {\n    --btn-bg: var(--theme-bg-subtle);\n    --btn-color: var(--theme-text);\n    --btn-border-color: transparent;\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-active-color: oklch(from var(--theme-text-emphasis) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-subtle:hover {\n    --btn-hover-bg: color-mix(in oklch, var(--theme-bg-muted) 50%, var(--theme-bg-subtle));\n    --btn-hover-color: oklch(from var(--theme-text-emphasis) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-subtle:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-subtle:active, .btn-subtle.active, .btn-subtle.btn-check:has(input:checked) {\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-active-color: oklch(from var(--theme-text-emphasis) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-subtle:disabled, .btn-subtle.disabled, .btn-subtle.btn-check:has(input:disabled) {\n    --btn-disabled-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text {\n    --btn-color: var(--theme-text);\n    --btn-bg: transparent;\n    --btn-border-color: transparent;\n    --btn-active-color: oklch(from var(--theme-text) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text:hover {\n    --btn-hover-color: oklch(from var(--theme-text) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-bg: var(--theme-bg-subtle);\n  }\n  .btn-text:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-text:active, .btn-text.active, .btn-text.btn-check:has(input:checked) {\n    --btn-active-color: oklch(from var(--theme-text) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-bg: var(--theme-bg-subtle);\n  }\n  .btn-text:disabled, .btn-text.disabled, .btn-text.btn-check:has(input:disabled) {\n    --btn-disabled-color: var(--theme-text);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-link {\n    --btn-font-weight: var(--font-weight-normal);\n    --btn-color: var(--link-color);\n    --btn-bg: transparent;\n    --btn-border-color: transparent;\n    --btn-hover-color: var(--link-hover-color);\n    --btn-hover-bg: transparent;\n    --btn-hover-border-color: transparent;\n    --btn-active-color: var(--link-hover-color);\n    --btn-active-bg: transparent;\n    --btn-active-border-color: transparent;\n    --btn-disabled-color: var(--fg-3);\n    --btn-disabled-border-color: transparent;\n    color: var(--theme-text, var(--btn-color));\n    text-decoration: var(--link-decoration);\n  }\n  .btn-link:focus-visible {\n    color: var(--theme-text, var(--btn-color));\n  }\n  .btn-link:hover {\n    color: var(--theme-text-emphasis, var(--btn-hover-color));\n  }\n  .btn-xs,\n  .btn-group-xs > [class*=btn-] {\n    --btn-min-height: var(--btn-input-xs-min-height);\n    --btn-padding-y: var(--btn-input-xs-padding-y);\n    --btn-padding-x: var(--btn-input-xs-padding-x);\n    --btn-font-size: var(--btn-input-xs-font-size);\n    --btn-line-height: var(--btn-input-xs-line-height);\n    --btn-border-radius: var(--btn-input-xs-border-radius);\n  }\n  .btn-sm,\n  .btn-group-sm > [class*=btn-] {\n    --btn-min-height: var(--btn-input-sm-min-height);\n    --btn-padding-y: var(--btn-input-sm-padding-y);\n    --btn-padding-x: var(--btn-input-sm-padding-x);\n    --btn-font-size: var(--btn-input-sm-font-size);\n    --btn-line-height: var(--btn-input-sm-line-height);\n    --btn-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .btn-lg,\n  .btn-group-lg > [class*=btn-] {\n    --btn-min-height: var(--btn-input-lg-min-height);\n    --btn-padding-y: var(--btn-input-lg-padding-y);\n    --btn-padding-x: var(--btn-input-lg-padding-x);\n    --btn-font-size: var(--btn-input-lg-font-size);\n    --btn-line-height: var(--btn-input-lg-line-height);\n    --btn-border-radius: var(--btn-input-lg-border-radius);\n  }\n  .btn-icon {\n    align-items: center;\n    justify-content: center;\n    aspect-ratio: 1;\n    padding: 0;\n  }\n  .btn-check > input {\n    position: absolute;\n    clip: rect(0, 0, 0, 0);\n    pointer-events: none;\n  }\n  .btn-check:has(input:checked) {\n    color: var(--btn-active-color);\n    background-color: var(--btn-active-bg, var(--bg-3));\n    border-color: var(--btn-active-border-color);\n    box-shadow: var(--btn-active-shadow);\n  }\n  .btn-check:has(input:focus-visible) {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .btn-check:has(input:disabled) {\n    color: var(--btn-disabled-color);\n    pointer-events: none;\n    background-color: var(--btn-disabled-bg, var(--bg-1));\n    border-color: var(--btn-disabled-border-color);\n    opacity: var(--btn-disabled-opacity);\n    box-shadow: none;\n  }\n  .btn-styled {\n    --btn-gradient-start: rgba(255, 255, 255, 0.125);\n    --btn-gradient-end: rgba(0, 0, 0, 0.075);\n    --btn-border-mix-color: #000;\n    --btn-border-mix-amount: 10%;\n    --btn-border-hover-mix-amount: 12.5%;\n    --btn-border-active-mix-amount: 20%;\n    --btn-shadow: 0 1px 2px rgb(0 0 0 / 15%), inset 0 1px 0 rgb(255 255 255 / 10%);\n    --btn-active-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n    background-image: linear-gradient(to bottom, var(--btn-gradient-start), var(--btn-gradient-end));\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-mix-amount));\n    box-shadow: var(--btn-shadow);\n  }\n  .btn-styled:hover {\n    background-image: linear-gradient(to bottom, var(--btn-gradient-start), var(--btn-gradient-end));\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-hover-mix-amount));\n  }\n  .btn-styled:active, .btn-styled.active {\n    background-image: none;\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-active-mix-amount));\n    box-shadow: var(--btn-active-shadow);\n  }\n  .btn-styled:disabled, .btn-styled.disabled {\n    background-image: none;\n    box-shadow: none;\n  }\n}\n@layer components {\n  .btn-group,\n  .btn-group-vertical {\n    position: relative;\n    display: inline-flex;\n    vertical-align: middle;\n  }\n  .btn-group > [class*=btn-],\n  .btn-group-vertical > [class*=btn-] {\n    position: relative;\n    flex: 1 1 auto;\n  }\n  .btn-group > [class*=btn-]:hover,\n  .btn-group-vertical > [class*=btn-]:hover {\n    z-index: 1;\n  }\n  .btn-group > .btn-check:has(input:checked),\n  .btn-group > [class*=btn-]:active,\n  .btn-group > [class*=btn-].active,\n  .btn-group-vertical > .btn-check:has(input:checked),\n  .btn-group-vertical > [class*=btn-]:active,\n  .btn-group-vertical > [class*=btn-].active {\n    z-index: 2;\n  }\n  .btn-group > .btn-check:has(input:focus),\n  .btn-group > [class*=btn-]:focus,\n  .btn-group-vertical > .btn-check:has(input:focus),\n  .btn-group-vertical > [class*=btn-]:focus {\n    z-index: 3;\n  }\n  .btn-toolbar {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 0.5rem;\n    justify-content: flex-start;\n  }\n  .btn-toolbar .input-group {\n    width: auto;\n  }\n  .btn-group {\n    border-radius: var(--btn-border-radius);\n  }\n  .btn-group > [class*=btn-]:not(:first-child),\n  .btn-group > .btn-group:not(:first-child) {\n    margin-inline-start: calc(-1 * var(--btn-border-width));\n  }\n  .btn-group > [class*=btn-]:not(:last-child):not(.menu-toggle-split),\n  .btn-group > .btn-group:not(:last-child) > [class*=btn-] {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .btn-group > [class*=btn-]:not(:first-child),\n  .btn-group > .btn-group:not(:first-child) > [class*=btn-] {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .menu-toggle-split {\n    padding-inline: calc(var(--btn-padding-x) * 0.75);\n  }\n  .btn-group-vertical {\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: center;\n  }\n  .btn-group-vertical > [class*=btn-],\n  .btn-group-vertical > .btn-group {\n    width: 100%;\n  }\n  .btn-group-vertical > [class*=btn-]:not(:first-child),\n  .btn-group-vertical > .btn-group:not(:first-child) {\n    margin-top: calc(-1 * var(--btn-border-width));\n  }\n  .btn-group-vertical > [class*=btn-]:not(:last-child):not(.menu-toggle-split),\n  .btn-group-vertical > .btn-group:not(:last-child) > [class*=btn-] {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .btn-group-vertical > [class*=btn-]:not(:first-child),\n  .btn-group-vertical > .btn-group:not(:first-child) > [class*=btn-] {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n}\n@layer components {\n  .btn-close {\n    --btn-close-size: 1.25rem;\n    --btn-close-color: var(--fg-body);\n    --btn-close-opacity: 0.5;\n    --btn-close-hover-opacity: 0.75;\n    --btn-close-focus-opacity: 0.85;\n    --btn-close-disabled-opacity: 0.25;\n    box-sizing: content-box;\n    width: var(--btn-close-size);\n    height: var(--btn-close-size);\n    padding: 0;\n    color: var(--btn-close-color);\n    background: transparent;\n    border: 0;\n    border-radius: var(--border-radius-sm);\n    opacity: var(--btn-close-opacity);\n  }\n  .btn-close > svg {\n    display: block;\n    width: 100%;\n    height: 100%;\n    fill: currentcolor;\n  }\n  .btn-close:hover {\n    color: var(--btn-close-color);\n    text-decoration: none;\n    opacity: var(--btn-close-hover-opacity);\n  }\n  .btn-close:focus-visible {\n    opacity: var(--btn-close-focus-opacity);\n    outline: var(--focus-ring);\n  }\n  .btn-close:disabled, .btn-close.disabled {\n    pointer-events: none;\n    user-select: none;\n    opacity: var(--btn-close-disabled-opacity);\n  }\n}\n@layer components {\n  .accordion {\n    --accordion-padding-x: 1.25rem;\n    --accordion-padding-y: 1rem;\n    --accordion-color: var(--fg-body);\n    --accordion-bg: var(--bg-body);\n    --accordion-transition-property: color, background-color, border-radius;\n    --accordion-transition-timing: .15s ease-in-out;\n    --accordion-transition: var(--accordion-transition-property) var(--accordion-timing);\n    --accordion-border-color: var(--border-color);\n    --accordion-border-width: var(--border-width);\n    --accordion-border-radius: var(--accordion-radius, var(--border-radius-lg));\n    --accordion-btn-color: var(--fg-2);\n    --accordion-btn-bg: var(--bg-body);\n    --accordion-btn-icon-width: 1rem;\n    --accordion-btn-icon-transform: rotate(-180deg);\n    --accordion-btn-icon-transition: transform 0.2s ease-in-out;\n    --accordion-active-color: var(--fg);\n    --accordion-active-bg: var(--bg-2);\n  }\n  .accordion-header {\n    display: flex;\n    align-items: center;\n    width: 100%;\n    padding: var(--accordion-btn-padding-y, var(--accordion-padding-y)) var(--accordion-btn-padding-x, var(--accordion-padding-x));\n    font-size: var(--accordion-font-size, var(--font-size-base));\n    color: var(--accordion-btn-color);\n    text-align: start;\n    list-style: none;\n    cursor: pointer;\n    background-color: var(--accordion-btn-bg);\n    transition: var(--accordion-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-header {\n      transition: none;\n    }\n  }\n  .accordion-header .accordion-icon {\n    flex-shrink: 0;\n    width: var(--accordion-btn-icon-width);\n    height: var(--accordion-btn-icon-width);\n    margin-inline-start: auto;\n    color: currentcolor;\n    transition: var(--accordion-btn-icon-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-header .accordion-icon {\n      transition: none;\n    }\n  }\n  .accordion-header:hover {\n    z-index: 2;\n  }\n  .accordion-header:focus-visible {\n    position: relative;\n    z-index: 3;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    outline-offset: -1px;\n  }\n  .accordion-item {\n    color: var(--accordion-color);\n    background-color: var(--accordion-bg);\n    border: var(--accordion-border-width) solid var(--accordion-border-color);\n  }\n  .accordion-item:first-of-type {\n    border-start-start-radius: var(--accordion-border-radius);\n    border-start-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item:first-of-type > .accordion-header {\n    border-start-start-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n    border-start-end-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n  }\n  .accordion-item:not(:first-of-type) {\n    border-block-start: 0;\n  }\n  .accordion-item:last-of-type {\n    border-end-start-radius: var(--accordion-border-radius);\n    border-end-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item:last-of-type > .accordion-header {\n    border-end-start-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n    border-end-end-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n  }\n  .accordion-item:last-of-type > .accordion-body {\n    border-end-start-radius: var(--accordion-border-radius);\n    border-end-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item[open] {\n    border-color: var(--theme-border, var(--accordion-border-color));\n  }\n  .accordion-item[open] > .accordion-header {\n    color: var(--theme-text, var(--accordion-active-color));\n    background-color: var(--theme-bg-subtle, var(--accordion-active-bg));\n    box-shadow: inset 0 calc(-1 * var(--accordion-border-width)) 0 var(--theme-border, var(--accordion-border-color));\n  }\n  .accordion-item[open] > .accordion-header .accordion-icon {\n    transform: var(--accordion-btn-icon-transform);\n  }\n  .accordion-item[open]:last-of-type > .accordion-header {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .accordion-body {\n    padding: var(--accordion-body-padding-y, var(--accordion-padding-y)) var(--accordion-body-padding-x, var(--accordion-padding-x));\n  }\n  .accordion-flush > .accordion-item {\n    border-inline: 0;\n    border-radius: 0;\n  }\n  .accordion-flush > .accordion-item:first-child {\n    border-block-start: 0;\n  }\n  .accordion-flush > .accordion-item:last-child {\n    border-block-end: 0;\n  }\n  .accordion-flush > .accordion-item > .accordion-header,\n  .accordion-flush > .accordion-item > .accordion-body {\n    border-radius: 0;\n  }\n}\n@layer components {\n  .alert {\n    --alert-gap: 0.75rem;\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1));\n    --alert-padding-x: 1rem;\n    --alert-padding-y: 1rem;\n    --alert-color: var(--theme-text, inherit);\n    --alert-border-color: var(--theme-border, var(--border-color));\n    --alert-border: var(--border-width) solid var(--alert-border-color);\n    --alert-border-radius: var(--border-radius);\n    --alert-link-color: inherit;\n    --hr-border-color: var(--theme-border, var(--border-color));\n    display: flex;\n    gap: var(--alert-gap);\n    align-items: start;\n    padding: var(--alert-padding-y) var(--alert-padding-x);\n    color: var(--alert-color);\n    background-color: var(--alert-bg);\n    border: var(--alert-border);\n    border-radius: var(--alert-border-radius);\n  }\n  .alert-heading {\n    color: inherit;\n  }\n  .alert-link {\n    font-weight: var(--font-weight-semibold);\n    color: var(--alert-link-color);\n  }\n}\n@layer components {\n  .avatar {\n    --avatar-size: 2.5rem;\n    --avatar-border-radius: 50%;\n    --avatar-border-width: 2px;\n    --avatar-border-color: var(--bg-body);\n    --avatar-bg: var(--bg-2);\n    --avatar-color: var(--fg-body);\n    --avatar-status-size: 0.75rem;\n    --avatar-status-border-width: 2px;\n    --avatar-status-border-color: var(--bg-body);\n    --avatar-stack-spacing: -0.3;\n    --avatar-stack-transition: transform .2s ease-in-out;\n    position: relative;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--avatar-size);\n    height: var(--avatar-size);\n    font-size: calc(var(--avatar-size) * 0.4);\n    font-weight: var(--avatar-font-weight, var(--font-weight-medium));\n    line-height: 1;\n    color: var(--theme-contrast, var(--avatar-color));\n    text-transform: uppercase;\n    vertical-align: middle;\n    background-color: var(--theme-bg, var(--avatar-bg));\n    border-radius: var(--avatar-border-radius);\n  }\n  .avatar-subtle {\n    color: var(--theme-text, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n  .avatar-img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    border-radius: inherit;\n  }\n  .avatar-status {\n    position: absolute;\n    right: calc(var(--avatar-status-border-width) * -1);\n    bottom: calc(var(--avatar-status-border-width) * -1);\n    width: var(--avatar-status-size);\n    height: var(--avatar-status-size);\n    background-color: var(--gray-400);\n    border: var(--avatar-status-border-width) solid var(--avatar-status-border-color);\n    border-radius: 50%;\n  }\n  .avatar-status.status-online {\n    background-color: var(--green-500);\n  }\n  .avatar-status.status-offline {\n    background-color: var(--gray-400);\n    border-radius: 20%;\n  }\n  .avatar-status.status-busy {\n    background-color: var(--red-500);\n    border-radius: 20%;\n  }\n  .avatar-status.status-away {\n    background-color: var(--yellow-500);\n  }\n  .avatar-stack {\n    display: inline-flex;\n    flex-direction: row-reverse;\n  }\n  .avatar-stack .avatar {\n    margin-left: calc(var(--avatar-size) * var(--avatar-stack-spacing));\n    border: var(--avatar-border-width) solid var(--avatar-border-color);\n    mask-image: none;\n    transition: var(--avatar-stack-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .avatar-stack .avatar {\n      transition: none;\n    }\n  }\n  .avatar-stack .avatar:last-child {\n    margin-left: 0;\n  }\n  .avatar-stack .avatar:hover {\n    z-index: 1;\n    transform: translateY(-2px);\n  }\n  .avatar-xs,\n  .avatar-stack-xs {\n    --avatar-size: 1.5rem;\n    --avatar-status-size: 0.625rem;\n  }\n  .avatar-sm,\n  .avatar-stack-sm {\n    --avatar-size: 2rem;\n  }\n  .avatar-lg,\n  .avatar-stack-lg {\n    --avatar-size: 3rem;\n    --avatar-status-size: 1rem;\n  }\n  .avatar-xl,\n  .avatar-stack-xl {\n    --avatar-size: 4rem;\n    --avatar-status-size: 1.25rem;\n  }\n}\n@layer components {\n  .badge {\n    --badge-padding-x: 0.625em;\n    --badge-padding-y: 0.25em;\n    --badge-font-size: clamp(12px, 0.75em, 0.75em);\n    --badge-font-weight: var(--font-weight-semibold);\n    --badge-color: inherit;\n    --badge-bg: var(--bg-2);\n    --badge-border-width: var(--border-width);\n    --badge-border-color: transparent;\n    --badge-border-radius: var(--border-radius-lg);\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 1.375rem;\n    padding: var(--badge-padding-y) var(--badge-padding-x);\n    font-size: var(--badge-font-size);\n    font-weight: var(--badge-font-weight);\n    line-height: 1;\n    color: var(--theme-contrast, var(--badge-color));\n    text-align: center;\n    white-space: nowrap;\n    vertical-align: baseline;\n    background-color: var(--theme-bg, var(--badge-bg));\n    border: var(--badge-border-width) solid var(--badge-border-color);\n    border-radius: var(--badge-border-radius);\n  }\n  .badge:empty {\n    display: none;\n  }\n  .btn .badge {\n    position: relative;\n    top: -1px;\n  }\n  .badge-subtle {\n    --badge-color: var(--theme-text);\n    --badge-bg: var(--theme-bg-subtle);\n    --badge-border-color: transparent;\n    color: var(--badge-color);\n    background-color: var(--badge-bg);\n    border-color: var(--badge-border-color);\n  }\n  .badge-outline {\n    --badge-color: var(--theme-text);\n    --badge-bg: transparent;\n    --badge-border-color: var(--theme-border);\n    color: var(--badge-color);\n    background-color: var(--badge-bg);\n    border-color: var(--badge-border-color);\n  }\n}\n@layer components {\n  .breadcrumb {\n    --breadcrumb-margin-bottom: 1rem;\n    --breadcrumb-font-size: inherit;\n    --breadcrumb-bg: transparent;\n    --breadcrumb-border-radius: var(--border-radius);\n    --breadcrumb-divider-color: var(--fg-4);\n    --breadcrumb-link-padding-x: 0.75rem;\n    --breadcrumb-link-padding-y: 0.25rem;\n    --breadcrumb-link-color: var(--fg-3);\n    --breadcrumb-link-hover-color: var(--fg-2);\n    --breadcrumb-link-hover-bg: var(--bg-1);\n    --breadcrumb-link-active-color: var(--fg-1);\n    --breadcrumb-link-border-radius: var(--border-radius-lg);\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    padding: var(--breadcrumb-padding-y, 0) var(--breadcrumb-padding-x, 0);\n    font-size: var(--breadcrumb-font-size);\n    list-style: none;\n    background-color: var(--breadcrumb-bg);\n    border-radius: var(--breadcrumb-border-radius);\n  }\n  .breadcrumb-item {\n    display: flex;\n  }\n  .breadcrumb-divider {\n    margin-inline: calc(var(--breadcrumb-link-padding-x) / 4);\n    color: var(--breadcrumb-divider-color);\n  }\n  .breadcrumb-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 2.25rem;\n    padding: var(--breadcrumb-link-padding-y) var(--breadcrumb-link-padding-x);\n    color: var(--breadcrumb-link-color);\n    text-decoration: none;\n    border-radius: var(--breadcrumb-link-border-radius);\n    transition: 0.1s text-decoration-color ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .breadcrumb-link {\n      transition: none;\n    }\n  }\n  .breadcrumb-link:hover {\n    z-index: 2;\n    color: var(--breadcrumb-link-hover-color);\n    background-color: var(--breadcrumb-link-hover-bg);\n  }\n  .breadcrumb-link.active {\n    color: var(--breadcrumb-link-active-color);\n  }\n}\n@layer components {\n  .chip {\n    --chip-height: 1.75rem;\n    --chip-padding-x: 0.625rem;\n    --chip-gap: 0.3125rem;\n    --chip-border-radius: var(--border-radius-pill);\n    --chip-img-size: 1.25rem;\n    --chip-icon-size: 1rem;\n    --chip-dismiss-size: 1rem;\n    --chip-dismiss-opacity: 0.65;\n    --chip-dismiss-hover-opacity: 1;\n    --chip-color: var(--theme-text, var(--fg-body));\n    --chip-bg: var(--theme-bg-subtle, var(--bg-2));\n    --chip-border-color: transparent;\n    --chip-selected-color: var(--theme-contrast, var(--primary-contrast));\n    --chip-selected-bg: var(--theme-bg, var(--primary-bg));\n    --chip-selected-border-color: var(--theme-bg, var(--primary-bg));\n    display: inline-flex;\n    gap: var(--chip-gap);\n    align-items: center;\n    height: var(--chip-height);\n    padding-inline: var(--chip-padding-x);\n    font-size: var(--chip-font-size, var(--font-size-sm));\n    font-weight: var(--chip-font-weight, var(--font-weight-base));\n    line-height: var(--chip-line-height, 1.25rem);\n    color: var(--chip-color);\n    text-decoration: none;\n    white-space: nowrap;\n    vertical-align: middle;\n    cursor: pointer;\n    background-color: var(--chip-bg);\n    border: var(--border-width) solid var(--chip-border-color);\n    border-radius: var(--chip-border-radius);\n  }\n  .chip:hover {\n    --chip-bg: var(--theme-bg-muted, var(--bg-3));\n  }\n  .chip:focus-visible {\n    outline: 0;\n  }\n  .chip.active {\n    --chip-color: var(--chip-selected-color);\n    --chip-bg: var(--chip-selected-bg);\n    --chip-border-color: var(--chip-selected-border-color);\n  }\n  .chip.active:hover {\n    --chip-bg: var(--chip-selected-bg);\n    opacity: 0.9;\n  }\n  .chip.disabled, .chip:disabled {\n    pointer-events: none;\n    opacity: 0.65;\n  }\n  .chip-img {\n    width: var(--chip-img-size);\n    height: var(--chip-img-size);\n    border-radius: 50%;\n  }\n  .chip-img:first-child {\n    margin-inline-start: -0.375rem;\n  }\n  .chip-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    margin-inline-start: calc(var(--chip-gap) * -0.25);\n  }\n  .chip-icon > svg {\n    display: block;\n    width: var(--chip-icon-size);\n    height: var(--chip-icon-size);\n  }\n  .chip-icon > img {\n    width: var(--chip-icon-size);\n    height: var(--chip-icon-size);\n    object-fit: cover;\n    border-radius: 50%;\n  }\n  .chip-dismiss {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--chip-min-height);\n    height: var(--chip-min-height);\n    padding: 0;\n    margin-inline-end: calc(var(--chip-padding-x) * -0.25);\n    color: inherit;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    opacity: var(--chip-dismiss-opacity);\n  }\n  .chip-dismiss:hover {\n    opacity: var(--chip-dismiss-hover-opacity);\n  }\n  .chip-dismiss:focus-visible {\n    outline: 0;\n    opacity: 1;\n    outline: var(--focus-ring);\n  }\n  .chip-dismiss > svg {\n    display: block;\n    width: var(--chip-dismiss-size);\n    height: var(--chip-dismiss-size);\n  }\n}\n@layer components {\n  .card {\n    --card-spacer-y: 1rem;\n    --card-spacer-x: 1rem;\n    --card-subtitle-color: inherit;\n    --card-border-width: var(--border-width);\n    --card-border-color: var(--border-color-translucent);\n    --card-border-radius: var(--border-radius-lg);\n    --card-box-shadow: none;\n    --card-inner-border-radius: calc(var(--border-radius-lg) - var(--border-width));\n    --card-cap-padding-y: 0.75rem;\n    --card-cap-padding-x: 1rem;\n    --card-cap-bg: var(--bg-1);\n    --card-cap-color: inherit;\n    --card-height: auto;\n    --card-color: inherit;\n    --card-bg: var(--bg-body);\n    --card-img-overlay-padding: 1rem;\n    --card-group-margin: 0.75rem;\n    --card-body-gap: 0.5rem;\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    min-width: 0;\n    height: var(--card-height);\n    color: var(--fg-body);\n    word-wrap: break-word;\n    background-color: var(--card-bg);\n    box-shadow: var(--card-box-shadow);\n  }\n  .card > hr {\n    margin-inline: 0;\n  }\n  .card-body {\n    display: flex;\n    flex: 1 1 auto;\n    flex-direction: column;\n    gap: var(--card-body-gap);\n    align-items: flex-start;\n    padding: var(--card-spacer-y) var(--card-spacer-x);\n    color: var(--card-color);\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n  }\n  .card-body > * {\n    margin-block: 0;\n  }\n  .card-body,\n  .card-list {\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n  }\n  .card-body:first-child,\n  .card-list:first-child {\n    border-start-start-radius: var(--card-border-radius);\n    border-start-end-radius: var(--card-border-radius);\n    border-top-width: var(--card-border-width);\n  }\n  .card-body:last-child,\n  .card-list:last-child {\n    border-end-start-radius: var(--card-border-radius);\n    border-end-end-radius: var(--card-border-radius);\n    border-bottom-width: var(--card-border-width);\n  }\n  .card-body:not(:first-child):not(:last-child),\n  .card-list:not(:first-child):not(:last-child) {\n    border-block-end-width: var(--card-border-width);\n  }\n  .card-title,\n  .card-subtitle,\n  .card-text {\n    align-self: stretch;\n  }\n  .card-subtitle {\n    margin-top: calc(var(--card-body-gap) * -0.5);\n  }\n  .card-header {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    margin-bottom: 0;\n    color: var(--theme-contrast, var(--card-cap-color));\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n  }\n  .card-header:first-child {\n    border-radius: var(--card-inner-border-radius) var(--card-inner-border-radius) 0 0;\n  }\n  .card-footer {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    color: var(--card-cap-color);\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n  }\n  .card-footer:last-child {\n    border-radius: 0 0 var(--card-inner-border-radius) var(--card-inner-border-radius);\n  }\n  .card-subtle {\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-header {\n    color: var(--theme-text-emphasis, currentcolor);\n    background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-footer {\n    color: var(--theme-text-emphasis, currentcolor);\n    background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-body,\n  .card-subtle .card-list {\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .nav.card-header-tabs {\n    margin-inline: calc(-0.5 * var(--card-cap-padding-x));\n    margin-bottom: calc(-1 * var(--card-cap-padding-y));\n    border-block-end: 0;\n  }\n  .nav.card-header-tabs .nav-link.active {\n    background-color: var(--card-bg);\n    border-block-end-color: var(--card-bg);\n  }\n  .card-img-overlay {\n    position: absolute;\n    inset: 0;\n    padding: var(--card-img-overlay-padding);\n    border-radius: var(--card-inner-border-radius);\n  }\n  .card-img,\n  .card-img-top,\n  .card-img-bottom {\n    width: 100%;\n    outline: var(--card-border-width) solid var(--card-border-color);\n    outline-offset: calc(var(--card-border-width) * -1);\n  }\n  .card-img,\n  .card-img-top {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-start-end-radius: var(--card-inner-border-radius);\n  }\n  .card-img,\n  .card-img-bottom {\n    border-end-start-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n  }\n  .card-row {\n    flex-direction: row;\n  }\n  .card-row .card-body,\n  .card-row .card-list {\n    border-width: var(--card-border-width) 0;\n    border-radius: 0;\n  }\n  .card-row .card-body:first-child,\n  .card-row .card-list:first-child {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-end-start-radius: var(--card-inner-border-radius);\n    border-inline-start-width: var(--card-border-width);\n  }\n  .card-row .card-body:last-child,\n  .card-row .card-list:last-child {\n    border-start-end-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n    border-inline-end-width: var(--card-border-width);\n  }\n  .card-row .card-body:not(:first-child):not(:last-child),\n  .card-row .card-list:not(:first-child):not(:last-child) {\n    border-inline-end-width: var(--card-border-width);\n  }\n  .card-img-start {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-end-start-radius: var(--card-inner-border-radius);\n  }\n  .card-img-end {\n    border-start-end-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n  }\n  .card-group > .card {\n    margin-bottom: var(--card-group-margin);\n  }\n  @media (width >= 576px) {\n    .card-group {\n      display: flex;\n      flex-flow: row wrap;\n    }\n    .card-group > .card {\n      flex: 1 0 0;\n      margin-bottom: 0;\n    }\n    .card-group > .card + .card {\n      margin-inline-start: 0;\n      border-inline-start: 0;\n    }\n    .card-group > .card:not(:last-child) {\n      border-start-end-radius: 0;\n      border-end-end-radius: 0;\n    }\n    .card-group > .card:not(:last-child) > .card-img-top,\n    .card-group > .card:not(:last-child) > .card-header {\n      border-start-end-radius: 0;\n    }\n    .card-group > .card:not(:last-child) > .card-img-bottom,\n    .card-group > .card:not(:last-child) > .card-footer {\n      border-end-end-radius: 0;\n    }\n    .card-group > .card:not(:first-child) {\n      border-start-start-radius: 0;\n      border-end-start-radius: 0;\n    }\n    .card-group > .card:not(:first-child) > .card-img-top,\n    .card-group > .card:not(:first-child) > .card-header {\n      border-start-start-radius: 0;\n    }\n    .card-group > .card:not(:first-child) > .card-img-bottom,\n    .card-group > .card:not(:first-child) > .card-footer {\n      border-end-start-radius: 0;\n    }\n  }\n}\n@layer components {\n  .carousel {\n    position: relative;\n    --carousel-control-color: #fff;\n    --carousel-control-width: 15%;\n    --carousel-control-opacity: 0.5;\n    --carousel-control-hover-opacity: 0.9;\n    --carousel-control-transition: opacity 0.15s ease;\n    --carousel-control-icon-filter: none;\n    --carousel-indicator-width: 30px;\n    --carousel-indicator-height: 3px;\n    --carousel-indicator-hit-area-height: 10px;\n    --carousel-indicator-spacer: 3px;\n    --carousel-indicator-opacity: 0.5;\n    --carousel-indicator-active-bg: var(--white);\n    --carousel-indicator-active-opacity: 1;\n    --carousel-indicator-transition: opacity 0.6s ease;\n    --carousel-caption-width: 70%;\n    --carousel-caption-color: var(--white);\n    --carousel-caption-padding-y: 1.25rem;\n    --carousel-caption-spacer: 1.25rem;\n    --carousel-control-icon-width: 2rem;\n    --carousel-control-prev-icon-bg: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>\");\n    --carousel-control-next-icon-bg: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>\");\n    --carousel-transition-duration: 0.6s;\n    --carousel-transition: transform 0.6s ease-in-out;\n  }\n  .carousel.pointer-event {\n    touch-action: pan-y;\n  }\n  .carousel-inner {\n    position: relative;\n    display: flow-root;\n    width: 100%;\n    overflow: hidden;\n  }\n  .carousel-item {\n    position: relative;\n    display: none;\n    float: inline-start;\n    width: 100%;\n    margin-inline-end: -100%;\n    backface-visibility: hidden;\n    transition: var(--carousel-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-item {\n      transition: none;\n    }\n  }\n  .carousel-item.active,\n  .carousel-item-next,\n  .carousel-item-prev {\n    display: block;\n  }\n  .carousel-item-next:not(.carousel-item-start),\n  .active.carousel-item-end {\n    transform: translateX(100%);\n  }\n  .carousel-item-prev:not(.carousel-item-end),\n  .active.carousel-item-start {\n    transform: translateX(-100%);\n  }\n  .carousel-fade .carousel-item {\n    opacity: 0;\n    transition-property: opacity;\n    transform: none;\n  }\n  .carousel-fade .carousel-item.active,\n  .carousel-fade .carousel-item-next.carousel-item-start,\n  .carousel-fade .carousel-item-prev.carousel-item-end {\n    z-index: 1;\n    opacity: 1;\n  }\n  .carousel-fade .active.carousel-item-start,\n  .carousel-fade .active.carousel-item-end {\n    z-index: 0;\n    opacity: 0;\n    transition: opacity 0s var(--carousel-transition-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-fade .active.carousel-item-start,\n    .carousel-fade .active.carousel-item-end {\n      transition: none;\n    }\n  }\n  .carousel-control-prev,\n  .carousel-control-next {\n    position: absolute;\n    inset-block: 0;\n    z-index: 1;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--carousel-control-width);\n    padding: 0;\n    color: var(--carousel-control-color);\n    text-align: center;\n    background: none;\n    filter: var(--carousel-control-icon-filter);\n    border: 0;\n    opacity: var(--carousel-control-opacity);\n    transition: var(--carousel-control-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-control-prev,\n    .carousel-control-next {\n      transition: none;\n    }\n  }\n  .carousel-control-prev:hover, .carousel-control-prev:focus,\n  .carousel-control-next:hover,\n  .carousel-control-next:focus {\n    color: var(--carousel-control-color);\n    text-decoration: none;\n    outline: 0;\n    opacity: var(--carousel-control-hover-opacity);\n  }\n  .carousel-control-prev {\n    inset-inline-start: 0;\n  }\n  .carousel-control-next {\n    inset-inline-end: 0;\n  }\n  .carousel-control-prev-icon,\n  .carousel-control-next-icon {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-repeat: no-repeat;\n    background-position: 50%;\n    background-size: 100% 100%;\n  }\n  .carousel-control-prev-icon {\n    background-image: var(--carousel-control-prev-icon-bg);\n  }\n  [dir=rtl] .carousel-control-prev-icon {\n    background-image: var(--carousel-control-next-icon-bg);\n  }\n  .carousel-control-next-icon {\n    background-image: var(--carousel-control-next-icon-bg);\n  }\n  [dir=rtl] .carousel-control-next-icon {\n    background-image: var(--carousel-control-prev-icon-bg);\n  }\n  .carousel-indicators {\n    position: absolute;\n    inset: auto 0 0;\n    z-index: 2;\n    display: flex;\n    justify-content: center;\n    padding: 0;\n    margin-inline: var(--carousel-control-width);\n    margin-bottom: 1rem;\n  }\n  .carousel-indicators [data-bs-target] {\n    box-sizing: content-box;\n    flex: 0 1 auto;\n    width: var(--carousel-indicator-width);\n    height: var(--carousel-indicator-height);\n    padding: 0;\n    margin-inline: var(--carousel-indicator-spacer);\n    text-indent: -999px;\n    cursor: pointer;\n    background-color: var(--carousel-indicator-active-bg);\n    background-clip: padding-box;\n    border: 0;\n    border-block: var(--carousel-indicator-hit-area-height) solid transparent;\n    opacity: var(--carousel-indicator-opacity);\n    transition: var(--carousel-indicator-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-indicators [data-bs-target] {\n      transition: none;\n    }\n  }\n  .carousel-indicators .active {\n    opacity: var(--carousel-indicator-active-opacity);\n  }\n  .carousel-caption {\n    position: absolute;\n    right: calc((100% - var(--carousel-caption-width)) * 0.5);\n    bottom: var(--carousel-caption-spacer);\n    left: calc((100% - var(--carousel-caption-width)) * 0.5);\n    padding-top: var(--carousel-caption-padding-y);\n    padding-bottom: var(--carousel-caption-padding-y);\n    color: var(--carousel-caption-color);\n    text-align: center;\n  }\n  .carousel-dark {\n    --carousel-indicator-active-bg: #000;\n    --carousel-caption-color: #000;\n    --carousel-control-icon-filter: invert(1) grayscale(100);\n  }\n  @media (prefers-color-scheme: dark) {\n    :root {\n      --carousel-indicator-active-bg: #000;\n      --carousel-caption-color: #000;\n      --carousel-control-icon-filter: invert(1) grayscale(100);\n    }\n  }\n}\n@layer components {\n  [data-vc=calendar] {\n    --datepicker-padding: 1rem;\n    --datepicker-bg: var(--bg-body);\n    --datepicker-color: var(--fg-body);\n    --datepicker-border-color: var(--border-color-translucent);\n    --datepicker-border-width: var(--border-width);\n    --datepicker-border-radius: var(--border-radius-lg);\n    --datepicker-box-shadow: var(--box-shadow);\n    --datepicker-font-size: var(--font-size-sm);\n    --datepicker-min-width: 280px;\n    --datepicker-zindex: 1000;\n    --datepicker-header-font-weight: 600;\n    --datepicker-weekday-color: var(--fg-3);\n    --datepicker-day-hover-bg: var(--bg-1);\n    --datepicker-day-selected-bg: var(--primary-bg);\n    --datepicker-day-selected-color: var(--primary-contrast);\n    --datepicker-day-today-bg: var(--bg-2);\n    --datepicker-day-today-color: var(--fg-1);\n    --datepicker-day-disabled-color: var(--fg-4);\n    position: absolute;\n    z-index: var(--datepicker-zindex);\n    box-sizing: border-box;\n    display: flex;\n    flex-direction: column;\n    min-width: var(--datepicker-min-width);\n    padding: var(--datepicker-padding);\n    font-family: var(--font-sans-serif);\n    font-size: var(--datepicker-font-size);\n    color: var(--datepicker-color);\n    color-scheme: light dark;\n    background-color: var(--datepicker-bg);\n    border: var(--datepicker-border-width) solid var(--datepicker-border-color);\n    border-radius: var(--datepicker-border-radius);\n    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n  }\n  [data-vc=calendar][data-bs-theme=light] {\n    color-scheme: light;\n  }\n  [data-vc=calendar][data-bs-theme=dark] {\n    color-scheme: dark;\n  }\n  [data-vc=calendar] button:focus-visible {\n    position: relative;\n    z-index: 1;\n    outline: var(--focus-ring);\n  }\n  [data-vc-calendar-hidden] {\n    pointer-events: none;\n    opacity: 0;\n  }\n  [data-vc=calendar]:not([data-vc-input]) {\n    position: relative;\n    width: fit-content;\n    padding: 0;\n    border: 0;\n    box-shadow: none;\n  }\n  [data-vc-position=bottom] {\n    margin-block-start: 0.25rem;\n  }\n  [data-vc-position=top] {\n    margin-block-end: -0.25rem;\n  }\n  [data-vc-arrow] {\n    position: relative;\n    display: block;\n    width: 2rem;\n    height: 2rem;\n    color: var(--datepicker-color);\n    pointer-events: auto;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--border-radius);\n  }\n  [data-vc-arrow]::before {\n    position: absolute;\n    inset: 0.25rem;\n    content: \"\";\n    background-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%236b7280' d='M12 16c-.3 0-.5-.1-.7-.3l-6-6c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l5.3 5.3 5.3-5.3c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-6 6c-.2.2-.4.3-.7.3'/></svg>\");\n    background-repeat: no-repeat;\n    background-position: center;\n  }\n  [data-vc-arrow]:hover {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-arrow=prev]::before {\n    transform: rotate(90deg);\n  }\n  [data-vc-arrow=next]::before {\n    transform: rotate(-90deg);\n  }\n  [data-vc=controls] {\n    position: absolute;\n    top: 0;\n    right: 0;\n    left: 0;\n    z-index: 20;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding-top: 1rem;\n    padding-right: 1rem;\n    padding-left: 1rem;\n    pointer-events: none;\n  }\n  [data-vc=grid] {\n    display: flex;\n    flex-grow: 1;\n    flex-wrap: wrap;\n    gap: 1.75rem;\n  }\n  [data-vc=column] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    min-width: 240px;\n  }\n  [data-vc=header] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    margin-bottom: 0.75rem;\n  }\n  [data-vc-header=content] {\n    display: inline-flex;\n    flex-grow: 1;\n    align-items: center;\n    justify-content: center;\n    white-space: pre-wrap;\n  }\n  [data-vc=month],\n  [data-vc=year] {\n    padding: 0.25rem 0.5rem;\n    margin-inline: -0.125rem;\n    font-size: 1rem;\n    font-weight: var(--datepicker-header-font-weight);\n    color: var(--datepicker-color);\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--border-radius);\n  }\n  [data-vc=month]:disabled,\n  [data-vc=year]:disabled {\n    color: var(--datepicker-day-disabled-color);\n    pointer-events: none;\n  }\n  [data-vc=month]:hover:not(:disabled),\n  [data-vc=year]:hover:not(:disabled) {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc=content] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n  }\n  [data-vc=months],\n  [data-vc=years] {\n    display: grid;\n    flex-grow: 1;\n    grid-template-columns: repeat(var(--vc-columns, 4), minmax(0, 1fr));\n    row-gap: 1rem;\n    column-gap: 0.25rem;\n    align-items: center;\n  }\n  [data-vc=years] {\n    --vc-columns: 5;\n  }\n  [data-vc-months-month],\n  [data-vc-years-year] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 2.5rem;\n    padding: 0.25rem;\n    font-size: 0.75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    text-align: center;\n    word-break: break-all;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--border-radius);\n  }\n  [data-vc-months-month]:disabled,\n  [data-vc-years-year]:disabled {\n    color: var(--datepicker-day-disabled-color);\n    pointer-events: none;\n  }\n  [data-vc-months-month]:hover:not(:disabled),\n  [data-vc-years-year]:hover:not(:disabled) {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-months-month][data-vc-months-month-selected], [data-vc-months-month][data-vc-years-year-selected],\n  [data-vc-years-year][data-vc-months-month-selected],\n  [data-vc-years-year][data-vc-years-year-selected] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc-months-month][data-vc-months-month-selected]:hover, [data-vc-months-month][data-vc-years-year-selected]:hover,\n  [data-vc-years-year][data-vc-months-month-selected]:hover,\n  [data-vc-years-year][data-vc-years-year-selected]:hover {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc=week] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    justify-items: center;\n    margin-bottom: 0.5rem;\n  }\n  [data-vc-week-day] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    padding: 0;\n    margin: 0;\n    font-size: 0.75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    background-color: transparent;\n    border: 0;\n  }\n  button[data-vc-week-day] {\n    cursor: pointer;\n  }\n  [data-vc=dates] {\n    pointer-events: none;\n  }\n  [data-vc-dates=row] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    align-items: center;\n    justify-items: center;\n    width: 100%;\n  }\n  [data-vc-date] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    padding-top: 0.125rem;\n    padding-bottom: 0.125rem;\n    pointer-events: auto;\n  }\n  [data-vc-date]:not(:has([data-vc-date-btn])), [data-vc-date][data-vc-date-disabled], [data-vc-date][data-vc-date-disabled] [data-vc-date-btn] {\n    pointer-events: none;\n  }\n  [data-vc-date-btn] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    height: 100%;\n    min-height: 1.875rem;\n    padding: 0;\n    font-size: 0.75rem;\n    font-weight: 400;\n    line-height: 1rem;\n    color: var(--datepicker-color);\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--border-radius);\n  }\n  [data-vc-date-btn]:hover {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-date-today] [data-vc-date-btn] {\n    font-weight: 600;\n    color: var(--datepicker-day-today-color);\n    background-color: var(--datepicker-day-today-bg);\n  }\n  [data-vc-date-month=next] [data-vc-date-btn],\n  [data-vc-date-month=prev] [data-vc-date-btn] {\n    opacity: 0.5;\n  }\n  [data-vc-date-disabled] [data-vc-date-btn] {\n    color: var(--datepicker-day-disabled-color);\n  }\n  [data-vc-date-hover] [data-vc-date-btn] {\n    background-color: var(--datepicker-day-hover-bg);\n    border-radius: 0;\n  }\n  [data-vc-date-hover=first] [data-vc-date-btn] {\n    border-start-start-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  [data-vc-date-hover=last] [data-vc-date-btn] {\n    border-start-end-radius: var(--border-radius);\n    border-end-end-radius: var(--border-radius);\n  }\n  [data-vc-date-hover=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--border-radius);\n  }\n  [data-vc-date-selected=middle] [data-vc-date-btn] {\n    border-radius: 0;\n    opacity: 0.8;\n  }\n  [data-vc-date-selected] [data-vc-date-btn] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc-date-selected=first] [data-vc-date-btn] {\n    border-top-left-radius: var(--border-radius);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--border-radius);\n  }\n  [data-vc-date-selected=last] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--border-radius);\n    border-bottom-right-radius: var(--border-radius);\n    border-bottom-left-radius: 0;\n  }\n  [data-vc-date-selected=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--border-radius);\n  }\n}\n@layer components {\n  .dialog-open {\n    overflow: hidden;\n    scrollbar-gutter: stable;\n  }\n  .dialog {\n    --dialog-padding: 1rem;\n    --dialog-width: 500px;\n    --dialog-margin: 1.75rem;\n    --dialog-color: var(--fg-body);\n    --dialog-bg: var(--bg-body);\n    --dialog-border-color: var(--border-color-translucent);\n    --dialog-border-width: var(--border-width);\n    --dialog-border-radius: var(--border-radius-lg);\n    --dialog-box-shadow: var(--box-shadow-lg);\n    --dialog-backdrop-bg: rgba(0, 0, 0, 0.5);\n    --dialog-backdrop-blur: 8px;\n    --dialog-header-padding: 1rem;\n    --dialog-header-border-color: var(--border-color);\n    --dialog-header-border-width: var(--border-width);\n    --dialog-footer-padding: 1rem;\n    --dialog-footer-border-color: var(--border-color);\n    --dialog-footer-border-width: var(--border-width);\n    --dialog-footer-gap: 0.5rem;\n    max-width: var(--dialog-width);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    color: var(--dialog-color);\n    background-color: var(--dialog-bg);\n    background-clip: padding-box;\n    border: var(--dialog-border-width) solid var(--dialog-border-color);\n    border-radius: var(--dialog-border-radius);\n    box-shadow: var(--dialog-box-shadow);\n  }\n  .dialog::backdrop {\n    background-color: var(--dialog-backdrop-bg);\n    backdrop-filter: blur(var(--dialog-backdrop-blur));\n  }\n  .dialog.fade {\n    opacity: 0;\n    transition: opacity 0.15s linear;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog.fade {\n      transition: none;\n    }\n  }\n  .dialog.fade::backdrop {\n    opacity: 0;\n    transition: opacity 0.15s linear;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog.fade::backdrop {\n      transition: none;\n    }\n  }\n  .dialog.fade[open] {\n    opacity: 1;\n  }\n  .dialog.fade[open]::backdrop {\n    opacity: 1;\n  }\n  .dialog.dialog-static {\n    transform: scale(1.02);\n  }\n  .dialog.dialog-nonmodal {\n    position: fixed;\n    inset-block-start: 50%;\n    inset-inline-start: 50%;\n    z-index: 1055;\n    margin-inline: 0;\n    transform: translate(-50%, -50%);\n  }\n  .dialog.dialog-overflow {\n    position: fixed;\n    inset: 0;\n    width: 100%;\n    max-width: 100%;\n    height: 100%;\n    max-height: 100%;\n    padding: var(--dialog-margin);\n    margin: 0;\n    overflow-y: auto;\n    overscroll-behavior: contain;\n    background: transparent;\n    border: 0;\n    box-shadow: none;\n  }\n  .dialog.dialog-overflow > .dialog-box {\n    max-width: var(--dialog-width);\n    margin-block-end: var(--dialog-margin);\n    margin-inline: auto;\n    color: var(--dialog-color);\n    background-color: var(--dialog-bg);\n    background-clip: padding-box;\n    border: var(--dialog-border-width) solid var(--dialog-border-color);\n    border-radius: var(--dialog-border-radius);\n    box-shadow: var(--dialog-box-shadow);\n  }\n  .dialog.dialog-scrollable[open] {\n    display: flex;\n    flex-direction: column;\n    max-height: calc(100% - var(--dialog-margin) * 2);\n  }\n  .dialog.dialog-scrollable[open] .dialog-body {\n    overflow-y: auto;\n  }\n  .dialog-sm {\n    --dialog-width: 280px;\n  }\n  .dialog-lg {\n    --dialog-width: 800px;\n  }\n  .dialog-xl {\n    --dialog-width: 1140px;\n  }\n  .dialog-fullscreen {\n    --dialog-width: 100vw;\n    --dialog-margin: 0;\n    --dialog-border-radius: 0;\n    width: 100%;\n    max-width: none;\n    height: 100%;\n    max-height: none;\n  }\n  @media (width < 576px) {\n    .dialog-fullscreen-sm-down {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 768px) {\n    .dialog-fullscreen-md-down {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1024px) {\n    .dialog-fullscreen-lg-down {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1280px) {\n    .dialog-fullscreen-xl-down {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1536px) {\n    .dialog-fullscreen-2xl-down {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  .dialog-header {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    padding: var(--dialog-header-padding);\n    border-block-end: var(--dialog-header-border-width) solid var(--dialog-header-border-color);\n  }\n  .dialog-header .btn-close {\n    margin-inline-start: auto;\n  }\n  .dialog-title {\n    margin-bottom: 0;\n    font-size: var(--font-size-md);\n    line-height: 1.5;\n  }\n  .dialog-body {\n    position: relative;\n    flex: 1 1 auto;\n    padding: var(--dialog-padding);\n    overflow-y: auto;\n  }\n  .dialog-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: var(--dialog-footer-gap);\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--dialog-footer-padding);\n    border-block-start: var(--dialog-footer-border-width) solid var(--dialog-footer-border-color);\n  }\n}\n@layer components {\n  .menu {\n    --menu-zindex: 1000;\n    --menu-gap: 0.125rem;\n    --menu-min-width: 10rem;\n    --menu-padding-x: 0.25rem;\n    --menu-padding-y: 0.25rem;\n    --menu-spacer: 0.125rem;\n    --menu-font-size: var(--font-size-sm);\n    --menu-color: var(--fg-body);\n    --menu-bg: var(--bg-body);\n    --menu-box-shadow: var(--box-shadow);\n    --menu-divider-bg: var(--border-color-translucent);\n    --menu-divider-margin-y: 0.125rem;\n    --menu-divider-margin-x: 0.25rem;\n    --menu-item-color: var(--fg-body);\n    --menu-item-hover-color: var(--fg-body);\n    --menu-item-hover-bg: var(--bg-1);\n    --menu-item-active-color: var(--primary-contrast);\n    --menu-item-active-bg: var(--primary-bg);\n    --menu-item-disabled-color: var(--fg-3);\n    --menu-item-gap: 0.5rem;\n    --menu-item-padding-x: 0.75rem;\n    --menu-item-padding-y: 0.25rem;\n    --menu-item-border-radius: var(--border-radius);\n    --menu-icon-size: 1rem;\n    --menu-image-size: 1.5rem;\n    --menu-description-color: var(--fg-3);\n    --menu-description-font-size: var(--font-size-xs);\n    --menu-check-color: currentcolor;\n    --menu-header-color: var(--fg-2);\n    --menu-header-padding-x: 0.75rem;\n    --menu-header-padding-y: 0.25rem;\n    position: absolute;\n    z-index: var(--menu-zindex);\n    display: none;\n    flex-direction: column;\n    gap: var(--menu-gap);\n    min-width: var(--menu-min-width);\n    max-height: var(--menu-max-height, none);\n    padding: var(--menu-padding-y) var(--menu-padding-x);\n    margin: 0;\n    overflow-y: var(--menu-overflow-y, initial);\n    overscroll-behavior: contain;\n    font-size: var(--menu-font-size);\n    color: var(--menu-color);\n    text-align: start;\n    list-style: none;\n    background-color: var(--menu-bg);\n    background-clip: padding-box;\n    border: var(--menu-border-width, var(--border-width)) solid var(--menu-border-color, var(--border-color-translucent));\n    border-radius: var(--menu-border-radius, var(--border-radius-lg));\n    box-shadow: var(--menu-box-shadow);\n  }\n  .menu.show {\n    display: flex;\n  }\n  .menu-scrollable {\n    --menu-max-height: 80dvh;\n    --menu-overflow-y: auto;\n  }\n  .menu-translucent {\n    --menu-item-hover-bg-light: color-mix(in oklch, var(--bg-1) 90%, transparent);\n    --menu-item-hover-bg-dark: color-mix(in oklch, var(--bg-1) 80%, transparent);\n    --menu-item-active-bg-light: color-mix(in oklch, var(--primary-bg) 80%, transparent);\n    --menu-item-active-bg-dark: color-mix(in oklch, var(--primary-bg) 70%, transparent);\n    --menu-item-active-bg: light-dark(var(--menu-item-active-bg-light), var(--menu-item-active-bg-dark));\n    --menu-item-hover-bg: light-dark(var(--menu-item-hover-bg-light), var(--menu-item-hover-bg-dark));\n    background-color: color-mix(in oklch, var(--menu-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .menu-divider {\n    height: 0;\n    margin: var(--menu-divider-margin-y) var(--menu-divider-margin-x);\n    overflow: hidden;\n    border-block-start: 1px solid var(--menu-divider-bg);\n    opacity: 1;\n  }\n  .menu-item {\n    display: flex;\n    gap: var(--menu-item-gap);\n    align-items: center;\n    width: 100%;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    font-weight: var(--menu-item-font-weight, var(--font-weight-normal));\n    color: var(--theme-text, var(--menu-item-color));\n    text-align: inherit;\n    text-decoration: none;\n    white-space: nowrap;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    border-radius: var(--menu-item-border-radius, 0);\n  }\n  .menu-item:hover, .menu-item:focus {\n    color: var(--theme-text, var(--menu-item-hover-color));\n    background-color: var(--theme-bg-subtle, var(--menu-item-hover-bg));\n  }\n  .menu-item.active, .menu-item:active {\n    color: var(--theme-contrast, var(--menu-item-active-color));\n    background-color: var(--theme-bg, var(--menu-item-active-bg));\n  }\n  .menu-item.selected {\n    font-weight: 600;\n  }\n  .menu-item.disabled, .menu-item:disabled {\n    color: var(--menu-item-disabled-color);\n    pointer-events: none;\n    background-color: transparent;\n  }\n  .menu-item-icon {\n    flex-shrink: 0;\n    align-self: flex-start;\n    width: var(--menu-icon-size);\n    height: auto;\n    margin-top: 0.125rem;\n  }\n  .menu-image {\n    width: var(--menu-image-size);\n    height: var(--menu-image-size);\n    object-fit: cover;\n    border-radius: var(--border-radius-sm);\n  }\n  .menu-item-content {\n    display: flex;\n    flex: 1;\n    flex-direction: column;\n    min-width: 0;\n  }\n  .menu-item-description {\n    font-size: var(--menu-description-font-size);\n    color: var(--menu-description-color);\n  }\n  .menu-item-check {\n    flex-shrink: 0;\n    margin-inline-start: auto;\n    color: var(--menu-check-color);\n    visibility: hidden;\n  }\n  .selected > .menu-item-check {\n    visibility: visible;\n  }\n  .menu-header {\n    display: block;\n    padding: var(--menu-header-padding-y) var(--menu-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--font-size-sm);\n    color: var(--menu-header-color);\n    white-space: nowrap;\n  }\n  .menu-text {\n    display: block;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    color: var(--fg-2);\n  }\n  .submenu {\n    position: relative;\n  }\n  .submenu > .menu-item {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .submenu > .menu-item::after {\n    display: inline-block;\n    flex-shrink: 0;\n    width: 0.375em;\n    height: 0.375em;\n    margin-inline-start: auto;\n    content: \"\";\n    border-color: currentcolor;\n    border-style: solid;\n    border-width: 0 0.125em 0.125em 0;\n    transform: rotate(-45deg);\n  }\n  [dir=rtl] .submenu > .menu-item::after {\n    transform: rotate(135deg);\n  }\n  .submenu > .menu {\n    top: 0;\n    margin-top: calc(-1 * var(--menu-padding-y));\n  }\n  .submenu:hover > .menu-item, .submenu:focus-within > .menu-item {\n    color: var(--menu-item-hover-color);\n    background-color: var(--menu-item-hover-bg);\n  }\n  .submenu.show > .menu-item {\n    color: var(--menu-item-hover-color);\n    background-color: var(--menu-item-hover-bg);\n  }\n  @media (max-width: 575.98px) {\n    .submenu:has(.submenu-stacked) {\n      position: static;\n    }\n    .submenu-stacked {\n      position: absolute;\n      inset: 0;\n      z-index: 1;\n      display: flex;\n      flex-direction: column;\n      gap: var(--menu-gap);\n      min-width: 0;\n      padding: var(--menu-padding-y) var(--menu-padding-x);\n      background-color: var(--menu-bg);\n      border: 0;\n      border-radius: 0;\n      box-shadow: none;\n    }\n    .submenu-back {\n      display: flex;\n      gap: var(--menu-item-gap);\n      align-items: center;\n      padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n      font-weight: var(--font-weight-semibold, 600);\n      color: var(--menu-item-color);\n    }\n    .submenu-back::before {\n      display: inline-block;\n      flex-shrink: 0;\n      width: 0.375em;\n      height: 0.375em;\n      content: \"\";\n      border-color: currentcolor;\n      border-style: solid;\n      border-width: 0.125em 0 0 0.125em;\n      transform: rotate(-45deg);\n    }\n    [dir=rtl] .submenu-back::before {\n      border-width: 0 0.125em 0.125em 0;\n    }\n    .submenu-dimmed {\n      pointer-events: none;\n      filter: blur(2px);\n      opacity: 0.3;\n    }\n  }\n}\n@layer components {\n  .list-group {\n    --list-group-color: var(--fg-body);\n    --list-group-bg: var(--bg-body);\n    --list-group-border-color: var(--border-color);\n    --list-group-border-width: var(--border-width);\n    --list-group-border-radius: var(--border-radius);\n    --list-group-item-padding-x: 1rem;\n    --list-group-item-padding-y: 0.5rem;\n    --list-group-action-color: var(--fg-2);\n    --list-group-action-hover-color: var(--fg-1);\n    --list-group-action-hover-bg: var(--bg-1);\n    --list-group-action-active-color: var(--fg-body);\n    --list-group-action-active-bg: var(--bg-2);\n    --list-group-disabled-color: var(--fg-3);\n    --list-group-disabled-bg: var(--bg-body);\n    --list-group-active-color: var(--primary-contrast);\n    --list-group-active-bg: var(--primary-bg);\n    --list-group-active-border-color: var(--primary-bg);\n    display: flex;\n    flex-direction: column;\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    border-radius: var(--list-group-border-radius);\n  }\n  .list-group-numbered {\n    list-style-type: none;\n    counter-reset: section;\n  }\n  .list-group-numbered > .list-group-item::before {\n    content: counters(section, \".\") \". \";\n    counter-increment: section;\n  }\n  .list-group-item {\n    position: relative;\n    display: block;\n    padding: var(--list-group-item-padding-y) var(--list-group-item-padding-x);\n    color: var(--theme-text, var(--list-group-color));\n    background-color: var(--theme-bg-subtle, var(--list-group-bg));\n    border: var(--list-group-border-width) solid var(--theme-border, var(--list-group-border-color));\n  }\n  .list-group-item:first-child {\n    border-start-start-radius: inherit;\n    border-start-end-radius: inherit;\n  }\n  .list-group-item:last-child {\n    border-end-start-radius: inherit;\n    border-end-end-radius: inherit;\n  }\n  .list-group-item.disabled, .list-group-item:disabled {\n    color: var(--list-group-disabled-color);\n    pointer-events: none;\n    background-color: var(--list-group-disabled-bg);\n  }\n  .list-group-item.active {\n    z-index: 2;\n    color: var(--list-group-active-color);\n    background-color: var(--list-group-active-bg);\n    border-color: var(--list-group-active-border-color);\n  }\n  .list-group-item + .list-group-item {\n    border-block-start-width: 0;\n  }\n  .list-group-item + .list-group-item.active {\n    margin-top: calc(-1 * var(--list-group-border-width));\n    border-block-start-width: var(--list-group-border-width);\n  }\n  .list-group-item-action {\n    width: 100%;\n    color: var(--theme-text, var(--list-group-action-color));\n    text-align: inherit;\n    text-decoration: none;\n  }\n  .list-group-item-action:not(.active):hover, .list-group-item-action:not(.active):focus {\n    z-index: 1;\n    color: var(--theme-text-emphasis, var(--list-group-action-hover-color));\n    text-decoration: none;\n    background-color: var(--theme-bg-muted, var(--list-group-action-hover-bg));\n  }\n  .list-group-item-action:not(.active):active {\n    color: var(--theme-text-emphasis, var(--list-group-action-active-color));\n    background-color: var(--theme-bg-muted, var(--list-group-action-active-bg));\n  }\n  .list-group-horizontal {\n    flex-direction: row;\n  }\n  .list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n    border-end-start-radius: var(--list-group-border-radius);\n    border-start-end-radius: 0;\n  }\n  .list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n    border-start-end-radius: var(--list-group-border-radius);\n    border-end-start-radius: 0;\n  }\n  .list-group-horizontal > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal > .list-group-item + .list-group-item {\n    border-block-start-width: var(--list-group-border-width);\n    border-inline-start-width: 0;\n  }\n  .list-group-horizontal > .list-group-item + .list-group-item.active {\n    margin-inline-start: calc(-1 * var(--list-group-border-width));\n    border-inline-start-width: var(--list-group-border-width);\n  }\n  @media (width >= 576px) {\n    .list-group-horizontal-sm {\n      flex-direction: row;\n    }\n    .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .list-group-horizontal-sm > .list-group-item.active {\n      margin-top: 0;\n    }\n    .list-group-horizontal-sm > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @media (width >= 768px) {\n    .list-group-horizontal-md {\n      flex-direction: row;\n    }\n    .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .list-group-horizontal-md > .list-group-item.active {\n      margin-top: 0;\n    }\n    .list-group-horizontal-md > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @media (width >= 1024px) {\n    .list-group-horizontal-lg {\n      flex-direction: row;\n    }\n    .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .list-group-horizontal-lg > .list-group-item.active {\n      margin-top: 0;\n    }\n    .list-group-horizontal-lg > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @media (width >= 1280px) {\n    .list-group-horizontal-xl {\n      flex-direction: row;\n    }\n    .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .list-group-horizontal-xl > .list-group-item.active {\n      margin-top: 0;\n    }\n    .list-group-horizontal-xl > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @media (width >= 1536px) {\n    .list-group-horizontal-2xl {\n      flex-direction: row;\n    }\n    .list-group-horizontal-2xl > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .list-group-horizontal-2xl > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .list-group-horizontal-2xl > .list-group-item.active {\n      margin-top: 0;\n    }\n    .list-group-horizontal-2xl > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .list-group-horizontal-2xl > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  .list-group-flush {\n    border-radius: 0;\n  }\n  .list-group-flush > .list-group-item {\n    border-width: 0 0 var(--list-group-border-width);\n  }\n  .list-group-flush > .list-group-item:last-child {\n    border-block-end-width: 0;\n  }\n}\n@layer components {\n  .nav {\n    --nav-gap: 0.125rem;\n    --nav-link-gap: 0.5rem;\n    --nav-link-align: center;\n    --nav-link-justify: center;\n    --nav-link-padding-x: 0.75rem;\n    --nav-link-padding-y: 0.375rem;\n    --nav-link-color: var(--fg-2);\n    --nav-link-hover-color: var(--fg-1);\n    --nav-link-hover-bg: var(--bg-1);\n    --nav-link-active-color: var(--fg-body);\n    --nav-link-active-bg: var(--bg-2);\n    --nav-link-disabled-color: var(--fg-4);\n    --nav-link-border-width: var(--border-width);\n    --nav-link-transition-property: color, background-color, border-color;\n    --nav-link-transition-timing: 0.15s ease-in-out;\n    --nav-link-transition: var(--nav-link-transition-property) var(--nav-link-transition-timing);\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style: none;\n  }\n  .nav-item {\n    display: flex;\n  }\n  .nav-link {\n    display: flex;\n    gap: var(--nav-link-gap);\n    align-items: var(--nav-link-align);\n    justify-content: var(--nav-link-justify);\n    padding: var(--nav-link-padding-y) var(--nav-link-padding-x);\n    font-weight: var(--nav-link-font-weight);\n    color: var(--nav-link-color);\n    text-decoration: none;\n    white-space: nowrap;\n    background: none;\n    border: var(--nav-link-border-width) solid transparent;\n    border-radius: var(--border-radius);\n    transition: var(--nav-link-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .nav-link {\n      transition: none;\n    }\n  }\n  .nav-link:hover, .nav-link:focus {\n    color: var(--nav-link-hover-color);\n    background-color: var(--nav-link-hover-bg);\n  }\n  .nav-link:focus-visible {\n    --focus-ring-offset: 1px;\n    color: var(--nav-link-hover-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .nav-link.active, .nav-link:active {\n    color: var(--nav-link-active-color);\n    background-color: var(--nav-link-active-bg);\n  }\n  .nav-link.disabled, .nav-link:disabled {\n    color: var(--nav-link-disabled-color);\n    pointer-events: none;\n    cursor: default;\n  }\n  .nav-tabs {\n    --nav-tabs-border-width: var(--border-width);\n    --nav-tabs-border-color: var(--border-color);\n    --nav-tabs-border-radius: var(--border-radius);\n    --nav-tabs-link-hover-border-color: var(--border-subtle);\n    --nav-tabs-link-active-color: var(--fg-color);\n    --nav-tabs-link-active-bg: var(--bg-body);\n    --nav-tabs-link-active-border-color: var(--border-color) var(--border-color) var(--bg-body);\n    box-shadow: inset 0 calc(-1 * var(--nav-tabs-border-width)) 0 var(--nav-tabs-border-color);\n  }\n  .nav-tabs .nav-link {\n    border: var(--nav-tabs-border-width) solid transparent;\n    border-bottom-color: var(--nav-tabs-border-color);\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .nav-tabs .nav-link:hover {\n    isolation: isolate;\n    border-color: var(--nav-tabs-link-hover-border-color);\n    border-bottom-color: var(--nav-tabs-border-color);\n  }\n  .nav-tabs .nav-link.active,\n  .nav-tabs .nav-item.show .nav-link {\n    color: var(--nav-tabs-link-active-color);\n    background-color: var(--nav-tabs-link-active-bg);\n    border-color: var(--nav-tabs-link-active-border-color);\n    border-bottom-color: var(--nav-tabs-link-active-bg);\n  }\n  .nav-tabs .menu {\n    margin-top: calc(-1 * var(--nav-tabs-border-width));\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .nav-pills {\n    --nav-pills-link-active-color: var(--primary-contrast);\n    --nav-pills-link-active-bg: var(--primary-bg);\n  }\n  .nav-pills .nav-link.active,\n  .nav-pills .show > .nav-link {\n    color: var(--nav-pills-link-active-color);\n    background-color: var(--nav-pills-link-active-bg);\n  }\n  .nav-underline {\n    --nav-gap: 1rem;\n    --nav-link-active-bg: transparent;\n    --nav-underline-border-width: 0.125rem;\n    --nav-underline-link-active-color: var(--fg-color);\n  }\n  .nav-underline .nav-link {\n    padding-inline: 0;\n    border: 0;\n    border-block-end: var(--nav-underline-border-width) solid transparent;\n    border-radius: 0;\n  }\n  .nav-underline .nav-link:hover, .nav-underline .nav-link:focus {\n    border-block-end-color: currentcolor;\n  }\n  .nav-underline .nav-link.active,\n  .nav-underline .show > .nav-link {\n    font-weight: 700;\n    color: var(--nav-underline-link-active-color);\n    border-block-end-color: currentcolor;\n  }\n  .nav-fill > .nav-link,\n  .nav-fill .nav-item {\n    flex: 1 1 auto;\n    text-align: center;\n  }\n  .nav-justified > .nav-link,\n  .nav-justified .nav-item {\n    flex-grow: 1;\n    flex-basis: 0;\n    text-align: center;\n  }\n  .nav-fill .nav-item .nav-link,\n  .nav-justified .nav-item .nav-link {\n    width: 100%;\n  }\n  .tab-content > .tab-pane {\n    display: none;\n  }\n  .tab-content > .active {\n    display: block;\n  }\n}\n@layer components {\n  .nav-overflow {\n    flex-wrap: nowrap;\n    min-width: 0;\n  }\n  .nav-overflow-item {\n    flex-shrink: 0;\n    margin-inline-start: auto;\n  }\n  .nav-overflow [data-bs-nav-overflow=true] {\n    display: none;\n  }\n  .nav-overflow-keep {\n    flex-shrink: 0;\n  }\n}\n@layer components {\n  .navbar {\n    --navbar-padding-x: 0;\n    --navbar-padding-y: 0.5rem;\n    --navbar-color: var(--fg-2);\n    --navbar-hover-color: var(--fg-1);\n    --navbar-disabled-color: var(--fg-3);\n    --navbar-active-color: var(--fg-body);\n    --navbar-brand-padding-y: 0.75rem;\n    --navbar-brand-margin-end: 1rem;\n    --navbar-brand-font-size: var(--font-size-md);\n    --navbar-brand-font-weight: var(--font-weight-medium);\n    --navbar-brand-color: var(--fg-body);\n    --navbar-brand-hover-color: var(--fg-body);\n    --navbar-nav-link-padding-x: 0.75rem;\n    --navbar-toggler-width: 2rem;\n    --navbar-toggler-padding-y: 0.25rem;\n    --navbar-toggler-padding-x: 0.75rem;\n    --navbar-toggler-font-size: var(--font-size-lg);\n    --navbar-toggler-border-color: color-mix(in oklch, var(--fg-body) 15%, transparent);\n    --navbar-toggler-border-radius: var(--border-radius);\n    --navbar-toggler-transition: box-shadow 0.15s ease-in-out;\n    position: relative;\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: space-between;\n    padding: var(--navbar-padding-y) var(--navbar-padding-x);\n    container-type: inline-size;\n    color: var(--navbar-color, var(--fg-body));\n    background-color: var(--navbar-bg, var(--bg-body));\n  }\n  .navbar > .container-2xl, .navbar > .container-xl, .navbar > .container-lg, .navbar > .container-md, .navbar > .container-sm, .navbar > .container,\n  .navbar > .container-fluid {\n    display: flex;\n    flex-wrap: inherit;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .navbar-brand {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    margin-inline-end: var(--navbar-brand-margin-end);\n    font-size: var(--navbar-brand-font-size);\n    font-weight: var(--navbar-brand-font-weight);\n    color: var(--navbar-brand-color);\n    text-decoration: none;\n    white-space: nowrap;\n  }\n  .navbar-brand:hover, .navbar-brand:focus {\n    color: var(--navbar-brand-hover-color);\n  }\n  .navbar-nav {\n    --nav-gap: 0.25rem;\n    --nav-link-gap: 0.5rem;\n    --nav-link-padding-x: 0.5rem;\n    --nav-link-padding-y: 0.375rem;\n    --nav-link-color: var(--navbar-color);\n    --nav-link-border-width: var(--border-width);\n    --nav-link-hover-color: var(--navbar-hover-color);\n    --nav-link-hover-bg: transparent;\n    --nav-link-active-color: var(--navbar-active-color);\n    --nav-link-active-bg: transparent;\n    --nav-link-disabled-color: var(--navbar-disabled-color);\n    display: flex;\n    flex-direction: column;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style: none;\n  }\n  .navbar-nav .nav-link.active, .navbar-nav .nav-link.show {\n    color: var(--navbar-active-color);\n    border: var(--nav-link-border-width) solid var(--nav-link-border-color, transparent);\n  }\n  .navbar-text {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    color: var(--navbar-color);\n  }\n  .navbar-text a,\n  .navbar-text a:hover,\n  .navbar-text a:focus {\n    color: var(--navbar-active-color);\n  }\n  .navbar-toggler {\n    --btn-bg: transparent;\n    --btn-hover-bg: var(--bg-2);\n  }\n  .navbar-expand > .container,\n  .navbar-expand > .container-fluid {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand .navbar-nav {\n    --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n    flex-direction: row;\n  }\n  .navbar-expand .navbar-toggler {\n    display: none !important;\n  }\n  .navbar-expand .offcanvas {\n    position: static;\n    z-index: auto;\n    flex-grow: 1;\n    width: auto !important;\n    height: auto !important;\n    visibility: visible !important;\n    background-color: transparent !important;\n    border: 0 !important;\n    transform: none !important;\n    box-shadow: none;\n    transition: none;\n  }\n  .navbar-expand .offcanvas .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand .offcanvas .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    flex-direction: row;\n    align-items: center;\n    padding: 0;\n    overflow-y: visible;\n  }\n  .navbar-expand {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  @container (width >= 576px) {\n    .navbar-expand-sm > .container,\n    .navbar-expand-sm > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .navbar-expand-sm .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .navbar-expand-sm .navbar-toggler {\n      display: none !important;\n    }\n    .navbar-expand-sm .offcanvas {\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .navbar-expand-sm .offcanvas .offcanvas-header {\n      display: none;\n    }\n    .navbar-expand-sm .offcanvas .offcanvas-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 768px) {\n    .navbar-expand-md > .container,\n    .navbar-expand-md > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .navbar-expand-md .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .navbar-expand-md .navbar-toggler {\n      display: none !important;\n    }\n    .navbar-expand-md .offcanvas {\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .navbar-expand-md .offcanvas .offcanvas-header {\n      display: none;\n    }\n    .navbar-expand-md .offcanvas .offcanvas-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1024px) {\n    .navbar-expand-lg > .container,\n    .navbar-expand-lg > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .navbar-expand-lg .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .navbar-expand-lg .navbar-toggler {\n      display: none !important;\n    }\n    .navbar-expand-lg .offcanvas {\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .navbar-expand-lg .offcanvas .offcanvas-header {\n      display: none;\n    }\n    .navbar-expand-lg .offcanvas .offcanvas-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1280px) {\n    .navbar-expand-xl > .container,\n    .navbar-expand-xl > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .navbar-expand-xl .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .navbar-expand-xl .navbar-toggler {\n      display: none !important;\n    }\n    .navbar-expand-xl .offcanvas {\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .navbar-expand-xl .offcanvas .offcanvas-header {\n      display: none;\n    }\n    .navbar-expand-xl .offcanvas .offcanvas-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1536px) {\n    .navbar-expand-2xl > .container,\n    .navbar-expand-2xl > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .navbar-expand-2xl .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .navbar-expand-2xl .navbar-toggler {\n      display: none !important;\n    }\n    .navbar-expand-2xl .offcanvas {\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .navbar-expand-2xl .offcanvas .offcanvas-header {\n      display: none;\n    }\n    .navbar-expand-2xl .offcanvas .offcanvas-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  .navbar[data-bs-theme=dark] {\n    --navbar-color: color-mix(in oklch, var(--white) 0.55, transparent);\n    --navbar-hover-color: color-mix(in oklch, var(--white) 0.75, transparent);\n    --navbar-disabled-color: color-mix(in oklch, var(--white) 0.25, transparent);\n    --navbar-active-color: var(--white);\n    --navbar-brand-color: var(--white);\n    --navbar-brand-hover-color: var(--white);\n    --navbar-toggler-border-color: color-mix(in oklch, var(--white) 0.1, transparent);\n  }\n}\n.offcanvas, .offcanvas-2xl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm {\n  --offcanvas-inset: var(--spacer);\n  --offcanvas-zindex: 1045;\n  --offcanvas-width: 400px;\n  --offcanvas-height: 30vh;\n  --offcanvas-padding-x: var(--spacer);\n  --offcanvas-padding-y: var(--spacer);\n  --offcanvas-color: var(--fg-body);\n  --offcanvas-bg: var(--bg-body);\n  --offcanvas-border-width: var(--border-width);\n  --offcanvas-border-color: var(--border-color-translucent);\n  --offcanvas-border-radius: var(--border-radius-lg);\n  --offcanvas-box-shadow: var(--box-shadow-lg);\n  --offcanvas-transition: transform 0.3s ease-in-out;\n  --offcanvas-title-line-height: 1.5;\n}\n\n@layer components {\n  @media (width < 576px) {\n    .offcanvas-sm {\n      position: fixed;\n      z-index: var(--offcanvas-zindex);\n      display: flex;\n      flex-direction: column;\n      max-width: calc(100% - var(--offcanvas-inset) * 2);\n      max-height: calc(100% - var(--offcanvas-inset) * 2);\n      color: var(--offcanvas-color);\n      visibility: hidden;\n      background-color: var(--offcanvas-bg);\n      background-clip: padding-box;\n      border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n      border-radius: var(--offcanvas-border-radius);\n      outline: 0;\n      box-shadow: var(--offcanvas-box-shadow);\n      transition: var(--offcanvas-transition);\n    }\n  }\n  @media (width < 576px) and (prefers-reduced-motion: reduce) {\n    .offcanvas-sm {\n      transition: none;\n    }\n  }\n  @media (width < 576px) {\n    .offcanvas-sm.offcanvas-start {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-start: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(-100%);\n    }\n    :root:dir(rtl) .offcanvas-sm.offcanvas-start {\n      transform: translateX(100%);\n    }\n    .offcanvas-sm.offcanvas-end {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-end: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(100%);\n    }\n    :root:dir(rtl) .offcanvas-sm.offcanvas-end {\n      transform: translateX(-100%);\n    }\n    .offcanvas-sm.offcanvas-top {\n      inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n      height: var(--offcanvas-height);\n      transform: translateY(-100%);\n    }\n    .offcanvas-sm.offcanvas-bottom {\n      inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n      height: var(--offcanvas-height);\n      transform: translateY(100%);\n    }\n    .offcanvas-sm.offcanvas-fullscreen {\n      inset: var(--offcanvas-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n      transform: translateY(100%);\n    }\n    .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) {\n      transform: none;\n    }\n    .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show {\n      visibility: visible;\n    }\n  }\n  @media (width >= 576px) {\n    .offcanvas-sm {\n      --offcanvas-height: auto;\n      --offcanvas-border-width: 0;\n      background-color: transparent !important;\n    }\n    .offcanvas-sm .offcanvas-header {\n      display: none;\n    }\n    .offcanvas-sm .offcanvas-body {\n      flex-grow: 0;\n      flex-direction: row;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 768px) {\n    .offcanvas-md {\n      position: fixed;\n      z-index: var(--offcanvas-zindex);\n      display: flex;\n      flex-direction: column;\n      max-width: calc(100% - var(--offcanvas-inset) * 2);\n      max-height: calc(100% - var(--offcanvas-inset) * 2);\n      color: var(--offcanvas-color);\n      visibility: hidden;\n      background-color: var(--offcanvas-bg);\n      background-clip: padding-box;\n      border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n      border-radius: var(--offcanvas-border-radius);\n      outline: 0;\n      box-shadow: var(--offcanvas-box-shadow);\n      transition: var(--offcanvas-transition);\n    }\n  }\n  @media (width < 768px) and (prefers-reduced-motion: reduce) {\n    .offcanvas-md {\n      transition: none;\n    }\n  }\n  @media (width < 768px) {\n    .offcanvas-md.offcanvas-start {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-start: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(-100%);\n    }\n    :root:dir(rtl) .offcanvas-md.offcanvas-start {\n      transform: translateX(100%);\n    }\n    .offcanvas-md.offcanvas-end {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-end: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(100%);\n    }\n    :root:dir(rtl) .offcanvas-md.offcanvas-end {\n      transform: translateX(-100%);\n    }\n    .offcanvas-md.offcanvas-top {\n      inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n      height: var(--offcanvas-height);\n      transform: translateY(-100%);\n    }\n    .offcanvas-md.offcanvas-bottom {\n      inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n      height: var(--offcanvas-height);\n      transform: translateY(100%);\n    }\n    .offcanvas-md.offcanvas-fullscreen {\n      inset: var(--offcanvas-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n      transform: translateY(100%);\n    }\n    .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) {\n      transform: none;\n    }\n    .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show {\n      visibility: visible;\n    }\n  }\n  @media (width >= 768px) {\n    .offcanvas-md {\n      --offcanvas-height: auto;\n      --offcanvas-border-width: 0;\n      background-color: transparent !important;\n    }\n    .offcanvas-md .offcanvas-header {\n      display: none;\n    }\n    .offcanvas-md .offcanvas-body {\n      flex-grow: 0;\n      flex-direction: row;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1024px) {\n    .offcanvas-lg {\n      position: fixed;\n      z-index: var(--offcanvas-zindex);\n      display: flex;\n      flex-direction: column;\n      max-width: calc(100% - var(--offcanvas-inset) * 2);\n      max-height: calc(100% - var(--offcanvas-inset) * 2);\n      color: var(--offcanvas-color);\n      visibility: hidden;\n      background-color: var(--offcanvas-bg);\n      background-clip: padding-box;\n      border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n      border-radius: var(--offcanvas-border-radius);\n      outline: 0;\n      box-shadow: var(--offcanvas-box-shadow);\n      transition: var(--offcanvas-transition);\n    }\n  }\n  @media (width < 1024px) and (prefers-reduced-motion: reduce) {\n    .offcanvas-lg {\n      transition: none;\n    }\n  }\n  @media (width < 1024px) {\n    .offcanvas-lg.offcanvas-start {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-start: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(-100%);\n    }\n    :root:dir(rtl) .offcanvas-lg.offcanvas-start {\n      transform: translateX(100%);\n    }\n    .offcanvas-lg.offcanvas-end {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-end: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(100%);\n    }\n    :root:dir(rtl) .offcanvas-lg.offcanvas-end {\n      transform: translateX(-100%);\n    }\n    .offcanvas-lg.offcanvas-top {\n      inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n      height: var(--offcanvas-height);\n      transform: translateY(-100%);\n    }\n    .offcanvas-lg.offcanvas-bottom {\n      inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n      height: var(--offcanvas-height);\n      transform: translateY(100%);\n    }\n    .offcanvas-lg.offcanvas-fullscreen {\n      inset: var(--offcanvas-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n      transform: translateY(100%);\n    }\n    .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) {\n      transform: none;\n    }\n    .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show {\n      visibility: visible;\n    }\n  }\n  @media (width >= 1024px) {\n    .offcanvas-lg {\n      --offcanvas-height: auto;\n      --offcanvas-border-width: 0;\n      background-color: transparent !important;\n    }\n    .offcanvas-lg .offcanvas-header {\n      display: none;\n    }\n    .offcanvas-lg .offcanvas-body {\n      flex-grow: 0;\n      flex-direction: row;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1280px) {\n    .offcanvas-xl {\n      position: fixed;\n      z-index: var(--offcanvas-zindex);\n      display: flex;\n      flex-direction: column;\n      max-width: calc(100% - var(--offcanvas-inset) * 2);\n      max-height: calc(100% - var(--offcanvas-inset) * 2);\n      color: var(--offcanvas-color);\n      visibility: hidden;\n      background-color: var(--offcanvas-bg);\n      background-clip: padding-box;\n      border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n      border-radius: var(--offcanvas-border-radius);\n      outline: 0;\n      box-shadow: var(--offcanvas-box-shadow);\n      transition: var(--offcanvas-transition);\n    }\n  }\n  @media (width < 1280px) and (prefers-reduced-motion: reduce) {\n    .offcanvas-xl {\n      transition: none;\n    }\n  }\n  @media (width < 1280px) {\n    .offcanvas-xl.offcanvas-start {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-start: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(-100%);\n    }\n    :root:dir(rtl) .offcanvas-xl.offcanvas-start {\n      transform: translateX(100%);\n    }\n    .offcanvas-xl.offcanvas-end {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-end: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(100%);\n    }\n    :root:dir(rtl) .offcanvas-xl.offcanvas-end {\n      transform: translateX(-100%);\n    }\n    .offcanvas-xl.offcanvas-top {\n      inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n      height: var(--offcanvas-height);\n      transform: translateY(-100%);\n    }\n    .offcanvas-xl.offcanvas-bottom {\n      inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n      height: var(--offcanvas-height);\n      transform: translateY(100%);\n    }\n    .offcanvas-xl.offcanvas-fullscreen {\n      inset: var(--offcanvas-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n      transform: translateY(100%);\n    }\n    .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) {\n      transform: none;\n    }\n    .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show {\n      visibility: visible;\n    }\n  }\n  @media (width >= 1280px) {\n    .offcanvas-xl {\n      --offcanvas-height: auto;\n      --offcanvas-border-width: 0;\n      background-color: transparent !important;\n    }\n    .offcanvas-xl .offcanvas-header {\n      display: none;\n    }\n    .offcanvas-xl .offcanvas-body {\n      flex-grow: 0;\n      flex-direction: row;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1536px) {\n    .offcanvas-2xl {\n      position: fixed;\n      z-index: var(--offcanvas-zindex);\n      display: flex;\n      flex-direction: column;\n      max-width: calc(100% - var(--offcanvas-inset) * 2);\n      max-height: calc(100% - var(--offcanvas-inset) * 2);\n      color: var(--offcanvas-color);\n      visibility: hidden;\n      background-color: var(--offcanvas-bg);\n      background-clip: padding-box;\n      border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n      border-radius: var(--offcanvas-border-radius);\n      outline: 0;\n      box-shadow: var(--offcanvas-box-shadow);\n      transition: var(--offcanvas-transition);\n    }\n  }\n  @media (width < 1536px) and (prefers-reduced-motion: reduce) {\n    .offcanvas-2xl {\n      transition: none;\n    }\n  }\n  @media (width < 1536px) {\n    .offcanvas-2xl.offcanvas-start {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-start: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(-100%);\n    }\n    :root:dir(rtl) .offcanvas-2xl.offcanvas-start {\n      transform: translateX(100%);\n    }\n    .offcanvas-2xl.offcanvas-end {\n      inset-block: var(--offcanvas-inset);\n      inset-inline-end: var(--offcanvas-inset);\n      width: var(--offcanvas-width);\n      transform: translateX(100%);\n    }\n    :root:dir(rtl) .offcanvas-2xl.offcanvas-end {\n      transform: translateX(-100%);\n    }\n    .offcanvas-2xl.offcanvas-top {\n      inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n      height: var(--offcanvas-height);\n      transform: translateY(-100%);\n    }\n    .offcanvas-2xl.offcanvas-bottom {\n      inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n      height: var(--offcanvas-height);\n      transform: translateY(100%);\n    }\n    .offcanvas-2xl.offcanvas-fullscreen {\n      inset: var(--offcanvas-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n      transform: translateY(100%);\n    }\n    .offcanvas-2xl.showing, .offcanvas-2xl.show:not(.hiding) {\n      transform: none;\n    }\n    .offcanvas-2xl.showing, .offcanvas-2xl.hiding, .offcanvas-2xl.show {\n      visibility: visible;\n    }\n  }\n  @media (width >= 1536px) {\n    .offcanvas-2xl {\n      --offcanvas-height: auto;\n      --offcanvas-border-width: 0;\n      background-color: transparent !important;\n    }\n    .offcanvas-2xl .offcanvas-header {\n      display: none;\n    }\n    .offcanvas-2xl .offcanvas-body {\n      flex-grow: 0;\n      flex-direction: row;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  .offcanvas {\n    position: fixed;\n    z-index: var(--offcanvas-zindex);\n    display: flex;\n    flex-direction: column;\n    max-width: calc(100% - var(--offcanvas-inset) * 2);\n    max-height: calc(100% - var(--offcanvas-inset) * 2);\n    color: var(--offcanvas-color);\n    visibility: hidden;\n    background-color: var(--offcanvas-bg);\n    background-clip: padding-box;\n    border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n    border-radius: var(--offcanvas-border-radius);\n    outline: 0;\n    box-shadow: var(--offcanvas-box-shadow);\n    transition: var(--offcanvas-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .offcanvas {\n      transition: none;\n    }\n  }\n  .offcanvas.offcanvas-start {\n    inset-block: var(--offcanvas-inset);\n    inset-inline-start: var(--offcanvas-inset);\n    width: var(--offcanvas-width);\n    transform: translateX(-100%);\n  }\n  :root:dir(rtl) .offcanvas.offcanvas-start {\n    transform: translateX(100%);\n  }\n  .offcanvas.offcanvas-end {\n    inset-block: var(--offcanvas-inset);\n    inset-inline-end: var(--offcanvas-inset);\n    width: var(--offcanvas-width);\n    transform: translateX(100%);\n  }\n  :root:dir(rtl) .offcanvas.offcanvas-end {\n    transform: translateX(-100%);\n  }\n  .offcanvas.offcanvas-top {\n    inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n    height: var(--offcanvas-height);\n    transform: translateY(-100%);\n  }\n  .offcanvas.offcanvas-bottom {\n    inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n    height: var(--offcanvas-height);\n    transform: translateY(100%);\n  }\n  .offcanvas.offcanvas-fullscreen {\n    inset: var(--offcanvas-inset);\n    width: auto;\n    max-width: none;\n    height: auto;\n    max-height: none;\n    transform: translateY(100%);\n  }\n  .offcanvas.showing, .offcanvas.show:not(.hiding) {\n    transform: none;\n  }\n  .offcanvas.showing, .offcanvas.hiding, .offcanvas.show {\n    visibility: visible;\n  }\n  .offcanvas-backdrop {\n    --offcanvas-backdrop-bg: var(--bg-body);\n    --offcanvas-backdrop-opacity: 25%;\n    --offcanvas-backdrop-blur: 8px;\n    position: fixed;\n    inset: 0;\n    z-index: 1040;\n    background-color: color-mix(in oklch, var(--offcanvas-backdrop-bg) var(--offcanvas-backdrop-opacity), transparent);\n    backdrop-filter: blur(var(--offcanvas-backdrop-blur));\n  }\n  .offcanvas-backdrop.fade {\n    opacity: 0;\n  }\n  .offcanvas-backdrop.show {\n    opacity: 1;\n  }\n  .offcanvas-header {\n    display: flex;\n    align-items: center;\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n  }\n  .offcanvas-header .btn-close {\n    padding: calc(var(--offcanvas-padding-y) * 0.5) calc(var(--offcanvas-padding-x) * 0.5);\n    margin-inline-start: auto;\n    margin-inline-end: calc(-0.5 * var(--offcanvas-padding-x));\n    margin-top: calc(-0.5 * var(--offcanvas-padding-y));\n    margin-bottom: calc(-0.5 * var(--offcanvas-padding-y));\n  }\n  .offcanvas-title {\n    margin-bottom: 0;\n    line-height: var(--offcanvas-title-line-height);\n  }\n  .offcanvas-body {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    gap: var(--offcanvas-padding-y);\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n    overflow-y: auto;\n  }\n  .offcanvas-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: 0.5rem;\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n    border-block-start: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n  }\n}\n@layer components {\n  .pagination {\n    --pagination-min-height: var(--btn-input-min-height);\n    --pagination-padding-x: var(--btn-input-padding-x);\n    --pagination-padding-y: var(--btn-input-padding-y);\n    --pagination-font-size: var(--btn-input-font-size);\n    --pagination-color: var(--link-color);\n    --pagination-bg: var(--bg-body);\n    --pagination-border-width: var(--border-width);\n    --pagination-border-color: var(--border-color);\n    --pagination-border-radius: var(--btn-input-border-radius);\n    --pagination-hover-color: var(--link-hover-color);\n    --pagination-hover-bg: var(--bg-1);\n    --pagination-hover-border-color: var(--border-color);\n    --pagination-focus-color: var(--link-hover-color);\n    --pagination-focus-bg: var(--bg-2);\n    --pagination-active-color: var(--primary-contrast);\n    --pagination-active-bg: var(--primary-bg);\n    --pagination-active-border-color: var(--primary-bg);\n    --pagination-disabled-color: var(--fg-3);\n    --pagination-disabled-bg: var(--bg-2);\n    --pagination-disabled-border-color: var(--border-color);\n    display: flex;\n    padding-inline-start: 0;\n    list-style: none;\n  }\n  .page-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: var(--pagination-min-height);\n    padding: var(--pagination-padding-y) var(--pagination-padding-x);\n    font-size: var(--pagination-font-size);\n    color: var(--pagination-color);\n    text-decoration: none;\n    background-color: var(--pagination-bg);\n    border: var(--pagination-border-width) solid var(--pagination-border-color);\n    transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .page-link {\n      transition: none;\n    }\n  }\n  .page-link:hover {\n    z-index: 2;\n    color: var(--pagination-hover-color);\n    background-color: var(--pagination-hover-bg);\n    border-color: var(--pagination-hover-border-color);\n  }\n  .page-link:focus-visible {\n    z-index: 3;\n    color: var(--pagination-focus-color);\n    background-color: var(--pagination-focus-bg);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .page-link.active, .active > .page-link {\n    z-index: 3;\n    color: var(--pagination-active-color);\n    background-color: var(--pagination-active-bg);\n    border-color: var(--pagination-active-border-color);\n  }\n  .page-link.disabled, .disabled > .page-link {\n    color: var(--pagination-disabled-color);\n    pointer-events: none;\n    background-color: var(--pagination-disabled-bg);\n    border-color: var(--pagination-disabled-border-color);\n  }\n  .page-item:not(:first-child) .page-link {\n    margin-inline-start: calc(-1 * var(--pagination-border-width));\n  }\n  .page-item:first-child .page-link {\n    border-start-start-radius: var(--pagination-border-radius);\n    border-end-start-radius: var(--pagination-border-radius);\n  }\n  .page-item:last-child .page-link {\n    border-start-end-radius: var(--pagination-border-radius);\n    border-end-end-radius: var(--pagination-border-radius);\n  }\n  .pagination-sm {\n    --pagination-min-height: var(--bs-btn-input-sm-min-height);\n    --pagination-padding-y: var(--btn-input-sm-padding-y);\n    --pagination-padding-x: var(--btn-input-sm-padding-x);\n    --pagination-font-size: var(--btn-input-sm-font-size);\n    --pagination-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .pagination-lg {\n    --pagination-min-height: var(--bs-btn-input-lg-min-height);\n    --pagination-padding-y: var(--btn-input-lg-padding-y);\n    --pagination-padding-x: var(--btn-input-lg-padding-x);\n    --pagination-font-size: var(--btn-input-lg-font-size);\n    --pagination-border-radius: var(--btn-input-lg-border-radius);\n  }\n}\n@layer components {\n  .placeholder {\n    --placeholder-opacity-max: 0.5;\n    --placeholder-opacity-min: 0.2;\n    display: inline-block;\n    min-height: 1em;\n    vertical-align: middle;\n    cursor: wait;\n    background-color: currentcolor;\n    opacity: var(--placeholder-opacity-max);\n  }\n  .placeholder.btn::before {\n    display: inline-block;\n    content: \"\";\n  }\n  .placeholder-xs {\n    min-height: 0.6em;\n  }\n  .placeholder-sm {\n    min-height: 0.8em;\n  }\n  .placeholder-lg {\n    min-height: 1.2em;\n  }\n  .placeholder-glow .placeholder {\n    animation: placeholder-glow 2s ease-in-out infinite;\n  }\n  @keyframes placeholder-glow {\n    50% {\n      opacity: var(--placeholder-opacity-min);\n    }\n  }\n  .placeholder-wave {\n    mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, calc(1 - var(--placeholder-opacity-min))) 75%, #000 95%);\n    mask-size: 200% 100%;\n    animation: placeholder-wave 2s linear infinite;\n  }\n  @keyframes placeholder-wave {\n    100% {\n      mask-position: -200% 0%;\n    }\n  }\n}\n@layer components {\n  .popover {\n    --popover-zindex: 1070;\n    --popover-max-width: 280px;\n    --popover-font-size: var(--font-size-sm);\n    --popover-bg: var(--bg-body);\n    --popover-border-width: var(--border-width);\n    --popover-border-color: var(--border-color-translucent);\n    --popover-border-radius: var(--border-radius-lg);\n    --popover-inner-border-radius: calc(var(--border-radius-lg) - var(--border-width));\n    --popover-box-shadow: var(--box-shadow);\n    --popover-header-padding-x: 1rem;\n    --popover-header-padding-y: 0.75rem;\n    --popover-header-font-size: var(--font-size-sm);\n    --popover-header-color: inherit;\n    --popover-header-bg: var(--bg-1);\n    --popover-body-padding-x: 1rem;\n    --popover-body-padding-y: 0.75rem;\n    --popover-body-color: var(--fg-body);\n    --popover-arrow-width: 1rem;\n    --popover-arrow-height: 0.5rem;\n    --popover-arrow-border: var(--popover-border-color);\n    z-index: var(--popover-zindex);\n    display: block;\n    max-width: var(--popover-max-width);\n    font-family: var(--body-font-family);\n    font-style: normal;\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    text-align: start;\n    text-decoration: none;\n    text-shadow: none;\n    text-transform: none;\n    letter-spacing: normal;\n    word-break: normal;\n    white-space: normal;\n    word-spacing: normal;\n    line-break: auto;\n    font-size: var(--popover-font-size);\n    word-wrap: break-word;\n    background-color: var(--popover-bg);\n    background-clip: padding-box;\n    border: var(--popover-border-width) solid var(--popover-border-color);\n    border-radius: var(--popover-border-radius);\n    box-shadow: var(--popover-box-shadow);\n  }\n  .popover .popover-arrow {\n    display: block;\n    width: var(--popover-arrow-width);\n    height: var(--popover-arrow-height);\n  }\n  .popover .popover-arrow::before, .popover .popover-arrow::after {\n    position: absolute;\n    display: block;\n    content: \"\";\n    border-color: transparent;\n    border-style: solid;\n    border-width: 0;\n  }\n  .bs-popover-top > .popover-arrow, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow {\n    bottom: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n  }\n  .bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::after {\n    border-width: var(--popover-arrow-height) calc(var(--popover-arrow-width) * 0.5) 0;\n  }\n  .bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::before {\n    bottom: 0;\n    border-block-start-color: var(--popover-arrow-border);\n  }\n  .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::after {\n    bottom: var(--popover-border-width);\n    border-block-start-color: var(--popover-bg);\n  }\n  .bs-popover-end > .popover-arrow, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow {\n    left: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n    width: var(--popover-arrow-height);\n    height: var(--popover-arrow-width);\n  }\n  .bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::after {\n    border-width: calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height) calc(var(--popover-arrow-width) * 0.5) 0;\n  }\n  .bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::before {\n    left: 0;\n    border-inline-end-color: var(--popover-arrow-border);\n  }\n  .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::after {\n    left: var(--popover-border-width);\n    border-inline-end-color: var(--popover-bg);\n  }\n  .bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow {\n    top: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n  }\n  .bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::after {\n    border-width: 0 calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height);\n  }\n  .bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::before {\n    top: 0;\n    border-block-end-color: var(--popover-arrow-border);\n  }\n  .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::after {\n    top: var(--popover-border-width);\n    border-block-end-color: var(--popover-bg);\n  }\n  .bs-popover-bottom .popover-header::before, .bs-popover-auto[data-bs-placement^=bottom] .popover-header::before {\n    position: absolute;\n    top: 0;\n    left: 50%;\n    display: block;\n    width: var(--popover-arrow-width);\n    margin-inline-start: calc(-0.5 * var(--popover-arrow-width));\n    content: \"\";\n    border-block-end: var(--popover-border-width) solid var(--popover-header-bg);\n  }\n  .bs-popover-start > .popover-arrow, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow {\n    right: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n    width: var(--popover-arrow-height);\n    height: var(--popover-arrow-width);\n  }\n  .bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::after {\n    border-width: calc(var(--popover-arrow-width) * 0.5) 0 calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height);\n  }\n  .bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::before {\n    right: 0;\n    border-inline-start-color: var(--popover-arrow-border);\n  }\n  .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::after {\n    right: var(--popover-border-width);\n    border-inline-start-color: var(--popover-bg);\n  }\n  .popover-header {\n    padding: var(--popover-header-padding-y) var(--popover-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--popover-header-font-size);\n    color: var(--popover-header-color);\n    background-color: var(--popover-header-bg);\n    border-block-end: var(--popover-border-width) solid var(--popover-border-color);\n    border-start-start-radius: var(--popover-inner-border-radius);\n    border-start-end-radius: var(--popover-inner-border-radius);\n  }\n  .popover-header:empty {\n    display: none;\n  }\n  .popover-body {\n    padding: var(--popover-body-padding-y) var(--popover-body-padding-x);\n    color: var(--popover-body-color);\n  }\n}\n@layer components {\n  @keyframes progress-bar-stripes {\n    0% {\n      background-position-x: var(--progress-height);\n    }\n  }\n  .progress,\n  .progress-stacked {\n    --progress-height: 1rem;\n    --progress-font-size: var(--font-size-sm);\n    --progress-bg: var(--bg-2);\n    --progress-border-radius: var(--border-radius);\n    --progress-box-shadow: var(--box-shadow-inset);\n    --progress-bar-color: var(--white);\n    --progress-bar-bg: var(--primary-bg);\n    --progress-bar-transition: width 0.6s ease;\n    --progress-bar-animation: progress-bar-stripes 1s linear infinite;\n    display: flex;\n    height: var(--progress-height);\n    overflow: hidden;\n    font-size: var(--progress-font-size);\n    background-color: var(--progress-bg);\n    border-radius: var(--progress-border-radius);\n    box-shadow: var(--progress-box-shadow);\n  }\n  .progress-bar {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    overflow: hidden;\n    color: var(--theme-contrast, var(--progress-bar-color));\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--theme-bg, var(--progress-bar-bg));\n    transition: var(--progress-bar-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .progress-bar {\n      transition: none;\n    }\n  }\n  .progress-bar-striped {\n    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%, transparent);\n    background-size: var(--progress-height) var(--progress-height);\n  }\n  .progress-stacked > .progress {\n    overflow: visible;\n  }\n  .progress-stacked > .progress > .progress-bar {\n    width: 100%;\n  }\n  .progress-bar-animated {\n    animation: var(--progress-bar-animation);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .progress-bar-animated {\n      animation: none;\n    }\n  }\n}\n@layer components {\n  .spinner-grow,\n  .spinner-border {\n    display: inline-block;\n    flex-shrink: 0;\n    width: var(--spinner-width);\n    height: var(--spinner-height);\n    vertical-align: var(--spinner-vertical-align);\n    border-radius: 50%;\n    animation: var(--spinner-animation-speed) linear infinite var(--spinner-animation-name);\n  }\n  @keyframes spinner-border {\n    to {\n      transform: rotate(360deg);\n    }\n  }\n  .spinner-border {\n    --spinner-width: 2rem;\n    --spinner-height: 2rem;\n    --spinner-vertical-align: -0.125em;\n    --spinner-border-width: 0.25em;\n    --spinner-animation-speed: 0.75s;\n    --spinner-animation-name: spinner-border;\n    border: var(--spinner-border-width) solid currentcolor;\n    border-inline-end-color: transparent;\n  }\n  .spinner-border-sm {\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    --spinner-border-width: .2em;\n  }\n  @keyframes spinner-grow {\n    0% {\n      transform: scale(0);\n    }\n    50% {\n      opacity: 1;\n      transform: none;\n    }\n  }\n  .spinner-grow {\n    --spinner-width: 2rem;\n    --spinner-height: 2rem;\n    --spinner-vertical-align: -0.125em;\n    --spinner-animation-speed: 0.75s;\n    --spinner-animation-name: spinner-grow;\n    background-color: currentcolor;\n    opacity: 0;\n  }\n  .spinner-grow-sm {\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .spinner-border,\n    .spinner-grow {\n      --spinner-animation-speed: 1.5s;\n    }\n  }\n}\n.stepper {\n  --stepper-size: 2rem;\n  --stepper-gap: 1rem;\n  --stepper-bg: var(--bg-2);\n  --stepper-track-size: 0.25rem;\n  --stepper-active-color: var(--primary-contrast);\n  --stepper-active-bg: var(--primary-bg);\n  display: grid;\n  grid-auto-rows: 1fr;\n  grid-auto-flow: row;\n  gap: var(--stepper-gap);\n  padding-left: 0;\n  list-style: none;\n  counter-reset: stepper;\n}\n\n.stepper-item {\n  position: relative;\n  display: grid;\n  grid-template-rows: auto;\n  grid-template-columns: var(--stepper-size) auto;\n  gap: 0.5rem;\n  place-items: center;\n  justify-items: start;\n  text-align: center;\n  text-decoration: none;\n}\n.stepper-item::before {\n  position: relative;\n  z-index: 1;\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: center;\n  width: var(--stepper-size);\n  height: var(--stepper-size);\n  padding: 0.5rem;\n  font-weight: 600;\n  line-height: 1;\n  text-align: center;\n  content: counter(stepper);\n  counter-increment: stepper;\n  background-color: var(--stepper-bg);\n  border-radius: 50%;\n}\n.stepper-item::after {\n  position: absolute;\n  top: calc(var(--stepper-gap) * -1);\n  bottom: 100%;\n  left: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n  width: var(--stepper-track-size);\n  content: \"\";\n  background-color: var(--stepper-bg);\n}\n.stepper-item:first-child::after {\n  display: none;\n}\n.stepper-item.active::before, .stepper-item.active::after {\n  color: var(--theme-contrast, var(--stepper-active-color));\n  background-color: var(--theme-bg, var(--stepper-active-bg));\n}\n\n.stepper-horizontal {\n  display: inline-grid;\n  grid-auto-columns: 1fr;\n  grid-auto-flow: column;\n}\n.stepper-horizontal .stepper-item {\n  grid-template-rows: repeat(2, var(--stepper-size));\n  grid-template-columns: auto;\n  justify-items: center;\n}\n.stepper-horizontal .stepper-item::after {\n  top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n  right: 0;\n  bottom: auto;\n  left: calc(-50% - var(--stepper-gap));\n  width: auto;\n  height: var(--stepper-track-size);\n}\n.stepper-horizontal .stepper-item:last-child::after {\n  right: 50%;\n}\n\n@media (width >= 576px) {\n  .stepper-horizontal-sm {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal-sm .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n  }\n  .stepper-horizontal-sm .stepper-item::after {\n    top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    right: 0;\n    bottom: auto;\n    left: calc(-50% - var(--stepper-gap));\n    width: auto;\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal-sm .stepper-item:last-child::after {\n    right: 50%;\n  }\n}\n@media (width >= 768px) {\n  .stepper-horizontal-md {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal-md .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n  }\n  .stepper-horizontal-md .stepper-item::after {\n    top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    right: 0;\n    bottom: auto;\n    left: calc(-50% - var(--stepper-gap));\n    width: auto;\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal-md .stepper-item:last-child::after {\n    right: 50%;\n  }\n}\n@media (width >= 1024px) {\n  .stepper-horizontal-lg {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal-lg .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n  }\n  .stepper-horizontal-lg .stepper-item::after {\n    top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    right: 0;\n    bottom: auto;\n    left: calc(-50% - var(--stepper-gap));\n    width: auto;\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal-lg .stepper-item:last-child::after {\n    right: 50%;\n  }\n}\n@media (width >= 1280px) {\n  .stepper-horizontal-xl {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal-xl .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n  }\n  .stepper-horizontal-xl .stepper-item::after {\n    top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    right: 0;\n    bottom: auto;\n    left: calc(-50% - var(--stepper-gap));\n    width: auto;\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal-xl .stepper-item:last-child::after {\n    right: 50%;\n  }\n}\n@media (width >= 1536px) {\n  .stepper-horizontal-2xl {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal-2xl .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n  }\n  .stepper-horizontal-2xl .stepper-item::after {\n    top: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    right: 0;\n    bottom: auto;\n    left: calc(-50% - var(--stepper-gap));\n    width: auto;\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal-2xl .stepper-item:last-child::after {\n    right: 50%;\n  }\n}\n.stepper-overflow {\n  container-type: inline-size;\n  overflow-x: auto;\n  overscroll-behavior-x: contain;\n  -webkit-overflow-scrolling: touch;\n}\n.stepper-overflow > .stepper {\n  width: max-content;\n  min-width: 100%;\n}\n\n@layer components {\n  .toast {\n    --toast-zindex: 1090;\n    --toast-padding-x: 0.75rem;\n    --toast-padding-y: 0.5rem;\n    --toast-spacing: 1.5rem;\n    --toast-max-width: 350px;\n    --toast-font-size: 0.875rem;\n    --toast-bg: rgba(var(--body-bg-rgb), 0.85);\n    --toast-border-width: var(--border-width);\n    --toast-border-color: var(--border-color-translucent);\n    --toast-border-radius: var(--border-radius);\n    --toast-box-shadow: var(--box-shadow);\n    --toast-header-color: var(--fg-3);\n    --toast-header-bg: rgba(var(--body-bg-rgb), 0.85);\n    --toast-header-border-color: var(--border-color-translucent);\n    width: var(--toast-max-width);\n    max-width: 100%;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color);\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--toast-border-color);\n    box-shadow: var(--toast-box-shadow);\n    border-radius: var(--toast-border-radius);\n  }\n  .toast.showing {\n    opacity: 0;\n  }\n  .toast:not(.show) {\n    display: none;\n  }\n  .toast-container {\n    --toast-zindex: 1090;\n    position: absolute;\n    z-index: var(--toast-zindex);\n    width: max-content;\n    max-width: 100%;\n    pointer-events: none;\n  }\n  .toast-container > :not(:last-child) {\n    margin-bottom: var(--toast-spacing);\n  }\n  .toast-header {\n    display: flex;\n    align-items: center;\n    padding: var(--toast-padding-y) var(--toast-padding-x);\n    color: var(--toast-header-color);\n    background-color: var(--toast-header-bg);\n    background-clip: padding-box;\n    border-block-end: var(--toast-border-width) solid var(--toast-header-border-color);\n    border-start-start-radius: calc(var(--toast-border-radius) - var(--toast-border-width));\n    border-start-end-radius: calc(var(--toast-border-radius) - var(--toast-border-width));\n  }\n  .toast-header .btn-close {\n    margin-inline-start: var(--toast-padding-x);\n    margin-inline-end: calc(-0.5 * var(--toast-padding-x));\n  }\n  .toast-body {\n    padding: var(--toast-padding-x);\n    word-wrap: break-word;\n  }\n}\n.fade {\n  transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n  .fade {\n    transition: none;\n  }\n}\n.fade:not(.show) {\n  opacity: 0;\n}\n\n.collapse:not(.show) {\n  display: none;\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing {\n    transition: none;\n  }\n}\n.collapsing.collapse-horizontal {\n  width: 0;\n  height: auto;\n  transition: width 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing.collapse-horizontal {\n    transition: none;\n  }\n}\n\n@layer helpers {\n  .focus-ring:focus-visible {\n    outline: var(--focus-ring);\n  }\n}\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: 0.375rem;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, 0.5));\n    text-underline-offset: 0.25em;\n    backface-visibility: hidden;\n  }\n  .icon-link > .bi {\n    flex-shrink: 0;\n    width: 1em;\n    height: 1em;\n    fill: currentcolor;\n    transition: 0.2s ease-in-out transform;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .icon-link > .bi {\n      transition: none;\n    }\n  }\n  .icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {\n    transform: var(--icon-link-transform, translate3d(0.25em, 0, 0));\n  }\n}\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: 1030;\n  }\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: 1030;\n  }\n  .sticky-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n  .sticky-bottom {\n    position: sticky;\n    bottom: 0;\n    z-index: 1020;\n  }\n  @media (width >= 576px) {\n    .sticky-sm-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-sm-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 768px) {\n    .sticky-md-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-md-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1024px) {\n    .sticky-lg-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-lg-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1280px) {\n    .sticky-xl-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-xl-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1536px) {\n    .sticky-2xl-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sticky-2xl-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n}\n@layer helpers {\n  .stack-container {\n    container-type: inline-size;\n  }\n  [class*=hstack],\n  [class*=vstack] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n  .vstack {\n    --stack-direction: column;\n    --stack-align-items: stretch;\n  }\n  .hstack {\n    --stack-direction: row;\n    --stack-align-items: flex-start;\n  }\n  @container (width >= 576px) {\n    .vstack-sm {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 576px) {\n    .hstack-sm {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 768px) {\n    .vstack-md {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 768px) {\n    .hstack-md {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1024px) {\n    .vstack-lg {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1024px) {\n    .hstack-lg {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1280px) {\n    .vstack-xl {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1280px) {\n    .hstack-xl {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1536px) {\n    .vstack-2xl {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1536px) {\n    .hstack-2xl {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n}\n@layer helpers {\n  .theme-primary {\n    --theme-base: var(--primary-base);\n    --theme-text: var(--primary-text);\n    --theme-text-emphasis: var(--primary-text-emphasis);\n    --theme-bg: var(--primary-bg);\n    --theme-bg-subtle: var(--primary-bg-subtle);\n    --theme-bg-muted: var(--primary-bg-muted);\n    --theme-border: var(--primary-border);\n    --theme-focus-ring: var(--primary-focus-ring);\n    --theme-contrast: var(--primary-contrast);\n  }\n  .theme-accent {\n    --theme-base: var(--accent-base);\n    --theme-text: var(--accent-text);\n    --theme-text-emphasis: var(--accent-text-emphasis);\n    --theme-bg: var(--accent-bg);\n    --theme-bg-subtle: var(--accent-bg-subtle);\n    --theme-bg-muted: var(--accent-bg-muted);\n    --theme-border: var(--accent-border);\n    --theme-focus-ring: var(--accent-focus-ring);\n    --theme-contrast: var(--accent-contrast);\n  }\n  .theme-success {\n    --theme-base: var(--success-base);\n    --theme-text: var(--success-text);\n    --theme-text-emphasis: var(--success-text-emphasis);\n    --theme-bg: var(--success-bg);\n    --theme-bg-subtle: var(--success-bg-subtle);\n    --theme-bg-muted: var(--success-bg-muted);\n    --theme-border: var(--success-border);\n    --theme-focus-ring: var(--success-focus-ring);\n    --theme-contrast: var(--success-contrast);\n  }\n  .theme-danger {\n    --theme-base: var(--danger-base);\n    --theme-text: var(--danger-text);\n    --theme-text-emphasis: var(--danger-text-emphasis);\n    --theme-bg: var(--danger-bg);\n    --theme-bg-subtle: var(--danger-bg-subtle);\n    --theme-bg-muted: var(--danger-bg-muted);\n    --theme-border: var(--danger-border);\n    --theme-focus-ring: var(--danger-focus-ring);\n    --theme-contrast: var(--danger-contrast);\n  }\n  .theme-warning {\n    --theme-base: var(--warning-base);\n    --theme-text: var(--warning-text);\n    --theme-text-emphasis: var(--warning-text-emphasis);\n    --theme-bg: var(--warning-bg);\n    --theme-bg-subtle: var(--warning-bg-subtle);\n    --theme-bg-muted: var(--warning-bg-muted);\n    --theme-border: var(--warning-border);\n    --theme-focus-ring: var(--warning-focus-ring);\n    --theme-contrast: var(--warning-contrast);\n  }\n  .theme-info {\n    --theme-base: var(--info-base);\n    --theme-text: var(--info-text);\n    --theme-text-emphasis: var(--info-text-emphasis);\n    --theme-bg: var(--info-bg);\n    --theme-bg-subtle: var(--info-bg-subtle);\n    --theme-bg-muted: var(--info-bg-muted);\n    --theme-border: var(--info-border);\n    --theme-focus-ring: var(--info-focus-ring);\n    --theme-contrast: var(--info-contrast);\n  }\n  .theme-inverse {\n    --theme-base: var(--inverse-base);\n    --theme-text: var(--inverse-text);\n    --theme-text-emphasis: var(--inverse-text-emphasis);\n    --theme-bg: var(--inverse-bg);\n    --theme-bg-subtle: var(--inverse-bg-subtle);\n    --theme-bg-muted: var(--inverse-bg-muted);\n    --theme-border: var(--inverse-border);\n    --theme-focus-ring: var(--inverse-focus-ring);\n    --theme-contrast: var(--inverse-contrast);\n  }\n  .theme-secondary {\n    --theme-base: var(--secondary-base);\n    --theme-text: var(--secondary-text);\n    --theme-text-emphasis: var(--secondary-text-emphasis);\n    --theme-bg: var(--secondary-bg);\n    --theme-bg-subtle: var(--secondary-bg-subtle);\n    --theme-bg-muted: var(--secondary-bg-muted);\n    --theme-border: var(--secondary-border);\n    --theme-focus-ring: var(--secondary-focus-ring);\n    --theme-contrast: var(--secondary-contrast);\n  }\n}\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) {\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border: 0 !important;\n  }\n  .visually-hidden:not(caption),\n  .visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) {\n    position: absolute !important;\n  }\n  .visually-hidden *,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) * {\n    overflow: hidden !important;\n  }\n}\n@layer helpers {\n  .stretched-link::after {\n    position: absolute;\n    inset: 0;\n    z-index: 1;\n    content: \"\";\n  }\n}\n@layer helpers {\n  .text-truncate {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n@layer utilities {\n  .align-baseline {\n    vertical-align: baseline;\n  }\n  .align-top {\n    vertical-align: top;\n  }\n  .align-middle {\n    vertical-align: middle;\n  }\n  .align-bottom {\n    vertical-align: bottom;\n  }\n  .align-text-bottom {\n    vertical-align: text-bottom;\n  }\n  .align-text-top {\n    vertical-align: text-top;\n  }\n  [class*=ratio-] {\n    aspect-ratio: var(--ratio);\n  }\n  .ratio-auto {\n    --ratio: auto;\n  }\n  .ratio-1x1 {\n    --ratio: 1 / 1;\n  }\n  .ratio-4x3 {\n    --ratio: 4 / 3;\n  }\n  .ratio-16x9 {\n    --ratio: 16 / 9;\n  }\n  .ratio-21x9 {\n    --ratio: 21 / 9;\n  }\n  .float-start {\n    float: inline-start;\n  }\n  .float-end {\n    float: inline-end;\n  }\n  .float-none {\n    float: none;\n  }\n  .object-fit-contain {\n    object-fit: contain;\n  }\n  .object-fit-cover {\n    object-fit: cover;\n  }\n  .object-fit-fill {\n    object-fit: fill;\n  }\n  .object-fit-scale {\n    object-fit: scale-down;\n  }\n  .object-fit-none {\n    object-fit: none;\n  }\n  .opacity-0 {\n    opacity: 0;\n  }\n  .opacity-25 {\n    opacity: 0.25;\n  }\n  .opacity-50 {\n    opacity: 0.5;\n  }\n  .opacity-75 {\n    opacity: 0.75;\n  }\n  .opacity-100 {\n    opacity: 1;\n  }\n  .overflow-auto {\n    overflow: auto;\n  }\n  .overflow-hidden {\n    overflow: hidden;\n  }\n  .overflow-visible {\n    overflow: visible;\n  }\n  .overflow-scroll {\n    overflow: scroll;\n  }\n  .overflow-x-auto {\n    overflow-x: auto;\n  }\n  .overflow-x-hidden {\n    overflow-x: hidden;\n  }\n  .overflow-x-visible {\n    overflow-x: visible;\n  }\n  .overflow-x-scroll {\n    overflow-x: scroll;\n  }\n  .overflow-y-auto {\n    overflow-y: auto;\n  }\n  .overflow-y-hidden {\n    overflow-y: hidden;\n  }\n  .overflow-y-visible {\n    overflow-y: visible;\n  }\n  .overflow-y-scroll {\n    overflow-y: scroll;\n  }\n  .d-inline {\n    display: inline;\n  }\n  .d-inline-block {\n    display: inline-block;\n  }\n  .d-block {\n    display: block;\n  }\n  .d-grid {\n    display: grid;\n  }\n  .d-inline-grid {\n    display: inline-grid;\n  }\n  .d-table {\n    display: table;\n  }\n  .d-table-row {\n    display: table-row;\n  }\n  .d-table-cell {\n    display: table-cell;\n  }\n  .d-flex {\n    display: flex;\n  }\n  .d-inline-flex {\n    display: inline-flex;\n  }\n  .d-contents {\n    display: contents;\n  }\n  .d-flow-root {\n    display: flow-root;\n  }\n  .d-none {\n    display: none;\n  }\n  .shadow {\n    box-shadow: var(--box-shadow);\n  }\n  .shadow-sm {\n    box-shadow: var(--box-shadow-sm);\n  }\n  .shadow-lg {\n    box-shadow: var(--box-shadow-lg);\n  }\n  .shadow-none {\n    box-shadow: none;\n  }\n  .focus-ring-primary {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-accent {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-success {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-danger {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-warning {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  }\n  .focus-ring-info {\n    --focus-ring-color: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  }\n  .focus-ring-inverse {\n    --focus-ring-color: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  }\n  .focus-ring-secondary {\n    --focus-ring-color: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  }\n  .position-static {\n    position: static;\n  }\n  .position-relative {\n    position: relative;\n  }\n  .position-absolute {\n    position: absolute;\n  }\n  .position-fixed {\n    position: fixed;\n  }\n  .position-sticky {\n    position: sticky;\n  }\n  .top-0 {\n    top: 0;\n  }\n  .top-50 {\n    top: 50%;\n  }\n  .top-100 {\n    top: 100%;\n  }\n  .bottom-0 {\n    bottom: 0;\n  }\n  .bottom-50 {\n    bottom: 50%;\n  }\n  .bottom-100 {\n    bottom: 100%;\n  }\n  .start-0 {\n    left: 0;\n  }\n  .start-50 {\n    left: 50%;\n  }\n  .start-100 {\n    left: 100%;\n  }\n  .end-0 {\n    right: 0;\n  }\n  .end-50 {\n    right: 50%;\n  }\n  .end-100 {\n    right: 100%;\n  }\n  .translate-middle {\n    transform: translate(-50%, -50%);\n  }\n  .translate-middle-x {\n    transform: translateX(-50%);\n  }\n  .translate-middle-y {\n    transform: translateY(-50%);\n  }\n  .border {\n    border: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-0 {\n    border: 0;\n  }\n  .border-top {\n    border-block-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-top-0 {\n    border-block-start: 0;\n  }\n  .border-end {\n    border-inline-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-end-0 {\n    border-inline-end: 0;\n  }\n  .border-bottom {\n    border-block-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-bottom-0 {\n    border-block-end: 0;\n  }\n  .border-start {\n    border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-start-0 {\n    border-inline-start: 0;\n  }\n  .border-block {\n    border-block: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-block-0 {\n    border-block: 0;\n  }\n  .border-inline {\n    border-inline: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-inline-0 {\n    border-inline: 0;\n  }\n  .border-primary {\n    --border-color: var(--blue-500);\n    border-color: var(--border-color);\n  }\n  .border-accent {\n    --border-color: var(--indigo-500);\n    border-color: var(--border-color);\n  }\n  .border-success {\n    --border-color: var(--green-500);\n    border-color: var(--border-color);\n  }\n  .border-danger {\n    --border-color: var(--red-500);\n    border-color: var(--border-color);\n  }\n  .border-warning {\n    --border-color: var(--yellow-500);\n    border-color: var(--border-color);\n  }\n  .border-info {\n    --border-color: var(--cyan-500);\n    border-color: var(--border-color);\n  }\n  .border-inverse {\n    --border-color: light-dark(var(--gray-900), var(--gray-025));\n    border-color: var(--border-color);\n  }\n  .border-secondary {\n    --border-color: light-dark(var(--gray-100), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-bg {\n    --border-color: var(--bg-body);\n    border-color: var(--border-color);\n  }\n  .border-body {\n    --border-color: light-dark(var(--gray-300), var(--gray-800));\n    border-color: var(--border-color);\n  }\n  .border-muted {\n    --border-color: light-dark(var(--gray-200), var(--gray-800));\n    border-color: var(--border-color);\n  }\n  .border-subtle {\n    --border-color: light-dark(var(--gray-100), var(--gray-900));\n    border-color: var(--border-color);\n  }\n  .border-emphasized {\n    --border-color: light-dark(var(--gray-400), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-white {\n    --border-color: var(--white);\n    border-color: var(--border-color);\n  }\n  .border-black {\n    --border-color: var(--black);\n    border-color: var(--border-color);\n  }\n  .border-subtle-primary {\n    --border-color: light-dark(var(--blue-300), var(--blue-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-accent {\n    --border-color: light-dark(var(--indigo-300), var(--indigo-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-success {\n    --border-color: light-dark(var(--green-300), var(--green-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-danger {\n    --border-color: light-dark(var(--red-300), var(--red-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-warning {\n    --border-color: light-dark(var(--yellow-300), var(--yellow-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-info {\n    --border-color: light-dark(var(--cyan-300), var(--cyan-600));\n    border-color: var(--border-color);\n  }\n  .border-subtle-inverse {\n    --border-color: light-dark(var(--gray-400), var(--gray-100));\n    border-color: var(--border-color);\n  }\n  .border-subtle-secondary {\n    --border-color: light-dark(var(--gray-300), var(--gray-600));\n    border-color: var(--border-color);\n  }\n  .border-1 {\n    border-width: 1px;\n  }\n  .border-2 {\n    border-width: 2px;\n  }\n  .border-3 {\n    border-width: 3px;\n  }\n  .border-4 {\n    border-width: 4px;\n  }\n  .border-5 {\n    border-width: 5px;\n  }\n  .border-10 {\n    border-color: color-mix(in oklch, var(--border-color) 10%, transparent);\n  }\n  .border-20 {\n    border-color: color-mix(in oklch, var(--border-color) 20%, transparent);\n  }\n  .border-30 {\n    border-color: color-mix(in oklch, var(--border-color) 30%, transparent);\n  }\n  .border-40 {\n    border-color: color-mix(in oklch, var(--border-color) 40%, transparent);\n  }\n  .border-50 {\n    border-color: color-mix(in oklch, var(--border-color) 50%, transparent);\n  }\n  .border-60 {\n    border-color: color-mix(in oklch, var(--border-color) 60%, transparent);\n  }\n  .border-70 {\n    border-color: color-mix(in oklch, var(--border-color) 70%, transparent);\n  }\n  .border-80 {\n    border-color: color-mix(in oklch, var(--border-color) 80%, transparent);\n  }\n  .border-90 {\n    border-color: color-mix(in oklch, var(--border-color) 90%, transparent);\n  }\n  .border-100 {\n    border-color: var(--border-color);\n  }\n  .w-1 {\n    width: 1rem;\n  }\n  .w-2 {\n    width: 2rem;\n  }\n  .w-3 {\n    width: 3rem;\n  }\n  .w-4 {\n    width: 4rem;\n  }\n  .w-5 {\n    width: 5rem;\n  }\n  .w-6 {\n    width: 6rem;\n  }\n  .w-7 {\n    width: 7rem;\n  }\n  .w-8 {\n    width: 8rem;\n  }\n  .w-9 {\n    width: 9rem;\n  }\n  .w-10 {\n    width: 10rem;\n  }\n  .w-11 {\n    width: 11rem;\n  }\n  .w-12 {\n    width: 12rem;\n  }\n  .w-25 {\n    width: 25%;\n  }\n  .w-50 {\n    width: 50%;\n  }\n  .w-75 {\n    width: 75%;\n  }\n  .w-100 {\n    width: 100%;\n  }\n  .w-auto {\n    width: auto;\n  }\n  .w-min {\n    width: min-content;\n  }\n  .w-max {\n    width: max-content;\n  }\n  .w-fit {\n    width: fit-content;\n  }\n  .max-w-100 {\n    max-width: 100%;\n  }\n  .min-w-0 {\n    min-width: 0;\n  }\n  .min-w-100 {\n    min-width: 100%;\n  }\n  .vw-100 {\n    width: 100vw;\n  }\n  .min-vw-100 {\n    min-width: 100vw;\n  }\n  .h-25 {\n    height: 25%;\n  }\n  .h-50 {\n    height: 50%;\n  }\n  .h-75 {\n    height: 75%;\n  }\n  .h-100 {\n    height: 100%;\n  }\n  .h-auto {\n    height: auto;\n  }\n  .h-min {\n    height: min-content;\n  }\n  .h-max {\n    height: max-content;\n  }\n  .h-fit {\n    height: fit-content;\n  }\n  .max-h-100 {\n    max-height: 100%;\n  }\n  .min-h-0 {\n    min-height: 0;\n  }\n  .min-h-100 {\n    min-height: 100%;\n  }\n  .vh-100 {\n    height: 100vh;\n  }\n  .min-vh-100 {\n    min-height: 100vh;\n  }\n  .flex-fill {\n    flex: 1 1 auto;\n  }\n  .flex-row {\n    flex-direction: row;\n  }\n  .flex-column {\n    flex-direction: column;\n  }\n  .flex-row-reverse {\n    flex-direction: row-reverse;\n  }\n  .flex-column-reverse {\n    flex-direction: column-reverse;\n  }\n  .flex-grow-0 {\n    flex-grow: 0;\n  }\n  .flex-grow-1 {\n    flex-grow: 1;\n  }\n  .flex-shrink-0 {\n    flex-shrink: 0;\n  }\n  .flex-shrink-1 {\n    flex-shrink: 1;\n  }\n  .flex-wrap {\n    flex-wrap: wrap;\n  }\n  .flex-nowrap {\n    flex-wrap: nowrap;\n  }\n  .flex-wrap-reverse {\n    flex-wrap: wrap-reverse;\n  }\n  .justify-content-start {\n    justify-content: flex-start;\n  }\n  .justify-content-end {\n    justify-content: flex-end;\n  }\n  .justify-content-center {\n    justify-content: center;\n  }\n  .justify-content-between {\n    justify-content: space-between;\n  }\n  .justify-content-around {\n    justify-content: space-around;\n  }\n  .justify-content-evenly {\n    justify-content: space-evenly;\n  }\n  .justify-items-start {\n    justify-items: start;\n  }\n  .justify-items-end {\n    justify-items: end;\n  }\n  .justify-items-center {\n    justify-items: center;\n  }\n  .justify-items-stretch {\n    justify-items: stretch;\n  }\n  .justify-self-start {\n    justify-self: flex-start;\n  }\n  .justify-self-end {\n    justify-self: flex-end;\n  }\n  .justify-self-center {\n    justify-self: center;\n  }\n  .align-items-start {\n    align-items: flex-start;\n  }\n  .align-items-end {\n    align-items: flex-end;\n  }\n  .align-items-center {\n    align-items: center;\n  }\n  .align-items-baseline {\n    align-items: baseline;\n  }\n  .align-items-stretch {\n    align-items: stretch;\n  }\n  .align-content-start {\n    align-content: flex-start;\n  }\n  .align-content-end {\n    align-content: flex-end;\n  }\n  .align-content-center {\n    align-content: center;\n  }\n  .align-content-between {\n    align-content: space-between;\n  }\n  .align-content-around {\n    align-content: space-around;\n  }\n  .align-content-stretch {\n    align-content: stretch;\n  }\n  .align-self-auto {\n    align-self: auto;\n  }\n  .align-self-start {\n    align-self: flex-start;\n  }\n  .align-self-end {\n    align-self: flex-end;\n  }\n  .align-self-center {\n    align-self: center;\n  }\n  .align-self-baseline {\n    align-self: baseline;\n  }\n  .align-self-stretch {\n    align-self: stretch;\n  }\n  .place-items-start {\n    place-items: start;\n  }\n  .place-items-end {\n    place-items: end;\n  }\n  .place-items-center {\n    place-items: center;\n  }\n  .place-items-stretch {\n    place-items: stretch;\n  }\n  .grid-cols-3 {\n    --columns: 3;\n  }\n  .grid-cols-4 {\n    --columns: 4;\n  }\n  .grid-cols-6 {\n    --columns: 6;\n  }\n  .grid-cols-fill {\n    grid-column: 1 / -1;\n  }\n  .grid-auto-flow-row {\n    grid-auto-flow: row;\n  }\n  .grid-auto-flow-column {\n    grid-auto-flow: column;\n  }\n  .grid-auto-flow-dense {\n    grid-auto-flow: dense;\n  }\n  .order-first {\n    order: -1;\n  }\n  .order-0 {\n    order: 0;\n  }\n  .order-1 {\n    order: 1;\n  }\n  .order-2 {\n    order: 2;\n  }\n  .order-3 {\n    order: 3;\n  }\n  .order-4 {\n    order: 4;\n  }\n  .order-5 {\n    order: 5;\n  }\n  .order-last {\n    order: 6;\n  }\n  .m-0 {\n    margin: 0;\n  }\n  .m-1 {\n    margin: 0.25rem;\n  }\n  .m-2 {\n    margin: 0.5rem;\n  }\n  .m-3 {\n    margin: 1rem;\n  }\n  .m-4 {\n    margin: 1.5rem;\n  }\n  .m-5 {\n    margin: 3rem;\n  }\n  .m-auto {\n    margin: auto;\n  }\n  .mx-0 {\n    margin-inline: 0;\n  }\n  .mx-1 {\n    margin-inline: 0.25rem;\n  }\n  .mx-2 {\n    margin-inline: 0.5rem;\n  }\n  .mx-3 {\n    margin-inline: 1rem;\n  }\n  .mx-4 {\n    margin-inline: 1.5rem;\n  }\n  .mx-5 {\n    margin-inline: 3rem;\n  }\n  .mx-auto {\n    margin-inline: auto;\n  }\n  .my-0 {\n    margin-block: 0;\n  }\n  .my-1 {\n    margin-block: 0.25rem;\n  }\n  .my-2 {\n    margin-block: 0.5rem;\n  }\n  .my-3 {\n    margin-block: 1rem;\n  }\n  .my-4 {\n    margin-block: 1.5rem;\n  }\n  .my-5 {\n    margin-block: 3rem;\n  }\n  .my-auto {\n    margin-block: auto;\n  }\n  .mt-0 {\n    margin-block-start: 0;\n  }\n  .mt-1 {\n    margin-block-start: 0.25rem;\n  }\n  .mt-2 {\n    margin-block-start: 0.5rem;\n  }\n  .mt-3 {\n    margin-block-start: 1rem;\n  }\n  .mt-4 {\n    margin-block-start: 1.5rem;\n  }\n  .mt-5 {\n    margin-block-start: 3rem;\n  }\n  .mt-auto {\n    margin-block-start: auto;\n  }\n  .me-0 {\n    margin-inline-end: 0;\n  }\n  .me-1 {\n    margin-inline-end: 0.25rem;\n  }\n  .me-2 {\n    margin-inline-end: 0.5rem;\n  }\n  .me-3 {\n    margin-inline-end: 1rem;\n  }\n  .me-4 {\n    margin-inline-end: 1.5rem;\n  }\n  .me-5 {\n    margin-inline-end: 3rem;\n  }\n  .me-auto {\n    margin-inline-end: auto;\n  }\n  .mb-0 {\n    margin-block-end: 0;\n  }\n  .mb-1 {\n    margin-block-end: 0.25rem;\n  }\n  .mb-2 {\n    margin-block-end: 0.5rem;\n  }\n  .mb-3 {\n    margin-block-end: 1rem;\n  }\n  .mb-4 {\n    margin-block-end: 1.5rem;\n  }\n  .mb-5 {\n    margin-block-end: 3rem;\n  }\n  .mb-auto {\n    margin-block-end: auto;\n  }\n  .ms-0 {\n    margin-inline-start: 0;\n  }\n  .ms-1 {\n    margin-inline-start: 0.25rem;\n  }\n  .ms-2 {\n    margin-inline-start: 0.5rem;\n  }\n  .ms-3 {\n    margin-inline-start: 1rem;\n  }\n  .ms-4 {\n    margin-inline-start: 1.5rem;\n  }\n  .ms-5 {\n    margin-inline-start: 3rem;\n  }\n  .ms--1 {\n    margin-inline-start: -0.25rem;\n  }\n  .ms--2 {\n    margin-inline-start: -0.5rem;\n  }\n  .ms-auto {\n    margin-inline-start: auto;\n  }\n  .p-0 {\n    padding: 0;\n  }\n  .p-1 {\n    padding: 0.25rem;\n  }\n  .p-2 {\n    padding: 0.5rem;\n  }\n  .p-3 {\n    padding: 1rem;\n  }\n  .p-4 {\n    padding: 1.5rem;\n  }\n  .p-5 {\n    padding: 3rem;\n  }\n  .px-0 {\n    padding-inline: 0;\n  }\n  .px-1 {\n    padding-inline: 0.25rem;\n  }\n  .px-2 {\n    padding-inline: 0.5rem;\n  }\n  .px-3 {\n    padding-inline: 1rem;\n  }\n  .px-4 {\n    padding-inline: 1.5rem;\n  }\n  .px-5 {\n    padding-inline: 3rem;\n  }\n  .py-0 {\n    padding-block: 0;\n  }\n  .py-1 {\n    padding-block: 0.25rem;\n  }\n  .py-2 {\n    padding-block: 0.5rem;\n  }\n  .py-3 {\n    padding-block: 1rem;\n  }\n  .py-4 {\n    padding-block: 1.5rem;\n  }\n  .py-5 {\n    padding-block: 3rem;\n  }\n  .pt-0 {\n    padding-block-start: 0;\n  }\n  .pt-1 {\n    padding-block-start: 0.25rem;\n  }\n  .pt-2 {\n    padding-block-start: 0.5rem;\n  }\n  .pt-3 {\n    padding-block-start: 1rem;\n  }\n  .pt-4 {\n    padding-block-start: 1.5rem;\n  }\n  .pt-5 {\n    padding-block-start: 3rem;\n  }\n  .pe-0 {\n    padding-inline-end: 0;\n  }\n  .pe-1 {\n    padding-inline-end: 0.25rem;\n  }\n  .pe-2 {\n    padding-inline-end: 0.5rem;\n  }\n  .pe-3 {\n    padding-inline-end: 1rem;\n  }\n  .pe-4 {\n    padding-inline-end: 1.5rem;\n  }\n  .pe-5 {\n    padding-inline-end: 3rem;\n  }\n  .pb-0 {\n    padding-block-end: 0;\n  }\n  .pb-1 {\n    padding-block-end: 0.25rem;\n  }\n  .pb-2 {\n    padding-block-end: 0.5rem;\n  }\n  .pb-3 {\n    padding-block-end: 1rem;\n  }\n  .pb-4 {\n    padding-block-end: 1.5rem;\n  }\n  .pb-5 {\n    padding-block-end: 3rem;\n  }\n  .ps-0 {\n    padding-inline-start: 0;\n  }\n  .ps-1 {\n    padding-inline-start: 0.25rem;\n  }\n  .ps-2 {\n    padding-inline-start: 0.5rem;\n  }\n  .ps-3 {\n    padding-inline-start: 1rem;\n  }\n  .ps-4 {\n    padding-inline-start: 1.5rem;\n  }\n  .ps-5 {\n    padding-inline-start: 3rem;\n  }\n  .gap-0 {\n    gap: 0;\n  }\n  .gap-1 {\n    gap: 0.25rem;\n  }\n  .gap-2 {\n    gap: 0.5rem;\n  }\n  .gap-3 {\n    gap: 1rem;\n  }\n  .gap-4 {\n    gap: 1.5rem;\n  }\n  .gap-5 {\n    gap: 3rem;\n  }\n  .row-gap-0 {\n    row-gap: 0;\n  }\n  .row-gap-1 {\n    row-gap: 0.25rem;\n  }\n  .row-gap-2 {\n    row-gap: 0.5rem;\n  }\n  .row-gap-3 {\n    row-gap: 1rem;\n  }\n  .row-gap-4 {\n    row-gap: 1.5rem;\n  }\n  .row-gap-5 {\n    row-gap: 3rem;\n  }\n  .column-gap-0 {\n    column-gap: 0;\n  }\n  .column-gap-1 {\n    column-gap: 0.25rem;\n  }\n  .column-gap-2 {\n    column-gap: 0.5rem;\n  }\n  .column-gap-3 {\n    column-gap: 1rem;\n  }\n  .column-gap-4 {\n    column-gap: 1.5rem;\n  }\n  .column-gap-5 {\n    column-gap: 3rem;\n  }\n  .font-monospace {\n    font-family: var(--font-mono);\n  }\n  .font-body {\n    font-family: var(--body-font-family);\n  }\n  .fs-xs {\n    font-size: 0.75rem;\n  }\n  .fs-sm {\n    font-size: 0.875rem;\n  }\n  .fs-md {\n    font-size: 1rem;\n  }\n  .fs-lg {\n    font-size: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  }\n  .fs-xl {\n    font-size: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  }\n  .fs-2xl {\n    font-size: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  }\n  .fs-3xl {\n    font-size: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  }\n  .fs-4xl {\n    font-size: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  }\n  .fs-5xl {\n    font-size: clamp(3rem, 2rem + 5vw, 4rem);\n  }\n  .fs-6xl {\n    font-size: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  }\n  .text-xs {\n    font-size: 0.75rem;\n    line-height: 1.25;\n  }\n  .text-sm {\n    font-size: 0.875rem;\n    line-height: 1.5;\n  }\n  .text-md {\n    font-size: 1rem;\n    line-height: 1.5;\n  }\n  .text-lg {\n    font-size: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n    line-height: 1.5;\n  }\n  .text-xl {\n    font-size: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n    line-height: 1.4285714286;\n  }\n  .text-2xl {\n    font-size: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n    line-height: 1.3333333333;\n  }\n  .text-3xl {\n    font-size: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n    line-height: 1.2;\n  }\n  .text-4xl {\n    font-size: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n    line-height: 1.1;\n  }\n  .text-5xl {\n    font-size: clamp(3rem, 2rem + 5vw, 4rem);\n    line-height: 1.1;\n  }\n  .text-6xl {\n    font-size: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n    line-height: 1;\n  }\n  .fst-italic {\n    font-style: italic;\n  }\n  .fst-normal {\n    font-style: normal;\n  }\n  .fw-lighter {\n    font-weight: lighter;\n  }\n  .fw-light {\n    font-weight: 300;\n  }\n  .fw-normal {\n    font-weight: 400;\n  }\n  .fw-medium {\n    font-weight: 500;\n  }\n  .fw-semibold {\n    font-weight: 600;\n  }\n  .fw-bold {\n    font-weight: 700;\n  }\n  .fw-bolder {\n    font-weight: bolder;\n  }\n  .lh-1 {\n    line-height: 1;\n  }\n  .lh-sm {\n    line-height: 1.25;\n  }\n  .lh-base {\n    line-height: 1.5;\n  }\n  .lh-lg {\n    line-height: 2;\n  }\n  .text-start {\n    text-align: start;\n  }\n  .text-end {\n    text-align: end;\n  }\n  .text-center {\n    text-align: center;\n  }\n  .text-decoration-none {\n    text-decoration: none;\n  }\n  .text-decoration-underline {\n    text-decoration: underline;\n  }\n  .text-decoration-line-through {\n    text-decoration: line-through;\n  }\n  .text-lowercase {\n    text-transform: lowercase;\n  }\n  .text-uppercase {\n    text-transform: uppercase;\n  }\n  .text-capitalize {\n    text-transform: capitalize;\n  }\n  .text-wrap {\n    white-space: wrap;\n  }\n  .text-nowrap {\n    white-space: nowrap;\n  }\n  .text-balance {\n    white-space: balance;\n  }\n  .text-pretty {\n    white-space: pretty;\n  }\n  .text-break {\n    word-wrap: break-word;\n    word-break: break-word;\n  }\n  .fg-primary {\n    --fg: light-dark(var(--blue-600), var(--blue-400));\n    color: var(--fg);\n  }\n  .fg-accent {\n    --fg: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n    color: var(--fg);\n  }\n  .fg-success {\n    --fg: light-dark(var(--green-600), var(--green-400));\n    color: var(--fg);\n  }\n  .fg-danger {\n    --fg: light-dark(var(--red-600), var(--red-400));\n    color: var(--fg);\n  }\n  .fg-warning {\n    --fg: light-dark(var(--yellow-700), var(--yellow-400));\n    color: var(--fg);\n  }\n  .fg-info {\n    --fg: light-dark(var(--cyan-600), var(--cyan-400));\n    color: var(--fg);\n  }\n  .fg-inverse {\n    --fg: light-dark(var(--gray-900), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-secondary {\n    --fg: light-dark(var(--gray-600), var(--gray-400));\n    color: var(--fg);\n  }\n  .fg-body {\n    --fg: light-dark(var(--gray-900), var(--gray-050));\n    color: var(--fg);\n  }\n  .fg-1 {\n    --fg: light-dark(var(--gray-800), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-2 {\n    --fg: light-dark(var(--gray-700), var(--gray-300));\n    color: var(--fg);\n  }\n  .fg-3 {\n    --fg: light-dark(var(--gray-600), var(--gray-500));\n    color: var(--fg);\n  }\n  .fg-4 {\n    --fg: light-dark(var(--gray-500), var(--gray-600));\n    color: var(--fg);\n  }\n  .fg-white {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-black {\n    --fg: var(--black);\n    color: var(--fg);\n  }\n  .fg-inherit {\n    --fg: inherit;\n    color: var(--fg);\n  }\n  .fg-emphasis-primary {\n    --fg: light-dark(var(--blue-800), var(--blue-200));\n    color: var(--fg);\n  }\n  .fg-emphasis-accent {\n    --fg: light-dark(var(--indigo-800), var(--indigo-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-success {\n    --fg: light-dark(var(--green-800), var(--green-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-danger {\n    --fg: light-dark(var(--red-800), var(--red-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-warning {\n    --fg: light-dark(var(--yellow-800), var(--yellow-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-info {\n    --fg: light-dark(var(--cyan-800), var(--cyan-300));\n    color: var(--fg);\n  }\n  .fg-emphasis-inverse {\n    --fg: light-dark(var(--gray-975), var(--white));\n    color: var(--fg);\n  }\n  .fg-emphasis-secondary {\n    --fg: light-dark(var(--gray-800), var(--gray-200));\n    color: var(--fg);\n  }\n  .fg-contrast-primary {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-accent {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-success {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-danger {\n    --fg: var(--white);\n    color: var(--fg);\n  }\n  .fg-contrast-warning {\n    --fg: var(--gray-900);\n    color: var(--fg);\n  }\n  .fg-contrast-info {\n    --fg: var(--gray-900);\n    color: var(--fg);\n  }\n  .fg-contrast-inverse {\n    --fg: light-dark(var(--white), var(--gray-900));\n    color: var(--fg);\n  }\n  .fg-contrast-secondary {\n    --fg: light-dark(var(--gray-900), var(--white));\n    color: var(--fg);\n  }\n  .fg-10 {\n    color: color-mix(in oklch, var(--fg) 10%, transparent);\n  }\n  .fg-20 {\n    color: color-mix(in oklch, var(--fg) 20%, transparent);\n  }\n  .fg-30 {\n    color: color-mix(in oklch, var(--fg) 30%, transparent);\n  }\n  .fg-40 {\n    color: color-mix(in oklch, var(--fg) 40%, transparent);\n  }\n  .fg-50 {\n    color: color-mix(in oklch, var(--fg) 50%, transparent);\n  }\n  .fg-60 {\n    color: color-mix(in oklch, var(--fg) 60%, transparent);\n  }\n  .fg-70 {\n    color: color-mix(in oklch, var(--fg) 70%, transparent);\n  }\n  .fg-80 {\n    color: color-mix(in oklch, var(--fg) 80%, transparent);\n  }\n  .fg-90 {\n    color: color-mix(in oklch, var(--fg) 90%, transparent);\n  }\n  .fg-100 {\n    color: var(--fg);\n  }\n  .link-10 {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .link-10-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .link-20 {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .link-20-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .link-30 {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .link-30-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .link-40 {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .link-40-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .link-50 {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .link-50-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .link-60 {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .link-60-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .link-70 {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .link-70-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .link-80 {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .link-80-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .link-90 {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-90-hover:hover {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-100 {\n    color: var(--link-color);\n  }\n  .link-100-hover:hover {\n    color: var(--link-color);\n  }\n  .underline-offset-1 {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-1-hover:hover {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-2 {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-2-hover:hover {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-3 {\n    text-underline-offset: 0.375em;\n  }\n  .underline-offset-3-hover:hover {\n    text-underline-offset: 0.375em;\n  }\n  .underline-primary {\n    text-decoration-color: light-dark(var(--blue-600), var(--blue-400));\n  }\n  .underline-accent {\n    text-decoration-color: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  }\n  .underline-success {\n    text-decoration-color: light-dark(var(--green-600), var(--green-400));\n  }\n  .underline-danger {\n    text-decoration-color: light-dark(var(--red-600), var(--red-400));\n  }\n  .underline-warning {\n    text-decoration-color: light-dark(var(--yellow-700), var(--yellow-400));\n  }\n  .underline-info {\n    text-decoration-color: light-dark(var(--cyan-600), var(--cyan-400));\n  }\n  .underline-inverse {\n    text-decoration-color: light-dark(var(--gray-900), var(--gray-200));\n  }\n  .underline-secondary {\n    text-decoration-color: light-dark(var(--gray-600), var(--gray-400));\n  }\n  .underline-10 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .underline-10-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .underline-20 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .underline-20-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .underline-30 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .underline-30-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .underline-40 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .underline-40-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .underline-50 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .underline-50-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .underline-60 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .underline-60-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .underline-70 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .underline-70-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .underline-80 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .underline-80-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .underline-90 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .underline-90-hover:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .underline-100 {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-100-hover:hover {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-thickness-1 {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-1-hover:hover {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-2 {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-2-hover:hover {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-3 {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-3-hover:hover {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-4 {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-4-hover:hover {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-5 {\n    text-decoration-thickness: 5px;\n  }\n  .underline-thickness-5-hover:hover {\n    text-decoration-thickness: 5px;\n  }\n  .bg-primary {\n    --bg: var(--blue-500);\n    background-color: var(--bg);\n  }\n  .bg-accent {\n    --bg: var(--indigo-500);\n    background-color: var(--bg);\n  }\n  .bg-success {\n    --bg: var(--green-500);\n    background-color: var(--bg);\n  }\n  .bg-danger {\n    --bg: var(--red-500);\n    background-color: var(--bg);\n  }\n  .bg-warning {\n    --bg: var(--yellow-500);\n    background-color: var(--bg);\n  }\n  .bg-info {\n    --bg: var(--cyan-500);\n    background-color: var(--bg);\n  }\n  .bg-inverse {\n    --bg: light-dark(var(--gray-900), var(--gray-025));\n    background-color: var(--bg);\n  }\n  .bg-secondary {\n    --bg: light-dark(var(--gray-100), var(--gray-600));\n    background-color: var(--bg);\n  }\n  .bg-body {\n    --bg: light-dark(var(--white), var(--gray-975));\n    background-color: var(--bg);\n  }\n  .bg-1 {\n    --bg: light-dark(var(--gray-025), var(--gray-950));\n    background-color: var(--bg);\n  }\n  .bg-2 {\n    --bg: light-dark(var(--gray-050), var(--gray-900));\n    background-color: var(--bg);\n  }\n  .bg-3 {\n    --bg: light-dark(var(--gray-100), var(--gray-800));\n    background-color: var(--bg);\n  }\n  .bg-4 {\n    --bg: light-dark(var(--gray-200), var(--gray-700));\n    background-color: var(--bg);\n  }\n  .bg-white {\n    --bg: var(--white);\n    background-color: var(--bg);\n  }\n  .bg-black {\n    --bg: var(--black);\n    background-color: var(--bg);\n  }\n  .bg-transparent {\n    --bg: transparent;\n    background-color: var(--bg);\n  }\n  .bg-inherit {\n    --bg: inherit;\n    background-color: var(--bg);\n  }\n  .bg-subtle-primary {\n    --bg: light-dark(var(--blue-100), var(--blue-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-accent {\n    --bg: light-dark(var(--indigo-100), var(--indigo-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-success {\n    --bg: light-dark(var(--green-100), var(--green-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-danger {\n    --bg: light-dark(var(--red-100), var(--red-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-warning {\n    --bg: light-dark(var(--yellow-100), var(--yellow-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-info {\n    --bg: light-dark(var(--cyan-100), var(--cyan-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-inverse {\n    --bg: light-dark(var(--gray-100), var(--gray-900));\n    background-color: var(--bg);\n  }\n  .bg-subtle-secondary {\n    --bg: light-dark(var(--gray-050), var(--gray-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-primary {\n    --bg: light-dark(var(--blue-200), var(--blue-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-accent {\n    --bg: light-dark(var(--indigo-200), var(--indigo-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-success {\n    --bg: light-dark(var(--green-200), var(--green-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-danger {\n    --bg: light-dark(var(--red-200), var(--red-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-warning {\n    --bg: light-dark(var(--yellow-200), var(--yellow-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-info {\n    --bg: light-dark(var(--cyan-200), var(--cyan-800));\n    background-color: var(--bg);\n  }\n  .bg-muted-inverse {\n    --bg: light-dark(var(--gray-200), var(--gray-300));\n    background-color: var(--bg);\n  }\n  .bg-muted-secondary {\n    --bg: light-dark(var(--gray-100), var(--gray-700));\n    background-color: var(--bg);\n  }\n  .bg-10 {\n    background-color: color-mix(in oklch, var(--bg) 10%, transparent);\n  }\n  .bg-20 {\n    background-color: color-mix(in oklch, var(--bg) 20%, transparent);\n  }\n  .bg-30 {\n    background-color: color-mix(in oklch, var(--bg) 30%, transparent);\n  }\n  .bg-40 {\n    background-color: color-mix(in oklch, var(--bg) 40%, transparent);\n  }\n  .bg-50 {\n    background-color: color-mix(in oklch, var(--bg) 50%, transparent);\n  }\n  .bg-60 {\n    background-color: color-mix(in oklch, var(--bg) 60%, transparent);\n  }\n  .bg-70 {\n    background-color: color-mix(in oklch, var(--bg) 70%, transparent);\n  }\n  .bg-80 {\n    background-color: color-mix(in oklch, var(--bg) 80%, transparent);\n  }\n  .bg-90 {\n    background-color: color-mix(in oklch, var(--bg) 90%, transparent);\n  }\n  .bg-100 {\n    background-color: var(--bg);\n  }\n  .theme-contrast {\n    background-color: var(--theme-bg);\n    color: var(--theme-contrast);\n  }\n  .theme-subtle {\n    background-color: var(--theme-bg-subtle);\n    color: var(--theme-text);\n  }\n  .theme-muted {\n    background-color: var(--theme-bg-muted);\n    color: var(--theme-text-emphasis);\n  }\n  .theme-border {\n    border: var(--border-width) solid var(--theme-border);\n  }\n  .bg-gradient {\n    background-image: var(--gradient);\n  }\n  .user-select-all {\n    user-select: all;\n  }\n  .user-select-auto {\n    user-select: auto;\n  }\n  .user-select-text {\n    user-select: text;\n  }\n  .user-select-none {\n    user-select: none;\n  }\n  .pe-none {\n    pointer-events: none;\n  }\n  .pe-auto {\n    pointer-events: auto;\n  }\n  .rounded {\n    border-radius: var(--border-radius);\n  }\n  .rounded-0 {\n    border-radius: 0;\n  }\n  .rounded-1 {\n    border-radius: var(--border-radius-sm);\n  }\n  .rounded-2 {\n    border-radius: var(--border-radius);\n  }\n  .rounded-3 {\n    border-radius: var(--border-radius-lg);\n  }\n  .rounded-4 {\n    border-radius: var(--border-radius-xl);\n  }\n  .rounded-5 {\n    border-radius: var(--border-radius-2xl);\n  }\n  .rounded-circle {\n    border-radius: 50%;\n  }\n  .rounded-pill {\n    border-radius: var(--border-radius-pill);\n  }\n  .rounded-top {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-top-0 {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .rounded-top-1 {\n    border-start-start-radius: var(--border-radius-sm);\n    border-start-end-radius: var(--border-radius-sm);\n  }\n  .rounded-top-2 {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-top-3 {\n    border-start-start-radius: var(--border-radius-lg);\n    border-start-end-radius: var(--border-radius-lg);\n  }\n  .rounded-top-4 {\n    border-start-start-radius: var(--border-radius-xl);\n    border-start-end-radius: var(--border-radius-xl);\n  }\n  .rounded-top-5 {\n    border-start-start-radius: var(--border-radius-2xl);\n    border-start-end-radius: var(--border-radius-2xl);\n  }\n  .rounded-top-circle {\n    border-start-start-radius: 50%;\n    border-start-end-radius: 50%;\n  }\n  .rounded-top-pill {\n    border-start-start-radius: var(--border-radius-pill);\n    border-start-end-radius: var(--border-radius-pill);\n  }\n  .rounded-end {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-end-0 {\n    border-end-end-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-end-1 {\n    border-end-end-radius: var(--border-radius-sm);\n    border-end-start-radius: var(--border-radius-sm);\n  }\n  .rounded-end-2 {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-end-3 {\n    border-end-end-radius: var(--border-radius-lg);\n    border-end-start-radius: var(--border-radius-lg);\n  }\n  .rounded-end-4 {\n    border-end-end-radius: var(--border-radius-xl);\n    border-end-start-radius: var(--border-radius-xl);\n  }\n  .rounded-end-5 {\n    border-end-end-radius: var(--border-radius-2xl);\n    border-end-start-radius: var(--border-radius-2xl);\n  }\n  .rounded-end-circle {\n    border-end-end-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-end-pill {\n    border-end-end-radius: var(--border-radius-pill);\n    border-end-start-radius: var(--border-radius-pill);\n  }\n  .rounded-bottom {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-bottom-0 {\n    border-end-end-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-bottom-1 {\n    border-end-end-radius: var(--border-radius-sm);\n    border-end-start-radius: var(--border-radius-sm);\n  }\n  .rounded-bottom-2 {\n    border-end-end-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n  .rounded-bottom-3 {\n    border-end-end-radius: var(--border-radius-lg);\n    border-end-start-radius: var(--border-radius-lg);\n  }\n  .rounded-bottom-4 {\n    border-end-end-radius: var(--border-radius-xl);\n    border-end-start-radius: var(--border-radius-xl);\n  }\n  .rounded-bottom-5 {\n    border-end-end-radius: var(--border-radius-2xl);\n    border-end-start-radius: var(--border-radius-2xl);\n  }\n  .rounded-bottom-circle {\n    border-end-end-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-bottom-pill {\n    border-end-end-radius: var(--border-radius-pill);\n    border-end-start-radius: var(--border-radius-pill);\n  }\n  .rounded-start {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-start-0 {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .rounded-start-1 {\n    border-start-start-radius: var(--border-radius-sm);\n    border-start-end-radius: var(--border-radius-sm);\n  }\n  .rounded-start-2 {\n    border-start-start-radius: var(--border-radius);\n    border-start-end-radius: var(--border-radius);\n  }\n  .rounded-start-3 {\n    border-start-start-radius: var(--border-radius-lg);\n    border-start-end-radius: var(--border-radius-lg);\n  }\n  .rounded-start-4 {\n    border-start-start-radius: var(--border-radius-xl);\n    border-start-end-radius: var(--border-radius-xl);\n  }\n  .rounded-start-5 {\n    border-start-start-radius: var(--border-radius-2xl);\n    border-start-end-radius: var(--border-radius-2xl);\n  }\n  .rounded-start-circle {\n    border-start-start-radius: 50%;\n    border-start-end-radius: 50%;\n  }\n  .rounded-start-pill {\n    border-start-start-radius: var(--border-radius-pill);\n    border-start-end-radius: var(--border-radius-pill);\n  }\n  .visible {\n    visibility: visible;\n  }\n  .invisible {\n    visibility: hidden;\n  }\n  .z-n1 {\n    z-index: -1;\n  }\n  .z-0 {\n    z-index: 0;\n  }\n  .z-1 {\n    z-index: 1;\n  }\n  .z-2 {\n    z-index: 2;\n  }\n  .z-3 {\n    z-index: 3;\n  }\n  @media (width >= 576px) {\n    .float-sm-start {\n      float: inline-start;\n    }\n    .float-sm-end {\n      float: inline-end;\n    }\n    .float-sm-none {\n      float: none;\n    }\n    .object-fit-sm-contain {\n      object-fit: contain;\n    }\n    .object-fit-sm-cover {\n      object-fit: cover;\n    }\n    .object-fit-sm-fill {\n      object-fit: fill;\n    }\n    .object-fit-sm-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-sm-none {\n      object-fit: none;\n    }\n    .d-sm-inline {\n      display: inline;\n    }\n    .d-sm-inline-block {\n      display: inline-block;\n    }\n    .d-sm-block {\n      display: block;\n    }\n    .d-sm-grid {\n      display: grid;\n    }\n    .d-sm-inline-grid {\n      display: inline-grid;\n    }\n    .d-sm-table {\n      display: table;\n    }\n    .d-sm-table-row {\n      display: table-row;\n    }\n    .d-sm-table-cell {\n      display: table-cell;\n    }\n    .d-sm-flex {\n      display: flex;\n    }\n    .d-sm-inline-flex {\n      display: inline-flex;\n    }\n    .d-sm-contents {\n      display: contents;\n    }\n    .d-sm-flow-root {\n      display: flow-root;\n    }\n    .d-sm-none {\n      display: none;\n    }\n    .flex-sm-fill {\n      flex: 1 1 auto;\n    }\n    .flex-sm-row {\n      flex-direction: row;\n    }\n    .flex-sm-column {\n      flex-direction: column;\n    }\n    .flex-sm-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-sm-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-sm-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-sm-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-sm-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-sm-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-sm-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-sm-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-sm-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-sm-start {\n      justify-content: flex-start;\n    }\n    .justify-content-sm-end {\n      justify-content: flex-end;\n    }\n    .justify-content-sm-center {\n      justify-content: center;\n    }\n    .justify-content-sm-between {\n      justify-content: space-between;\n    }\n    .justify-content-sm-around {\n      justify-content: space-around;\n    }\n    .justify-content-sm-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-sm-start {\n      justify-items: start;\n    }\n    .justify-items-sm-end {\n      justify-items: end;\n    }\n    .justify-items-sm-center {\n      justify-items: center;\n    }\n    .justify-items-sm-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-sm-start {\n      justify-self: flex-start;\n    }\n    .justify-self-sm-end {\n      justify-self: flex-end;\n    }\n    .justify-self-sm-center {\n      justify-self: center;\n    }\n    .align-items-sm-start {\n      align-items: flex-start;\n    }\n    .align-items-sm-end {\n      align-items: flex-end;\n    }\n    .align-items-sm-center {\n      align-items: center;\n    }\n    .align-items-sm-baseline {\n      align-items: baseline;\n    }\n    .align-items-sm-stretch {\n      align-items: stretch;\n    }\n    .align-content-sm-start {\n      align-content: flex-start;\n    }\n    .align-content-sm-end {\n      align-content: flex-end;\n    }\n    .align-content-sm-center {\n      align-content: center;\n    }\n    .align-content-sm-between {\n      align-content: space-between;\n    }\n    .align-content-sm-around {\n      align-content: space-around;\n    }\n    .align-content-sm-stretch {\n      align-content: stretch;\n    }\n    .align-self-sm-auto {\n      align-self: auto;\n    }\n    .align-self-sm-start {\n      align-self: flex-start;\n    }\n    .align-self-sm-end {\n      align-self: flex-end;\n    }\n    .align-self-sm-center {\n      align-self: center;\n    }\n    .align-self-sm-baseline {\n      align-self: baseline;\n    }\n    .align-self-sm-stretch {\n      align-self: stretch;\n    }\n    .place-items-sm-start {\n      place-items: start;\n    }\n    .place-items-sm-end {\n      place-items: end;\n    }\n    .place-items-sm-center {\n      place-items: center;\n    }\n    .place-items-sm-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-sm-3 {\n      --columns: 3;\n    }\n    .grid-cols-sm-4 {\n      --columns: 4;\n    }\n    .grid-cols-sm-6 {\n      --columns: 6;\n    }\n    .grid-cols-sm-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-sm-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-sm-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-sm-dense {\n      grid-auto-flow: dense;\n    }\n    .order-sm-first {\n      order: -1;\n    }\n    .order-sm-0 {\n      order: 0;\n    }\n    .order-sm-1 {\n      order: 1;\n    }\n    .order-sm-2 {\n      order: 2;\n    }\n    .order-sm-3 {\n      order: 3;\n    }\n    .order-sm-4 {\n      order: 4;\n    }\n    .order-sm-5 {\n      order: 5;\n    }\n    .order-sm-last {\n      order: 6;\n    }\n    .m-sm-0 {\n      margin: 0;\n    }\n    .m-sm-1 {\n      margin: 0.25rem;\n    }\n    .m-sm-2 {\n      margin: 0.5rem;\n    }\n    .m-sm-3 {\n      margin: 1rem;\n    }\n    .m-sm-4 {\n      margin: 1.5rem;\n    }\n    .m-sm-5 {\n      margin: 3rem;\n    }\n    .m-sm-auto {\n      margin: auto;\n    }\n    .mx-sm-0 {\n      margin-inline: 0;\n    }\n    .mx-sm-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-sm-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-sm-3 {\n      margin-inline: 1rem;\n    }\n    .mx-sm-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-sm-5 {\n      margin-inline: 3rem;\n    }\n    .mx-sm-auto {\n      margin-inline: auto;\n    }\n    .my-sm-0 {\n      margin-block: 0;\n    }\n    .my-sm-1 {\n      margin-block: 0.25rem;\n    }\n    .my-sm-2 {\n      margin-block: 0.5rem;\n    }\n    .my-sm-3 {\n      margin-block: 1rem;\n    }\n    .my-sm-4 {\n      margin-block: 1.5rem;\n    }\n    .my-sm-5 {\n      margin-block: 3rem;\n    }\n    .my-sm-auto {\n      margin-block: auto;\n    }\n    .mt-sm-0 {\n      margin-block-start: 0;\n    }\n    .mt-sm-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-sm-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-sm-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-sm-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-sm-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-sm-auto {\n      margin-block-start: auto;\n    }\n    .me-sm-0 {\n      margin-inline-end: 0;\n    }\n    .me-sm-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-sm-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-sm-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-sm-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-sm-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-sm-auto {\n      margin-inline-end: auto;\n    }\n    .mb-sm-0 {\n      margin-block-end: 0;\n    }\n    .mb-sm-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-sm-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-sm-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-sm-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-sm-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-sm-auto {\n      margin-block-end: auto;\n    }\n    .ms-sm-0 {\n      margin-inline-start: 0;\n    }\n    .ms-sm-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-sm-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-sm-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-sm-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-sm-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-sm--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-sm--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-sm-auto {\n      margin-inline-start: auto;\n    }\n    .p-sm-0 {\n      padding: 0;\n    }\n    .p-sm-1 {\n      padding: 0.25rem;\n    }\n    .p-sm-2 {\n      padding: 0.5rem;\n    }\n    .p-sm-3 {\n      padding: 1rem;\n    }\n    .p-sm-4 {\n      padding: 1.5rem;\n    }\n    .p-sm-5 {\n      padding: 3rem;\n    }\n    .px-sm-0 {\n      padding-inline: 0;\n    }\n    .px-sm-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-sm-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-sm-3 {\n      padding-inline: 1rem;\n    }\n    .px-sm-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-sm-5 {\n      padding-inline: 3rem;\n    }\n    .py-sm-0 {\n      padding-block: 0;\n    }\n    .py-sm-1 {\n      padding-block: 0.25rem;\n    }\n    .py-sm-2 {\n      padding-block: 0.5rem;\n    }\n    .py-sm-3 {\n      padding-block: 1rem;\n    }\n    .py-sm-4 {\n      padding-block: 1.5rem;\n    }\n    .py-sm-5 {\n      padding-block: 3rem;\n    }\n    .pt-sm-0 {\n      padding-block-start: 0;\n    }\n    .pt-sm-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-sm-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-sm-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-sm-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-sm-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-sm-0 {\n      padding-inline-end: 0;\n    }\n    .pe-sm-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-sm-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-sm-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-sm-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-sm-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-sm-0 {\n      padding-block-end: 0;\n    }\n    .pb-sm-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-sm-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-sm-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-sm-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-sm-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-sm-0 {\n      padding-inline-start: 0;\n    }\n    .ps-sm-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-sm-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-sm-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-sm-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-sm-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-sm-0 {\n      gap: 0;\n    }\n    .gap-sm-1 {\n      gap: 0.25rem;\n    }\n    .gap-sm-2 {\n      gap: 0.5rem;\n    }\n    .gap-sm-3 {\n      gap: 1rem;\n    }\n    .gap-sm-4 {\n      gap: 1.5rem;\n    }\n    .gap-sm-5 {\n      gap: 3rem;\n    }\n    .row-gap-sm-0 {\n      row-gap: 0;\n    }\n    .row-gap-sm-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-sm-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-sm-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-sm-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-sm-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-sm-0 {\n      column-gap: 0;\n    }\n    .column-gap-sm-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-sm-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-sm-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-sm-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-sm-5 {\n      column-gap: 3rem;\n    }\n    .text-sm-start {\n      text-align: start;\n    }\n    .text-sm-end {\n      text-align: end;\n    }\n    .text-sm-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 768px) {\n    .float-md-start {\n      float: inline-start;\n    }\n    .float-md-end {\n      float: inline-end;\n    }\n    .float-md-none {\n      float: none;\n    }\n    .object-fit-md-contain {\n      object-fit: contain;\n    }\n    .object-fit-md-cover {\n      object-fit: cover;\n    }\n    .object-fit-md-fill {\n      object-fit: fill;\n    }\n    .object-fit-md-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-md-none {\n      object-fit: none;\n    }\n    .d-md-inline {\n      display: inline;\n    }\n    .d-md-inline-block {\n      display: inline-block;\n    }\n    .d-md-block {\n      display: block;\n    }\n    .d-md-grid {\n      display: grid;\n    }\n    .d-md-inline-grid {\n      display: inline-grid;\n    }\n    .d-md-table {\n      display: table;\n    }\n    .d-md-table-row {\n      display: table-row;\n    }\n    .d-md-table-cell {\n      display: table-cell;\n    }\n    .d-md-flex {\n      display: flex;\n    }\n    .d-md-inline-flex {\n      display: inline-flex;\n    }\n    .d-md-contents {\n      display: contents;\n    }\n    .d-md-flow-root {\n      display: flow-root;\n    }\n    .d-md-none {\n      display: none;\n    }\n    .flex-md-fill {\n      flex: 1 1 auto;\n    }\n    .flex-md-row {\n      flex-direction: row;\n    }\n    .flex-md-column {\n      flex-direction: column;\n    }\n    .flex-md-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-md-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-md-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-md-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-md-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-md-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-md-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-md-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-md-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-md-start {\n      justify-content: flex-start;\n    }\n    .justify-content-md-end {\n      justify-content: flex-end;\n    }\n    .justify-content-md-center {\n      justify-content: center;\n    }\n    .justify-content-md-between {\n      justify-content: space-between;\n    }\n    .justify-content-md-around {\n      justify-content: space-around;\n    }\n    .justify-content-md-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-md-start {\n      justify-items: start;\n    }\n    .justify-items-md-end {\n      justify-items: end;\n    }\n    .justify-items-md-center {\n      justify-items: center;\n    }\n    .justify-items-md-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-md-start {\n      justify-self: flex-start;\n    }\n    .justify-self-md-end {\n      justify-self: flex-end;\n    }\n    .justify-self-md-center {\n      justify-self: center;\n    }\n    .align-items-md-start {\n      align-items: flex-start;\n    }\n    .align-items-md-end {\n      align-items: flex-end;\n    }\n    .align-items-md-center {\n      align-items: center;\n    }\n    .align-items-md-baseline {\n      align-items: baseline;\n    }\n    .align-items-md-stretch {\n      align-items: stretch;\n    }\n    .align-content-md-start {\n      align-content: flex-start;\n    }\n    .align-content-md-end {\n      align-content: flex-end;\n    }\n    .align-content-md-center {\n      align-content: center;\n    }\n    .align-content-md-between {\n      align-content: space-between;\n    }\n    .align-content-md-around {\n      align-content: space-around;\n    }\n    .align-content-md-stretch {\n      align-content: stretch;\n    }\n    .align-self-md-auto {\n      align-self: auto;\n    }\n    .align-self-md-start {\n      align-self: flex-start;\n    }\n    .align-self-md-end {\n      align-self: flex-end;\n    }\n    .align-self-md-center {\n      align-self: center;\n    }\n    .align-self-md-baseline {\n      align-self: baseline;\n    }\n    .align-self-md-stretch {\n      align-self: stretch;\n    }\n    .place-items-md-start {\n      place-items: start;\n    }\n    .place-items-md-end {\n      place-items: end;\n    }\n    .place-items-md-center {\n      place-items: center;\n    }\n    .place-items-md-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-md-3 {\n      --columns: 3;\n    }\n    .grid-cols-md-4 {\n      --columns: 4;\n    }\n    .grid-cols-md-6 {\n      --columns: 6;\n    }\n    .grid-cols-md-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-md-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-md-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-md-dense {\n      grid-auto-flow: dense;\n    }\n    .order-md-first {\n      order: -1;\n    }\n    .order-md-0 {\n      order: 0;\n    }\n    .order-md-1 {\n      order: 1;\n    }\n    .order-md-2 {\n      order: 2;\n    }\n    .order-md-3 {\n      order: 3;\n    }\n    .order-md-4 {\n      order: 4;\n    }\n    .order-md-5 {\n      order: 5;\n    }\n    .order-md-last {\n      order: 6;\n    }\n    .m-md-0 {\n      margin: 0;\n    }\n    .m-md-1 {\n      margin: 0.25rem;\n    }\n    .m-md-2 {\n      margin: 0.5rem;\n    }\n    .m-md-3 {\n      margin: 1rem;\n    }\n    .m-md-4 {\n      margin: 1.5rem;\n    }\n    .m-md-5 {\n      margin: 3rem;\n    }\n    .m-md-auto {\n      margin: auto;\n    }\n    .mx-md-0 {\n      margin-inline: 0;\n    }\n    .mx-md-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-md-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-md-3 {\n      margin-inline: 1rem;\n    }\n    .mx-md-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-md-5 {\n      margin-inline: 3rem;\n    }\n    .mx-md-auto {\n      margin-inline: auto;\n    }\n    .my-md-0 {\n      margin-block: 0;\n    }\n    .my-md-1 {\n      margin-block: 0.25rem;\n    }\n    .my-md-2 {\n      margin-block: 0.5rem;\n    }\n    .my-md-3 {\n      margin-block: 1rem;\n    }\n    .my-md-4 {\n      margin-block: 1.5rem;\n    }\n    .my-md-5 {\n      margin-block: 3rem;\n    }\n    .my-md-auto {\n      margin-block: auto;\n    }\n    .mt-md-0 {\n      margin-block-start: 0;\n    }\n    .mt-md-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-md-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-md-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-md-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-md-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-md-auto {\n      margin-block-start: auto;\n    }\n    .me-md-0 {\n      margin-inline-end: 0;\n    }\n    .me-md-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-md-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-md-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-md-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-md-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-md-auto {\n      margin-inline-end: auto;\n    }\n    .mb-md-0 {\n      margin-block-end: 0;\n    }\n    .mb-md-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-md-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-md-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-md-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-md-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-md-auto {\n      margin-block-end: auto;\n    }\n    .ms-md-0 {\n      margin-inline-start: 0;\n    }\n    .ms-md-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-md-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-md-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-md-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-md-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-md--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-md--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-md-auto {\n      margin-inline-start: auto;\n    }\n    .p-md-0 {\n      padding: 0;\n    }\n    .p-md-1 {\n      padding: 0.25rem;\n    }\n    .p-md-2 {\n      padding: 0.5rem;\n    }\n    .p-md-3 {\n      padding: 1rem;\n    }\n    .p-md-4 {\n      padding: 1.5rem;\n    }\n    .p-md-5 {\n      padding: 3rem;\n    }\n    .px-md-0 {\n      padding-inline: 0;\n    }\n    .px-md-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-md-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-md-3 {\n      padding-inline: 1rem;\n    }\n    .px-md-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-md-5 {\n      padding-inline: 3rem;\n    }\n    .py-md-0 {\n      padding-block: 0;\n    }\n    .py-md-1 {\n      padding-block: 0.25rem;\n    }\n    .py-md-2 {\n      padding-block: 0.5rem;\n    }\n    .py-md-3 {\n      padding-block: 1rem;\n    }\n    .py-md-4 {\n      padding-block: 1.5rem;\n    }\n    .py-md-5 {\n      padding-block: 3rem;\n    }\n    .pt-md-0 {\n      padding-block-start: 0;\n    }\n    .pt-md-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-md-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-md-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-md-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-md-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-md-0 {\n      padding-inline-end: 0;\n    }\n    .pe-md-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-md-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-md-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-md-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-md-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-md-0 {\n      padding-block-end: 0;\n    }\n    .pb-md-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-md-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-md-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-md-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-md-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-md-0 {\n      padding-inline-start: 0;\n    }\n    .ps-md-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-md-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-md-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-md-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-md-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-md-0 {\n      gap: 0;\n    }\n    .gap-md-1 {\n      gap: 0.25rem;\n    }\n    .gap-md-2 {\n      gap: 0.5rem;\n    }\n    .gap-md-3 {\n      gap: 1rem;\n    }\n    .gap-md-4 {\n      gap: 1.5rem;\n    }\n    .gap-md-5 {\n      gap: 3rem;\n    }\n    .row-gap-md-0 {\n      row-gap: 0;\n    }\n    .row-gap-md-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-md-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-md-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-md-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-md-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-md-0 {\n      column-gap: 0;\n    }\n    .column-gap-md-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-md-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-md-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-md-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-md-5 {\n      column-gap: 3rem;\n    }\n    .text-md-start {\n      text-align: start;\n    }\n    .text-md-end {\n      text-align: end;\n    }\n    .text-md-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1024px) {\n    .float-lg-start {\n      float: inline-start;\n    }\n    .float-lg-end {\n      float: inline-end;\n    }\n    .float-lg-none {\n      float: none;\n    }\n    .object-fit-lg-contain {\n      object-fit: contain;\n    }\n    .object-fit-lg-cover {\n      object-fit: cover;\n    }\n    .object-fit-lg-fill {\n      object-fit: fill;\n    }\n    .object-fit-lg-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-lg-none {\n      object-fit: none;\n    }\n    .d-lg-inline {\n      display: inline;\n    }\n    .d-lg-inline-block {\n      display: inline-block;\n    }\n    .d-lg-block {\n      display: block;\n    }\n    .d-lg-grid {\n      display: grid;\n    }\n    .d-lg-inline-grid {\n      display: inline-grid;\n    }\n    .d-lg-table {\n      display: table;\n    }\n    .d-lg-table-row {\n      display: table-row;\n    }\n    .d-lg-table-cell {\n      display: table-cell;\n    }\n    .d-lg-flex {\n      display: flex;\n    }\n    .d-lg-inline-flex {\n      display: inline-flex;\n    }\n    .d-lg-contents {\n      display: contents;\n    }\n    .d-lg-flow-root {\n      display: flow-root;\n    }\n    .d-lg-none {\n      display: none;\n    }\n    .flex-lg-fill {\n      flex: 1 1 auto;\n    }\n    .flex-lg-row {\n      flex-direction: row;\n    }\n    .flex-lg-column {\n      flex-direction: column;\n    }\n    .flex-lg-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-lg-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-lg-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-lg-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-lg-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-lg-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-lg-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-lg-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-lg-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-lg-start {\n      justify-content: flex-start;\n    }\n    .justify-content-lg-end {\n      justify-content: flex-end;\n    }\n    .justify-content-lg-center {\n      justify-content: center;\n    }\n    .justify-content-lg-between {\n      justify-content: space-between;\n    }\n    .justify-content-lg-around {\n      justify-content: space-around;\n    }\n    .justify-content-lg-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-lg-start {\n      justify-items: start;\n    }\n    .justify-items-lg-end {\n      justify-items: end;\n    }\n    .justify-items-lg-center {\n      justify-items: center;\n    }\n    .justify-items-lg-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-lg-start {\n      justify-self: flex-start;\n    }\n    .justify-self-lg-end {\n      justify-self: flex-end;\n    }\n    .justify-self-lg-center {\n      justify-self: center;\n    }\n    .align-items-lg-start {\n      align-items: flex-start;\n    }\n    .align-items-lg-end {\n      align-items: flex-end;\n    }\n    .align-items-lg-center {\n      align-items: center;\n    }\n    .align-items-lg-baseline {\n      align-items: baseline;\n    }\n    .align-items-lg-stretch {\n      align-items: stretch;\n    }\n    .align-content-lg-start {\n      align-content: flex-start;\n    }\n    .align-content-lg-end {\n      align-content: flex-end;\n    }\n    .align-content-lg-center {\n      align-content: center;\n    }\n    .align-content-lg-between {\n      align-content: space-between;\n    }\n    .align-content-lg-around {\n      align-content: space-around;\n    }\n    .align-content-lg-stretch {\n      align-content: stretch;\n    }\n    .align-self-lg-auto {\n      align-self: auto;\n    }\n    .align-self-lg-start {\n      align-self: flex-start;\n    }\n    .align-self-lg-end {\n      align-self: flex-end;\n    }\n    .align-self-lg-center {\n      align-self: center;\n    }\n    .align-self-lg-baseline {\n      align-self: baseline;\n    }\n    .align-self-lg-stretch {\n      align-self: stretch;\n    }\n    .place-items-lg-start {\n      place-items: start;\n    }\n    .place-items-lg-end {\n      place-items: end;\n    }\n    .place-items-lg-center {\n      place-items: center;\n    }\n    .place-items-lg-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-lg-3 {\n      --columns: 3;\n    }\n    .grid-cols-lg-4 {\n      --columns: 4;\n    }\n    .grid-cols-lg-6 {\n      --columns: 6;\n    }\n    .grid-cols-lg-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-lg-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-lg-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-lg-dense {\n      grid-auto-flow: dense;\n    }\n    .order-lg-first {\n      order: -1;\n    }\n    .order-lg-0 {\n      order: 0;\n    }\n    .order-lg-1 {\n      order: 1;\n    }\n    .order-lg-2 {\n      order: 2;\n    }\n    .order-lg-3 {\n      order: 3;\n    }\n    .order-lg-4 {\n      order: 4;\n    }\n    .order-lg-5 {\n      order: 5;\n    }\n    .order-lg-last {\n      order: 6;\n    }\n    .m-lg-0 {\n      margin: 0;\n    }\n    .m-lg-1 {\n      margin: 0.25rem;\n    }\n    .m-lg-2 {\n      margin: 0.5rem;\n    }\n    .m-lg-3 {\n      margin: 1rem;\n    }\n    .m-lg-4 {\n      margin: 1.5rem;\n    }\n    .m-lg-5 {\n      margin: 3rem;\n    }\n    .m-lg-auto {\n      margin: auto;\n    }\n    .mx-lg-0 {\n      margin-inline: 0;\n    }\n    .mx-lg-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-lg-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-lg-3 {\n      margin-inline: 1rem;\n    }\n    .mx-lg-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-lg-5 {\n      margin-inline: 3rem;\n    }\n    .mx-lg-auto {\n      margin-inline: auto;\n    }\n    .my-lg-0 {\n      margin-block: 0;\n    }\n    .my-lg-1 {\n      margin-block: 0.25rem;\n    }\n    .my-lg-2 {\n      margin-block: 0.5rem;\n    }\n    .my-lg-3 {\n      margin-block: 1rem;\n    }\n    .my-lg-4 {\n      margin-block: 1.5rem;\n    }\n    .my-lg-5 {\n      margin-block: 3rem;\n    }\n    .my-lg-auto {\n      margin-block: auto;\n    }\n    .mt-lg-0 {\n      margin-block-start: 0;\n    }\n    .mt-lg-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-lg-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-lg-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-lg-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-lg-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-lg-auto {\n      margin-block-start: auto;\n    }\n    .me-lg-0 {\n      margin-inline-end: 0;\n    }\n    .me-lg-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-lg-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-lg-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-lg-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-lg-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-lg-auto {\n      margin-inline-end: auto;\n    }\n    .mb-lg-0 {\n      margin-block-end: 0;\n    }\n    .mb-lg-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-lg-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-lg-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-lg-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-lg-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-lg-auto {\n      margin-block-end: auto;\n    }\n    .ms-lg-0 {\n      margin-inline-start: 0;\n    }\n    .ms-lg-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-lg-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-lg-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-lg-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-lg-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-lg--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-lg--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-lg-auto {\n      margin-inline-start: auto;\n    }\n    .p-lg-0 {\n      padding: 0;\n    }\n    .p-lg-1 {\n      padding: 0.25rem;\n    }\n    .p-lg-2 {\n      padding: 0.5rem;\n    }\n    .p-lg-3 {\n      padding: 1rem;\n    }\n    .p-lg-4 {\n      padding: 1.5rem;\n    }\n    .p-lg-5 {\n      padding: 3rem;\n    }\n    .px-lg-0 {\n      padding-inline: 0;\n    }\n    .px-lg-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-lg-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-lg-3 {\n      padding-inline: 1rem;\n    }\n    .px-lg-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-lg-5 {\n      padding-inline: 3rem;\n    }\n    .py-lg-0 {\n      padding-block: 0;\n    }\n    .py-lg-1 {\n      padding-block: 0.25rem;\n    }\n    .py-lg-2 {\n      padding-block: 0.5rem;\n    }\n    .py-lg-3 {\n      padding-block: 1rem;\n    }\n    .py-lg-4 {\n      padding-block: 1.5rem;\n    }\n    .py-lg-5 {\n      padding-block: 3rem;\n    }\n    .pt-lg-0 {\n      padding-block-start: 0;\n    }\n    .pt-lg-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-lg-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-lg-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-lg-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-lg-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-lg-0 {\n      padding-inline-end: 0;\n    }\n    .pe-lg-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-lg-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-lg-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-lg-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-lg-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-lg-0 {\n      padding-block-end: 0;\n    }\n    .pb-lg-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-lg-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-lg-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-lg-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-lg-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-lg-0 {\n      padding-inline-start: 0;\n    }\n    .ps-lg-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-lg-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-lg-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-lg-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-lg-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-lg-0 {\n      gap: 0;\n    }\n    .gap-lg-1 {\n      gap: 0.25rem;\n    }\n    .gap-lg-2 {\n      gap: 0.5rem;\n    }\n    .gap-lg-3 {\n      gap: 1rem;\n    }\n    .gap-lg-4 {\n      gap: 1.5rem;\n    }\n    .gap-lg-5 {\n      gap: 3rem;\n    }\n    .row-gap-lg-0 {\n      row-gap: 0;\n    }\n    .row-gap-lg-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-lg-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-lg-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-lg-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-lg-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-lg-0 {\n      column-gap: 0;\n    }\n    .column-gap-lg-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-lg-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-lg-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-lg-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-lg-5 {\n      column-gap: 3rem;\n    }\n    .text-lg-start {\n      text-align: start;\n    }\n    .text-lg-end {\n      text-align: end;\n    }\n    .text-lg-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1280px) {\n    .float-xl-start {\n      float: inline-start;\n    }\n    .float-xl-end {\n      float: inline-end;\n    }\n    .float-xl-none {\n      float: none;\n    }\n    .object-fit-xl-contain {\n      object-fit: contain;\n    }\n    .object-fit-xl-cover {\n      object-fit: cover;\n    }\n    .object-fit-xl-fill {\n      object-fit: fill;\n    }\n    .object-fit-xl-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-xl-none {\n      object-fit: none;\n    }\n    .d-xl-inline {\n      display: inline;\n    }\n    .d-xl-inline-block {\n      display: inline-block;\n    }\n    .d-xl-block {\n      display: block;\n    }\n    .d-xl-grid {\n      display: grid;\n    }\n    .d-xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-xl-table {\n      display: table;\n    }\n    .d-xl-table-row {\n      display: table-row;\n    }\n    .d-xl-table-cell {\n      display: table-cell;\n    }\n    .d-xl-flex {\n      display: flex;\n    }\n    .d-xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-xl-contents {\n      display: contents;\n    }\n    .d-xl-flow-root {\n      display: flow-root;\n    }\n    .d-xl-none {\n      display: none;\n    }\n    .flex-xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-xl-row {\n      flex-direction: row;\n    }\n    .flex-xl-column {\n      flex-direction: column;\n    }\n    .flex-xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-xl-center {\n      justify-content: center;\n    }\n    .justify-content-xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-xl-start {\n      justify-items: start;\n    }\n    .justify-items-xl-end {\n      justify-items: end;\n    }\n    .justify-items-xl-center {\n      justify-items: center;\n    }\n    .justify-items-xl-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-xl-start {\n      justify-self: flex-start;\n    }\n    .justify-self-xl-end {\n      justify-self: flex-end;\n    }\n    .justify-self-xl-center {\n      justify-self: center;\n    }\n    .align-items-xl-start {\n      align-items: flex-start;\n    }\n    .align-items-xl-end {\n      align-items: flex-end;\n    }\n    .align-items-xl-center {\n      align-items: center;\n    }\n    .align-items-xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-xl-start {\n      align-content: flex-start;\n    }\n    .align-content-xl-end {\n      align-content: flex-end;\n    }\n    .align-content-xl-center {\n      align-content: center;\n    }\n    .align-content-xl-between {\n      align-content: space-between;\n    }\n    .align-content-xl-around {\n      align-content: space-around;\n    }\n    .align-content-xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-xl-auto {\n      align-self: auto;\n    }\n    .align-self-xl-start {\n      align-self: flex-start;\n    }\n    .align-self-xl-end {\n      align-self: flex-end;\n    }\n    .align-self-xl-center {\n      align-self: center;\n    }\n    .align-self-xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-xl-start {\n      place-items: start;\n    }\n    .place-items-xl-end {\n      place-items: end;\n    }\n    .place-items-xl-center {\n      place-items: center;\n    }\n    .place-items-xl-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-xl-3 {\n      --columns: 3;\n    }\n    .grid-cols-xl-4 {\n      --columns: 4;\n    }\n    .grid-cols-xl-6 {\n      --columns: 6;\n    }\n    .grid-cols-xl-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-xl-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-xl-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-xl-dense {\n      grid-auto-flow: dense;\n    }\n    .order-xl-first {\n      order: -1;\n    }\n    .order-xl-0 {\n      order: 0;\n    }\n    .order-xl-1 {\n      order: 1;\n    }\n    .order-xl-2 {\n      order: 2;\n    }\n    .order-xl-3 {\n      order: 3;\n    }\n    .order-xl-4 {\n      order: 4;\n    }\n    .order-xl-5 {\n      order: 5;\n    }\n    .order-xl-last {\n      order: 6;\n    }\n    .m-xl-0 {\n      margin: 0;\n    }\n    .m-xl-1 {\n      margin: 0.25rem;\n    }\n    .m-xl-2 {\n      margin: 0.5rem;\n    }\n    .m-xl-3 {\n      margin: 1rem;\n    }\n    .m-xl-4 {\n      margin: 1.5rem;\n    }\n    .m-xl-5 {\n      margin: 3rem;\n    }\n    .m-xl-auto {\n      margin: auto;\n    }\n    .mx-xl-0 {\n      margin-inline: 0;\n    }\n    .mx-xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-xl-auto {\n      margin-inline: auto;\n    }\n    .my-xl-0 {\n      margin-block: 0;\n    }\n    .my-xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-xl-3 {\n      margin-block: 1rem;\n    }\n    .my-xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-xl-5 {\n      margin-block: 3rem;\n    }\n    .my-xl-auto {\n      margin-block: auto;\n    }\n    .mt-xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-xl-auto {\n      margin-block-start: auto;\n    }\n    .me-xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-xl-0 {\n      padding: 0;\n    }\n    .p-xl-1 {\n      padding: 0.25rem;\n    }\n    .p-xl-2 {\n      padding: 0.5rem;\n    }\n    .p-xl-3 {\n      padding: 1rem;\n    }\n    .p-xl-4 {\n      padding: 1.5rem;\n    }\n    .p-xl-5 {\n      padding: 3rem;\n    }\n    .px-xl-0 {\n      padding-inline: 0;\n    }\n    .px-xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-xl-0 {\n      padding-block: 0;\n    }\n    .py-xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-xl-3 {\n      padding-block: 1rem;\n    }\n    .py-xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-xl-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-xl-0 {\n      gap: 0;\n    }\n    .gap-xl-1 {\n      gap: 0.25rem;\n    }\n    .gap-xl-2 {\n      gap: 0.5rem;\n    }\n    .gap-xl-3 {\n      gap: 1rem;\n    }\n    .gap-xl-4 {\n      gap: 1.5rem;\n    }\n    .gap-xl-5 {\n      gap: 3rem;\n    }\n    .row-gap-xl-0 {\n      row-gap: 0;\n    }\n    .row-gap-xl-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-xl-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-xl-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-xl-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-xl-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-xl-0 {\n      column-gap: 0;\n    }\n    .column-gap-xl-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-xl-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-xl-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-xl-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-xl-5 {\n      column-gap: 3rem;\n    }\n    .text-xl-start {\n      text-align: start;\n    }\n    .text-xl-end {\n      text-align: end;\n    }\n    .text-xl-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1536px) {\n    .float-2xl-start {\n      float: inline-start;\n    }\n    .float-2xl-end {\n      float: inline-end;\n    }\n    .float-2xl-none {\n      float: none;\n    }\n    .object-fit-2xl-contain {\n      object-fit: contain;\n    }\n    .object-fit-2xl-cover {\n      object-fit: cover;\n    }\n    .object-fit-2xl-fill {\n      object-fit: fill;\n    }\n    .object-fit-2xl-scale {\n      object-fit: scale-down;\n    }\n    .object-fit-2xl-none {\n      object-fit: none;\n    }\n    .d-2xl-inline {\n      display: inline;\n    }\n    .d-2xl-inline-block {\n      display: inline-block;\n    }\n    .d-2xl-block {\n      display: block;\n    }\n    .d-2xl-grid {\n      display: grid;\n    }\n    .d-2xl-inline-grid {\n      display: inline-grid;\n    }\n    .d-2xl-table {\n      display: table;\n    }\n    .d-2xl-table-row {\n      display: table-row;\n    }\n    .d-2xl-table-cell {\n      display: table-cell;\n    }\n    .d-2xl-flex {\n      display: flex;\n    }\n    .d-2xl-inline-flex {\n      display: inline-flex;\n    }\n    .d-2xl-contents {\n      display: contents;\n    }\n    .d-2xl-flow-root {\n      display: flow-root;\n    }\n    .d-2xl-none {\n      display: none;\n    }\n    .flex-2xl-fill {\n      flex: 1 1 auto;\n    }\n    .flex-2xl-row {\n      flex-direction: row;\n    }\n    .flex-2xl-column {\n      flex-direction: column;\n    }\n    .flex-2xl-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .flex-2xl-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .flex-2xl-grow-0 {\n      flex-grow: 0;\n    }\n    .flex-2xl-grow-1 {\n      flex-grow: 1;\n    }\n    .flex-2xl-shrink-0 {\n      flex-shrink: 0;\n    }\n    .flex-2xl-shrink-1 {\n      flex-shrink: 1;\n    }\n    .flex-2xl-wrap {\n      flex-wrap: wrap;\n    }\n    .flex-2xl-nowrap {\n      flex-wrap: nowrap;\n    }\n    .flex-2xl-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .justify-content-2xl-start {\n      justify-content: flex-start;\n    }\n    .justify-content-2xl-end {\n      justify-content: flex-end;\n    }\n    .justify-content-2xl-center {\n      justify-content: center;\n    }\n    .justify-content-2xl-between {\n      justify-content: space-between;\n    }\n    .justify-content-2xl-around {\n      justify-content: space-around;\n    }\n    .justify-content-2xl-evenly {\n      justify-content: space-evenly;\n    }\n    .justify-items-2xl-start {\n      justify-items: start;\n    }\n    .justify-items-2xl-end {\n      justify-items: end;\n    }\n    .justify-items-2xl-center {\n      justify-items: center;\n    }\n    .justify-items-2xl-stretch {\n      justify-items: stretch;\n    }\n    .justify-self-2xl-start {\n      justify-self: flex-start;\n    }\n    .justify-self-2xl-end {\n      justify-self: flex-end;\n    }\n    .justify-self-2xl-center {\n      justify-self: center;\n    }\n    .align-items-2xl-start {\n      align-items: flex-start;\n    }\n    .align-items-2xl-end {\n      align-items: flex-end;\n    }\n    .align-items-2xl-center {\n      align-items: center;\n    }\n    .align-items-2xl-baseline {\n      align-items: baseline;\n    }\n    .align-items-2xl-stretch {\n      align-items: stretch;\n    }\n    .align-content-2xl-start {\n      align-content: flex-start;\n    }\n    .align-content-2xl-end {\n      align-content: flex-end;\n    }\n    .align-content-2xl-center {\n      align-content: center;\n    }\n    .align-content-2xl-between {\n      align-content: space-between;\n    }\n    .align-content-2xl-around {\n      align-content: space-around;\n    }\n    .align-content-2xl-stretch {\n      align-content: stretch;\n    }\n    .align-self-2xl-auto {\n      align-self: auto;\n    }\n    .align-self-2xl-start {\n      align-self: flex-start;\n    }\n    .align-self-2xl-end {\n      align-self: flex-end;\n    }\n    .align-self-2xl-center {\n      align-self: center;\n    }\n    .align-self-2xl-baseline {\n      align-self: baseline;\n    }\n    .align-self-2xl-stretch {\n      align-self: stretch;\n    }\n    .place-items-2xl-start {\n      place-items: start;\n    }\n    .place-items-2xl-end {\n      place-items: end;\n    }\n    .place-items-2xl-center {\n      place-items: center;\n    }\n    .place-items-2xl-stretch {\n      place-items: stretch;\n    }\n    .grid-cols-2xl-3 {\n      --columns: 3;\n    }\n    .grid-cols-2xl-4 {\n      --columns: 4;\n    }\n    .grid-cols-2xl-6 {\n      --columns: 6;\n    }\n    .grid-cols-2xl-fill {\n      grid-column: 1 / -1;\n    }\n    .grid-auto-flow-2xl-row {\n      grid-auto-flow: row;\n    }\n    .grid-auto-flow-2xl-column {\n      grid-auto-flow: column;\n    }\n    .grid-auto-flow-2xl-dense {\n      grid-auto-flow: dense;\n    }\n    .order-2xl-first {\n      order: -1;\n    }\n    .order-2xl-0 {\n      order: 0;\n    }\n    .order-2xl-1 {\n      order: 1;\n    }\n    .order-2xl-2 {\n      order: 2;\n    }\n    .order-2xl-3 {\n      order: 3;\n    }\n    .order-2xl-4 {\n      order: 4;\n    }\n    .order-2xl-5 {\n      order: 5;\n    }\n    .order-2xl-last {\n      order: 6;\n    }\n    .m-2xl-0 {\n      margin: 0;\n    }\n    .m-2xl-1 {\n      margin: 0.25rem;\n    }\n    .m-2xl-2 {\n      margin: 0.5rem;\n    }\n    .m-2xl-3 {\n      margin: 1rem;\n    }\n    .m-2xl-4 {\n      margin: 1.5rem;\n    }\n    .m-2xl-5 {\n      margin: 3rem;\n    }\n    .m-2xl-auto {\n      margin: auto;\n    }\n    .mx-2xl-0 {\n      margin-inline: 0;\n    }\n    .mx-2xl-1 {\n      margin-inline: 0.25rem;\n    }\n    .mx-2xl-2 {\n      margin-inline: 0.5rem;\n    }\n    .mx-2xl-3 {\n      margin-inline: 1rem;\n    }\n    .mx-2xl-4 {\n      margin-inline: 1.5rem;\n    }\n    .mx-2xl-5 {\n      margin-inline: 3rem;\n    }\n    .mx-2xl-auto {\n      margin-inline: auto;\n    }\n    .my-2xl-0 {\n      margin-block: 0;\n    }\n    .my-2xl-1 {\n      margin-block: 0.25rem;\n    }\n    .my-2xl-2 {\n      margin-block: 0.5rem;\n    }\n    .my-2xl-3 {\n      margin-block: 1rem;\n    }\n    .my-2xl-4 {\n      margin-block: 1.5rem;\n    }\n    .my-2xl-5 {\n      margin-block: 3rem;\n    }\n    .my-2xl-auto {\n      margin-block: auto;\n    }\n    .mt-2xl-0 {\n      margin-block-start: 0;\n    }\n    .mt-2xl-1 {\n      margin-block-start: 0.25rem;\n    }\n    .mt-2xl-2 {\n      margin-block-start: 0.5rem;\n    }\n    .mt-2xl-3 {\n      margin-block-start: 1rem;\n    }\n    .mt-2xl-4 {\n      margin-block-start: 1.5rem;\n    }\n    .mt-2xl-5 {\n      margin-block-start: 3rem;\n    }\n    .mt-2xl-auto {\n      margin-block-start: auto;\n    }\n    .me-2xl-0 {\n      margin-inline-end: 0;\n    }\n    .me-2xl-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .me-2xl-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .me-2xl-3 {\n      margin-inline-end: 1rem;\n    }\n    .me-2xl-4 {\n      margin-inline-end: 1.5rem;\n    }\n    .me-2xl-5 {\n      margin-inline-end: 3rem;\n    }\n    .me-2xl-auto {\n      margin-inline-end: auto;\n    }\n    .mb-2xl-0 {\n      margin-block-end: 0;\n    }\n    .mb-2xl-1 {\n      margin-block-end: 0.25rem;\n    }\n    .mb-2xl-2 {\n      margin-block-end: 0.5rem;\n    }\n    .mb-2xl-3 {\n      margin-block-end: 1rem;\n    }\n    .mb-2xl-4 {\n      margin-block-end: 1.5rem;\n    }\n    .mb-2xl-5 {\n      margin-block-end: 3rem;\n    }\n    .mb-2xl-auto {\n      margin-block-end: auto;\n    }\n    .ms-2xl-0 {\n      margin-inline-start: 0;\n    }\n    .ms-2xl-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .ms-2xl-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .ms-2xl-3 {\n      margin-inline-start: 1rem;\n    }\n    .ms-2xl-4 {\n      margin-inline-start: 1.5rem;\n    }\n    .ms-2xl-5 {\n      margin-inline-start: 3rem;\n    }\n    .ms-2xl--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .ms-2xl--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .ms-2xl-auto {\n      margin-inline-start: auto;\n    }\n    .p-2xl-0 {\n      padding: 0;\n    }\n    .p-2xl-1 {\n      padding: 0.25rem;\n    }\n    .p-2xl-2 {\n      padding: 0.5rem;\n    }\n    .p-2xl-3 {\n      padding: 1rem;\n    }\n    .p-2xl-4 {\n      padding: 1.5rem;\n    }\n    .p-2xl-5 {\n      padding: 3rem;\n    }\n    .px-2xl-0 {\n      padding-inline: 0;\n    }\n    .px-2xl-1 {\n      padding-inline: 0.25rem;\n    }\n    .px-2xl-2 {\n      padding-inline: 0.5rem;\n    }\n    .px-2xl-3 {\n      padding-inline: 1rem;\n    }\n    .px-2xl-4 {\n      padding-inline: 1.5rem;\n    }\n    .px-2xl-5 {\n      padding-inline: 3rem;\n    }\n    .py-2xl-0 {\n      padding-block: 0;\n    }\n    .py-2xl-1 {\n      padding-block: 0.25rem;\n    }\n    .py-2xl-2 {\n      padding-block: 0.5rem;\n    }\n    .py-2xl-3 {\n      padding-block: 1rem;\n    }\n    .py-2xl-4 {\n      padding-block: 1.5rem;\n    }\n    .py-2xl-5 {\n      padding-block: 3rem;\n    }\n    .pt-2xl-0 {\n      padding-block-start: 0;\n    }\n    .pt-2xl-1 {\n      padding-block-start: 0.25rem;\n    }\n    .pt-2xl-2 {\n      padding-block-start: 0.5rem;\n    }\n    .pt-2xl-3 {\n      padding-block-start: 1rem;\n    }\n    .pt-2xl-4 {\n      padding-block-start: 1.5rem;\n    }\n    .pt-2xl-5 {\n      padding-block-start: 3rem;\n    }\n    .pe-2xl-0 {\n      padding-inline-end: 0;\n    }\n    .pe-2xl-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .pe-2xl-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .pe-2xl-3 {\n      padding-inline-end: 1rem;\n    }\n    .pe-2xl-4 {\n      padding-inline-end: 1.5rem;\n    }\n    .pe-2xl-5 {\n      padding-inline-end: 3rem;\n    }\n    .pb-2xl-0 {\n      padding-block-end: 0;\n    }\n    .pb-2xl-1 {\n      padding-block-end: 0.25rem;\n    }\n    .pb-2xl-2 {\n      padding-block-end: 0.5rem;\n    }\n    .pb-2xl-3 {\n      padding-block-end: 1rem;\n    }\n    .pb-2xl-4 {\n      padding-block-end: 1.5rem;\n    }\n    .pb-2xl-5 {\n      padding-block-end: 3rem;\n    }\n    .ps-2xl-0 {\n      padding-inline-start: 0;\n    }\n    .ps-2xl-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .ps-2xl-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .ps-2xl-3 {\n      padding-inline-start: 1rem;\n    }\n    .ps-2xl-4 {\n      padding-inline-start: 1.5rem;\n    }\n    .ps-2xl-5 {\n      padding-inline-start: 3rem;\n    }\n    .gap-2xl-0 {\n      gap: 0;\n    }\n    .gap-2xl-1 {\n      gap: 0.25rem;\n    }\n    .gap-2xl-2 {\n      gap: 0.5rem;\n    }\n    .gap-2xl-3 {\n      gap: 1rem;\n    }\n    .gap-2xl-4 {\n      gap: 1.5rem;\n    }\n    .gap-2xl-5 {\n      gap: 3rem;\n    }\n    .row-gap-2xl-0 {\n      row-gap: 0;\n    }\n    .row-gap-2xl-1 {\n      row-gap: 0.25rem;\n    }\n    .row-gap-2xl-2 {\n      row-gap: 0.5rem;\n    }\n    .row-gap-2xl-3 {\n      row-gap: 1rem;\n    }\n    .row-gap-2xl-4 {\n      row-gap: 1.5rem;\n    }\n    .row-gap-2xl-5 {\n      row-gap: 3rem;\n    }\n    .column-gap-2xl-0 {\n      column-gap: 0;\n    }\n    .column-gap-2xl-1 {\n      column-gap: 0.25rem;\n    }\n    .column-gap-2xl-2 {\n      column-gap: 0.5rem;\n    }\n    .column-gap-2xl-3 {\n      column-gap: 1rem;\n    }\n    .column-gap-2xl-4 {\n      column-gap: 1.5rem;\n    }\n    .column-gap-2xl-5 {\n      column-gap: 3rem;\n    }\n    .text-2xl-start {\n      text-align: start;\n    }\n    .text-2xl-end {\n      text-align: end;\n    }\n    .text-2xl-center {\n      text-align: center;\n    }\n  }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */\n","$file: \"\" !default;\n\n/*!\n  * Bootstrap #{$file} v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n","// stylelint-disable hue-degree-notation, @stylistic/number-leading-zero\n\n@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// Easily convert colors to oklch() with https://oklch.com/\n\n$white: #fff !default;\n$black: #000 !default;\n\n// scss-docs-start colors-list\n$blue: oklch(60% 0.24 240) !default;\n$indigo: oklch(56% 0.26 288) !default;\n$violet: oklch(56% 0.24 300) !default;\n$purple: oklch(56% 0.24 320) !default;\n$pink: oklch(60% 0.22 4) !default;\n$red: oklch(60% 0.22 20) !default;\n$orange: oklch(70% 0.22 52) !default;\n$amber: oklch(79% 0.2 78) !default;\n$yellow: oklch(88% 0.24 88) !default;\n$lime: oklch(65% 0.24 135) !default;\n$green: oklch(64% 0.22 160) !default;\n$teal: oklch(68% 0.22 190) !default;\n$cyan: oklch(69% 0.22 220) !default;\n$brown: oklch(60% 0.12 54) !default;\n$gray: oklch(60% 0.02 245) !default;\n$pewter: oklch(65% 0.01 290) !default;\n// scss-docs-end colors-list\n\n// scss-docs-start colors-map\n$colors: () !default;\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$colors: defaults(\n  (\n    \"blue\": $blue,\n    \"indigo\": $indigo,\n    \"violet\": $violet,\n    \"purple\": $purple,\n    \"pink\": $pink,\n    \"red\": $red,\n    \"orange\": $orange,\n    \"amber\": $amber,\n    \"yellow\": $yellow,\n    \"lime\": $lime,\n    \"green\": $green,\n    \"teal\": $teal,\n    \"cyan\": $cyan,\n    \"brown\": $brown,\n    \"gray\": $gray,\n    \"pewter\": $pewter,\n  ),\n  $colors\n);\n// scss-docs-end colors-map\n\n// scss-docs-start color-mix-options\n$color-mix-space: lab !default;\n$tint-color: var(--white) !default;\n$shade-color: var(--black) !default;\n\n$color-tints: (\n  \"025\": 94%,\n  \"050\": 90%,\n  \"100\": 80%,\n  \"200\": 60%,\n  \"300\": 40%,\n  \"400\": 20%,\n) !default;\n\n$color-shades: (\n  \"600\": 16%,\n  \"700\": 32%,\n  \"800\": 48%,\n  \"900\": 64%,\n  \"950\": 76%,\n  \"975\": 88%,\n) !default;\n// scss-docs-end color-mix-options\n\n// scss-docs-start color-tokens\n$color-tokens: () !default;\n\n$-color-defaults: () !default;\n@each $color, $value in $colors {\n  @each $stop, $percent in $color-tints {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$tint-color} #{$percent}, #{$value}));\n  }\n  $-color-defaults: map.set($-color-defaults, --#{$color}-500, #{$value});\n  @each $stop, $percent in $color-shades {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$shade-color} #{$percent}, #{$value}));\n  }\n}\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$color-tokens: defaults($-color-defaults, $color-tokens);\n// scss-docs-end color-tokens\n\n:root {\n  @include tokens($color-tokens);\n}\n","// Mixin to output tokens as CSS custom properties\n\n// scss-docs-start mixin-tokens\n@mixin tokens($map) {\n  @each $prop, $value in $map {\n    #{$prop}: #{$value};\n  }\n}\n// scss-docs-end mixin-tokens\n","@use \"sass:map\";\n@use \"colors\" as *;\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"theme\" as *;\n@use \"mixins/tokens\" as *;\n@use \"forms/form-variables\" as *;\n\n// mdo-do: do we need theme?\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n\n$root-tokens: () !default;\n\n// scss-docs-start root-tokens\n// stylelint-disable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: defaults(\n  (\n    --black: #{$black},\n    --white: #{$white},\n\n    --gradient: #{$gradient},\n\n    // scss-docs-start root-font-weight-variables\n    --font-weight-lighter: lighter,\n    --font-weight-light: 300,\n    --font-weight-normal: 400,\n    --font-weight-medium: 500,\n    --font-weight-semibold: 600,\n    --font-weight-bold: 700,\n    --font-weight-bolder: bolder,\n    // scss-docs-end root-font-weight-variables\n\n    // scss-docs-start root-body-variables\n    --body-font-family: system-ui,\n    --body-font-size: var(--font-size-base),\n    --body-font-weight: #{$font-weight-base},\n    --body-line-height: #{$line-height-base},\n\n    --heading-color: #{$headings-color},\n\n    --hr-border-color: var(--border-color),\n\n    --link-color: light-dark(var(--primary-base), var(--primary-text)),\n    --link-decoration: #{$link-decoration},\n    --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000),\n\n    --font-mono: \"SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace\",\n    --code-font-size: 95%,\n    --code-color: var(--fg-2),\n\n    // scss-docs-start root-border-var\n    --border-width: #{$border-width},\n    --border-style: #{$border-style},\n    --border-color: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-700)),\n    --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    // scss-docs-end root-border-var\n\n    // scss-docs-start root-border-radius-var\n    --border-radius: .5rem,\n    --border-radius-xs: .375rem,\n    --border-radius-sm: .5rem,\n    --border-radius-lg: .75rem,\n    --border-radius-xl: 1rem,\n    --border-radius-2xl: 2rem,\n    --border-radius-pill: 50rem,\n    // scss-docs-end root-border-radius-var\n\n    // scss-docs-start root-box-shadow-variables\n    --box-shadow: 0 .5rem 1rem rgb(0 0 0 / 15%),\n    --box-shadow-sm: 0 .125rem .25rem rgb(0 0 0 / 7.5%),\n    --box-shadow-lg: 0 1rem 3rem rgb(0 0 0 / 17.5%),\n    --box-shadow-inset: inset 0 1px 2px rgb(0 0 0 / 7.5%),\n    // scss-docs-end root-box-shadow-variables\n\n    --spacer: 1rem,\n\n    // scss-docs-start root-focus-variables\n    --focus-ring-width: 3px,\n    --focus-ring-offset: 1px,\n    --focus-ring-color: var(--primary-focus-ring),\n    --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color),\n    // scss-docs-end root-focus-variables\n\n    // scss-docs-start root-form-variables\n    --control-checked-bg: var(--primary-base),\n    --control-checked-border-color: var(--control-checked-bg),\n    --control-active-bg: var(--primary-base),\n    --control-active-border-color: var(--control-active-bg),\n    --control-disabled-bg: var(--bg-3),\n    --control-disabled-opacity: .65,\n\n    --btn-input-fg: var(--fg-body),\n    --btn-input-bg: var(--bg-body),\n\n    --btn-input-min-height: 2.375rem,\n    --btn-input-padding-y: .375rem,\n    --btn-input-padding-x: .75rem,\n    --btn-input-font-size: var(--font-size-base),\n    --btn-input-line-height: var(--line-height-base),\n    --btn-input-border-radius: var(--border-radius),\n\n    --btn-input-xs-min-height: 1.5rem,\n    --btn-input-xs-padding-y: .125rem,\n    --btn-input-xs-padding-x: .5rem,\n    --btn-input-xs-font-size: var(--font-size-xs),\n    --btn-input-xs-line-height: 1.125,\n    --btn-input-xs-border-radius: var(--border-radius-xs),\n\n    --btn-input-sm-min-height: 2rem,\n    --btn-input-sm-padding-y: .25rem,\n    --btn-input-sm-padding-x: .625rem,\n    --btn-input-sm-font-size: var(--font-size-sm),\n    --btn-input-sm-line-height: var(--line-height-sm),\n    --btn-input-sm-border-radius: var(--border-radius-sm),\n\n    --btn-input-lg-min-height: 2.75rem,\n    --btn-input-lg-padding-y: .5rem,\n    --btn-input-lg-padding-x: 1rem,\n    --btn-input-lg-font-size: var(--font-size-md),\n    --btn-input-lg-line-height: var(--line-height-md),\n    --btn-input-lg-border-radius: var(--border-radius-lg),\n    // scss-docs-end root-form-variables\n\n    // scss-docs-start root-form-validation-variables\n    --form-valid-color: #{$form-valid-color},\n    --form-valid-border-color: #{$form-valid-border-color},\n    --form-invalid-color: #{$form-invalid-color},\n    --form-invalid-border-color: #{$form-invalid-border-color},\n    // scss-docs-end root-form-validation-variables\n  ),\n  $root-tokens\n);\n// stylelint-enable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// scss-docs-end root-tokens\n\n// scss-docs-start root-font-size-loop\n// Generate font-size and line-height tokens\n@each $name, $props in $font-sizes {\n  $root-tokens: map.set($root-tokens, --font-size-#{$name}, map.get($props, \"font-size\"));\n  $root-tokens: map.set($root-tokens, --line-height-#{$name}, map.get($props, \"line-height\"));\n}\n// scss-docs-end root-font-size-loop\n\n// scss-docs-start root-theme-tokens\n// Generate semantic theme colors\n@each $color-name, $color-map in $theme-colors {\n  @each $key, $value in $color-map {\n    $root-tokens: map.set($root-tokens, --#{$color-name}-#{$key}, $value);\n  }\n}\n\n// Generate background tokens\n@each $key, $value in $theme-bgs {\n  $root-tokens: map.set($root-tokens, --bg-#{$key}, $value);\n}\n\n// Generate foreground tokens\n@each $key, $value in $theme-fgs {\n  $root-tokens: map.set($root-tokens, --fg-#{$key}, $value);\n}\n\n// Generate border tokens\n@each $key, $value in $theme-borders {\n  $root-tokens: map.set($root-tokens, --border-#{$key}, $value);\n}\n// scss-docs-end root-theme-tokens\n\n// Generate breakpoint tokens\n@each $name, $value in $breakpoints {\n  $root-tokens: map.set($root-tokens, --breakpoint-#{$name}, $value);\n}\n\n:root {\n  @include tokens($root-tokens);\n\n  color-scheme: light dark;\n}\n\n[data-bs-theme=\"dark\"] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=\"light\"] {\n  color-scheme: light;\n}\n","@use \"../colors\" as *;\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n$reboot-kbd-tokens: () !default;\n$reboot-mark-tokens: () !default;\n\n// scss-docs-start reboot-kbd-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-kbd-tokens: defaults(\n  (\n    --kbd-padding-y: .125rem,\n    --kbd-padding-x: .25rem,\n    --kbd-font-size: var(--font-size-xs),\n    --kbd-color: var(--bg-body),\n    --kbd-bg: var(--fg-2),\n    --kbd-border-radius: var(--border-radius-sm),\n  ),\n  $reboot-kbd-tokens\n);\n// scss-docs-end reboot-kbd-tokens\n\n// scss-docs-start reboot-mark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-mark-tokens: defaults(\n  (\n    --mark-padding: .1875em,\n    --mark-color: var(--fg-body),\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900)),\n  ),\n  $reboot-mark-tokens\n);\n// scss-docs-end reboot-mark-tokens\n\n@layer reboot {\n  // Reboot\n  //\n  // Normalization of HTML elements, manually forked from Normalize.css to remove\n  // styles targeting irrelevant browsers while applying new styles.\n  //\n  // Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n  // Document\n  //\n  // Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n\n  // Root\n  //\n  // Ability to the value of the root font sizes, affecting the value of `rem`.\n  // null by default, thus nothing is generated.\n\n  :root {\n    // Assume browser default font-size of 16px, or a user's preference\n    accent-color: var(--primary-base);\n\n    @if $enable-smooth-scroll {\n      @media (prefers-reduced-motion: no-preference) {\n        scroll-behavior: smooth;\n      }\n    }\n  }\n\n  // Body\n  //\n  // 1. Remove the margin in all browsers.\n  // 2. As a best practice, apply a default `background-color`.\n  // 3. Prevent adjustments of font size after orientation changes in iOS.\n  // 4. Change the default tap highlight to be completely transparent in iOS.\n\n  // scss-docs-start reboot-body-rules\n  body {\n    margin: 0; // 1\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body); // 2\n    -webkit-text-size-adjust: 100%; // 3\n    -webkit-tap-highlight-color: rgba($black, 0); // 4\n  }\n  // scss-docs-end reboot-body-rules\n\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n\n  // Typography\n  //\n  // 1. Remove top margins from headings\n  //    By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n  //    margin for easier control within type scales as it avoids margin collapsing.\n\n  %heading {\n    margin-top: 0; // 1\n    margin-bottom: $headings-margin-bottom;\n    font-family: $headings-font-family;\n    font-style: $headings-font-style;\n    font-weight: $headings-font-weight;\n    line-height: $headings-line-height;\n    color: var(--heading-color);\n  }\n\n  h1,\n  .h1 {\n    @extend %heading;\n    font-size: var(--font-size-3xl);\n  }\n\n  h2,\n  .h2 {\n    @extend %heading;\n    font-size: var(--font-size-2xl);\n  }\n\n  h3,\n  .h3 {\n    @extend %heading;\n    font-size: var(--font-size-xl);\n  }\n\n  h4,\n  .h4 {\n    @extend %heading;\n    font-size: var(--font-size-lg);\n  }\n\n  h5,\n  .h5 {\n    @extend %heading;\n    font-size: var(--font-size-md);\n  }\n\n  h6,\n  .h6 {\n    @extend %heading;\n    font-size: var(--font-size-sm);\n  }\n\n  // Reset margins on paragraphs\n  //\n  // Similarly, the top margin on `<p>`s get reset. However, we also reset the\n  // bottom margin to use `rem` units instead of `em`.\n\n  p {\n    margin-top: 0;\n    margin-bottom: $paragraph-margin-bottom;\n  }\n\n  // Abbreviations\n  //\n  // 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n  // 2. Add explicit cursor to indicate changed behavior.\n  // 3. Prevent the text-decoration to be skipped.\n\n  abbr[title] {\n    text-decoration: underline dotted; // 1\n    cursor: help; // 2\n    text-decoration-skip-ink: none; // 3\n  }\n\n  // Address\n\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n\n  // Lists\n\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n\n  dt {\n    font-weight: $dt-font-weight;\n  }\n\n  // 1. Undo browser default\n\n  dd {\n    margin-inline-start: 0; // 1\n    margin-bottom: .5rem;\n  }\n\n  // Blockquote\n\n  blockquote {\n    margin: 0 0 1rem;\n    > * {\n      margin-block: 0;\n    }\n  }\n\n  // Strong\n  //\n  // Add the correct font weight in Chrome, Edge, and Safari\n\n  b,\n  strong {\n    font-weight: $font-weight-bolder;\n  }\n\n  // Small\n  //\n  // Add the correct font size in all browsers\n\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n\n  // Mark\n\n  mark,\n  .mark {\n    @include tokens($reboot-mark-tokens);\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n\n  // Sub and Sup\n  //\n  // Prevent `sub` and `sup` elements from affecting the line height in\n  // all browsers.\n\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, .75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n\n  sub { bottom: -.25em; }\n  sup { top: -.5em; }\n\n  // Links\n\n  a {\n    color: var(--theme-text, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: $link-underline-offset;\n\n    &:hover {\n      // --link-color: var(--link-hover-color);\n      // --link-decoration: var(--link-hover-decoration, var(--link-decoration));\n      color: var(--theme-text-emphasis, var(--link-hover-color));\n      text-decoration: var(--link-hover-decoration, var(--link-decoration));\n    }\n  }\n\n  // And undo these styles for placeholder links/named anchors (without href).\n  // It would be more straightforward to just use a[href] in previous block, but that\n  // causes specificity issues in many other styles that are too complex to fix.\n  // See https://github.com/twbs/bootstrap/issues/19402\n\n  a:not([href]):not([class]) {\n    &,\n    &:hover {\n      color: inherit;\n      text-decoration: none;\n    }\n  }\n\n  // Code\n\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n  }\n\n  // 1. Remove browser default top margin\n  // 2. Reset browser default of `1em` to use `rem`s\n  // 3. Don't allow content to break outside\n\n  pre {\n    display: block;\n    margin-top: 0; // 1\n    margin-bottom: 1rem; // 2\n    overflow: auto; // 3\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n\n    // Account for some code outputs that place code tags in pre tags\n    code {\n      font-size: inherit;\n      color: inherit;\n      word-break: normal;\n    }\n  }\n\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n\n    // Streamline the style when inside anchors to avoid broken underline and more\n    a > & {\n      color: inherit;\n    }\n  }\n\n  kbd {\n    @include tokens($reboot-kbd-tokens);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    @include border-radius(var(--kbd-border-radius));\n\n    kbd {\n      padding: 0;\n      font-size: 1em;\n      font-weight: inherit; // mdo-do: check if this is needed\n    }\n  }\n\n  // Figures\n  //\n  // Apply a consistent margin strategy (matches our type styles).\n\n  figure {\n    margin: 0 0 1rem;\n  }\n\n  // Images and content\n\n  img,\n  svg {\n    vertical-align: middle;\n  }\n\n  // Tables\n  //\n  // Prevent double borders\n\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n\n  caption {\n    // padding-top: $table-cell-padding-y;\n    // padding-bottom: $table-cell-padding-y;\n    // color: $table-caption-color;\n    padding-block: .5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n\n  // 1. Removes font-weight bold by inheriting\n  // 2. Matches default `<td>` alignment by inheriting `text-align`.\n  // 3. Fix alignment for Safari\n\n  th {\n    // font-weight: $table-th-font-weight; // 1 // mdo-do: it's null by default. maybe we remove?\n    text-align: inherit; // 2\n    text-align: -webkit-match-parent; // 3\n  }\n\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n\n  // Forms\n  //\n  // 1. Allow labels to use `margin` for spacing.\n\n  label {\n    display: inline-block; // 1\n  }\n\n  // Remove the default `border-radius` that macOS Chrome adds.\n  // See https://github.com/twbs/bootstrap/issues/24093\n\n  button {\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 0;\n  }\n\n  // Explicitly remove focus outline in Chromium when it shouldn't be\n  // visible (e.g. as result of mouse click or touch tap). It already\n  // should be doing this automatically, but seems to currently be\n  // confused and applies its very visible two-tone outline anyway.\n\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n\n  // 1. Remove the margin in Firefox and Safari\n\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0; // 1\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n\n  // Remove the inheritance of text transform in Firefox\n  button,\n  select {\n    text-transform: none;\n  }\n  // Set the cursor for non-`<button>` buttons\n  //\n  // Details at https://github.com/twbs/bootstrap/pull/30562\n  [role=\"button\"] {\n    cursor: pointer;\n  }\n\n  select {\n    // Remove the inheritance of word-wrap in Safari.\n    // See https://github.com/twbs/bootstrap/issues/24990\n    word-wrap: normal;\n\n    // Undo the opacity change from Chrome\n    &:disabled {\n      opacity: 1;\n    }\n  }\n\n  // Remove the dropdown arrow only from text type inputs built with datalists in Chrome.\n  // See https://stackoverflow.com/a/54997118\n\n  [list]:not([type=\"date\"]):not([type=\"datetime-local\"]):not([type=\"month\"]):not([type=\"week\"]):not([type=\"time\"])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n\n  // 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n  //    controls in Android 4.\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n  // 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\n  button,\n  [type=\"button\"], // 1\n  [type=\"reset\"],\n  [type=\"submit\"] {\n    -webkit-appearance: button; // 2\n\n    @if $enable-button-pointers {\n      &:not(:disabled) {\n        cursor: pointer; // 3\n      }\n    }\n  }\n\n  // Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\n\n  ::-moz-focus-inner {\n    padding: 0;\n    border-style: none;\n  }\n\n  // 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\n  textarea {\n    resize: vertical; // 1\n  }\n\n  // 1. Browsers set a default `min-width: min-content;` on fieldsets,\n  //    unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n  //    So we reset that to ensure fieldsets behave more like a standard block element.\n  //    See https://github.com/twbs/bootstrap/issues/12359\n  //    and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n  // 2. Reset the default outline behavior of fieldsets so they don't affect page layout.\n\n  fieldset {\n    min-width: 0; // 1\n    padding: 0; // 2\n    margin: 0; // 2\n    border: 0; // 2\n  }\n\n  // 1. By using `float: inline-start`, the legend will behave like a block element.\n  //    This way the border of a fieldset wraps around the legend if present.\n  // 2. Fix wrapping bug.\n  //    See https://github.com/twbs/bootstrap/issues/29712\n\n  legend {\n    float: inline-start; // 1\n    width: 100%;\n    padding: 0;\n    margin-bottom: $legend-margin-bottom;\n    font-size: $legend-font-size;\n    font-weight: $legend-font-weight;\n    line-height: inherit;\n\n    + * {\n      clear: inline-start; // 2\n    }\n  }\n\n  // Fix height of inputs with a type of datetime-local, date, month, week, or time\n  // See https://github.com/twbs/bootstrap/issues/18842\n\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-ampm-field,\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n\n  ::-webkit-inner-spin-button {\n    height: auto;\n  }\n\n  // 1. This overrides the extra rounded corners on search inputs in iOS so that our\n  //    `.form-control` class can properly style them. Note that this cannot simply\n  //    be added to `.form-control` as it's not specific enough. For details, see\n  //    https://github.com/twbs/bootstrap/issues/11586.\n  // 2. Correct the outline style in Safari.\n\n  [type=\"search\"] {\n    -webkit-appearance: textfield; // 1\n    outline-offset: -2px; // 2\n\n    // 3. Better affordance and consistent appearance for search cancel button\n    &::-webkit-search-cancel-button {\n      cursor: pointer;\n      filter: grayscale(1);\n    }\n  }\n\n  // A few input types should stay LTR regardless of document direction\n  // See https://rtlstyling.com/posts/rtl-styling#form-inputs\n\n  [type=\"tel\"],\n  [type=\"url\"],\n  [type=\"email\"],\n  [type=\"number\"] {\n    direction: ltr;\n  }\n\n  // Remove the inner padding in Chrome and Safari on macOS.\n\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n\n  // Remove padding around color pickers in webkit browsers\n\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n\n  // 1. Inherit font family and line height for file input buttons\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n\n  ::file-selector-button {\n    font: inherit; // 1\n    -webkit-appearance: button; // 2\n  }\n\n  // Correct element displays\n\n  output {\n    display: inline-block;\n  }\n\n  // Remove border from iframe\n\n  iframe {\n    border: 0;\n  }\n\n  // Summary\n  //\n  // 1. Add the correct display in all browsers\n\n  summary {\n    display: list-item; // 1\n    cursor: pointer;\n  }\n\n  // Progress\n  //\n  // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\n  progress {\n    vertical-align: baseline;\n  }\n\n  // Hidden attribute\n  //\n  // Always hide an element with the `hidden` HTML attribute.\n\n  [hidden] {\n    display: none !important;\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n\n// Configuration\n//\n// Variables and settings not related to theme, components, and more go here. It does include layout.\n\n// Merge overrides on top of defaults, stripping null entries.\n// Null values let users remove map keys via @use ... with().\n// Accepts a list as $defaults (converted to a map with `true` values).\n@function defaults($defaults, $overrides) {\n  @if meta.type-of($defaults) == \"list\" {\n    $map: ();\n    @each $key in $defaults {\n      $map: map.merge($map, ($key: true));\n    }\n    $defaults: $map;\n  }\n  $merged: map.merge($defaults, $overrides);\n  @each $key, $value in $merged {\n    @if $value == null {\n      $merged: map.remove($merged, $key);\n    }\n  }\n  @return $merged;\n}\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              true !default;\n$enable-gradients:            false !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        true !default;\n$enable-grid-classes:         true !default;\n$enable-container-classes:    true !default;\n$enable-cssgrid:              true !default;\n$enable-button-pointers:      true !default;\n$enable-validation-icons:     true !default;\n// $enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n\n$enable-dark-mode:            true !default;\n\n$color-mode-type:          \"media-query\" !default;\n$color-contrast-dark:      #000 !default;\n$color-contrast-light:     #fff !default;\n$min-contrast-ratio:         4.5 !default;\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer,\n  4: $spacer * 1.5,\n  5: $spacer * 3,\n) !default;\n\n$negative-spacers: (\n  \"-1\": $spacer * -.25,\n  \"-2\": $spacer * -.5,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n$sizes: (\n  1: $spacer,\n  2: calc($spacer * 2),\n  3: calc($spacer * 3),\n  4: calc($spacer * 4),\n  5: calc($spacer * 5),\n  6: calc($spacer * 6),\n  7: calc($spacer * 7),\n  8: calc($spacer * 8),\n  9: calc($spacer * 9),\n  10: calc($spacer * 10),\n  11: calc($spacer * 11),\n  12: calc($spacer * 12),\n) !default;\n\n// Breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start breakpoints\n$breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 1024px,\n  xl: 1280px,\n  2xl: 1536px\n) !default;\n// scss-docs-end breakpoints\n\n// @include _assert-ascending($breakpoints, \"$breakpoints\");\n// @include _assert-starts-at-zero($breakpoints, \"$breakpoints\");\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-x: 1.5rem !default;\n$grid-gutter-y: 0 !default;\n$grid-row-columns: 6 !default;\n\n$gutters: $spacers !default;\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1200px,\n  2xl: 1440px\n) !default;\n// scss-docs-end container-max-widths\n\n$container-padding-x: $grid-gutter-x !default;\n\n$utilities: () !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent)) !default;\n// scss-docs-end variable-gradient\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Links\n//\n// Style anchor elements.\n\n$link-decoration:                         underline !default;\n$link-underline-offset:                   .2em !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap:               .375rem !default;\n$icon-link-underline-offset:  .25em !default;\n$icon-link-icon-size:         1em !default;\n$icon-link-icon-transition:   .2s ease-in-out transform !default;\n$icon-link-icon-transform:    translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n$border-style:                solid !default;\n$border-color:                color-mix(in oklch, var(--gray-100), var(--gray-200)) !default;\n// scss-docs-end border-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"auto\": auto,\n  \"1x1\": #{\"1 / 1\"},\n  \"4x3\": #{\"4 / 3\"},\n  \"16x9\": #{\"16 / 9\"},\n  \"21x9\": #{\"21 / 9\"}\n) !default;\n// scss-docs-end aspect-ratios\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-medium:          500 !default;\n$font-weight-semibold:        600 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$font-sizes: defaults(\n  (\n    \"xs\": (\n      \"font-size\": .75rem,\n      \"line-height\": 1.25\n    ),\n    \"sm\": (\n      \"font-size\": .875rem,\n      \"line-height\": 1.5\n    ),\n    \"md\": (\n      \"font-size\": 1rem,\n      \"line-height\": 1.5\n    ),\n    \"lg\": (\n      \"font-size\": clamp(1.25rem, 1rem + .625vw, 1.5rem),\n      \"line-height\": 1.5\n    ),\n    \"xl\": (\n      \"font-size\": clamp(1.5rem, 1.1rem + .75vw, 1.75rem),\n      \"line-height\": calc(2.5 / 1.75)\n    ),\n    \"2xl\": (\n      \"font-size\": clamp(1.75rem, 1.3rem + 1vw, 2rem),\n      \"line-height\": calc(3 / 2.25)\n    ),\n    \"3xl\": (\n      \"font-size\": clamp(2rem, 1.5rem + 1.875vw, 2.5rem),\n      \"line-height\": 1.2\n    ),\n    \"4xl\": (\n      \"font-size\": clamp(2.25rem, 1.75rem + 2.5vw, 3rem),\n      \"line-height\": 1.1\n    ),\n    \"5xl\": (\n      \"font-size\": clamp(3rem, 2rem + 5vw, 4rem),\n      \"line-height\": 1.1\n    ),\n    \"6xl\": (\n      \"font-size\": clamp(3.75rem, 2.5rem + 6.25vw, 5rem),\n      \"line-height\": 1\n    ),\n  ),\n  $font-sizes\n);\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      $spacer * .5 !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start type-variables\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n// scss-docs-end type-variables\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-menu:                       1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n$zindex-offcanvas-backdrop:         1040 !default;\n$zindex-offcanvas:                  1045 !default;\n$zindex-dialog:                     1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n$zindex-toast:                      1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n  n1: -1,\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n","@use \"sass:list\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n  $return: ();\n  @each $value in $radius {\n    @if meta.type-of($value) == number {\n      $return: list.append($return, math.max($value, 0));\n    } @else {\n      $return: list.append($return, $value);\n    }\n  }\n  @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: var(--border-radius), $fallback-border-radius: false) {\n  @if $enable-rounded {\n    border-radius: valid-radius($radius);\n  }\n  @else if $fallback-border-radius != false {\n    border-radius: $fallback-border-radius;\n  }\n}\n\n@mixin border-top-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: var(--border-radius)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n// scss-docs-end border-radius-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/lists\" as *;\n@use \"../mixins/tokens\" as *;\n\n$blockquote-tokens: () !default;\n\n// scss-docs-start blockquote-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$blockquote-tokens: defaults(\n  (\n    --blockquote-gap: calc(var(--spacer) / 2),\n    --blockquote-padding-x: var(--spacer),\n    --blockquote-margin-y: 1rem,\n    --blockquote-font-size: var(--font-size-md),\n    --blockquote-border-width: .25rem,\n    --blockquote-border-color: var(--border-color),\n    --blockquote-footer-font-size: var(--font-size-sm),\n    --blockquote-footer-color: var(--fg-3),\n  ),\n  $blockquote-tokens\n);\n// scss-docs-end blockquote-tokens\n\n@layer content {\n  //\n  // Lists\n  //\n\n  .list-unstyled {\n    @include list-unstyled();\n  }\n\n  // Inline turns list items into inline-block\n  .list-inline {\n    @include list-unstyled();\n  }\n  .list-inline-item {\n    display: inline-block;\n\n    &:not(:last-child) {\n      margin-inline-end: var(--list-inline-padding, var(--spacer) / 2);\n    }\n  }\n\n  //\n  // Misc\n  //\n\n  // Builds on `abbr`\n  .initialism {\n    font-size: var(--initialism-font-size, var(--font-size-xs));\n    text-transform: uppercase;\n  }\n\n  // Blockquotes\n  .blockquote {\n    @include tokens($blockquote-tokens);\n    display: flex;\n    flex-direction: column;\n    gap: var(--blockquote-gap);\n    padding-inline-start: var(--blockquote-padding-x);\n    margin-bottom: var(--blockquote-margin-y);\n    font-size: var(--blockquote-font-size);\n    border-inline-start: var(--blockquote-border-width) solid var(--blockquote-border-color);\n\n    > * {\n      margin-bottom: 0;\n    }\n  }\n\n  // stylelint-disable-next-line selector-no-qualifying-type\n  figure.blockquote {\n    blockquote {\n      margin-bottom: 0;\n    }\n  }\n\n  .blockquote-footer {\n    font-size: var(--blockquote-footer-font-size);\n    color: var(--blockquote-footer-color);\n\n    &::before {\n      content: \"\\2014\\00A0\"; // em dash, nbsp\n    }\n  }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n  padding-inline-start: 0;\n  list-style: none;\n}\n","@use \"sass:map\";\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../layout/breakpoints\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$table-tokens: () !default;\n\n// scss-docs-start table-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$table-tokens: defaults(\n  (\n    --table-cell-padding-y: .5rem,\n    --table-cell-padding-x: .5rem,\n    --table-cell-vertical-align: top,\n    --table-color: var(--fg-body),\n    --table-bg: var(--bg-body),\n    --table-accent-bg: transparent,\n    --table-border-width: var(--border-width),\n    --table-border-color: var(--border-color),\n    --table-group-separator-color: currentcolor,\n    --table-striped-color: var(--table-color),\n    --table-striped-bg-factor: .05,\n    --table-striped-bg: color-mix(in srgb, var(--table-color) var(--table-striped-bg-factor), transparent),\n    --table-active-color: var(--table-color),\n    --table-active-bg-factor: .1,\n    --table-active-bg: color-mix(in srgb, var(--table-color) var(--table-active-bg-factor), transparent),\n    --table-hover-color: var(--table-color),\n    --table-hover-bg-factor: .075,\n    --table-hover-bg: color-mix(in srgb, var(--table-color) var(--table-hover-bg-factor), transparent),\n  ),\n  $table-tokens\n);\n// scss-docs-end table-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n//\n// Basic Bootstrap table\n//\n\n@layer content {\n  .table {\n    @include tokens($table-tokens);\n\n    // Reset needed for nesting tables\n    --table-color-type: initial;\n    --table-bg-type: initial;\n    --table-color-state: initial;\n    --table-bg-state: initial;\n    // End of reset\n\n    width: 100%;\n    margin-bottom: $spacer;\n    vertical-align: var(--table-cell-vertical-align);\n    border-color: var(--theme-border, var(--table-border-color));\n\n    // Target th & td\n    // We need the child combinator to prevent styles leaking to nested tables which doesn't have a `.table` class.\n    // We use the universal selectors here to simplify the selector (else we would need 6 different selectors).\n    // Another advantage is that this generates less code and makes the selector less specific making it easier to override.\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      padding: var(--table-cell-padding-y) var(--table-cell-padding-x);\n      // Following the precept of cascades: https://codepen.io/miriamsuzanne/full/vYNgodb\n      color: var(--table-color-state, var(--table-color-type, var(--theme-text, var(--table-color))));\n      background-color: var(--theme-bg-subtle, var(--table-bg));\n      border-block-end-width: var(--table-border-width);\n      box-shadow: inset 0 0 0 9999px var(--table-bg-state, var(--table-bg-type, var(--theme-bg-subtle, var(--table-accent-bg))));\n    }\n\n    > tbody {\n      vertical-align: inherit;\n    }\n\n    > thead {\n      vertical-align: bottom;\n    }\n  }\n\n  .table-group-divider {\n    border-block-start: calc(var(--table-border-width) * 2) solid var(--table-group-separator-color);\n  }\n\n  //\n  // Change placement of captions with a class\n  //\n\n  .caption-top {\n    caption-side: top;\n  }\n\n  //\n  // Condensed table w/ half padding\n  //\n\n  .table-sm {\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      --table-cell-padding-y: .25rem;\n      --table-cell-padding-x: .25rem;\n    }\n  }\n\n  // Border versions\n  //\n  // Add or remove borders all around the table and between all the columns.\n  //\n  // When borders are added on all sides of the cells, the corners can render odd when\n  // these borders do not have the same color or if they are semi-transparent.\n  // Therefore we add top and border bottoms to the `tr`s and left and right borders\n  // to the `td`s or `th`s\n\n  .table-bordered {\n    > :not(caption) > * {\n      border-width: var(--table-border-width) 0;\n\n      // stylelint-disable-next-line selector-max-universal\n      > * {\n        border-width: 0 var(--table-border-width);\n      }\n    }\n  }\n\n  .table-borderless {\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      border-block-end-width: 0;\n    }\n\n    > :not(:first-child) {\n      border-block-start-width: 0;\n    }\n  }\n\n  // Zebra-striping\n  //\n  // Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n  // For rows\n  .table-striped {\n    > tbody > tr:nth-of-type(#{$table-striped-order}) > * {\n      --table-color-type: var(--theme-text, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-striped-bg-factor), transparent);\n    }\n  }\n\n  // For columns\n  .table-striped-columns {\n    > :not(caption) > tr > :nth-child(#{$table-striped-columns-order}) {\n      --table-color-type: var(--theme-text, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-striped-bg-factor), transparent);\n    }\n  }\n\n  // Active table\n  //\n  // The `.table-active` class can be added to highlight rows or cells\n\n  .table-active {\n    --table-color-state: var(--theme-text, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-active-bg-factor), transparent);\n  }\n\n  // Hover effect\n  //\n  // Placed here since it has to come after the potential zebra striping\n\n  .table-hover {\n    > tbody > tr:hover > * {\n      --table-color-state: var(--theme-text, var(--table-hover-color));\n      --table-bg-state: color-mix(in srgb, var(--theme-text, var(--table-color)) var(--table-hover-bg-factor), transparent);\n    }\n  }\n\n  // Responsive tables\n  //\n  // Generate series of `.table-responsive-*` classes for configuring the screen\n  // size of where your table will overflow.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-down($breakpoint) {\n      .table-responsive#{$infix} {\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"../config\" as *;\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px)\n//\n// The map defined in the `$breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl 2xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $breakpoints, $breakpoint-names: map.keys($breakpoints)) {\n  $n: list.index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoint-names}`\";\n  }\n  // Use @if/@else because list.nth would error if evaluated when $n equals list length\n  @if $n < list.length($breakpoint-names) {\n    @return list.nth($breakpoint-names, $n + 1);\n  } @else {\n    @return null;\n  }\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $breakpoints) {\n  $min: map.get($breakpoints, $name);\n  @return if(sass($min != 0): $min; else: null);\n}\n\n// Maximum breakpoint width for range media queries.\n// Returns the breakpoint value to use as an upper bound in range queries.\n//\n//    >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n//    >> breakpoint-max(xxl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    null\n@function breakpoint-max($name, $breakpoints: $breakpoints) {\n  @if $name == null {\n    @return null;\n  }\n  $max: map.get($breakpoints, $name);\n  @return if(sass($max and $max > 0): $max; else: null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $breakpoints) {\n  @return if(sass(breakpoint-min($name, $breakpoints) == null): \"\"; else: \"-#{$name}\");\n}\n\n// Iterate all breakpoints and provide the current name and infix.\n//\n//    @include loop-breakpoints-up() using ($breakpoint, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-up($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n    @content($breakpoint, $infix);\n  }\n}\n\n// Iterate all breakpoints and provide the current name, next name, and next infix.\n//\n//    @include loop-breakpoints-down() using ($breakpoint, $next, $infix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-down($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $next: breakpoint-next($breakpoint, $breakpoints);\n    $infix: breakpoint-infix($next, $breakpoints);\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Backwards-compatible alias for next/down breakpoint loops.\n@mixin loop-breakpoints($breakpoints: $breakpoints) {\n  @include loop-breakpoints-down($breakpoints) using ($breakpoint, $next, $infix) {\n    @content($breakpoint, $next, $infix);\n  }\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (width >= $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (width < $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n\n// Container queries\n//\n// Container queries allow elements to respond to the size of a containing element\n// rather than the viewport. These mixins mirror the media-breakpoint-* mixins above.\n//\n// scss-docs-start container-query-mixins\n\n// Set an element as a query container.\n//\n//    @include set-container();                    // container-type: inline-size\n//    @include set-container(size);                // container-type: size\n//    @include set-container(inline-size, sidebar); // container: sidebar / inline-size\n//\n@mixin set-container($type: inline-size, $name: null) {\n  @if $name {\n    container: #{$name} / #{$type};\n  } @else {\n    container-type: #{$type};\n  }\n}\n\n// Container query of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider within the container.\n//\n//    @include container-breakpoint-up(md) { ... }\n//    @include container-breakpoint-up(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-up($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower within the container.\n//\n//    @include container-breakpoint-down(lg) { ... }\n//    @include container-breakpoint-down(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-down($name, $container-name: null, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @if $container-name {\n      @container #{$container-name} (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints within the container.\n//\n//    @include container-breakpoint-between(md, xl) { ... }\n//    @include container-breakpoint-between(md, xl, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-between($lower, $upper, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($lower, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($upper, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Container query between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint within the container.\n//\n//    @include container-breakpoint-only(md) { ... }\n//    @include container-breakpoint-only(md, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-only($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($name, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($next, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n// scss-docs-end container-query-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/image\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/tokens\" as *;\n\n$thumbnail-tokens: () !default;\n\n// scss-docs-start thumbnail-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$thumbnail-tokens: defaults(\n  (\n    --thumbnail-padding: .25rem,\n    --thumbnail-bg: var(--bg-body),\n    --thumbnail-border-width: var(--border-width),\n    --thumbnail-border-color: var(--border-color),\n    --thumbnail-border-radius: var(--border-radius),\n    --thumbnail-box-shadow: var(--box-shadow-sm),\n  ),\n  $thumbnail-tokens\n);\n// scss-docs-end thumbnail-tokens\n\n$figure-tokens: () !default;\n\n// scss-docs-start figure-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$figure-tokens: defaults(\n  (\n    --figure-gap: calc(var(--spacer) * .5),\n    --figure-caption-font-size: var(--font-size-sm),\n    --figure-caption-color: var(--fg-3),\n  ),\n  $figure-tokens\n);\n// scss-docs-end figure-tokens\n\n@layer content {\n  // Responsive images (ensure images don't scale beyond their parents)\n  //\n  // This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.\n  // We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n  // and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n  // which weren't expecting the images within themselves to be involuntarily resized.\n  // See also https://github.com/twbs/bootstrap/issues/18178\n  .img-fluid {\n    @include img-fluid();\n  }\n\n  .img-thumbnail {\n    @include tokens($thumbnail-tokens);\n    padding: var(--thumbnail-padding);\n    background-color: var(--thumbnail-bg);\n    border: var(--thumbnail-border-width) solid var(--thumbnail-border-color);\n    @include border-radius(var(--thumbnail-border-radius));\n    @include box-shadow(var(--thumbnail-box-shadow));\n\n    // Keep them at most 100% wide\n    @include img-fluid();\n  }\n\n  .figure {\n    @include tokens($figure-tokens);\n    // Ensures the caption's text aligns with the image.\n    display: flex;\n    flex-direction: column;\n    gap: var(--figure-gap);\n  }\n\n  .figure-caption {\n    font-size: var(--figure-caption-font-size);\n    color: var(--figure-caption-color);\n  }\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n  // Part 1: Set a maximum relative to the parent\n  max-width: 100%;\n  // Part 2: Override the height to auto, otherwise images will be stretched\n  // when setting a width and height attribute on the img element.\n  height: auto;\n}\n","@use \"sass:list\";\n@use \"../config\" as *;\n\n@mixin box-shadow($shadow...) {\n  @if $enable-shadows {\n    $result: ();\n    $has-single-value: false;\n    $single-value: null;\n\n    @each $value in $shadow {\n      @if $value != null {\n        @if $value == none or $value == initial or $value == inherit or $value == unset {\n          $has-single-value: true;\n          $single-value: $value;\n        } @else {\n          $result: list.append($result, $value, \"comma\");\n        }\n      }\n    }\n\n    @if $has-single-value {\n      box-shadow: $single-value;\n    } @else if (list.length($result) > 0) {\n      box-shadow: $result;\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$prose-tokens: () !default;\n\n// scss-docs-start prose-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$prose-tokens: defaults(\n  (\n    --content-font-size: 1rem,\n    --content-gap: 20px,\n    --heading-color: light-dark(var(--gray-900), var(--white)),\n  ),\n  $prose-tokens\n);\n// scss-docs-end prose-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer content {\n  .prose {\n    @include tokens($prose-tokens);\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--content-gap);\n    max-width: 1000px;\n    margin-inline: auto;\n    font-size: var(--content-font-size);\n    line-height: 1.5;\n\n    @media (width >= 1024px) {\n      --content-font-size: var(--font-size-md);\n      --content-gap: 24px;\n    }\n\n    :where(p, ul, ol, dl, pre, table, blockquote):not(:where(.not-prose, .not-prose *)) {\n      margin-block: 0;\n    }\n\n    :where(ul, ol):not([class]):not(:where(.not-prose, .not-prose *)) li:not(:last-child) {\n      margin-bottom: calc(var(--content-gap) / 4);\n    }\n\n    :where(li ul, li ol):not(:where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) / 4);\n    }\n\n    :where(hr):not(:where(.not-prose, .not-prose *)) {\n      margin: calc(var(--content-gap) * 1.5) 0;\n      border: 0;\n      border-block-start: var(--border-width) solid var(--hr-border-color);\n    }\n\n    :where(h1, h2, h3, h4, h5, h6):not([class]):not(:where(.not-prose, .not-prose *)) {\n      margin-top: 0;\n      margin-bottom: calc(var(--content-gap) / -2);\n      font-weight: 500;\n      line-height: 1.25;\n\n      code {\n        font-weight: 600;\n        color: inherit;\n      }\n    }\n\n    :where(h1, h2):not(:first-child):not(:where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) * .75);\n    }\n\n    :where(h3, h4, h5, h6):not(:first-child):not(:where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) * .5);\n    }\n\n    :where(h1):not(:where(.not-prose, .not-prose *)) {\n      font-size: 2.25em;\n      line-height: 1.1;\n    }\n    :where(h2):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.75em;\n    }\n    :where(h3):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.5em;\n    }\n    :where(h4):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.25em;\n    }\n    :where(h5):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.125em;\n    }\n    :where(h6):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1em;\n    }\n\n    :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n      color: var(--link-color);\n      text-decoration: underline;\n      text-decoration-color: color-mix(in srgb, var(--link-color) 25%, transparent);\n      text-underline-offset: 4px;\n      @include transition(.1s text-decoration-color ease-in-out);\n\n      &:hover {\n        text-decoration-color: var(--link-hover-color);\n      }\n    }\n\n    :where(img):not(:where(.not-prose, .not-prose *)) {\n      max-width: 100%;\n    }\n\n    :where(blockquote):not(:where(.not-prose, .not-prose *)) {\n      padding-inline-start: calc(var(--content-gap) / 2);\n      margin: 0;\n      border-inline-start: 4px solid var(--border-color);\n    }\n\n    :where(table):not(:where(.not-prose, .not-prose *)) {\n      width: 100%;\n      border-spacing: 0;\n      border-collapse: collapse;\n    }\n\n    :where(table:not([class])):not(:where(.not-prose, .not-prose *)) {\n      td,\n      th {\n        padding: 6px 12px;\n        text-align: inherit;\n        border: 1px solid var(--border-color);\n      }\n    }\n\n    :where(dt):not(:where(.not-prose, .not-prose *)) {\n      font-weight: 500;\n    }\n\n    :where(video, img):not(:where(.not-prose, .not-prose *)) {\n      max-width: 100%;\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n@mixin transition($transition...) {\n  @if list.length($transition) == 0 {\n    $transition: $transition-base;\n  }\n\n  @if list.length($transition) > 1 {\n    @each $value in $transition {\n      @if $value == null or $value == none {\n        @warn \"The keyword 'none' or 'null' must be used as a single argument.\";\n      }\n    }\n  }\n\n  @if $enable-transitions {\n    @if list.nth($transition, 1) != null {\n      transition: $transition;\n    }\n\n    @if $enable-reduced-motion and list.nth($transition, 1) != null and list.nth($transition, 1) != none {\n      @media (prefers-reduced-motion: reduce) {\n        transition: none;\n      }\n    }\n  }\n}\n","@use \"../config\" as *;\n@use \"breakpoints\" as *;\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n  --gutter-x: #{$gutter};\n  --gutter-y: 0;\n  width: 100%;\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-inline: auto;\n}\n\n@layer layout {\n  @if $enable-container-classes {\n    // Single container class with breakpoint max-widths\n    .container,\n    // 100% wide container at all breakpoints\n    .container-fluid {\n      @include make-container();\n    }\n\n    // Responsive containers that are 100% wide until a breakpoint\n    @each $breakpoint, $container-max-width in $container-max-widths {\n      .container-#{$breakpoint} {\n        @extend .container-fluid;\n      }\n\n      @include media-breakpoint-up($breakpoint, $breakpoints) {\n        // Extend each breakpoint which is smaller or equal to the current breakpoint\n        $extend-breakpoint: true;\n\n        %responsive-container-#{$breakpoint} {\n          max-width: $container-max-width;\n        }\n\n        @each $name, $width in $breakpoints {\n          @if ($extend-breakpoint) {\n            .container#{breakpoint-infix($name, $breakpoints)} {\n              @extend %responsive-container-#{$breakpoint};\n            }\n\n            // Once the current breakpoint is reached, stop extending\n            @if ($breakpoint == $name) {\n              $extend-breakpoint: false;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"../config\" as *;\n@use \"../mixins/grid\" as *;\n\n// mdo-do\n// - check gap utilities as replacement for gutter classes from v5\n\n@layer layout {\n  @if $enable-grid-classes {\n    .row {\n      @include make-row();\n\n      > * {\n        @include make-col-ready();\n      }\n    }\n\n    @include make-grid-columns();\n  }\n\n  @if $enable-cssgrid {\n    .grid {\n      --columns: #{$grid-columns};\n      --rows: 1;\n      --gap: #{$grid-gutter-x};\n\n      display: grid;\n      grid-template-rows: repeat(var(--rows), 1fr);\n      grid-template-columns: repeat(var(--columns), 1fr);\n      gap: var(--gap);\n\n    }\n\n    @include make-cssgrid();\n  }\n\n  // mdo-do: add to utilities?\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n\n  .grid-fill {\n    --gap: #{$grid-gutter-x};\n\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n\n  // .g-col-auto {\n  //   grid-column: auto;\n  // }\n\n  // mdo-do: add to utilities?\n  // .grid-cols-3 {\n  //   --columns: 3;\n  // }\n  // .grid-cols-4 {\n  //   --columns: 4;\n  // }\n  // .grid-cols-6 {\n  //   --columns: 6;\n  // }\n\n  // .grid-full {\n  //   grid-column: 1 / -1;\n  // }\n}\n","@use \"sass:map\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n\n// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter-x: $grid-gutter-x, $gutter-y: $grid-gutter-y) {\n  --gutter-x: #{$gutter-x};\n  --gutter-y: #{$gutter-y};\n  display: flex;\n  flex-wrap: wrap;\n  // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n  margin-inline: calc(-.5 * var(--gutter-x));\n  margin-top: calc(-1 * var(--gutter-y));\n}\n\n@mixin make-col-ready() {\n  // Add box sizing if only the grid is loaded\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  box-sizing: if(sass(meta.variable-exists(include-column-box-sizing) and $include-column-box-sizing): border-box; else: null);\n  // Prevent columns from becoming too narrow when at smaller grid tiers by\n  // always setting `width: 100%;`. This works because we set the width\n  // later on to override this initial width.\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-top: var(--gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n  @if $size {\n    flex: 0 0 auto;\n    width: math.percentage(math.div($size, $columns));\n\n  } @else {\n    flex: 1 1 0;\n    max-width: 100%;\n  }\n}\n\n@mixin make-col-auto() {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n  $num: math.div($size, $columns);\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  margin-inline-start: if(sass($num == 0): 0; else: math.percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n  > * {\n    flex: 0 0 auto;\n    width: math.percentage(math.div(1, $count));\n  }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-x, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n      .col#{$infix} {\n        flex: 1 0 0;\n      }\n\n      .row-cols#{$infix}-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .row-cols#{$infix}-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .col#{$infix}-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .col#{$infix}-#{$i} {\n            @include make-col($i, $columns);\n          }\n        }\n\n        // `$columns - 1` because offsetting by the width of an entire row isn't possible\n        @for $i from 0 through ($columns - 1) {\n          @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .offset#{$infix}-#{$i} {\n              @include make-col-offset($i, $columns);\n            }\n          }\n        }\n      }\n\n      // Gutters\n      //\n      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n      @each $key, $value in $gutters {\n        .g#{$infix}-#{$key},\n        .gx#{$infix}-#{$key} {\n          --gutter-x: #{$value};\n        }\n\n        .g#{$infix}-#{$key},\n        .gy#{$infix}-#{$key} {\n          --gutter-y: #{$value};\n        }\n      }\n    }\n  }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .g-col#{$infix}-#{$i} {\n            grid-column: auto / span $i;\n          }\n        }\n\n        // Start with `1` because `0` is an invalid value.\n        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n        @for $i from 1 through ($columns - 1) {\n          .g-start#{$infix}-#{$i} {\n            grid-column-start: $i;\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"../functions\" as *;\n\n$form-label-tokens: () !default;\n\n// scss-docs-start form-label-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-label-tokens: defaults(\n  (\n    --label-margin-bottom: calc(var(--spacer) / 2),\n    --label-font-size: null,\n    --label-font-style: null,\n    --label-font-weight: null,\n    --label-color: null,\n  ),\n  $form-label-tokens\n);\n// scss-docs-end form-label-tokens\n\n@layer forms {\n  .form-label,\n  .col-form-label {\n    font-size: var(--label-font-size, var(--font-size-sm));\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, inherit);\n    color: var(--label-color, var(--fg-body));\n  }\n\n  .form-label {\n    margin-bottom: var(--label-margin-bottom, calc(var(--spacer) / 2));\n  }\n\n  // For use with horizontal and inline forms, when you need the label (or legend)\n  // text to align with the form controls.\n  .col-form-label {\n    --label-padding-y: calc(var(--btn-input-padding-y) + var(--border-width));\n    padding-block: var(--label-padding-y);\n    margin-bottom: 0; // Override the `<legend>` default\n  }\n\n  .col-form-label-lg {\n    --label-padding-y: calc(var(--btn-input-lg-padding-y) + var(--border-width));\n    font-size: var(--btn-input-lg-font-size);\n  }\n\n  .col-form-label-sm {\n    --label-padding-y: calc(var(--btn-input-sm-padding-y) + var(--border-width));\n    font-size: var(--btn-input-sm-font-size);\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/tokens\" as *;\n\n$form-text-tokens: () !default;\n\n// scss-docs-start form-text-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-text-tokens: defaults(\n  (\n    --form-text-margin-top: .25rem,\n    --form-text-font-size: var(--font-size-sm),\n    --form-text-font-style: null,\n    --form-text-font-weight: null,\n    --form-text-color: var(--fg-3),\n  ),\n  $form-text-tokens\n);\n// scss-docs-end form-text-tokens\n\n@layer forms {\n  .form-text {\n    @include tokens($form-text-tokens);\n\n    margin-top: var(--form-text-margin-top);\n    font-size: var(--form-text-font-size);\n    font-style: var(--form-text-font-style);\n    font-weight: var(--form-text-font-weight);\n    color: var(--form-text-color);\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/gradients\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$form-control-tokens: () !default;\n\n// scss-docs-start form-control-tokens\n// stylelint-disable custom-property-no-missing-var-function\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-control-tokens: defaults(\n  (\n    --control-min-height: var(--btn-input-min-height),\n    --control-padding-y: var(--btn-input-padding-y),\n    --control-padding-x: var(--btn-input-padding-x),\n    --control-font-size: var(--btn-input-font-size),\n    --control-line-height: var(--btn-input-line-height),\n    --control-fg: var(--btn-input-fg),\n    --control-bg: var(--btn-input-bg),\n    --control-border-width: var(--border-width),\n    --control-border-color: var(--border-color),\n    --control-border-radius: var(--border-radius),\n    --control-box-shadow: var(--box-shadow-inset),\n    --control-action-bg: var(--bg-1),\n    --control-action-hover-bg: var(--bg-2),\n    --control-transition-property: \"border-color, box-shadow\",\n    --control-transition-timing: .15s ease-in-out,\n    --control-transition: var(--control-transition-property) var(--control-transition-timing),\n    --control-placeholder-color: var(--fg-3),\n    --control-disabled-color: var(--control-fg),\n    --control-disabled-bg: var(--bg-2),\n    --control-disabled-border-color: var(--control-border-color),\n    --control-select-bg: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#00000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>\"))},\n    --control-select-bg-position: right .75rem center,\n    --control-select-bg-size: 16px 12px,\n    --control-select-bg-dark: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>\"))},\n  ),\n  $form-control-tokens\n);\n// scss-docs-end form-control-tokens\n\n// scss-docs-start form-control-sizes\n$form-control-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-control-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $form-control-sizes\n);\n// scss-docs-end form-control-sizes\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .form-control {\n    @include tokens($form-control-tokens);\n\n    display: flex;\n    width: 100%;\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    font-size: var(--control-font-size);\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    appearance: none;\n    background-color: var(--control-bg);\n    background-clip: padding-box;\n    border: var(--control-border-width) solid var(--control-border-color);\n    @include border-radius(var(--control-border-radius), 0);\n    @include box-shadow(var(--control-box-shadow));\n    @include transition(var(--control-transition));\n\n    // Customize the `:focus` state to imitate native WebKit styles.\n    &:focus-visible {\n      --focus-ring-offset: -1px;\n      @include focus-ring(true);\n    }\n\n    // Placeholder\n    &::placeholder {\n      color: var(--control-placeholder-color);\n      // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.\n      opacity: 1;\n    }\n\n    // Disabled inputs\n    //\n    // HTML5 says that controls under a fieldset > legend:first-child won't be\n    // disabled if the fieldset is disabled. Due to implementation difficulty, we\n    // don't honor that edge case; we style them as disabled anyway.\n    &:disabled {\n      color: var(--control-disabled-color);\n      background-color: var(--control-disabled-bg);\n      border-color: var(--control-disabled-border-color);\n      // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.\n      opacity: 1;\n    }\n\n    // Date and time inputs\n    // &::-webkit-date-and-time-value {\n    //   // On Android Chrome, form-control's \"width: 100%\" makes the input width too small\n    //   // Tested under Android 11 / Chrome 89, Android 12 / Chrome 100, Android 13 / Chrome 109\n    //   //\n    //   // On iOS Safari, form-control's \"appearance: none\" + \"width: 100%\" makes the input width too small\n    //   // Tested under iOS 16.2 / Safari 16.2\n    //   min-width: 85px; // Seems to be a good minimum safe width\n\n    //   // Add some height to date inputs on iOS\n    //   // https://github.com/twbs/bootstrap/issues/23307\n    //   // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved\n    //   // Multiply line-height by 1em if it has no unit\n    //   height: 1.5em;\n\n    //   // Android Chrome type=\"date\" is taller than the other inputs\n    //   // because of \"margin: 1px 24px 1px 4px\" inside the shadow DOM\n    //   // Tested under Android 11 / Chrome 89, Android 12 / Chrome 100, Android 13 / Chrome 109\n    //   margin: 0;\n    //   background-color: var(--red-500);\n    // }\n\n    // Prevent excessive date input height in Webkit\n    // https://github.com/twbs/bootstrap/issues/34433\n\n    // mdo-do: need to check this stuff out across browsers\n    &::-webkit-datetime-edit {\n      display: block;\n      height: 1.5rem;\n      padding: 0;\n      margin-bottom: -.125rem;\n    }\n    &::-webkit-datetime-edit-fields-wrapper {\n      height: 1.5rem;\n    }\n\n    // File inputs\n    &[type=\"file\"] {\n      overflow: hidden; // prevent pseudo element button overlap\n\n      &:not(:disabled):not([readonly]) {\n        cursor: pointer;\n      }\n    }\n    &::file-selector-button {\n      min-height: var(--control-min-height);\n      padding: var(--control-padding-y) var(--control-padding-x);\n      margin: calc(var(--control-padding-y) * -1) calc(var(--control-padding-x) * -1);\n      margin-inline-end: var(--control-padding-x);\n      color: var(--control-fg);\n      @include gradient-bg(var(--control-action-bg));\n      pointer-events: none;\n      border-color: inherit;\n      border-style: solid;\n      border-width: 0;\n      border-inline-end-width: var(--control-border-width);\n      border-radius: 0; // stylelint-disable-line property-disallowed-list\n      @include transition(var(--control-transition));\n    }\n\n    &:hover:not(:disabled):not([readonly])::file-selector-button {\n      background-color: var(--control-action-hover-bg);\n    }\n  }\n\n  // Readonly controls as plain text\n  //\n  // Apply class to a readonly input to make it appear like regular plain\n  // text (without any border, background color, focus indicator)\n\n  .form-control-plaintext {\n    display: block;\n    width: 100%;\n    padding: var(--control-padding-y) 0;\n    margin-bottom: 0; // match inputs if this class comes on inputs with default margins\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    background-color: transparent;\n    border: solid transparent;\n    border-width: var(--control-border-width) 0;\n\n    &:focus {\n      outline: 0;\n    }\n\n    &.form-control-sm,\n    &.form-control-lg {\n      padding-inline: 0;\n    }\n  }\n\n  // stylelint-disable selector-no-qualifying-type\n  select.form-control {\n    padding-inline-end: calc(var(--control-padding-x) * 3);\n    background-image: var(--control-select-bg);\n    background-repeat: no-repeat;\n    background-position: var(--control-select-bg-position);\n    background-size: var(--control-select-bg-size);\n\n    &[multiple],\n    &[size]:not([size=\"1\"]) {\n      padding-inline-end: var(--control-padding-x);\n      background-image: none;\n    }\n  }\n\n  @media (prefers-color-scheme: dark) {\n    select.form-control {\n      background-image: var(--control-select-bg-dark);\n    }\n  }\n  // stylelint-enable selector-no-qualifying-type\n\n  // Form control sizing\n  //\n  // Build on `.form-control` with modifier classes to decrease or increase the\n  // height and font-size of form controls.\n  //\n  // Repeated in `_input_group.scss` to avoid Sass extend issues.\n  @each $size, $_ in $form-control-sizes {\n    .form-control-#{$size} {\n      --control-min-height: var(--btn-input-#{$size}-min-height);\n      --control-padding-y: var(--btn-input-#{$size}-padding-y);\n      --control-padding-x: var(--btn-input-#{$size}-padding-x);\n      --control-font-size: var(--btn-input-#{$size}-font-size);\n      --control-line-height: var(--btn-input-#{$size}-line-height);\n      --control-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n\n  .form-control-color {\n    width: var(--control-min-height);\n    padding: var(--control-padding-y);\n\n    &:not(:disabled):not([readonly]) {\n      cursor: pointer;\n    }\n\n    &::-moz-color-swatch {\n      border: 0 !important; // stylelint-disable-line declaration-no-important\n      @include border-radius(var(--border-radius-sm));\n    }\n\n    &::-webkit-color-swatch {\n      border: 0 !important; // stylelint-disable-line declaration-no-important\n      @include border-radius(var(--border-radius-sm));\n    }\n  }\n\n  // Ghost input - removes all visual styling\n  // Used inside custom wrappers that handle their own styling\n  .form-ghost {\n    display: block;\n    width: 100%;\n    padding: 0;\n    font: inherit;\n    color: inherit;\n    appearance: none;\n    background: transparent;\n    border: 0;\n\n    &:focus {\n      outline: 0;\n    }\n\n    &::placeholder {\n      color: var(--fg-3);\n      opacity: 1;\n    }\n\n    &:disabled {\n      color: var(--fg-4);\n      cursor: not-allowed;\n    }\n  }\n}\n","@mixin focus-ring($offset: false, $color: null) {\n  @if $color != null {\n    outline: var(--focus-ring-width) solid #{$color};\n  } @else {\n    outline: var(--focus-ring);\n  }\n  @if $offset {\n    outline-offset: var(--focus-ring-offset);\n  }\n}\n","@use \"../colors\" as *;\n@use \"../config\" as *;\n\n// Gradients\n\n// scss-docs-start gradient-bg-mixin\n@mixin gradient-bg($color: null) {\n  background-color: $color;\n\n  @if $enable-gradients {\n    background-image: var(--gradient);\n  }\n}\n// scss-docs-end gradient-bg-mixin\n\n// scss-docs-start gradient-mixins\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: var(--gray-700), $end-color: var(--gray-800), $start-percent: 0%, $end-percent: 100%) {\n  background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: var(--gray-700), $end-color: var(--gray-800), $start-percent: null, $end-percent: null) {\n  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n}\n\n@mixin gradient-directional($start-color: var(--gray-700), $end-color: var(--gray-800), $deg: 45deg) {\n  background-image: linear-gradient($deg, $start-color, $end-color);\n}\n\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-radial($inner-color: var(--gray-700), $outer-color: var(--gray-800)) {\n  background-image: radial-gradient(circle, $inner-color, $outer-color);\n}\n\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\n  background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n// scss-docs-end gradient-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$check-tokens: () !default;\n\n// scss-docs-start check-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$check-tokens: defaults(\n  (\n    --check-size: 1.25rem,\n    --check-margin-block: .125rem,\n    --check-bg: transparent,\n    --check-border-color: var(--border-color),\n    --check-border-radius: .375rem,\n    --check-checked-bg: var(--control-checked-bg),\n    --check-checked-border-color: var(--control-checked-border-color),\n    --check-indeterminate-bg: var(--control-checked-bg),\n    --check-indeterminate-border-color: var(--control-checked-border-color),\n    --check-active-bg: var(--control-active-bg),\n    --check-active-border-color: var(--control-active-border-color),\n    --check-disabled-bg: var(--control-disabled-bg),\n    --check-disabled-opacity: var(--control-disabled-opacity),\n  ),\n  $check-tokens\n);\n// scss-docs-end check-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .checkgroup {\n    display: flex;\n    gap: var(--gap, .5rem);\n    align-items: var(--align-items, start);\n\n    .description {\n      color: var(--fg-3);\n    }\n  }\n\n  .check {\n    @include tokens($check-tokens);\n\n    display: grid;\n    grid-template-columns: repeat(1, minmax(0, 1fr));\n    margin-block: var(--check-margin-block);\n\n    :where(svg, input) {\n      flex-shrink: 0;\n      grid-row-start: 1;\n      grid-column-start: 1;\n      width: var(--check-size);\n      height: var(--check-size);\n    }\n\n    :where(input) {\n      appearance: none;\n      // later: maybe set a tertiary bg color?\n      background-color: var(--theme-bg, var(--check-bg));\n      border: 1px solid var(--theme-bg, var(--check-border-color));\n      // stylelint-disable-next-line property-disallowed-list\n      border-radius: .3em;\n    }\n\n    :where(input:checked, input:indeterminate) {\n      background-color: var(--theme-bg, var(--check-checked-bg));\n      border-color: var(--theme-bg, var(--check-checked-border-color));\n    }\n\n    :where(input:focus-visible) {\n      @include focus-ring(true);\n    }\n\n    &:has(input:checked) .checked,\n    &:has(input:indeterminate) .indeterminate {\n      display: block;\n      color: var(--theme-contrast, var(--primary-contrast));\n      stroke: currentcolor;\n    }\n\n    &:has(input:disabled) {\n      --check-bg: var(--check-disabled-bg);\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n    &:has(input:disabled:checked) {\n      opacity: var(--check-disabled-opacity);\n    }\n\n    :where(svg) {\n      pointer-events: none;\n    }\n\n    :where(svg path) {\n      display: none;\n    }\n  }\n\n  .check-sm {\n    --check-size: 1rem;\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: 0;\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$radio-tokens: () !default;\n\n// scss-docs-start radio-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$radio-tokens: defaults(\n  (\n    --radio-size: 1.25rem,\n    --radio-margin-block: .125rem,\n    --radio-bg: transparent,\n    --radio-border-color: var(--border-color),\n    --radio-checked-bg: var(--control-checked-bg),\n    --radio-checked-border-color: var(--control-checked-border-color),\n    --radio-disabled-bg: var(--control-disabled-bg),\n    --radio-disabled-opacity: var(--control-disabled-opacity),\n  ),\n  $radio-tokens\n);\n// scss-docs-end radio-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .radiogroup {\n    display: flex;\n    gap: var(--gap, .5rem);\n    align-items: var(--align-items, start);\n\n    .description {\n      color: var(--fg-3);\n    }\n  }\n\n  .radio {\n    @include tokens($radio-tokens);\n\n    position: relative;\n    flex-shrink: 0;\n    width: var(--radio-size);\n    height: var(--radio-size);\n    margin-block: var(--radio-margin-block);\n    appearance: none;\n    background-color: var(--theme-bg, var(--radio-bg));\n    border: 1px solid var(--theme-bg, var(--radio-border-color));\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 50%;\n\n    &:checked {\n      color: var(--theme-contrast, var(--primary-contrast));\n      background-color: var(--theme-bg, var(--radio-checked-bg));\n      border-color: var(--theme-bg, var(--radio-checked-border-color));\n\n      &::before {\n        position: absolute;\n        inset: .25rem;\n        content: \"\";\n        background-color: currentcolor;\n        // stylelint-disable-next-line property-disallowed-list\n        border-radius: 50%;\n      }\n    }\n\n    &:disabled {\n      --radio-bg: var(--radio-disabled-bg);\n\n      ~ label {\n        color: var(--secondary-text);\n        cursor: default;\n      }\n    }\n\n    &:focus-visible {\n      @include focus-ring(true);\n    }\n  }\n\n  .radio-sm {\n    --radio-size: 1rem;\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: 0;\n  }\n}\n","@use \"../colors\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$switch-tokens: () !default;\n\n// scss-docs-start switch-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$switch-tokens: defaults(\n  (\n    --switch-height: 1.25rem,\n    --switch-width: calc(var(--switch-height) * 1.5),\n    --switch-padding: .0625rem,\n    --switch-margin-block: .125rem,\n    --switch-bg: var(--bg-3),\n    --switch-border-width: var(--border-width),\n    --switch-border-color: var(--border-color),\n    --switch-indicator-bg: var(--white),\n    --switch-checked-bg: var(--control-checked-bg),\n    --switch-checked-border-color: var(--switch-checked-bg),\n    --switch-checked-indicator-bg: var(--white),\n    --switch-disabled-bg: var(--control-disabled-bg),\n    --switch-disabled-indicator-bg: var(--fg-3),\n  ),\n  $switch-tokens\n);\n// scss-docs-end switch-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .switch {\n    @include tokens($switch-tokens);\n\n    position: relative;\n    display: flex;\n    flex-shrink: 0;\n    align-items: stretch;\n    justify-content: flex-start;\n    width: var(--switch-width);\n    height: var(--switch-height);\n    padding: var(--switch-padding);\n    margin-block: var(--switch-margin-block);\n    background-color: var(--switch-bg);\n    border: var(--switch-border-width) solid var(--switch-border-color);\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 10rem;\n    box-shadow: inset 0 1px 2px rgba($black, .05);\n    // stylelint-disable-next-line property-disallowed-list\n    transition: .15s ease-in-out;\n    transition-property: padding-inline-start, background-color;\n\n    &::before {\n      flex-shrink: 0;\n      width: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2);\n      height: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2);\n      content: \"\";\n      background-color: var(--theme-contrast, var(--switch-indicator-bg));\n      // stylelint-disable-next-line property-disallowed-list\n      border-radius: 50%;\n      box-shadow: 0 1px 2px rgba($black, .1);\n    }\n\n    input {\n      position: absolute;\n      inset: 0;\n      appearance: none;\n      background-color: transparent;\n      outline: 0;\n    }\n\n    &:focus-within {\n      @include focus-ring(true);\n    }\n\n    &:has(input:checked) {\n      padding-inline-start: calc(var(--switch-height) / 2 + var(--switch-padding));\n      background-color: var(--theme-bg, var(--switch-checked-bg));\n      border-color: var(--theme-bg, var(--switch-checked-border-color));\n    }\n\n    &:has(input:disabled) {\n      --switch-bg: var(--switch-disabled-bg);\n      --switch-indicator-bg: var(--switch-disabled-indicator-bg);\n\n      &::before { opacity: .4; }\n\n      ~ label {\n        color: var(--secondary-text);\n        cursor: default;\n      }\n    }\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: 0;\n  }\n}\n","@use \"../colors\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/transition\" as *;\n@use \"../mixins/gradients\" as *;\n@use \"../mixins/tokens\" as *;\n\n$range-tokens: () !default;\n\n// scss-docs-start range-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$range-tokens: defaults(\n  (\n    --range-track-width: 100%,\n    --range-track-height: .5rem,\n    --range-track-cursor: pointer,\n    --range-track-bg: var(--bg-3),\n    --range-track-border-radius: 1rem,\n    --range-track-box-shadow: var(--box-shadow-inset),\n    --range-thumb-width: 1rem,\n    --range-thumb-height: var(--range-thumb-width),\n    --range-thumb-bg: var(--primary-base),\n    --range-thumb-border: 0,\n    --range-thumb-border-radius: 1rem,\n    --range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1),\n    --range-thumb-active-bg: color-mix(in oklch, var(--primary-base) 70%, var(--bg-body)),\n    --range-thumb-disabled-bg: var(--fg-3),\n    --range-thumb-transition-property: \"background-color, border-color, box-shadow\",\n    --range-thumb-transition-timing: .15s ease-in-out,\n    --range-thumb-transition: var(--range-thumb-transition-property) var(--range-thumb-transition-timing),\n  ),\n  $range-tokens\n);\n// scss-docs-end range-tokens\n\n// scss-docs-start range-mixins\n@mixin range-thumb() {\n  width: var(--range-thumb-width);\n  height: var(--range-thumb-height);\n  appearance: none;\n  @include gradient-bg(var(--range-thumb-bg));\n  border: var(--range-thumb-border);\n  @include border-radius(var(--range-thumb-border-radius));\n  @include box-shadow(var(--range-thumb-box-shadow));\n  @include transition(var(--range-thumb-transition));\n\n  &:active {\n    @include gradient-bg(var(--range-thumb-active-bg));\n  }\n}\n\n@mixin range-track() {\n  width: var(--range-track-width);\n  height: var(--range-track-height);\n  color: transparent; // Why?\n  cursor: var(--range-track-cursor);\n  background-color: var(--range-track-bg);\n  border-color: transparent; // Firefox specific?\n  @include border-radius(var(--range-track-border-radius));\n  @include box-shadow(var(--range-track-box-shadow));\n}\n// scss-docs-end range-mixins\n\n@layer forms {\n  .form-range {\n    @include tokens($range-tokens);\n\n    width: 100%;\n    height: calc(var(--range-thumb-height) + (var(--focus-ring-width) * 2));\n    padding: 0; // Need to reset padding\n    appearance: none;\n    background-color: transparent;\n\n    &:focus {\n      outline: 0;\n\n      // Pseudo-elements must be split across multiple rulesets to have an effect.\n      &::-webkit-slider-thumb {\n        @include focus-ring(true);\n        --focus-ring-offset: 1px;\n      }\n      &::-moz-range-thumb     {\n        @include focus-ring(true);\n        --focus-ring-offset: 1px;\n      }\n    }\n\n    &::-moz-focus-outer {\n      border: 0;\n    }\n\n    &::-webkit-slider-thumb {\n      @include range-thumb();\n      margin-top: calc((var(--range-track-height) - var(--range-thumb-height)) * .5); // Webkit specific\n    }\n\n    &::-moz-range-thumb {\n      @include range-thumb();\n    }\n\n    &::-webkit-slider-runnable-track {\n      @include range-track();\n    }\n\n    &::-moz-range-track {\n      @include range-track();\n    }\n\n    &:disabled {\n      pointer-events: none;\n\n      &::-webkit-slider-thumb {\n        background-color: var(--range-thumb-disabled-bg);\n      }\n\n      &::-moz-range-thumb {\n        background-color: var(--range-thumb-disabled-bg);\n      }\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$form-floating-tokens: () !default;\n\n// scss-docs-start form-floating-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-floating-tokens: defaults(\n  (\n    --form-floating-height: calc(3.5rem + (var(--border-width) * 2)),\n    --form-floating-line-height: 1.25,\n    --form-floating-padding-x: var(--btn-input-padding-x),\n    --form-floating-padding-y: 1rem,\n    --form-floating-input-padding-t: 1.625rem,\n    --form-floating-input-padding-b: .625rem,\n    --form-floating-label-height: 1.5em,\n    --form-floating-label-opacity: .65,\n    --form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem),\n    --form-floating-label-disabled-color: var(--fg-3),\n    --form-floating-transition-property: \"opacity, transform\",\n    --form-floating-transition-timing: .1s ease-in-out,\n    --form-floating-transition: var(--form-floating-transition-property) var(--form-floating-transition-timing),\n  ),\n  $form-floating-tokens\n);\n// scss-docs-end form-floating-tokens\n\n@layer forms {\n  .form-floating {\n    @include tokens($form-floating-tokens);\n\n    position: relative;\n\n    > label {\n      position: absolute;\n      inset-block-start: 0;\n      inset-inline-start: 0;\n      z-index: 2;\n      display: flex;\n      align-items: center;\n      max-width: 100%;\n      height: 100%; // allow textareas\n      padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n      overflow: hidden;\n      color: color-mix(in oklch, var(--fg-body) var(--form-floating-label-opacity), transparent);\n      text-align: start;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n      pointer-events: none;\n      border: var(--input-btn-border-width) solid transparent; // Required for aligning label's text with the input as it affects inner box model\n      transform-origin: 0 0;\n      @include transition(var(--form-floating-transition));\n    }\n\n    > .form-control,\n    > .form-control-plaintext {\n      height: var(--form-floating-height);\n      min-height: var(--form-floating-height);\n      padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n      line-height: var(--form-floating-line-height);\n\n      &::placeholder {\n        color: transparent;\n      }\n\n      &:focus,\n      &:not(:placeholder-shown) {\n        padding-top: var(--form-floating-input-padding-t);\n        padding-bottom: var(--form-floating-input-padding-b);\n      }\n      // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n      &:-webkit-autofill {\n        padding-top: var(--form-floating-input-padding-t);\n        padding-bottom: var(--form-floating-input-padding-b);\n      }\n    }\n\n    > .form-control:focus,\n    > .form-control:not(:placeholder-shown),\n    > .form-control-plaintext {\n      ~ label {\n        transform: var(--form-floating-label-transform);\n      }\n    }\n\n    // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n    > .form-control:-webkit-autofill {\n      ~ label {\n        transform: var(--form-floating-label-transform);\n      }\n    }\n    > textarea:focus,\n    > textarea:not(:placeholder-shown) {\n      ~ label::after {\n        position: absolute;\n        inset: var(--form-floating-padding-y) calc(var(--form-floating-padding-x) * .5);\n        z-index: -1;\n        height: var(--form-floating-label-height);\n        content: \"\";\n        background-color: var(--control-bg);\n        @include border-radius(var(--btn-input-border-radius));\n      }\n    }\n    > textarea:disabled ~ label::after {\n      background-color: var(--control-disabled-bg);\n    }\n\n    > .form-control-plaintext {\n      ~ label {\n        border-width: var(--control-border-width) 0; // Required to properly position label text - as explained above\n      }\n    }\n\n    > :disabled ~ label,\n    > .form-control:disabled ~ label { // Required for `.form-control`s because of specificity\n      color: var(--form-floating-label-disabled-color);\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"sass:string\";\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"form-variables\" as *;\n\n$input-group-addon-tokens: () !default;\n\n// scss-docs-start input-group-addon-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$input-group-addon-tokens: defaults(\n  (\n    --input-group-addon-padding-y: var(--btn-input-padding-y),\n    --input-group-addon-padding-x: var(--btn-input-padding-x),\n    --input-group-addon-font-size: var(--btn-input-font-size),\n    --input-group-addon-line-height: var(--btn-input-line-height),\n    --input-group-addon-color: var(--fg-body),\n    --input-group-addon-bg: var(--bg-2),\n    --input-group-addon-border-color: var(--border-color),\n  ),\n  $input-group-addon-tokens\n);\n// scss-docs-end input-group-addon-tokens\n\n// scss-docs-start input-group-sizes\n$input-group-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$input-group-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $input-group-sizes\n);\n// scss-docs-end input-group-sizes\n\n@layer components {\n  .input-group {\n    @include tokens($input-group-addon-tokens);\n\n    position: relative;\n    display: flex;\n    flex-wrap: wrap; // For form validation feedback\n    align-items: stretch;\n    width: 100%;\n\n    > .form-control,\n    > .form-floating {\n      position: relative; // For focus state's z-index\n      flex: 1 1 auto;\n      width: 1%;\n      min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size\n    }\n\n    // Bring the \"active\" form control to the top of surrounding elements\n    > .form-control:focus,\n    > .form-floating:focus-within {\n      z-index: 5;\n    }\n\n    // Ensure buttons are always above inputs for more visually pleasing borders.\n    // This isn't needed for `.input-group-text` since it shares the same border-color\n    // as our inputs.\n    > .input-group-btn {\n      position: relative;\n      z-index: 2;\n\n      &:focus {\n        z-index: 5;\n      }\n    }\n  }\n\n  // Textual addons\n  //\n  // Serves as a catch-all element for any text or radio/checkbox input you wish\n  // to prepend or append to an input.\n\n  .input-group-text {\n    display: flex;\n    align-items: center;\n    padding: var(--input-group-addon-padding-y) var(--input-group-addon-padding-x);\n    font-size: var(--input-group-addon-font-size); // Match inputs\n    // font-weight: $input-group-addon-font-weight;\n    line-height: var(--input-group-addon-line-height);\n    color: var(--input-group-addon-color);\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--input-group-addon-bg);\n    border: var(--border-width) solid var(--input-group-addon-border-color);\n    @include border-radius(var(--btn-input-border-radius));\n  }\n\n  // Sizing\n  //\n  // Remix the default form control sizing classes into new ones for easier\n  // manipulation.\n\n  @each $size, $_ in $input-group-sizes {\n    .input-group-#{$size} {\n      > .form-control,\n      > .input-group-text,\n      > .btn {\n        min-height: var(--btn-input-#{$size}-min-height);\n        padding: var(--btn-input-#{$size}-padding-y) var(--btn-input-#{$size}-padding-x);\n        font-size: var(--btn-input-#{$size}-font-size);\n        @include border-radius(var(--btn-input-#{$size}-border-radius));\n      }\n    }\n  }\n\n  // Rounded corners\n  //\n  // These rulesets must come after the sizing ones to properly override sm and lg\n  // border-radius values when extending. They're more specific than we'd like\n  // with the `.input-group >` part, but without it, we cannot override the sizing.\n\n  // stylelint-disable-next-line no-duplicate-selectors\n  .input-group {\n\n    $validation-messages: \"\";\n    &:not(.has-validation) {\n      > :not(:last-child):not(.menu-toggle-split):not(.menu):not(.form-floating),\n      > .menu-toggle-split:nth-last-child(n + 3),\n      > .form-floating:not(:last-child) > .form-control,\n      > .form-floating:not(:last-child) > .form-select {\n        @include border-end-radius(0);\n      }\n    }\n\n    &.has-validation {\n      > :nth-last-child(n + 3):not(.menu-toggle-split):not(.menu):not(.form-floating),\n      > .menu-toggle-split:nth-last-child(n + 4),\n      > .form-floating:nth-last-child(n + 3) > .form-control,\n      > .form-floating:nth-last-child(n + 3) > .form-select {\n        @include border-end-radius(0);\n      }\n    }\n\n    > :not(:first-child):not(.menu)#{$validation-messages} {\n      margin-inline-start: calc(-1 * var(--border-width));\n      @include border-start-radius(0);\n    }\n\n    > .form-floating:not(:first-child) > .form-control,\n    > .form-floating:not(:first-child) > .form-select {\n      @include border-start-radius(0);\n    }\n    @each $state in map.keys($form-validation-states) {\n      $validation-messages: $validation-messages + \":not(.\" + string.unquote($state) + \"-tooltip)\" + \":not(.\" + string.unquote($state) + \"-feedback)\";\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$strength-tokens: () !default;\n\n// scss-docs-start strength-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$strength-tokens: defaults(\n  (\n    --strength-height: .375rem,\n    --strength-gap: .25rem,\n    --strength-margin-top: .25rem,\n    --strength-border-radius: var(--border-radius-pill),\n    --strength-bg: var(--bg-2),\n    --strength-color: var(--bg-2),\n    --strength-weak-color: var(--danger-bg),\n    --strength-fair-color: var(--warning-bg),\n    --strength-good-color: var(--info-bg),\n    --strength-strong-color: var(--success-bg),\n  ),\n  $strength-tokens\n);\n// scss-docs-end strength-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start strength-levels\n$strength-levels: weak, fair, good, strong !default;\n// scss-docs-end strength-levels\n\n$strength-transition: background-color .2s ease-in-out, width .3s ease-in-out !default;\n\n@layer forms {\n  // Strength meter container\n  .strength {\n    @include tokens($strength-tokens);\n\n    display: flex;\n    gap: var(--strength-gap);\n    width: 100%;\n    margin-top: var(--strength-margin-top);\n  }\n\n  // Individual strength segments\n  .strength-segment {\n    flex: 1;\n    height: var(--strength-height);\n    background-color: var(--strength-bg);\n    @include border-radius(var(--strength-border-radius));\n    @include transition($strength-transition);\n\n    // Filled state\n    &.active {\n      background-color: var(--strength-color);\n    }\n  }\n\n  @each $level in $strength-levels {\n    .strength[data-bs-strength=\"#{$level}\"] {\n      --strength-color: var(--strength-#{$level}-color);\n    }\n  }\n  // Optional text feedback\n  .strength-text {\n    display: block;\n    margin-top: var(--strength-margin-top);\n    font-size: var(--font-size-xs);\n    color: var(--strength-color, var(--fg-3));\n    @include transition(color .2s ease-in-out);\n\n    // Hide when empty\n    &:empty {\n      display: none;\n    }\n  }\n\n  // Alternative: Single bar variant (like a progress bar)\n  .strength-bar {\n    @include tokens($strength-tokens);\n\n    --strength-color: transparent;\n    --strength-width: 0%;\n\n    width: 100%;\n    height: var(--strength-height);\n    margin-top: var(--strength-margin-top);\n    overflow: hidden;\n    background-color: var(--strength-bg);\n    @include border-radius(var(--strength-border-radius));\n\n    &::after {\n      display: block;\n      width: var(--strength-width);\n      height: 100%;\n      content: \"\";\n      background-color: var(--strength-color);\n      @include border-radius(var(--strength-border-radius));\n      @include transition($strength-transition);\n    }\n\n    @each $level in $strength-levels {\n      &[data-bs-strength=\"#{$level}\"] {\n        --strength-color: var(--strength-#{$level}-color);\n        --strength-width: #{list.index($strength-levels, $level) * 25%};\n      }\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$otp-tokens: () !default;\n\n// scss-docs-start otp-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$otp-tokens: defaults(\n  (\n    --otp-size: var(--btn-input-lg-min-height),\n    --otp-font-size: var(--btn-input-font-size),\n    --otp-gap: .5rem,\n  ),\n  $otp-tokens\n);\n// scss-docs-end otp-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start otp-sizes\n$otp-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$otp-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $otp-sizes\n);\n// scss-docs-end otp-sizes\n\n@layer components {\n  .otp {\n    @include tokens($otp-tokens);\n\n    display: inline-flex;\n    gap: var(--otp-gap);\n\n    .form-control {\n      width: var(--otp-size);\n      min-height: var(--otp-size);\n      padding: 0;\n      font-size: var(--otp-font-size);\n      font-weight: 500;\n      line-height: 1;\n      text-align: center;\n      @include border-radius(var(--otp-border-radius, var(--btn-input-border-radius)));\n\n      // Remove default number spinners\n      &::-webkit-outer-spin-button,\n      &::-webkit-inner-spin-button {\n        margin: 0;\n        appearance: none;\n      }\n\n      &[type=\"number\"] {\n        appearance: textfield;\n      }\n\n      &:focus,\n      &:focus-visible {\n        z-index: 1;\n      }\n    }\n\n    &.is-valid .form-control,\n    .was-validated &:valid .form-control {\n      border-color: var(--form-valid-border-color);\n\n      &:focus {\n        --focus-ring-color: rgba(var(--success-rgb), .25);\n        border-color: var(--form-valid-border-color);\n      }\n    }\n\n    &.is-invalid .form-control,\n    .was-validated &:invalid .form-control {\n      border-color: var(--form-invalid-border-color);\n\n      &:focus {\n        --focus-ring-color: rgba(var(--danger-rgb), .25);\n        border-color: var(--form-invalid-border-color);\n      }\n    }\n  }\n\n  // When used with .input-group, disable the gap and prevent inputs from stretching\n  .otp.input-group {\n    gap: 0;\n    width: auto; // Override input-group's width: 100%\n\n    .form-control {\n      flex: 0 0 auto; // Don't grow or shrink, use fixed width\n    }\n  }\n\n  .otp-separator {\n    display: flex;\n    align-items: center;\n    padding-inline: var(--otp-gap);\n    font-size: var(--otp-font-size);\n    color: var(--fg-4);\n    user-select: none;\n  }\n\n  @each $size, $_ in $otp-sizes {\n    .otp-#{$size} {\n      --otp-size: var(--btn-input-#{$size}-min-height);\n      --otp-font-size: var(--btn-input-#{$size}-font-size);\n      --otp-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n$form-adorn-tokens: () !default;\n\n// scss-docs-start form-adorn-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-adorn-tokens: defaults(\n  (\n    --form-adorn-gap: .375rem,\n    --form-adorn-icon-size: 1rem,\n    --form-adorn-icon-color: var(--fg-2),\n  ),\n  $form-adorn-tokens\n);\n// scss-docs-end form-adorn-tokens\n\n@layer forms {\n  .form-adorn {\n    @include tokens($form-adorn-tokens);\n\n    gap: var(--form-adorn-gap);\n    align-items: center;\n\n    // Prevent default `.form-control` focus\n    &:focus-visible {\n      outline: 0;\n    }\n\n    &:focus-within {\n      --focus-ring-offset: -1px;\n      border-color: var(--focus-ring-color);\n      @include focus-ring(true);\n    }\n\n    // Ghost input fills remaining space\n    > .form-ghost {\n      flex: 1;\n      min-width: 0; // Prevent text overflow\n    }\n\n    &.form-adorn-end > .form-ghost {\n      order: -1;\n    }\n  }\n\n  .form-adorn-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n\n    > svg {\n      width: var(--form-adorn-icon-size);\n      height: var(--form-adorn-icon-size);\n    }\n  }\n\n  .form-adorn-text {\n    flex-shrink: 0;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n    user-select: none;\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n$chip-input-tokens: () !default;\n\n// scss-docs-start chip-input-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$chip-input-tokens: defaults(\n  (\n    --chip-input-padding-y: .75rem,\n    --chip-input-padding-x: .75rem,\n    --chip-input-gap: .375rem,\n    --chip-input-ghost-min-width: 5rem,\n    --control-fg: var(--btn-input-fg),\n    --control-bg: var(--btn-input-bg),\n    --control-border-width: var(--border-width),\n    --control-border-color: var(--border-color),\n    --control-border-radius: var(--border-radius),\n  ),\n  $chip-input-tokens\n);\n// scss-docs-end chip-input-tokens\n\n@layer forms {\n  .chip-input {\n    @include tokens($chip-input-tokens);\n\n    // Flexbox wrapping layout\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--chip-input-gap);\n    align-items: center;\n    padding: var(--chip-input-padding-y) var(--chip-input-padding-x);\n\n    color: var(--control-fg);\n    background-color: var(--control-bg);\n    border: var(--control-border-width) solid var(--control-border-color);\n    @include border-radius(var(--control-border-radius), 0);\n\n    // Focus state when ghost input is focused\n    &:focus-within {\n      --focus-ring-offset: -1px;\n      border-color: var(--focus-ring-color);\n      @include focus-ring(true);\n    }\n\n    // Ghost input fills remaining space\n    > .form-ghost {\n      flex: 1 1 0;\n      min-width: var(--chip-input-ghost-min-width);\n      min-height: 1.75rem;\n    }\n\n    // Disabled state\n    &.disabled,\n    &:has(.form-ghost:disabled) {\n      background-color: var(--bg-2);\n      opacity: 1;\n\n      > .chip {\n        opacity: var(--control-disabled-opacity);\n\n        .chip-dismiss {\n          pointer-events: none;\n        }\n      }\n\n      > .form-ghost {\n        cursor: not-allowed;\n      }\n    }\n  }\n\n  // Theme cascade: .chip-input.theme-* passes theme to child chips\n  // Chips inherit theme variables from parent\n  // @each $color-name, $theme-props in $theme-map {\n  //   .chip-input.theme-#{$color-name} > .chip {\n  //     // Subtle default state\n  //     --chip-color: var(--theme-text);\n  //     --chip-bg: var(--theme-bg-subtle);\n\n  //     // Selected/active solid state\n  //     --chip-selected-color: var(--theme-contrast);\n  //     --chip-selected-bg: var(--theme-bg);\n  //     --chip-selected-border-color: var(--theme-bg);\n  //   }\n  // }\n\n  // // Sizing variants\n  // .chip-input-sm {\n  //   --control-min-height: #{$control-min-height-sm};\n  //   --control-padding-y: #{$control-padding-y-sm};\n  //   --control-padding-x: #{$control-padding-x-sm};\n  //   --control-font-size: #{$control-font-size-sm};\n  //   --control-line-height: #{$control-line-height-sm};\n  //   --control-border-radius: #{$control-border-radius-sm};\n  //   --chip-input-gap: .25rem;\n  //   --chip-input-chip-font-size: .8125em;\n  // }\n\n  // .chip-input-lg {\n  //   --control-min-height: #{$control-min-height-lg};\n  //   --control-padding-y: #{$control-padding-y-lg};\n  //   --control-padding-x: #{$control-padding-x-lg};\n  //   --control-font-size: #{$control-font-size-lg};\n  //   --control-line-height: #{$control-line-height-lg};\n  //   --control-border-radius: #{$control-border-radius-lg};\n  //   --chip-input-gap: .5rem;\n  //   --chip-input-chip-font-size: .9375em;\n  // }\n}\n","@use \"../mixins/transition\" as *;\n\n@layer components {\n  .combobox-toggle {\n    display: inline-flex;\n    gap: .5rem;\n    align-items: center;\n    justify-content: space-between;\n    width: 100%;\n    padding-inline-end: var(--control-padding-x);\n    text-align: start;\n    cursor: pointer;\n\n    &.show {\n      background-color: var(--bg-1);\n    }\n\n    &:disabled,\n    &.disabled {\n      cursor: not-allowed;\n      opacity: .65;\n    }\n  }\n\n  .combobox-value {\n    display: flex;\n    flex: 1;\n    gap: .5rem;\n    align-items: center;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n\n  .combobox-placeholder {\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n\n  .combobox-caret {\n    flex-shrink: 0;\n    @include transition(transform .2s ease-in-out);\n\n    .show > & {\n      transform: rotate(180deg);\n    }\n  }\n\n  .combobox-toggle + .menu {\n    --menu-max-height: 300px;\n    --menu-overflow-y: auto;\n  }\n\n  .combobox-search {\n    position: sticky;\n    top: 0;\n    z-index: 1;\n    padding: var(--menu-padding-x, .25rem);\n    background-color: var(--menu-bg, var(--bg-body));\n  }\n\n  .combobox-search-input {\n    width: 100%;\n  }\n\n  .combobox-no-results {\n    padding: 1rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-3);\n    text-align: center;\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/reset-text\" as *;\n@use \"mixins/tokens\" as *;\n\n$tooltip-tokens: () !default;\n\n// scss-docs-start tooltip-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$tooltip-tokens: defaults(\n  (\n    --tooltip-zindex: #{$zindex-tooltip},\n    --tooltip-max-width: 200px,\n    --tooltip-padding-x: #{$spacer * .75},\n    --tooltip-padding-y: #{$spacer * .375},\n    --tooltip-font-size: var(--font-size-sm),\n    --tooltip-color: var(--bg-body),\n    --tooltip-bg: var(--fg-body),\n    --tooltip-border-radius: var(--border-radius),\n    --tooltip-opacity: .95,\n    --tooltip-arrow-width: .8rem,\n    --tooltip-arrow-height: .4rem,\n  ),\n  $tooltip-tokens\n);\n// scss-docs-end tooltip-tokens\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y:     var(--tooltip-padding-y) !default;\n$form-feedback-tooltip-padding-x:     var(--tooltip-padding-x) !default;\n$form-feedback-tooltip-font-size:     var(--tooltip-font-size) !default;\n$form-feedback-tooltip-line-height:   null !default;\n$form-feedback-tooltip-opacity:       var(--tooltip-opacity) !default;\n$form-feedback-tooltip-border-radius: var(--tooltip-border-radius) !default;\n// scss-docs-end tooltip-feedback-variables\n\n@layer components {\n  .tooltip {\n    @include tokens($tooltip-tokens);\n\n    z-index: var(--tooltip-zindex);\n    display: block;\n    // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n    // So reset our font and text properties to avoid inheriting weird values.\n    @include reset-text();\n    font-size: var(--tooltip-font-size);\n    // Allow breaking very long words so they don't overflow the tooltip's bounds\n    word-wrap: break-word;\n    opacity: 0;\n\n    &.show { opacity: var(--tooltip-opacity); }\n\n    .tooltip-arrow {\n      display: block;\n      width: var(--tooltip-arrow-width);\n      height: var(--tooltip-arrow-height);\n\n      &::before {\n        position: absolute;\n        content: \"\";\n        border-color: transparent;\n        border-style: solid;\n      }\n    }\n  }\n\n  .bs-tooltip-top .tooltip-arrow {\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n\n    &::before {\n      top: -1px;\n      border-width: var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * .5) 0;\n      border-block-start-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-end .tooltip-arrow {\n    left: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n\n    &::before {\n      right: -1px;\n      border-width: calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * .5) 0;\n      border-inline-end-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-bottom .tooltip-arrow {\n    top: calc(-1 * var(--tooltip-arrow-height));\n\n    &::before {\n      bottom: -1px;\n      border-width: 0 calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height);\n      border-block-end-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-start .tooltip-arrow {\n    right: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n\n    &::before {\n      left: -1px;\n      border-width: calc(var(--tooltip-arrow-width) * .5) 0 calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height);\n      border-inline-start-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-auto {\n    &[data-bs-placement^=\"top\"] {\n      @extend .bs-tooltip-top;\n    }\n    &[data-bs-placement^=\"right\"] {\n      @extend .bs-tooltip-end;\n    }\n    &[data-bs-placement^=\"bottom\"] {\n      @extend .bs-tooltip-bottom;\n    }\n    &[data-bs-placement^=\"left\"] {\n      @extend .bs-tooltip-start;\n    }\n  }\n\n  // Wrapper for the tooltip content\n  .tooltip-inner {\n    max-width: var(--tooltip-max-width);\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    color: var(--tooltip-color);\n    text-align: center;\n    background-color: var(--tooltip-bg);\n    @include border-radius(var(--tooltip-border-radius));\n  }\n}\n","@mixin reset-text {\n  font-family: var(--body-font-family);\n  // We deliberately do NOT reset font-size or overflow-wrap / word-wrap.\n  font-style: normal;\n  font-weight: var(--body-font-weight);\n  line-height: var(--body-line-height);\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  white-space: normal;\n  word-spacing: normal;\n  line-break: auto;\n}\n","@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"form-variables\" as *;\n@use \"../tooltip\" as *; // bring in tooltip variables\n\n// Form validation\n//\n// Provide feedback to users when form field values are valid or invalid. Works\n// primarily for client-side validation via scoped `:invalid` and `:valid`\n// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for\n// server-side validation.\n\n// This mixin uses an `if()` technique to be compatible with Dart Sass\n// See https://github.com/sass/sass/issues/1873#issuecomment-152293725 for more details\n\n// scss-docs-start form-validation-mixins\n@mixin form-validation-state-selector($state) {\n  @if ($state == \"valid\" or $state == \"invalid\") {\n    .was-validated #{if(sass(&): \"&\"; else: \"\")}:#{$state},\n    #{if(sass(&): \"&\"; else: \"\")}.is-#{$state} {\n      @content;\n    }\n  } @else {\n    #{if(sass(&): \"&\"; else: \"\")}.is-#{$state} {\n      @content;\n    }\n  }\n}\n\n@mixin form-validation-state(\n  $state,\n  $color,\n  $icon,\n  $tooltip-color: color-contrast($color),\n  $tooltip-bg-color: rgba($color, $form-feedback-tooltip-opacity),\n  $focus-ring-color: null, // mdo-do: fix\n  $border-color: $color\n) {\n  .#{$state}-feedback {\n    display: none;\n    width: 100%;\n    margin-top: $form-feedback-margin-top;\n    font-size: $form-feedback-font-size;\n    font-style: $form-feedback-font-style;\n    color: $color;\n  }\n\n  .#{$state}-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%; // Contain to parent when possible\n    padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;\n    margin-top: .1rem;\n    font-size: $form-feedback-tooltip-font-size;\n    line-height: $form-feedback-tooltip-line-height;\n    color: $tooltip-color;\n    background-color: $tooltip-bg-color;\n    @include border-radius($form-feedback-tooltip-border-radius);\n  }\n\n  @include form-validation-state-selector($state) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip {\n      display: block;\n    }\n  }\n\n  .form-control {\n    @include form-validation-state-selector($state) {\n      border-color: $border-color;\n\n      @if $enable-validation-icons {\n        padding-inline-end: calc(var(--control-padding-x) * 3.5);\n        background-image: escape-svg($icon);\n        background-repeat: no-repeat;\n        background-position: right var(--control-padding-x) center;\n        background-size: 1rem;\n      }\n\n      &:focus-visible {\n        @include focus-ring(true, $color: $focus-ring-color);\n        border-color: $border-color;\n      }\n    }\n\n    &::-webkit-contacts-auto-fill-button {\n      @if $enable-validation-icons {\n        // margin-inline-end: calc(var(--control-padding-x) * 3);\n      }\n    }\n  }\n\n  // stylelint-disable-next-line selector-no-qualifying-type\n  textarea.form-control {\n    @include form-validation-state-selector($state) {\n      @if $enable-validation-icons {\n        // padding-inline-end: $input-height-inner;\n        background-position: right var(--control-padding-x) top var(--control-padding-x);\n        // background-position: top $input-height-inner-quarter right $input-height-inner-quarter;\n      }\n    }\n  }\n\n  .form-control-color {\n    @include form-validation-state-selector($state) {\n      @if $enable-validation-icons {\n        // width: add($form-color-width, $input-height-inner);\n      }\n    }\n  }\n\n  .form-check-input {\n    @include form-validation-state-selector($state) {\n      border-color: $border-color;\n\n      &:checked {\n        background-color: $color;\n      }\n\n      &:focus {\n        // box-shadow: $focus-box-shadow;\n      }\n\n      ~ .form-check-label {\n        color: $color;\n      }\n    }\n  }\n  .form-check-inline .form-check-input {\n    ~ .#{$state}-feedback {\n      margin-inline-start: .5em;\n    }\n  }\n\n  .input-group {\n    > .form-control:not(:focus),\n    > .form-select:not(:focus),\n    > .form-floating:not(:focus-within) {\n      @include form-validation-state-selector($state) {\n        @if $state == \"valid\" {\n          z-index: 3;\n        } @else if $state == \"invalid\" {\n          z-index: 4;\n        }\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-mixins\n\n@layer components {\n  // scss-docs-start form-validation-states-loop\n  @each $state, $data in $form-validation-states {\n    @include form-validation-state($state, $data...);\n  }\n  // scss-docs-end form-validation-states-loop\n}\n","// scss-docs-start form-feedback-variables\n$form-feedback-margin-top:          .5rem !default;\n$form-feedback-font-size:           var(--font-size-xs) !default;\n$form-feedback-font-style:          null !default;\n$form-feedback-valid-color:         var(--success-text) !default;\n$form-feedback-invalid-color:       var(--danger-text) !default;\n\n$form-feedback-icon-valid-color:    #00a748 !default;\n$form-feedback-icon-valid:          url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1'/></svg>\") !default;\n$form-feedback-icon-invalid-color:  #dd0d37 !default;\n$form-feedback-icon-invalid:        url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-colors\n$form-valid-color:                  $form-feedback-valid-color !default;\n$form-valid-border-color:           $form-feedback-valid-color !default;\n$form-invalid-color:                $form-feedback-invalid-color !default;\n$form-invalid-border-color:         $form-feedback-invalid-color !default;\n// scss-docs-end form-validation-colors\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n  \"valid\": (\n    \"color\": var(--form-valid-color),\n    \"icon\": $form-feedback-icon-valid,\n    \"tooltip-color\": var(--success-contrast),\n    \"tooltip-bg-color\": var(--success-bg),\n    \"focus-ring-color\": var(--success-focus-ring),\n    \"border-color\": var(--success-border),\n  ),\n  \"invalid\": (\n    \"color\": var(--form-invalid-color),\n    \"icon\": $form-feedback-icon-invalid,\n    \"tooltip-color\": var(--danger-contrast),\n    \"tooltip-bg-color\": var(--danger-bg),\n    \"focus-ring-color\": var(--danger-focus-ring),\n    \"border-color\": var(--danger-border),\n  )\n) !default;\n// scss-docs-end form-validation-states\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n@use \"sass:string\";\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n$button-tokens: () !default;\n\n// scss-docs-start btn-tokens\n$button-tokens: defaults(\n  (\n    --btn-min-height: var(--btn-input-min-height),\n    --btn-padding-x: var(--btn-input-padding-x),\n    --btn-padding-y: var(--btn-input-padding-y),\n    --btn-font-size: var(--btn-input-font-size),\n    --btn-font-weight: var(--btn-input-font-weight),\n    --btn-line-height: var(--btn-input-line-height),\n    --btn-color: var(--fg-body),\n    --btn-white-space: nowrap,\n    --btn-border-width: var(--border-width),\n    --btn-border-color: transparent,\n    --btn-border-radius: var(--border-radius),\n    --btn-hover-border-color: transparent,\n    --btn-disabled-opacity: .65,\n    --btn-transition-timing: .15s ease-in-out,\n    --btn-transition-property: \"color, background-color, border-color, box-shadow\",\n    --btn-transition: var(--btn-transition-property) var(--btn-transition-timing),\n  ),\n  $button-tokens\n);\n// scss-docs-end btn-tokens\n\n$button-link-tokens: () !default;\n\n// scss-docs-start button-link-tokens\n$button-link-tokens: defaults(\n  (\n    --btn-font-weight: var(--font-weight-normal),\n    --btn-color: var(--link-color),\n    --btn-bg: transparent,\n    --btn-border-color: transparent,\n    --btn-hover-color: var(--link-hover-color),\n    --btn-hover-bg: transparent,\n    --btn-hover-border-color: transparent,\n    --btn-active-color: var(--link-hover-color),\n    --btn-active-bg: transparent,\n    --btn-active-border-color: transparent,\n    --btn-disabled-color: var(--fg-3),\n    --btn-disabled-border-color: transparent,\n  ),\n  $button-link-tokens\n);\n// scss-docs-end button-link-tokens\n\n$button-styled-tokens: () !default;\n\n// scss-docs-start button-styled-tokens\n$button-styled-tokens: defaults(\n  (\n    --btn-gradient-start: rgb(255 255 255 / 12.5%),\n    --btn-gradient-end: rgb(0 0 0 / 7.5%) ,\n    --btn-border-mix-color: #000,\n    --btn-border-mix-amount: 10%,\n    --btn-border-hover-mix-amount: 12.5%,\n    --btn-border-active-mix-amount: 20%,\n    --btn-shadow: \"0 1px 2px rgb(0 0 0 / 15%), inset 0 1px 0 rgb(255 255 255 / 10%)\",\n    --btn-active-shadow: inset 0 2px 4px rgba(0, 0, 0, .15) ,\n  ),\n  $button-styled-tokens\n);\n// scss-docs-end button-styled-tokens\n\n// scss-docs-start button-sizes\n$button-sizes: () !default;\n$button-sizes: defaults(\n  (\"xs\", \"sm\", \"lg\"),\n  $button-sizes\n);\n// scss-docs-end button-sizes\n\n$button-variants: () !default;\n\n// scss-docs-start btn-variants\n$button-variants: defaults(\n  (\n    \"solid\": (\n      \"base\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      ),\n      \"hover\": (\n        \"bg\": \"bg\",\n        \"border-color\": \"bg\",\n        \"color\": \"contrast\"\n      ),\n      \"active\": (\n        \"bg\": \"bg\",\n        \"border-color\": \"bg\",\n        \"color\": \"contrast\"\n      )\n    ),\n    \"outline\": (\n      \"base\": (\n        \"bg\": \"transparent\",\n        \"color\": \"text\",\n        \"border-color\": \"border\"\n      ),\n      \"hover\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      ),\n      \"active\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      )\n    ),\n    \"subtle\": (\n      \"base\": (\n        \"bg\": \"bg-subtle\",\n        \"color\": \"text\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"bg\": (\"bg-muted\", \"bg-subtle\"),\n        \"color\": \"text-emphasis\"\n      ),\n      \"active\": (\n        \"bg\": \"bg-subtle\",\n        \"color\": \"text-emphasis\"\n      )\n    ),\n    \"text\": (\n      \"base\": (\n        \"color\": \"text\",\n        \"bg\": \"transparent\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"color\": \"text\",\n        \"bg\": \"bg-subtle\"\n      ),\n      \"active\": (\n        \"color\": \"text\",\n        \"bg\": \"bg-subtle\"\n      )\n    )\n  ),\n  $button-variants\n);\n// scss-docs-end btn-variants\n// stylelint-enable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n//\n// Base styles\n//\n\n// scss-docs-start btn-variant-selectors\n$btn-variant-selectors: (string.unquote(\".btn\"), string.unquote(\".btn-link\"), string.unquote(\".btn-icon\")) !default;\n@each $variant, $config in $button-variants {\n  $btn-variant-selectors: list.append($btn-variant-selectors, string.unquote(\".btn-#{$variant}\"), comma);\n}\n// scss-docs-end btn-variant-selectors\n\n@layer components {\n  #{$btn-variant-selectors} {\n    @include tokens($button-tokens);\n\n    display: inline-flex;\n    gap: var(--btn-gap, .25rem);\n    align-items: center;\n    justify-content: center;\n    min-height: var(--btn-min-height);\n    padding: var(--btn-padding-y) var(--btn-padding-x);\n    // font-family: var(--btn-font-family);\n    font-size: var(--btn-font-size);\n    font-weight: var(--btn-font-weight);\n    line-height: var(--btn-line-height);\n    color: var(--btn-color);\n    text-decoration: none;\n    white-space: var(--btn-white-space);\n    vertical-align: middle;\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    cursor: if(sass($enable-button-pointers): pointer; else: null);\n    user-select: none;\n    background-color: var(--btn-bg, var(--bg-2));\n    border: var(--btn-border-width) solid var(--btn-border-color);\n    @include border-radius(var(--btn-border-radius));\n    @include transition(var(--btn-transition));\n\n    &:hover {\n      color: var(--btn-hover-color);\n      background-color: var(--btn-hover-bg, var(--bg-3));\n      border-color: var(--btn-hover-border-color);\n    }\n\n    &:focus-visible {\n      @include focus-ring(true);\n      --focus-ring-offset: 1px;\n    }\n\n    &.active,\n    &.show {\n      color: var(--btn-active-color);\n      background-color: var(--btn-active-bg, var(--bg-3));\n      border-color: var(--btn-active-border-color);\n\n      &:focus-visible {\n        @include focus-ring(true);\n      }\n    }\n\n    &:disabled,\n    &.disabled,\n    fieldset:disabled & {\n      color: var(--btn-disabled-color);\n      pointer-events: none;\n      background-color: var(--btn-disabled-bg, var(--bg-1));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-disabled-border-color);\n      opacity: var(--btn-disabled-opacity);\n    }\n  }\n\n  // Main button style generator mixin\n  // Generate button variant classes (e.g., .btn-solid, .btn-outline, etc.)\n  // scss-docs-start btn-variant-mixin\n  @each $variant, $config in $button-variants {\n    .btn-#{$variant} {\n      @each $property, $value in map.get($button-variants, $variant, \"base\") {\n        @if $value == \"transparent\" {\n          --btn-#{$property}: transparent;\n        } @else {\n          --btn-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      @each $property, $value in map.get($button-variants, $variant, \"active\") {\n        @if $value == \"transparent\" {\n          --btn-active-#{$property}: transparent;\n        } @else if $value == \"bg-subtle\" {\n          --btn-active-#{$property}: var(--theme-#{$value});\n        } @else {\n          --btn-active-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .9) calc(c * 1.15) h);\n        }\n      }\n      @each $property, $value in map.get($button-variants, $variant, \"base\") {\n        @if $value == \"transparent\" {\n          --btn-disabled-#{$property}: transparent;\n        } @else {\n          --btn-disabled-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      &:hover {\n        @each $property, $value in map.get($button-variants, $variant, \"hover\") {\n          @if $value == \"transparent\" {\n            --btn-hover-#{$property}: transparent;\n          } @else if meta.type-of($value) == \"list\" {\n            $first-value: list.nth($value, 1);\n            $second-value: list.nth($value, 2);\n            --btn-hover-#{$property}: color-mix(in oklch, var(--theme-#{$first-value}) 50%, var(--theme-#{$second-value}));\n          } @else if $value == \"bg-subtle\" {\n            --btn-hover-#{$property}: var(--theme-#{$value});\n          } @else {\n            --btn-hover-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .95) calc(c * 1.1) h);\n          }\n        }\n      }\n\n      &:focus-visible {\n        outline-color: var(--theme-focus-ring);\n      }\n\n      &:active,\n      &.active,\n      &.btn-check:has(input:checked) {\n        @each $property, $value in map.get($button-variants, $variant, \"active\") {\n          @if $value == \"transparent\" {\n            --btn-active-#{$property}: transparent;\n          } @else if $value == \"bg-subtle\" {\n            --btn-active-#{$property}: var(--theme-#{$value});\n          } @else {\n            --btn-active-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .9) calc(c * 1.15) h);\n          }\n        }\n      }\n\n      // Disabled state for toggle buttons\n      &:disabled,\n      &.disabled,\n      &.btn-check:has(input:disabled) {\n        @each $property, $value in map.get($button-variants, $variant, \"base\") {\n          @if $value == \"transparent\" {\n            --btn-disabled-#{$property}: transparent;\n          } @else {\n            --btn-disabled-#{$property}: var(--theme-#{$value});\n          }\n        }\n      }\n    }\n  }\n  // scss-docs-end btn-variant-mixin\n\n  //\n  // Link buttons\n  //\n\n  // Make a button look and behave like a link\n  .btn-link {\n    @include tokens($button-link-tokens);\n\n    color: var(--theme-text, var(--btn-color));\n    text-decoration: var(--link-decoration);\n\n    @if $enable-gradients {\n      background-image: none;\n    }\n\n    &:focus-visible {\n      color: var(--theme-text, var(--btn-color));\n    }\n\n    &:hover {\n      color: var(--theme-text-emphasis, var(--btn-hover-color));\n    }\n\n    // No need for an active state here\n  }\n\n  //\n  // Button Sizes\n  //\n\n  // Generate button size classes from the $button-sizes map\n  // Skip \"md\" as it's the default size for .btn\n\n  // scss-docs-start btn-sizes-loop\n  @each $size, $_ in $button-sizes {\n    .btn-#{$size},\n    .btn-group-#{$size} > [class*=\"btn-\"] {\n      --btn-min-height: var(--btn-input-#{$size}-min-height);\n      --btn-padding-y: var(--btn-input-#{$size}-padding-y);\n      --btn-padding-x: var(--btn-input-#{$size}-padding-x);\n      --btn-font-size: var(--btn-input-#{$size}-font-size);\n      --btn-line-height: var(--btn-input-#{$size}-line-height);\n      --btn-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n  // scss-docs-end btn-sizes-loop\n\n  .btn-icon {\n    align-items: center;\n    justify-content: center;\n    aspect-ratio: 1;\n    padding: 0;\n  }\n\n  //\n  // Toggle buttons (.btn-check)\n  //\n  // Checkbox and radio inputs that look like buttons. Add .btn-check to a\n  // label with button classes, with the input nested inside.\n  //\n  // Example: <label class=\"btn-check btn-solid theme-primary\"><input type=\"checkbox\">Toggle</label>\n\n  .btn-check {\n    > input {\n      position: absolute;\n      clip: rect(0, 0, 0, 0);\n      pointer-events: none;\n    }\n\n    &:has(input:checked) {\n      color: var(--btn-active-color);\n      background-color: var(--btn-active-bg, var(--bg-3));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-active-border-color);\n      @include box-shadow(var(--btn-active-shadow));\n    }\n\n    &:has(input:focus-visible) {\n      @include focus-ring(true);\n      --focus-ring-offset: 1px;\n    }\n\n    &:has(input:disabled) {\n      color: var(--btn-disabled-color);\n      pointer-events: none;\n      background-color: var(--btn-disabled-bg, var(--bg-1));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-disabled-border-color);\n      opacity: var(--btn-disabled-opacity);\n      @include box-shadow(none);\n    }\n  }\n\n  //\n  // Styled buttons\n  //\n  // Add visual depth with gradients and shadows. Customize via CSS variables.\n\n  .btn-styled {\n    @include tokens($button-styled-tokens);\n\n    background-image:\n      linear-gradient(\n        to bottom,\n        var(--btn-gradient-start),\n        var(--btn-gradient-end)\n      );\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-mix-amount));\n    box-shadow: var(--btn-shadow);\n\n    &:hover {\n      background-image:\n        linear-gradient(\n          to bottom,\n          var(--btn-gradient-start),\n          var(--btn-gradient-end)\n        );\n      border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-hover-mix-amount));\n    }\n\n    &:active,\n    &.active {\n      background-image: none;\n      border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-active-mix-amount));\n      box-shadow: var(--btn-active-shadow);\n    }\n\n    &:disabled,\n    &.disabled {\n      background-image: none;\n      box-shadow: none;\n    }\n  }\n}\n","@use \"../mixins/border-radius\" as *;\n\n@layer components {\n  // Make the div behave like a button\n  .btn-group,\n  .btn-group-vertical {\n    position: relative;\n    display: inline-flex;\n    vertical-align: middle; // match .btn alignment given font-size hack above\n\n    > [class*=\"btn-\"] {\n      position: relative;\n      flex: 1 1 auto;\n\n      &:hover {\n        z-index: 1;\n      }\n    }\n\n    > .btn-check:has(input:checked),\n    > [class*=\"btn-\"]:active,\n    > [class*=\"btn-\"].active {\n      z-index: 2;\n    }\n\n    > .btn-check:has(input:focus),\n    > [class*=\"btn-\"]:focus {\n      z-index: 3;\n    }\n  }\n\n  // Optional: Group multiple button groups together for a toolbar\n  .btn-toolbar {\n    display: flex;\n    flex-wrap: wrap;\n    gap: .5rem;\n    justify-content: flex-start;\n\n    .input-group {\n      width: auto;\n    }\n  }\n\n  .btn-group {\n    @include border-radius(var(--btn-border-radius));\n\n    // Prevent double borders when buttons are next to each other\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) {\n      margin-inline-start: calc(-1 * var(--btn-border-width));\n    }\n\n    // Reset rounded corners\n    > [class*=\"btn-\"]:not(:last-child):not(.menu-toggle-split),\n    > .btn-group:not(:last-child) > [class*=\"btn-\"] {\n      @include border-end-radius(0);\n    }\n\n    // The left radius should be 0 if the button is not the first child\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) > [class*=\"btn-\"] {\n      @include border-start-radius(0);\n    }\n  }\n\n  //\n  // Split button menus\n  //\n\n  .menu-toggle-split {\n    padding-inline: calc(var(--btn-padding-x) * .75);\n  }\n\n  //\n  // Vertical button groups\n  //\n\n  .btn-group-vertical {\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: center;\n\n    > [class*=\"btn-\"],\n    > .btn-group {\n      width: 100%;\n    }\n\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) {\n      margin-top: calc(-1 * var(--btn-border-width));\n    }\n\n    // Reset rounded corners\n    > [class*=\"btn-\"]:not(:last-child):not(.menu-toggle-split),\n    > .btn-group:not(:last-child) > [class*=\"btn-\"] {\n      @include border-bottom-radius(0);\n    }\n\n    // The top radius should be 0 if the button is not the first child\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) > [class*=\"btn-\"] {\n      @include border-top-radius(0);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n$btn-close-tokens: () !default;\n\n// scss-docs-start btn-close-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$btn-close-tokens: defaults(\n  (\n    --btn-close-size: 1.25rem,\n    --btn-close-color: var(--fg-body),\n    --btn-close-opacity: .5,\n    --btn-close-hover-opacity: .75,\n    --btn-close-focus-opacity: .85,\n    --btn-close-disabled-opacity: .25,\n  ),\n  $btn-close-tokens\n);\n// scss-docs-end btn-close-tokens\n\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n@layer components {\n  .btn-close {\n    @include tokens($btn-close-tokens);\n\n    box-sizing: content-box;\n    width: var(--btn-close-size);\n    height: var(--btn-close-size);\n    padding: 0;\n    color: var(--btn-close-color);\n    background: transparent; // for button elements\n    border: 0; // for button elements\n    @include border-radius(var(--border-radius-sm));\n    opacity: var(--btn-close-opacity);\n\n    > svg {\n      display: block;\n      width: 100%;\n      height: 100%;\n      fill: currentcolor;\n    }\n\n    // Override <a>'s hover style\n    &:hover {\n      color: var(--btn-close-color);\n      text-decoration: none;\n      opacity: var(--btn-close-hover-opacity);\n    }\n\n    &:focus-visible {\n      opacity: var(--btn-close-focus-opacity);\n      @include focus-ring();\n    }\n\n    &:disabled,\n    &.disabled {\n      pointer-events: none;\n      user-select: none;\n      opacity: var(--btn-close-disabled-opacity);\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/tokens\" as *;\n\n$accordion-tokens: () !default;\n\n// scss-docs-start accordion-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$accordion-tokens: defaults(\n  (\n    --accordion-padding-x: 1.25rem,\n    --accordion-padding-y: 1rem,\n    --accordion-color: var(--fg-body),\n    --accordion-bg: var(--bg-body),\n    --accordion-transition-property: \"color, background-color, border-radius\",\n    --accordion-transition-timing: \".15s ease-in-out\",\n    --accordion-transition: var(--accordion-transition-property) var(--accordion-timing),\n    --accordion-border-color: var(--border-color),\n    --accordion-border-width: var(--border-width),\n    --accordion-border-radius: var(--accordion-radius, var(--border-radius-lg)),\n    --accordion-btn-color: var(--fg-2),\n    --accordion-btn-bg: var(--bg-body),\n    --accordion-btn-icon-width: 1rem,\n    --accordion-btn-icon-transform: rotate(-180deg),\n    --accordion-btn-icon-transition: transform .2s ease-in-out,\n    --accordion-active-color: var(--fg),\n    --accordion-active-bg: var(--bg-2),\n  ),\n  $accordion-tokens\n);\n// scss-docs-end accordion-tokens\n\n@layer components {\n  .accordion {\n    @include tokens($accordion-tokens);\n  }\n\n  .accordion-header {\n    display: flex;\n    align-items: center;\n    width: 100%;\n    padding: var(--accordion-btn-padding-y, var(--accordion-padding-y)) var(--accordion-btn-padding-x, var(--accordion-padding-x));\n    font-size: var(--accordion-font-size, var(--font-size-base));\n    color: var(--accordion-btn-color);\n    text-align: start;\n    list-style: none; // Remove default marker\n    cursor: pointer;\n    background-color: var(--accordion-btn-bg);\n    @include transition(var(--accordion-transition));\n\n    .accordion-icon {\n      flex-shrink: 0;\n      width: var(--accordion-btn-icon-width);\n      height: var(--accordion-btn-icon-width);\n      margin-inline-start: auto;\n      color: currentcolor;\n      @include transition(var(--accordion-btn-icon-transition));\n    }\n\n    &:hover {\n      z-index: 2;\n    }\n\n    &:focus-visible {\n      position: relative;\n      z-index: 3;\n      @include focus-ring(true);\n      outline-offset: -1px;\n    }\n  }\n\n  .accordion-item {\n    color: var(--accordion-color);\n    background-color: var(--accordion-bg);\n    border: var(--accordion-border-width) solid var(--accordion-border-color);\n\n    &:first-of-type {\n      @include border-top-radius(var(--accordion-border-radius));\n\n      > .accordion-header {\n        @include border-top-radius(calc(var(--accordion-border-radius) - var(--accordion-border-width)));\n      }\n    }\n\n    &:not(:first-of-type) {\n      border-block-start: 0;\n    }\n\n    // Only set a border-radius on the last item if the accordion is collapsed\n    &:last-of-type {\n      @include border-bottom-radius(var(--accordion-border-radius));\n\n      > .accordion-header {\n        @include border-bottom-radius(calc(var(--accordion-border-radius) - var(--accordion-border-width)));\n      }\n\n      > .accordion-body {\n        @include border-bottom-radius(var(--accordion-border-radius));\n      }\n    }\n\n    // Open state - details[open] applies these styles\n    &[open] {\n      border-color: var(--theme-border, var(--accordion-border-color));\n\n      > .accordion-header {\n        color: var(--theme-text, var(--accordion-active-color));\n        background-color: var(--theme-bg-subtle, var(--accordion-active-bg));\n        box-shadow: inset 0 calc(-1 * var(--accordion-border-width)) 0 var(--theme-border, var(--accordion-border-color));\n\n        .accordion-icon {\n          transform: var(--accordion-btn-icon-transform);\n        }\n      }\n\n      // Remove bottom radius from header when open (even on last item)\n      &:last-of-type > .accordion-header {\n        @include border-bottom-radius(0);\n      }\n    }\n  }\n\n  .accordion-body {\n    padding: var(--accordion-body-padding-y, var(--accordion-padding-y)) var(--accordion-body-padding-x, var(--accordion-padding-x));\n  }\n\n\n  // Flush accordion items\n  //\n  // Remove borders and border-radius to keep accordion items edge-to-edge.\n\n  .accordion-flush {\n    > .accordion-item {\n      border-inline: 0;\n      @include border-radius(0);\n\n      &:first-child {\n        border-block-start: 0;\n      }\n\n      &:last-child {\n        border-block-end: 0;\n      }\n\n      > .accordion-header,\n      > .accordion-body {\n        @include border-radius(0);\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$alert-tokens: () !default;\n\n// scss-docs-start alert-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$alert-tokens: defaults(\n  (\n    --alert-gap: #{$spacer * .75},\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1)),\n    --alert-padding-x: #{$spacer},\n    --alert-padding-y: #{$spacer},\n    --alert-color: var(--theme-text, inherit),\n    --alert-border-color: var(--theme-border, var(--border-color)),\n    --alert-border: var(--border-width) solid var(--alert-border-color),\n    --alert-border-radius: var(--border-radius),\n    --alert-link-color: inherit,\n    --hr-border-color: var(--theme-border, var(--border-color)),\n  ),\n  $alert-tokens\n);\n// scss-docs-end alert-tokens\n\n@layer components {\n  .alert {\n    @include tokens($alert-tokens);\n\n    display: flex;\n    gap: var(--alert-gap);\n    align-items: start;\n    padding: var(--alert-padding-y) var(--alert-padding-x);\n    color: var(--alert-color);\n    background-color: var(--alert-bg);\n    border: var(--alert-border);\n    @include border-radius(var(--alert-border-radius));\n  }\n\n  .alert-heading {\n    // Specified to prevent conflicts of changing $headings-color\n    color: inherit;\n  }\n\n  // Provide class for links that match alerts\n  .alert-link {\n    font-weight: var(--font-weight-semibold);\n    color: var(--alert-link-color);\n  }\n}\n","@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n$avatar-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start avatar-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$avatar-tokens: defaults(\n  (\n    --avatar-size: 2.5rem,\n    --avatar-border-radius: 50%,\n    --avatar-border-width: 2px,\n    --avatar-border-color: var(--bg-body),\n    --avatar-bg: var(--bg-2),\n    --avatar-color: var(--fg-body),\n    // --avatar-font-weight: var(--font-weight-medium), // Defaults to fallback\n    --avatar-status-size: .75rem,\n    --avatar-status-border-width: 2px,\n    --avatar-status-border-color: var(--bg-body),\n    --avatar-stack-spacing: -.3,\n    --avatar-stack-transition: \"transform .2s ease-in-out\",\n  ),\n  $avatar-tokens\n);\n// scss-docs-end avatar-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start avatar-sizes\n$avatar-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$avatar-sizes: defaults(\n  (\n    \"xs\": (\n      size: 1.5rem,\n      status-size: .625rem,\n    ),\n    \"sm\": (\n      size: 2rem,\n    ),\n    \"lg\": (\n      size: 3rem,\n      status-size: 1rem,\n    ),\n    \"xl\": (\n      size: 4rem,\n      status-size: 1.25rem,\n    ),\n  ),\n  $avatar-sizes\n);\n// scss-docs-end avatar-sizes\n\n@layer components {\n  .avatar {\n    @include tokens($avatar-tokens);\n\n    position: relative;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--avatar-size);\n    height: var(--avatar-size);\n    font-size: calc(var(--avatar-size) * .4);\n    font-weight: var(--avatar-font-weight, var(--font-weight-medium));\n    line-height: 1;\n    color: var(--theme-contrast, var(--avatar-color));\n    text-transform: uppercase;\n    vertical-align: middle;\n    background-color: var(--theme-bg, var(--avatar-bg));\n    @include border-radius(var(--avatar-border-radius));\n  }\n\n  .avatar-subtle {\n    color: var(--theme-text, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n\n  .avatar-img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    @include border-radius(inherit);\n  }\n\n  .avatar-status {\n    position: absolute;\n    right: calc(var(--avatar-status-border-width) * -1);\n    bottom: calc(var(--avatar-status-border-width) * -1);\n    width: var(--avatar-status-size);\n    height: var(--avatar-status-size);\n    background-color: var(--gray-400);\n    border: var(--avatar-status-border-width) solid var(--avatar-status-border-color);\n    @include border-radius(50%);\n\n    &.status-online {\n      background-color: var(--green-500);\n    }\n\n    &.status-offline {\n      background-color: var(--gray-400);\n      @include border-radius(20%);\n    }\n\n    &.status-busy {\n      background-color: var(--red-500);\n      @include border-radius(20%);\n    }\n\n    &.status-away {\n      background-color: var(--yellow-500);\n    }\n  }\n\n  .avatar-stack {\n    display: inline-flex;\n    flex-direction: row-reverse;\n\n    .avatar {\n      // Stack spacing is calculated as a percentage of avatar size\n      margin-left: calc(var(--avatar-size) * var(--avatar-stack-spacing));\n      border: var(--avatar-border-width) solid var(--avatar-border-color);\n      mask-image: none;\n      @include transition(var(--avatar-stack-transition));\n\n      &:last-child {\n        margin-left: 0;\n      }\n\n      &:hover {\n        z-index: 1;\n        transform: translateY(-2px);\n      }\n    }\n  }\n\n  @each $size, $tokens in $avatar-sizes {\n    .avatar-#{$size},\n    .avatar-stack-#{$size} {\n      --avatar-size: #{map.get($tokens, size)};\n\n      @if map.has-key($tokens, status-size) {\n        --avatar-status-size: #{map.get($tokens, status-size)};\n      }\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/tokens\" as *;\n\n$badge-tokens: () !default;\n\n// scss-docs-start badge-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$badge-tokens: defaults(\n  (\n    --badge-padding-x: .625em,\n    --badge-padding-y: .25em,\n    --badge-font-size: clamp(12px, .75em, .75em),\n    --badge-font-weight: var(--font-weight-semibold),\n    --badge-color: inherit,\n    --badge-bg: var(--bg-2),\n    --badge-border-width: var(--border-width),\n    --badge-border-color: transparent,\n    --badge-border-radius: var(--border-radius-lg),\n  ),\n  $badge-tokens\n);\n// scss-docs-end badge-tokens\n\n// scss-docs-start badge-variants\n$badge-variants: (\n  \"subtle\": (\n    \"color\": \"text\",\n    \"bg\": \"bg-subtle\",\n    \"border-color\": \"transparent\"\n  ),\n  \"outline\": (\n    \"color\": \"text\",\n    \"bg\": \"transparent\",\n    \"border-color\": \"border\"\n  )\n) !default;\n// scss-docs-end badge-variants\n\n@layer components {\n  .badge {\n    @include tokens($badge-tokens);\n\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 1.375rem;\n    padding: var(--badge-padding-y) var(--badge-padding-x);\n    font-size: var(--badge-font-size);\n    font-weight: var(--badge-font-weight);\n    line-height: 1;\n    color: var(--theme-contrast, var(--badge-color));\n    text-align: center;\n    white-space: nowrap;\n    vertical-align: baseline;\n    background-color: var(--theme-bg, var(--badge-bg));\n    border: var(--badge-border-width) solid var(--badge-border-color);\n    @include border-radius(var(--badge-border-radius));\n    @include gradient-bg();\n\n    // Empty badges collapse automatically\n    &:empty {\n      display: none;\n    }\n  }\n\n  // Quick fix for badges in buttons\n  .btn .badge {\n    position: relative;\n    top: -1px;\n  }\n\n  // scss-docs-start badge-variant-loop\n  @each $variant, $properties in $badge-variants {\n    .badge-#{$variant} {\n      @each $property, $value in $properties {\n        @if $value == \"transparent\" {\n          --badge-#{$property}: transparent;\n        } @else {\n          --badge-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      color: var(--badge-color);\n      background-color: var(--badge-bg);\n      border-color: var(--badge-border-color);\n    }\n  }\n  // scss-docs-end badge-variant-loop\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n$breadcrumb-tokens: () !default;\n\n// scss-docs-start breadcrumb-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$breadcrumb-tokens: defaults(\n  (\n    --breadcrumb-margin-bottom: 1rem,\n    --breadcrumb-font-size: inherit,\n    --breadcrumb-bg: transparent,\n    --breadcrumb-border-radius: var(--border-radius),\n    --breadcrumb-divider-color: var(--fg-4),\n    --breadcrumb-link-padding-x: .75rem,\n    --breadcrumb-link-padding-y: .25rem,\n    --breadcrumb-link-color: var(--fg-3),\n    --breadcrumb-link-hover-color: var(--fg-2),\n    --breadcrumb-link-hover-bg: var(--bg-1),\n    --breadcrumb-link-active-color: var(--fg-1),\n    --breadcrumb-link-border-radius: var(--border-radius-lg),\n  ),\n  $breadcrumb-tokens\n);\n// scss-docs-end breadcrumb-tokens\n\n@layer components {\n  .breadcrumb {\n    @include tokens($breadcrumb-tokens);\n\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    padding: var(--breadcrumb-padding-y, 0) var(--breadcrumb-padding-x, 0);\n    font-size: var(--breadcrumb-font-size);\n    list-style: none;\n    background-color: var(--breadcrumb-bg);\n    @include border-radius(var(--breadcrumb-border-radius));\n  }\n\n  .breadcrumb-item {\n    display: flex;\n  }\n\n  .breadcrumb-divider {\n    margin-inline: calc(var(--breadcrumb-link-padding-x) / 4);\n    color: var(--breadcrumb-divider-color);\n  }\n\n  .breadcrumb-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 2.25rem;\n    padding: var(--breadcrumb-link-padding-y) var(--breadcrumb-link-padding-x);\n    color: var(--breadcrumb-link-color);\n    text-decoration: none;\n    @include border-radius(var(--breadcrumb-link-border-radius));\n    @include transition(.1s text-decoration-color ease-in-out);\n\n    &:hover {\n      z-index: 2;\n      color: var(--breadcrumb-link-hover-color);\n      background-color: var(--breadcrumb-link-hover-bg);\n    }\n\n    &.active {\n      color: var(--breadcrumb-link-active-color);\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/tokens\" as *;\n\n$chip-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start chip-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$chip-tokens: defaults(\n  (\n    --chip-height: 1.75rem,\n    --chip-padding-x: .625rem,\n    --chip-gap: .3125rem,\n    --chip-border-radius: var(--border-radius-pill),\n    --chip-img-size: 1.25rem,\n    --chip-icon-size: 1rem,\n    --chip-dismiss-size: 1rem,\n    --chip-dismiss-opacity: .65,\n    --chip-dismiss-hover-opacity: 1,\n    --chip-color: var(--theme-text, var(--fg-body)),\n    --chip-bg: var(--theme-bg-subtle, var(--bg-2)),\n    --chip-border-color: transparent,\n    --chip-selected-color: var(--theme-contrast, var(--primary-contrast)),\n    --chip-selected-bg: var(--theme-bg, var(--primary-bg)),\n    --chip-selected-border-color: var(--theme-bg, var(--primary-bg)),\n  ),\n  $chip-tokens\n);\n// scss-docs-end chip-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .chip {\n    @include tokens($chip-tokens);\n\n    display: inline-flex;\n    gap: var(--chip-gap);\n    align-items: center;\n    height: var(--chip-height);\n    padding-inline: var(--chip-padding-x);\n    font-size: var(--chip-font-size, var(--font-size-sm));\n    font-weight: var(--chip-font-weight, var(--font-weight-base));\n    line-height: var(--chip-line-height, 1.25rem);\n    color: var(--chip-color);\n    text-decoration: none;\n    white-space: nowrap;\n    vertical-align: middle;\n    cursor: pointer;\n    background-color: var(--chip-bg);\n    border: var(--border-width) solid var(--chip-border-color);\n    @include border-radius(var(--chip-border-radius));\n\n    &:hover {\n      --chip-bg: var(--theme-bg-muted, var(--bg-3));\n    }\n\n    &:focus-visible {\n      outline: 0;\n      // @include focus-ring();\n    }\n\n    &.active {\n      --chip-color: var(--chip-selected-color);\n      --chip-bg: var(--chip-selected-bg);\n      --chip-border-color: var(--chip-selected-border-color);\n\n      &:hover {\n        --chip-bg: var(--chip-selected-bg);\n        opacity: .9;\n      }\n    }\n\n    &.disabled,\n    &:disabled {\n      pointer-events: none;\n      opacity: .65;\n    }\n  }\n\n  .chip-img {\n    width: var(--chip-img-size);\n    height: var(--chip-img-size);\n    @include border-radius(50%);\n\n    &:first-child {\n      margin-inline-start: -.375rem;\n    }\n  }\n\n  // Chip icon (left side)\n  .chip-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    margin-inline-start: calc(var(--chip-gap) * -.25);\n\n    > svg {\n      display: block; // Prevents baseline alignment issues\n      width: var(--chip-icon-size);\n      height: var(--chip-icon-size);\n    }\n\n    > img {\n      width: var(--chip-icon-size);\n      height: var(--chip-icon-size);\n      object-fit: cover;\n      @include border-radius(50%);\n    }\n  }\n\n  // Dismiss button (right side)\n  .chip-dismiss {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--chip-min-height);\n    height: var(--chip-min-height);\n    padding: 0;\n    // margin-inline-start: calc(var(--chip-padding-x) * -.5);\n    margin-inline-end: calc(var(--chip-padding-x) * -.25);\n    color: inherit;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    opacity: var(--chip-dismiss-opacity);\n    // @include transition(opacity .15s ease-in-out);\n\n    &:hover {\n      opacity: var(--chip-dismiss-hover-opacity);\n    }\n\n    &:focus-visible {\n      outline: 0;\n      opacity: 1;\n      @include focus-ring();\n    }\n\n    > svg {\n      display: block; // Prevents baseline alignment issues\n      width: var(--chip-dismiss-size);\n      height: var(--chip-dismiss-size);\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/tokens\" as *;\n@use \"layout/breakpoints\" as *;\n\n$card-tokens: () !default;\n\n// scss-docs-start card-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$card-tokens: defaults(\n  (\n    --card-spacer-y: #{$spacer},\n    --card-spacer-x: #{$spacer},\n    --card-subtitle-color: inherit,\n    --card-border-width: var(--border-width),\n    --card-border-color: var(--border-color-translucent),\n    --card-border-radius: var(--border-radius-lg),\n    --card-box-shadow: none,\n    --card-inner-border-radius: calc(var(--border-radius-lg) - var(--border-width)),\n    --card-cap-padding-y: #{$spacer * .75},\n    --card-cap-padding-x: #{$spacer},\n    --card-cap-bg: var(--bg-1),\n    --card-cap-color: inherit,\n    --card-height: auto,\n    --card-color: inherit,\n    --card-bg: var(--bg-body),\n    --card-img-overlay-padding: #{$spacer},\n    --card-group-margin: #{$grid-gutter-x * .5},\n    --card-body-gap: #{$spacer * .5},\n  ),\n  $card-tokens\n);\n// scss-docs-end card-tokens\n\n@layer components {\n  .card {\n    @include tokens($card-tokens);\n\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106\n    height: var(--card-height);\n    color: var(--fg-body);\n    word-wrap: break-word;\n    background-color: var(--card-bg);\n    // border: var(--card-border-width) solid var(--card-border-color);\n    // @include border-radius(var(--card-border-radius));\n    @include box-shadow(var(--card-box-shadow));\n\n    > hr {\n      margin-inline: 0;\n    }\n  }\n\n  .card-body {\n    display: flex;\n    // Enable `flex-grow: 1` for decks and groups so that card blocks take up\n    // as much space as possible, ensuring footers are aligned to the bottom.\n    flex: 1 1 auto;\n    flex-direction: column;\n    gap: var(--card-body-gap);\n    align-items: flex-start;\n    padding: var(--card-spacer-y) var(--card-spacer-x);\n    color: var(--card-color);\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n\n    > * {\n      margin-block: 0;\n    }\n  }\n\n  .card-body,\n  .card-list {\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n\n    &:first-child {\n      @include border-top-radius(var(--card-border-radius));\n      border-top-width: var(--card-border-width);\n    }\n\n    &:last-child {\n      @include border-bottom-radius(var(--card-border-radius));\n      border-bottom-width: var(--card-border-width);\n    }\n\n    &:not(:first-child):not(:last-child) {\n      border-block-end-width: var(--card-border-width);\n    }\n  }\n\n  .card-title,\n  .card-subtitle,\n  .card-text {\n    align-self: stretch;\n  }\n\n  .card-subtitle {\n    margin-top: calc(var(--card-body-gap) * -.5);\n  }\n\n  .card-header {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    margin-bottom: 0; // Removes the default margin-bottom of <hN>\n    color: var(--theme-contrast, var(--card-cap-color));\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n\n    &:first-child {\n      @include border-radius(var(--card-inner-border-radius) var(--card-inner-border-radius) 0 0);\n    }\n  }\n\n  .card-footer {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    color: var(--card-cap-color);\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n\n    &:last-child {\n      @include border-radius(0 0 var(--card-inner-border-radius) var(--card-inner-border-radius));\n    }\n  }\n\n  .card-subtle {\n    border-color: var(--theme-border, var(--card-border-color));\n\n    .card-header {\n      color: var(--theme-text-emphasis, currentcolor);\n      background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n\n    .card-footer {\n      color: var(--theme-text-emphasis, currentcolor);\n      background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n\n    .card-body,\n    .card-list {\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n  }\n\n  //\n  // Header navs\n  //\n\n  // Combined selector because of specificity match with `.nav` base class\n  .nav.card-header-tabs {\n    margin-inline: calc(-.5 * var(--card-cap-padding-x));\n    margin-bottom: calc(-1 * var(--card-cap-padding-y));\n    border-block-end: 0;\n\n    .nav-link.active {\n      background-color: var(--card-bg);\n      border-block-end-color: var(--card-bg);\n    }\n  }\n\n  // Card image\n  .card-img-overlay {\n    position: absolute;\n    inset: 0;\n    padding: var(--card-img-overlay-padding);\n    @include border-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img,\n  .card-img-top,\n  .card-img-bottom {\n    width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n    outline: var(--card-border-width) solid var(--card-border-color);\n    outline-offset: calc(var(--card-border-width) * -1);\n  }\n\n  .card-img,\n  .card-img-top {\n    @include border-top-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img,\n  .card-img-bottom {\n    @include border-bottom-radius(var(--card-inner-border-radius));\n  }\n\n  .card-row {\n    flex-direction: row;\n\n    .card-body,\n    .card-list {\n      border-width: var(--card-border-width) 0;\n      @include border-radius(0);\n\n      &:first-child {\n        @include border-start-radius(var(--card-inner-border-radius));\n        border-inline-start-width: var(--card-border-width);\n      }\n\n      &:last-child {\n        @include border-end-radius(var(--card-inner-border-radius));\n        border-inline-end-width: var(--card-border-width);\n      }\n\n      &:not(:first-child):not(:last-child) {\n        border-inline-end-width: var(--card-border-width);\n      }\n    }\n  }\n\n  .card-img-start {\n    @include border-start-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img-end {\n    @include border-end-radius(var(--card-inner-border-radius));\n  }\n\n  //\n  // Card groups\n  //\n\n  .card-group {\n    // The child selector allows nested `.card` within `.card-group`\n    // to display properly.\n    > .card {\n      margin-bottom: var(--card-group-margin);\n    }\n\n    @include media-breakpoint-up(sm) {\n      display: flex;\n      flex-flow: row wrap;\n      // The child selector allows nested `.card` within `.card-group`\n      // to display properly.\n      > .card {\n        flex: 1 0 0;\n        margin-bottom: 0;\n\n        + .card {\n          margin-inline-start: 0;\n          border-inline-start: 0;\n        }\n\n        // Handle rounded corners\n        @if $enable-rounded {\n          &:not(:last-child) {\n            @include border-end-radius(0);\n\n            > .card-img-top,\n            > .card-header {\n              border-start-end-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer {\n              border-end-end-radius: 0;\n            }\n          }\n\n          &:not(:first-child) {\n            @include border-start-radius(0);\n\n            > .card-img-top,\n            > .card-header {\n              border-start-start-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer {\n              border-end-start-radius: 0;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"colors\" as *;\n@use \"functions\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/color-mode\" as *;\n@use \"mixins/tokens\" as *;\n\n$carousel-tokens: () !default;\n\n// scss-docs-start carousel-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$carousel-tokens: defaults(\n  (\n    --carousel-control-color: #{$white},\n    --carousel-control-width: 15%,\n    --carousel-control-opacity: .5,\n    --carousel-control-hover-opacity: .9,\n    --carousel-control-transition: opacity .15s ease,\n    --carousel-control-icon-filter: none,\n    --carousel-indicator-width: 30px,\n    --carousel-indicator-height: 3px,\n    --carousel-indicator-hit-area-height: 10px,\n    --carousel-indicator-spacer: 3px,\n    --carousel-indicator-opacity: .5,\n    --carousel-indicator-active-bg: var(--white),\n    --carousel-indicator-active-opacity: 1,\n    --carousel-indicator-transition: opacity .6s ease,\n    --carousel-caption-width: 70%,\n    --carousel-caption-color: var(--white),\n    --carousel-caption-padding-y: 1.25rem,\n    --carousel-caption-spacer: 1.25rem,\n    --carousel-control-icon-width: 2rem,\n    --carousel-control-prev-icon-bg: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>\"),\n    --carousel-control-next-icon-bg: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>\"),\n    --carousel-transition-duration: .6s,\n    --carousel-transition: transform .6s ease-in-out,\n  ),\n  $carousel-tokens\n);\n// scss-docs-end carousel-tokens\n\n$carousel-dark-tokens: () !default;\n\n// scss-docs-start carousel-dark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$carousel-dark-tokens: defaults(\n  (\n    --carousel-indicator-active-bg: #{$black},\n    --carousel-caption-color: #{$black},\n    --carousel-control-icon-filter: invert(1) grayscale(100),\n  ),\n  $carousel-dark-tokens\n);\n// scss-docs-end carousel-dark-tokens\n\n// Notes on the classes:\n//\n// 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically)\n//    even when their scroll action started on a carousel, but for compatibility (with Firefox)\n//    we're preventing all actions instead\n// 2. The .carousel-item-start and .carousel-item-end is used to indicate where\n//    the active slide is heading.\n// 3. .active.carousel-item is the current slide.\n// 4. .active.carousel-item-start and .active.carousel-item-end is the current\n//    slide in its in-transition state. Only one of these occurs at a time.\n// 5. .carousel-item-next.carousel-item-start and .carousel-item-prev.carousel-item-end\n//    is the upcoming slide in transition.\n\n@layer components {\n  .carousel {\n    position: relative;\n    @include tokens($carousel-tokens);\n  }\n\n  .carousel.pointer-event {\n    touch-action: pan-y;\n  }\n\n  .carousel-inner {\n    position: relative;\n    display: flow-root;\n    width: 100%;\n    overflow: hidden;\n  }\n\n  .carousel-item {\n    position: relative;\n    display: none;\n    float: inline-start;\n    width: 100%;\n    margin-inline-end: -100%;\n    backface-visibility: hidden;\n    @include transition(var(--carousel-transition));\n  }\n\n  .carousel-item.active,\n  .carousel-item-next,\n  .carousel-item-prev {\n    display: block;\n  }\n\n  .carousel-item-next:not(.carousel-item-start),\n  .active.carousel-item-end {\n    transform: translateX(100%);\n  }\n\n  .carousel-item-prev:not(.carousel-item-end),\n  .active.carousel-item-start {\n    transform: translateX(-100%);\n  }\n\n  //\n  // Alternate transitions\n  //\n\n  .carousel-fade {\n    .carousel-item {\n      opacity: 0;\n      transition-property: opacity;\n      transform: none;\n    }\n\n    .carousel-item.active,\n    .carousel-item-next.carousel-item-start,\n    .carousel-item-prev.carousel-item-end {\n      z-index: 1;\n      opacity: 1;\n    }\n\n    .active.carousel-item-start,\n    .active.carousel-item-end {\n      z-index: 0;\n      opacity: 0;\n      @include transition(opacity 0s var(--carousel-transition-duration));\n    }\n  }\n\n  //\n  // Left/right controls for nav\n  //\n\n  .carousel-control-prev,\n  .carousel-control-next {\n    position: absolute;\n    inset-block: 0;\n    z-index: 1;\n    // Use flex for alignment (1-3)\n    display: flex; // 1. allow flex styles\n    align-items: center; // 2. vertically center contents\n    justify-content: center; // 3. horizontally center contents\n    width: var(--carousel-control-width);\n    padding: 0;\n    color: var(--carousel-control-color);\n    text-align: center;\n    background: none;\n    filter: var(--carousel-control-icon-filter);\n    border: 0;\n    opacity: var(--carousel-control-opacity);\n    @include transition(var(--carousel-control-transition));\n\n    // Hover/focus state\n    &:hover,\n    &:focus {\n      color: var(--carousel-control-color);\n      text-decoration: none;\n      outline: 0;\n      opacity: var(--carousel-control-hover-opacity);\n    }\n  }\n  .carousel-control-prev {\n    inset-inline-start: 0;\n    // stylelint-disable-next-line scss/at-function-named-arguments, @stylistic/function-whitespace-after\n    background-image: if(sass($enable-gradients): linear-gradient(90deg, rgba($black, .25), rgba($black, .001)); else: null);\n  }\n  .carousel-control-next {\n    inset-inline-end: 0;\n    // stylelint-disable-next-line scss/at-function-named-arguments, @stylistic/function-whitespace-after\n    background-image: if(sass($enable-gradients): linear-gradient(270deg, rgba($black, .25), rgba($black, .001)); else: null);\n  }\n\n  // Icons for within\n  .carousel-control-prev-icon,\n  .carousel-control-next-icon {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-repeat: no-repeat;\n    background-position: 50%;\n    background-size: 100% 100%;\n  }\n\n  .carousel-control-prev-icon {\n    background-image: var(--carousel-control-prev-icon-bg);\n  }\n\n  [dir=\"rtl\"] .carousel-control-prev-icon {\n    background-image: var(--carousel-control-next-icon-bg);\n  }\n\n  .carousel-control-next-icon {\n    background-image: var(--carousel-control-next-icon-bg);\n  }\n\n  [dir=\"rtl\"] .carousel-control-next-icon {\n    background-image: var(--carousel-control-prev-icon-bg);\n  }\n\n  // Optional indicator pips/controls\n  //\n  // Add a container (such as a list) with the following class and add an item (ideally a focusable control,\n  // like a button) with data-bs-target for each slide your carousel holds.\n\n  .carousel-indicators {\n    position: absolute;\n    inset: auto 0 0;\n    z-index: 2;\n    display: flex;\n    justify-content: center;\n    padding: 0;\n    // Use the .carousel-control's width as margin so we don't overlay those\n    margin-inline: var(--carousel-control-width);\n    margin-bottom: 1rem;\n\n    [data-bs-target] {\n      box-sizing: content-box;\n      flex: 0 1 auto;\n      width: var(--carousel-indicator-width);\n      height: var(--carousel-indicator-height);\n      padding: 0;\n      margin-inline: var(--carousel-indicator-spacer);\n      text-indent: -999px;\n      cursor: pointer;\n      background-color: var(--carousel-indicator-active-bg);\n      background-clip: padding-box;\n      border: 0;\n      // Use transparent borders to increase the hit area by 10px on top and bottom.\n      border-block: var(--carousel-indicator-hit-area-height) solid transparent;\n      opacity: var(--carousel-indicator-opacity);\n      @include transition(var(--carousel-indicator-transition));\n    }\n\n    .active {\n      opacity: var(--carousel-indicator-active-opacity);\n    }\n  }\n\n  // Optional captions\n  //\n  //\n\n  .carousel-caption {\n    position: absolute;\n    right: calc((100% - var(--carousel-caption-width)) * .5);\n    bottom: var(--carousel-caption-spacer);\n    left: calc((100% - var(--carousel-caption-width)) * .5);\n    padding-top: var(--carousel-caption-padding-y);\n    padding-bottom: var(--carousel-caption-padding-y);\n    color: var(--carousel-caption-color);\n    text-align: center;\n  }\n\n  // Dark mode carousel\n\n  @mixin carousel-dark() {\n    @include tokens($carousel-dark-tokens);\n  }\n\n  .carousel-dark {\n    @include carousel-dark();\n  }\n\n  @if $enable-dark-mode {\n    @include color-mode(dark, true) {\n      @include carousel-dark();\n    }\n  }\n}\n","@use \"../config\" as *;\n\n// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n  @if $color-mode-type == \"media-query\" {\n    @if $root == true {\n      @media (prefers-color-scheme: $mode) {\n        :root {\n          @content;\n        }\n      }\n    } @else {\n      @media (prefers-color-scheme: $mode) {\n        @content;\n      }\n    }\n  } @else {\n    [data-bs-theme=\"#{$mode}\"] {\n      @content;\n    }\n  }\n}\n// scss-docs-end color-mode-mixin\n","// stylelint-disable selector-max-attribute, property-disallowed-list, selector-no-qualifying-type -- VCP uses extensive data attributes and requires direct border-radius properties for range selection\n\n@use \"functions\" as *;\n@use \"config\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/tokens\" as *;\n\n$datepicker-tokens: () !default;\n\n// scss-docs-start datepicker-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$datepicker-tokens: defaults(\n  (\n    --datepicker-padding: 1rem,\n    --datepicker-bg: var(--bg-body),\n    --datepicker-color: var(--fg-body),\n    --datepicker-border-color: var(--border-color-translucent),\n    --datepicker-border-width: var(--border-width),\n    --datepicker-border-radius: var(--border-radius-lg),\n    --datepicker-box-shadow: var(--box-shadow),\n    --datepicker-font-size: var(--font-size-sm),\n    --datepicker-min-width: 280px,\n    --datepicker-zindex: #{$zindex-menu},\n    --datepicker-header-font-weight: 600,\n    --datepicker-weekday-color: var(--fg-3),\n    --datepicker-day-hover-bg: var(--bg-1),\n    --datepicker-day-selected-bg: var(--primary-bg),\n    --datepicker-day-selected-color: var(--primary-contrast),\n    --datepicker-day-today-bg: var(--bg-2),\n    --datepicker-day-today-color: var(--fg-1),\n    --datepicker-day-disabled-color: var(--fg-4),\n  ),\n  $datepicker-tokens\n);\n// scss-docs-end datepicker-tokens\n\n@layer components {\n  [data-vc=\"calendar\"] {\n    @include tokens($datepicker-tokens);\n\n    position: absolute;\n    z-index: var(--datepicker-zindex);\n    box-sizing: border-box;\n    display: flex;\n    flex-direction: column;\n    min-width: var(--datepicker-min-width);\n    padding: var(--datepicker-padding);\n    font-family: var(--font-sans-serif);\n    font-size: var(--datepicker-font-size);\n    color: var(--datepicker-color);\n    color-scheme: light dark;\n    background-color: var(--datepicker-bg);\n    border: var(--datepicker-border-width) solid var(--datepicker-border-color);\n    @include border-radius(var(--datepicker-border-radius));\n    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n\n    // Respond to Bootstrap's color mode system\n    &[data-bs-theme=\"light\"] {\n      color-scheme: light;\n    }\n\n    &[data-bs-theme=\"dark\"] {\n      color-scheme: dark;\n    }\n\n    // Catch-all for focus styles\n    button:focus-visible {\n      position: relative;\n      z-index: 1;\n      @include focus-ring();\n    }\n  }\n\n  [data-vc-calendar-hidden] {\n    pointer-events: none;\n    opacity: 0;\n  }\n\n  // Inline calendars\n  //\n  // Remove popover styling for more neutral styling\n  [data-vc=\"calendar\"]:not([data-vc-input]) {\n    position: relative;\n    width: fit-content;\n    padding: 0;\n    border: 0;\n    box-shadow: none;\n  }\n\n  [data-vc-position=\"bottom\"] {\n    margin-block-start: .25rem;\n  }\n\n  [data-vc-position=\"top\"] {\n    margin-block-end: -.25rem;\n  }\n\n  [data-vc-arrow] {\n    position: relative;\n    display: block;\n    width: 2rem;\n    height: 2rem;\n    color: var(--datepicker-color);\n    pointer-events: auto;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--border-radius));\n\n    &::before {\n      position: absolute;\n      inset: .25rem;\n      content: \"\";\n      background-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%236b7280' d='M12 16c-.3 0-.5-.1-.7-.3l-6-6c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l5.3 5.3 5.3-5.3c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-6 6c-.2.2-.4.3-.7.3'/></svg>\");\n      background-repeat: no-repeat;\n      background-position: center;\n    }\n\n    &:hover {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  [data-vc-arrow=\"prev\"]::before {\n    transform: rotate(90deg);\n  }\n\n  [data-vc-arrow=\"next\"]::before {\n    transform: rotate(-90deg);\n  }\n\n  // Grid layout\n  [data-vc=\"controls\"] {\n    position: absolute;\n    top: 0;\n    right: 0;\n    left: 0;\n    z-index: 20;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding-top: 1rem;\n    padding-right: 1rem;\n    padding-left: 1rem;\n    pointer-events: none;\n  }\n\n  [data-vc=\"grid\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-wrap: wrap;\n    gap: 1.75rem;\n  }\n\n  [data-vc=\"column\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    min-width: 240px;\n  }\n\n  //\n  // Header\n  //\n\n  [data-vc=\"header\"] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    margin-bottom: .75rem;\n  }\n\n  // Month and year\n  [data-vc-header=\"content\"] {\n    display: inline-flex;\n    flex-grow: 1;\n    align-items: center;\n    justify-content: center;\n    white-space: pre-wrap;\n  }\n\n  [data-vc=\"month\"],\n  [data-vc=\"year\"] {\n    padding: .25rem .5rem;\n    margin-inline: -.125rem;\n    font-size: 1rem;\n    font-weight: var(--datepicker-header-font-weight);\n    color: var(--datepicker-color);\n    // cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--border-radius));\n\n    &:disabled {\n      color: var(--datepicker-day-disabled-color);\n      pointer-events: none;\n    }\n\n    &:hover:not(:disabled) {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  [data-vc=\"content\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n  }\n\n  // Month/Year grids\n  [data-vc=\"months\"],\n  [data-vc=\"years\"] {\n    display: grid;\n    flex-grow: 1;\n    grid-template-columns: repeat(var(--vc-columns, 4), minmax(0, 1fr));\n    row-gap: 1rem;\n    column-gap: .25rem;\n    align-items: center;\n  }\n\n  [data-vc=\"years\"] {\n    --vc-columns: 5;\n  }\n\n  [data-vc-months-month],\n  [data-vc-years-year] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 2.5rem;\n    padding: .25rem;\n    font-size: .75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    text-align: center;\n    word-break: break-all;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--border-radius));\n\n    &:disabled {\n      color: var(--datepicker-day-disabled-color);\n      pointer-events: none;\n    }\n\n    &:hover:not(:disabled) {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n\n    &[data-vc-months-month-selected],\n    &[data-vc-years-year-selected] {\n      color: var(--datepicker-day-selected-color);\n      background-color: var(--datepicker-day-selected-bg);\n\n      &:hover {\n        color: var(--datepicker-day-selected-color);\n        background-color: var(--datepicker-day-selected-bg);\n      }\n    }\n  }\n\n  // Week days header\n  [data-vc=\"week\"] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    justify-items: center;\n    margin-bottom: .5rem;\n  }\n\n  [data-vc-week-day] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    padding: 0;\n    margin: 0;\n    font-size: .75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    background-color: transparent;\n    border: 0;\n  }\n\n  button[data-vc-week-day] {\n    cursor: pointer;\n  }\n\n  // Dates grid\n  [data-vc=\"dates\"] {\n    pointer-events: none;\n  }\n\n  [data-vc-dates=\"row\"] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    align-items: center;\n    justify-items: center;\n    width: 100%;\n  }\n\n  [data-vc-date] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    padding-top: .125rem;\n    padding-bottom: .125rem;\n    pointer-events: auto;\n\n    &:not(:has([data-vc-date-btn])),\n    &[data-vc-date-disabled],\n    &[data-vc-date-disabled] [data-vc-date-btn] {\n      pointer-events: none;\n    }\n  }\n\n  // Date button\n  [data-vc-date-btn] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    height: 100%;\n    min-height: 1.875rem;\n    padding: 0;\n    font-size: .75rem;\n    font-weight: 400;\n    line-height: 1rem;\n    color: var(--datepicker-color);\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--border-radius);\n\n    &:hover {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  // Today\n  [data-vc-date-today] [data-vc-date-btn] {\n    font-weight: 600;\n    color: var(--datepicker-day-today-color);\n    background-color: var(--datepicker-day-today-bg);\n  }\n\n  // Outside month\n  [data-vc-date-month=\"next\"] [data-vc-date-btn],\n  [data-vc-date-month=\"prev\"] [data-vc-date-btn] {\n    opacity: .5;\n  }\n\n  // Disabled\n  [data-vc-date-disabled] [data-vc-date-btn] {\n    color: var(--datepicker-day-disabled-color);\n  }\n\n  // Range selection styles\n  [data-vc-date-hover] [data-vc-date-btn] {\n    background-color: var(--datepicker-day-hover-bg);\n    border-radius: 0;\n  }\n\n  [data-vc-date-hover=\"first\"] [data-vc-date-btn] {\n    border-start-start-radius: var(--border-radius);\n    border-end-start-radius: var(--border-radius);\n  }\n\n  [data-vc-date-hover=\"last\"] [data-vc-date-btn] {\n    border-start-end-radius: var(--border-radius);\n    border-end-end-radius: var(--border-radius);\n  }\n\n  [data-vc-date-hover=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--border-radius);\n  }\n\n  [data-vc-date-selected=\"middle\"] [data-vc-date-btn] {\n    border-radius: 0;\n    opacity: .8;\n  }\n\n  // Selected\n  [data-vc-date-selected] [data-vc-date-btn] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n\n  }\n\n  [data-vc-date-selected=\"first\"] [data-vc-date-btn] {\n    border-top-left-radius: var(--border-radius);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--border-radius);\n  }\n\n  [data-vc-date-selected=\"last\"] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--border-radius);\n    border-bottom-right-radius: var(--border-radius);\n    border-bottom-left-radius: 0;\n  }\n\n  [data-vc-date-selected=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--border-radius);\n  }\n}\n","@use \"sass:map\";\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n// Native <dialog> component\n// Uses the browser's native dialog element with showModal()/show()/close() APIs\n// Leverages native [open] attribute and ::backdrop pseudo-element\n\n// stylelint-disable custom-property-no-missing-var-function\n$dialog-tokens: () !default;\n\n// scss-docs-start dialog-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$dialog-tokens: defaults(\n  (\n    --dialog-padding: 1rem,\n    --dialog-width: 500px,\n    --dialog-margin: 1.75rem,\n    --dialog-color: var(--fg-body),\n    --dialog-bg: var(--bg-body),\n    --dialog-border-color: var(--border-color-translucent),\n    --dialog-border-width: var(--border-width),\n    --dialog-border-radius: var(--border-radius-lg),\n    --dialog-box-shadow: var(--box-shadow-lg),\n    --dialog-backdrop-bg: rgb(0 0 0 / 50%),\n    --dialog-backdrop-blur: 8px,\n    --dialog-header-padding: 1rem,\n    --dialog-header-border-color: var(--border-color),\n    --dialog-header-border-width: var(--border-width),\n    --dialog-footer-padding: 1rem,\n    --dialog-footer-border-color: var(--border-color),\n    --dialog-footer-border-width: var(--border-width),\n    --dialog-footer-gap: .5rem,\n  ),\n  $dialog-tokens\n);\n// scss-docs-end dialog-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start dialog-sizes\n$dialog-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$dialog-sizes: defaults(\n  (\n    sm: 280px,\n    lg: 800px,\n    xl: 1140px,\n  ),\n  $dialog-sizes\n);\n// scss-docs-end dialog-sizes\n\n@layer components {\n  // Prevent body scroll when dialog is open\n  .dialog-open {\n    overflow: hidden;\n    scrollbar-gutter: stable;\n  }\n\n  .dialog {\n    @include tokens($dialog-tokens);\n\n    // Reset native dialog styles\n    max-width: var(--dialog-width);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    color: var(--dialog-color);\n    background-color: var(--dialog-bg);\n    background-clip: padding-box;\n    border: var(--dialog-border-width) solid var(--dialog-border-color);\n    @include border-radius(var(--dialog-border-radius));\n    @include box-shadow(var(--dialog-box-shadow));\n\n    // Native backdrop styling via ::backdrop pseudo-element\n    &::backdrop {\n      background-color: var(--dialog-backdrop-bg);\n      backdrop-filter: blur(var(--dialog-backdrop-blur));\n    }\n\n    // Animation support using native [open] attribute\n    &.fade {\n      opacity: 0;\n      @include transition(opacity .15s linear);\n\n      &::backdrop {\n        opacity: 0;\n        @include transition(opacity .15s linear);\n      }\n\n      &[open] {\n        opacity: 1;\n\n        &::backdrop {\n          opacity: 1;\n        }\n      }\n    }\n\n    // Static backdrop \"bounce\" animation (modal dialogs only)\n    &.dialog-static {\n      transform: scale(1.02);\n    }\n\n    // Non-modal dialog positioning\n    // show() doesn't use the top layer, so we need explicit positioning and z-index\n    &.dialog-nonmodal {\n      position: fixed;\n      inset-block-start: 50%;\n      inset-inline-start: 50%;\n      z-index: $zindex-dialog;\n      margin-inline: 0;\n      transform: translate(-50%, -50%);\n    }\n\n    // Overflow dialog - scrollable viewport container with dialog box inside\n    &.dialog-overflow {\n      // Make dialog element the full-viewport scrollable container\n      position: fixed;\n      inset: 0;\n      width: 100%;\n      max-width: 100%;\n      height: 100%;\n      max-height: 100%;\n      padding: var(--dialog-margin);\n      margin: 0;\n      overflow-y: auto;\n      overscroll-behavior: contain;\n      background: transparent;\n      border: 0;\n      box-shadow: none;\n\n      // The visual dialog box is a child wrapper\n      > .dialog-box {\n        max-width: var(--dialog-width);\n        margin-block-end: var(--dialog-margin);\n        margin-inline: auto;\n        color: var(--dialog-color);\n        background-color: var(--dialog-bg);\n        background-clip: padding-box;\n        border: var(--dialog-border-width) solid var(--dialog-border-color);\n        @include border-radius(var(--dialog-border-radius));\n        @include box-shadow(var(--dialog-box-shadow));\n      }\n    }\n\n    // Scrollable dialog body (header/footer stay fixed)\n    &.dialog-scrollable[open] {\n      display: flex;\n      flex-direction: column;\n      max-height: calc(100% - var(--dialog-margin) * 2);\n\n      .dialog-body {\n        overflow-y: auto;\n      }\n    }\n  }\n\n  // Dialog sizes\n  @each $size, $value in $dialog-sizes {\n    .dialog-#{$size} { --dialog-width: #{$value}; }\n  }\n\n  // Fullscreen dialog\n  .dialog-fullscreen {\n    --dialog-width: 100vw;\n    --dialog-margin: 0;\n    --dialog-border-radius: 0;\n\n    width: 100%;\n    max-width: none;\n    height: 100%;\n    max-height: none;\n  }\n\n  // Responsive fullscreen dialogs\n  @each $breakpoint in map.keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    $postfix: if(sass($infix != \"\"): #{$infix}-down; else: \"\");\n\n    @if $postfix != \"\" {\n      @include media-breakpoint-down($breakpoint) {\n        .dialog-fullscreen#{$postfix} {\n          --dialog-width: 100vw;\n          --dialog-margin: 0;\n          --dialog-border-radius: 0;\n\n          width: 100%;\n          max-width: none;\n          height: 100%;\n          max-height: none;\n        }\n      }\n    }\n  }\n\n  // Dialog header\n  .dialog-header {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    padding: var(--dialog-header-padding);\n    border-block-end: var(--dialog-header-border-width) solid var(--dialog-header-border-color);\n\n    .btn-close {\n      margin-inline-start: auto;\n    }\n  }\n\n  // Dialog title\n  .dialog-title {\n    margin-bottom: 0;\n    font-size: var(--font-size-md);\n    line-height: 1.5;\n  }\n\n  // Dialog body\n  .dialog-body {\n    position: relative;\n    flex: 1 1 auto;\n    padding: var(--dialog-padding);\n    overflow-y: auto;\n  }\n\n  // Dialog footer\n  .dialog-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: var(--dialog-footer-gap);\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--dialog-footer-padding);\n    border-block-start: var(--dialog-footer-border-width) solid var(--dialog-footer-border-color);\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable scss/dollar-variable-default, custom-property-no-missing-var-function\n$menu-tokens: () !default;\n\n// scss-docs-start menu-tokens\n$menu-tokens: defaults(\n  (\n    --menu-zindex: #{$zindex-menu},\n    --menu-gap: .125rem,\n    --menu-min-width: 10rem,\n    --menu-padding-x: .25rem,\n    --menu-padding-y: .25rem,\n    --menu-spacer: .125rem,\n    --menu-font-size: var(--font-size-sm),\n    --menu-color: var(--fg-body),\n    --menu-bg: var(--bg-body),\n    // --menu-border-color: var(--border-color-translucent),\n    // --menu-border-radius: var(--border-radius-lg),\n    // --menu-border-width: var(--border-width),\n    --menu-box-shadow: var(--box-shadow),\n    // --menu-max-height: none,\n    --menu-divider-bg: var(--border-color-translucent),\n    --menu-divider-margin-y: .125rem,\n    --menu-divider-margin-x: .25rem,\n    --menu-item-color: var(--fg-body),\n    --menu-item-hover-color: var(--fg-body),\n    --menu-item-hover-bg: var(--bg-1),\n    --menu-item-active-color: var(--primary-contrast),\n    --menu-item-active-bg: var(--primary-bg),\n    --menu-item-disabled-color: var(--fg-3),\n    --menu-item-gap: .5rem,\n    --menu-item-padding-x: .75rem,\n    --menu-item-padding-y: .25rem,\n    --menu-item-border-radius: var(--border-radius),\n    --menu-icon-size: 1rem,\n    --menu-image-size: 1.5rem,\n    --menu-description-color: var(--fg-3),\n    --menu-description-font-size: var(--font-size-xs),\n    --menu-check-color: currentcolor,\n    --menu-header-color: var(--fg-2),\n    --menu-header-padding-x: .75rem,\n    --menu-header-padding-y: .25rem,\n  ),\n  $menu-tokens\n);\n// scss-docs-end menu-tokens\n\n// stylelint-enable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n@layer components {\n  .menu {\n    @include tokens($menu-tokens);\n\n    position: absolute;\n    z-index: var(--menu-zindex);\n    display: none;\n    flex-direction: column;\n    gap: var(--menu-gap);\n    min-width: var(--menu-min-width);\n    max-height: var(--menu-max-height, none);\n    padding: var(--menu-padding-y) var(--menu-padding-x);\n    margin: 0;\n    overflow-y: var(--menu-overflow-y, initial);\n    overscroll-behavior: contain;\n    font-size: var(--menu-font-size);\n    color: var(--menu-color);\n    text-align: start;\n    list-style: none;\n    background-color: var(--menu-bg);\n    background-clip: padding-box;\n    border: var(--menu-border-width, var(--border-width)) solid var(--menu-border-color, var(--border-color-translucent));\n    @include border-radius(var(--menu-border-radius, var(--border-radius-lg)));\n    @include box-shadow(var(--menu-box-shadow));\n\n    &.show {\n      display: flex;\n    }\n  }\n\n  .menu-scrollable {\n    --menu-max-height: 80dvh;\n    --menu-overflow-y: auto;\n  }\n\n  .menu-translucent {\n    --menu-item-hover-bg-light: color-mix(in oklch, var(--bg-1) 90%, transparent);\n    --menu-item-hover-bg-dark: color-mix(in oklch, var(--bg-1) 80%, transparent);\n\n    --menu-item-active-bg-light: color-mix(in oklch, var(--primary-bg) 80%, transparent);\n    --menu-item-active-bg-dark: color-mix(in oklch, var(--primary-bg) 70%, transparent);\n\n    --menu-item-active-bg: light-dark(var(--menu-item-active-bg-light), var(--menu-item-active-bg-dark));\n    --menu-item-hover-bg: light-dark(var(--menu-item-hover-bg-light), var(--menu-item-hover-bg-dark));\n\n    background-color: color-mix(in oklch, var(--menu-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n\n  .menu-divider {\n    height: 0;\n    margin: var(--menu-divider-margin-y) var(--menu-divider-margin-x);\n    overflow: hidden;\n    border-block-start: 1px solid var(--menu-divider-bg);\n    opacity: 1;\n  }\n\n  .menu-item {\n    display: flex;\n    gap: var(--menu-item-gap);\n    align-items: center;\n    width: 100%;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    font-weight: var(--menu-item-font-weight, var(--font-weight-normal));\n    color: var(--theme-text, var(--menu-item-color));\n    text-align: inherit;\n    text-decoration: none;\n    white-space: nowrap;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    @include border-radius(var(--menu-item-border-radius, 0));\n\n    &:hover,\n    &:focus {\n      color: var(--theme-text, var(--menu-item-hover-color));\n      @include gradient-bg(var(--theme-bg-subtle, var(--menu-item-hover-bg)));\n    }\n\n    &.active,\n    &:active {\n      color: var(--theme-contrast, var(--menu-item-active-color));\n      @include gradient-bg(var(--theme-bg, var(--menu-item-active-bg)));\n    }\n\n    &.selected {\n      font-weight: $font-weight-semibold;\n    }\n\n    &.disabled,\n    &:disabled {\n      color: var(--menu-item-disabled-color);\n      pointer-events: none;\n      background-color: transparent;\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n    }\n  }\n\n  .menu-item-icon {\n    flex-shrink: 0;\n    align-self: flex-start;\n    width: var(--menu-icon-size);\n    height: auto;\n    margin-top: .125rem;\n  }\n\n  .menu-image {\n    width: var(--menu-image-size);\n    height: var(--menu-image-size);\n    object-fit: cover;\n    @include border-radius(var(--border-radius-sm));\n  }\n\n  .menu-item-content {\n    display: flex;\n    flex: 1;\n    flex-direction: column;\n    min-width: 0;\n  }\n\n  .menu-item-description {\n    font-size: var(--menu-description-font-size);\n    color: var(--menu-description-color);\n  }\n\n  .menu-item-check {\n    flex-shrink: 0;\n    margin-inline-start: auto;\n    color: var(--menu-check-color);\n    visibility: hidden;\n\n    .selected > & {\n      visibility: visible;\n    }\n  }\n\n  .menu-header {\n    display: block;\n    padding: var(--menu-header-padding-y) var(--menu-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--font-size-sm);\n    color: var(--menu-header-color);\n    white-space: nowrap;\n  }\n\n  .menu-text {\n    display: block;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    color: var(--fg-2);\n  }\n\n  // scss-docs-start submenu\n  .submenu {\n    position: relative;\n\n    > .menu-item {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n\n    > .menu-item::after {\n      display: inline-block;\n      flex-shrink: 0;\n      width: .375em;\n      height: .375em;\n      margin-inline-start: auto;\n      content: \"\";\n      border-color: currentcolor;\n      border-style: solid;\n      border-width: 0 .125em .125em 0;\n      transform: rotate(-45deg);\n\n      [dir=\"rtl\"] & {\n        transform: rotate(135deg);\n      }\n    }\n\n    > .menu {\n      top: 0;\n      margin-top: calc(-1 * var(--menu-padding-y));\n    }\n\n    &:hover > .menu-item,\n    &:focus-within > .menu-item {\n      color: var(--menu-item-hover-color);\n      background-color: var(--menu-item-hover-bg);\n    }\n\n    &.show > .menu-item {\n      color: var(--menu-item-hover-color);\n      background-color: var(--menu-item-hover-bg);\n    }\n  }\n\n  // Mobile stacking: submenu covers the parent menu in-place\n  @media (max-width: 575.98px) {\n    .submenu:has(.submenu-stacked) {\n      position: static;\n    }\n\n    .submenu-stacked {\n      position: absolute;\n      inset: 0;\n      z-index: 1;\n      display: flex;\n      flex-direction: column;\n      gap: var(--menu-gap);\n      min-width: 0;\n      padding: var(--menu-padding-y) var(--menu-padding-x);\n      background-color: var(--menu-bg);\n      border: 0;\n      @include border-radius(0);\n      box-shadow: none;\n    }\n\n    .submenu-back {\n      display: flex;\n      gap: var(--menu-item-gap);\n      align-items: center;\n      padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n      font-weight: var(--font-weight-semibold, 600);\n      color: var(--menu-item-color);\n\n      &::before {\n        display: inline-block;\n        flex-shrink: 0;\n        width: .375em;\n        height: .375em;\n        content: \"\";\n        border-color: currentcolor;\n        border-style: solid;\n        border-width: .125em 0 0 .125em;\n        transform: rotate(-45deg);\n\n        [dir=\"rtl\"] & {\n          border-width: 0 .125em .125em 0;\n        }\n      }\n    }\n\n    .submenu-dimmed {\n      pointer-events: none;\n      filter: blur(2px);\n      opacity: .3;\n    }\n  }\n  // scss-docs-end submenu\n}\n","@use \"sass:map\";\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/tokens\" as *;\n\n$list-group-tokens: () !default;\n\n// scss-docs-start list-group-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$list-group-tokens: defaults(\n  (\n    --list-group-color: var(--fg-body),\n    --list-group-bg: var(--bg-body),\n    --list-group-border-color: var(--border-color),\n    --list-group-border-width: var(--border-width),\n    --list-group-border-radius: var(--border-radius),\n    --list-group-item-padding-x: #{$spacer},\n    --list-group-item-padding-y: #{$spacer * .5},\n    --list-group-action-color: var(--fg-2),\n    --list-group-action-hover-color: var(--fg-1),\n    --list-group-action-hover-bg: var(--bg-1),\n    --list-group-action-active-color: var(--fg-body),\n    --list-group-action-active-bg: var(--bg-2),\n    --list-group-disabled-color: var(--fg-3),\n    --list-group-disabled-bg: var(--bg-body),\n    --list-group-active-color: var(--primary-contrast),\n    --list-group-active-bg: var(--primary-bg),\n    --list-group-active-border-color: var(--primary-bg),\n  ),\n  $list-group-tokens\n);\n// scss-docs-end list-group-tokens\n\n@layer components {\n  .list-group {\n    @include tokens($list-group-tokens);\n\n    display: flex;\n    flex-direction: column;\n\n    // No need to set list-style: none; since .list-group-item is block level\n    padding-inline-start: 0; // reset padding because ul and ol\n    margin-bottom: 0;\n    @include border-radius(var(--list-group-border-radius));\n  }\n\n  .list-group-numbered {\n    list-style-type: none;\n    counter-reset: section;\n\n    > .list-group-item::before {\n      // Increments only this instance of the section counter\n      content: counters(section, \".\") \". \";\n      counter-increment: section;\n    }\n  }\n\n  // Individual list items\n  //\n  // Use on `li`s or `div`s within the `.list-group` parent.\n\n  .list-group-item {\n    position: relative;\n    display: block;\n    padding: var(--list-group-item-padding-y) var(--list-group-item-padding-x);\n    color: var(--theme-text, var(--list-group-color));\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    text-decoration: if(sass($link-decoration == none): null);\n    background-color: var(--theme-bg-subtle, var(--list-group-bg));\n    border: var(--list-group-border-width) solid var(--theme-border, var(--list-group-border-color));\n\n    &:first-child {\n      @include border-top-radius(inherit);\n    }\n\n    &:last-child {\n      @include border-bottom-radius(inherit);\n    }\n\n    &.disabled,\n    &:disabled {\n      color: var(--list-group-disabled-color);\n      pointer-events: none;\n      background-color: var(--list-group-disabled-bg);\n    }\n\n    // Include both here for `<a>`s and `<button>`s\n    &.active {\n      z-index: 2; // Place active items above their siblings for proper border styling\n      color: var(--list-group-active-color);\n      background-color: var(--list-group-active-bg);\n      border-color: var(--list-group-active-border-color);\n    }\n\n    // stylelint-disable-next-line scss/selector-no-redundant-nesting-selector\n    & + .list-group-item {\n      border-block-start-width: 0;\n\n      &.active {\n        margin-top: calc(-1 * var(--list-group-border-width));\n        border-block-start-width: var(--list-group-border-width);\n      }\n    }\n  }\n\n  // Interactive list items\n  //\n  // Use anchor or button elements instead of `li`s or `div`s to create interactive\n  // list items. Includes an extra `.active` modifier class for selected items.\n\n  .list-group-item-action {\n    width: 100%; // For `<button>`s (anchors become 100% by default though)\n    color: var(--theme-text, var(--list-group-action-color));\n    text-align: inherit; // For `<button>`s (anchors inherit)\n    text-decoration: none;\n\n    &:not(.active) {\n      // Hover state\n      &:hover,\n      &:focus {\n        z-index: 1; // Place hover/focus items above their siblings for proper border styling\n        color: var(--theme-text-emphasis, var(--list-group-action-hover-color));\n        text-decoration: none;\n        background-color: var(--theme-bg-muted, var(--list-group-action-hover-bg));\n      }\n\n      &:active {\n        color: var(--theme-text-emphasis, var(--list-group-action-active-color));\n        background-color: var(--theme-bg-muted, var(--list-group-action-active-bg));\n      }\n    }\n  }\n\n  // Horizontal\n  //\n  // Change the layout of list group items from vertical (default) to horizontal.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      .list-group-horizontal#{$infix} {\n        flex-direction: row;\n\n        > .list-group-item {\n          &:first-child:not(:last-child) {\n            @include border-bottom-start-radius(var(--list-group-border-radius));\n            @include border-top-end-radius(0);\n          }\n\n          &:last-child:not(:first-child) {\n            @include border-top-end-radius(var(--list-group-border-radius));\n            @include border-bottom-start-radius(0);\n          }\n\n          &.active {\n            margin-top: 0;\n          }\n\n          + .list-group-item {\n            border-block-start-width: var(--list-group-border-width);\n            border-inline-start-width: 0;\n\n            &.active {\n              margin-inline-start: calc(-1 * var(--list-group-border-width));\n              border-inline-start-width: var(--list-group-border-width);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  // Flush list items\n  //\n  // Remove borders and border-radius to keep list group items edge-to-edge. Most\n  // useful within other components (e.g., cards).\n\n  .list-group-flush {\n    @include border-radius(0);\n\n    > .list-group-item {\n      border-width: 0 0 var(--list-group-border-width);\n\n      &:last-child {\n        border-block-end-width: 0;\n      }\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"config\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/tokens\" as *;\n@use \"mixins/transition\" as *;\n\n$nav-tokens: () !default;\n\n// scss-docs-start nav-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-tokens: defaults(\n  (\n    --nav-gap: .125rem,\n    --nav-link-gap: .5rem,\n    --nav-link-align: center,\n    --nav-link-justify: center,\n    --nav-link-padding-x: .75rem,\n    --nav-link-padding-y: .375rem,\n    --nav-link-color: var(--fg-2),\n    --nav-link-hover-color: var(--fg-1),\n    --nav-link-hover-bg: var(--bg-1),\n    --nav-link-active-color: var(--fg-body),\n    --nav-link-active-bg: var(--bg-2),\n    --nav-link-disabled-color: var(--fg-4),\n    --nav-link-border-width: var(--border-width),\n    --nav-link-transition-property: \"color, background-color, border-color\",\n    --nav-link-transition-timing: .15s ease-in-out,\n    --nav-link-transition: var(--nav-link-transition-property) var(--nav-link-transition-timing),\n  ),\n  $nav-tokens\n);\n// scss-docs-end nav-tokens\n\n$nav-tabs-tokens: () !default;\n\n// scss-docs-start nav-tabs-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-tabs-tokens: defaults(\n  (\n    --nav-tabs-border-width: var(--border-width),\n    --nav-tabs-border-color: var(--border-color),\n    --nav-tabs-border-radius: var(--border-radius),\n    --nav-tabs-link-hover-border-color: var(--border-subtle),\n    --nav-tabs-link-active-color: var(--fg-color),\n    --nav-tabs-link-active-bg: var(--bg-body),\n    --nav-tabs-link-active-border-color: var(--border-color) var(--border-color) var(--bg-body),\n  ),\n  $nav-tabs-tokens\n);\n// scss-docs-end nav-tabs-tokens\n\n$nav-pills-tokens: () !default;\n\n// scss-docs-start nav-pills-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-pills-tokens: defaults(\n  (\n    --nav-pills-link-active-color: var(--primary-contrast),\n    --nav-pills-link-active-bg: var(--primary-bg),\n  ),\n  $nav-pills-tokens\n);\n// scss-docs-end nav-pills-tokens\n\n$nav-underline-tokens: () !default;\n\n// scss-docs-start nav-underline-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-underline-tokens: defaults(\n  (\n    --nav-gap: 1rem,\n    --nav-link-active-bg: transparent,\n    --nav-underline-border-width: .125rem,\n    --nav-underline-link-active-color: var(--fg-color),\n  ),\n  $nav-underline-tokens\n);\n// scss-docs-end nav-underline-tokens\n\n// Base class\n//\n// Kickstart any navigation component with a set of style resets. Works with\n// `<nav>`s, `<ul>`s or `<ol>`s.\n\n@layer components {\n  .nav {\n    @include tokens($nav-tokens);\n\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style: none;\n  }\n\n  .nav-item {\n    display: flex;\n  }\n\n  .nav-link {\n    display: flex;\n    gap: var(--nav-link-gap);\n    align-items: var(--nav-link-align);\n    justify-content: var(--nav-link-justify);\n    padding: var(--nav-link-padding-y) var(--nav-link-padding-x);\n    font-weight: var(--nav-link-font-weight);\n    color: var(--nav-link-color);\n    text-decoration: none;\n    white-space: nowrap;\n    background: none;\n    border: var(--nav-link-border-width) solid transparent;\n    @include border-radius(var(--border-radius));\n    @include transition(var(--nav-link-transition));\n\n    &:hover,\n    &:focus {\n      color: var(--nav-link-hover-color);\n      background-color: var(--nav-link-hover-bg);\n    }\n\n    &:focus-visible {\n      --focus-ring-offset: 1px;\n      color: var(--nav-link-hover-color);\n      @include focus-ring(true);\n    }\n\n    &.active,\n    &:active {\n      color: var(--nav-link-active-color);\n      background-color: var(--nav-link-active-bg);\n    }\n\n    // Disabled state lightens text\n    &.disabled,\n    &:disabled {\n      color: var(--nav-link-disabled-color);\n      pointer-events: none;\n      cursor: default;\n    }\n  }\n\n  //\n  // Tabs\n  //\n\n  .nav-tabs {\n    // scss-docs-start nav-tabs-css-vars\n    @include tokens($nav-tabs-tokens);\n    // scss-docs-end nav-tabs-css-vars\n\n    box-shadow: inset 0 calc(-1 * var(--nav-tabs-border-width)) 0 var(--nav-tabs-border-color);\n\n    .nav-link {\n      border: var(--nav-tabs-border-width) solid transparent;\n      border-bottom-color: var(--nav-tabs-border-color);\n      @include border-bottom-radius(0);\n\n      &:hover {\n        // Prevents active .nav-link tab overlapping focus outline of previous/next .nav-link\n        isolation: isolate;\n        border-color: var(--nav-tabs-link-hover-border-color);\n        border-bottom-color: var(--nav-tabs-border-color);\n      }\n    }\n\n    .nav-link.active,\n    .nav-item.show .nav-link {\n      color: var(--nav-tabs-link-active-color);\n      background-color: var(--nav-tabs-link-active-bg);\n      border-color: var(--nav-tabs-link-active-border-color);\n      border-bottom-color: var(--nav-tabs-link-active-bg);\n    }\n\n    .menu {\n      margin-top: calc(-1 * var(--nav-tabs-border-width));\n      @include border-top-radius(0);\n    }\n  }\n\n  //\n  // Pills\n  //\n\n  .nav-pills {\n    // scss-docs-start nav-pills-css-vars\n    @include tokens($nav-pills-tokens);\n    // scss-docs-end nav-pills-css-vars\n\n    .nav-link.active,\n    .show > .nav-link {\n      color: var(--nav-pills-link-active-color);\n      @include gradient-bg(var(--nav-pills-link-active-bg));\n    }\n  }\n\n  //\n  // Underline\n  //\n\n  .nav-underline {\n    // scss-docs-start nav-underline-css-vars\n    @include tokens($nav-underline-tokens);\n    // scss-docs-end nav-underline-css-vars\n\n    .nav-link {\n      padding-inline: 0;\n      border: 0;\n      border-block-end: var(--nav-underline-border-width) solid transparent;\n      @include border-radius(0);\n\n      &:hover,\n      &:focus {\n        border-block-end-color: currentcolor;\n      }\n    }\n\n    .nav-link.active,\n    .show > .nav-link {\n      font-weight: $font-weight-bold;\n      color: var(--nav-underline-link-active-color);\n      border-block-end-color: currentcolor;\n    }\n  }\n\n  //\n  // Justified variants\n  //\n\n  .nav-fill {\n    > .nav-link,\n    .nav-item {\n      flex: 1 1 auto;\n      text-align: center;\n    }\n  }\n\n  .nav-justified {\n    > .nav-link,\n    .nav-item {\n      flex-grow: 1;\n      flex-basis: 0;\n      text-align: center;\n    }\n  }\n\n  .nav-fill,\n  .nav-justified {\n    .nav-item .nav-link {\n      width: 100%; // Make sure button will grow\n    }\n  }\n\n  // Tabbable tabs\n  //\n  // Hide tabbable panes to start, show them when `.active`\n\n  .tab-content {\n    > .tab-pane {\n      display: none;\n    }\n    > .active {\n      display: block;\n    }\n  }\n}\n","// Nav Overflow (Priority+ Pattern)\n//\n// A responsive navigation pattern that automatically moves items\n// to an overflow menu when space is limited.\n\n@layer components {\n  .nav-overflow {\n    flex-wrap: nowrap;\n    min-width: 0; // Allow flex child to shrink below content width\n  }\n\n  // Container item for overflow\n  .nav-overflow-item {\n    flex-shrink: 0;\n    margin-inline-start: auto;\n  }\n\n  // Hide items that have been moved to overflow\n  .nav-overflow [data-bs-nav-overflow=\"true\"] {\n    display: none;\n  }\n\n  // Preserve items that should never overflow\n  .nav-overflow-keep {\n    flex-shrink: 0;\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/tokens\" as *;\n@use \"mixins/transition\" as *;\n\n// mdo-do: fix nav-link-height and navbar-brand-height, which we previously calculated with font-size, line-height, and block padding\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start navbar-breakpoints\n$navbar-breakpoints: $breakpoints !default;\n// scss-docs-end navbar-breakpoints\n\n$navbar-tokens: () !default;\n$navbar-dark-tokens: () !default;\n$navbar-nav-tokens: () !default;\n\n// scss-docs-start navbar-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-tokens: defaults(\n  (\n    --navbar-padding-x: 0,\n    --navbar-padding-y: .5rem,\n    --navbar-color: var(--fg-2),\n    --navbar-hover-color: var(--fg-1),\n    --navbar-disabled-color: var(--fg-3),\n    --navbar-active-color: var(--fg-body),\n    --navbar-brand-padding-y: .75rem,\n    --navbar-brand-margin-end: 1rem,\n    --navbar-brand-font-size: var(--font-size-md),\n    --navbar-brand-font-weight: var(--font-weight-medium),\n    --navbar-brand-color: var(--fg-body),\n    --navbar-brand-hover-color: var(--fg-body),\n    --navbar-nav-link-padding-x: .75rem,\n    --navbar-toggler-width: 2rem,\n    --navbar-toggler-padding-y: .25rem,\n    --navbar-toggler-padding-x: .75rem,\n    --navbar-toggler-font-size: var(--font-size-lg),\n    --navbar-toggler-border-color: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    --navbar-toggler-border-radius: var(--border-radius),\n    --navbar-toggler-transition: box-shadow .15s ease-in-out,\n  ),\n  $navbar-tokens\n);\n// scss-docs-end navbar-tokens\n\n// scss-docs-start navbar-dark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-dark-tokens: defaults(\n  (\n    --navbar-color: color-mix(in oklch, var(--white) .55, transparent),\n    --navbar-hover-color: color-mix(in oklch, var(--white) .75, transparent),\n    --navbar-disabled-color: color-mix(in oklch, var(--white) .25, transparent),\n    --navbar-active-color: var(--white),\n    --navbar-brand-color: var(--white),\n    --navbar-brand-hover-color: var(--white),\n    --navbar-toggler-border-color: color-mix(in oklch, var(--white) .1, transparent),\n  ),\n  $navbar-dark-tokens\n);\n// scss-docs-end navbar-dark-tokens\n\n// scss-docs-start navbar-nav-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-nav-tokens: defaults(\n  (\n    --nav-gap: .25rem,\n    --nav-link-gap: .5rem,\n    --nav-link-padding-x: .5rem,\n    --nav-link-padding-y: .375rem,\n    --nav-link-color: var(--navbar-color),\n    --nav-link-border-width: var(--border-width),\n    //--nav-link-border-color: var(--border-color),\n    --nav-link-hover-color: var(--navbar-hover-color),\n    --nav-link-hover-bg: transparent,\n    --nav-link-active-color: var(--navbar-active-color),\n    --nav-link-active-bg: transparent,\n    --nav-link-disabled-color: var(--navbar-disabled-color),\n  ),\n  $navbar-nav-tokens\n);\n// scss-docs-end navbar-nav-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  // Base navbar\n  .navbar {\n    @include tokens($navbar-tokens);\n\n    position: relative;\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: space-between;\n    padding: var(--navbar-padding-y) var(--navbar-padding-x);\n    @include set-container();\n    color: var(--navbar-color, var(--fg-body));\n    @include gradient-bg(var(--navbar-bg, var(--bg-body)));\n\n    // Container properties for nested containers\n    %container-flex-properties {\n      display: flex;\n      flex-wrap: inherit;\n      align-items: center;\n      justify-content: space-between;\n    }\n\n    > .container,\n    > .container-fluid {\n      @extend %container-flex-properties;\n    }\n\n    @each $breakpoint, $container-max-width in $container-max-widths {\n      > .container#{breakpoint-infix($breakpoint, $container-max-widths)} {\n        @extend %container-flex-properties;\n      }\n    }\n  }\n\n  // Navbar brand\n  //\n  // Used for brand, project, or site names.\n  .navbar-brand {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    margin-inline-end: var(--navbar-brand-margin-end);\n    font-size: var(--navbar-brand-font-size);\n    font-weight: var(--navbar-brand-font-weight);\n    color: var(--navbar-brand-color);\n    text-decoration: none;\n    white-space: nowrap;\n\n    &:hover,\n    &:focus {\n      color: var(--navbar-brand-hover-color);\n    }\n  }\n\n  // Navigation within navbars. Sets all nav-link CSS variables needed for\n  // proper styling.\n  //\n  // Relies on `.nav` base class.\n  .navbar-nav {\n    @include tokens($navbar-nav-tokens);\n\n    display: flex;\n    flex-direction: column;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style: none;\n\n    .nav-link {\n      &.active,\n      &.show {\n        color: var(--navbar-active-color);\n        border: var(--nav-link-border-width) solid var(--nav-link-border-color, transparent);\n      }\n    }\n  }\n\n  // Navbar text\n  //\n  // For adding text or inline elements to the navbar\n  .navbar-text {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    color: var(--navbar-color);\n\n    a,\n    a:hover,\n    a:focus {\n      color: var(--navbar-active-color);\n    }\n  }\n\n  // Button for toggling the navbar when in its collapsed state\n  .navbar-toggler {\n    --btn-bg: transparent;\n    --btn-hover-bg: var(--bg-2);\n  }\n\n  // scss-docs-start navbar-expand-loop\n  // Generate series of `.navbar-expand-*` responsive classes for configuring\n  // where your navbar collapses and expands. Uses container queries so the\n  // navbar responds to its own width, not the viewport width.\n\n  // Mixin for expanded state styles (applied to descendants)\n  @mixin navbar-expanded {\n    // Style the inner container since we can't style .navbar itself with container queries\n    > .container,\n    > .container-fluid,\n    %navbar-expand-container {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n\n    .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n\n    .navbar-toggler {\n      display: none !important; // stylelint-disable-line declaration-no-important\n    }\n\n    .offcanvas {\n      // stylelint-disable declaration-no-important\n      position: static;\n      z-index: auto;\n      flex-grow: 1;\n      width: auto !important;\n      height: auto !important;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      @include box-shadow(none);\n      @include transition(none);\n      // stylelint-enable declaration-no-important\n\n      .offcanvas-header {\n        display: none;\n      }\n\n      .offcanvas-body {\n        display: flex;\n        flex-grow: 0;\n        flex-direction: row;\n        align-items: center;\n        padding: 0;\n        overflow-y: visible;\n      }\n    }\n  }\n\n  // Always expanded (no responsive behavior)\n  .navbar-expand {\n    @include navbar-expanded();\n\n    // Also set on navbar itself for non-responsive case\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n\n  // Responsive navbar expand classes using container queries\n  @include loop-breakpoints-down($navbar-breakpoints) using ($breakpoint, $next, $infix) {\n    @if $next {\n      .navbar-expand#{$infix} {\n        @include container-breakpoint-up($next) {\n          @include navbar-expanded();\n        }\n      }\n    }\n  }\n  // scss-docs-end navbar-expand-loop\n\n  .navbar[data-bs-theme=\"dark\"] {\n    @include tokens($navbar-dark-tokens);\n  }\n}\n","@use \"functions\" as *;\n@use \"config\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/backdrop\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$offcanvas-tokens: () !default;\n\n// scss-docs-start offcanvas-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$offcanvas-tokens: defaults(\n  (\n    --offcanvas-inset: var(--spacer),\n    --offcanvas-zindex: #{$zindex-offcanvas},\n    --offcanvas-width: 400px,\n    --offcanvas-height: 30vh,\n    --offcanvas-padding-x: var(--spacer),\n    --offcanvas-padding-y: var(--spacer),\n    --offcanvas-color: var(--fg-body),\n    --offcanvas-bg: var(--bg-body),\n    --offcanvas-border-width: var(--border-width),\n    --offcanvas-border-color: var(--border-color-translucent),\n    --offcanvas-border-radius: var(--border-radius-lg),\n    --offcanvas-box-shadow: var(--box-shadow-lg),\n    --offcanvas-transition: transform .3s ease-in-out,\n    --offcanvas-title-line-height: 1.5,\n  ),\n  $offcanvas-tokens\n);\n// scss-docs-end offcanvas-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n$offcanvas-backdrop-tokens: () !default;\n\n// scss-docs-start offcanvas-backdrop-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$offcanvas-backdrop-tokens: defaults(\n  (\n    --offcanvas-backdrop-bg: var(--bg-body),\n    --offcanvas-backdrop-opacity: 25%,\n    --offcanvas-backdrop-blur: 8px,\n  ),\n  $offcanvas-backdrop-tokens\n);\n// scss-docs-end offcanvas-backdrop-tokens\n\n%offcanvas-css-vars {\n  @include tokens($offcanvas-tokens);\n}\n\n@layer components {\n  // Apply CSS vars to all offcanvas responsive variants\n  @include loop-breakpoints-down() using ($breakpoint, $next, $infix) {\n    .offcanvas#{$infix} {\n      @extend %offcanvas-css-vars;\n    }\n  }\n\n  // Responsive offcanvas styles\n  @include loop-breakpoints-down() using ($breakpoint, $next, $infix) {\n    .offcanvas#{$infix} {\n      @include media-breakpoint-down($next) {\n        position: fixed;\n        z-index: var(--offcanvas-zindex);\n        display: flex;\n        flex-direction: column;\n        max-width: calc(100% - var(--offcanvas-inset) * 2);\n        max-height: calc(100% - var(--offcanvas-inset) * 2);\n        color: var(--offcanvas-color);\n        visibility: hidden;\n        background-color: var(--offcanvas-bg);\n        background-clip: padding-box;\n        border: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n        @include border-radius(var(--offcanvas-border-radius));\n        outline: 0;\n        @include box-shadow(var(--offcanvas-box-shadow));\n        @include transition(var(--offcanvas-transition));\n\n        // Placement: Start (left in LTR, right in RTL)\n        &.offcanvas-start {\n          inset-block: var(--offcanvas-inset);\n          inset-inline-start: var(--offcanvas-inset);\n          width: var(--offcanvas-width);\n          transform: translateX(-100%);\n\n          :root:dir(rtl) & {\n            transform: translateX(100%);\n          }\n        }\n\n        // Placement: End (right in LTR, left in RTL)\n        &.offcanvas-end {\n          inset-block: var(--offcanvas-inset);\n          inset-inline-end: var(--offcanvas-inset);\n          width: var(--offcanvas-width);\n          transform: translateX(100%);\n\n          :root:dir(rtl) & {\n            transform: translateX(-100%);\n          }\n        }\n\n        // Placement: Top\n        &.offcanvas-top {\n          inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;\n          height: var(--offcanvas-height);\n          transform: translateY(-100%);\n        }\n\n        // Placement: Bottom\n        &.offcanvas-bottom {\n          inset: auto var(--offcanvas-inset) var(--offcanvas-inset);\n          height: var(--offcanvas-height);\n          transform: translateY(100%);\n        }\n\n        // Fullscreen variant - covers entire viewport\n        &.offcanvas-fullscreen {\n          inset: var(--offcanvas-inset);\n          width: auto;\n          max-width: none;\n          height: auto;\n          max-height: none;\n          transform: translateY(100%);\n        }\n\n        // Show/hide states\n        &.showing,\n        &.show:not(.hiding) {\n          transform: none;\n        }\n\n        &.showing,\n        &.hiding,\n        &.show {\n          visibility: visible;\n        }\n      }\n\n      // Above breakpoint - show content inline (for responsive offcanvas)\n      @if not ($infix == \"\") {\n        @include media-breakpoint-up($next) {\n          --offcanvas-height: auto;\n          --offcanvas-border-width: 0;\n          background-color: transparent !important; // stylelint-disable-line declaration-no-important\n\n          .offcanvas-header {\n            display: none;\n          }\n\n          .offcanvas-body {\n            flex-grow: 0;\n            flex-direction: row;\n            padding: 0;\n            overflow-y: visible;\n            background-color: transparent !important; // stylelint-disable-line declaration-no-important\n          }\n        }\n      }\n    }\n  }\n\n  // Backdrop overlay\n  .offcanvas-backdrop {\n    @include tokens($offcanvas-backdrop-tokens);\n    @include overlay-backdrop($zindex-offcanvas-backdrop, var(--offcanvas-backdrop-bg), var(--offcanvas-backdrop-opacity), var(--offcanvas-backdrop-blur));\n  }\n\n  // Header with close button\n  .offcanvas-header {\n    display: flex;\n    align-items: center;\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n\n    .btn-close {\n      padding: calc(var(--offcanvas-padding-y) * .5) calc(var(--offcanvas-padding-x) * .5);\n      margin-inline-start: auto;\n      margin-inline-end: calc(-.5 * var(--offcanvas-padding-x));\n      margin-top: calc(-.5 * var(--offcanvas-padding-y));\n      margin-bottom: calc(-.5 * var(--offcanvas-padding-y));\n    }\n  }\n\n  // Title\n  .offcanvas-title {\n    margin-bottom: 0;\n    line-height: var(--offcanvas-title-line-height);\n  }\n\n  // Scrollable body\n  .offcanvas-body {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    gap: var(--offcanvas-padding-y);\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n    overflow-y: auto;\n  }\n\n  // Optional footer\n  .offcanvas-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: .5rem;\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);\n    border-block-start: var(--offcanvas-border-width) solid var(--offcanvas-border-color);\n  }\n}\n","// Shared between modals and offcanvases\n@mixin overlay-backdrop($zindex, $backdrop-bg, $backdrop-opacity, $backdrop-blur) {\n  position: fixed;\n  inset: 0;\n  z-index: $zindex;\n  background-color: color-mix(in oklch, var(--offcanvas-backdrop-bg) var(--offcanvas-backdrop-opacity), transparent);\n  @if $backdrop-blur {\n    backdrop-filter: blur($backdrop-blur);\n  }\n\n  // Fade for backdrop\n  &.fade { opacity: 0; }\n  &.show { opacity: 1; }\n}\n","@use \"functions\" as *;\n@use \"mixins/lists\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n// mdo-do: Update pagination to support variant themes\n\n// stylelint-disable custom-property-no-missing-var-function\n$pagination-tokens: () !default;\n\n// scss-docs-start pagination-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$pagination-tokens: defaults(\n  (\n    --pagination-min-height: var(--btn-input-min-height),\n    --pagination-padding-x: var(--btn-input-padding-x),\n    --pagination-padding-y: var(--btn-input-padding-y),\n    --pagination-font-size: var(--btn-input-font-size),\n    --pagination-color: var(--link-color),\n    --pagination-bg: var(--bg-body),\n    --pagination-border-width: var(--border-width),\n    --pagination-border-color: var(--border-color),\n    --pagination-border-radius: var(--btn-input-border-radius),\n    --pagination-hover-color: var(--link-hover-color),\n    --pagination-hover-bg: var(--bg-1),\n    --pagination-hover-border-color: var(--border-color),\n    --pagination-focus-color: var(--link-hover-color),\n    --pagination-focus-bg: var(--bg-2),\n    --pagination-active-color: var(--primary-contrast),\n    --pagination-active-bg: var(--primary-bg),\n    --pagination-active-border-color: var(--primary-bg),\n    --pagination-disabled-color: var(--fg-3),\n    --pagination-disabled-bg: var(--bg-2),\n    --pagination-disabled-border-color: var(--border-color),\n  ),\n  $pagination-tokens\n);\n// scss-docs-end pagination-tokens\n\n// scss-docs-start pagination-sizes\n$pagination-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$pagination-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $pagination-sizes\n);\n// scss-docs-end pagination-sizes\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .pagination {\n    @include tokens($pagination-tokens);\n\n    display: flex;\n    @include list-unstyled();\n  }\n\n  .page-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: var(--pagination-min-height);\n    padding: var(--pagination-padding-y) var(--pagination-padding-x);\n    font-size: var(--pagination-font-size);\n    color: var(--pagination-color);\n    text-decoration: none;\n    background-color: var(--pagination-bg);\n    border: var(--pagination-border-width) solid var(--pagination-border-color);\n    @include transition(color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out);\n\n    &:hover {\n      z-index: 2;\n      color: var(--pagination-hover-color);\n      background-color: var(--pagination-hover-bg);\n      border-color: var(--pagination-hover-border-color);\n    }\n\n    &:focus-visible {\n      z-index: 3;\n      color: var(--pagination-focus-color);\n      background-color: var(--pagination-focus-bg);\n      @include focus-ring(true);\n    }\n\n    &.active,\n    .active > & {\n      z-index: 3;\n      color: var(--pagination-active-color);\n      @include gradient-bg(var(--pagination-active-bg));\n      border-color: var(--pagination-active-border-color);\n    }\n\n    &.disabled,\n    .disabled > & {\n      color: var(--pagination-disabled-color);\n      pointer-events: none;\n      background-color: var(--pagination-disabled-bg);\n      border-color: var(--pagination-disabled-border-color);\n    }\n  }\n\n  .page-item {\n    &:not(:first-child) .page-link {\n      margin-inline-start: calc(-1 * var(--pagination-border-width));\n    }\n\n    &:first-child {\n      .page-link {\n        @include border-start-radius(var(--pagination-border-radius));\n      }\n    }\n\n    &:last-child {\n      .page-link {\n        @include border-end-radius(var(--pagination-border-radius));\n      }\n    }\n  }\n\n  //\n  // Sizing\n  //\n\n  // scss-docs-start pagination-sizes-loop\n  @each $size, $_ in $pagination-sizes {\n    .pagination-#{$size} {\n      --pagination-min-height: var(--bs-btn-input-#{$size}-min-height);\n      --pagination-padding-y: var(--btn-input-#{$size}-padding-y);\n      --pagination-padding-x: var(--btn-input-#{$size}-padding-x);\n      --pagination-font-size: var(--btn-input-#{$size}-font-size);\n      --pagination-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n  // scss-docs-end pagination-sizes-loop\n}\n","@use \"colors\" as *;\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n$placeholder-tokens: () !default;\n\n// scss-docs-start placeholder-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$placeholder-tokens: defaults(\n  (\n    --placeholder-opacity-max: .5,\n    --placeholder-opacity-min: .2,\n  ),\n  $placeholder-tokens\n);\n// scss-docs-end placeholder-tokens\n\n@layer components {\n  .placeholder {\n    @include tokens($placeholder-tokens);\n\n    display: inline-block;\n    min-height: 1em;\n    vertical-align: middle;\n    cursor: wait;\n    background-color: currentcolor;\n    opacity: var(--placeholder-opacity-max);\n\n    &.btn::before {\n      display: inline-block;\n      content: \"\";\n    }\n  }\n\n  // Sizing\n  .placeholder-xs {\n    min-height: .6em;\n  }\n\n  .placeholder-sm {\n    min-height: .8em;\n  }\n\n  .placeholder-lg {\n    min-height: 1.2em;\n  }\n\n  // Animation\n  .placeholder-glow {\n    .placeholder {\n      animation: placeholder-glow 2s ease-in-out infinite;\n    }\n  }\n\n  @keyframes placeholder-glow {\n    50% {\n      opacity: var(--placeholder-opacity-min);\n    }\n  }\n\n  .placeholder-wave {\n    mask-image: linear-gradient(130deg, $black 55%, rgba(0, 0, 0, calc(1 - var(--placeholder-opacity-min))) 75%, $black 95%);\n    mask-size: 200% 100%;\n    animation: placeholder-wave 2s linear infinite;\n  }\n\n  @keyframes placeholder-wave {\n    100% {\n      mask-position: -200% 0%;\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/reset-text\" as *;\n@use \"mixins/tokens\" as *;\n\n$popover-tokens: () !default;\n\n// scss-docs-start popover-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$popover-tokens: defaults(\n  (\n    --popover-zindex: #{$zindex-popover},\n    --popover-max-width: 280px,\n    --popover-font-size: var(--font-size-sm),\n    --popover-bg: var(--bg-body),\n    --popover-border-width: var(--border-width),\n    --popover-border-color: var(--border-color-translucent),\n    --popover-border-radius: var(--border-radius-lg),\n    --popover-inner-border-radius: calc(var(--border-radius-lg) - var(--border-width)),\n    --popover-box-shadow: var(--box-shadow),\n    --popover-header-padding-x: #{$spacer},\n    --popover-header-padding-y: #{$spacer * .75},\n    --popover-header-font-size: var(--font-size-sm),\n    --popover-header-color: #{$headings-color},\n    --popover-header-bg: var(--bg-1),\n    --popover-body-padding-x: #{$spacer},\n    --popover-body-padding-y: #{$spacer * .75},\n    --popover-body-color: var(--fg-body),\n    --popover-arrow-width: 1rem,\n    --popover-arrow-height: .5rem,\n    --popover-arrow-border: var(--popover-border-color),\n  ),\n  $popover-tokens\n);\n// scss-docs-end popover-tokens\n\n@layer components {\n  .popover {\n    // scss-docs-start popover-css-vars\n    @include tokens($popover-tokens);\n    // scss-docs-end popover-css-vars\n\n    z-index: var(--popover-zindex);\n    display: block;\n    max-width: var(--popover-max-width);\n    // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n    // So reset our font and text properties to avoid inheriting weird values.\n    @include reset-text();\n    font-size: var(--popover-font-size);\n    // Allow breaking very long words so they don't overflow the popover's bounds\n    word-wrap: break-word;\n    background-color: var(--popover-bg);\n    background-clip: padding-box;\n    border: var(--popover-border-width) solid var(--popover-border-color);\n    @include border-radius(var(--popover-border-radius));\n    @include box-shadow(var(--popover-box-shadow));\n\n    .popover-arrow {\n      display: block;\n      width: var(--popover-arrow-width);\n      height: var(--popover-arrow-height);\n\n      &::before,\n      &::after {\n        position: absolute;\n        display: block;\n        content: \"\";\n        border-color: transparent;\n        border-style: solid;\n        border-width: 0;\n      }\n    }\n  }\n\n  .bs-popover-top {\n    > .popover-arrow {\n      bottom: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n\n      &::before,\n      &::after {\n        border-width: var(--popover-arrow-height) calc(var(--popover-arrow-width) * .5) 0;\n      }\n\n      &::before {\n        bottom: 0;\n        border-block-start-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        bottom: var(--popover-border-width);\n        border-block-start-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-end {\n    > .popover-arrow {\n      left: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n      width: var(--popover-arrow-height);\n      height: var(--popover-arrow-width);\n\n      &::before,\n      &::after {\n        border-width: calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height) calc(var(--popover-arrow-width) * .5) 0;\n      }\n\n      &::before {\n        left: 0;\n        border-inline-end-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        left: var(--popover-border-width);\n        border-inline-end-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-bottom {\n    > .popover-arrow {\n      top: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n\n      &::before,\n      &::after {\n        border-width: 0 calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height);\n      }\n\n      &::before {\n        top: 0;\n        border-block-end-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        top: var(--popover-border-width);\n        border-block-end-color: var(--popover-bg);\n      }\n    }\n\n    // This will remove the popover-header's border just below the arrow\n    .popover-header::before {\n      position: absolute;\n      top: 0;\n      left: 50%;\n      display: block;\n      width: var(--popover-arrow-width);\n      margin-inline-start: calc(-.5 * var(--popover-arrow-width));\n      content: \"\";\n      border-block-end: var(--popover-border-width) solid var(--popover-header-bg);\n    }\n  }\n\n  .bs-popover-start {\n    > .popover-arrow {\n      right: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n      width: var(--popover-arrow-height);\n      height: var(--popover-arrow-width);\n\n      &::before,\n      &::after {\n        border-width: calc(var(--popover-arrow-width) * .5) 0 calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height);\n      }\n\n      &::before {\n        right: 0;\n        border-inline-start-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        right: var(--popover-border-width);\n        border-inline-start-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-auto {\n    &[data-bs-placement^=\"top\"] {\n      @extend .bs-popover-top;\n    }\n    &[data-bs-placement^=\"right\"] {\n      @extend .bs-popover-end;\n    }\n    &[data-bs-placement^=\"bottom\"] {\n      @extend .bs-popover-bottom;\n    }\n    &[data-bs-placement^=\"left\"] {\n      @extend .bs-popover-start;\n    }\n  }\n\n  // Offset the popover to account for the popover arrow\n  .popover-header {\n    padding: var(--popover-header-padding-y) var(--popover-header-padding-x);\n    margin-bottom: 0; // Reset the default from Reboot\n    font-size: var(--popover-header-font-size);\n    color: var(--popover-header-color);\n    background-color: var(--popover-header-bg);\n    border-block-end: var(--popover-border-width) solid var(--popover-border-color);\n    @include border-top-radius(var(--popover-inner-border-radius));\n\n    &:empty {\n      display: none;\n    }\n  }\n\n  .popover-body {\n    padding: var(--popover-body-padding-y) var(--popover-body-padding-x);\n    color: var(--popover-body-color);\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/tokens\" as *;\n\n$progress-tokens: () !default;\n\n// scss-docs-start progress-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$progress-tokens: defaults(\n  (\n    --progress-height: 1rem,\n    --progress-font-size: var(--font-size-sm),\n    --progress-bg: var(--bg-2),\n    --progress-border-radius: var(--border-radius),\n    --progress-box-shadow: var(--box-shadow-inset),\n    --progress-bar-color: var(--white),\n    --progress-bar-bg: var(--primary-bg),\n    --progress-bar-transition: width .6s ease,\n    --progress-bar-animation: progress-bar-stripes 1s linear infinite,\n  ),\n  $progress-tokens\n);\n// scss-docs-end progress-tokens\n\n// Disable animation if transitions are disabled\n\n@layer components {\n  // scss-docs-start progress-keyframes\n  @if $enable-transitions {\n    @keyframes progress-bar-stripes {\n      0% { background-position-x: var(--progress-height); }\n    }\n  }\n  // scss-docs-end progress-keyframes\n\n  .progress,\n  .progress-stacked {\n    @include tokens($progress-tokens);\n\n    display: flex;\n    height: var(--progress-height);\n    overflow: hidden;\n    font-size: var(--progress-font-size);\n    background-color: var(--progress-bg);\n    @include border-radius(var(--progress-border-radius));\n    @include box-shadow(var(--progress-box-shadow));\n  }\n\n  .progress-bar {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    overflow: hidden;\n    color: var(--theme-contrast, var(--progress-bar-color));\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--theme-bg, var(--progress-bar-bg));\n    @include transition(var(--progress-bar-transition));\n  }\n\n  .progress-bar-striped {\n    @include gradient-striped();\n    background-size: var(--progress-height) var(--progress-height);\n  }\n\n  .progress-stacked > .progress {\n    overflow: visible;\n  }\n\n  .progress-stacked > .progress > .progress-bar {\n    width: 100%;\n  }\n\n  @if $enable-transitions {\n    .progress-bar-animated {\n      animation: var(--progress-bar-animation);\n\n      @if $enable-reduced-motion {\n        @media (prefers-reduced-motion: reduce) {\n          animation: none;\n        }\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$spinner-border-tokens: () !default;\n\n// scss-docs-start spinner-border-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$spinner-border-tokens: defaults(\n  (\n    --spinner-width: 2rem,\n    --spinner-height: 2rem,\n    --spinner-vertical-align: -.125em,\n    --spinner-border-width: .25em,\n    --spinner-animation-speed: .75s,\n    --spinner-animation-name: spinner-border,\n  ),\n  $spinner-border-tokens\n);\n// scss-docs-end spinner-border-tokens\n\n$spinner-grow-tokens: () !default;\n\n// scss-docs-start spinner-grow-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$spinner-grow-tokens: defaults(\n  (\n    --spinner-width: 2rem,\n    --spinner-height: 2rem,\n    --spinner-vertical-align: -.125em,\n    --spinner-animation-speed: .75s,\n    --spinner-animation-name: spinner-grow,\n  ),\n  $spinner-grow-tokens\n);\n// scss-docs-end spinner-grow-tokens\n\n// stylelint-enable custom-property-no-missing-var-function\n\n//\n// Rotating border\n//\n\n@layer components {\n  // mdo-do: Refactor this to assume flex parent and remove `vertical-align`\n  .spinner-grow,\n  .spinner-border {\n    display: inline-block;\n    flex-shrink: 0;\n    width: var(--spinner-width);\n    height: var(--spinner-height);\n    vertical-align: var(--spinner-vertical-align);\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 50%;\n    animation: var(--spinner-animation-speed) linear infinite var(--spinner-animation-name);\n  }\n\n  // scss-docs-start spinner-border-keyframes\n  @keyframes spinner-border {\n    to { transform: rotate(360deg); }\n  }\n  // scss-docs-end spinner-border-keyframes\n\n  .spinner-border {\n    @include tokens($spinner-border-tokens);\n\n    border: var(--spinner-border-width) solid currentcolor;\n    border-inline-end-color: transparent;\n  }\n\n  .spinner-border-sm {\n    // scss-docs-start spinner-border-sm-css-vars\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    --spinner-border-width: .2em;\n    // scss-docs-end spinner-border-sm-css-vars\n  }\n\n  //\n  // Growing circle\n  //\n\n  // scss-docs-start spinner-grow-keyframes\n  @keyframes spinner-grow {\n    0% {\n      transform: scale(0);\n    }\n    50% {\n      opacity: 1;\n      transform: none;\n    }\n  }\n  // scss-docs-end spinner-grow-keyframes\n\n  .spinner-grow {\n    @include tokens($spinner-grow-tokens);\n\n    background-color: currentcolor;\n    opacity: 0;\n  }\n\n  .spinner-grow-sm {\n    // scss-docs-start spinner-grow-sm-css-vars\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    // scss-docs-end spinner-grow-sm-css-vars\n  }\n\n  @if $enable-reduced-motion {\n    @media (prefers-reduced-motion: reduce) {\n      .spinner-border,\n      .spinner-grow {\n        --spinner-animation-speed: 1.5s;\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$stepper-tokens: () !default;\n\n// scss-docs-start stepper-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$stepper-tokens: defaults(\n  (\n    --stepper-size: 2rem,\n    --stepper-gap: 1rem,\n    --stepper-bg: var(--bg-2),\n    --stepper-track-size: .25rem,\n    --stepper-active-color: var(--primary-contrast),\n    --stepper-active-bg: var(--primary-bg),\n  ),\n  $stepper-tokens\n);\n// scss-docs-end stepper-tokens\n\n// scss-docs-start stepper-horizontal-mixin\n@mixin stepper-horizontal() {\n  display: inline-grid;\n  grid-auto-columns: 1fr;\n  grid-auto-flow: column;\n\n  .stepper-item {\n    grid-template-rows: repeat(2, var(--stepper-size));\n    grid-template-columns: auto;\n    justify-items: center;\n\n    &::after {\n      top: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n      right: 0;\n      bottom: auto;\n      left: calc(-50% - var(--stepper-gap));\n      width: auto;\n      height: var(--stepper-track-size);\n    }\n\n    &:last-child::after {\n      right: 50%;\n    }\n  }\n}\n// scss-docs-end stepper-horizontal-mixin\n\n// scss-docs-start stepper-css\n.stepper {\n  // scss-docs-start stepper-css-vars\n  @include tokens($stepper-tokens);\n  // scss-docs-end stepper-css-vars\n\n  display: grid;\n  grid-auto-rows: 1fr;\n  grid-auto-flow: row;\n  gap: var(--stepper-gap);\n  padding-left: 0;\n  list-style: none;\n  counter-reset: stepper;\n}\n\n.stepper-item {\n  position: relative;\n  display: grid;\n  grid-template-rows: auto;\n  grid-template-columns: var(--stepper-size) auto;\n  gap: .5rem;\n  place-items: center;\n  justify-items: start;\n  text-align: center;\n  text-decoration: none;\n\n  // The counter\n  &::before {\n    position: relative;\n    z-index: 1;\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--stepper-size);\n    height: var(--stepper-size);\n    padding: .5rem;\n    font-weight: 600;\n    line-height: 1;\n    text-align: center;\n    content: counter(stepper);\n    counter-increment: stepper;\n    background-color: var(--stepper-bg);\n    @include border-radius(50%);\n  }\n\n  // Connecting lines\n  &::after {\n    position: absolute;\n    top: calc(var(--stepper-gap) * -1);\n    bottom: 100%;\n    left: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n    width: var(--stepper-track-size);\n    content: \"\";\n    background-color: var(--stepper-bg);\n  }\n\n  // Avoid sibling selector for easier CSS overrides\n  &:first-child::after {\n    display: none;\n  }\n\n  &.active {\n    &::before,\n    &::after {\n      color: var(--theme-contrast, var(--stepper-active-color));\n      background-color: var(--theme-bg, var(--stepper-active-bg));\n    }\n  }\n}\n\n@each $breakpoint in map.keys($breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    .stepper-horizontal#{$infix} {\n      @include stepper-horizontal();\n    }\n  }\n}\n\n// scss-docs-start stepper-overflow\n.stepper-overflow {\n  container-type: inline-size;\n  overflow-x: auto;\n  overscroll-behavior-x: contain;\n  -webkit-overflow-scrolling: touch;\n\n  > .stepper {\n    width: max-content;\n    min-width: 100%;\n  }\n}\n// scss-docs-end stepper-overflow\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$toast-tokens: () !default;\n\n// scss-docs-start toast-tokens\n// stylelint-disable custom-property-no-missing-var-function\n// stylelint-disable-next-line scss/dollar-variable-default\n$toast-tokens: defaults(\n  (\n    --toast-zindex: #{$zindex-toast},\n    --toast-padding-x: .75rem,\n    --toast-padding-y: .5rem,\n    --toast-spacing: #{$container-padding-x},\n    --toast-max-width: 350px,\n    --toast-font-size: .875rem,\n    --toast-color: null,\n    --toast-bg: rgba(var(--body-bg-rgb), .85),\n    --toast-border-width: var(--border-width),\n    --toast-border-color: var(--border-color-translucent),\n    --toast-border-radius: var(--border-radius),\n    --toast-box-shadow: var(--box-shadow),\n    --toast-header-color: var(--fg-3),\n    --toast-header-bg: rgba(var(--body-bg-rgb), .85),\n    --toast-header-border-color: var(--border-color-translucent),\n  ),\n  $toast-tokens\n);\n// stylelint-enable custom-property-no-missing-var-function\n// scss-docs-end toast-tokens\n\n@layer components {\n  .toast {\n    @include tokens($toast-tokens);\n\n    width: var(--toast-max-width);\n    max-width: 100%;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color);\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--toast-border-color);\n    box-shadow: var(--toast-box-shadow);\n    @include border-radius(var(--toast-border-radius));\n\n    &.showing {\n      opacity: 0;\n    }\n\n    &:not(.show) {\n      display: none;\n    }\n  }\n\n  .toast-container {\n    --toast-zindex: #{$zindex-toast};\n\n    position: absolute;\n    z-index: var(--toast-zindex);\n    width: max-content;\n    max-width: 100%;\n    pointer-events: none;\n\n    > :not(:last-child) {\n      margin-bottom: var(--toast-spacing);\n    }\n  }\n\n  .toast-header {\n    display: flex;\n    align-items: center;\n    padding: var(--toast-padding-y) var(--toast-padding-x);\n    color: var(--toast-header-color);\n    background-color: var(--toast-header-bg);\n    background-clip: padding-box;\n    border-block-end: var(--toast-border-width) solid var(--toast-header-border-color);\n    @include border-top-radius(calc(var(--toast-border-radius) - var(--toast-border-width)));\n\n    .btn-close {\n      margin-inline-start: var(--toast-padding-x);\n      margin-inline-end: calc(-.5 * var(--toast-padding-x));\n    }\n  }\n\n  .toast-body {\n    padding: var(--toast-padding-x);\n    word-wrap: break-word;\n  }\n}\n","@use \"config\" as *;\n@use \"mixins/transition\" as *;\n\n.fade {\n  @include transition($transition-fade);\n\n  &:not(.show) {\n    opacity: 0;\n  }\n}\n\n// scss-docs-start collapse-classes\n.collapse {\n  &:not(.show) {\n    display: none;\n  }\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  @include transition($transition-collapse);\n\n  &.collapse-horizontal {\n    width: 0;\n    height: auto;\n    @include transition($transition-collapse-width);\n  }\n}\n// scss-docs-end collapse-classes\n","@layer helpers {\n  .focus-ring:focus-visible {\n    outline: var(--focus-ring);\n  }\n}\n","@use \"../config\" as *;\n@use \"../mixins/transition\" as *;\n\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: $icon-link-gap;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, .5));\n    text-underline-offset: $icon-link-underline-offset;\n    backface-visibility: hidden;\n\n    > .bi {\n      flex-shrink: 0;\n      width: $icon-link-icon-size;\n      height: $icon-link-icon-size;\n      fill: currentcolor;\n      @include transition($icon-link-icon-transition);\n    }\n  }\n\n  .icon-link-hover {\n    &:hover,\n    &:focus-visible {\n      > .bi {\n        transform: var(--icon-link-transform, $icon-link-icon-transform);\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: $zindex-fixed;\n  }\n\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: $zindex-fixed;\n  }\n\n  // Responsive sticky top and bottom\n  @each $breakpoint in map.keys($breakpoints) {\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      .sticky#{$infix}-top {\n        position: sticky;\n        top: 0;\n        z-index: $zindex-sticky;\n      }\n\n      .sticky#{$infix}-bottom {\n        position: sticky;\n        bottom: 0;\n        z-index: $zindex-sticky;\n      }\n    }\n  }\n}\n","@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  // scss-docs-start stacks\n  .stack-container {\n    @include set-container();\n  }\n\n  [class*=\"hstack\"],\n  [class*=\"vstack\"] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n\n  @include loop-breakpoints-up() using ($breakpoint, $infix) {\n    .vstack#{$infix} {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: column;\n        --stack-align-items: stretch;\n      }\n    }\n    .hstack#{$infix} {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: row;\n        --stack-align-items: flex-start;\n      }\n    }\n  }\n  // scss-docs-end stacks\n}\n","@use \"../theme\" as *;\n\n// Generate theme modifier classes (e.g., .theme-primary, .theme-accent, etc.)\n@layer helpers {\n  @include generate-theme-classes();\n}\n","@use \"sass:meta\";\n@use \"sass:map\";\n\n@function theme-color-values($key) {\n  $result: ();\n\n  @each $color-name, $color-map in $theme-colors {\n    @if map.has-key($color-map, $key) {\n      $result: map.merge($result, ($color-name: map.get($color-map, $key)));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate opacity values using color-mix()\n@function theme-opacity-values($color-var, $opacities: $util-opacity) {\n  $result: ();\n\n  @each $key, $value in $opacities {\n    @if $key == 100 {\n      // For 100%, use direct variable reference (more efficient)\n      $result: map.merge($result, ($key: var($color-var)));\n    } @else {\n      // For other values, use color-mix()\n      $percentage: $key * 1%;\n      $result: map.merge($result, ($key: color-mix(in oklch, var($color-var) $percentage, transparent)));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate theme classes dynamically based on the keys in each theme color map\n@mixin generate-theme-classes() {\n  @each $color-name, $color-map in $theme-colors {\n    .theme-#{$color-name} {\n      @each $key, $value in $color-map {\n        --theme-#{$key}: var(--#{$color-name}-#{$key});\n      }\n    }\n  }\n}\n\n// Recursive mixin to handle nested maps\n@mixin create-css-vars($map, $parent-key: \"\") {\n  @each $key, $value in $map {\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    $current-key: if(sass($parent-key == \"\"): $key; else: \"#{$parent-key}-#{$key}\");\n\n    @if meta.type-of($value) == \"map\" {\n      @include create-css-vars($value, $current-key);\n    } @else {\n      --#{$current-key}: #{$value};\n    }\n  }\n}\n\n// scss-docs-start theme-colors\n$theme-colors: (\n  \"primary\": (\n    \"base\": var(--blue-500),\n    \"text\": light-dark(var(--blue-600), var(--blue-400)),\n    \"text-emphasis\": light-dark(var(--blue-800), var(--blue-200)),\n    \"bg\": var(--blue-500),\n    \"bg-subtle\": light-dark(var(--blue-100), var(--blue-900)),\n    \"bg-muted\": light-dark(var(--blue-200), var(--blue-800)),\n    \"border\": light-dark(var(--blue-300), var(--blue-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"accent\": (\n    \"base\": var(--indigo-500),\n    \"text\": light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300))),\n    \"text-emphasis\": light-dark(var(--indigo-800), var(--indigo-300)),\n    \"bg\": var(--indigo-500),\n    \"bg-subtle\": light-dark(var(--indigo-100), var(--indigo-900)),\n    \"bg-muted\": light-dark(var(--indigo-200), var(--indigo-800)),\n    \"border\": light-dark(var(--indigo-300), var(--indigo-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"success\": (\n    \"base\": var(--green-500),\n    \"text\": light-dark(var(--green-600), var(--green-400)),\n    \"text-emphasis\": light-dark(var(--green-800), var(--green-300)),\n    \"bg\": var(--green-500),\n    \"bg-subtle\": light-dark(var(--green-100), var(--green-900)),\n    \"bg-muted\": light-dark(var(--green-200), var(--green-800)),\n    \"border\": light-dark(var(--green-300), var(--green-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"danger\": (\n    \"base\": var(--red-500),\n    \"text\": light-dark(var(--red-600), var(--red-400)),\n    \"text-emphasis\": light-dark(var(--red-800), var(--red-300)),\n    \"bg\": var(--red-500),\n    \"bg-subtle\": light-dark(var(--red-100), var(--red-900)),\n    \"bg-muted\": light-dark(var(--red-200), var(--red-800)),\n    \"border\": light-dark(var(--red-300), var(--red-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"warning\": (\n    \"base\": var(--yellow-500),\n    \"text\": light-dark(var(--yellow-700), var(--yellow-400)),\n    \"text-emphasis\": light-dark(var(--yellow-800), var(--yellow-300)),\n    \"bg\": var(--yellow-500),\n    \"bg-subtle\": light-dark(var(--yellow-100), var(--yellow-900)),\n    \"bg-muted\": light-dark(var(--yellow-200), var(--yellow-800)),\n    \"border\": light-dark(var(--yellow-300), var(--yellow-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"info\": (\n    \"base\": var(--cyan-500),\n    \"text\": light-dark(var(--cyan-600), var(--cyan-400)),\n    \"text-emphasis\": light-dark(var(--cyan-800), var(--cyan-300)),\n    \"bg\": var(--cyan-500),\n    \"bg-subtle\": light-dark(var(--cyan-100), var(--cyan-900)),\n    \"bg-muted\": light-dark(var(--cyan-200), var(--cyan-800)),\n    \"border\": light-dark(var(--cyan-300), var(--cyan-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"inverse\": (\n    \"base\": var(--gray-900),\n    \"text\": light-dark(var(--gray-900), var(--gray-200)),\n    \"text-emphasis\": light-dark(var(--gray-975), var(--white)),\n    \"bg\": light-dark(var(--gray-900), var(--gray-025)),\n    \"bg-subtle\": light-dark(var(--gray-100), var(--gray-900)),\n    \"bg-muted\": light-dark(var(--gray-200), var(--gray-300)),\n    \"border\": light-dark(var(--gray-400), var(--gray-100)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--white), var(--gray-900))\n  ),\n  \"secondary\": (\n    \"base\": var(--gray-200),\n    \"text\": light-dark(var(--gray-600), var(--gray-400)),\n    \"text-emphasis\": light-dark(var(--gray-800), var(--gray-200)),\n    \"bg\": light-dark(var(--gray-100), var(--gray-600)),\n    \"bg-subtle\": light-dark(var(--gray-050), var(--gray-800)),\n    \"bg-muted\": light-dark(var(--gray-100), var(--gray-700)),\n    \"border\": light-dark(var(--gray-300), var(--gray-600)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--gray-900), var(--white))\n  )\n) !default;\n// scss-docs-end theme-colors\n\n// mdo-do: consider using muted, subtle, ghost or something instead of linear scale?\n$theme-bgs: (\n  \"body\": light-dark(var(--white), var(--gray-975)),\n  \"1\": light-dark(var(--gray-025), var(--gray-950)),\n  \"2\": light-dark(var(--gray-050), var(--gray-900)),\n  \"3\": light-dark(var(--gray-100), var(--gray-800)),\n  \"4\": light-dark(var(--gray-200), var(--gray-700)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"transparent\": transparent,\n  \"inherit\": inherit,\n) !default;\n\n$theme-fgs: (\n  \"body\": light-dark(var(--gray-900), var(--gray-050)),\n  \"1\": light-dark(var(--gray-800), var(--gray-200)),\n  \"2\": light-dark(var(--gray-700), var(--gray-300)),\n  \"3\": light-dark(var(--gray-600), var(--gray-500)),\n  \"4\": light-dark(var(--gray-500), var(--gray-600)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"inherit\": inherit,\n) !default;\n\n$theme-borders: (\n  \"bg\": var(--bg-body),\n  \"body\": light-dark(var(--gray-300), var(--gray-800)),\n  \"muted\": light-dark(var(--gray-200), var(--gray-800)),\n  \"subtle\": light-dark(var(--gray-100), var(--gray-900)),\n  \"emphasized\": light-dark(var(--gray-400), var(--gray-600)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n) !default;\n\n$util-opacity: (\n  10: .1,\n  20: .2,\n  30: .3,\n  40: .4,\n  50: .5,\n  60: .6,\n  70: .7,\n  80: .8,\n  90: .9,\n  100: 1\n) !default;\n","@use \"../mixins/visually-hidden\" as *;\n\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","// stylelint-disable declaration-no-important\n\n// Hide content visually while keeping it accessible to assistive technologies\n//\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin visually-hidden() {\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n\n  // Fix for positioned table caption that could become anonymous cells\n  &:not(caption) {\n    position: absolute !important;\n  }\n\n  // Fix to prevent overflowing children to become focusable\n  * {\n    overflow: hidden !important;\n  }\n}\n\n// Use to only display content when it's focused, or one of its child elements is focused\n// (i.e. when focus is within the element/container that the class was applied to)\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/WAI/WCAG22/Techniques/general/G1.html\n\n@mixin visually-hidden-focusable() {\n  &:not(:focus):not(:focus-within) {\n    @include visually-hidden();\n  }\n}\n","@use \"../config\" as *;\n\n@layer helpers {\n  .stretched-link {\n    &::#{$stretched-link-pseudo-element} {\n      position: absolute;\n      inset: 0;\n      z-index: $stretched-link-z-index;\n      content: \"\";\n    }\n  }\n}\n","@use \"../mixins/text-truncate\" as *;\n\n@layer helpers {\n  .text-truncate {\n    @include text-truncate();\n  }\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n","@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n@use \"../mixins/utilities\" as *;\n@use \"../utilities\" as *;\n\n@layer utilities {\n  // Loop over each breakpoint\n  @each $breakpoint in map.keys($breakpoints) {\n\n    // Generate media query if needed\n    @include media-breakpoint-up($breakpoint) {\n      $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n      // Loop over each utility property\n      @each $key, $utility in $utilities {\n        // The utility can be disabled with `false`, thus check if the utility is a map first\n        // Only proceed if responsive media queries are enabled or if it's the base media query\n        @if meta.type-of($utility) == \"map\" and (map.get($utility, responsive) or $infix == \"\") {\n          @include generate-utility($utility, $infix);\n        }\n      }\n    }\n  }\n\n  // Print utilities\n  @media print {\n    @each $key, $utility in $utilities {\n      // The utility can be disabled with `false`, thus check if the utility is a map first\n      // Then check if the utility needs print styles\n      @if meta.type-of($utility) == \"map\" and map.get($utility, print) == true {\n        @include generate-utility($utility, \"-print\");\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n\n// stylelint-disable scss/dollar-variable-pattern\n\n// Utility generator\n\n// - Utilities can use three different types of selectors:\n//   - class: .class\n//   - attr-starts: [class^=\"class\"]\n//   - attr-includes: [class*=\"class\"]\n// - Utilities can generate regular CSS properties and CSS custom properties\n// - Utilities can be responsive or not\n// - Utilities can have state variants (e.g., hover, focus, active)\n// - Utilities can define local CSS variables\n//\n// CSS custom properties can be generated in two ways:\n//\n// 1. Property map with null values (CSS var receives the utility value):\n// \"bg-color\": (\n//   property: (\n//     \"--bg\": null,\n//     \"background-color\": var(--bg)\n//   ),\n//   class: bg,\n//   values: (\n//     primary: var(--blue-500),\n//   )\n// )\n// Generates:\n// .bg-primary {\n//   --bs-bg: var(--bs-blue-500);\n//   background-color: var(--bs-bg);\n// }\n//\n// 2. Variables map (static CSS custom properties on every class):\n// \"link-underline\": (\n//   property: text-decoration-color,\n//   class: link-underline,\n//   variables: (\n//     \"link-underline-opacity\": 1\n//   ),\n//   values: (...)\n// )\n// Generates:\n// .link-underline {\n//   --bs-link-underline-opacity: 1;\n//   text-decoration-color: ...;\n// }\n\n// Helper mixin to generate CSS properties for both legacy and property map approaches\n@mixin generate-properties($utility, $propertyMap, $properties, $value) {\n  @if $propertyMap != null {\n    // New Property-Value Mapping approach\n    @each $property, $defaultValue in $propertyMap {\n      // If value is a map, check if it has a key for this property\n      // Otherwise, use defaultValue (or $value if defaultValue is null)\n      $actualValue: $defaultValue;\n      @if meta.type-of($value) == \"map\" and map.has-key($value, $property) {\n        $actualValue: map.get($value, $property);\n      } @else if $defaultValue == null {\n        $actualValue: $value;\n      }\n      @if map.get($utility, important) {\n        #{$property}: $actualValue !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $actualValue;\n      }\n    }\n  } @else {\n    // Legacy approach\n    @each $property in $properties {\n      @if map.get($utility, important) {\n        #{$property}: $value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $value;\n      }\n    }\n  }\n}\n\n@mixin generate-utility($utility, $infix: \"\") {\n  // Validate required keys\n  @if not map.has-key($utility, property) {\n    @error \"Utility is missing required `property` key: #{$utility}\";\n  }\n  @if not map.has-key($utility, values) {\n    @error \"Utility is missing required `values` key: #{$utility}\";\n  }\n\n  // Warn on unknown keys (likely typos)\n  $valid-keys: property, values, class, selector, responsive, print, important, state, variables;\n  @each $key in map.keys($utility) {\n    @if not list.index($valid-keys, $key) {\n      @warn \"Unknown utility key `#{$key}` found. Valid keys are: #{$valid-keys}\";\n    }\n  }\n\n  // Determine if we're generating a class, or an attribute selector\n  $selectorType: \"class\";\n  @if map.has-key($utility, selector) {\n    $selectorType: map.get($utility, selector);\n    // Validate selector type\n    $valid-selectors: \"class\", \"attr-starts\", \"attr-includes\";\n    @if not list.index($valid-selectors, $selectorType) {\n      @error \"Invalid `selector` value `#{$selectorType}`. Must be one of: #{$valid-selectors}\";\n    }\n  }\n  // Then get the class name to use in a class (e.g., .class) or in a attribute selector (e.g., [class^=\"class\"])\n  $selectorClass: map.get($utility, class);\n\n  // Attribute selectors require a `class` key\n  @if $selectorType != \"class\" and not map.has-key($utility, class) {\n    @error \"Utility with `selector: #{$selectorType}` requires a `class` key.\";\n  }\n\n  // Get the list or map of values and ensure it's a map\n  $values: map.get($utility, values);\n  @if meta.type-of($values) != \"map\" {\n    @if meta.type-of($values) == \"list\" {\n      $list: ();\n      @each $value in $values {\n        $list: map.merge($list, ($value: $value));\n      }\n      $values: $list;\n    } @else {\n      $values: (null: $values);\n    }\n  }\n\n  // Calculate infix once, before the loop\n  // Note: $infix already includes the leading dash from breakpoint-infix()\n  // $infix: if($infix == \"\", \"\", \"-\" + $infix);\n\n  @each $key, $value in $values {\n    $properties: map.get($utility, property);\n    $propertyMap: null;\n    $customClass: \"\";\n\n    // Check if property is a map (new Property-Value Mapping approach)\n    // @debug \"Properties type: #{meta.type-of($properties)}\";\n    // @debug \"Properties: #{$properties}\";\n    @if meta.type-of($properties) == \"map\" {\n      $propertyMap: $properties;\n      // For property maps, we need to determine the class from the utility definition\n      $customClass: \"\";\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      }\n    } @else {\n      // Legacy approach: Multiple properties are possible, for example with vertical or horizontal margins or paddings\n      @if meta.type-of($properties) == \"string\" {\n        $properties: list.append((), $properties);\n      }\n      // Use custom class if present, otherwise use the first value from the list of properties\n      @if map.has-key($utility, class) {\n        $customClass: map.get($utility, class);\n      } @else {\n        $customClass: list.nth($properties, 1);\n      }\n      @if $customClass == null {\n        $customClass: \"\";\n      }\n    }\n\n    // Use custom CSS variable name if present, otherwise default to `class`\n    // mdo-do: restore?\n    // $css-variable-name: if(map.has-key($utility, css-variable-name), map.get($utility, css-variable-name), map.get($utility, class));\n\n    // State params to generate state variants\n    $state: ();\n    @if map.has-key($utility, state) {\n      $state: map.get($utility, state);\n    }\n\n    // $infix: if($customClass == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n    // Don't prefix if value key is null (e.g. with shadow class)\n    $customClassModifier: \"\";\n    @if $key {\n      @if $customClass == \"\" and $infix == \"\" {\n        $customClassModifier: $key;\n      } @else {\n        $customClassModifier: \"-\" + $key;\n      }\n    }\n\n    $selector: \"\";\n    @if $selectorType == \"class\" {\n      // Use the fallback of the first property if no `class` key is used\n      @if $customClass != \"\" {\n        $selector: \".#{$customClass + $infix + $customClassModifier}\";\n      } @else {\n        $selector: \".#{$selectorClass + $infix + $customClassModifier}\";\n      }\n    } @else if $selectorType == \"attr-starts\" {\n      $selector: \"[class^=\\\"#{$selectorClass}\\\"]\";\n    } @else if $selectorType == \"attr-includes\" {\n      $selector: \"[class*=\\\"#{$selectorClass}\\\"]\";\n    }\n\n    // @debug $utility;\n    // @debug $selectorType;\n    // @debug $selector;\n    // @debug $properties;\n    // @debug $values;\n\n    #{$selector} {\n      // Generate CSS custom properties (variables) if provided\n      // Variables receive the current utility value, then properties reference them\n      @if map.has-key($utility, variables) {\n        $variables: map.get($utility, variables);\n        @if meta.type-of($variables) == \"list\" {\n          // If variables is a list, each variable gets the utility value\n          @each $var-name in $variables {\n            --#{$var-name}: #{$value};\n          }\n        } @else if meta.type-of($variables) == \"map\" {\n          // If variables is a map, use the provided values (for static variables)\n          @each $var-key, $var-value in $variables {\n            --#{$var-key}: #{$var-value};\n          }\n        }\n      }\n      @include generate-properties($utility, $propertyMap, $properties, $value);\n    }\n\n    // Generate state variants\n    @if $state != () {\n      @each $state-variant in $state {\n        #{$selector}-#{$state-variant}:#{$state-variant} {\n          // Generate CSS custom properties (variables) if provided\n          @if map.has-key($utility, variables) {\n            $variables: map.get($utility, variables);\n            @if meta.type-of($variables) == \"list\" {\n              // If variables is a list, each variable gets the utility value\n              @each $var-name in $variables {\n                --#{$var-name}: #{$value};\n              }\n            } @else if meta.type-of($variables) == \"map\" {\n              // If variables is a map, use the provided values (for static variables)\n              @each $var-key, $var-value in $variables {\n                --#{$var-key}: #{$var-value};\n              }\n            }\n          }\n          @include generate-properties($utility, $propertyMap, $properties, $value);\n        }\n      }\n    }\n  }\n}\n"],"names":[]}
\ No newline at end of file
index 1b0480cc0f5f3809c765791cb05c1f89e4b1c182..603c1a56f900e6e4f9ea37568309a4512c9839ea 100644 (file)
@@ -788,13 +788,13 @@ const eventAction = (onEvent, stringSelector, callback) => {
  * Constants
  */
 
-const NAME$k = 'alert';
-const DATA_KEY$f = 'bs.alert';
-const EVENT_KEY$g = `.${DATA_KEY$f}`;
-const EVENT_CLOSE = `close${EVENT_KEY$g}`;
-const EVENT_CLOSED = `closed${EVENT_KEY$g}`;
+const NAME$l = 'alert';
+const DATA_KEY$g = 'bs.alert';
+const EVENT_KEY$h = `.${DATA_KEY$g}`;
+const EVENT_CLOSE = `close${EVENT_KEY$h}`;
+const EVENT_CLOSED = `closed${EVENT_KEY$h}`;
 const CLASS_NAME_FADE$4 = 'fade';
-const CLASS_NAME_SHOW$7 = 'show';
+const CLASS_NAME_SHOW$8 = 'show';
 
 /**
  * Class definition
@@ -803,7 +803,7 @@ const CLASS_NAME_SHOW$7 = 'show';
 class Alert extends BaseComponent {
   // Getters
   static get NAME() {
-    return NAME$k;
+    return NAME$l;
   }
 
   // Public
@@ -812,7 +812,7 @@ class Alert extends BaseComponent {
     if (closeEvent.defaultPrevented) {
       return;
     }
-    this._element.classList.remove(CLASS_NAME_SHOW$7);
+    this._element.classList.remove(CLASS_NAME_SHOW$8);
     const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$4);
     this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
   }
@@ -843,13 +843,13 @@ enableDismissTrigger(Alert, 'close');
  * Constants
  */
 
-const NAME$j = 'button';
-const DATA_KEY$e = 'bs.button';
-const EVENT_KEY$f = `.${DATA_KEY$e}`;
-const DATA_API_KEY$9 = '.data-api';
+const NAME$k = 'button';
+const DATA_KEY$f = 'bs.button';
+const EVENT_KEY$g = `.${DATA_KEY$f}`;
+const DATA_API_KEY$a = '.data-api';
 const CLASS_NAME_ACTIVE$3 = 'active';
-const SELECTOR_DATA_TOGGLE$9 = '[data-bs-toggle="button"]';
-const EVENT_CLICK_DATA_API$7 = `click${EVENT_KEY$f}${DATA_API_KEY$9}`;
+const SELECTOR_DATA_TOGGLE$a = '[data-bs-toggle="button"]';
+const EVENT_CLICK_DATA_API$8 = `click${EVENT_KEY$g}${DATA_API_KEY$a}`;
 
 /**
  * Class definition
@@ -858,7 +858,7 @@ const EVENT_CLICK_DATA_API$7 = `click${EVENT_KEY$f}${DATA_API_KEY$9}`;
 class Button extends BaseComponent {
   // Getters
   static get NAME() {
-    return NAME$j;
+    return NAME$k;
   }
 
   // Public
@@ -872,9 +872,9 @@ class Button extends BaseComponent {
  * Data API implementation
  */
 
-EventHandler.on(document, EVENT_CLICK_DATA_API$7, SELECTOR_DATA_TOGGLE$9, event => {
+EventHandler.on(document, EVENT_CLICK_DATA_API$8, SELECTOR_DATA_TOGGLE$a, event => {
   event.preventDefault();
-  const button = event.target.closest(SELECTOR_DATA_TOGGLE$9);
+  const button = event.target.closest(SELECTOR_DATA_TOGGLE$a);
   const data = Button.getOrCreateInstance(button);
   data.toggle();
 });
@@ -891,23 +891,23 @@ EventHandler.on(document, EVENT_CLICK_DATA_API$7, SELECTOR_DATA_TOGGLE$9, event
  * Constants
  */
 
-const NAME$i = 'swipe';
-const EVENT_KEY$e = '.bs.swipe';
-const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$e}`;
-const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$e}`;
-const EVENT_TOUCHEND = `touchend${EVENT_KEY$e}`;
-const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$e}`;
-const EVENT_POINTERUP = `pointerup${EVENT_KEY$e}`;
+const NAME$j = 'swipe';
+const EVENT_KEY$f = '.bs.swipe';
+const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$f}`;
+const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$f}`;
+const EVENT_TOUCHEND = `touchend${EVENT_KEY$f}`;
+const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$f}`;
+const EVENT_POINTERUP = `pointerup${EVENT_KEY$f}`;
 const POINTER_TYPE_TOUCH = 'touch';
 const POINTER_TYPE_PEN = 'pen';
 const CLASS_NAME_POINTER_EVENT = 'pointer-event';
 const SWIPE_THRESHOLD = 40;
-const Default$h = {
+const Default$i = {
   endCallback: null,
   leftCallback: null,
   rightCallback: null
 };
-const DefaultType$h = {
+const DefaultType$i = {
   endCallback: '(function|null)',
   leftCallback: '(function|null)',
   rightCallback: '(function|null)'
@@ -932,18 +932,18 @@ class Swipe extends Config {
 
   // Getters
   static get Default() {
-    return Default$h;
+    return Default$i;
   }
   static get DefaultType() {
-    return DefaultType$h;
+    return DefaultType$i;
   }
   static get NAME() {
-    return NAME$i;
+    return NAME$j;
   }
 
   // Public
   dispose() {
-    EventHandler.off(this._element, EVENT_KEY$e);
+    EventHandler.off(this._element, EVENT_KEY$f);
   }
 
   // Private
@@ -1011,10 +1011,10 @@ class Swipe extends Config {
  * Constants
  */
 
-const NAME$h = 'carousel';
-const DATA_KEY$d = 'bs.carousel';
-const EVENT_KEY$d = `.${DATA_KEY$d}`;
-const DATA_API_KEY$8 = '.data-api';
+const NAME$i = 'carousel';
+const DATA_KEY$e = 'bs.carousel';
+const EVENT_KEY$e = `.${DATA_KEY$e}`;
+const DATA_API_KEY$9 = '.data-api';
 const ARROW_LEFT_KEY$2 = 'ArrowLeft';
 const ARROW_RIGHT_KEY$2 = 'ArrowRight';
 const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
@@ -1023,14 +1023,14 @@ const ORDER_NEXT = 'next';
 const ORDER_PREV = 'prev';
 const DIRECTION_LEFT = 'left';
 const DIRECTION_RIGHT = 'right';
-const EVENT_SLIDE = `slide${EVENT_KEY$d}`;
-const EVENT_SLID = `slid${EVENT_KEY$d}`;
-const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$d}`;
-const EVENT_MOUSEENTER$2 = `mouseenter${EVENT_KEY$d}`;
-const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$d}`;
-const EVENT_DRAG_START = `dragstart${EVENT_KEY$d}`;
-const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$d}${DATA_API_KEY$8}`;
-const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$d}${DATA_API_KEY$8}`;
+const EVENT_SLIDE = `slide${EVENT_KEY$e}`;
+const EVENT_SLID = `slid${EVENT_KEY$e}`;
+const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$e}`;
+const EVENT_MOUSEENTER$2 = `mouseenter${EVENT_KEY$e}`;
+const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$e}`;
+const EVENT_DRAG_START = `dragstart${EVENT_KEY$e}`;
+const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$e}${DATA_API_KEY$9}`;
+const EVENT_CLICK_DATA_API$7 = `click${EVENT_KEY$e}${DATA_API_KEY$9}`;
 const CLASS_NAME_CAROUSEL = 'carousel';
 const CLASS_NAME_ACTIVE$2 = 'active';
 const CLASS_NAME_SLIDE = 'slide';
@@ -1049,7 +1049,7 @@ const KEY_TO_DIRECTION = {
   [ARROW_LEFT_KEY$2]: DIRECTION_RIGHT,
   [ARROW_RIGHT_KEY$2]: DIRECTION_LEFT
 };
-const Default$g = {
+const Default$h = {
   interval: 5000,
   keyboard: true,
   pause: 'hover',
@@ -1057,7 +1057,7 @@ const Default$g = {
   touch: true,
   wrap: true
 };
-const DefaultType$g = {
+const DefaultType$h = {
   interval: 'number',
   keyboard: 'boolean',
   pause: '(string|boolean)',
@@ -1087,13 +1087,13 @@ class Carousel extends BaseComponent {
 
   // Getters
   static get Default() {
-    return Default$g;
+    return Default$h;
   }
   static get DefaultType() {
-    return DefaultType$g;
+    return DefaultType$h;
   }
   static get NAME() {
-    return NAME$h;
+    return NAME$i;
   }
 
   // Public
@@ -1318,7 +1318,7 @@ class Carousel extends BaseComponent {
  * Data API implementation
  */
 
-EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_SLIDE, function (event) {
+EventHandler.on(document, EVENT_CLICK_DATA_API$7, SELECTOR_DATA_SLIDE, function (event) {
   const target = SelectorEngine.getElementFromSelector(this);
   if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
     return;
@@ -1358,16 +1358,16 @@ EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {
  * Constants
  */
 
-const NAME$g = 'collapse';
-const DATA_KEY$c = 'bs.collapse';
-const EVENT_KEY$c = `.${DATA_KEY$c}`;
-const DATA_API_KEY$7 = '.data-api';
-const EVENT_SHOW$7 = `show${EVENT_KEY$c}`;
-const EVENT_SHOWN$7 = `shown${EVENT_KEY$c}`;
-const EVENT_HIDE$7 = `hide${EVENT_KEY$c}`;
-const EVENT_HIDDEN$7 = `hidden${EVENT_KEY$c}`;
-const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$c}${DATA_API_KEY$7}`;
-const CLASS_NAME_SHOW$6 = 'show';
+const NAME$h = 'collapse';
+const DATA_KEY$d = 'bs.collapse';
+const EVENT_KEY$d = `.${DATA_KEY$d}`;
+const DATA_API_KEY$8 = '.data-api';
+const EVENT_SHOW$8 = `show${EVENT_KEY$d}`;
+const EVENT_SHOWN$8 = `shown${EVENT_KEY$d}`;
+const EVENT_HIDE$8 = `hide${EVENT_KEY$d}`;
+const EVENT_HIDDEN$8 = `hidden${EVENT_KEY$d}`;
+const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$d}${DATA_API_KEY$8}`;
+const CLASS_NAME_SHOW$7 = 'show';
 const CLASS_NAME_COLLAPSE = 'collapse';
 const CLASS_NAME_COLLAPSING = 'collapsing';
 const CLASS_NAME_COLLAPSED = 'collapsed';
@@ -1376,12 +1376,12 @@ const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
 const WIDTH = 'width';
 const HEIGHT = 'height';
 const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
-const SELECTOR_DATA_TOGGLE$8 = '[data-bs-toggle="collapse"]';
-const Default$f = {
+const SELECTOR_DATA_TOGGLE$9 = '[data-bs-toggle="collapse"]';
+const Default$g = {
   parent: null,
   toggle: true
 };
-const DefaultType$f = {
+const DefaultType$g = {
   parent: '(null|element)',
   toggle: 'boolean'
 };
@@ -1395,7 +1395,7 @@ class Collapse extends BaseComponent {
     super(element, config);
     this._isTransitioning = false;
     this._triggerArray = [];
-    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$8);
+    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$9);
     for (const elem of toggleList) {
       const selector = SelectorEngine.getSelectorFromElement(elem);
       const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);
@@ -1414,13 +1414,13 @@ class Collapse extends BaseComponent {
 
   // Getters
   static get Default() {
-    return Default$f;
+    return Default$g;
   }
   static get DefaultType() {
-    return DefaultType$f;
+    return DefaultType$g;
   }
   static get NAME() {
-    return NAME$g;
+    return NAME$h;
   }
 
   // Public
@@ -1446,7 +1446,7 @@ class Collapse extends BaseComponent {
     if (activeChildren.length && activeChildren[0]._isTransitioning) {
       return;
     }
-    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$7);
+    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$8);
     if (startEvent.defaultPrevented) {
       return;
     }
@@ -1462,9 +1462,9 @@ class Collapse extends BaseComponent {
     const complete = () => {
       this._isTransitioning = false;
       this._element.classList.remove(CLASS_NAME_COLLAPSING);
-      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$6);
+      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
       this._element.style[dimension] = '';
-      EventHandler.trigger(this._element, EVENT_SHOWN$7);
+      EventHandler.trigger(this._element, EVENT_SHOWN$8);
     };
     const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
     const scrollSize = `scroll${capitalizedDimension}`;
@@ -1475,7 +1475,7 @@ class Collapse extends BaseComponent {
     if (this._isTransitioning || !this._isShown()) {
       return;
     }
-    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$7);
+    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$8);
     if (startEvent.defaultPrevented) {
       return;
     }
@@ -1483,7 +1483,7 @@ class Collapse extends BaseComponent {
     this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
     reflow(this._element);
     this._element.classList.add(CLASS_NAME_COLLAPSING);
-    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$6);
+    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
     for (const trigger of this._triggerArray) {
       const element = SelectorEngine.getElementFromSelector(trigger);
       if (element && !this._isShown(element)) {
@@ -1495,7 +1495,7 @@ class Collapse extends BaseComponent {
       this._isTransitioning = false;
       this._element.classList.remove(CLASS_NAME_COLLAPSING);
       this._element.classList.add(CLASS_NAME_COLLAPSE);
-      EventHandler.trigger(this._element, EVENT_HIDDEN$7);
+      EventHandler.trigger(this._element, EVENT_HIDDEN$8);
     };
     this._element.style[dimension] = '';
     this._queueCallback(complete, this._element, true);
@@ -1503,7 +1503,7 @@ class Collapse extends BaseComponent {
 
   // Private
   _isShown(element = this._element) {
-    return element.classList.contains(CLASS_NAME_SHOW$6);
+    return element.classList.contains(CLASS_NAME_SHOW$7);
   }
   _configAfterMerge(config) {
     config.toggle = Boolean(config.toggle); // Coerce string values
@@ -1517,7 +1517,7 @@ class Collapse extends BaseComponent {
     if (!this._config.parent) {
       return;
     }
-    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$8);
+    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$9);
     for (const element of children) {
       const selected = SelectorEngine.getElementFromSelector(element);
       if (selected) {
@@ -1545,7 +1545,7 @@ class Collapse extends BaseComponent {
  * Data API implementation
  */
 
-EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$8, function (event) {
+EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$9, function (event) {
   // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
   if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {
     event.preventDefault();
@@ -1557,756 +1557,98 @@ EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$8, functi
   }
 });
 
-/*! name: vanilla-calendar-pro v3.1.0 | url: https://github.com/uvarov-frontend/vanilla-calendar-pro */
-var __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:true,configurable:true,writable:true,value:n}):e[t]=n,__spreadValues=(e,t)=>{for(var n in t||(t={}))__hasOwnProp.call(t,n)&&__defNormalProp(e,n,t[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(t))__propIsEnum.call(t,n)&&__defNormalProp(e,n,t[n]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__publicField=(e,t,n)=>(__defNormalProp(e,"symbol"!=typeof t?t+"":t,n),n);const errorMessages={notFoundSelector:e=>`${e} is not found, check the first argument passed to new Calendar.`,notInit:'The calendar has not been initialized, please initialize it using the "init()" method first.',notLocale:"You specified an incorrect language label or did not specify the required number of values ​​for «locale.weekdays» or «locale.months».",incorrectTime:"The value of the time property can be: false, 12 or 24.",incorrectMonthsCount:"For the «multiple» calendar type, the «displayMonthsCount» parameter can have a value from 2 to 12, and for all others it cannot be greater than 1."},setContext=(e,t,n)=>{e.context[t]=n;},destroy=e=>{var t,n,a,o,l;if(!e.context.isInit)throw new Error(errorMessages.notInit);e.inputMode?(null==(t=e.context.mainElement.parentElement)||t.removeChild(e.context.mainElement),null==(a=null==(n=e.context.inputElement)?void 0:n.replaceWith)||a.call(n,e.context.originalElement),setContext(e,"inputElement",void 0)):null==(l=(o=e.context.mainElement).replaceWith)||l.call(o,e.context.originalElement),setContext(e,"mainElement",e.context.originalElement),e.onDestroy&&e.onDestroy(e);},skipOpenOnFocus=new WeakSet,shouldSkipOpenOnFocus=e=>skipOpenOnFocus.has(e),setSkipOpenOnFocus=e=>{skipOpenOnFocus.add(e);},clearSkipOpenOnFocus=e=>{skipOpenOnFocus.delete(e);},PREV_TABINDEX_ATTR="data-vc-prev-tabindex",isFocusable=e=>e.tabIndex>=0&&!e.hasAttribute("disabled")&&"true"!==e.getAttribute("aria-disabled"),storePrevTabIndex=e=>{if(e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute("tabindex");e.setAttribute(PREV_TABINDEX_ATTR,null!=t?t:"");},restorePrevTabIndex=e=>{if(!e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(PREV_TABINDEX_ATTR);""===t||null===t?e.removeAttribute("tabindex"):e.setAttribute("tabindex",t),e.removeAttribute(PREV_TABINDEX_ATTR);},disableTabbing=e=>{isFocusable(e)&&(storePrevTabIndex(e),e.tabIndex=-1);const t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>isFocusable(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;t.nextNode();){const e=t.currentNode;storePrevTabIndex(e),e.tabIndex=-1;}},restoreTabbing=e=>{restorePrevTabIndex(e),e.querySelectorAll(`[${PREV_TABINDEX_ATTR}]`).forEach(restorePrevTabIndex);},hide=e=>{if(e.context.isShowInInputMode&&e.context.currentType){if(e.context.mainElement.dataset.vcCalendarHidden="",setContext(e,"isShowInInputMode",false),e.inputMode&&disableTabbing(e.context.mainElement),e.context.cleanupHandlers[0]&&(e.context.cleanupHandlers.forEach((e=>e())),setContext(e,"cleanupHandlers",[])),e.inputMode&&e.context.inputElement&&e.context.mainElement.contains(document.activeElement)){("function"==typeof e.openOnFocus||true===e.openOnFocus)&&setSkipOpenOnFocus(e),e.context.inputElement.focus();}e.onHide&&e.onHide(e);}};function getOffset(e){if(!e||!e.getBoundingClientRect)return {top:0,bottom:0,left:0,right:0};const t=e.getBoundingClientRect(),n=document.documentElement;return {bottom:t.bottom,right:t.right,top:t.top+window.scrollY-n.clientTop,left:t.left+window.scrollX-n.clientLeft}}function getViewportDimensions(){return {vw:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),vh:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}}function getWindowScrollPosition(){return {left:window.scrollX||document.documentElement.scrollLeft||0,top:window.scrollY||document.documentElement.scrollTop||0}}function calculateAvailableSpace(e){const{top:t,left:n}=getWindowScrollPosition(),{top:a,left:o}=getOffset(e),{vh:l,vw:s}=getViewportDimensions(),i=a-t,r=o-n;return {top:i,bottom:l-(i+e.clientHeight),left:r,right:s-(r+e.clientWidth)}}function getAvailablePosition(e,t,n=5){const a={top:true,bottom:true,left:true,right:true},o=[];if(!t||!e)return {canShow:a,parentPositions:o};const{bottom:l,top:s}=calculateAvailableSpace(e),{top:i,left:r}=getOffset(e),{height:c,width:d}=t.getBoundingClientRect(),{vh:u,vw:m}=getViewportDimensions(),p=m/2,h=u/2;return [{condition:i<h,position:"top"},{condition:i>h,position:"bottom"},{condition:r<p,position:"left"},{condition:r>p,position:"right"}].forEach((({condition:e,position:t})=>{e&&o.push(t);})),Object.assign(a,{top:c<=s-n,bottom:c<=l-n,left:d<=r,right:d<=m-r}),{canShow:a,parentPositions:o}}const handleDay=(e,t,n,a)=>{var o;const l=a.querySelector(`[data-vc-date="${t}"]`),s=null==l?void 0:l.querySelector("[data-vc-date-btn]");if(!l||!s)return;if((null==n?void 0:n.modifier)&&s.classList.add(...n.modifier.trim().split(" ")),!(null==n?void 0:n.html))return;const i=document.createElement("div");i.className=e.styles.datePopup,i.dataset.vcDatePopup="",i.innerHTML=e.sanitizerHTML(n.html),s.ariaExpanded="true",s.ariaLabel=`${s.ariaLabel}, ${null==(o=null==i?void 0:i.textContent)?void 0:o.replace(/^\s+|\s+(?=\s)|\s+$/g,"").replace(/&nbsp;/g," ")}`,l.appendChild(i),requestAnimationFrame((()=>{if(!i)return;const{canShow:e}=getAvailablePosition(l,i),t=e.bottom?l.offsetHeight:-i.offsetHeight,n=e.left&&!e.right?l.offsetWidth-i.offsetWidth/2:!e.left&&e.right?i.offsetWidth/2:0;Object.assign(i.style,{left:`${n}px`,top:`${t}px`});}));},createDatePopup=(e,t)=>{var n;e.popups&&(null==(n=Object.entries(e.popups))||n.forEach((([n,a])=>handleDay(e,n,a,t))));},getDate=e=>new Date(`${e}T00:00:00`),getDateString=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`,parseDates=e=>e.reduce(((e,t)=>{if(t instanceof Date||"number"==typeof t){const n=t instanceof Date?t:new Date(t);e.push(n.toISOString().substring(0,10));}else t.match(/^(\d{4}-\d{2}-\d{2})$/g)?e.push(t):t.replace(/(\d{4}-\d{2}-\d{2}).*?(\d{4}-\d{2}-\d{2})/g,((t,n,a)=>{const o=getDate(n),l=getDate(a),s=new Date(o.getTime());for(;s<=l;s.setDate(s.getDate()+1))e.push(getDateString(s));return t}));return e}),[]),updateAttribute=(e,t,n,a="")=>{t?e.setAttribute(n,a):e.getAttribute(n)===a&&e.removeAttribute(n);},setDateModifier=(e,t,n,a,o,l,s)=>{var i,r,c,d;const u=getDate(e.context.displayDateMin)>getDate(l)||getDate(e.context.displayDateMax)<getDate(l)||(null==(i=e.context.disableDates)?void 0:i.includes(l))||!e.selectionMonthsMode&&"current"!==s||!e.selectionYearsMode&&getDate(l).getFullYear()!==t;updateAttribute(n,u,"data-vc-date-disabled"),a&&updateAttribute(a,u,"aria-disabled","true"),a&&updateAttribute(a,u,"tabindex","-1"),updateAttribute(n,!e.disableToday&&e.context.dateToday===l,"data-vc-date-today"),updateAttribute(n,!e.disableToday&&e.context.dateToday===l,"aria-current","date"),updateAttribute(n,null==(r=e.selectedWeekends)?void 0:r.includes(o),"data-vc-date-weekend");const m=(null==(c=e.selectedHolidays)?void 0:c[0])?parseDates(e.selectedHolidays):[];if(updateAttribute(n,m.includes(l),"data-vc-date-holiday"),(null==(d=e.context.selectedDates)?void 0:d.includes(l))?(n.setAttribute("data-vc-date-selected",""),a&&a.setAttribute("aria-selected","true"),e.context.selectedDates.length>1&&"multiple-ranged"===e.selectionDatesMode&&(e.context.selectedDates[0]===l&&e.context.selectedDates[e.context.selectedDates.length-1]===l?n.setAttribute("data-vc-date-selected","first-and-last"):e.context.selectedDates[0]===l?n.setAttribute("data-vc-date-selected","first"):e.context.selectedDates[e.context.selectedDates.length-1]===l&&n.setAttribute("data-vc-date-selected","last"),e.context.selectedDates[0]!==l&&e.context.selectedDates[e.context.selectedDates.length-1]!==l&&n.setAttribute("data-vc-date-selected","middle"))):n.hasAttribute("data-vc-date-selected")&&(n.removeAttribute("data-vc-date-selected"),a&&a.removeAttribute("aria-selected")),!e.context.disableDates.includes(l)&&e.enableEdgeDatesOnly&&e.context.selectedDates.length>1&&"multiple-ranged"===e.selectionDatesMode){const t=getDate(e.context.selectedDates[0]),a=getDate(e.context.selectedDates[e.context.selectedDates.length-1]),o=getDate(l);updateAttribute(n,o>t&&o<a,"data-vc-date-selected","middle");}},getLocaleString=(e,t,n)=>new Date(`${e}T00:00:00.000Z`).toLocaleString(t,n),getWeekNumber=(e,t)=>{const n=getDate(e),a=(n.getDay()-t+7)%7;n.setDate(n.getDate()+4-a);const o=new Date(n.getFullYear(),0,1),l=Math.ceil(((+n-+o)/864e5+1)/7);return {year:n.getFullYear(),week:l}},addWeekNumberForDate=(e,t,n)=>{const a=getWeekNumber(n,e.firstWeekday);a&&(t.dataset.vcDateWeekNumber=String(a.week));},setDaysAsDisabled=(e,t,n)=>{var a,o,l,s,i;const r=null==(a=e.disableWeekdays)?void 0:a.includes(n),c=e.disableAllDates&&!!(null==(o=e.context.enableDates)?void 0:o[0]);!r&&!c||(null==(l=e.context.enableDates)?void 0:l.includes(t))||(null==(s=e.context.disableDates)?void 0:s.includes(t))||(e.context.disableDates.push(t),null==(i=e.context.disableDates)||i.sort(((e,t)=>+new Date(e)-+new Date(t))));},createDate=(e,t,n,a,o,l)=>{const s=getDate(o).getDay(),i="string"==typeof e.locale&&e.locale.length?e.locale:"en",r=document.createElement("div");let c;r.className=e.styles.date,r.dataset.vcDate=o,r.dataset.vcDateMonth=l,r.dataset.vcDateWeekDay=String(s),r.role="gridcell",("current"===l||e.displayDatesOutside)&&(c=document.createElement("button"),c.className=e.styles.dateBtn,c.type="button",c.ariaLabel=getLocaleString(o,i,{dateStyle:"long",timeZone:"UTC"}),c.dataset.vcDateBtn="",c.innerText=String(a),r.appendChild(c)),e.enableWeekNumbers&&addWeekNumberForDate(e,r,o),setDaysAsDisabled(e,o,s),setDateModifier(e,t,r,c,s,o,l),n.addDate(r),e.onCreateDateEls&&e.onCreateDateEls(e,r);},createDatesFromCurrentMonth=(e,t,n,a,o)=>{for(let l=1;l<=n;l++){const n=new Date(a,o,l);createDate(e,a,t,l,getDateString(n),"current");}},createDatesFromNextMonth=(e,t,n,a,o)=>{const l=o+1===12?a+1:a,s=o+1===12?"01":o+2<10?`0${o+2}`:o+2;for(let o=1;o<=n;o++){const n=o<10?`0${o}`:String(o);createDate(e,a,t,o,`${l}-${s}-${n}`,"next");}},createDatesFromPrevMonth=(e,t,n,a,o)=>{let l=new Date(n,a,0).getDate()-(o-1);const s=0===a?n-1:n,i=0===a?12:a<10?`0${a}`:a;for(let a=o;a>0;a--,l++){createDate(e,n,t,l,`${s}-${i}-${l}`,"prev");}},createWeekNumbers=(e,t,n,a,o)=>{if(!e.enableWeekNumbers)return;a.textContent="";const l=document.createElement("b");l.className=e.styles.weekNumbersTitle,l.innerText="#",l.dataset.vcWeekNumbers="title",a.appendChild(l);const s=document.createElement("div");s.className=e.styles.weekNumbersContent,s.dataset.vcWeekNumbers="content",a.appendChild(s);const i=document.createElement("button");i.type="button",i.className=e.styles.weekNumber;const r=o.querySelectorAll("[data-vc-date]"),c=Math.ceil((t+n)/7);for(let t=0;t<c;t++){const n=r[0===t?6:7*t].dataset.vcDate,a=getWeekNumber(n,e.firstWeekday);if(!a)return;const o=i.cloneNode(true);o.innerText=String(a.week),o.dataset.vcWeekNumber=String(a.week),o.dataset.vcWeekYear=String(a.year),o.role="rowheader",o.ariaLabel=`${a.week}`,s.appendChild(o);}},createDates=e=>{const t=new Date(e.context.selectedYear,e.context.selectedMonth,1),n=e.context.mainElement.querySelectorAll('[data-vc="dates"]'),a=e.context.mainElement.querySelectorAll('[data-vc-week="numbers"]');n.forEach(((n,o)=>{e.selectionDatesMode||(n.dataset.vcDatesDisabled=""),n.textContent="";const l=new Date(t);l.setMonth(l.getMonth()+o);const s=l.getMonth(),i=l.getFullYear(),r=(new Date(i,s,1).getDay()-e.firstWeekday+7)%7,c=new Date(i,s+1,0).getDate(),d=r+c,u=Math.ceil(d/7),m=7*u-d,p=[];for(let t=0;t<u;t++){const t=document.createElement("div");t.className=e.styles.datesRow,t.setAttribute("data-vc-dates","row"),t.setAttribute("role","row"),p.push(t);}let h=0,v=0;const g={addDate:e=>{p[h].appendChild(e),v++,v>=7&&(h++,v=0);}};createDatesFromPrevMonth(e,g,i,s,r),createDatesFromCurrentMonth(e,g,c,i,s),createDatesFromNextMonth(e,g,m,i,s);for(const e of p)n.appendChild(e);createDatePopup(e,n),createWeekNumbers(e,r,c,a[o],n);}));},layoutDefault=e=>`\n  <div class="${e.styles.header}" data-vc="header" role="toolbar" aria-label="${e.labels.navigation}">\n    <#ArrowPrev [month] />\n    <div class="${e.styles.headerContent}" data-vc-header="content">\n      <#Month />\n      <#Year />\n    </div>\n    <#ArrowNext [month] />\n  </div>\n  <div class="${e.styles.wrapper}" data-vc="wrapper">\n    <#WeekNumbers />\n    <div class="${e.styles.content}" data-vc="content" role="grid">\n      <#Week />\n      <#Dates />\n      <#DateRangeTooltip />\n    </div>\n  </div>\n  <#ControlTime />\n`,layoutMonths=e=>`\n  <div class="${e.styles.header}" data-vc="header" role="toolbar" aria-label="${e.labels.navigation}">\n    <div class="${e.styles.headerContent}" data-vc-header="content">\n      <#Month />\n      <#Year />\n    </div>\n  </div>\n  <div class="${e.styles.wrapper}" data-vc="wrapper">\n    <div class="${e.styles.content}" data-vc="content">\n      <#Months />\n    </div>\n  </div>\n`,layoutMultiple=e=>`\n  <div class="${e.styles.controls}" data-vc="controls" role="toolbar" aria-label="${e.labels.navigation}">\n    <#ArrowPrev [month] />\n    <#ArrowNext [month] />\n  </div>\n  <div class="${e.styles.grid}" data-vc="grid">\n    <#Multiple>\n      <div class="${e.styles.column}" data-vc="column" role="region">\n        <div class="${e.styles.header}" data-vc="header">\n          <div class="${e.styles.headerContent}" data-vc-header="content">\n            <#Month />\n            <#Year />\n          </div>\n        </div>\n        <div class="${e.styles.wrapper}" data-vc="wrapper">\n          <#WeekNumbers />\n          <div class="${e.styles.content}" data-vc="content" role="grid">\n            <#Week />\n            <#Dates />\n          </div>\n        </div>\n      </div>\n    <#/Multiple>\n    <#DateRangeTooltip />\n  </div>\n  <#ControlTime />\n`,layoutYears=e=>`\n  <div class="${e.styles.header}" data-vc="header" role="toolbar" aria-label="${e.labels.navigation}">\n    <#ArrowPrev [year] />\n    <div class="${e.styles.headerContent}" data-vc-header="content">\n      <#Month />\n      <#Year />\n    </div>\n    <#ArrowNext [year] />\n  </div>\n  <div class="${e.styles.wrapper}" data-vc="wrapper">\n    <div class="${e.styles.content}" data-vc="content">\n      <#Years />\n    </div>\n  </div>\n`,ArrowNext=(e,t)=>`<button type="button" class="${e.styles.arrowNext}" data-vc-arrow="next" aria-label="${e.labels.arrowNext[t]}"></button>`,ArrowPrev=(e,t)=>`<button type="button" class="${e.styles.arrowPrev}" data-vc-arrow="prev" aria-label="${e.labels.arrowPrev[t]}"></button>`,ControlTime=e=>e.selectionTimeMode?`<div class="${e.styles.time}" data-vc="time" role="group" aria-label="${e.labels.selectingTime}"></div>`:"",DateRangeTooltip=e=>e.onCreateDateRangeTooltip?`<div class="${e.styles.dateRangeTooltip}" data-vc-date-range-tooltip="hidden"></div>`:"",Dates=e=>`<div class="${e.styles.dates}" data-vc="dates" aria-live="assertive" aria-label="${e.labels.dates}" ${"multiple"===e.type?"aria-multiselectable":""}></div>`,Month=e=>`<button type="button" class="${e.styles.month}" data-vc="month"></button>`,Months=e=>`<div class="${e.styles.months}" data-vc="months" role="grid" aria-live="assertive" aria-label="${e.labels.months}"></div>`,Week=e=>`<div class="${e.styles.week}" data-vc="week" role="row" aria-label="${e.labels.week}"></div>`,WeekNumbers=e=>e.enableWeekNumbers?`<div class="${e.styles.weekNumbers}" data-vc-week="numbers" role="row" aria-label="${e.labels.weekNumber}"></div>`:"",Year=e=>`<button type="button" class="${e.styles.year}" data-vc="year"></button>`,Years=e=>`<div class="${e.styles.years}" data-vc="years" role="grid" aria-live="assertive" aria-label="${e.labels.years}"></div>`,components={ArrowNext:ArrowNext,ArrowPrev:ArrowPrev,ControlTime:ControlTime,Dates:Dates,DateRangeTooltip:DateRangeTooltip,Month:Month,Months:Months,Week:Week,WeekNumbers:WeekNumbers,Year:Year,Years:Years},getComponent=e=>components[e],parseLayout=(e,t)=>t.replace(/[\n\t]/g,"").replace(/<#(?!\/?Multiple)(.*?)>/g,((t,n)=>{const a=(n.match(/\[(.*?)\]/)||[])[1],o=n.replace(/[/\s\n\t]|\[(.*?)\]/g,""),l=getComponent(o),s=l?l(e,null!=a?a:null):"";return e.sanitizerHTML(s)})).replace(/[\n\t]/g,""),parseMultipleLayout=(e,t)=>t.replace(new RegExp("<#Multiple>(.*?)<#\\/Multiple>","gs"),((t,n)=>{const a=Array(e.context.displayMonthsCount).fill(n).join("");return e.sanitizerHTML(a)})).replace(/[\n\t]/g,""),createLayouts=(e,t)=>{const n={default:layoutDefault,month:layoutMonths,year:layoutYears,multiple:layoutMultiple};if(Object.keys(n).forEach((t=>{const a=t;e.layouts[a].length||(e.layouts[a]=n[a](e));})),e.context.mainElement.className=e.styles.calendar,e.context.mainElement.dataset.vc="calendar",e.context.mainElement.dataset.vcType=e.context.currentType,e.context.mainElement.role="application",e.context.mainElement.tabIndex=0,e.context.mainElement.ariaLabel=e.labels.application,"multiple"!==e.context.currentType){if("multiple"===e.type&&t){const n=e.context.mainElement.querySelector('[data-vc="controls"]'),a=e.context.mainElement.querySelector('[data-vc="grid"]'),o=t.closest('[data-vc="column"]');return n&&n.remove(),a&&(a.dataset.vcGrid="hidden"),o&&(o.dataset.vcColumn=e.context.currentType),void(o&&(o.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))))}e.context.mainElement.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]));}else e.context.mainElement.innerHTML=e.sanitizerHTML(parseMultipleLayout(e,parseLayout(e,e.layouts[e.context.currentType])));},setVisibilityArrows=(e,t,n,a)=>{e.style.visibility=n?"hidden":"",t.style.visibility=a?"hidden":"";},handleDefaultType=(e,t,n)=>{const a=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1))),o=new Date(a.getTime()),l=new Date(a.getTime());o.setMonth(o.getMonth()-e.monthsToSwitch),l.setMonth(l.getMonth()+e.monthsToSwitch);const s=getDate(e.context.dateMin),i=getDate(e.context.dateMax);e.selectionYearsMode||(s.setFullYear(a.getFullYear()),i.setFullYear(a.getFullYear()));const r=!e.selectionMonthsMode||o.getFullYear()<s.getFullYear()||o.getFullYear()===s.getFullYear()&&o.getMonth()<s.getMonth(),c=!e.selectionMonthsMode||l.getFullYear()>i.getFullYear()||l.getFullYear()===i.getFullYear()&&l.getMonth()>i.getMonth()-(e.context.displayMonthsCount-1);setVisibilityArrows(t,n,r,c);},handleYearType=(e,t,n)=>{const a=getDate(e.context.dateMin),o=getDate(e.context.dateMax),l=!!(a.getFullYear()&&e.context.displayYear-7<=a.getFullYear()),s=!!(o.getFullYear()&&e.context.displayYear+7>=o.getFullYear());setVisibilityArrows(t,n,l,s);},visibilityArrows=e=>{if("month"===e.context.currentType)return;const t=e.context.mainElement.querySelector('[data-vc-arrow="prev"]'),n=e.context.mainElement.querySelector('[data-vc-arrow="next"]');if(!t||!n)return;({default:()=>handleDefaultType(e,t,n),year:()=>handleYearType(e,t,n)})["multiple"===e.context.currentType?"default":e.context.currentType]();},visibilityHandler=(e,t,n,a,o)=>{const l=new Date(a.setFullYear(e.context.selectedYear,e.context.selectedMonth+n)).getFullYear(),s=new Date(a.setMonth(e.context.selectedMonth+n)).getMonth(),i=e.context.locale.months.long[s],r=t.closest('[data-vc="column"]');r&&(r.ariaLabel=`${i} ${l}`);const c={month:{id:s,label:i},year:{id:l,label:l}};t.innerText=String(c[o].label),t.dataset[`vc${o.charAt(0).toUpperCase()+o.slice(1)}`]=String(c[o].id),t.ariaLabel=`${e.labels[o]} ${c[o].label}`;const d={month:e.selectionMonthsMode,year:e.selectionYearsMode},u=false===d[o]||"only-arrows"===d[o];u&&(t.tabIndex=-1),t.disabled=u;},visibilityTitle=e=>{const t=e.context.mainElement.querySelectorAll('[data-vc="month"]'),n=e.context.mainElement.querySelectorAll('[data-vc="year"]'),a=new Date(e.context.selectedYear,e.context.selectedMonth,1);[t,n].forEach((t=>null==t?void 0:t.forEach(((t,n)=>visibilityHandler(e,t,n,a,t.dataset.vc)))));},setYearModifier=(e,t,n,a,o)=>{var l;const s={month:"[data-vc-months-month]",year:"[data-vc-years-year]"},i={month:{selected:"data-vc-months-month-selected",aria:"aria-selected",value:"vcMonthsMonth",selectedProperty:"selectedMonth"},year:{selected:"data-vc-years-year-selected",aria:"aria-selected",value:"vcYearsYear",selectedProperty:"selectedYear"}};o&&(null==(l=e.context.mainElement.querySelectorAll(s[n]))||l.forEach((e=>{e.removeAttribute(i[n].selected),e.removeAttribute(i[n].aria);})),setContext(e,i[n].selectedProperty,Number(t.dataset[i[n].value])),visibilityTitle(e),"year"===n&&visibilityArrows(e)),a&&(t.setAttribute(i[n].selected,""),t.setAttribute(i[n].aria,"true"));},getColumnID=(e,t)=>{var n;if("multiple"!==e.type)return {currentValue:null,columnID:0};const a=e.context.mainElement.querySelectorAll('[data-vc="column"]'),o=Array.from(a).findIndex((e=>e.closest(`[data-vc-column="${t}"]`)));return {currentValue:o>=0?Number(null==(n=a[o].querySelector(`[data-vc="${t}"]`))?void 0:n.getAttribute(`data-vc-${t}`)):null,columnID:Math.max(o,0)}},createMonthEl=(e,t,n,a,o,l,s)=>{const i=t.cloneNode(false);return i.className=e.styles.monthsMonth,i.innerText=a,i.ariaLabel=o,i.role="gridcell",i.dataset.vcMonthsMonth=`${s}`,l&&(i.ariaDisabled="true"),l&&(i.tabIndex=-1),i.disabled=l,setYearModifier(e,i,"month",n===s,false),i},createMonths=(e,t)=>{var n,a;const o=null==(n=null==t?void 0:t.closest('[data-vc="header"]'))?void 0:n.querySelector('[data-vc="year"]'),l=o?Number(o.dataset.vcYear):e.context.selectedYear,s=(null==t?void 0:t.dataset.vcMonth)?Number(t.dataset.vcMonth):e.context.selectedMonth;setContext(e,"currentType","month"),createLayouts(e,t),visibilityTitle(e);const i=e.context.mainElement.querySelector('[data-vc="months"]');if(!e.selectionMonthsMode||!i)return;const r=e.monthsToSwitch>1?e.context.locale.months.long.map(((t,n)=>s-e.monthsToSwitch*n)).concat(e.context.locale.months.long.map(((t,n)=>s+e.monthsToSwitch*n))).filter((e=>e>=0&&e<=12)):Array.from(Array(12).keys()),c=document.createElement("button");c.type="button";for(let t=0;t<12;t++){const n=getDate(e.context.dateMin),a=getDate(e.context.dateMax),o=e.context.displayMonthsCount-1,{columnID:d}=getColumnID(e,"month"),u=l<=n.getFullYear()&&t<n.getMonth()+d||l>=a.getFullYear()&&t>a.getMonth()-o+d||l>a.getFullYear()||t!==s&&!r.includes(t),m=createMonthEl(e,c,s,e.context.locale.months.short[t],e.context.locale.months.long[t],u,t);i.appendChild(m),e.onCreateMonthEls&&e.onCreateMonthEls(e,m);}null==(a=e.context.mainElement.querySelector("[data-vc-months-month]:not([disabled])"))||a.focus();},TimeInput=(e,t,n,a,o)=>`\n  <label class="${t}" data-vc-time-input="${e}">\n    <input type="text" name="${e}" maxlength="2" aria-label="${n[`input${e.charAt(0).toUpperCase()+e.slice(1)}`]}" value="${a}" ${o?"disabled":""}>\n  </label>\n`,TimeRange=(e,t,n,a,o,l,s)=>`\n  <label class="${t}" data-vc-time-range="${e}">\n    <input type="range" name="${e}" min="${a}" max="${o}" step="${l}" aria-label="${n[`range${e.charAt(0).toUpperCase()+e.slice(1)}`]}" value="${s}">\n  </label>\n`,handleActions=(e,t,n,a)=>{(({hour:()=>setContext(e,"selectedHours",n),minute:()=>setContext(e,"selectedMinutes",n)}))[a](),setContext(e,"selectedTime",`${e.context.selectedHours}:${e.context.selectedMinutes}${e.context.selectedKeeping?` ${e.context.selectedKeeping}`:""}`),e.onChangeTime&&e.onChangeTime(e,t,false),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t);},transformTime24=(e,t)=>{var n;return (null==(n={0:{AM:"00",PM:"12"},1:{AM:"01",PM:"13"},2:{AM:"02",PM:"14"},3:{AM:"03",PM:"15"},4:{AM:"04",PM:"16"},5:{AM:"05",PM:"17"},6:{AM:"06",PM:"18"},7:{AM:"07",PM:"19"},8:{AM:"08",PM:"20"},9:{AM:"09",PM:"21"},10:{AM:"10",PM:"22"},11:{AM:"11",PM:"23"},12:{AM:"00",PM:"12"}}[Number(e)])?void 0:n[t])||String(e)},handleClickKeepingTime=(e,t,n,a,o)=>{const l=l=>{const s="AM"===e.context.selectedKeeping?"PM":"AM",i=transformTime24(e.context.selectedHours,s);Number(i)<=a&&Number(i)>=o?(setContext(e,"selectedKeeping",s),n.value=i,handleActions(e,l,e.context.selectedHours,"hour"),t.ariaLabel=`${e.labels.btnKeeping} ${e.context.selectedKeeping}`,t.innerText=e.context.selectedKeeping):e.onChangeTime&&e.onChangeTime(e,l,true);};return t.addEventListener("click",l),()=>{t.removeEventListener("click",l);}},transformTime12=e=>({0:"12",13:"01",14:"02",15:"03",16:"04",17:"05",18:"06",19:"07",20:"08",21:"09",22:"10",23:"11"}[Number(e)]||String(e)),updateInputAndRange=(e,t,n,a)=>{e.value=n,t.value=a;},updateKeepingTime$1=(e,t,n)=>{t&&n&&(setContext(e,"selectedKeeping",n),t.innerText=n);},handleInput$1=(e,t,n,a,o,l,s)=>{const i={hour:(i,r,c)=>{if(!e.selectionTimeMode)return;({12:()=>{if(!e.context.selectedKeeping)return;const d=Number(transformTime24(r,e.context.selectedKeeping));if(!(d<=l&&d>=s))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,true));updateInputAndRange(n,t,transformTime12(r),transformTime24(r,e.context.selectedKeeping)),i>12&&updateKeepingTime$1(e,a,"PM"),handleActions(e,c,transformTime12(r),o);},24:()=>{if(!(i<=l&&i>=s))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,true));updateInputAndRange(n,t,r,r),handleActions(e,c,r,o);}})[e.selectionTimeMode]();},minute:(a,i,r)=>{if(!(a<=l&&a>=s))return n.value=e.context.selectedMinutes,void(e.onChangeTime&&e.onChangeTime(e,r,true));n.value=i,t.value=i,handleActions(e,r,i,o);}},r=e=>{const t=Number(n.value),a=n.value.padStart(2,"0");i[o]&&i[o](t,a,e);};return n.addEventListener("change",r),()=>{n.removeEventListener("change",r);}},updateInputAndTime=(e,t,n,a,o)=>{t.value=o,handleActions(e,n,o,a);},updateKeepingTime=(e,t,n)=>{t&&(setContext(e,"selectedKeeping",n),t.innerText=n);},handleRange=(e,t,n,a,o)=>{const l=l=>{const s=Number(t.value),i=t.value.padStart(2,"0"),r="hour"===o,c=24===e.selectionTimeMode,d=s>0&&s<12;r&&!c&&updateKeepingTime(e,a,0===s||d?"AM":"PM"),updateInputAndTime(e,n,l,o,!r||c||d?i:transformTime12(t.value));};return t.addEventListener("input",l),()=>{t.removeEventListener("input",l);}},handleMouseOver=e=>e.setAttribute("data-vc-input-focus",""),handleMouseOut=e=>e.removeAttribute("data-vc-input-focus"),handleTime=(e,t)=>{const n=t.querySelector('[data-vc-time-range="hour"] input[name="hour"]'),a=t.querySelector('[data-vc-time-range="minute"] input[name="minute"]'),o=t.querySelector('[data-vc-time-input="hour"] input[name="hour"]'),l=t.querySelector('[data-vc-time-input="minute"] input[name="minute"]'),s=t.querySelector('[data-vc-time="keeping"]');if(!(n&&a&&o&&l))return;const i=e=>{e.target===n&&handleMouseOver(o),e.target===a&&handleMouseOver(l);},r=e=>{e.target===n&&handleMouseOut(o),e.target===a&&handleMouseOut(l);};return t.addEventListener("mouseover",i),t.addEventListener("mouseout",r),handleInput$1(e,n,o,s,"hour",e.timeMaxHour,e.timeMinHour),handleInput$1(e,a,l,s,"minute",e.timeMaxMinute,e.timeMinMinute),handleRange(e,n,o,s,"hour"),handleRange(e,a,l,s,"minute"),s&&handleClickKeepingTime(e,s,n,e.timeMaxHour,e.timeMinHour),()=>{t.removeEventListener("mouseover",i),t.removeEventListener("mouseout",r);}},createTime=e=>{const t=e.context.mainElement.querySelector('[data-vc="time"]');if(!e.selectionTimeMode||!t)return;const[n,a]=[e.timeMinHour,e.timeMaxHour],[o,l]=[e.timeMinMinute,e.timeMaxMinute],s=e.context.selectedKeeping?transformTime24(e.context.selectedHours,e.context.selectedKeeping):e.context.selectedHours,i="range"===e.timeControls;var r;t.innerHTML=e.sanitizerHTML(`\n    <div class="${e.styles.timeContent}" data-vc-time="content">\n      ${TimeInput("hour",e.styles.timeHour,e.labels,e.context.selectedHours,i)}\n      ${TimeInput("minute",e.styles.timeMinute,e.labels,e.context.selectedMinutes,i)}\n      ${12===e.selectionTimeMode?(r=e.context.selectedKeeping,`<button type="button" class="${e.styles.timeKeeping}" aria-label="${e.labels.btnKeeping} ${r}" data-vc-time="keeping" ${i?"disabled":""}>${r}</button>`):""}\n    </div>\n    <div class="${e.styles.timeRanges}" data-vc-time="ranges">\n      ${TimeRange("hour",e.styles.timeRange,e.labels,n,a,e.timeStepHour,s)}\n      ${TimeRange("minute",e.styles.timeRange,e.labels,o,l,e.timeStepMinute,e.context.selectedMinutes)}\n    </div>\n  `),handleTime(e,t);},createWeek=e=>{const t=e.selectedWeekends?[...e.selectedWeekends]:[],n=[...e.context.locale.weekdays.long].reduce(((n,a,o)=>[...n,{id:o,titleShort:e.context.locale.weekdays.short[o],titleLong:a,isWeekend:t.includes(o)}]),[]),a=[...n.slice(e.firstWeekday),...n.slice(0,e.firstWeekday)];e.context.mainElement.querySelectorAll('[data-vc="week"]').forEach((t=>{const n=e.onClickWeekDay?document.createElement("button"):document.createElement("b");e.onClickWeekDay&&(n.type="button"),a.forEach((a=>{const o=n.cloneNode(true);o.innerText=a.titleShort,o.className=e.styles.weekDay,o.role="columnheader",o.ariaLabel=a.titleLong,o.dataset.vcWeekDay=String(a.id),a.isWeekend&&(o.dataset.vcWeekDayOff=""),t.appendChild(o);}));}));},createYearEl=(e,t,n,a,o)=>{const l=t.cloneNode(false);return l.className=e.styles.yearsYear,l.innerText=String(o),l.ariaLabel=String(o),l.role="gridcell",l.dataset.vcYearsYear=`${o}`,a&&(l.ariaDisabled="true"),a&&(l.tabIndex=-1),l.disabled=a,setYearModifier(e,l,"year",n===o,false),l},createYears=(e,t)=>{var n;const a=(null==t?void 0:t.dataset.vcYear)?Number(t.dataset.vcYear):e.context.selectedYear;setContext(e,"currentType","year"),createLayouts(e,t),visibilityTitle(e),visibilityArrows(e);const o=e.context.mainElement.querySelector('[data-vc="years"]');if(!e.selectionYearsMode||!o)return;const l="multiple"!==e.type||e.context.selectedYear===a?0:1,s=document.createElement("button");s.type="button";for(let t=e.context.displayYear-7;t<e.context.displayYear+8;t++){const n=t<getDate(e.context.dateMin).getFullYear()+l||t>getDate(e.context.dateMax).getFullYear(),i=createYearEl(e,s,a,n,t);o.appendChild(i),e.onCreateYearEls&&e.onCreateYearEls(e,i);}null==(n=e.context.mainElement.querySelector("[data-vc-years-year]:not([disabled])"))||n.focus();},trackChangesHTMLElement=(e,t,n)=>{new MutationObserver((e=>{for(let a=0;a<e.length;a++){if(e[a].attributeName===t){n();break}}})).observe(e,{attributes:true});},haveListener={value:false,set:()=>haveListener.value=true,check:()=>haveListener.value},setTheme=(e,t)=>e.dataset.vcTheme=t,trackChangesThemeInSystemSettings=(e,t)=>{if(setTheme(e.context.mainElement,t.matches?"dark":"light"),"system"!==e.selectedTheme||haveListener.check())return;const n=e=>{const t=document.querySelectorAll('[data-vc="calendar"]');null==t||t.forEach((t=>setTheme(t,e.matches?"dark":"light")));};t.addEventListener?t.addEventListener("change",n):t.addListener(n),haveListener.set();},detectTheme=(e,t)=>{const n=e.themeAttrDetect.length?document.querySelector(e.themeAttrDetect):null,a=e.themeAttrDetect.replace(/^.*\[(.+)\]/g,((e,t)=>t));if(!n||"system"===n.getAttribute(a))return void trackChangesThemeInSystemSettings(e,t);const o=n.getAttribute(a);o?(setTheme(e.context.mainElement,o),trackChangesHTMLElement(n,a,(()=>{const t=n.getAttribute(a);t&&setTheme(e.context.mainElement,t);}))):trackChangesThemeInSystemSettings(e,t);},handleTheme=e=>{"not all"!==window.matchMedia("(prefers-color-scheme)").media?"system"===e.selectedTheme?detectTheme(e,window.matchMedia("(prefers-color-scheme: dark)")):setTheme(e.context.mainElement,e.selectedTheme):setTheme(e.context.mainElement,"light");},capitalizeFirstLetter=e=>e.charAt(0).toUpperCase()+e.slice(1).replace(/\./,""),getLocaleWeekday=(e,t,n)=>{const a=new Date(`1978-01-0${t+1}T00:00:00.000Z`),o=a.toLocaleString(n,{weekday:"short",timeZone:"UTC"}),l=a.toLocaleString(n,{weekday:"long",timeZone:"UTC"});e.context.locale.weekdays.short.push(capitalizeFirstLetter(o)),e.context.locale.weekdays.long.push(capitalizeFirstLetter(l));},getLocaleMonth=(e,t,n)=>{const a=new Date(`1978-${String(t+1).padStart(2,"0")}-01T00:00:00.000Z`),o=a.toLocaleString(n,{month:"short",timeZone:"UTC"}),l=a.toLocaleString(n,{month:"long",timeZone:"UTC"});e.context.locale.months.short.push(capitalizeFirstLetter(o)),e.context.locale.months.long.push(capitalizeFirstLetter(l));},getLocale=e=>{var t,n,a,o,l,s,i,r;if(!(e.context.locale.weekdays.short[6]&&e.context.locale.weekdays.long[6]&&e.context.locale.months.short[11]&&e.context.locale.months.long[11]))if("string"==typeof e.locale){if("string"==typeof e.locale&&!e.locale.length)throw new Error(errorMessages.notLocale);Array.from({length:7},((t,n)=>getLocaleWeekday(e,n,e.locale))),Array.from({length:12},((t,n)=>getLocaleMonth(e,n,e.locale)));}else {if(!((null==(n=null==(t=e.locale)?void 0:t.weekdays)?void 0:n.short[6])&&(null==(o=null==(a=e.locale)?void 0:a.weekdays)?void 0:o.long[6])&&(null==(s=null==(l=e.locale)?void 0:l.months)?void 0:s.short[11])&&(null==(r=null==(i=e.locale)?void 0:i.months)?void 0:r.long[11])))throw new Error(errorMessages.notLocale);setContext(e,"locale",__spreadValues({},e.locale));}},create=e=>{const t={default:()=>{createWeek(e),createDates(e);},multiple:()=>{createWeek(e),createDates(e);},month:()=>createMonths(e),year:()=>createYears(e)};handleTheme(e),getLocale(e),createLayouts(e),visibilityTitle(e),visibilityArrows(e),createTime(e),t[e.context.currentType]();},handleArrowKeys=e=>{const t=t=>{var n;const a=t.target;if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(t.key)||"button"!==a.localName)return;const o=Array.from(e.context.mainElement.querySelectorAll('[data-vc="calendar"] button')),l=o.indexOf(a);if(-1===l)return;const s=(i=o[l]).hasAttribute("data-vc-date-btn")?7:i.hasAttribute("data-vc-months-month")?4:i.hasAttribute("data-vc-years-year")?5:1;var i;const r=(0, {ArrowUp:()=>Math.max(0,l-s),ArrowDown:()=>Math.min(o.length-1,l+s),ArrowLeft:()=>Math.max(0,l-1),ArrowRight:()=>Math.min(o.length-1,l+1)}[t.key])();null==(n=o[r])||n.focus();};return e.context.mainElement.addEventListener("keydown",t),()=>e.context.mainElement.removeEventListener("keydown",t)},handleMonth=(e,t)=>{const n=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1)));(({prev:()=>n.setMonth(n.getMonth()-e.monthsToSwitch),next:()=>n.setMonth(n.getMonth()+e.monthsToSwitch)}))[t](),setContext(e,"selectedMonth",n.getMonth()),setContext(e,"selectedYear",n.getFullYear()),visibilityTitle(e),visibilityArrows(e),createDates(e);},handleClickArrow=(e,t)=>{const n=t.target.closest("[data-vc-arrow]");if(n){if(["default","multiple"].includes(e.context.currentType))handleMonth(e,n.dataset.vcArrow);else if("year"===e.context.currentType&&void 0!==e.context.displayYear){const a={prev:-15,next:15}[n.dataset.vcArrow];setContext(e,"displayYear",e.context.displayYear+a),createYears(e,t.target);}e.onClickArrow&&e.onClickArrow(e,t);}},resolveToggle=(e,t)=>void 0===t||("function"==typeof t?t(e):t),canToggleSelection=e=>resolveToggle(e,e.enableDateToggle),handleSelectDate=(e,t,n)=>{const a=t.dataset.vcDate,o=t.closest("[data-vc-date][data-vc-date-selected]"),l=canToggleSelection(e);if(o&&!l)return;const s=o?e.context.selectedDates.filter((e=>e!==a)):n?[...e.context.selectedDates,a]:[a];setContext(e,"selectedDates",s);},createDateRangeTooltip=(e,t,n)=>{if(!t)return;if(!n)return t.dataset.vcDateRangeTooltip="hidden",void(t.textContent="");const a=e.context.mainElement.getBoundingClientRect(),o=n.getBoundingClientRect();t.style.left=o.left-a.left+o.width/2+"px",t.style.top=o.bottom-a.top-o.height+"px",t.dataset.vcDateRangeTooltip="visible",t.innerHTML=e.sanitizerHTML(e.onCreateDateRangeTooltip(e,n,t,o,a));},state={self:null,lastDateEl:null,isHovering:false,rangeMin:void 0,rangeMax:void 0,tooltipEl:null,timeoutId:null},addHoverEffect=(e,t,n)=>{var a,o,l;if(!(null==(o=null==(a=state.self)?void 0:a.context)?void 0:o.selectedDates[0]))return;const s=getDateString(e);(null==(l=state.self.context.disableDates)?void 0:l.includes(s))||(state.self.context.mainElement.querySelectorAll(`[data-vc-date="${s}"]`).forEach((e=>e.dataset.vcDateHover="")),t.forEach((e=>e.dataset.vcDateHover="first")),n.forEach((e=>{"first"===e.dataset.vcDateHover?e.dataset.vcDateHover="first-and-last":e.dataset.vcDateHover="last";})));},removeHoverEffect=()=>{var e,t;if(!(null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.mainElement))return;state.self.context.mainElement.querySelectorAll("[data-vc-date-hover]").forEach((e=>e.removeAttribute("data-vc-date-hover")));},handleHoverDatesEvent=e=>{var t,n;if(!e||!(null==(n=null==(t=state.self)?void 0:t.context)?void 0:n.selectedDates[0]))return;if(!e.closest('[data-vc="dates"]'))return state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),void removeHoverEffect();const a=e.closest("[data-vc-date]");if(!a||state.lastDateEl===a)return;state.lastDateEl=a,createDateRangeTooltip(state.self,state.tooltipEl,a),removeHoverEffect();const o=a.dataset.vcDate,l=getDate(state.self.context.selectedDates[0]),s=getDate(o),i=state.self.context.mainElement.querySelectorAll(`[data-vc-date="${state.self.context.selectedDates[0]}"]`),r=state.self.context.mainElement.querySelectorAll(`[data-vc-date="${o}"]`),[c,d]=l<s?[i,r]:[r,i],[u,m]=l<s?[l,s]:[s,l];for(let e=new Date(u);e<=m;e.setDate(e.getDate()+1))addHoverEffect(e,c,d);},handleHoverSelectedDatesRangeEvent=e=>{const t=null==e?void 0:e.closest("[data-vc-date-selected]");if(!t&&state.lastDateEl)return state.lastDateEl=null,void createDateRangeTooltip(state.self,state.tooltipEl,null);t&&state.lastDateEl!==t&&(state.lastDateEl=t,createDateRangeTooltip(state.self,state.tooltipEl,t));},optimizedHoverHandler=e=>t=>{const n=t.target;state.isHovering||(state.isHovering=true,requestAnimationFrame((()=>{e(n),state.isHovering=false;})));},optimizedHandleHoverDatesEvent=optimizedHoverHandler(handleHoverDatesEvent),optimizedHandleHoverSelectedDatesRangeEvent=optimizedHoverHandler(handleHoverSelectedDatesRangeEvent),handleCancelSelectionDates=e=>{state.self&&"Escape"===e.key&&(state.lastDateEl=null,setContext(state.self,"selectedDates",[]),state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates),createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect());},handleMouseLeave=()=>{null!==state.timeoutId&&clearTimeout(state.timeoutId),state.timeoutId=setTimeout((()=>{state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect();}),50);},updateDisabledDates=()=>{var e,t,n,a;if(!(null==(n=null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.selectedDates)?void 0:n[0])||!(null==(a=state.self.context.disableDates)?void 0:a[0]))return;const o=getDate(state.self.context.selectedDates[0]),[l,s]=state.self.context.disableDates.map((e=>getDate(e))).reduce((([e,t],n)=>[o>=n?n:e,o<n&&null===t?n:t]),[null,null]);l&&setContext(state.self,"displayDateMin",getDateString(new Date(l.setDate(l.getDate()+1)))),s&&setContext(state.self,"displayDateMax",getDateString(new Date(s.setDate(s.getDate()-1))));state.self.disableDatesPast&&!state.self.disableAllDates&&getDate(state.self.context.displayDateMin)<getDate(state.self.context.dateToday)&&setContext(state.self,"displayDateMin",state.self.context.dateToday);},handleSelectDateRange=(e,t)=>{state.self=e,state.lastDateEl=t,removeHoverEffect(),e.disableDatesGaps&&(state.rangeMin=state.rangeMin?state.rangeMin:e.context.displayDateMin,state.rangeMax=state.rangeMax?state.rangeMax:e.context.displayDateMax),e.onCreateDateRangeTooltip&&(state.tooltipEl=e.context.mainElement.querySelector("[data-vc-date-range-tooltip]"));const n=null==t?void 0:t.dataset.vcDate;if(n){const t=1===e.context.selectedDates.length&&e.context.selectedDates[0].includes(n),a=t&&!canToggleSelection(e)?[n,n]:t&&canToggleSelection(e)?[]:e.context.selectedDates.length>1?[n]:[...e.context.selectedDates,n];setContext(e,"selectedDates",a),e.context.selectedDates.length>1&&e.context.selectedDates.sort(((e,t)=>+new Date(e)-+new Date(t)));}({set:()=>(e.disableDatesGaps&&updateDisabledDates(),createDateRangeTooltip(state.self,state.tooltipEl,t),state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates),state.self.context.mainElement.addEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.addEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.addEventListener("keydown",handleCancelSelectionDates),()=>{state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates);}),reset:()=>{const[n,a]=[e.context.selectedDates[0],e.context.selectedDates[e.context.selectedDates.length-1]],o=e.context.selectedDates[0]!==e.context.selectedDates[e.context.selectedDates.length-1],l=parseDates([`${n}:${a}`]).filter((t=>!e.context.disableDates.includes(t))),s=o?e.enableEdgeDatesOnly?[n,a]:l:[e.context.selectedDates[0],e.context.selectedDates[0]];if(setContext(e,"selectedDates",s),e.disableDatesGaps&&(setContext(e,"displayDateMin",state.rangeMin),setContext(e,"displayDateMax",state.rangeMax)),state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates),e.onCreateDateRangeTooltip)return e.context.selectedDates[0]||(state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,null)),e.context.selectedDates[0]&&(state.self.context.mainElement.addEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.addEventListener("mouseleave",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,t)),()=>{state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave);}}})[1===e.context.selectedDates.length?"set":"reset"]();},updateDateModifier=e=>{e.context.mainElement.querySelectorAll("[data-vc-date]").forEach((t=>{const n=t.querySelector("[data-vc-date-btn]"),a=t.dataset.vcDate,o=getDate(a).getDay();setDateModifier(e,e.context.selectedYear,t,n,o,a,"current");}));},handleClickDate=(e,t)=>{var n;const a=t.target,o=a.closest("[data-vc-date-btn]");if(!e.selectionDatesMode||!["single","multiple","multiple-ranged"].includes(e.selectionDatesMode)||!o)return;const l=o.closest("[data-vc-date]");(({single:()=>handleSelectDate(e,l,false),multiple:()=>handleSelectDate(e,l,true),"multiple-ranged":()=>handleSelectDateRange(e,l)}))[e.selectionDatesMode](),null==(n=e.context.selectedDates)||n.sort(((e,t)=>+new Date(e)-+new Date(t))),e.onClickDate&&e.onClickDate(e,t),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t);const s=a.closest('[data-vc-date-month="prev"]'),i=a.closest('[data-vc-date-month="next"]');({prev:()=>e.enableMonthChangeOnDayClick?handleMonth(e,"prev"):updateDateModifier(e),next:()=>e.enableMonthChangeOnDayClick?handleMonth(e,"next"):updateDateModifier(e),current:()=>updateDateModifier(e)})[s?"prev":i?"next":"current"]();},typeClick=["month","year"],getValue=(e,t,n)=>{const{currentValue:a,columnID:o}=getColumnID(e,t);return "month"===e.context.currentType&&o>=0?n-o:"year"===e.context.currentType&&e.context.selectedYear!==a?n-1:n},handleMultipleYearSelection=(e,t)=>{const n=getValue(e,"year",Number(t.dataset.vcYearsYear)),a=getDate(e.context.dateMin),o=getDate(e.context.dateMax),l=e.context.displayMonthsCount-1,{columnID:s}=getColumnID(e,"year"),i=e.context.selectedMonth<a.getMonth()&&n<=a.getFullYear(),r=e.context.selectedMonth>o.getMonth()-l+s&&n>=o.getFullYear(),c=n<a.getFullYear(),d=n>o.getFullYear(),u=i||c?a.getFullYear():r||d?o.getFullYear():n,m=i||c?a.getMonth():r||d?o.getMonth()-l+s:e.context.selectedMonth;setContext(e,"selectedYear",u),setContext(e,"selectedMonth",m);},handleMultipleMonthSelection=(e,t)=>{const n=t.closest('[data-vc-column="month"]').querySelector('[data-vc="year"]'),a=getValue(e,"month",Number(t.dataset.vcMonthsMonth)),o=Number(n.dataset.vcYear),l=getDate(e.context.dateMin),s=getDate(e.context.dateMax),i=a<l.getMonth()&&o<=l.getFullYear(),r=a>s.getMonth()&&o>=s.getFullYear();setContext(e,"selectedYear",o),setContext(e,"selectedMonth",i?l.getMonth():r?s.getMonth():a);},handleItemClick=(e,t,n,a)=>{var o;({year:()=>{if("multiple"===e.type)return handleMultipleYearSelection(e,a);setContext(e,"selectedYear",Number(a.dataset.vcYearsYear));},month:()=>{if("multiple"===e.type)return handleMultipleMonthSelection(e,a);setContext(e,"selectedMonth",Number(a.dataset.vcMonthsMonth));}})[n]();(({year:()=>{var n;return null==(n=e.onClickYear)?void 0:n.call(e,e,t)},month:()=>{var n;return null==(n=e.onClickMonth)?void 0:n.call(e,e,t)}}))[n](),e.context.currentType!==e.type?(setContext(e,"currentType",e.type),create(e),null==(o=e.context.mainElement.querySelector(`[data-vc="${n}"]`))||o.focus()):setYearModifier(e,a,n,true,true);},handleClickType=(e,t,n)=>{var a;const o=t.target,l=o.closest(`[data-vc="${n}"]`),s={year:()=>createYears(e,o),month:()=>createMonths(e,o)};if(l&&e.onClickTitle&&e.onClickTitle(e,t),l&&e.context.currentType!==n)return s[n]();const i=o.closest(`[data-vc-${n}s-${n}]`);if(i)return handleItemClick(e,t,n,i);const r=o.closest('[data-vc="grid"]'),c=o.closest('[data-vc="column"]');(e.context.currentType===n&&l||"multiple"===e.type&&e.context.currentType===n&&r&&!c)&&(setContext(e,"currentType",e.type),create(e),null==(a=e.context.mainElement.querySelector(`[data-vc="${n}"]`))||a.focus());},handleClickMonthOrYear=(e,t)=>{const n={month:e.selectionMonthsMode,year:e.selectionYearsMode};typeClick.forEach((a=>{n[a]&&t.target&&handleClickType(e,t,a);}));},handleClickWeekNumber=(e,t)=>{if(!e.enableWeekNumbers||!e.onClickWeekNumber)return;const n=t.target.closest("[data-vc-week-number]"),a=e.context.mainElement.querySelectorAll("[data-vc-date-week-number]");if(!n||!a[0])return;const o=Number(n.innerText),l=Number(n.dataset.vcWeekYear),s=Array.from(a).filter((e=>Number(e.dataset.vcDateWeekNumber)===o));e.onClickWeekNumber(e,o,l,s,t);},handleClickWeekDay=(e,t)=>{if(!e.onClickWeekDay)return;const n=t.target.closest("[data-vc-week-day]"),a=t.target.closest('[data-vc="column"]'),o=a?a.querySelectorAll("[data-vc-date-week-day]"):e.context.mainElement.querySelectorAll("[data-vc-date-week-day]");if(!n||!o[0])return;const l=Number(n.dataset.vcWeekDay),s=Array.from(o).filter((e=>Number(e.dataset.vcDateWeekDay)===l));e.onClickWeekDay(e,l,s,t);},handleClick=e=>{const t=t=>{handleClickArrow(e,t),handleClickWeekDay(e,t),handleClickWeekNumber(e,t),handleClickDate(e,t),handleClickMonthOrYear(e,t);};return e.context.mainElement.addEventListener("click",t),()=>e.context.mainElement.removeEventListener("click",t)},initMonthsCount=e=>{if("multiple"===e.type&&(e.displayMonthsCount<=1||e.displayMonthsCount>12))throw new Error(errorMessages.incorrectMonthsCount);if("multiple"!==e.type&&e.displayMonthsCount>1)throw new Error(errorMessages.incorrectMonthsCount);setContext(e,"displayMonthsCount",e.displayMonthsCount?e.displayMonthsCount:"multiple"===e.type?2:1);},getLocalDate=()=>{const e=new Date;return new Date(e.getTime()-6e4*e.getTimezoneOffset()).toISOString().substring(0,10)},resolveDate=(e,t)=>"today"===e?getLocalDate():e instanceof Date||"number"==typeof e||"string"==typeof e?parseDates([e])[0]:t,initRange=e=>{var t,n,a;const o=resolveDate(e.dateMin,e.dateMin),l=resolveDate(e.dateMax,e.dateMax),s=resolveDate(e.displayDateMin,o),i=resolveDate(e.displayDateMax,l);setContext(e,"dateToday",resolveDate(e.dateToday,e.dateToday)),setContext(e,"displayDateMin",s?getDate(o)>=getDate(s)?o:s:o),setContext(e,"displayDateMax",i?getDate(l)<=getDate(i)?l:i:l);const r=e.disableDatesPast&&!e.disableAllDates&&getDate(s)<getDate(e.context.dateToday);setContext(e,"displayDateMin",r||e.disableAllDates?e.context.dateToday:s),setContext(e,"displayDateMax",e.disableAllDates?e.context.dateToday:i),setContext(e,"disableDates",e.disableDates[0]&&!e.disableAllDates?parseDates(e.disableDates):e.disableAllDates?[e.context.displayDateMin]:[]),e.context.disableDates.length>1&&e.context.disableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),setContext(e,"enableDates",e.enableDates[0]?parseDates(e.enableDates):[]),(null==(t=e.context.enableDates)?void 0:t[0])&&(null==(n=e.context.disableDates)?void 0:n[0])&&setContext(e,"disableDates",e.context.disableDates.filter((t=>!e.context.enableDates.includes(t)))),e.context.enableDates.length>1&&e.context.enableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),(null==(a=e.context.enableDates)?void 0:a[0])&&e.disableAllDates&&(setContext(e,"displayDateMin",e.context.enableDates[0]),setContext(e,"displayDateMax",e.context.enableDates[e.context.enableDates.length-1])),setContext(e,"dateMin",e.displayDisabledDates?o:e.context.displayDateMin),setContext(e,"dateMax",e.displayDisabledDates?l:e.context.displayDateMax);},initSelectedDates=e=>{var t;setContext(e,"selectedDates",(null==(t=e.selectedDates)?void 0:t[0])?parseDates(e.selectedDates):[]);},displayClosestValidDate=e=>{const t=t=>{const n=new Date(t);setInitialContext(e,n.getMonth(),n.getFullYear());};if(e.displayDateMin&&"today"!==e.displayDateMin&&(n=e.displayDateMin,a=new Date,new Date(n).getTime()>a.getTime())){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMin;return t(getDate(resolveDate(n,e.displayDateMin))),true}var n,a;if(e.displayDateMax&&"today"!==e.displayDateMax&&((e,t)=>new Date(e).getTime()<t.getTime())(e.displayDateMax,new Date)){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMax;return t(getDate(resolveDate(n,e.displayDateMax))),true}return  false},setInitialContext=(e,t,n)=>{setContext(e,"selectedMonth",t),setContext(e,"selectedYear",n),setContext(e,"displayYear",n);},initSelectedMonthYear=e=>{var t;if(e.enableJumpToSelectedDate&&(null==(t=e.selectedDates)?void 0:t[0])&&void 0===e.selectedMonth&&void 0===e.selectedYear){const t=getDate(parseDates(e.selectedDates)[0]);return void setInitialContext(e,t.getMonth(),t.getFullYear())}if(displayClosestValidDate(e))return;const n=void 0!==e.selectedMonth&&Number(e.selectedMonth)>=0&&Number(e.selectedMonth)<12,a=void 0!==e.selectedYear&&Number(e.selectedYear)>=0&&Number(e.selectedYear)<=9999;setInitialContext(e,n?Number(e.selectedMonth):getDate(e.context.dateToday).getMonth(),a?Number(e.selectedYear):getDate(e.context.dateToday).getFullYear());},initTime=e=>{var t,n,a;if(!e.selectionTimeMode)return;if(![12,24].includes(e.selectionTimeMode))throw new Error(errorMessages.incorrectTime);const o=12===e.selectionTimeMode,l=o?/^(0[1-9]|1[0-2]):([0-5][0-9]) ?(AM|PM)?$/i:/^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/;let[s,i,r]=null!=(a=null==(n=null==(t=e.selectedTime)?void 0:t.match(l))?void 0:n.slice(1))?a:[];s?o&&!r&&(r="AM"):(s=o?transformTime12(String(e.timeMinHour)):String(e.timeMinHour),i=String(e.timeMinMinute),r=o?Number(transformTime12(String(e.timeMinHour)))>=12?"PM":"AM":null),setContext(e,"selectedHours",s.padStart(2,"0")),setContext(e,"selectedMinutes",i.padStart(2,"0")),setContext(e,"selectedKeeping",r),setContext(e,"selectedTime",`${e.context.selectedHours}:${e.context.selectedMinutes}${r?` ${r}`:""}`);},initAllVariables=e=>{setContext(e,"currentType",e.type),initMonthsCount(e),initRange(e),initSelectedMonthYear(e),initSelectedDates(e),initTime(e);},reset=(e,{year:t,month:n,dates:a,time:o,locale:l},s=true)=>{var i;const r={year:e.selectedYear,month:e.selectedMonth,dates:e.selectedDates,time:e.selectedTime};if(e.selectedYear=t?r.year:e.context.selectedYear,e.selectedMonth=n?r.month:e.context.selectedMonth,e.selectedTime=o?r.time:e.context.selectedTime,e.selectedDates="only-first"===a&&(null==(i=e.context.selectedDates)?void 0:i[0])?[e.context.selectedDates[0]]:true===a?r.dates:e.context.selectedDates,l){setContext(e,"locale",{months:{short:[],long:[]},weekdays:{short:[],long:[]}});}initAllVariables(e),s&&create(e),e.selectedYear=r.year,e.selectedMonth=r.month,e.selectedDates=r.dates,e.selectedTime=r.time,"multiple-ranged"===e.selectionDatesMode&&a&&handleSelectDateRange(e,null);},createToInput=e=>{const t=document.createElement("div");return t.className=e.styles.calendar,t.dataset.vc="calendar",t.dataset.vcInput="",t.dataset.vcCalendarHidden="",setContext(e,"inputModeInit",true),setContext(e,"isShowInInputMode",false),setContext(e,"mainElement",t),document.body.appendChild(e.context.mainElement),reset(e,{year:true,month:true,dates:true,time:true,locale:true}),setTimeout((()=>show(e))),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e)},canOpenOnFocus=e=>resolveToggle(e,e.openOnFocus),handleInput=e=>{setContext(e,"inputElement",e.context.mainElement);const t=()=>{e.context.inputModeInit?setTimeout((()=>show(e))):createToInput(e);};e.context.inputElement.addEventListener("click",t);const n="function"==typeof e.openOnFocus||true===e.openOnFocus,a=()=>{shouldSkipOpenOnFocus(e)?clearSkipOpenOnFocus(e):canOpenOnFocus(e)&&t();};n&&e.context.inputElement.addEventListener("focus",a);const o=t=>{const n="Tab"===t.key&&!t.shiftKey,a=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(t.key);(n||a)&&(t=>{var n;if(!e.context.isShowInInputMode)return  false;if(document.activeElement!==e.context.inputElement)return  false;const a=e=>e.tabIndex>=0&&!e.hasAttribute("disabled")&&"true"!==e.getAttribute("aria-disabled"),o=null!=(n=document.createTreeWalker(e.context.mainElement,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>a(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}).nextNode())?n:a(e.context.mainElement)?e.context.mainElement:null;!o||o.tabIndex<0||(t.preventDefault(),o.focus());})(t);};return e.context.inputElement.addEventListener("keydown",o),()=>{e.context.inputElement.removeEventListener("click",t),n&&e.context.inputElement.removeEventListener("focus",a),e.context.inputElement.removeEventListener("keydown",o);}},init=e=>(setContext(e,"originalElement",e.context.mainElement.cloneNode(true)),setContext(e,"isInit",true),e.inputMode?handleInput(e):(initAllVariables(e),create(e),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e))),update=(e,t)=>{if(!e.context.isInit)throw new Error(errorMessages.notInit);reset(e,__spreadValues(__spreadValues({},{year:true,month:true,dates:true,time:true,locale:true}),t),!(e.inputMode&&!e.context.inputModeInit)),e.onUpdate&&e.onUpdate(e);},replaceProperties=(e,t)=>{const n=Object.keys(t);for(let a=0;a<n.length;a++){const o=n[a];"object"!=typeof e[o]||"object"!=typeof t[o]||t[o]instanceof Date||Array.isArray(t[o])?void 0!==t[o]&&(e[o]=t[o]):replaceProperties(e[o],t[o]);}},set=(e,t,n)=>{replaceProperties(e,t),e.context.isInit&&update(e,n);};function findBestPickerPosition(e,t){const n="left";if(!t||!e)return n;const{canShow:a,parentPositions:o}=getAvailablePosition(e,t),l=a.left&&a.right;return (l&&a.bottom?"center":l&&a.top?["top","center"]:Array.isArray(o)?["bottom"===o[0]?"top":"bottom",...o.slice(1)]:o)||n}const setPosition=(e,t,n)=>{if(!e)return;const a="auto"===n?findBestPickerPosition(e,t):n,o={top:-t.offsetHeight,bottom:e.offsetHeight,left:0,center:e.offsetWidth/2-t.offsetWidth/2,right:e.offsetWidth-t.offsetWidth},l=Array.isArray(a)?a[0]:"bottom",s=Array.isArray(a)?a[1]:a;t.dataset.vcPosition=l;const{top:i,left:r}=getOffset(e),c=i+o[l];let d=r+o[s];const{vw:u}=getViewportDimensions();if(d+t.clientWidth>u){const e=window.innerWidth-document.body.clientWidth;d=u-t.clientWidth-e;}else d<0&&(d=0);Object.assign(t.style,{left:`${d}px`,top:`${c}px`});},show=e=>{if(e.context.isShowInInputMode)return;if(!e.context.currentType)return void e.context.mainElement.click();setContext(e,"cleanupHandlers",[]),setContext(e,"isShowInInputMode",true),e.inputMode&&restoreTabbing(e.context.mainElement),setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput),e.context.mainElement.removeAttribute("data-vc-calendar-hidden");const t=()=>{setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput);};window.addEventListener("resize",t),e.context.cleanupHandlers.push((()=>window.removeEventListener("resize",t)));const n=t=>{"Escape"===t.key&&hide(e);};document.addEventListener("keydown",n),e.context.cleanupHandlers.push((()=>document.removeEventListener("keydown",n)));const a=t=>{t.target===e.context.inputElement||e.context.mainElement.contains(t.target)||hide(e);};document.addEventListener("click",a,{capture:true}),e.context.cleanupHandlers.push((()=>document.removeEventListener("click",a,{capture:true}))),e.onShow&&e.onShow(e);},labels={application:"Calendar",navigation:"Calendar Navigation",arrowNext:{month:"Next month",year:"Next list of years"},arrowPrev:{month:"Previous month",year:"Previous list of years"},month:"Select month, current selected month:",months:"List of months",year:"Select year, current selected year:",years:"List of years",week:"Days of the week",weekNumber:"Numbers of weeks in a year",dates:"Dates in the current month",selectingTime:"Selecting a time ",inputHour:"Hours",inputMinute:"Minutes",rangeHour:"Slider for selecting hours",rangeMinute:"Slider for selecting minutes",btnKeeping:"Switch AM/PM, current position:"},styles={calendar:"vc",controls:"vc-controls",grid:"vc-grid",column:"vc-column",header:"vc-header",headerContent:"vc-header__content",month:"vc-month",year:"vc-year",arrowPrev:"vc-arrow vc-arrow_prev",arrowNext:"vc-arrow vc-arrow_next",wrapper:"vc-wrapper",content:"vc-content",months:"vc-months",monthsMonth:"vc-months__month",years:"vc-years",yearsYear:"vc-years__year",week:"vc-week",weekDay:"vc-week__day",weekNumbers:"vc-week-numbers",weekNumbersTitle:"vc-week-numbers__title",weekNumbersContent:"vc-week-numbers__content",weekNumber:"vc-week-number",dates:"vc-dates",datesRow:"vc-dates__row",date:"vc-date",dateBtn:"vc-date__btn",datePopup:"vc-date__popup",dateRangeTooltip:"vc-date-range-tooltip",time:"vc-time",timeContent:"vc-time__content",timeHour:"vc-time__hour",timeMinute:"vc-time__minute",timeKeeping:"vc-time__keeping",timeRanges:"vc-time__ranges",timeRange:"vc-time__range"};class OptionsCalendar{constructor(){__publicField(this,"type","default"),__publicField(this,"inputMode",false),__publicField(this,"openOnFocus",true),__publicField(this,"positionToInput","left"),__publicField(this,"firstWeekday",1),__publicField(this,"monthsToSwitch",1),__publicField(this,"themeAttrDetect","html[data-theme]"),__publicField(this,"locale","en"),__publicField(this,"dateToday","today"),__publicField(this,"dateMin","1970-01-01"),__publicField(this,"dateMax","2470-12-31"),__publicField(this,"displayDateMin"),__publicField(this,"displayDateMax"),__publicField(this,"displayDatesOutside",true),__publicField(this,"displayDisabledDates",false),__publicField(this,"displayMonthsCount"),__publicField(this,"disableDates",[]),__publicField(this,"disableAllDates",false),__publicField(this,"disableDatesPast",false),__publicField(this,"disableDatesGaps",false),__publicField(this,"disableWeekdays",[]),__publicField(this,"disableToday",false),__publicField(this,"enableDates",[]),__publicField(this,"enableEdgeDatesOnly",true),__publicField(this,"enableDateToggle",true),__publicField(this,"enableWeekNumbers",false),__publicField(this,"enableMonthChangeOnDayClick",true),__publicField(this,"enableJumpToSelectedDate",false),__publicField(this,"selectionDatesMode","single"),__publicField(this,"selectionMonthsMode",true),__publicField(this,"selectionYearsMode",true),__publicField(this,"selectionTimeMode",false),__publicField(this,"selectedDates",[]),__publicField(this,"selectedMonth"),__publicField(this,"selectedYear"),__publicField(this,"selectedHolidays",[]),__publicField(this,"selectedWeekends",[0,6]),__publicField(this,"selectedTime"),__publicField(this,"selectedTheme","system"),__publicField(this,"timeMinHour",0),__publicField(this,"timeMaxHour",23),__publicField(this,"timeMinMinute",0),__publicField(this,"timeMaxMinute",59),__publicField(this,"timeControls","all"),__publicField(this,"timeStepHour",1),__publicField(this,"timeStepMinute",1),__publicField(this,"sanitizerHTML",(e=>e)),__publicField(this,"onClickDate"),__publicField(this,"onClickWeekDay"),__publicField(this,"onClickWeekNumber"),__publicField(this,"onClickTitle"),__publicField(this,"onClickMonth"),__publicField(this,"onClickYear"),__publicField(this,"onClickArrow"),__publicField(this,"onChangeTime"),__publicField(this,"onChangeToInput"),__publicField(this,"onCreateDateRangeTooltip"),__publicField(this,"onCreateDateEls"),__publicField(this,"onCreateMonthEls"),__publicField(this,"onCreateYearEls"),__publicField(this,"onInit"),__publicField(this,"onUpdate"),__publicField(this,"onDestroy"),__publicField(this,"onShow"),__publicField(this,"onHide"),__publicField(this,"popups",{}),__publicField(this,"labels",__spreadValues({},labels)),__publicField(this,"layouts",{default:"",multiple:"",month:"",year:""}),__publicField(this,"styles",__spreadValues({},styles));}}const _Calendar=class e extends OptionsCalendar{constructor(t,n){var a;super(),__publicField(this,"init",(()=>init(this))),__publicField(this,"update",(e=>update(this,e))),__publicField(this,"destroy",(()=>destroy(this))),__publicField(this,"show",(()=>show(this))),__publicField(this,"hide",(()=>hide(this))),__publicField(this,"set",((e,t)=>set(this,e,t))),__publicField(this,"context"),this.context=__spreadProps(__spreadValues({},this.context),{locale:{months:{short:[],long:[]},weekdays:{short:[],long:[]}}}),setContext(this,"mainElement","string"==typeof t?null!=(a=e.memoizedElements.get(t))?a:this.queryAndMemoize(t):t),n&&replaceProperties(this,n);}queryAndMemoize(t){const n=document.querySelector(t);if(!n)throw new Error(errorMessages.notFoundSelector(t));return e.memoizedElements.set(t,n),n}};__publicField(_Calendar,"memoizedElements",new Map);let Calendar=_Calendar;
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap datepicker.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
 /**
- * Constants
+ * Custom positioning reference element.
+ * @see https://floating-ui.com/docs/virtual-elements
  */
 
-const NAME$f = 'datepicker';
-const DATA_KEY$b = 'bs.datepicker';
-const EVENT_KEY$b = `.${DATA_KEY$b}`;
-const DATA_API_KEY$6 = '.data-api';
-const EVENT_CHANGE = `change${EVENT_KEY$b}`;
-const EVENT_SHOW$6 = `show${EVENT_KEY$b}`;
-const EVENT_SHOWN$6 = `shown${EVENT_KEY$b}`;
-const EVENT_HIDE$6 = `hide${EVENT_KEY$b}`;
-const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$b}`;
-const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$b}${DATA_API_KEY$6}`;
-const EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY$b}${DATA_API_KEY$6}`;
-const SELECTOR_DATA_TOGGLE$7 = '[data-bs-toggle="datepicker"]';
-const HIDE_DELAY = 100; // ms delay before hiding after selection
-
-const Default$e = {
-  datepickerTheme: null,
-  // 'light', 'dark', 'auto' - explicit theme for datepicker popover only
-  dateMin: null,
-  dateMax: null,
-  dateFormat: null,
-  // Intl.DateTimeFormat options, or function(date, locale) => string
-  displayElement: null,
-  // Element to show formatted date (defaults to element for buttons)
-  displayMonthsCount: 1,
-  // Number of months to display side-by-side
-  firstWeekday: 1,
-  // Monday
-  inline: false,
-  // Render calendar inline (no popup)
-  locale: 'default',
-  positionElement: null,
-  // Element to position calendar relative to (defaults to input)
-  selectedDates: [],
-  selectionMode: 'single',
-  // 'single', 'multiple', 'multiple-ranged'
-  placement: 'left',
-  // 'left', 'center', 'right', 'auto'
-  vcpOptions: {} // Pass-through for any VCP option
+const min = Math.min;
+const max = Math.max;
+const round = Math.round;
+const floor = Math.floor;
+const createCoords = v => ({
+  x: v,
+  y: v
+});
+const oppositeSideMap = {
+  left: 'right',
+  right: 'left',
+  bottom: 'top',
+  top: 'bottom'
 };
-const DefaultType$e = {
-  datepickerTheme: '(null|string)',
-  dateMin: '(null|string|number|object)',
-  dateMax: '(null|string|number|object)',
-  dateFormat: '(null|object|function)',
-  displayElement: '(null|string|element|boolean)',
-  displayMonthsCount: 'number',
-  firstWeekday: 'number',
-  inline: 'boolean',
-  locale: 'string',
-  positionElement: '(null|string|element)',
-  selectedDates: 'array',
-  selectionMode: 'string',
-  placement: 'string',
-  vcpOptions: 'object'
+const oppositeAlignmentMap = {
+  start: 'end',
+  end: 'start'
 };
-
-/**
- * Class definition
- */
-
-class Datepicker extends BaseComponent {
-  constructor(element, config) {
-    super(element, config);
-    this._calendar = null;
-    this._isShown = false;
-    this._initCalendar();
-  }
-
-  // Getters
-  static get Default() {
-    return Default$e;
-  }
-  static get DefaultType() {
-    return DefaultType$e;
-  }
-  static get NAME() {
-    return NAME$f;
+function clamp(start, value, end) {
+  return max(start, min(value, end));
+}
+function evaluate(value, param) {
+  return typeof value === 'function' ? value(param) : value;
+}
+function getSide(placement) {
+  return placement.split('-')[0];
+}
+function getAlignment(placement) {
+  return placement.split('-')[1];
+}
+function getOppositeAxis(axis) {
+  return axis === 'x' ? 'y' : 'x';
+}
+function getAxisLength(axis) {
+  return axis === 'y' ? 'height' : 'width';
+}
+const yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);
+function getSideAxis(placement) {
+  return yAxisSides.has(getSide(placement)) ? 'y' : 'x';
+}
+function getAlignmentAxis(placement) {
+  return getOppositeAxis(getSideAxis(placement));
+}
+function getAlignmentSides(placement, rects, rtl) {
+  if (rtl === void 0) {
+    rtl = false;
   }
-
-  // Public
-  toggle() {
-    if (this._config.inline) {
-      return; // Inline calendars are always visible
-    }
-    return this._isShown ? this.hide() : this.show();
+  const alignment = getAlignment(placement);
+  const alignmentAxis = getAlignmentAxis(placement);
+  const length = getAxisLength(alignmentAxis);
+  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';
+  if (rects.reference[length] > rects.floating[length]) {
+    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);
   }
-  show() {
-    if (this._config.inline) {
-      return; // Inline calendars are always visible
-    }
-    if (!this._calendar || isDisabled(this._element) || this._isShown) {
-      return;
-    }
-    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);
-    if (showEvent.defaultPrevented) {
-      return;
-    }
-    this._calendar.show();
-    this._isShown = true;
-    EventHandler.trigger(this._element, EVENT_SHOWN$6);
+  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];
+}
+function getExpandedPlacements(placement) {
+  const oppositePlacement = getOppositePlacement(placement);
+  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
+}
+function getOppositeAlignmentPlacement(placement) {
+  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);
+}
+const lrPlacement = ['left', 'right'];
+const rlPlacement = ['right', 'left'];
+const tbPlacement = ['top', 'bottom'];
+const btPlacement = ['bottom', 'top'];
+function getSideList(side, isStart, rtl) {
+  switch (side) {
+    case 'top':
+    case 'bottom':
+      if (rtl) return isStart ? rlPlacement : lrPlacement;
+      return isStart ? lrPlacement : rlPlacement;
+    case 'left':
+    case 'right':
+      return isStart ? tbPlacement : btPlacement;
+    default:
+      return [];
   }
-  hide() {
-    if (this._config.inline) {
-      return; // Inline calendars are always visible
-    }
-    if (!this._calendar || !this._isShown) {
-      return;
-    }
-    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);
-    if (hideEvent.defaultPrevented) {
-      return;
-    }
-    this._calendar.hide();
-    this._isShown = false;
-    EventHandler.trigger(this._element, EVENT_HIDDEN$6);
-  }
-  dispose() {
-    if (this._themeObserver) {
-      this._themeObserver.disconnect();
-      this._themeObserver = null;
-    }
-    if (this._calendar) {
-      this._calendar.destroy();
-    }
-    this._calendar = null;
-    super.dispose();
-  }
-  getSelectedDates() {
-    const dates = this._calendar?.context?.selectedDates;
-    return dates ? [...dates] : [];
-  }
-  setSelectedDates(dates) {
-    if (this._calendar) {
-      this._calendar.set({
-        selectedDates: dates
-      });
-    }
-  }
-
-  // Private
-  _initCalendar() {
-    this._isInput = this._element.tagName === 'INPUT';
-    this._isInline = this._config.inline;
-
-    // For inline mode, look for a hidden input child to bind to
-    if (this._isInline && !this._isInput) {
-      this._boundInput = this._element.querySelector('input[type="hidden"], input[name]');
-    }
-    this._positionElement = this._resolvePositionElement();
-    this._displayElement = this._resolveDisplayElement();
-    const calendarOptions = this._buildCalendarOptions();
-
-    // Create calendar on the position element (for correct popup positioning)
-    // but value updates still go to this._element (the input)
-    this._calendar = new Calendar(this._positionElement, calendarOptions);
-    this._calendar.init();
-
-    // Watch for theme changes on ancestor elements (for live theme switching)
-    this._setupThemeObserver();
-
-    // Set initial value if input has a value
-    if (this._isInput && this._element.value) {
-      this._parseInputValue();
-    }
-
-    // Populate input/display with preselected dates
-    this._updateDisplayWithSelectedDates();
-  }
-  _updateDisplayWithSelectedDates() {
-    const {
-      selectedDates
-    } = this._config;
-    if (!selectedDates || selectedDates.length === 0) {
-      return;
-    }
-    const formattedDate = this._formatDateForInput(selectedDates);
-    if (this._isInput) {
-      this._element.value = formattedDate;
-    }
-    if (this._boundInput) {
-      this._boundInput.value = selectedDates.join(',');
-    }
-    if (this._displayElement) {
-      this._displayElement.textContent = formattedDate;
-    }
-  }
-  _resolvePositionElement() {
-    let {
-      positionElement
-    } = this._config;
-    if (typeof positionElement === 'string') {
-      positionElement = document.querySelector(positionElement);
-    }
-
-    // Use input's parent if in form-adorn
-    if (!positionElement && this._isInput && !this._isInline) {
-      const parent = this._element.closest('.form-adorn');
-      if (parent) {
-        positionElement = parent;
-      }
-    }
-    return positionElement || this._element;
-  }
-  _resolveDisplayElement() {
-    const {
-      displayElement
-    } = this._config;
-    if (typeof displayElement === 'string') {
-      return document.querySelector(displayElement);
-    }
-
-    // For buttons/non-inputs (not inline), look for a [data-bs-datepicker-display] child
-    if (displayElement === true || displayElement === null && !this._isInput && !this._isInline) {
-      const displayChild = this._element.querySelector('[data-bs-datepicker-display]');
-      return displayChild || this._element;
-    }
-    return displayElement;
-  }
-  _getThemeAncestor() {
-    return this._element.closest('[data-bs-theme]');
-  }
-  _getEffectiveTheme() {
-    // Priority: explicit datepickerTheme config > inherited from ancestor > none
-    const {
-      datepickerTheme
-    } = this._config;
-    if (datepickerTheme) {
-      return datepickerTheme;
-    }
-    const ancestor = this._getThemeAncestor();
-    return ancestor?.getAttribute('data-bs-theme') || null;
-  }
-  _syncThemeAttribute(element) {
-    if (!element) {
-      return;
-    }
-    const theme = this._getEffectiveTheme();
-    if (theme) {
-      // Copy theme to popover (needed because VCP appends to body, breaking CSS inheritance)
-      element.setAttribute('data-bs-theme', theme);
-    } else {
-      // No theme - remove attribute to allow natural inheritance
-      element.removeAttribute('data-bs-theme');
-    }
-  }
-  _setupThemeObserver() {
-    // Watch for theme changes on ancestor elements
-    const ancestor = this._getThemeAncestor();
-    if (!ancestor || this._config.datepickerTheme) {
-      // No ancestor to watch, or explicit datepickerTheme overrides
-      return;
-    }
-    this._themeObserver = new MutationObserver(() => {
-      this._syncThemeAttribute(this._calendar?.context?.mainElement);
-    });
-    this._themeObserver.observe(ancestor, {
-      attributes: true,
-      attributeFilter: ['data-bs-theme']
-    });
-  }
-  _buildCalendarOptions() {
-    // Get theme for VCP - use 'system' for auto-detection if no explicit theme
-    const theme = this._getEffectiveTheme();
-    // VCP uses 'system' for auto, Bootstrap uses 'auto'
-    const vcpTheme = !theme || theme === 'auto' ? 'system' : theme;
-    const calendarOptions = {
-      ...this._config.vcpOptions,
-      inputMode: !this._isInline,
-      positionToInput: this._config.placement,
-      firstWeekday: this._config.firstWeekday,
-      locale: this._config.locale,
-      selectionDatesMode: this._config.selectionMode,
-      selectedDates: this._config.selectedDates,
-      displayMonthsCount: this._config.displayMonthsCount,
-      type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',
-      selectedTheme: vcpTheme,
-      themeAttrDetect: '[data-bs-theme]',
-      onClickDate: (self, event) => this._handleDateClick(self, event),
-      onInit: self => {
-        this._syncThemeAttribute(self.context.mainElement);
-      },
-      onShow: () => {
-        this._isShown = true;
-        this._syncThemeAttribute(this._calendar.context.mainElement);
-      },
-      onHide: () => {
-        this._isShown = false;
-      }
-    };
-
-    // Navigate to the month of the first selected date
-    if (this._config.selectedDates.length > 0) {
-      const firstDate = this._parseDate(this._config.selectedDates[0]);
-      calendarOptions.selectedMonth = firstDate.getMonth();
-      calendarOptions.selectedYear = firstDate.getFullYear();
-    }
-    if (this._config.dateMin) {
-      calendarOptions.dateMin = this._config.dateMin;
-    }
-    if (this._config.dateMax) {
-      calendarOptions.dateMax = this._config.dateMax;
-    }
-    return calendarOptions;
-  }
-  _handleDateClick(self, event) {
-    const selectedDates = [...self.context.selectedDates];
-    if (selectedDates.length > 0) {
-      const formattedDate = this._formatDateForInput(selectedDates);
-      if (this._isInput) {
-        this._element.value = formattedDate;
-      }
-      if (this._boundInput) {
-        this._boundInput.value = selectedDates.join(',');
-      }
-      if (this._displayElement) {
-        this._displayElement.textContent = formattedDate;
-      }
-    }
-    EventHandler.trigger(this._element, EVENT_CHANGE, {
-      dates: selectedDates,
-      event
-    });
-    this._maybeHideAfterSelection(selectedDates);
-  }
-  _maybeHideAfterSelection(selectedDates) {
-    if (this._isInline) {
-      return;
-    }
-    const shouldHide = this._config.selectionMode === 'single' && selectedDates.length > 0 || this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2;
-    if (shouldHide) {
-      setTimeout(() => this.hide(), HIDE_DELAY);
-    }
-  }
-  _parseDate(dateStr) {
-    const [year, month, day] = dateStr.split('-');
-    return new Date(year, month - 1, day);
-  }
-  _formatDate(dateStr) {
-    const date = this._parseDate(dateStr);
-    const locale = this._config.locale === 'default' ? undefined : this._config.locale;
-    const {
-      dateFormat
-    } = this._config;
-
-    // Custom function formatter
-    if (typeof dateFormat === 'function') {
-      return dateFormat(date, locale);
-    }
-
-    // Intl.DateTimeFormat options object
-    if (dateFormat && typeof dateFormat === 'object') {
-      return new Intl.DateTimeFormat(locale, dateFormat).format(date);
-    }
-
-    // Default: locale-aware formatting
-    return date.toLocaleDateString(locale);
-  }
-  _formatDateForInput(dates) {
-    if (dates.length === 0) {
-      return '';
-    }
-    if (dates.length === 1) {
-      return this._formatDate(dates[0]);
-    }
-
-    // For date ranges, use en-dash; for multiple dates, use comma
-    const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', ';
-    return dates.map(d => this._formatDate(d)).join(separator);
-  }
-  _parseInputValue() {
-    // Try to parse the input value as a date
-    const value = this._element.value.trim();
-    if (!value) {
-      return;
-    }
-    const date = new Date(value);
-    if (!Number.isNaN(date.getTime())) {
-      const year = date.getFullYear();
-      const month = String(date.getMonth() + 1).padStart(2, '0');
-      const day = String(date.getDate()).padStart(2, '0');
-      const formatted = `${year}-${month}-${day}`;
-      this._calendar.set({
-        selectedDates: [formatted]
-      });
-    }
-  }
-}
-
-/**
- * Data API implementation
- */
-
-EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$7, function (event) {
-  // Only handle if not an input (inputs use focus)
-  // Skip inline datepickers (they're always visible)
-  if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true') {
-    return;
-  }
-  event.preventDefault();
-  Datepicker.getOrCreateInstance(this).toggle();
-});
-EventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE$7, function () {
-  // Handle focus for input elements
-  if (this.tagName !== 'INPUT') {
-    return;
-  }
-  Datepicker.getOrCreateInstance(this).show();
-});
-
-// Auto-initialize inline datepickers on DOMContentLoaded
-EventHandler.on(document, `DOMContentLoaded${EVENT_KEY$b}${DATA_API_KEY$6}`, () => {
-  for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE$7}[data-bs-inline="true"]`)) {
-    Datepicker.getOrCreateInstance(element);
-  }
-});
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap dialog.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Constants
- */
-
-const NAME$e = 'dialog';
-const DATA_KEY$a = 'bs.dialog';
-const EVENT_KEY$a = `.${DATA_KEY$a}`;
-const DATA_API_KEY$5 = '.data-api';
-const EVENT_SHOW$5 = `show${EVENT_KEY$a}`;
-const EVENT_SHOWN$5 = `shown${EVENT_KEY$a}`;
-const EVENT_HIDE$5 = `hide${EVENT_KEY$a}`;
-const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$a}`;
-const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$a}`;
-const EVENT_CANCEL = `cancel${EVENT_KEY$a}`;
-const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$a}${DATA_API_KEY$5}`;
-const CLASS_NAME_STATIC = 'dialog-static';
-const CLASS_NAME_OPEN = 'dialog-open';
-const CLASS_NAME_NONMODAL = 'dialog-nonmodal';
-const SELECTOR_DATA_TOGGLE$6 = '[data-bs-toggle="dialog"]';
-const SELECTOR_OPEN_MODAL_DIALOG = 'dialog.dialog[open]:not(.dialog-nonmodal)';
-const Default$d = {
-  backdrop: true,
-  // true (click dismisses) or 'static' (click does nothing) - only applies to modal dialogs
-  keyboard: true,
-  modal: true // true uses showModal(), false uses show() for non-modal dialogs
-};
-const DefaultType$d = {
-  backdrop: '(boolean|string)',
-  keyboard: 'boolean',
-  modal: 'boolean'
-};
-
-/**
- * Class definition
- */
-
-class Dialog extends BaseComponent {
-  constructor(element, config) {
-    super(element, config);
-    this._isTransitioning = false;
-    this._addEventListeners();
-  }
-
-  // Getters
-  static get Default() {
-    return Default$d;
-  }
-  static get DefaultType() {
-    return DefaultType$d;
-  }
-  static get NAME() {
-    return NAME$e;
-  }
-
-  // Public
-  toggle(relatedTarget) {
-    return this._element.open ? this.hide() : this.show(relatedTarget);
-  }
-  show(relatedTarget) {
-    if (this._element.open || this._isTransitioning) {
-      return;
-    }
-    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, {
-      relatedTarget
-    });
-    if (showEvent.defaultPrevented) {
-      return;
-    }
-    this._isTransitioning = true;
-    if (this._config.modal) {
-      // Modal dialog: use showModal() for focus trapping, backdrop, and top layer
-      this._element.showModal();
-      // Prevent body scroll for modal dialogs
-      document.body.classList.add(CLASS_NAME_OPEN);
-    } else {
-      // Non-modal dialog: use show() - no backdrop, no focus trap, no top layer
-      this._element.classList.add(CLASS_NAME_NONMODAL);
-      this._element.show();
-    }
-    this._queueCallback(() => {
-      this._isTransitioning = false;
-      EventHandler.trigger(this._element, EVENT_SHOWN$5, {
-        relatedTarget
-      });
-    }, this._element, this._isAnimated());
-  }
-  hide() {
-    if (!this._element.open || this._isTransitioning) {
-      return;
-    }
-    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5);
-    if (hideEvent.defaultPrevented) {
-      return;
-    }
-    this._isTransitioning = true;
-    this._queueCallback(() => this._hideDialog(), this._element, this._isAnimated());
-  }
-  dispose() {
-    EventHandler.off(this._element, EVENT_KEY$a);
-    super.dispose();
-  }
-  handleUpdate() {
-    // Provided for API consistency with Modal.
-    // Native dialogs handle their own positioning.
-  }
-
-  // Private
-  _hideDialog() {
-    this._element.close();
-    this._element.classList.remove(CLASS_NAME_NONMODAL);
-    this._isTransitioning = false;
-
-    // Only restore body scroll if no other modal dialogs are open
-    if (!document.querySelector(SELECTOR_OPEN_MODAL_DIALOG)) {
-      document.body.classList.remove(CLASS_NAME_OPEN);
-    }
-    EventHandler.trigger(this._element, EVENT_HIDDEN$5);
-  }
-  _isAnimated() {
-    return this._element.classList.contains('fade');
-  }
-  _triggerBackdropTransition() {
-    const hidePreventedEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);
-    if (hidePreventedEvent.defaultPrevented) {
-      return;
-    }
-    this._element.classList.add(CLASS_NAME_STATIC);
-    this._queueCallback(() => {
-      this._element.classList.remove(CLASS_NAME_STATIC);
-    }, this._element);
-  }
-  _addEventListeners() {
-    // Handle native cancel event (Escape key) - only fires for modal dialogs
-    EventHandler.on(this._element, 'cancel', event => {
-      // Prevent native close behavior - we'll handle it
-      event.preventDefault();
-      if (!this._config.keyboard) {
-        this._triggerBackdropTransition();
-        return;
-      }
-      EventHandler.trigger(this._element, EVENT_CANCEL);
-      this.hide();
-    });
-
-    // Handle Escape key for non-modal dialogs (native cancel doesn't fire for show())
-    EventHandler.on(this._element, 'keydown', event => {
-      if (event.key !== 'Escape' || this._config.modal) {
-        return;
-      }
-      event.preventDefault();
-      if (!this._config.keyboard) {
-        return;
-      }
-      EventHandler.trigger(this._element, EVENT_CANCEL);
-      this.hide();
-    });
-
-    // Handle backdrop clicks (only applies to modal dialogs)
-    // Native <dialog> fires click on the dialog element when backdrop is clicked
-    EventHandler.on(this._element, 'click', event => {
-      // Only handle clicks directly on the dialog (backdrop area)
-      // Non-modal dialogs don't have a backdrop
-      if (event.target !== this._element || !this._config.modal) {
-        return;
-      }
-      if (this._config.backdrop === 'static') {
-        this._triggerBackdropTransition();
-        return;
-      }
-
-      // Default: click backdrop to dismiss
-      this.hide();
-    });
-  }
-}
-
-/**
- * Data API implementation
- */
-
-EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$6, function (event) {
-  const target = SelectorEngine.getElementFromSelector(this);
-  if (['A', 'AREA'].includes(this.tagName)) {
-    event.preventDefault();
-  }
-  EventHandler.one(target, EVENT_SHOW$5, showEvent => {
-    if (showEvent.defaultPrevented) {
-      return;
-    }
-    EventHandler.one(target, EVENT_HIDDEN$5, () => {
-      if (isVisible(this)) {
-        this.focus();
-      }
-    });
-  });
-
-  // Get config from trigger's data attributes
-  const config = Manipulator.getDataAttributes(this);
-
-  // Check if trigger is inside an open dialog
-  const currentDialog = this.closest('dialog[open]');
-  const shouldSwap = currentDialog && currentDialog !== target;
-  if (shouldSwap) {
-    // Open new dialog first (its backdrop appears over current)
-    const newDialog = Dialog.getOrCreateInstance(target, config);
-    newDialog.show(this);
-
-    // Close the current dialog (no backdrop flash since new one is already open)
-    const currentInstance = Dialog.getInstance(currentDialog);
-    if (currentInstance) {
-      currentInstance.hide();
-    }
-    return;
-  }
-  const data = Dialog.getOrCreateInstance(target, config);
-  data.toggle(this);
-});
-enableDismissTrigger(Dialog);
-
-/**
- * Custom positioning reference element.
- * @see https://floating-ui.com/docs/virtual-elements
- */
-
-const min = Math.min;
-const max = Math.max;
-const round = Math.round;
-const floor = Math.floor;
-const createCoords = v => ({
-  x: v,
-  y: v
-});
-const oppositeSideMap = {
-  left: 'right',
-  right: 'left',
-  bottom: 'top',
-  top: 'bottom'
-};
-const oppositeAlignmentMap = {
-  start: 'end',
-  end: 'start'
-};
-function clamp(start, value, end) {
-  return max(start, min(value, end));
-}
-function evaluate(value, param) {
-  return typeof value === 'function' ? value(param) : value;
-}
-function getSide(placement) {
-  return placement.split('-')[0];
-}
-function getAlignment(placement) {
-  return placement.split('-')[1];
-}
-function getOppositeAxis(axis) {
-  return axis === 'x' ? 'y' : 'x';
-}
-function getAxisLength(axis) {
-  return axis === 'y' ? 'height' : 'width';
-}
-const yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);
-function getSideAxis(placement) {
-  return yAxisSides.has(getSide(placement)) ? 'y' : 'x';
-}
-function getAlignmentAxis(placement) {
-  return getOppositeAxis(getSideAxis(placement));
-}
-function getAlignmentSides(placement, rects, rtl) {
-  if (rtl === void 0) {
-    rtl = false;
-  }
-  const alignment = getAlignment(placement);
-  const alignmentAxis = getAlignmentAxis(placement);
-  const length = getAxisLength(alignmentAxis);
-  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';
-  if (rects.reference[length] > rects.floating[length]) {
-    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);
-  }
-  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];
-}
-function getExpandedPlacements(placement) {
-  const oppositePlacement = getOppositePlacement(placement);
-  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
-}
-function getOppositeAlignmentPlacement(placement) {
-  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);
-}
-const lrPlacement = ['left', 'right'];
-const rlPlacement = ['right', 'left'];
-const tbPlacement = ['top', 'bottom'];
-const btPlacement = ['bottom', 'top'];
-function getSideList(side, isStart, rtl) {
-  switch (side) {
-    case 'top':
-    case 'bottom':
-      if (rtl) return isStart ? rlPlacement : lrPlacement;
-      return isStart ? lrPlacement : rlPlacement;
-    case 'left':
-    case 'right':
-      return isStart ? tbPlacement : btPlacement;
-    default:
-      return [];
-  }
-}
-function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
-  const alignment = getAlignment(placement);
-  let list = getSideList(getSide(placement), direction === 'start', rtl);
-  if (alignment) {
-    list = list.map(side => side + "-" + alignment);
-    if (flipAlignment) {
-      list = list.concat(list.map(getOppositeAlignmentPlacement));
+}
+function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
+  const alignment = getAlignment(placement);
+  let list = getSideList(getSide(placement), direction === 'start', rtl);
+  if (alignment) {
+    list = list.map(side => side + "-" + alignment);
+    if (flipAlignment) {
+      list = list.concat(list.map(getOppositeAlignmentPlacement));
     }
   }
   return list;
@@ -2762,1190 +2104,1955 @@ const flip$1 = function (options) {
               resetPlacement = initialPlacement;
               break;
           }
-        }
-        if (placement !== resetPlacement) {
-          return {
-            reset: {
-              placement: resetPlacement
-            }
-          };
-        }
+        }
+        if (placement !== resetPlacement) {
+          return {
+            reset: {
+              placement: resetPlacement
+            }
+          };
+        }
+      }
+      return {};
+    }
+  };
+};
+
+const originSides = /*#__PURE__*/new Set(['left', 'top']);
+
+// For type backwards-compatibility, the `OffsetOptions` type was also
+// Derivable.
+
+async function convertValueToCoords(state, options) {
+  const {
+    placement,
+    platform,
+    elements
+  } = state;
+  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));
+  const side = getSide(placement);
+  const alignment = getAlignment(placement);
+  const isVertical = getSideAxis(placement) === 'y';
+  const mainAxisMulti = originSides.has(side) ? -1 : 1;
+  const crossAxisMulti = rtl && isVertical ? -1 : 1;
+  const rawValue = evaluate(options, state);
+
+  // eslint-disable-next-line prefer-const
+  let {
+    mainAxis,
+    crossAxis,
+    alignmentAxis
+  } = typeof rawValue === 'number' ? {
+    mainAxis: rawValue,
+    crossAxis: 0,
+    alignmentAxis: null
+  } : {
+    mainAxis: rawValue.mainAxis || 0,
+    crossAxis: rawValue.crossAxis || 0,
+    alignmentAxis: rawValue.alignmentAxis
+  };
+  if (alignment && typeof alignmentAxis === 'number') {
+    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;
+  }
+  return isVertical ? {
+    x: crossAxis * crossAxisMulti,
+    y: mainAxis * mainAxisMulti
+  } : {
+    x: mainAxis * mainAxisMulti,
+    y: crossAxis * crossAxisMulti
+  };
+}
+
+/**
+ * Modifies the placement by translating the floating element along the
+ * specified axes.
+ * A number (shorthand for `mainAxis` or distance), or an axes configuration
+ * object may be passed.
+ * @see https://floating-ui.com/docs/offset
+ */
+const offset$1 = function (options) {
+  if (options === void 0) {
+    options = 0;
+  }
+  return {
+    name: 'offset',
+    options,
+    async fn(state) {
+      var _middlewareData$offse, _middlewareData$arrow;
+      const {
+        x,
+        y,
+        placement,
+        middlewareData
+      } = state;
+      const diffCoords = await convertValueToCoords(state, options);
+
+      // If the placement is the same and the arrow caused an alignment offset
+      // then we don't need to change the positioning coordinates.
+      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
+        return {};
+      }
+      return {
+        x: x + diffCoords.x,
+        y: y + diffCoords.y,
+        data: {
+          ...diffCoords,
+          placement
+        }
+      };
+    }
+  };
+};
+
+/**
+ * Optimizes the visibility of the floating element by shifting it in order to
+ * keep it in view when it will overflow the clipping boundary.
+ * @see https://floating-ui.com/docs/shift
+ */
+const shift$1 = function (options) {
+  if (options === void 0) {
+    options = {};
+  }
+  return {
+    name: 'shift',
+    options,
+    async fn(state) {
+      const {
+        x,
+        y,
+        placement
+      } = state;
+      const {
+        mainAxis: checkMainAxis = true,
+        crossAxis: checkCrossAxis = false,
+        limiter = {
+          fn: _ref => {
+            let {
+              x,
+              y
+            } = _ref;
+            return {
+              x,
+              y
+            };
+          }
+        },
+        ...detectOverflowOptions
+      } = evaluate(options, state);
+      const coords = {
+        x,
+        y
+      };
+      const overflow = await detectOverflow(state, detectOverflowOptions);
+      const crossAxis = getSideAxis(getSide(placement));
+      const mainAxis = getOppositeAxis(crossAxis);
+      let mainAxisCoord = coords[mainAxis];
+      let crossAxisCoord = coords[crossAxis];
+      if (checkMainAxis) {
+        const minSide = mainAxis === 'y' ? 'top' : 'left';
+        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';
+        const min = mainAxisCoord + overflow[minSide];
+        const max = mainAxisCoord - overflow[maxSide];
+        mainAxisCoord = clamp(min, mainAxisCoord, max);
       }
-      return {};
+      if (checkCrossAxis) {
+        const minSide = crossAxis === 'y' ? 'top' : 'left';
+        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';
+        const min = crossAxisCoord + overflow[minSide];
+        const max = crossAxisCoord - overflow[maxSide];
+        crossAxisCoord = clamp(min, crossAxisCoord, max);
+      }
+      const limitedCoords = limiter.fn({
+        ...state,
+        [mainAxis]: mainAxisCoord,
+        [crossAxis]: crossAxisCoord
+      });
+      return {
+        ...limitedCoords,
+        data: {
+          x: limitedCoords.x - x,
+          y: limitedCoords.y - y,
+          enabled: {
+            [mainAxis]: checkMainAxis,
+            [crossAxis]: checkCrossAxis
+          }
+        }
+      };
     }
   };
 };
 
-const originSides = /*#__PURE__*/new Set(['left', 'top']);
-
-// For type backwards-compatibility, the `OffsetOptions` type was also
-// Derivable.
-
-async function convertValueToCoords(state, options) {
+function hasWindow() {
+  return typeof window !== 'undefined';
+}
+function getNodeName(node) {
+  if (isNode(node)) {
+    return (node.nodeName || '').toLowerCase();
+  }
+  // Mocked nodes in testing environments may not be instances of Node. By
+  // returning `#document` an infinite loop won't occur.
+  // https://github.com/floating-ui/floating-ui/issues/2317
+  return '#document';
+}
+function getWindow(node) {
+  var _node$ownerDocument;
+  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;
+}
+function getDocumentElement(node) {
+  var _ref;
+  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;
+}
+function isNode(value) {
+  if (!hasWindow()) {
+    return false;
+  }
+  return value instanceof Node || value instanceof getWindow(value).Node;
+}
+function isElement(value) {
+  if (!hasWindow()) {
+    return false;
+  }
+  return value instanceof Element || value instanceof getWindow(value).Element;
+}
+function isHTMLElement(value) {
+  if (!hasWindow()) {
+    return false;
+  }
+  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;
+}
+function isShadowRoot(value) {
+  if (!hasWindow() || typeof ShadowRoot === 'undefined') {
+    return false;
+  }
+  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
+}
+const invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);
+function isOverflowElement(element) {
   const {
-    placement,
-    platform,
-    elements
-  } = state;
-  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));
-  const side = getSide(placement);
-  const alignment = getAlignment(placement);
-  const isVertical = getSideAxis(placement) === 'y';
-  const mainAxisMulti = originSides.has(side) ? -1 : 1;
-  const crossAxisMulti = rtl && isVertical ? -1 : 1;
-  const rawValue = evaluate(options, state);
+    overflow,
+    overflowX,
+    overflowY,
+    display
+  } = getComputedStyle$1(element);
+  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);
+}
+const tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);
+function isTableElement(element) {
+  return tableElements.has(getNodeName(element));
+}
+const topLayerSelectors = [':popover-open', ':modal'];
+function isTopLayer(element) {
+  return topLayerSelectors.some(selector => {
+    try {
+      return element.matches(selector);
+    } catch (_e) {
+      return false;
+    }
+  });
+}
+const transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];
+const willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];
+const containValues = ['paint', 'layout', 'strict', 'content'];
+function isContainingBlock(elementOrCss) {
+  const webkit = isWebKit();
+  const css = isElement(elementOrCss) ? getComputedStyle$1(elementOrCss) : elementOrCss;
 
-  // eslint-disable-next-line prefer-const
-  let {
-    mainAxis,
-    crossAxis,
-    alignmentAxis
-  } = typeof rawValue === 'number' ? {
-    mainAxis: rawValue,
-    crossAxis: 0,
-    alignmentAxis: null
-  } : {
-    mainAxis: rawValue.mainAxis || 0,
-    crossAxis: rawValue.crossAxis || 0,
-    alignmentAxis: rawValue.alignmentAxis
+  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
+  // https://drafts.csswg.org/css-transforms-2/#individual-transforms
+  return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));
+}
+function getContainingBlock(element) {
+  let currentNode = getParentNode(element);
+  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {
+    if (isContainingBlock(currentNode)) {
+      return currentNode;
+    } else if (isTopLayer(currentNode)) {
+      return null;
+    }
+    currentNode = getParentNode(currentNode);
+  }
+  return null;
+}
+function isWebKit() {
+  if (typeof CSS === 'undefined' || !CSS.supports) return false;
+  return CSS.supports('-webkit-backdrop-filter', 'none');
+}
+const lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);
+function isLastTraversableNode(node) {
+  return lastTraversableNodeNames.has(getNodeName(node));
+}
+function getComputedStyle$1(element) {
+  return getWindow(element).getComputedStyle(element);
+}
+function getNodeScroll(element) {
+  if (isElement(element)) {
+    return {
+      scrollLeft: element.scrollLeft,
+      scrollTop: element.scrollTop
+    };
+  }
+  return {
+    scrollLeft: element.scrollX,
+    scrollTop: element.scrollY
+  };
+}
+function getParentNode(node) {
+  if (getNodeName(node) === 'html') {
+    return node;
+  }
+  const result =
+  // Step into the shadow DOM of the parent of a slotted node.
+  node.assignedSlot ||
+  // DOM Element detected.
+  node.parentNode ||
+  // ShadowRoot detected.
+  isShadowRoot(node) && node.host ||
+  // Fallback.
+  getDocumentElement(node);
+  return isShadowRoot(result) ? result.host : result;
+}
+function getNearestOverflowAncestor(node) {
+  const parentNode = getParentNode(node);
+  if (isLastTraversableNode(parentNode)) {
+    return node.ownerDocument ? node.ownerDocument.body : node.body;
+  }
+  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {
+    return parentNode;
+  }
+  return getNearestOverflowAncestor(parentNode);
+}
+function getOverflowAncestors(node, list, traverseIframes) {
+  var _node$ownerDocument2;
+  if (list === void 0) {
+    list = [];
+  }
+  if (traverseIframes === void 0) {
+    traverseIframes = true;
+  }
+  const scrollableAncestor = getNearestOverflowAncestor(node);
+  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);
+  const win = getWindow(scrollableAncestor);
+  if (isBody) {
+    const frameElement = getFrameElement(win);
+    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);
+  }
+  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
+}
+function getFrameElement(win) {
+  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;
+}
+
+function getCssDimensions(element) {
+  const css = getComputedStyle$1(element);
+  // In testing environments, the `width` and `height` properties are empty
+  // strings for SVG elements, returning NaN. Fallback to `0` in this case.
+  let width = parseFloat(css.width) || 0;
+  let height = parseFloat(css.height) || 0;
+  const hasOffset = isHTMLElement(element);
+  const offsetWidth = hasOffset ? element.offsetWidth : width;
+  const offsetHeight = hasOffset ? element.offsetHeight : height;
+  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;
+  if (shouldFallback) {
+    width = offsetWidth;
+    height = offsetHeight;
+  }
+  return {
+    width,
+    height,
+    $: shouldFallback
   };
-  if (alignment && typeof alignmentAxis === 'number') {
-    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;
+}
+
+function unwrapElement(element) {
+  return !isElement(element) ? element.contextElement : element;
+}
+
+function getScale(element) {
+  const domElement = unwrapElement(element);
+  if (!isHTMLElement(domElement)) {
+    return createCoords(1);
   }
-  return isVertical ? {
-    x: crossAxis * crossAxisMulti,
-    y: mainAxis * mainAxisMulti
-  } : {
-    x: mainAxis * mainAxisMulti,
-    y: crossAxis * crossAxisMulti
+  const rect = domElement.getBoundingClientRect();
+  const {
+    width,
+    height,
+    $
+  } = getCssDimensions(domElement);
+  let x = ($ ? round(rect.width) : rect.width) / width;
+  let y = ($ ? round(rect.height) : rect.height) / height;
+
+  // 0, NaN, or Infinity should always fallback to 1.
+
+  if (!x || !Number.isFinite(x)) {
+    x = 1;
+  }
+  if (!y || !Number.isFinite(y)) {
+    y = 1;
+  }
+  return {
+    x,
+    y
   };
 }
 
-/**
- * Modifies the placement by translating the floating element along the
- * specified axes.
- * A number (shorthand for `mainAxis` or distance), or an axes configuration
- * object may be passed.
- * @see https://floating-ui.com/docs/offset
- */
-const offset$1 = function (options) {
-  if (options === void 0) {
-    options = 0;
+const noOffsets = /*#__PURE__*/createCoords(0);
+function getVisualOffsets(element) {
+  const win = getWindow(element);
+  if (!isWebKit() || !win.visualViewport) {
+    return noOffsets;
   }
   return {
-    name: 'offset',
-    options,
-    async fn(state) {
-      var _middlewareData$offse, _middlewareData$arrow;
-      const {
-        x,
-        y,
-        placement,
-        middlewareData
-      } = state;
-      const diffCoords = await convertValueToCoords(state, options);
+    x: win.visualViewport.offsetLeft,
+    y: win.visualViewport.offsetTop
+  };
+}
+function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {
+  if (isFixed === void 0) {
+    isFixed = false;
+  }
+  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {
+    return false;
+  }
+  return isFixed;
+}
 
-      // If the placement is the same and the arrow caused an alignment offset
-      // then we don't need to change the positioning coordinates.
-      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
-        return {};
+function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {
+  if (includeScale === void 0) {
+    includeScale = false;
+  }
+  if (isFixedStrategy === void 0) {
+    isFixedStrategy = false;
+  }
+  const clientRect = element.getBoundingClientRect();
+  const domElement = unwrapElement(element);
+  let scale = createCoords(1);
+  if (includeScale) {
+    if (offsetParent) {
+      if (isElement(offsetParent)) {
+        scale = getScale(offsetParent);
       }
-      return {
-        x: x + diffCoords.x,
-        y: y + diffCoords.y,
-        data: {
-          ...diffCoords,
-          placement
-        }
-      };
+    } else {
+      scale = getScale(element);
     }
-  };
-};
+  }
+  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);
+  let x = (clientRect.left + visualOffsets.x) / scale.x;
+  let y = (clientRect.top + visualOffsets.y) / scale.y;
+  let width = clientRect.width / scale.x;
+  let height = clientRect.height / scale.y;
+  if (domElement) {
+    const win = getWindow(domElement);
+    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;
+    let currentWin = win;
+    let currentIFrame = getFrameElement(currentWin);
+    while (currentIFrame && offsetParent && offsetWin !== currentWin) {
+      const iframeScale = getScale(currentIFrame);
+      const iframeRect = currentIFrame.getBoundingClientRect();
+      const css = getComputedStyle$1(currentIFrame);
+      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;
+      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;
+      x *= iframeScale.x;
+      y *= iframeScale.y;
+      width *= iframeScale.x;
+      height *= iframeScale.y;
+      x += left;
+      y += top;
+      currentWin = getWindow(currentIFrame);
+      currentIFrame = getFrameElement(currentWin);
+    }
+  }
+  return rectToClientRect({
+    width,
+    height,
+    x,
+    y
+  });
+}
 
-/**
- * Optimizes the visibility of the floating element by shifting it in order to
- * keep it in view when it will overflow the clipping boundary.
- * @see https://floating-ui.com/docs/shift
- */
-const shift$1 = function (options) {
-  if (options === void 0) {
-    options = {};
+// If <html> has a CSS width greater than the viewport, then this will be
+// incorrect for RTL.
+function getWindowScrollBarX(element, rect) {
+  const leftScroll = getNodeScroll(element).scrollLeft;
+  if (!rect) {
+    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;
   }
+  return rect.left + leftScroll;
+}
+
+function getHTMLOffset(documentElement, scroll) {
+  const htmlRect = documentElement.getBoundingClientRect();
+  const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);
+  const y = htmlRect.top + scroll.scrollTop;
   return {
-    name: 'shift',
-    options,
-    async fn(state) {
-      const {
-        x,
-        y,
-        placement
-      } = state;
-      const {
-        mainAxis: checkMainAxis = true,
-        crossAxis: checkCrossAxis = false,
-        limiter = {
-          fn: _ref => {
-            let {
-              x,
-              y
-            } = _ref;
-            return {
-              x,
-              y
-            };
-          }
-        },
-        ...detectOverflowOptions
-      } = evaluate(options, state);
-      const coords = {
-        x,
-        y
-      };
-      const overflow = await detectOverflow(state, detectOverflowOptions);
-      const crossAxis = getSideAxis(getSide(placement));
-      const mainAxis = getOppositeAxis(crossAxis);
-      let mainAxisCoord = coords[mainAxis];
-      let crossAxisCoord = coords[crossAxis];
-      if (checkMainAxis) {
-        const minSide = mainAxis === 'y' ? 'top' : 'left';
-        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';
-        const min = mainAxisCoord + overflow[minSide];
-        const max = mainAxisCoord - overflow[maxSide];
-        mainAxisCoord = clamp(min, mainAxisCoord, max);
-      }
-      if (checkCrossAxis) {
-        const minSide = crossAxis === 'y' ? 'top' : 'left';
-        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';
-        const min = crossAxisCoord + overflow[minSide];
-        const max = crossAxisCoord - overflow[maxSide];
-        crossAxisCoord = clamp(min, crossAxisCoord, max);
-      }
-      const limitedCoords = limiter.fn({
-        ...state,
-        [mainAxis]: mainAxisCoord,
-        [crossAxis]: crossAxisCoord
-      });
-      return {
-        ...limitedCoords,
-        data: {
-          x: limitedCoords.x - x,
-          y: limitedCoords.y - y,
-          enabled: {
-            [mainAxis]: checkMainAxis,
-            [crossAxis]: checkCrossAxis
-          }
-        }
-      };
+    x,
+    y
+  };
+}
+
+function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
+  let {
+    elements,
+    rect,
+    offsetParent,
+    strategy
+  } = _ref;
+  const isFixed = strategy === 'fixed';
+  const documentElement = getDocumentElement(offsetParent);
+  const topLayer = elements ? isTopLayer(elements.floating) : false;
+  if (offsetParent === documentElement || topLayer && isFixed) {
+    return rect;
+  }
+  let scroll = {
+    scrollLeft: 0,
+    scrollTop: 0
+  };
+  let scale = createCoords(1);
+  const offsets = createCoords(0);
+  const isOffsetParentAnElement = isHTMLElement(offsetParent);
+  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
+    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
+      scroll = getNodeScroll(offsetParent);
+    }
+    if (isHTMLElement(offsetParent)) {
+      const offsetRect = getBoundingClientRect(offsetParent);
+      scale = getScale(offsetParent);
+      offsets.x = offsetRect.x + offsetParent.clientLeft;
+      offsets.y = offsetRect.y + offsetParent.clientTop;
     }
+  }
+  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
+  return {
+    width: rect.width * scale.x,
+    height: rect.height * scale.y,
+    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,
+    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y
   };
-};
+}
 
-function hasWindow() {
-  return typeof window !== 'undefined';
+function getClientRects(element) {
+  return Array.from(element.getClientRects());
 }
-function getNodeName(node) {
-  if (isNode(node)) {
-    return (node.nodeName || '').toLowerCase();
+
+// Gets the entire size of the scrollable document area, even extending outside
+// of the `<html>` and `<body>` rect bounds if horizontally scrollable.
+function getDocumentRect(element) {
+  const html = getDocumentElement(element);
+  const scroll = getNodeScroll(element);
+  const body = element.ownerDocument.body;
+  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);
+  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);
+  let x = -scroll.scrollLeft + getWindowScrollBarX(element);
+  const y = -scroll.scrollTop;
+  if (getComputedStyle$1(body).direction === 'rtl') {
+    x += max(html.clientWidth, body.clientWidth) - width;
   }
-  // Mocked nodes in testing environments may not be instances of Node. By
-  // returning `#document` an infinite loop won't occur.
-  // https://github.com/floating-ui/floating-ui/issues/2317
-  return '#document';
+  return {
+    width,
+    height,
+    x,
+    y
+  };
 }
-function getWindow(node) {
-  var _node$ownerDocument;
-  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;
+
+// Safety check: ensure the scrollbar space is reasonable in case this
+// calculation is affected by unusual styles.
+// Most scrollbars leave 15-18px of space.
+const SCROLLBAR_MAX = 25;
+function getViewportRect(element, strategy) {
+  const win = getWindow(element);
+  const html = getDocumentElement(element);
+  const visualViewport = win.visualViewport;
+  let width = html.clientWidth;
+  let height = html.clientHeight;
+  let x = 0;
+  let y = 0;
+  if (visualViewport) {
+    width = visualViewport.width;
+    height = visualViewport.height;
+    const visualViewportBased = isWebKit();
+    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {
+      x = visualViewport.offsetLeft;
+      y = visualViewport.offsetTop;
+    }
+  }
+  const windowScrollbarX = getWindowScrollBarX(html);
+  // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the
+  // visual width of the <html> but this is not considered in the size
+  // of `html.clientWidth`.
+  if (windowScrollbarX <= 0) {
+    const doc = html.ownerDocument;
+    const body = doc.body;
+    const bodyStyles = getComputedStyle(body);
+    const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;
+    const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);
+    if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {
+      width -= clippingStableScrollbarWidth;
+    }
+  } else if (windowScrollbarX <= SCROLLBAR_MAX) {
+    // If the <body> scrollbar is on the left, the width needs to be extended
+    // by the scrollbar amount so there isn't extra space on the right.
+    width += windowScrollbarX;
+  }
+  return {
+    width,
+    height,
+    x,
+    y
+  };
 }
-function getDocumentElement(node) {
-  var _ref;
-  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;
+
+const absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);
+// Returns the inner client rect, subtracting scrollbars if present.
+function getInnerBoundingClientRect(element, strategy) {
+  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');
+  const top = clientRect.top + element.clientTop;
+  const left = clientRect.left + element.clientLeft;
+  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);
+  const width = element.clientWidth * scale.x;
+  const height = element.clientHeight * scale.y;
+  const x = left * scale.x;
+  const y = top * scale.y;
+  return {
+    width,
+    height,
+    x,
+    y
+  };
 }
-function isNode(value) {
-  if (!hasWindow()) {
-    return false;
+function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {
+  let rect;
+  if (clippingAncestor === 'viewport') {
+    rect = getViewportRect(element, strategy);
+  } else if (clippingAncestor === 'document') {
+    rect = getDocumentRect(getDocumentElement(element));
+  } else if (isElement(clippingAncestor)) {
+    rect = getInnerBoundingClientRect(clippingAncestor, strategy);
+  } else {
+    const visualOffsets = getVisualOffsets(element);
+    rect = {
+      x: clippingAncestor.x - visualOffsets.x,
+      y: clippingAncestor.y - visualOffsets.y,
+      width: clippingAncestor.width,
+      height: clippingAncestor.height
+    };
   }
-  return value instanceof Node || value instanceof getWindow(value).Node;
+  return rectToClientRect(rect);
 }
-function isElement(value) {
-  if (!hasWindow()) {
+function hasFixedPositionAncestor(element, stopNode) {
+  const parentNode = getParentNode(element);
+  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {
     return false;
   }
-  return value instanceof Element || value instanceof getWindow(value).Element;
+  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);
 }
-function isHTMLElement(value) {
-  if (!hasWindow()) {
-    return false;
+
+// A "clipping ancestor" is an `overflow` element with the characteristic of
+// clipping (or hiding) child elements. This returns all clipping ancestors
+// of the given element up the tree.
+function getClippingElementAncestors(element, cache) {
+  const cachedResult = cache.get(element);
+  if (cachedResult) {
+    return cachedResult;
   }
-  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;
-}
-function isShadowRoot(value) {
-  if (!hasWindow() || typeof ShadowRoot === 'undefined') {
-    return false;
+  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');
+  let currentContainingBlockComputedStyle = null;
+  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';
+  let currentNode = elementIsFixed ? getParentNode(element) : element;
+
+  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
+  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {
+    const computedStyle = getComputedStyle$1(currentNode);
+    const currentNodeIsContaining = isContainingBlock(currentNode);
+    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {
+      currentContainingBlockComputedStyle = null;
+    }
+    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
+    if (shouldDropCurrentNode) {
+      // Drop non-containing blocks.
+      result = result.filter(ancestor => ancestor !== currentNode);
+    } else {
+      // Record last containing block for next iteration.
+      currentContainingBlockComputedStyle = computedStyle;
+    }
+    currentNode = getParentNode(currentNode);
   }
-  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
-}
-const invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);
-function isOverflowElement(element) {
-  const {
-    overflow,
-    overflowX,
-    overflowY,
-    display
-  } = getComputedStyle$1(element);
-  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);
+  cache.set(element, result);
+  return result;
 }
-const tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);
-function isTableElement(element) {
-  return tableElements.has(getNodeName(element));
+
+// Gets the maximum area that the element is visible in due to any number of
+// clipping ancestors.
+function getClippingRect(_ref) {
+  let {
+    element,
+    boundary,
+    rootBoundary,
+    strategy
+  } = _ref;
+  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);
+  const clippingAncestors = [...elementClippingAncestors, rootBoundary];
+  const firstClippingAncestor = clippingAncestors[0];
+  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {
+    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);
+    accRect.top = max(rect.top, accRect.top);
+    accRect.right = min(rect.right, accRect.right);
+    accRect.bottom = min(rect.bottom, accRect.bottom);
+    accRect.left = max(rect.left, accRect.left);
+    return accRect;
+  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));
+  return {
+    width: clippingRect.right - clippingRect.left,
+    height: clippingRect.bottom - clippingRect.top,
+    x: clippingRect.left,
+    y: clippingRect.top
+  };
 }
-const topLayerSelectors = [':popover-open', ':modal'];
-function isTopLayer(element) {
-  return topLayerSelectors.some(selector => {
-    try {
-      return element.matches(selector);
-    } catch (_e) {
-      return false;
-    }
-  });
+
+function getDimensions(element) {
+  const {
+    width,
+    height
+  } = getCssDimensions(element);
+  return {
+    width,
+    height
+  };
 }
-const transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];
-const willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];
-const containValues = ['paint', 'layout', 'strict', 'content'];
-function isContainingBlock(elementOrCss) {
-  const webkit = isWebKit();
-  const css = isElement(elementOrCss) ? getComputedStyle$1(elementOrCss) : elementOrCss;
 
-  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
-  // https://drafts.csswg.org/css-transforms-2/#individual-transforms
-  return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));
-}
-function getContainingBlock(element) {
-  let currentNode = getParentNode(element);
-  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {
-    if (isContainingBlock(currentNode)) {
-      return currentNode;
-    } else if (isTopLayer(currentNode)) {
-      return null;
+function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
+  const isOffsetParentAnElement = isHTMLElement(offsetParent);
+  const documentElement = getDocumentElement(offsetParent);
+  const isFixed = strategy === 'fixed';
+  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);
+  let scroll = {
+    scrollLeft: 0,
+    scrollTop: 0
+  };
+  const offsets = createCoords(0);
+
+  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use
+  // Firefox with layout.scrollbar.side = 3 in about:config to test this.
+  function setLeftRTLScrollbarOffset() {
+    offsets.x = getWindowScrollBarX(documentElement);
+  }
+  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
+    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
+      scroll = getNodeScroll(offsetParent);
+    }
+    if (isOffsetParentAnElement) {
+      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);
+      offsets.x = offsetRect.x + offsetParent.clientLeft;
+      offsets.y = offsetRect.y + offsetParent.clientTop;
+    } else if (documentElement) {
+      setLeftRTLScrollbarOffset();
     }
-    currentNode = getParentNode(currentNode);
   }
-  return null;
-}
-function isWebKit() {
-  if (typeof CSS === 'undefined' || !CSS.supports) return false;
-  return CSS.supports('-webkit-backdrop-filter', 'none');
-}
-const lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);
-function isLastTraversableNode(node) {
-  return lastTraversableNodeNames.has(getNodeName(node));
-}
-function getComputedStyle$1(element) {
-  return getWindow(element).getComputedStyle(element);
-}
-function getNodeScroll(element) {
-  if (isElement(element)) {
-    return {
-      scrollLeft: element.scrollLeft,
-      scrollTop: element.scrollTop
-    };
+  if (isFixed && !isOffsetParentAnElement && documentElement) {
+    setLeftRTLScrollbarOffset();
   }
+  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
+  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;
+  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;
   return {
-    scrollLeft: element.scrollX,
-    scrollTop: element.scrollY
+    x,
+    y,
+    width: rect.width,
+    height: rect.height
   };
 }
-function getParentNode(node) {
-  if (getNodeName(node) === 'html') {
-    return node;
-  }
-  const result =
-  // Step into the shadow DOM of the parent of a slotted node.
-  node.assignedSlot ||
-  // DOM Element detected.
-  node.parentNode ||
-  // ShadowRoot detected.
-  isShadowRoot(node) && node.host ||
-  // Fallback.
-  getDocumentElement(node);
-  return isShadowRoot(result) ? result.host : result;
+
+function isStaticPositioned(element) {
+  return getComputedStyle$1(element).position === 'static';
 }
-function getNearestOverflowAncestor(node) {
-  const parentNode = getParentNode(node);
-  if (isLastTraversableNode(parentNode)) {
-    return node.ownerDocument ? node.ownerDocument.body : node.body;
+
+function getTrueOffsetParent(element, polyfill) {
+  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {
+    return null;
   }
-  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {
-    return parentNode;
+  if (polyfill) {
+    return polyfill(element);
   }
-  return getNearestOverflowAncestor(parentNode);
+  let rawOffsetParent = element.offsetParent;
+
+  // Firefox returns the <html> element as the offsetParent if it's non-static,
+  // while Chrome and Safari return the <body> element. The <body> element must
+  // be used to perform the correct calculations even if the <html> element is
+  // non-static.
+  if (getDocumentElement(element) === rawOffsetParent) {
+    rawOffsetParent = rawOffsetParent.ownerDocument.body;
+  }
+  return rawOffsetParent;
 }
-function getOverflowAncestors(node, list, traverseIframes) {
-  var _node$ownerDocument2;
-  if (list === void 0) {
-    list = [];
+
+// Gets the closest ancestor positioned element. Handles some edge cases,
+// such as table ancestors and cross browser bugs.
+function getOffsetParent(element, polyfill) {
+  const win = getWindow(element);
+  if (isTopLayer(element)) {
+    return win;
   }
-  if (traverseIframes === void 0) {
-    traverseIframes = true;
+  if (!isHTMLElement(element)) {
+    let svgOffsetParent = getParentNode(element);
+    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {
+      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {
+        return svgOffsetParent;
+      }
+      svgOffsetParent = getParentNode(svgOffsetParent);
+    }
+    return win;
   }
-  const scrollableAncestor = getNearestOverflowAncestor(node);
-  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);
-  const win = getWindow(scrollableAncestor);
-  if (isBody) {
-    const frameElement = getFrameElement(win);
-    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);
+  let offsetParent = getTrueOffsetParent(element, polyfill);
+  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {
+    offsetParent = getTrueOffsetParent(offsetParent, polyfill);
   }
-  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
-}
-function getFrameElement(win) {
-  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;
+  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {
+    return win;
+  }
+  return offsetParent || getContainingBlock(element) || win;
 }
 
-function getCssDimensions(element) {
-  const css = getComputedStyle$1(element);
-  // In testing environments, the `width` and `height` properties are empty
-  // strings for SVG elements, returning NaN. Fallback to `0` in this case.
-  let width = parseFloat(css.width) || 0;
-  let height = parseFloat(css.height) || 0;
-  const hasOffset = isHTMLElement(element);
-  const offsetWidth = hasOffset ? element.offsetWidth : width;
-  const offsetHeight = hasOffset ? element.offsetHeight : height;
-  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;
-  if (shouldFallback) {
-    width = offsetWidth;
-    height = offsetHeight;
-  }
+const getElementRects = async function (data) {
+  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;
+  const getDimensionsFn = this.getDimensions;
+  const floatingDimensions = await getDimensionsFn(data.floating);
   return {
-    width,
-    height,
-    $: shouldFallback
+    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),
+    floating: {
+      x: 0,
+      y: 0,
+      width: floatingDimensions.width,
+      height: floatingDimensions.height
+    }
   };
+};
+
+function isRTL(element) {
+  return getComputedStyle$1(element).direction === 'rtl';
+}
+
+const platform = {
+  convertOffsetParentRelativeRectToViewportRelativeRect,
+  getDocumentElement,
+  getClippingRect,
+  getOffsetParent,
+  getElementRects,
+  getClientRects,
+  getDimensions,
+  getScale,
+  isElement,
+  isRTL
+};
+
+function rectsAreEqual(a, b) {
+  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;
 }
 
-function unwrapElement(element) {
-  return !isElement(element) ? element.contextElement : element;
+// https://samthor.au/2021/observing-dom/
+function observeMove(element, onMove) {
+  let io = null;
+  let timeoutId;
+  const root = getDocumentElement(element);
+  function cleanup() {
+    var _io;
+    clearTimeout(timeoutId);
+    (_io = io) == null || _io.disconnect();
+    io = null;
+  }
+  function refresh(skip, threshold) {
+    if (skip === void 0) {
+      skip = false;
+    }
+    if (threshold === void 0) {
+      threshold = 1;
+    }
+    cleanup();
+    const elementRectForRootMargin = element.getBoundingClientRect();
+    const {
+      left,
+      top,
+      width,
+      height
+    } = elementRectForRootMargin;
+    if (!skip) {
+      onMove();
+    }
+    if (!width || !height) {
+      return;
+    }
+    const insetTop = floor(top);
+    const insetRight = floor(root.clientWidth - (left + width));
+    const insetBottom = floor(root.clientHeight - (top + height));
+    const insetLeft = floor(left);
+    const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px";
+    const options = {
+      rootMargin,
+      threshold: max(0, min(1, threshold)) || 1
+    };
+    let isFirstUpdate = true;
+    function handleObserve(entries) {
+      const ratio = entries[0].intersectionRatio;
+      if (ratio !== threshold) {
+        if (!isFirstUpdate) {
+          return refresh();
+        }
+        if (!ratio) {
+          // If the reference is clipped, the ratio is 0. Throttle the refresh
+          // to prevent an infinite loop of updates.
+          timeoutId = setTimeout(() => {
+            refresh(false, 1e-7);
+          }, 1000);
+        } else {
+          refresh(false, ratio);
+        }
+      }
+      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {
+        // It's possible that even though the ratio is reported as 1, the
+        // element is not actually fully within the IntersectionObserver's root
+        // area anymore. This can happen under performance constraints. This may
+        // be a bug in the browser's IntersectionObserver implementation. To
+        // work around this, we compare the element's bounding rect now with
+        // what it was at the time we created the IntersectionObserver. If they
+        // are not equal then the element moved, so we refresh.
+        refresh();
+      }
+      isFirstUpdate = false;
+    }
+
+    // Older browsers don't support a `document` as the root and will throw an
+    // error.
+    try {
+      io = new IntersectionObserver(handleObserve, {
+        ...options,
+        // Handle <iframe>s
+        root: root.ownerDocument
+      });
+    } catch (_e) {
+      io = new IntersectionObserver(handleObserve, options);
+    }
+    io.observe(element);
+  }
+  refresh(true);
+  return cleanup;
 }
 
-function getScale(element) {
-  const domElement = unwrapElement(element);
-  if (!isHTMLElement(domElement)) {
-    return createCoords(1);
+/**
+ * Automatically updates the position of the floating element when necessary.
+ * Should only be called when the floating element is mounted on the DOM or
+ * visible on the screen.
+ * @returns cleanup function that should be invoked when the floating element is
+ * removed from the DOM or hidden from the screen.
+ * @see https://floating-ui.com/docs/autoUpdate
+ */
+function autoUpdate(reference, floating, update, options) {
+  if (options === void 0) {
+    options = {};
   }
-  const rect = domElement.getBoundingClientRect();
   const {
-    width,
-    height,
-    $
-  } = getCssDimensions(domElement);
-  let x = ($ ? round(rect.width) : rect.width) / width;
-  let y = ($ ? round(rect.height) : rect.height) / height;
-
-  // 0, NaN, or Infinity should always fallback to 1.
-
-  if (!x || !Number.isFinite(x)) {
-    x = 1;
+    ancestorScroll = true,
+    ancestorResize = true,
+    elementResize = typeof ResizeObserver === 'function',
+    layoutShift = typeof IntersectionObserver === 'function',
+    animationFrame = false
+  } = options;
+  const referenceEl = unwrapElement(reference);
+  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];
+  ancestors.forEach(ancestor => {
+    ancestorScroll && ancestor.addEventListener('scroll', update, {
+      passive: true
+    });
+    ancestorResize && ancestor.addEventListener('resize', update);
+  });
+  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;
+  let reobserveFrame = -1;
+  let resizeObserver = null;
+  if (elementResize) {
+    resizeObserver = new ResizeObserver(_ref => {
+      let [firstEntry] = _ref;
+      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {
+        // Prevent update loops when using the `size` middleware.
+        // https://github.com/floating-ui/floating-ui/issues/1740
+        resizeObserver.unobserve(floating);
+        cancelAnimationFrame(reobserveFrame);
+        reobserveFrame = requestAnimationFrame(() => {
+          var _resizeObserver;
+          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);
+        });
+      }
+      update();
+    });
+    if (referenceEl && !animationFrame) {
+      resizeObserver.observe(referenceEl);
+    }
+    resizeObserver.observe(floating);
   }
-  if (!y || !Number.isFinite(y)) {
-    y = 1;
+  let frameId;
+  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;
+  if (animationFrame) {
+    frameLoop();
   }
-  return {
-    x,
-    y
+  function frameLoop() {
+    const nextRefRect = getBoundingClientRect(reference);
+    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {
+      update();
+    }
+    prevRefRect = nextRefRect;
+    frameId = requestAnimationFrame(frameLoop);
+  }
+  update();
+  return () => {
+    var _resizeObserver2;
+    ancestors.forEach(ancestor => {
+      ancestorScroll && ancestor.removeEventListener('scroll', update);
+      ancestorResize && ancestor.removeEventListener('resize', update);
+    });
+    cleanupIo == null || cleanupIo();
+    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();
+    resizeObserver = null;
+    if (animationFrame) {
+      cancelAnimationFrame(frameId);
+    }
   };
 }
 
-const noOffsets = /*#__PURE__*/createCoords(0);
-function getVisualOffsets(element) {
-  const win = getWindow(element);
-  if (!isWebKit() || !win.visualViewport) {
-    return noOffsets;
-  }
-  return {
-    x: win.visualViewport.offsetLeft,
-    y: win.visualViewport.offsetTop
+/**
+ * Modifies the placement by translating the floating element along the
+ * specified axes.
+ * A number (shorthand for `mainAxis` or distance), or an axes configuration
+ * object may be passed.
+ * @see https://floating-ui.com/docs/offset
+ */
+const offset = offset$1;
+
+/**
+ * Optimizes the visibility of the floating element by shifting it in order to
+ * keep it in view when it will overflow the clipping boundary.
+ * @see https://floating-ui.com/docs/shift
+ */
+const shift = shift$1;
+
+/**
+ * Optimizes the visibility of the floating element by flipping the `placement`
+ * in order to keep it in view when the preferred placement(s) will overflow the
+ * clipping boundary. Alternative to `autoPlacement`.
+ * @see https://floating-ui.com/docs/flip
+ */
+const flip = flip$1;
+
+/**
+ * Provides data to position an inner element of the floating element so that it
+ * appears centered to the reference element.
+ * @see https://floating-ui.com/docs/arrow
+ */
+const arrow = arrow$1;
+
+/**
+ * Computes the `x` and `y` coordinates that will place the floating element
+ * next to a given reference element.
+ */
+const computePosition = (reference, floating, options) => {
+  // This caches the expensive `getClippingElementAncestors` function so that
+  // multiple lifecycle resets re-use the same result. It only lives for a
+  // single call. If other functions become expensive, we can add them as well.
+  const cache = new Map();
+  const mergedOptions = {
+    platform,
+    ...options
   };
-}
-function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {
-  if (isFixed === void 0) {
-    isFixed = false;
-  }
-  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {
-    return false;
-  }
-  return isFixed;
-}
+  const platformWithCache = {
+    ...mergedOptions.platform,
+    _c: cache
+  };
+  return computePosition$1(reference, floating, {
+    ...mergedOptions,
+    platform: platformWithCache
+  });
+};
 
-function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {
-  if (includeScale === void 0) {
-    includeScale = false;
-  }
-  if (isFixedStrategy === void 0) {
-    isFixedStrategy = false;
-  }
-  const clientRect = element.getBoundingClientRect();
-  const domElement = unwrapElement(element);
-  let scale = createCoords(1);
-  if (includeScale) {
-    if (offsetParent) {
-      if (isElement(offsetParent)) {
-        scale = getScale(offsetParent);
-      }
-    } else {
-      scale = getScale(element);
-    }
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap util/floating-ui.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+
+/**
+ * Breakpoints for responsive placement (matches SCSS $breakpoints)
+ */
+const BREAKPOINTS = {
+  sm: 576,
+  md: 768,
+  lg: 1024,
+  xl: 1280,
+  '2xl': 1536
+};
+
+/**
+ * Parse a placement string that may contain responsive prefixes
+ * Example: "bottom-start md:top-end lg:right" returns { xs: 'bottom-start', md: 'top-end', lg: 'right' }
+ *
+ * @param {string} placementString - The placement string to parse
+ * @param {string} defaultPlacement - The default placement to use for xs/base
+ * @returns {object|null} - Object with breakpoint keys and placement values, or null if not responsive
+ */
+const parseResponsivePlacement = (placementString, defaultPlacement = 'bottom') => {
+  // Check if placement contains responsive prefixes (e.g., "bottom-start md:top-end")
+  if (!placementString || !placementString.includes(':')) {
+    return null;
   }
-  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);
-  let x = (clientRect.left + visualOffsets.x) / scale.x;
-  let y = (clientRect.top + visualOffsets.y) / scale.y;
-  let width = clientRect.width / scale.x;
-  let height = clientRect.height / scale.y;
-  if (domElement) {
-    const win = getWindow(domElement);
-    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;
-    let currentWin = win;
-    let currentIFrame = getFrameElement(currentWin);
-    while (currentIFrame && offsetParent && offsetWin !== currentWin) {
-      const iframeScale = getScale(currentIFrame);
-      const iframeRect = currentIFrame.getBoundingClientRect();
-      const css = getComputedStyle$1(currentIFrame);
-      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;
-      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;
-      x *= iframeScale.x;
-      y *= iframeScale.y;
-      width *= iframeScale.x;
-      height *= iframeScale.y;
-      x += left;
-      y += top;
-      currentWin = getWindow(currentIFrame);
-      currentIFrame = getFrameElement(currentWin);
+
+  // Parse the placement string into breakpoint-keyed object
+  const parts = placementString.split(/\s+/);
+  const placements = {
+    xs: defaultPlacement
+  }; // Default fallback
+
+  for (const part of parts) {
+    if (part.includes(':')) {
+      // Responsive placement like "md:top-end"
+      const [breakpoint, placement] = part.split(':');
+      if (BREAKPOINTS[breakpoint] !== undefined) {
+        placements[breakpoint] = placement;
+      }
+    } else {
+      // Base placement (no prefix = xs/default)
+      placements.xs = part;
     }
   }
-  return rectToClientRect({
-    width,
-    height,
-    x,
-    y
-  });
-}
+  return placements;
+};
 
-// If <html> has a CSS width greater than the viewport, then this will be
-// incorrect for RTL.
-function getWindowScrollBarX(element, rect) {
-  const leftScroll = getNodeScroll(element).scrollLeft;
-  if (!rect) {
-    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;
+/**
+ * Get the active placement for the current viewport width
+ *
+ * @param {object} responsivePlacements - Object with breakpoint keys and placement values
+ * @param {string} defaultPlacement - Fallback placement
+ * @returns {string} - The active placement for current viewport
+ */
+const getResponsivePlacement = (responsivePlacements, defaultPlacement = 'bottom') => {
+  if (!responsivePlacements) {
+    return defaultPlacement;
   }
-  return rect.left + leftScroll;
-}
 
-function getHTMLOffset(documentElement, scroll) {
-  const htmlRect = documentElement.getBoundingClientRect();
-  const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);
-  const y = htmlRect.top + scroll.scrollTop;
-  return {
-    x,
-    y
-  };
-}
+  // Get current viewport width
+  const viewportWidth = window.innerWidth;
 
-function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
-  let {
-    elements,
-    rect,
-    offsetParent,
-    strategy
-  } = _ref;
-  const isFixed = strategy === 'fixed';
-  const documentElement = getDocumentElement(offsetParent);
-  const topLayer = elements ? isTopLayer(elements.floating) : false;
-  if (offsetParent === documentElement || topLayer && isFixed) {
-    return rect;
-  }
-  let scroll = {
-    scrollLeft: 0,
-    scrollTop: 0
-  };
-  let scale = createCoords(1);
-  const offsets = createCoords(0);
-  const isOffsetParentAnElement = isHTMLElement(offsetParent);
-  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
-    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
-      scroll = getNodeScroll(offsetParent);
-    }
-    if (isHTMLElement(offsetParent)) {
-      const offsetRect = getBoundingClientRect(offsetParent);
-      scale = getScale(offsetParent);
-      offsets.x = offsetRect.x + offsetParent.clientLeft;
-      offsets.y = offsetRect.y + offsetParent.clientTop;
+  // Find the largest breakpoint that matches
+  let activePlacement = responsivePlacements.xs || defaultPlacement;
+
+  // Check breakpoints in order (sm, md, lg, xl, 2xl)
+  const breakpointOrder = ['sm', 'md', 'lg', 'xl', '2xl'];
+  for (const breakpoint of breakpointOrder) {
+    const minWidth = BREAKPOINTS[breakpoint];
+    if (viewportWidth >= minWidth && responsivePlacements[breakpoint]) {
+      activePlacement = responsivePlacements[breakpoint];
     }
   }
-  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
-  return {
-    width: rect.width * scale.x,
-    height: rect.height * scale.y,
-    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,
-    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y
-  };
-}
+  return activePlacement;
+};
 
-function getClientRects(element) {
-  return Array.from(element.getClientRects());
-}
+/**
+ * Create media query listeners for responsive placement changes
+ *
+ * @param {Function} callback - Callback to run when breakpoint changes
+ * @returns {Array} - Array of { mql, handler } objects for cleanup
+ */
+const createBreakpointListeners = callback => {
+  const listeners = [];
+  for (const breakpoint of Object.keys(BREAKPOINTS)) {
+    const minWidth = BREAKPOINTS[breakpoint];
+    const mql = window.matchMedia(`(min-width: ${minWidth}px)`);
+    mql.addEventListener('change', callback);
+    listeners.push({
+      mql,
+      handler: callback
+    });
+  }
+  return listeners;
+};
 
-// Gets the entire size of the scrollable document area, even extending outside
-// of the `<html>` and `<body>` rect bounds if horizontally scrollable.
-function getDocumentRect(element) {
-  const html = getDocumentElement(element);
-  const scroll = getNodeScroll(element);
-  const body = element.ownerDocument.body;
-  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);
-  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);
-  let x = -scroll.scrollLeft + getWindowScrollBarX(element);
-  const y = -scroll.scrollTop;
-  if (getComputedStyle$1(body).direction === 'rtl') {
-    x += max(html.clientWidth, body.clientWidth) - width;
+/**
+ * Clean up media query listeners
+ *
+ * @param {Array} listeners - Array of { mql, handler } objects
+ */
+const disposeBreakpointListeners = listeners => {
+  for (const {
+    mql,
+    handler
+  } of listeners) {
+    mql.removeEventListener('change', handler);
   }
-  return {
-    width,
-    height,
-    x,
-    y
-  };
-}
+};
 
-// Safety check: ensure the scrollbar space is reasonable in case this
-// calculation is affected by unusual styles.
-// Most scrollbars leave 15-18px of space.
-const SCROLLBAR_MAX = 25;
-function getViewportRect(element, strategy) {
-  const win = getWindow(element);
-  const html = getDocumentElement(element);
-  const visualViewport = win.visualViewport;
-  let width = html.clientWidth;
-  let height = html.clientHeight;
-  let x = 0;
-  let y = 0;
-  if (visualViewport) {
-    width = visualViewport.width;
-    height = visualViewport.height;
-    const visualViewportBased = isWebKit();
-    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {
-      x = visualViewport.offsetLeft;
-      y = visualViewport.offsetTop;
-    }
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap menu.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+
+/**
+ * Constants
+ */
+
+const NAME$g = 'menu';
+const DATA_KEY$c = 'bs.menu';
+const EVENT_KEY$c = `.${DATA_KEY$c}`;
+const DATA_API_KEY$7 = '.data-api';
+const ESCAPE_KEY$2 = 'Escape';
+const TAB_KEY$2 = 'Tab';
+const ARROW_UP_KEY$2 = 'ArrowUp';
+const ARROW_DOWN_KEY$2 = 'ArrowDown';
+const ARROW_LEFT_KEY$1 = 'ArrowLeft';
+const ARROW_RIGHT_KEY$1 = 'ArrowRight';
+const HOME_KEY$2 = 'Home';
+const END_KEY$2 = 'End';
+const ENTER_KEY$1 = 'Enter';
+const SPACE_KEY$1 = ' ';
+const RIGHT_MOUSE_BUTTON = 2;
+const SUBMENU_CLOSE_DELAY = 100;
+const EVENT_HIDE$7 = `hide${EVENT_KEY$c}`;
+const EVENT_HIDDEN$7 = `hidden${EVENT_KEY$c}`;
+const EVENT_SHOW$7 = `show${EVENT_KEY$c}`;
+const EVENT_SHOWN$7 = `shown${EVENT_KEY$c}`;
+const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$c}${DATA_API_KEY$7}`;
+const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$c}${DATA_API_KEY$7}`;
+const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$c}${DATA_API_KEY$7}`;
+const CLASS_NAME_SHOW$6 = 'show';
+const SELECTOR_DATA_TOGGLE$8 = '[data-bs-toggle="menu"]:not(.disabled):not(:disabled)';
+const SELECTOR_MENU$2 = '.menu';
+const SELECTOR_SUBMENU = '.submenu';
+const SELECTOR_SUBMENU_TOGGLE = '.submenu > .menu-item';
+const SELECTOR_NAVBAR_NAV = '.navbar-nav';
+const SELECTOR_VISIBLE_ITEMS$1 = '.menu-item:not(.disabled):not(:disabled)';
+const DEFAULT_PLACEMENT = 'bottom-start';
+const SUBMENU_PLACEMENT = 'end-start';
+const resolveLogicalPlacement = placement => {
+  if (isRTL$1()) {
+    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left');
   }
-  const windowScrollbarX = getWindowScrollBarX(html);
-  // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the
-  // visual width of the <html> but this is not considered in the size
-  // of `html.clientWidth`.
-  if (windowScrollbarX <= 0) {
-    const doc = html.ownerDocument;
-    const body = doc.body;
-    const bodyStyles = getComputedStyle(body);
-    const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;
-    const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);
-    if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {
-      width -= clippingStableScrollbarWidth;
+  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right');
+};
+const triangleSign = (p1, p2, p3) => (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);
+const Default$f = {
+  autoClose: true,
+  boundary: 'clippingParents',
+  container: false,
+  display: 'dynamic',
+  offset: [0, 2],
+  floatingConfig: null,
+  menu: null,
+  placement: DEFAULT_PLACEMENT,
+  reference: 'toggle',
+  strategy: 'absolute',
+  submenuTrigger: 'both',
+  submenuDelay: SUBMENU_CLOSE_DELAY
+};
+const DefaultType$f = {
+  autoClose: '(boolean|string)',
+  boundary: '(string|element)',
+  container: '(string|element|boolean)',
+  display: 'string',
+  offset: '(array|string|function)',
+  floatingConfig: '(null|object|function)',
+  menu: '(null|element)',
+  placement: 'string',
+  reference: '(string|element|object)',
+  strategy: 'string',
+  submenuTrigger: 'string',
+  submenuDelay: 'number'
+};
+
+/**
+ * Class definition
+ */
+
+class Menu extends BaseComponent {
+  static _openInstances = (() => new Set())();
+  constructor(element, config) {
+    if (typeof computePosition === 'undefined') {
+      throw new TypeError('Bootstrap\'s menus require Floating UI (https://floating-ui.com)');
     }
-  } else if (windowScrollbarX <= SCROLLBAR_MAX) {
-    // If the <body> scrollbar is on the left, the width needs to be extended
-    // by the scrollbar amount so there isn't extra space on the right.
-    width += windowScrollbarX;
+    super(element, config);
+    this._floatingCleanup = null;
+    this._mediaQueryListeners = [];
+    this._responsivePlacements = null;
+    this._parent = this._element.parentNode;
+    this._isSubmenu = this._parent.classList?.contains('submenu');
+    this._openSubmenus = new Map();
+    this._submenuCloseTimeouts = new Map();
+    this._hoverIntentData = null;
+    this._menu = this._config.menu || this._findMenu();
+    this._menuOriginalParent = this._menu?.parentNode;
+    this._parseResponsivePlacements();
+    this._setupSubmenuListeners();
   }
-  return {
-    width,
-    height,
-    x,
-    y
-  };
-}
 
-const absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);
-// Returns the inner client rect, subtracting scrollbars if present.
-function getInnerBoundingClientRect(element, strategy) {
-  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');
-  const top = clientRect.top + element.clientTop;
-  const left = clientRect.left + element.clientLeft;
-  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);
-  const width = element.clientWidth * scale.x;
-  const height = element.clientHeight * scale.y;
-  const x = left * scale.x;
-  const y = top * scale.y;
-  return {
-    width,
-    height,
-    x,
-    y
-  };
-}
-function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {
-  let rect;
-  if (clippingAncestor === 'viewport') {
-    rect = getViewportRect(element, strategy);
-  } else if (clippingAncestor === 'document') {
-    rect = getDocumentRect(getDocumentElement(element));
-  } else if (isElement(clippingAncestor)) {
-    rect = getInnerBoundingClientRect(clippingAncestor, strategy);
-  } else {
-    const visualOffsets = getVisualOffsets(element);
-    rect = {
-      x: clippingAncestor.x - visualOffsets.x,
-      y: clippingAncestor.y - visualOffsets.y,
-      width: clippingAncestor.width,
-      height: clippingAncestor.height
-    };
+  // Getters
+  static get Default() {
+    return Default$f;
   }
-  return rectToClientRect(rect);
-}
-function hasFixedPositionAncestor(element, stopNode) {
-  const parentNode = getParentNode(element);
-  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {
-    return false;
+  static get DefaultType() {
+    return DefaultType$f;
   }
-  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);
-}
-
-// A "clipping ancestor" is an `overflow` element with the characteristic of
-// clipping (or hiding) child elements. This returns all clipping ancestors
-// of the given element up the tree.
-function getClippingElementAncestors(element, cache) {
-  const cachedResult = cache.get(element);
-  if (cachedResult) {
-    return cachedResult;
+  static get NAME() {
+    return NAME$g;
   }
-  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');
-  let currentContainingBlockComputedStyle = null;
-  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';
-  let currentNode = elementIsFixed ? getParentNode(element) : element;
 
-  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
-  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {
-    const computedStyle = getComputedStyle$1(currentNode);
-    const currentNodeIsContaining = isContainingBlock(currentNode);
-    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {
-      currentContainingBlockComputedStyle = null;
+  // Public
+  toggle() {
+    return this._isShown() ? this.hide() : this.show();
+  }
+  show() {
+    if (isDisabled(this._element) || this._isShown()) {
+      return;
     }
-    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
-    if (shouldDropCurrentNode) {
-      // Drop non-containing blocks.
-      result = result.filter(ancestor => ancestor !== currentNode);
-    } else {
-      // Record last containing block for next iteration.
-      currentContainingBlockComputedStyle = computedStyle;
+    const relatedTarget = {
+      relatedTarget: this._element
+    };
+    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$7, relatedTarget);
+    if (showEvent.defaultPrevented) {
+      return;
+    }
+    this._moveMenuToContainer();
+    this._createFloating();
+    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {
+      for (const element of [].concat(...document.body.children)) {
+        EventHandler.on(element, 'mouseover', noop);
+      }
+    }
+    this._element.focus({
+      focusVisible: false
+    });
+    this._element.setAttribute('aria-expanded', 'true');
+    this._menu.classList.add(CLASS_NAME_SHOW$6);
+    this._element.classList.add(CLASS_NAME_SHOW$6);
+    if (this._parent) {
+      this._parent.classList.add(CLASS_NAME_SHOW$6);
+    }
+    Menu._openInstances.add(this);
+    EventHandler.trigger(this._element, EVENT_SHOWN$7, relatedTarget);
+  }
+  hide() {
+    if (isDisabled(this._element) || !this._isShown()) {
+      return;
+    }
+    const relatedTarget = {
+      relatedTarget: this._element
+    };
+    this._completeHide(relatedTarget);
+  }
+  dispose() {
+    this._disposeFloating();
+    this._restoreMenuToOriginalParent();
+    this._disposeMediaQueryListeners();
+    this._closeAllSubmenus();
+    this._clearAllSubmenuTimeouts();
+    Menu._openInstances.delete(this);
+    super.dispose();
+  }
+  update() {
+    if (this._floatingCleanup) {
+      this._updateFloatingPosition();
     }
-    currentNode = getParentNode(currentNode);
   }
-  cache.set(element, result);
-  return result;
-}
-
-// Gets the maximum area that the element is visible in due to any number of
-// clipping ancestors.
-function getClippingRect(_ref) {
-  let {
-    element,
-    boundary,
-    rootBoundary,
-    strategy
-  } = _ref;
-  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);
-  const clippingAncestors = [...elementClippingAncestors, rootBoundary];
-  const firstClippingAncestor = clippingAncestors[0];
-  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {
-    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);
-    accRect.top = max(rect.top, accRect.top);
-    accRect.right = min(rect.right, accRect.right);
-    accRect.bottom = min(rect.bottom, accRect.bottom);
-    accRect.left = max(rect.left, accRect.left);
-    return accRect;
-  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));
-  return {
-    width: clippingRect.right - clippingRect.left,
-    height: clippingRect.bottom - clippingRect.top,
-    x: clippingRect.left,
-    y: clippingRect.top
-  };
-}
-
-function getDimensions(element) {
-  const {
-    width,
-    height
-  } = getCssDimensions(element);
-  return {
-    width,
-    height
-  };
-}
-
-function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
-  const isOffsetParentAnElement = isHTMLElement(offsetParent);
-  const documentElement = getDocumentElement(offsetParent);
-  const isFixed = strategy === 'fixed';
-  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);
-  let scroll = {
-    scrollLeft: 0,
-    scrollTop: 0
-  };
-  const offsets = createCoords(0);
 
-  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use
-  // Firefox with layout.scrollbar.side = 3 in about:config to test this.
-  function setLeftRTLScrollbarOffset() {
-    offsets.x = getWindowScrollBarX(documentElement);
+  // Private
+  _findMenu() {
+    return SelectorEngine.next(this._element, SELECTOR_MENU$2)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU$2)[0] || SelectorEngine.findOne(SELECTOR_MENU$2, this._parent);
   }
-  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
-    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
-      scroll = getNodeScroll(offsetParent);
+  _completeHide(relatedTarget) {
+    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$7, relatedTarget);
+    if (hideEvent.defaultPrevented) {
+      return;
     }
-    if (isOffsetParentAnElement) {
-      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);
-      offsets.x = offsetRect.x + offsetParent.clientLeft;
-      offsets.y = offsetRect.y + offsetParent.clientTop;
-    } else if (documentElement) {
-      setLeftRTLScrollbarOffset();
+    this._closeAllSubmenus();
+    if ('ontouchstart' in document.documentElement) {
+      for (const element of [].concat(...document.body.children)) {
+        EventHandler.off(element, 'mouseover', noop);
+      }
     }
+    this._disposeFloating();
+    this._restoreMenuToOriginalParent();
+    this._menu.classList.remove(CLASS_NAME_SHOW$6);
+    this._element.classList.remove(CLASS_NAME_SHOW$6);
+    if (this._parent) {
+      this._parent.classList.remove(CLASS_NAME_SHOW$6);
+    }
+    this._element.setAttribute('aria-expanded', 'false');
+    Manipulator.removeDataAttribute(this._menu, 'placement');
+    Manipulator.removeDataAttribute(this._menu, 'display');
+    Menu._openInstances.delete(this);
+    EventHandler.trigger(this._element, EVENT_HIDDEN$7, relatedTarget);
   }
-  if (isFixed && !isOffsetParentAnElement && documentElement) {
-    setLeftRTLScrollbarOffset();
+  _getConfig(config) {
+    config = super._getConfig(config);
+    if (typeof config.reference === 'object' && !isElement$1(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {
+      throw new TypeError(`${NAME$g.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
+    }
+    return config;
   }
-  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
-  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;
-  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;
-  return {
-    x,
-    y,
-    width: rect.width,
-    height: rect.height
-  };
-}
-
-function isStaticPositioned(element) {
-  return getComputedStyle$1(element).position === 'static';
-}
-
-function getTrueOffsetParent(element, polyfill) {
-  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {
-    return null;
+  _createFloating() {
+    if (this._config.display === 'static') {
+      Manipulator.setDataAttribute(this._menu, 'display', 'static');
+      return;
+    }
+    let referenceElement = this._element;
+    if (this._config.reference === 'parent') {
+      referenceElement = this._parent;
+    } else if (isElement$1(this._config.reference)) {
+      referenceElement = getElement(this._config.reference);
+    } else if (typeof this._config.reference === 'object') {
+      referenceElement = this._config.reference;
+    }
+    this._updateFloatingPosition(referenceElement);
+    this._floatingCleanup = autoUpdate(referenceElement, this._menu, () => this._updateFloatingPosition(referenceElement));
+  }
+  async _updateFloatingPosition(referenceElement = null) {
+    if (!this._menu) {
+      return;
+    }
+    if (!referenceElement) {
+      if (this._config.reference === 'parent') {
+        referenceElement = this._parent;
+      } else if (isElement$1(this._config.reference)) {
+        referenceElement = getElement(this._config.reference);
+      } else if (typeof this._config.reference === 'object') {
+        referenceElement = this._config.reference;
+      } else {
+        referenceElement = this._element;
+      }
+    }
+    const placement = this._getPlacement();
+    const middleware = this._getFloatingMiddleware();
+    const floatingConfig = this._getFloatingConfig(placement, middleware);
+    await this._applyFloatingPosition(referenceElement, this._menu, floatingConfig.placement, floatingConfig.middleware, floatingConfig.strategy);
   }
-  if (polyfill) {
-    return polyfill(element);
+  _isShown() {
+    return this._menu.classList.contains(CLASS_NAME_SHOW$6);
   }
-  let rawOffsetParent = element.offsetParent;
-
-  // Firefox returns the <html> element as the offsetParent if it's non-static,
-  // while Chrome and Safari return the <body> element. The <body> element must
-  // be used to perform the correct calculations even if the <html> element is
-  // non-static.
-  if (getDocumentElement(element) === rawOffsetParent) {
-    rawOffsetParent = rawOffsetParent.ownerDocument.body;
+  _getPlacement() {
+    const placement = this._responsivePlacements ? getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) : this._config.placement;
+    return resolveLogicalPlacement(placement);
   }
-  return rawOffsetParent;
-}
-
-// Gets the closest ancestor positioned element. Handles some edge cases,
-// such as table ancestors and cross browser bugs.
-function getOffsetParent(element, polyfill) {
-  const win = getWindow(element);
-  if (isTopLayer(element)) {
-    return win;
+  _parseResponsivePlacements() {
+    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT);
+    if (this._responsivePlacements) {
+      this._setupMediaQueryListeners();
+    }
   }
-  if (!isHTMLElement(element)) {
-    let svgOffsetParent = getParentNode(element);
-    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {
-      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {
-        return svgOffsetParent;
+  _setupMediaQueryListeners() {
+    this._disposeMediaQueryListeners();
+    this._mediaQueryListeners = createBreakpointListeners(() => {
+      if (this._isShown()) {
+        this._updateFloatingPosition();
       }
-      svgOffsetParent = getParentNode(svgOffsetParent);
+    });
+  }
+  _disposeMediaQueryListeners() {
+    disposeBreakpointListeners(this._mediaQueryListeners);
+    this._mediaQueryListeners = [];
+  }
+  _getOffset() {
+    const {
+      offset: offsetConfig
+    } = this._config;
+    if (typeof offsetConfig === 'string') {
+      return offsetConfig.split(',').map(value => Number.parseInt(value, 10));
     }
-    return win;
+    if (typeof offsetConfig === 'function') {
+      return ({
+        placement,
+        rects
+      }) => {
+        const result = offsetConfig({
+          placement,
+          reference: rects.reference,
+          floating: rects.floating
+        }, this._element);
+        return result;
+      };
+    }
+    return offsetConfig;
   }
-  let offsetParent = getTrueOffsetParent(element, polyfill);
-  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {
-    offsetParent = getTrueOffsetParent(offsetParent, polyfill);
+  _getFloatingMiddleware() {
+    const offsetValue = this._getOffset();
+    const middleware = [offset(typeof offsetValue === 'function' ? offsetValue : {
+      mainAxis: offsetValue[1] || 0,
+      crossAxis: offsetValue[0] || 0
+    }), flip({
+      fallbackPlacements: this._getFallbackPlacements()
+    }), shift({
+      boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary
+    })];
+    return middleware;
   }
-  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {
-    return win;
+  _getFallbackPlacements() {
+    const placement = this._getPlacement();
+    const fallbackMap = {
+      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],
+      'bottom-start': ['top-start', 'bottom-end', 'top-end'],
+      'bottom-end': ['top-end', 'bottom-start', 'top-start'],
+      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],
+      'top-start': ['bottom-start', 'top-end', 'bottom-end'],
+      'top-end': ['bottom-end', 'top-start', 'bottom-start'],
+      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],
+      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],
+      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],
+      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],
+      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],
+      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']
+    };
+    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left'];
   }
-  return offsetParent || getContainingBlock(element) || win;
-}
-
-const getElementRects = async function (data) {
-  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;
-  const getDimensionsFn = this.getDimensions;
-  const floatingDimensions = await getDimensionsFn(data.floating);
-  return {
-    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),
-    floating: {
-      x: 0,
-      y: 0,
-      width: floatingDimensions.width,
-      height: floatingDimensions.height
+  _getFloatingConfig(placement, middleware) {
+    const defaultConfig = {
+      placement,
+      middleware,
+      strategy: this._config.strategy
+    };
+    return {
+      ...defaultConfig,
+      ...execute(this._config.floatingConfig, [undefined, defaultConfig])
+    };
+  }
+  _disposeFloating() {
+    if (this._floatingCleanup) {
+      this._floatingCleanup();
+      this._floatingCleanup = null;
     }
-  };
-};
-
-function isRTL(element) {
-  return getComputedStyle$1(element).direction === 'rtl';
-}
-
-const platform = {
-  convertOffsetParentRelativeRectToViewportRelativeRect,
-  getDocumentElement,
-  getClippingRect,
-  getOffsetParent,
-  getElementRects,
-  getClientRects,
-  getDimensions,
-  getScale,
-  isElement,
-  isRTL
-};
-
-function rectsAreEqual(a, b) {
-  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;
-}
-
-// https://samthor.au/2021/observing-dom/
-function observeMove(element, onMove) {
-  let io = null;
-  let timeoutId;
-  const root = getDocumentElement(element);
-  function cleanup() {
-    var _io;
-    clearTimeout(timeoutId);
-    (_io = io) == null || _io.disconnect();
-    io = null;
   }
-  function refresh(skip, threshold) {
-    if (skip === void 0) {
-      skip = false;
+  _getContainer() {
+    const {
+      container
+    } = this._config;
+    if (container === false) {
+      return null;
     }
-    if (threshold === void 0) {
-      threshold = 1;
+    return container === true ? document.body : getElement(container);
+  }
+  _moveMenuToContainer() {
+    const container = this._getContainer();
+    if (!container || !this._menu) {
+      return;
     }
-    cleanup();
-    const elementRectForRootMargin = element.getBoundingClientRect();
-    const {
-      left,
-      top,
-      width,
-      height
-    } = elementRectForRootMargin;
-    if (!skip) {
-      onMove();
+    if (this._menu.parentNode !== container) {
+      container.append(this._menu);
     }
-    if (!width || !height) {
+  }
+  _restoreMenuToOriginalParent() {
+    if (!this._menuOriginalParent || !this._menu) {
       return;
     }
-    const insetTop = floor(top);
-    const insetRight = floor(root.clientWidth - (left + width));
-    const insetBottom = floor(root.clientHeight - (top + height));
-    const insetLeft = floor(left);
-    const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px";
-    const options = {
-      rootMargin,
-      threshold: max(0, min(1, threshold)) || 1
-    };
-    let isFirstUpdate = true;
-    function handleObserve(entries) {
-      const ratio = entries[0].intersectionRatio;
-      if (ratio !== threshold) {
-        if (!isFirstUpdate) {
-          return refresh();
-        }
-        if (!ratio) {
-          // If the reference is clipped, the ratio is 0. Throttle the refresh
-          // to prevent an infinite loop of updates.
-          timeoutId = setTimeout(() => {
-            refresh(false, 1e-7);
-          }, 1000);
-        } else {
-          refresh(false, ratio);
-        }
-      }
-      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {
-        // It's possible that even though the ratio is reported as 1, the
-        // element is not actually fully within the IntersectionObserver's root
-        // area anymore. This can happen under performance constraints. This may
-        // be a bug in the browser's IntersectionObserver implementation. To
-        // work around this, we compare the element's bounding rect now with
-        // what it was at the time we created the IntersectionObserver. If they
-        // are not equal then the element moved, so we refresh.
-        refresh();
-      }
-      isFirstUpdate = false;
+    if (this._menu.parentNode !== this._menuOriginalParent) {
+      this._menuOriginalParent.append(this._menu);
+    }
+  }
+  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {
+    if (!floating.isConnected) {
+      return null;
     }
-
-    // Older browsers don't support a `document` as the root and will throw an
-    // error.
-    try {
-      io = new IntersectionObserver(handleObserve, {
-        ...options,
-        // Handle <iframe>s
-        root: root.ownerDocument
-      });
-    } catch (_e) {
-      io = new IntersectionObserver(handleObserve, options);
+    const {
+      x,
+      y,
+      placement: finalPlacement
+    } = await computePosition(reference, floating, {
+      placement,
+      middleware,
+      strategy
+    });
+    if (!floating.isConnected) {
+      return null;
     }
-    io.observe(element);
+    Object.assign(floating.style, {
+      position: strategy,
+      left: `${x}px`,
+      top: `${y}px`,
+      margin: '0'
+    });
+    Manipulator.setDataAttribute(floating, 'placement', finalPlacement);
+    return finalPlacement;
   }
-  refresh(true);
-  return cleanup;
-}
 
-/**
- * Automatically updates the position of the floating element when necessary.
- * Should only be called when the floating element is mounted on the DOM or
- * visible on the screen.
- * @returns cleanup function that should be invoked when the floating element is
- * removed from the DOM or hidden from the screen.
- * @see https://floating-ui.com/docs/autoUpdate
- */
-function autoUpdate(reference, floating, update, options) {
-  if (options === void 0) {
-    options = {};
+  // -------------------------------------------------------------------------
+  // Submenu handling
+  // -------------------------------------------------------------------------
+
+  _setupSubmenuListeners() {
+    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {
+      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {
+        this._onSubmenuTriggerEnter(event);
+      });
+      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {
+        this._onSubmenuLeave(event);
+      });
+      EventHandler.on(this._menu, 'mousemove', event => {
+        this._trackMousePosition(event);
+      });
+    }
+    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {
+      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {
+        this._onSubmenuTriggerClick(event);
+      });
+    }
   }
-  const {
-    ancestorScroll = true,
-    ancestorResize = true,
-    elementResize = typeof ResizeObserver === 'function',
-    layoutShift = typeof IntersectionObserver === 'function',
-    animationFrame = false
-  } = options;
-  const referenceEl = unwrapElement(reference);
-  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];
-  ancestors.forEach(ancestor => {
-    ancestorScroll && ancestor.addEventListener('scroll', update, {
-      passive: true
-    });
-    ancestorResize && ancestor.addEventListener('resize', update);
-  });
-  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;
-  let reobserveFrame = -1;
-  let resizeObserver = null;
-  if (elementResize) {
-    resizeObserver = new ResizeObserver(_ref => {
-      let [firstEntry] = _ref;
-      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {
-        // Prevent update loops when using the `size` middleware.
-        // https://github.com/floating-ui/floating-ui/issues/1740
-        resizeObserver.unobserve(floating);
-        cancelAnimationFrame(reobserveFrame);
-        reobserveFrame = requestAnimationFrame(() => {
-          var _resizeObserver;
-          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);
-        });
-      }
-      update();
-    });
-    if (referenceEl && !animationFrame) {
-      resizeObserver.observe(referenceEl);
+  _onSubmenuTriggerEnter(event) {
+    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE);
+    if (!trigger) {
+      return;
     }
-    resizeObserver.observe(floating);
+    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU);
+    const submenu = SelectorEngine.findOne(SELECTOR_MENU$2, submenuWrapper);
+    if (!submenu) {
+      return;
+    }
+    this._cancelSubmenuCloseTimeout(submenu);
+    this._closeSiblingSubmenus(submenuWrapper);
+    this._openSubmenu(trigger, submenu, submenuWrapper);
   }
-  let frameId;
-  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;
-  if (animationFrame) {
-    frameLoop();
+  _onSubmenuLeave(event) {
+    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU);
+    const submenu = SelectorEngine.findOne(SELECTOR_MENU$2, submenuWrapper);
+    if (!submenu || !this._openSubmenus.has(submenu)) {
+      return;
+    }
+    if (this._isMovingTowardSubmenu(event, submenu)) {
+      return;
+    }
+    this._scheduleSubmenuClose(submenu, submenuWrapper);
   }
-  function frameLoop() {
-    const nextRefRect = getBoundingClientRect(reference);
-    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {
-      update();
+  _onSubmenuTriggerClick(event) {
+    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE);
+    if (!trigger) {
+      return;
+    }
+    event.preventDefault();
+    event.stopPropagation();
+    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU);
+    const submenu = SelectorEngine.findOne(SELECTOR_MENU$2, submenuWrapper);
+    if (!submenu) {
+      return;
+    }
+    if (this._openSubmenus.has(submenu)) {
+      this._closeSubmenu(submenu, submenuWrapper);
+    } else {
+      this._closeSiblingSubmenus(submenuWrapper);
+      this._openSubmenu(trigger, submenu, submenuWrapper);
     }
-    prevRefRect = nextRefRect;
-    frameId = requestAnimationFrame(frameLoop);
   }
-  update();
-  return () => {
-    var _resizeObserver2;
-    ancestors.forEach(ancestor => {
-      ancestorScroll && ancestor.removeEventListener('scroll', update);
-      ancestorResize && ancestor.removeEventListener('resize', update);
+  _openSubmenu(trigger, submenu, submenuWrapper) {
+    if (this._openSubmenus.has(submenu)) {
+      return;
+    }
+    trigger.setAttribute('aria-expanded', 'true');
+    trigger.setAttribute('aria-haspopup', 'true');
+    submenu.classList.add(CLASS_NAME_SHOW$6);
+    submenuWrapper.classList.add(CLASS_NAME_SHOW$6);
+    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper);
+    this._openSubmenus.set(submenu, cleanup);
+    EventHandler.on(submenu, 'mouseenter', () => {
+      this._cancelSubmenuCloseTimeout(submenu);
     });
-    cleanupIo == null || cleanupIo();
-    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();
-    resizeObserver = null;
-    if (animationFrame) {
-      cancelAnimationFrame(frameId);
+  }
+  _closeSubmenu(submenu, submenuWrapper) {
+    if (!this._openSubmenus.has(submenu)) {
+      return;
     }
-  };
-}
-
-/**
- * Modifies the placement by translating the floating element along the
- * specified axes.
- * A number (shorthand for `mainAxis` or distance), or an axes configuration
- * object may be passed.
- * @see https://floating-ui.com/docs/offset
- */
-const offset = offset$1;
-
-/**
- * Optimizes the visibility of the floating element by shifting it in order to
- * keep it in view when it will overflow the clipping boundary.
- * @see https://floating-ui.com/docs/shift
- */
-const shift = shift$1;
-
-/**
- * Optimizes the visibility of the floating element by flipping the `placement`
- * in order to keep it in view when the preferred placement(s) will overflow the
- * clipping boundary. Alternative to `autoPlacement`.
- * @see https://floating-ui.com/docs/flip
- */
-const flip = flip$1;
-
-/**
- * Provides data to position an inner element of the floating element so that it
- * appears centered to the reference element.
- * @see https://floating-ui.com/docs/arrow
- */
-const arrow = arrow$1;
-
-/**
- * Computes the `x` and `y` coordinates that will place the floating element
- * next to a given reference element.
- */
-const computePosition = (reference, floating, options) => {
-  // This caches the expensive `getClippingElementAncestors` function so that
-  // multiple lifecycle resets re-use the same result. It only lives for a
-  // single call. If other functions become expensive, we can add them as well.
-  const cache = new Map();
-  const mergedOptions = {
-    platform,
-    ...options
-  };
-  const platformWithCache = {
-    ...mergedOptions.platform,
-    _c: cache
-  };
-  return computePosition$1(reference, floating, {
-    ...mergedOptions,
-    platform: platformWithCache
-  });
-};
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap util/floating-ui.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
+    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU$2}.${CLASS_NAME_SHOW$6}`, submenu);
+    for (const nested of nestedSubmenus) {
+      const nestedWrapper = nested.closest(SELECTOR_SUBMENU);
+      this._closeSubmenu(nested, nestedWrapper);
+    }
+    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper);
+    const cleanup = this._openSubmenus.get(submenu);
+    if (cleanup) {
+      cleanup();
+    }
+    this._openSubmenus.delete(submenu);
+    EventHandler.off(submenu, 'mouseenter');
+    if (trigger) {
+      trigger.setAttribute('aria-expanded', 'false');
+    }
+    submenu.classList.remove(CLASS_NAME_SHOW$6);
+    submenuWrapper.classList.remove(CLASS_NAME_SHOW$6);
+    submenu.style.position = '';
+    submenu.style.left = '';
+    submenu.style.top = '';
+    submenu.style.margin = '';
+  }
+  _closeAllSubmenus() {
+    for (const [submenu] of this._openSubmenus) {
+      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU);
+      this._closeSubmenu(submenu, submenuWrapper);
+    }
+  }
+  _closeSiblingSubmenus(currentSubmenuWrapper) {
+    const parent = currentSubmenuWrapper.parentNode;
+    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU$2}.${CLASS_NAME_SHOW$6}`, parent);
+    for (const siblingMenu of siblingSubmenus) {
+      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU);
+      if (siblingWrapper !== currentSubmenuWrapper) {
+        this._closeSubmenu(siblingMenu, siblingWrapper);
+      }
+    }
+  }
+  _createSubmenuFloating(trigger, submenu, submenuWrapper) {
+    const referenceElement = submenuWrapper;
+    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT);
+    const middleware = [offset({
+      mainAxis: 0,
+      crossAxis: -4
+    }), flip({
+      fallbackPlacements: [resolveLogicalPlacement('start-start'), resolveLogicalPlacement('end-end'), resolveLogicalPlacement('start-end')]
+    }), shift({
+      padding: 8
+    })];
+    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware);
+    updatePosition();
+    return autoUpdate(referenceElement, submenu, updatePosition);
+  }
+  _scheduleSubmenuClose(submenu, submenuWrapper) {
+    this._cancelSubmenuCloseTimeout(submenu);
+    const timeoutId = setTimeout(() => {
+      this._closeSubmenu(submenu, submenuWrapper);
+      this._submenuCloseTimeouts.delete(submenu);
+    }, this._config.submenuDelay);
+    this._submenuCloseTimeouts.set(submenu, timeoutId);
+  }
+  _cancelSubmenuCloseTimeout(submenu) {
+    const timeoutId = this._submenuCloseTimeouts.get(submenu);
+    if (timeoutId) {
+      clearTimeout(timeoutId);
+      this._submenuCloseTimeouts.delete(submenu);
+    }
+  }
+  _clearAllSubmenuTimeouts() {
+    for (const timeoutId of this._submenuCloseTimeouts.values()) {
+      clearTimeout(timeoutId);
+    }
+    this._submenuCloseTimeouts.clear();
+  }
 
-/**
- * Breakpoints for responsive placement (matches SCSS $breakpoints)
- */
-const BREAKPOINTS = {
-  sm: 576,
-  md: 768,
-  lg: 1024,
-  xl: 1280,
-  '2xl': 1536
-};
+  // -------------------------------------------------------------------------
+  // Hover intent / Safe triangle
+  // -------------------------------------------------------------------------
 
-/**
- * Parse a placement string that may contain responsive prefixes
- * Example: "bottom-start md:top-end lg:right" returns { xs: 'bottom-start', md: 'top-end', lg: 'right' }
- *
- * @param {string} placementString - The placement string to parse
- * @param {string} defaultPlacement - The default placement to use for xs/base
- * @returns {object|null} - Object with breakpoint keys and placement values, or null if not responsive
- */
-const parseResponsivePlacement = (placementString, defaultPlacement = 'bottom') => {
-  // Check if placement contains responsive prefixes (e.g., "bottom-start md:top-end")
-  if (!placementString || !placementString.includes(':')) {
-    return null;
+  _trackMousePosition(event) {
+    this._hoverIntentData = {
+      x: event.clientX,
+      y: event.clientY,
+      timestamp: Date.now()
+    };
+  }
+  _isMovingTowardSubmenu(event, submenu) {
+    if (!this._hoverIntentData) {
+      return false;
+    }
+    const submenuRect = submenu.getBoundingClientRect();
+    const currentPos = {
+      x: event.clientX,
+      y: event.clientY
+    };
+    const lastPos = {
+      x: this._hoverIntentData.x,
+      y: this._hoverIntentData.y
+    };
+    const isRtl = isRTL$1();
+    const targetX = isRtl ? submenuRect.right : submenuRect.left;
+    const topCorner = {
+      x: targetX,
+      y: submenuRect.top
+    };
+    const bottomCorner = {
+      x: targetX,
+      y: submenuRect.bottom
+    };
+    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner);
+  }
+  _pointInTriangle(point, v1, v2, v3) {
+    const d1 = triangleSign(point, v1, v2);
+    const d2 = triangleSign(point, v2, v3);
+    const d3 = triangleSign(point, v3, v1);
+    const hasNeg = d1 < 0 || d2 < 0 || d3 < 0;
+    const hasPos = d1 > 0 || d2 > 0 || d3 > 0;
+    return !(hasNeg && hasPos);
   }
 
-  // Parse the placement string into breakpoint-keyed object
-  const parts = placementString.split(/\s+/);
-  const placements = {
-    xs: defaultPlacement
-  }; // Default fallback
+  // -------------------------------------------------------------------------
+  // Keyboard navigation
+  // -------------------------------------------------------------------------
 
-  for (const part of parts) {
-    if (part.includes(':')) {
-      // Responsive placement like "md:top-end"
-      const [breakpoint, placement] = part.split(':');
-      if (BREAKPOINTS[breakpoint] !== undefined) {
-        placements[breakpoint] = placement;
+  _selectMenuItem({
+    key,
+    target
+  }) {
+    const currentMenu = target.closest(SELECTOR_MENU$2) || this._menu;
+    const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS$1}`, currentMenu).filter(element => isVisible(element));
+    if (!items.length) {
+      return;
+    }
+    getNextActiveElement(items, target, key === ARROW_DOWN_KEY$2, !items.includes(target)).focus();
+  }
+  _handleSubmenuKeydown(event) {
+    const {
+      key,
+      target
+    } = event;
+    const isRtl = isRTL$1();
+    const enterKey = isRtl ? ARROW_LEFT_KEY$1 : ARROW_RIGHT_KEY$1;
+    const exitKey = isRtl ? ARROW_RIGHT_KEY$1 : ARROW_LEFT_KEY$1;
+    const submenuWrapper = target.closest(SELECTOR_SUBMENU);
+    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE);
+    if ((key === ENTER_KEY$1 || key === SPACE_KEY$1) && isSubmenuTrigger) {
+      event.preventDefault();
+      event.stopPropagation();
+      const submenu = SelectorEngine.findOne(SELECTOR_MENU$2, submenuWrapper);
+      if (submenu) {
+        this._closeSiblingSubmenus(submenuWrapper);
+        this._openSubmenu(target, submenu, submenuWrapper);
+        requestAnimationFrame(() => {
+          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS$1, submenu);
+          if (firstItem) {
+            firstItem.focus();
+          }
+        });
       }
-    } else {
-      // Base placement (no prefix = xs/default)
-      placements.xs = part;
+      return true;
+    }
+    if (key === enterKey && isSubmenuTrigger) {
+      event.preventDefault();
+      event.stopPropagation();
+      const submenu = SelectorEngine.findOne(SELECTOR_MENU$2, submenuWrapper);
+      if (submenu) {
+        this._closeSiblingSubmenus(submenuWrapper);
+        this._openSubmenu(target, submenu, submenuWrapper);
+        requestAnimationFrame(() => {
+          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS$1, submenu);
+          if (firstItem) {
+            firstItem.focus();
+          }
+        });
+      }
+      return true;
+    }
+    if (key === exitKey) {
+      const currentMenu = target.closest(SELECTOR_MENU$2);
+      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU);
+      if (parentSubmenuWrapper) {
+        event.preventDefault();
+        event.stopPropagation();
+        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper);
+        this._closeSubmenu(currentMenu, parentSubmenuWrapper);
+        if (parentTrigger) {
+          parentTrigger.focus();
+        }
+        return true;
+      }
+    }
+    if (key === HOME_KEY$2 || key === END_KEY$2) {
+      event.preventDefault();
+      event.stopPropagation();
+      const currentMenu = target.closest(SELECTOR_MENU$2);
+      const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS$1}`, currentMenu).filter(element => isVisible(element));
+      if (items.length) {
+        const targetItem = key === HOME_KEY$2 ? items[0] : items[items.length - 1];
+        targetItem.focus();
+      }
+      return true;
     }
+    return false;
   }
-  return placements;
-};
-
-/**
- * Get the active placement for the current viewport width
- *
- * @param {object} responsivePlacements - Object with breakpoint keys and placement values
- * @param {string} defaultPlacement - Fallback placement
- * @returns {string} - The active placement for current viewport
- */
-const getResponsivePlacement = (responsivePlacements, defaultPlacement = 'bottom') => {
-  if (!responsivePlacements) {
-    return defaultPlacement;
+  static clearMenus(event) {
+    if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$2) {
+      return;
+    }
+    for (const instance of Menu._openInstances) {
+      if (instance._config.autoClose === false) {
+        continue;
+      }
+      const composedPath = event.composedPath();
+      const isMenuTarget = composedPath.includes(instance._menu);
+      if (composedPath.includes(instance._element) || instance._config.autoClose === 'inside' && !isMenuTarget || instance._config.autoClose === 'outside' && isMenuTarget) {
+        continue;
+      }
+      if (instance._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$2 || /input|select|option|textarea|form/i.test(event.target.tagName))) {
+        continue;
+      }
+      const relatedTarget = {
+        relatedTarget: instance._element
+      };
+      if (event.type === 'click') {
+        relatedTarget.clickEvent = event;
+      }
+      instance._completeHide(relatedTarget);
+    }
   }
-
-  // Get current viewport width
-  const viewportWidth = window.innerWidth;
-
-  // Find the largest breakpoint that matches
-  let activePlacement = responsivePlacements.xs || defaultPlacement;
-
-  // Check breakpoints in order (sm, md, lg, xl, 2xl)
-  const breakpointOrder = ['sm', 'md', 'lg', 'xl', '2xl'];
-  for (const breakpoint of breakpointOrder) {
-    const minWidth = BREAKPOINTS[breakpoint];
-    if (viewportWidth >= minWidth && responsivePlacements[breakpoint]) {
-      activePlacement = responsivePlacements[breakpoint];
+  static dataApiKeydownHandler(event) {
+    const isInput = /input|textarea/i.test(event.target.tagName);
+    const isEscapeEvent = event.key === ESCAPE_KEY$2;
+    const isUpOrDownEvent = [ARROW_UP_KEY$2, ARROW_DOWN_KEY$2].includes(event.key);
+    const isLeftOrRightEvent = [ARROW_LEFT_KEY$1, ARROW_RIGHT_KEY$1].includes(event.key);
+    const isHomeOrEndEvent = [HOME_KEY$2, END_KEY$2].includes(event.key);
+    const isEnterOrSpaceEvent = [ENTER_KEY$1, SPACE_KEY$1].includes(event.key);
+    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE);
+    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent && !(isEnterOrSpaceEvent && isSubmenuTrigger)) {
+      return;
+    }
+    if (isInput && !isEscapeEvent) {
+      return;
+    }
+    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$8) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$8)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$8)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$8, event.delegateTarget.parentNode);
+    if (!getToggleButton) {
+      return;
+    }
+    const instance = Menu.getOrCreateInstance(getToggleButton);
+    if ((isLeftOrRightEvent || isHomeOrEndEvent || isEnterOrSpaceEvent && isSubmenuTrigger) && instance._handleSubmenuKeydown(event)) {
+      return;
+    }
+    if (isUpOrDownEvent) {
+      event.preventDefault();
+      event.stopPropagation();
+      instance.show();
+      instance._selectMenuItem(event);
+      return;
+    }
+    if (isEscapeEvent && instance._isShown()) {
+      event.preventDefault();
+      event.stopPropagation();
+      const currentMenu = event.target.closest(SELECTOR_MENU$2);
+      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU);
+      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {
+        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper);
+        instance._closeSubmenu(currentMenu, parentSubmenuWrapper);
+        if (parentTrigger) {
+          parentTrigger.focus();
+        }
+        return;
+      }
+      instance.hide();
+      getToggleButton.focus();
     }
   }
-  return activePlacement;
-};
+}
 
 /**
- * Create media query listeners for responsive placement changes
- *
- * @param {Function} callback - Callback to run when breakpoint changes
- * @returns {Array} - Array of { mql, handler } objects for cleanup
+ * Data API implementation
  */
-const createBreakpointListeners = callback => {
-  const listeners = [];
-  for (const breakpoint of Object.keys(BREAKPOINTS)) {
-    const minWidth = BREAKPOINTS[breakpoint];
-    const mql = window.matchMedia(`(min-width: ${minWidth}px)`);
-    mql.addEventListener('change', callback);
-    listeners.push({
-      mql,
-      handler: callback
-    });
-  }
-  return listeners;
-};
 
-/**
- * Clean up media query listeners
- *
- * @param {Array} listeners - Array of { mql, handler } objects
- */
-const disposeBreakpointListeners = listeners => {
-  for (const {
-    mql,
-    handler
-  } of listeners) {
-    mql.removeEventListener('change', handler);
-  }
-};
+EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$8, Menu.dataApiKeydownHandler);
+EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU$2, Menu.dataApiKeydownHandler);
+EventHandler.on(document, EVENT_CLICK_DATA_API$5, Menu.clearMenus);
+EventHandler.on(document, EVENT_KEYUP_DATA_API, Menu.clearMenus);
+EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$8, function (event) {
+  event.preventDefault();
+  Menu.getOrCreateInstance(this).toggle();
+});
 
 /**
  * --------------------------------------------------------------------------
- * Bootstrap dropdown.js
+ * Bootstrap combobox.js
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  * --------------------------------------------------------------------------
  */
@@ -3955,127 +4062,84 @@ const disposeBreakpointListeners = listeners => {
  * Constants
  */
 
-const NAME$d = 'dropdown';
-const DATA_KEY$9 = 'bs.dropdown';
-const EVENT_KEY$9 = `.${DATA_KEY$9}`;
-const DATA_API_KEY$4 = '.data-api';
+const NAME$f = 'combobox';
+const DATA_KEY$b = 'bs.combobox';
+const EVENT_KEY$b = `.${DATA_KEY$b}`;
+const DATA_API_KEY$6 = '.data-api';
 const ESCAPE_KEY$1 = 'Escape';
 const TAB_KEY$1 = 'Tab';
 const ARROW_UP_KEY$1 = 'ArrowUp';
 const ARROW_DOWN_KEY$1 = 'ArrowDown';
-const ARROW_LEFT_KEY$1 = 'ArrowLeft';
-const ARROW_RIGHT_KEY$1 = 'ArrowRight';
 const HOME_KEY$1 = 'Home';
 const END_KEY$1 = 'End';
 const ENTER_KEY = 'Enter';
 const SPACE_KEY = ' ';
-const RIGHT_MOUSE_BUTTON = 2;
-
-// Hover intent delay (ms) - grace period before closing submenu
-const SUBMENU_CLOSE_DELAY = 100;
-const EVENT_HIDE$4 = `hide${EVENT_KEY$9}`;
-const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$9}`;
-const EVENT_SHOW$4 = `show${EVENT_KEY$9}`;
-const EVENT_SHOWN$4 = `shown${EVENT_KEY$9}`;
-const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$9}${DATA_API_KEY$4}`;
-const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$9}${DATA_API_KEY$4}`;
-const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$9}${DATA_API_KEY$4}`;
+const EVENT_CHANGE$1 = `change${EVENT_KEY$b}`;
+const EVENT_SHOW$6 = `show${EVENT_KEY$b}`;
+const EVENT_SHOWN$6 = `shown${EVENT_KEY$b}`;
+const EVENT_HIDE$6 = `hide${EVENT_KEY$b}`;
+const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$b}`;
+const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$b}${DATA_API_KEY$6}`;
 const CLASS_NAME_SHOW$5 = 'show';
-const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)';
-const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$5}.${CLASS_NAME_SHOW$5}`;
-const SELECTOR_MENU = '.dropdown-menu';
-const SELECTOR_SUBMENU = '.dropdown-submenu';
-const SELECTOR_SUBMENU_TOGGLE = '.dropdown-submenu > .dropdown-item';
-const SELECTOR_NAVBAR_NAV = '.navbar-nav';
-const SELECTOR_VISIBLE_ITEMS = '.dropdown-item:not(.disabled):not(:disabled)';
-
-// Default logical placement (uses start/end which get resolved to left/right based on RTL)
-const DEFAULT_PLACEMENT = 'bottom-start';
-const SUBMENU_PLACEMENT = 'end-start';
-
-// Resolve logical placement (start/end) to physical (left/right) based on RTL
-const resolveLogicalPlacement = placement => {
-  if (isRTL$1()) {
-    // RTL: start → right, end → left
-    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left');
-  }
-
-  // LTR: start → left, end → right
-  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right');
-};
-
-// Helper for barycentric coordinate calculation (point in triangle check)
-const triangleSign = (p1, p2, p3) => (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);
-const Default$c = {
-  autoClose: true,
+const CLASS_NAME_SELECTED = 'selected';
+const CLASS_NAME_PLACEHOLDER = 'combobox-placeholder';
+const SELECTOR_DATA_TOGGLE$7 = '[data-bs-toggle="combobox"]';
+const SELECTOR_MENU$1 = '.menu';
+const SELECTOR_MENU_ITEM = '.menu-item[data-bs-value]';
+const SELECTOR_VISIBLE_ITEMS = '.menu-item[data-bs-value]:not(.disabled):not(:disabled)';
+const SELECTOR_VALUE = '.combobox-value';
+const SELECTOR_SEARCH_INPUT = '.combobox-search-input';
+const SELECTOR_NO_RESULTS = '.combobox-no-results';
+const Default$e = {
   boundary: 'clippingParents',
-  container: false,
-  display: 'dynamic',
+  multiple: false,
+  name: null,
   offset: [0, 2],
-  floatingConfig: null,
-  placement: DEFAULT_PLACEMENT,
-  reference: 'toggle',
-  strategy: 'absolute',
-  // Submenu options
-  submenuTrigger: 'both',
-  // 'click', 'hover', or 'both'
-  submenuDelay: SUBMENU_CLOSE_DELAY
+  placeholder: '',
+  placement: 'bottom-start',
+  search: false,
+  searchNormalize: false
 };
-const DefaultType$c = {
-  autoClose: '(boolean|string)',
+const DefaultType$e = {
   boundary: '(string|element)',
-  container: '(string|element|boolean)',
-  display: 'string',
+  multiple: 'boolean',
+  name: '(string|null)',
   offset: '(array|string|function)',
-  floatingConfig: '(null|object|function)',
+  placeholder: 'string',
   placement: 'string',
-  reference: '(string|element|object)',
-  strategy: 'string',
-  submenuTrigger: 'string',
-  submenuDelay: 'number'
+  search: 'boolean',
+  searchNormalize: 'boolean'
 };
 
 /**
  * Class definition
  */
 
-class Dropdown extends BaseComponent {
+class Combobox extends BaseComponent {
   constructor(element, config) {
-    if (typeof computePosition === 'undefined') {
-      throw new TypeError('Bootstrap\'s dropdowns require Floating UI (https://floating-ui.com)');
-    }
     super(element, config);
-    this._floatingCleanup = null;
-    this._mediaQueryListeners = [];
-    this._responsivePlacements = null;
-    this._parent = this._element.parentNode; // dropdown wrapper
-    this._isSubmenu = this._parent.classList.contains('dropdown-submenu');
-    this._openSubmenus = new Map(); // Map of submenu element -> cleanup function
-    this._submenuCloseTimeouts = new Map(); // Map of submenu element -> timeout ID
-    this._hoverIntentData = null; // For safe triangle calculation
-
-    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
-    this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);
-
-    // Store original menu parent for container option
-    this._menuOriginalParent = this._menu?.parentNode;
-
-    // Parse responsive placements on init
-    this._parseResponsivePlacements();
-
-    // Set up submenu event listeners
-    this._setupSubmenuListeners();
+    this._toggle = this._element;
+    this._menu = SelectorEngine.next(this._toggle, SELECTOR_MENU$1)[0];
+    this._valueDisplay = SelectorEngine.findOne(SELECTOR_VALUE, this._toggle);
+    this._searchInput = SelectorEngine.findOne(SELECTOR_SEARCH_INPUT, this._menu);
+    this._noResults = SelectorEngine.findOne(SELECTOR_NO_RESULTS, this._menu);
+    this._hiddenInput = null;
+    this._menuInstance = null;
+    this._createHiddenInput();
+    this._createMenuInstance();
+    this._syncInitialSelection();
+    this._addEventListeners();
   }
 
   // Getters
   static get Default() {
-    return Default$c;
+    return Default$e;
   }
   static get DefaultType() {
-    return DefaultType$c;
+    return DefaultType$e;
   }
   static get NAME() {
-    return NAME$d;
+    return NAME$f;
   }
 
   // Public
@@ -4083,746 +4147,906 @@ class Dropdown extends BaseComponent {
     return this._isShown() ? this.hide() : this.show();
   }
   show() {
-    if (isDisabled(this._element) || this._isShown()) {
+    if (isDisabled(this._toggle) || this._isShown()) {
       return;
     }
-    const relatedTarget = {
-      relatedTarget: this._element
-    };
-    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, relatedTarget);
+    const showEvent = EventHandler.trigger(this._toggle, EVENT_SHOW$6);
     if (showEvent.defaultPrevented) {
       return;
     }
-
-    // Move menu to container if specified (to escape overflow clipping)
-    this._moveMenuToContainer();
-    this._createFloating();
-
-    // If this is a touch-enabled device we add extra
-    // empty mouseover listeners to the body's immediate children;
-    // only needed because of broken event delegation on iOS
-    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
-    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {
-      for (const element of [].concat(...document.body.children)) {
-        EventHandler.on(element, 'mouseover', noop);
-      }
+    this._menuInstance.show();
+    if (this._searchInput) {
+      this._searchInput.value = '';
+      this._filterItems('');
+      requestAnimationFrame(() => this._searchInput.focus());
     }
-    this._element.focus();
-    this._element.setAttribute('aria-expanded', 'true');
-    this._menu.classList.add(CLASS_NAME_SHOW$5);
-    this._element.classList.add(CLASS_NAME_SHOW$5);
-    this._parent.classList.add(CLASS_NAME_SHOW$5);
-    EventHandler.trigger(this._element, EVENT_SHOWN$4, relatedTarget);
+    EventHandler.trigger(this._toggle, EVENT_SHOWN$6);
   }
   hide() {
-    if (isDisabled(this._element) || !this._isShown()) {
+    if (!this._isShown()) {
       return;
     }
-    const relatedTarget = {
-      relatedTarget: this._element
-    };
-    this._completeHide(relatedTarget);
+    const hideEvent = EventHandler.trigger(this._toggle, EVENT_HIDE$6);
+    if (hideEvent.defaultPrevented) {
+      return;
+    }
+    this._menuInstance.hide();
+    EventHandler.trigger(this._toggle, EVENT_HIDDEN$6);
   }
   dispose() {
-    this._disposeFloating();
-    this._restoreMenuToOriginalParent();
-    this._disposeMediaQueryListeners();
-    this._closeAllSubmenus();
-    this._clearAllSubmenuTimeouts();
-    super.dispose();
-  }
-  update() {
-    if (this._floatingCleanup) {
-      this._updateFloatingPosition();
+    if (this._menuInstance) {
+      this._menuInstance.dispose();
+      this._menuInstance = null;
+    }
+    if (this._hiddenInput) {
+      this._hiddenInput.remove();
+      this._hiddenInput = null;
     }
+    EventHandler.off(this._menu, EVENT_KEY$b);
+    EventHandler.off(this._toggle, EVENT_KEY$b);
+    super.dispose();
   }
 
   // Private
-  _completeHide(relatedTarget) {
-    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4, relatedTarget);
-    if (hideEvent.defaultPrevented) {
+  _isShown() {
+    return this._menu.classList.contains(CLASS_NAME_SHOW$5);
+  }
+  _createHiddenInput() {
+    const {
+      name
+    } = this._config;
+    if (!name) {
       return;
     }
-
-    // Close all open submenus first
-    this._closeAllSubmenus();
-
-    // If this is a touch-enabled device we remove the extra
-    // empty mouseover listeners we added for iOS support
-    if ('ontouchstart' in document.documentElement) {
-      for (const element of [].concat(...document.body.children)) {
-        EventHandler.off(element, 'mouseover', noop);
+    this._hiddenInput = document.createElement('input');
+    this._hiddenInput.type = 'hidden';
+    this._hiddenInput.name = name;
+    this._hiddenInput.value = '';
+    this._toggle.parentNode.insertBefore(this._hiddenInput, this._toggle);
+  }
+  _createMenuInstance() {
+    this._menuInstance = new Menu(this._toggle, {
+      menu: this._menu,
+      autoClose: this._config.multiple ? 'outside' : true,
+      boundary: this._config.boundary,
+      offset: this._config.offset,
+      placement: this._config.placement
+    });
+  }
+  _syncInitialSelection() {
+    const selectedItems = this._getSelectedItems();
+    if (selectedItems.length > 0) {
+      this._updateToggleText();
+      this._updateHiddenInput();
+    } else {
+      this._showPlaceholder();
+    }
+  }
+  _addEventListeners() {
+    EventHandler.on(this._menu, 'click', SELECTOR_MENU_ITEM, event => {
+      const item = event.target.closest(SELECTOR_MENU_ITEM);
+      if (!item || isDisabled(item)) {
+        return;
+      }
+      event.preventDefault();
+      event.stopPropagation();
+      this._selectItem(item);
+    });
+    EventHandler.on(this._toggle, 'keydown', event => {
+      this._handleToggleKeydown(event);
+    });
+    EventHandler.on(this._menu, 'keydown', event => {
+      this._handleMenuKeydown(event);
+    });
+    if (this._searchInput) {
+      EventHandler.on(this._searchInput, 'input', () => {
+        this._filterItems(this._searchInput.value);
+      });
+      EventHandler.on(this._searchInput, 'keydown', event => {
+        if (event.key === ARROW_DOWN_KEY$1) {
+          event.preventDefault();
+          const items = this._getVisibleItems();
+          if (items.length > 0) {
+            items[0].focus();
+          }
+        }
+        if (event.key === ESCAPE_KEY$1) {
+          this.hide();
+          this._toggle.focus();
+        }
+      });
+    }
+  }
+  _selectItem(item) {
+    if (this._config.multiple) {
+      item.classList.toggle(CLASS_NAME_SELECTED);
+      item.setAttribute('aria-selected', item.classList.contains(CLASS_NAME_SELECTED));
+    } else {
+      const previouslySelected = SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu);
+      for (const prev of previouslySelected) {
+        prev.classList.remove(CLASS_NAME_SELECTED);
+        prev.setAttribute('aria-selected', 'false');
       }
+      item.classList.add(CLASS_NAME_SELECTED);
+      item.setAttribute('aria-selected', 'true');
+    }
+    this._updateToggleText();
+    this._updateHiddenInput();
+    const value = this._config.multiple ? this._getSelectedItems().map(el => el.dataset.bsValue) : item.dataset.bsValue;
+    EventHandler.trigger(this._toggle, EVENT_CHANGE$1, {
+      value,
+      item
+    });
+    if (!this._config.multiple) {
+      this.hide();
+      this._toggle.focus();
     }
-    this._disposeFloating();
-
-    // Restore menu to original parent if it was moved
-    this._restoreMenuToOriginalParent();
-    this._menu.classList.remove(CLASS_NAME_SHOW$5);
-    this._element.classList.remove(CLASS_NAME_SHOW$5);
-    this._parent.classList.remove(CLASS_NAME_SHOW$5);
-    this._element.setAttribute('aria-expanded', 'false');
-    Manipulator.removeDataAttribute(this._menu, 'placement');
-    Manipulator.removeDataAttribute(this._menu, 'display');
-    EventHandler.trigger(this._element, EVENT_HIDDEN$4, relatedTarget);
   }
-  _getConfig(config) {
-    config = super._getConfig(config);
-    if (typeof config.reference === 'object' && !isElement$1(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {
-      // Floating UI virtual elements require a getBoundingClientRect method
-      throw new TypeError(`${NAME$d.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
+  _updateToggleText() {
+    const selectedItems = this._getSelectedItems();
+    if (selectedItems.length === 0) {
+      this._showPlaceholder();
+      return;
+    }
+    this._valueDisplay.classList.remove(CLASS_NAME_PLACEHOLDER);
+    if (this._config.multiple && selectedItems.length > 1) {
+      this._valueDisplay.textContent = `${selectedItems.length} selected`;
+    } else {
+      const item = selectedItems[0];
+      const label = SelectorEngine.findOne('.menu-item-content > span:first-child', item);
+      this._valueDisplay.textContent = label ? label.textContent : item.textContent.trim();
+    }
+  }
+  _showPlaceholder() {
+    const {
+      placeholder
+    } = this._config;
+    if (placeholder) {
+      this._valueDisplay.textContent = placeholder;
+      this._valueDisplay.classList.add(CLASS_NAME_PLACEHOLDER);
+    }
+  }
+  _updateHiddenInput() {
+    if (!this._hiddenInput) {
+      return;
+    }
+    const selectedItems = this._getSelectedItems();
+    const values = selectedItems.map(el => el.dataset.bsValue);
+    this._hiddenInput.value = this._config.multiple ? values.join(',') : values[0] || '';
+  }
+  _getSelectedItems() {
+    return SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu);
+  }
+  _getVisibleItems() {
+    return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(item => isVisible(item));
+  }
+  _filterItems(query) {
+    const normalizedQuery = this._normalizeText(query.toLowerCase().trim());
+    const items = SelectorEngine.find(SELECTOR_MENU_ITEM, this._menu);
+    let visibleCount = 0;
+    for (const item of items) {
+      const text = this._normalizeText(item.textContent.toLowerCase().trim());
+      const matches = !normalizedQuery || text.includes(normalizedQuery);
+      item.style.display = matches ? '' : 'none';
+      if (matches) {
+        visibleCount++;
+      }
+    }
+    if (this._noResults) {
+      this._noResults.classList.toggle('d-none', visibleCount > 0);
+    }
+  }
+  _normalizeText(text) {
+    if (this._config.searchNormalize) {
+      return text.normalize('NFD').replace(/[\u0300-\u036F]/g, '');
+    }
+    return text;
+  }
+  _handleToggleKeydown(event) {
+    const {
+      key
+    } = event;
+    if (key === ARROW_DOWN_KEY$1 || key === ARROW_UP_KEY$1) {
+      event.preventDefault();
+      if (!this._isShown()) {
+        this.show();
+      }
+      const items = this._getVisibleItems();
+      if (items.length > 0) {
+        const target = key === ARROW_DOWN_KEY$1 ? items[0] : items[items.length - 1];
+        target.focus();
+      }
+      return;
+    }
+    if ((key === ENTER_KEY || key === SPACE_KEY) && !this._isShown()) {
+      event.preventDefault();
+      this.show();
+    }
+  }
+  _handleMenuKeydown(event) {
+    const {
+      key,
+      target
+    } = event;
+    if (key === ESCAPE_KEY$1) {
+      event.preventDefault();
+      event.stopPropagation();
+      this.hide();
+      this._toggle.focus();
+      return;
     }
-    return config;
-  }
-  _createFloating() {
-    if (this._config.display === 'static') {
-      Manipulator.setDataAttribute(this._menu, 'display', 'static');
+    if (key === TAB_KEY$1) {
+      this.hide();
       return;
     }
-    let referenceElement = this._element;
-    if (this._config.reference === 'parent') {
-      referenceElement = this._parent;
-    } else if (isElement$1(this._config.reference)) {
-      referenceElement = getElement(this._config.reference);
-    } else if (typeof this._config.reference === 'object') {
-      referenceElement = this._config.reference;
+    const isInput = target.matches('input');
+    if (key === ARROW_DOWN_KEY$1 || key === ARROW_UP_KEY$1) {
+      event.preventDefault();
+      const items = this._getVisibleItems();
+      if (items.length > 0) {
+        getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();
+      }
+      return;
     }
-
-    // Initial position update
-    this._updateFloatingPosition(referenceElement);
-
-    // Set up auto-update for scroll/resize
-    this._floatingCleanup = autoUpdate(referenceElement, this._menu, () => this._updateFloatingPosition(referenceElement));
-  }
-  async _updateFloatingPosition(referenceElement = null) {
-    if (!this._menu) {
+    if (key === HOME_KEY$1 || key === END_KEY$1) {
+      event.preventDefault();
+      const items = this._getVisibleItems();
+      if (items.length > 0) {
+        const targetItem = key === HOME_KEY$1 ? items[0] : items[items.length - 1];
+        targetItem.focus();
+      }
       return;
     }
-    if (!referenceElement) {
-      if (this._config.reference === 'parent') {
-        referenceElement = this._parent;
-      } else if (isElement$1(this._config.reference)) {
-        referenceElement = getElement(this._config.reference);
-      } else if (typeof this._config.reference === 'object') {
-        referenceElement = this._config.reference;
-      } else {
-        referenceElement = this._element;
+    if ((key === ENTER_KEY || key === SPACE_KEY) && !isInput) {
+      event.preventDefault();
+      const item = target.closest(SELECTOR_MENU_ITEM);
+      if (item && !isDisabled(item)) {
+        this._selectItem(item);
       }
     }
-    const placement = this._getPlacement();
-    const middleware = this._getFloatingMiddleware();
-    const floatingConfig = this._getFloatingConfig(placement, middleware);
-    await this._applyFloatingPosition(referenceElement, this._menu, floatingConfig.placement, floatingConfig.middleware, floatingConfig.strategy);
-  }
-  _isShown() {
-    return this._menu.classList.contains(CLASS_NAME_SHOW$5);
   }
-  _getPlacement() {
-    // If we have responsive placements, find the appropriate one for current viewport
-    const placement = this._responsivePlacements ? getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) : this._config.placement;
 
-    // Resolve logical placements (start/end) to physical (left/right) based on RTL
-    return resolveLogicalPlacement(placement);
-  }
-  _parseResponsivePlacements() {
-    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT);
-    if (this._responsivePlacements) {
-      this._setupMediaQueryListeners();
-    }
-  }
-  _setupMediaQueryListeners() {
-    this._disposeMediaQueryListeners();
-    this._mediaQueryListeners = createBreakpointListeners(() => {
-      if (this._isShown()) {
-        this._updateFloatingPosition();
+  // Static
+  static jQueryInterface(config) {
+    return this.each(function () {
+      const data = Combobox.getOrCreateInstance(this, config);
+      if (typeof config !== 'string') {
+        return;
+      }
+      if (typeof data[config] === 'undefined') {
+        throw new TypeError(`No method named "${config}"`);
       }
+      data[config]();
     });
   }
-  _disposeMediaQueryListeners() {
-    disposeBreakpointListeners(this._mediaQueryListeners);
-    this._mediaQueryListeners = [];
-  }
-  _getOffset() {
-    const {
-      offset: offsetConfig
-    } = this._config;
-    if (typeof offsetConfig === 'string') {
-      return offsetConfig.split(',').map(value => Number.parseInt(value, 10));
-    }
-    if (typeof offsetConfig === 'function') {
-      // Floating UI passes different args, adapt the interface for offset function callbacks
-      return ({
-        placement,
-        rects
-      }) => {
-        const result = offsetConfig({
-          placement,
-          reference: rects.reference,
-          floating: rects.floating
-        }, this._element);
-        return result;
-      };
-    }
-    return offsetConfig;
+}
+
+/**
+ * Data API implementation
+ */
+
+EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$7, function (event) {
+  event.preventDefault();
+  Combobox.getOrCreateInstance(this).toggle();
+});
+EventHandler.on(document, 'DOMContentLoaded', () => {
+  for (const toggle of SelectorEngine.find(SELECTOR_DATA_TOGGLE$7)) {
+    Combobox.getOrCreateInstance(toggle);
   }
-  _getFloatingMiddleware() {
-    const offsetValue = this._getOffset();
-    const middleware = [
-    // Offset middleware - handles distance from reference
-    offset(typeof offsetValue === 'function' ? offsetValue : {
-      mainAxis: offsetValue[1] || 0,
-      crossAxis: offsetValue[0] || 0
-    }),
-    // Flip middleware - handles fallback placements
-    flip({
-      fallbackPlacements: this._getFallbackPlacements()
-    }),
-    // Shift middleware - prevents overflow
-    shift({
-      boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary
-    })];
-    return middleware;
+});
+
+/*! name: vanilla-calendar-pro v3.1.0 | url: https://github.com/uvarov-frontend/vanilla-calendar-pro */
+var __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:true,configurable:true,writable:true,value:n}):e[t]=n,__spreadValues=(e,t)=>{for(var n in t||(t={}))__hasOwnProp.call(t,n)&&__defNormalProp(e,n,t[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(t))__propIsEnum.call(t,n)&&__defNormalProp(e,n,t[n]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__publicField=(e,t,n)=>(__defNormalProp(e,"symbol"!=typeof t?t+"":t,n),n);const errorMessages={notFoundSelector:e=>`${e} is not found, check the first argument passed to new Calendar.`,notInit:'The calendar has not been initialized, please initialize it using the "init()" method first.',notLocale:"You specified an incorrect language label or did not specify the required number of values ​​for «locale.weekdays» or «locale.months».",incorrectTime:"The value of the time property can be: false, 12 or 24.",incorrectMonthsCount:"For the «multiple» calendar type, the «displayMonthsCount» parameter can have a value from 2 to 12, and for all others it cannot be greater than 1."},setContext=(e,t,n)=>{e.context[t]=n;},destroy=e=>{var t,n,a,o,l;if(!e.context.isInit)throw new Error(errorMessages.notInit);e.inputMode?(null==(t=e.context.mainElement.parentElement)||t.removeChild(e.context.mainElement),null==(a=null==(n=e.context.inputElement)?void 0:n.replaceWith)||a.call(n,e.context.originalElement),setContext(e,"inputElement",void 0)):null==(l=(o=e.context.mainElement).replaceWith)||l.call(o,e.context.originalElement),setContext(e,"mainElement",e.context.originalElement),e.onDestroy&&e.onDestroy(e);},skipOpenOnFocus=new WeakSet,shouldSkipOpenOnFocus=e=>skipOpenOnFocus.has(e),setSkipOpenOnFocus=e=>{skipOpenOnFocus.add(e);},clearSkipOpenOnFocus=e=>{skipOpenOnFocus.delete(e);},PREV_TABINDEX_ATTR="data-vc-prev-tabindex",isFocusable=e=>e.tabIndex>=0&&!e.hasAttribute("disabled")&&"true"!==e.getAttribute("aria-disabled"),storePrevTabIndex=e=>{if(e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute("tabindex");e.setAttribute(PREV_TABINDEX_ATTR,null!=t?t:"");},restorePrevTabIndex=e=>{if(!e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(PREV_TABINDEX_ATTR);""===t||null===t?e.removeAttribute("tabindex"):e.setAttribute("tabindex",t),e.removeAttribute(PREV_TABINDEX_ATTR);},disableTabbing=e=>{isFocusable(e)&&(storePrevTabIndex(e),e.tabIndex=-1);const t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>isFocusable(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;t.nextNode();){const e=t.currentNode;storePrevTabIndex(e),e.tabIndex=-1;}},restoreTabbing=e=>{restorePrevTabIndex(e),e.querySelectorAll(`[${PREV_TABINDEX_ATTR}]`).forEach(restorePrevTabIndex);},hide=e=>{if(e.context.isShowInInputMode&&e.context.currentType){if(e.context.mainElement.dataset.vcCalendarHidden="",setContext(e,"isShowInInputMode",false),e.inputMode&&disableTabbing(e.context.mainElement),e.context.cleanupHandlers[0]&&(e.context.cleanupHandlers.forEach((e=>e())),setContext(e,"cleanupHandlers",[])),e.inputMode&&e.context.inputElement&&e.context.mainElement.contains(document.activeElement)){("function"==typeof e.openOnFocus||true===e.openOnFocus)&&setSkipOpenOnFocus(e),e.context.inputElement.focus();}e.onHide&&e.onHide(e);}};function getOffset(e){if(!e||!e.getBoundingClientRect)return {top:0,bottom:0,left:0,right:0};const t=e.getBoundingClientRect(),n=document.documentElement;return {bottom:t.bottom,right:t.right,top:t.top+window.scrollY-n.clientTop,left:t.left+window.scrollX-n.clientLeft}}function getViewportDimensions(){return {vw:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),vh:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}}function getWindowScrollPosition(){return {left:window.scrollX||document.documentElement.scrollLeft||0,top:window.scrollY||document.documentElement.scrollTop||0}}function calculateAvailableSpace(e){const{top:t,left:n}=getWindowScrollPosition(),{top:a,left:o}=getOffset(e),{vh:l,vw:s}=getViewportDimensions(),i=a-t,r=o-n;return {top:i,bottom:l-(i+e.clientHeight),left:r,right:s-(r+e.clientWidth)}}function getAvailablePosition(e,t,n=5){const a={top:true,bottom:true,left:true,right:true},o=[];if(!t||!e)return {canShow:a,parentPositions:o};const{bottom:l,top:s}=calculateAvailableSpace(e),{top:i,left:r}=getOffset(e),{height:c,width:d}=t.getBoundingClientRect(),{vh:u,vw:m}=getViewportDimensions(),p=m/2,h=u/2;return [{condition:i<h,position:"top"},{condition:i>h,position:"bottom"},{condition:r<p,position:"left"},{condition:r>p,position:"right"}].forEach((({condition:e,position:t})=>{e&&o.push(t);})),Object.assign(a,{top:c<=s-n,bottom:c<=l-n,left:d<=r,right:d<=m-r}),{canShow:a,parentPositions:o}}const handleDay=(e,t,n,a)=>{var o;const l=a.querySelector(`[data-vc-date="${t}"]`),s=null==l?void 0:l.querySelector("[data-vc-date-btn]");if(!l||!s)return;if((null==n?void 0:n.modifier)&&s.classList.add(...n.modifier.trim().split(" ")),!(null==n?void 0:n.html))return;const i=document.createElement("div");i.className=e.styles.datePopup,i.dataset.vcDatePopup="",i.innerHTML=e.sanitizerHTML(n.html),s.ariaExpanded="true",s.ariaLabel=`${s.ariaLabel}, ${null==(o=null==i?void 0:i.textContent)?void 0:o.replace(/^\s+|\s+(?=\s)|\s+$/g,"").replace(/&nbsp;/g," ")}`,l.appendChild(i),requestAnimationFrame((()=>{if(!i)return;const{canShow:e}=getAvailablePosition(l,i),t=e.bottom?l.offsetHeight:-i.offsetHeight,n=e.left&&!e.right?l.offsetWidth-i.offsetWidth/2:!e.left&&e.right?i.offsetWidth/2:0;Object.assign(i.style,{left:`${n}px`,top:`${t}px`});}));},createDatePopup=(e,t)=>{var n;e.popups&&(null==(n=Object.entries(e.popups))||n.forEach((([n,a])=>handleDay(e,n,a,t))));},getDate=e=>new Date(`${e}T00:00:00`),getDateString=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`,parseDates=e=>e.reduce(((e,t)=>{if(t instanceof Date||"number"==typeof t){const n=t instanceof Date?t:new Date(t);e.push(n.toISOString().substring(0,10));}else t.match(/^(\d{4}-\d{2}-\d{2})$/g)?e.push(t):t.replace(/(\d{4}-\d{2}-\d{2}).*?(\d{4}-\d{2}-\d{2})/g,((t,n,a)=>{const o=getDate(n),l=getDate(a),s=new Date(o.getTime());for(;s<=l;s.setDate(s.getDate()+1))e.push(getDateString(s));return t}));return e}),[]),updateAttribute=(e,t,n,a="")=>{t?e.setAttribute(n,a):e.getAttribute(n)===a&&e.removeAttribute(n);},setDateModifier=(e,t,n,a,o,l,s)=>{var i,r,c,d;const u=getDate(e.context.displayDateMin)>getDate(l)||getDate(e.context.displayDateMax)<getDate(l)||(null==(i=e.context.disableDates)?void 0:i.includes(l))||!e.selectionMonthsMode&&"current"!==s||!e.selectionYearsMode&&getDate(l).getFullYear()!==t;updateAttribute(n,u,"data-vc-date-disabled"),a&&updateAttribute(a,u,"aria-disabled","true"),a&&updateAttribute(a,u,"tabindex","-1"),updateAttribute(n,!e.disableToday&&e.context.dateToday===l,"data-vc-date-today"),updateAttribute(n,!e.disableToday&&e.context.dateToday===l,"aria-current","date"),updateAttribute(n,null==(r=e.selectedWeekends)?void 0:r.includes(o),"data-vc-date-weekend");const m=(null==(c=e.selectedHolidays)?void 0:c[0])?parseDates(e.selectedHolidays):[];if(updateAttribute(n,m.includes(l),"data-vc-date-holiday"),(null==(d=e.context.selectedDates)?void 0:d.includes(l))?(n.setAttribute("data-vc-date-selected",""),a&&a.setAttribute("aria-selected","true"),e.context.selectedDates.length>1&&"multiple-ranged"===e.selectionDatesMode&&(e.context.selectedDates[0]===l&&e.context.selectedDates[e.context.selectedDates.length-1]===l?n.setAttribute("data-vc-date-selected","first-and-last"):e.context.selectedDates[0]===l?n.setAttribute("data-vc-date-selected","first"):e.context.selectedDates[e.context.selectedDates.length-1]===l&&n.setAttribute("data-vc-date-selected","last"),e.context.selectedDates[0]!==l&&e.context.selectedDates[e.context.selectedDates.length-1]!==l&&n.setAttribute("data-vc-date-selected","middle"))):n.hasAttribute("data-vc-date-selected")&&(n.removeAttribute("data-vc-date-selected"),a&&a.removeAttribute("aria-selected")),!e.context.disableDates.includes(l)&&e.enableEdgeDatesOnly&&e.context.selectedDates.length>1&&"multiple-ranged"===e.selectionDatesMode){const t=getDate(e.context.selectedDates[0]),a=getDate(e.context.selectedDates[e.context.selectedDates.length-1]),o=getDate(l);updateAttribute(n,o>t&&o<a,"data-vc-date-selected","middle");}},getLocaleString=(e,t,n)=>new Date(`${e}T00:00:00.000Z`).toLocaleString(t,n),getWeekNumber=(e,t)=>{const n=getDate(e),a=(n.getDay()-t+7)%7;n.setDate(n.getDate()+4-a);const o=new Date(n.getFullYear(),0,1),l=Math.ceil(((+n-+o)/864e5+1)/7);return {year:n.getFullYear(),week:l}},addWeekNumberForDate=(e,t,n)=>{const a=getWeekNumber(n,e.firstWeekday);a&&(t.dataset.vcDateWeekNumber=String(a.week));},setDaysAsDisabled=(e,t,n)=>{var a,o,l,s,i;const r=null==(a=e.disableWeekdays)?void 0:a.includes(n),c=e.disableAllDates&&!!(null==(o=e.context.enableDates)?void 0:o[0]);!r&&!c||(null==(l=e.context.enableDates)?void 0:l.includes(t))||(null==(s=e.context.disableDates)?void 0:s.includes(t))||(e.context.disableDates.push(t),null==(i=e.context.disableDates)||i.sort(((e,t)=>+new Date(e)-+new Date(t))));},createDate=(e,t,n,a,o,l)=>{const s=getDate(o).getDay(),i="string"==typeof e.locale&&e.locale.length?e.locale:"en",r=document.createElement("div");let c;r.className=e.styles.date,r.dataset.vcDate=o,r.dataset.vcDateMonth=l,r.dataset.vcDateWeekDay=String(s),r.role="gridcell",("current"===l||e.displayDatesOutside)&&(c=document.createElement("button"),c.className=e.styles.dateBtn,c.type="button",c.ariaLabel=getLocaleString(o,i,{dateStyle:"long",timeZone:"UTC"}),c.dataset.vcDateBtn="",c.innerText=String(a),r.appendChild(c)),e.enableWeekNumbers&&addWeekNumberForDate(e,r,o),setDaysAsDisabled(e,o,s),setDateModifier(e,t,r,c,s,o,l),n.addDate(r),e.onCreateDateEls&&e.onCreateDateEls(e,r);},createDatesFromCurrentMonth=(e,t,n,a,o)=>{for(let l=1;l<=n;l++){const n=new Date(a,o,l);createDate(e,a,t,l,getDateString(n),"current");}},createDatesFromNextMonth=(e,t,n,a,o)=>{const l=o+1===12?a+1:a,s=o+1===12?"01":o+2<10?`0${o+2}`:o+2;for(let o=1;o<=n;o++){const n=o<10?`0${o}`:String(o);createDate(e,a,t,o,`${l}-${s}-${n}`,"next");}},createDatesFromPrevMonth=(e,t,n,a,o)=>{let l=new Date(n,a,0).getDate()-(o-1);const s=0===a?n-1:n,i=0===a?12:a<10?`0${a}`:a;for(let a=o;a>0;a--,l++){createDate(e,n,t,l,`${s}-${i}-${l}`,"prev");}},createWeekNumbers=(e,t,n,a,o)=>{if(!e.enableWeekNumbers)return;a.textContent="";const l=document.createElement("b");l.className=e.styles.weekNumbersTitle,l.innerText="#",l.dataset.vcWeekNumbers="title",a.appendChild(l);const s=document.createElement("div");s.className=e.styles.weekNumbersContent,s.dataset.vcWeekNumbers="content",a.appendChild(s);const i=document.createElement("button");i.type="button",i.className=e.styles.weekNumber;const r=o.querySelectorAll("[data-vc-date]"),c=Math.ceil((t+n)/7);for(let t=0;t<c;t++){const n=r[0===t?6:7*t].dataset.vcDate,a=getWeekNumber(n,e.firstWeekday);if(!a)return;const o=i.cloneNode(true);o.innerText=String(a.week),o.dataset.vcWeekNumber=String(a.week),o.dataset.vcWeekYear=String(a.year),o.role="rowheader",o.ariaLabel=`${a.week}`,s.appendChild(o);}},createDates=e=>{const t=new Date(e.context.selectedYear,e.context.selectedMonth,1),n=e.context.mainElement.querySelectorAll('[data-vc="dates"]'),a=e.context.mainElement.querySelectorAll('[data-vc-week="numbers"]');n.forEach(((n,o)=>{e.selectionDatesMode||(n.dataset.vcDatesDisabled=""),n.textContent="";const l=new Date(t);l.setMonth(l.getMonth()+o);const s=l.getMonth(),i=l.getFullYear(),r=(new Date(i,s,1).getDay()-e.firstWeekday+7)%7,c=new Date(i,s+1,0).getDate(),d=r+c,u=Math.ceil(d/7),m=7*u-d,p=[];for(let t=0;t<u;t++){const t=document.createElement("div");t.className=e.styles.datesRow,t.setAttribute("data-vc-dates","row"),t.setAttribute("role","row"),p.push(t);}let h=0,v=0;const g={addDate:e=>{p[h].appendChild(e),v++,v>=7&&(h++,v=0);}};createDatesFromPrevMonth(e,g,i,s,r),createDatesFromCurrentMonth(e,g,c,i,s),createDatesFromNextMonth(e,g,m,i,s);for(const e of p)n.appendChild(e);createDatePopup(e,n),createWeekNumbers(e,r,c,a[o],n);}));},layoutDefault=e=>`\n  <div class="${e.styles.header}" data-vc="header" role="toolbar" aria-label="${e.labels.navigation}">\n    <#ArrowPrev [month] />\n    <div class="${e.styles.headerContent}" data-vc-header="content">\n      <#Month />\n      <#Year />\n    </div>\n    <#ArrowNext [month] />\n  </div>\n  <div class="${e.styles.wrapper}" data-vc="wrapper">\n    <#WeekNumbers />\n    <div class="${e.styles.content}" data-vc="content" role="grid">\n      <#Week />\n      <#Dates />\n      <#DateRangeTooltip />\n    </div>\n  </div>\n  <#ControlTime />\n`,layoutMonths=e=>`\n  <div class="${e.styles.header}" data-vc="header" role="toolbar" aria-label="${e.labels.navigation}">\n    <div class="${e.styles.headerContent}" data-vc-header="content">\n      <#Month />\n      <#Year />\n    </div>\n  </div>\n  <div class="${e.styles.wrapper}" data-vc="wrapper">\n    <div class="${e.styles.content}" data-vc="content">\n      <#Months />\n    </div>\n  </div>\n`,layoutMultiple=e=>`\n  <div class="${e.styles.controls}" data-vc="controls" role="toolbar" aria-label="${e.labels.navigation}">\n    <#ArrowPrev [month] />\n    <#ArrowNext [month] />\n  </div>\n  <div class="${e.styles.grid}" data-vc="grid">\n    <#Multiple>\n      <div class="${e.styles.column}" data-vc="column" role="region">\n        <div class="${e.styles.header}" data-vc="header">\n          <div class="${e.styles.headerContent}" data-vc-header="content">\n            <#Month />\n            <#Year />\n          </div>\n        </div>\n        <div class="${e.styles.wrapper}" data-vc="wrapper">\n          <#WeekNumbers />\n          <div class="${e.styles.content}" data-vc="content" role="grid">\n            <#Week />\n            <#Dates />\n          </div>\n        </div>\n      </div>\n    <#/Multiple>\n    <#DateRangeTooltip />\n  </div>\n  <#ControlTime />\n`,layoutYears=e=>`\n  <div class="${e.styles.header}" data-vc="header" role="toolbar" aria-label="${e.labels.navigation}">\n    <#ArrowPrev [year] />\n    <div class="${e.styles.headerContent}" data-vc-header="content">\n      <#Month />\n      <#Year />\n    </div>\n    <#ArrowNext [year] />\n  </div>\n  <div class="${e.styles.wrapper}" data-vc="wrapper">\n    <div class="${e.styles.content}" data-vc="content">\n      <#Years />\n    </div>\n  </div>\n`,ArrowNext=(e,t)=>`<button type="button" class="${e.styles.arrowNext}" data-vc-arrow="next" aria-label="${e.labels.arrowNext[t]}"></button>`,ArrowPrev=(e,t)=>`<button type="button" class="${e.styles.arrowPrev}" data-vc-arrow="prev" aria-label="${e.labels.arrowPrev[t]}"></button>`,ControlTime=e=>e.selectionTimeMode?`<div class="${e.styles.time}" data-vc="time" role="group" aria-label="${e.labels.selectingTime}"></div>`:"",DateRangeTooltip=e=>e.onCreateDateRangeTooltip?`<div class="${e.styles.dateRangeTooltip}" data-vc-date-range-tooltip="hidden"></div>`:"",Dates=e=>`<div class="${e.styles.dates}" data-vc="dates" aria-live="assertive" aria-label="${e.labels.dates}" ${"multiple"===e.type?"aria-multiselectable":""}></div>`,Month=e=>`<button type="button" class="${e.styles.month}" data-vc="month"></button>`,Months=e=>`<div class="${e.styles.months}" data-vc="months" role="grid" aria-live="assertive" aria-label="${e.labels.months}"></div>`,Week=e=>`<div class="${e.styles.week}" data-vc="week" role="row" aria-label="${e.labels.week}"></div>`,WeekNumbers=e=>e.enableWeekNumbers?`<div class="${e.styles.weekNumbers}" data-vc-week="numbers" role="row" aria-label="${e.labels.weekNumber}"></div>`:"",Year=e=>`<button type="button" class="${e.styles.year}" data-vc="year"></button>`,Years=e=>`<div class="${e.styles.years}" data-vc="years" role="grid" aria-live="assertive" aria-label="${e.labels.years}"></div>`,components={ArrowNext:ArrowNext,ArrowPrev:ArrowPrev,ControlTime:ControlTime,Dates:Dates,DateRangeTooltip:DateRangeTooltip,Month:Month,Months:Months,Week:Week,WeekNumbers:WeekNumbers,Year:Year,Years:Years},getComponent=e=>components[e],parseLayout=(e,t)=>t.replace(/[\n\t]/g,"").replace(/<#(?!\/?Multiple)(.*?)>/g,((t,n)=>{const a=(n.match(/\[(.*?)\]/)||[])[1],o=n.replace(/[/\s\n\t]|\[(.*?)\]/g,""),l=getComponent(o),s=l?l(e,null!=a?a:null):"";return e.sanitizerHTML(s)})).replace(/[\n\t]/g,""),parseMultipleLayout=(e,t)=>t.replace(new RegExp("<#Multiple>(.*?)<#\\/Multiple>","gs"),((t,n)=>{const a=Array(e.context.displayMonthsCount).fill(n).join("");return e.sanitizerHTML(a)})).replace(/[\n\t]/g,""),createLayouts=(e,t)=>{const n={default:layoutDefault,month:layoutMonths,year:layoutYears,multiple:layoutMultiple};if(Object.keys(n).forEach((t=>{const a=t;e.layouts[a].length||(e.layouts[a]=n[a](e));})),e.context.mainElement.className=e.styles.calendar,e.context.mainElement.dataset.vc="calendar",e.context.mainElement.dataset.vcType=e.context.currentType,e.context.mainElement.role="application",e.context.mainElement.tabIndex=0,e.context.mainElement.ariaLabel=e.labels.application,"multiple"!==e.context.currentType){if("multiple"===e.type&&t){const n=e.context.mainElement.querySelector('[data-vc="controls"]'),a=e.context.mainElement.querySelector('[data-vc="grid"]'),o=t.closest('[data-vc="column"]');return n&&n.remove(),a&&(a.dataset.vcGrid="hidden"),o&&(o.dataset.vcColumn=e.context.currentType),void(o&&(o.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))))}e.context.mainElement.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]));}else e.context.mainElement.innerHTML=e.sanitizerHTML(parseMultipleLayout(e,parseLayout(e,e.layouts[e.context.currentType])));},setVisibilityArrows=(e,t,n,a)=>{e.style.visibility=n?"hidden":"",t.style.visibility=a?"hidden":"";},handleDefaultType=(e,t,n)=>{const a=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1))),o=new Date(a.getTime()),l=new Date(a.getTime());o.setMonth(o.getMonth()-e.monthsToSwitch),l.setMonth(l.getMonth()+e.monthsToSwitch);const s=getDate(e.context.dateMin),i=getDate(e.context.dateMax);e.selectionYearsMode||(s.setFullYear(a.getFullYear()),i.setFullYear(a.getFullYear()));const r=!e.selectionMonthsMode||o.getFullYear()<s.getFullYear()||o.getFullYear()===s.getFullYear()&&o.getMonth()<s.getMonth(),c=!e.selectionMonthsMode||l.getFullYear()>i.getFullYear()||l.getFullYear()===i.getFullYear()&&l.getMonth()>i.getMonth()-(e.context.displayMonthsCount-1);setVisibilityArrows(t,n,r,c);},handleYearType=(e,t,n)=>{const a=getDate(e.context.dateMin),o=getDate(e.context.dateMax),l=!!(a.getFullYear()&&e.context.displayYear-7<=a.getFullYear()),s=!!(o.getFullYear()&&e.context.displayYear+7>=o.getFullYear());setVisibilityArrows(t,n,l,s);},visibilityArrows=e=>{if("month"===e.context.currentType)return;const t=e.context.mainElement.querySelector('[data-vc-arrow="prev"]'),n=e.context.mainElement.querySelector('[data-vc-arrow="next"]');if(!t||!n)return;({default:()=>handleDefaultType(e,t,n),year:()=>handleYearType(e,t,n)})["multiple"===e.context.currentType?"default":e.context.currentType]();},visibilityHandler=(e,t,n,a,o)=>{const l=new Date(a.setFullYear(e.context.selectedYear,e.context.selectedMonth+n)).getFullYear(),s=new Date(a.setMonth(e.context.selectedMonth+n)).getMonth(),i=e.context.locale.months.long[s],r=t.closest('[data-vc="column"]');r&&(r.ariaLabel=`${i} ${l}`);const c={month:{id:s,label:i},year:{id:l,label:l}};t.innerText=String(c[o].label),t.dataset[`vc${o.charAt(0).toUpperCase()+o.slice(1)}`]=String(c[o].id),t.ariaLabel=`${e.labels[o]} ${c[o].label}`;const d={month:e.selectionMonthsMode,year:e.selectionYearsMode},u=false===d[o]||"only-arrows"===d[o];u&&(t.tabIndex=-1),t.disabled=u;},visibilityTitle=e=>{const t=e.context.mainElement.querySelectorAll('[data-vc="month"]'),n=e.context.mainElement.querySelectorAll('[data-vc="year"]'),a=new Date(e.context.selectedYear,e.context.selectedMonth,1);[t,n].forEach((t=>null==t?void 0:t.forEach(((t,n)=>visibilityHandler(e,t,n,a,t.dataset.vc)))));},setYearModifier=(e,t,n,a,o)=>{var l;const s={month:"[data-vc-months-month]",year:"[data-vc-years-year]"},i={month:{selected:"data-vc-months-month-selected",aria:"aria-selected",value:"vcMonthsMonth",selectedProperty:"selectedMonth"},year:{selected:"data-vc-years-year-selected",aria:"aria-selected",value:"vcYearsYear",selectedProperty:"selectedYear"}};o&&(null==(l=e.context.mainElement.querySelectorAll(s[n]))||l.forEach((e=>{e.removeAttribute(i[n].selected),e.removeAttribute(i[n].aria);})),setContext(e,i[n].selectedProperty,Number(t.dataset[i[n].value])),visibilityTitle(e),"year"===n&&visibilityArrows(e)),a&&(t.setAttribute(i[n].selected,""),t.setAttribute(i[n].aria,"true"));},getColumnID=(e,t)=>{var n;if("multiple"!==e.type)return {currentValue:null,columnID:0};const a=e.context.mainElement.querySelectorAll('[data-vc="column"]'),o=Array.from(a).findIndex((e=>e.closest(`[data-vc-column="${t}"]`)));return {currentValue:o>=0?Number(null==(n=a[o].querySelector(`[data-vc="${t}"]`))?void 0:n.getAttribute(`data-vc-${t}`)):null,columnID:Math.max(o,0)}},createMonthEl=(e,t,n,a,o,l,s)=>{const i=t.cloneNode(false);return i.className=e.styles.monthsMonth,i.innerText=a,i.ariaLabel=o,i.role="gridcell",i.dataset.vcMonthsMonth=`${s}`,l&&(i.ariaDisabled="true"),l&&(i.tabIndex=-1),i.disabled=l,setYearModifier(e,i,"month",n===s,false),i},createMonths=(e,t)=>{var n,a;const o=null==(n=null==t?void 0:t.closest('[data-vc="header"]'))?void 0:n.querySelector('[data-vc="year"]'),l=o?Number(o.dataset.vcYear):e.context.selectedYear,s=(null==t?void 0:t.dataset.vcMonth)?Number(t.dataset.vcMonth):e.context.selectedMonth;setContext(e,"currentType","month"),createLayouts(e,t),visibilityTitle(e);const i=e.context.mainElement.querySelector('[data-vc="months"]');if(!e.selectionMonthsMode||!i)return;const r=e.monthsToSwitch>1?e.context.locale.months.long.map(((t,n)=>s-e.monthsToSwitch*n)).concat(e.context.locale.months.long.map(((t,n)=>s+e.monthsToSwitch*n))).filter((e=>e>=0&&e<=12)):Array.from(Array(12).keys()),c=document.createElement("button");c.type="button";for(let t=0;t<12;t++){const n=getDate(e.context.dateMin),a=getDate(e.context.dateMax),o=e.context.displayMonthsCount-1,{columnID:d}=getColumnID(e,"month"),u=l<=n.getFullYear()&&t<n.getMonth()+d||l>=a.getFullYear()&&t>a.getMonth()-o+d||l>a.getFullYear()||t!==s&&!r.includes(t),m=createMonthEl(e,c,s,e.context.locale.months.short[t],e.context.locale.months.long[t],u,t);i.appendChild(m),e.onCreateMonthEls&&e.onCreateMonthEls(e,m);}null==(a=e.context.mainElement.querySelector("[data-vc-months-month]:not([disabled])"))||a.focus();},TimeInput=(e,t,n,a,o)=>`\n  <label class="${t}" data-vc-time-input="${e}">\n    <input type="text" name="${e}" maxlength="2" aria-label="${n[`input${e.charAt(0).toUpperCase()+e.slice(1)}`]}" value="${a}" ${o?"disabled":""}>\n  </label>\n`,TimeRange=(e,t,n,a,o,l,s)=>`\n  <label class="${t}" data-vc-time-range="${e}">\n    <input type="range" name="${e}" min="${a}" max="${o}" step="${l}" aria-label="${n[`range${e.charAt(0).toUpperCase()+e.slice(1)}`]}" value="${s}">\n  </label>\n`,handleActions=(e,t,n,a)=>{(({hour:()=>setContext(e,"selectedHours",n),minute:()=>setContext(e,"selectedMinutes",n)}))[a](),setContext(e,"selectedTime",`${e.context.selectedHours}:${e.context.selectedMinutes}${e.context.selectedKeeping?` ${e.context.selectedKeeping}`:""}`),e.onChangeTime&&e.onChangeTime(e,t,false),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t);},transformTime24=(e,t)=>{var n;return (null==(n={0:{AM:"00",PM:"12"},1:{AM:"01",PM:"13"},2:{AM:"02",PM:"14"},3:{AM:"03",PM:"15"},4:{AM:"04",PM:"16"},5:{AM:"05",PM:"17"},6:{AM:"06",PM:"18"},7:{AM:"07",PM:"19"},8:{AM:"08",PM:"20"},9:{AM:"09",PM:"21"},10:{AM:"10",PM:"22"},11:{AM:"11",PM:"23"},12:{AM:"00",PM:"12"}}[Number(e)])?void 0:n[t])||String(e)},handleClickKeepingTime=(e,t,n,a,o)=>{const l=l=>{const s="AM"===e.context.selectedKeeping?"PM":"AM",i=transformTime24(e.context.selectedHours,s);Number(i)<=a&&Number(i)>=o?(setContext(e,"selectedKeeping",s),n.value=i,handleActions(e,l,e.context.selectedHours,"hour"),t.ariaLabel=`${e.labels.btnKeeping} ${e.context.selectedKeeping}`,t.innerText=e.context.selectedKeeping):e.onChangeTime&&e.onChangeTime(e,l,true);};return t.addEventListener("click",l),()=>{t.removeEventListener("click",l);}},transformTime12=e=>({0:"12",13:"01",14:"02",15:"03",16:"04",17:"05",18:"06",19:"07",20:"08",21:"09",22:"10",23:"11"}[Number(e)]||String(e)),updateInputAndRange=(e,t,n,a)=>{e.value=n,t.value=a;},updateKeepingTime$1=(e,t,n)=>{t&&n&&(setContext(e,"selectedKeeping",n),t.innerText=n);},handleInput$1=(e,t,n,a,o,l,s)=>{const i={hour:(i,r,c)=>{if(!e.selectionTimeMode)return;({12:()=>{if(!e.context.selectedKeeping)return;const d=Number(transformTime24(r,e.context.selectedKeeping));if(!(d<=l&&d>=s))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,true));updateInputAndRange(n,t,transformTime12(r),transformTime24(r,e.context.selectedKeeping)),i>12&&updateKeepingTime$1(e,a,"PM"),handleActions(e,c,transformTime12(r),o);},24:()=>{if(!(i<=l&&i>=s))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,true));updateInputAndRange(n,t,r,r),handleActions(e,c,r,o);}})[e.selectionTimeMode]();},minute:(a,i,r)=>{if(!(a<=l&&a>=s))return n.value=e.context.selectedMinutes,void(e.onChangeTime&&e.onChangeTime(e,r,true));n.value=i,t.value=i,handleActions(e,r,i,o);}},r=e=>{const t=Number(n.value),a=n.value.padStart(2,"0");i[o]&&i[o](t,a,e);};return n.addEventListener("change",r),()=>{n.removeEventListener("change",r);}},updateInputAndTime=(e,t,n,a,o)=>{t.value=o,handleActions(e,n,o,a);},updateKeepingTime=(e,t,n)=>{t&&(setContext(e,"selectedKeeping",n),t.innerText=n);},handleRange=(e,t,n,a,o)=>{const l=l=>{const s=Number(t.value),i=t.value.padStart(2,"0"),r="hour"===o,c=24===e.selectionTimeMode,d=s>0&&s<12;r&&!c&&updateKeepingTime(e,a,0===s||d?"AM":"PM"),updateInputAndTime(e,n,l,o,!r||c||d?i:transformTime12(t.value));};return t.addEventListener("input",l),()=>{t.removeEventListener("input",l);}},handleMouseOver=e=>e.setAttribute("data-vc-input-focus",""),handleMouseOut=e=>e.removeAttribute("data-vc-input-focus"),handleTime=(e,t)=>{const n=t.querySelector('[data-vc-time-range="hour"] input[name="hour"]'),a=t.querySelector('[data-vc-time-range="minute"] input[name="minute"]'),o=t.querySelector('[data-vc-time-input="hour"] input[name="hour"]'),l=t.querySelector('[data-vc-time-input="minute"] input[name="minute"]'),s=t.querySelector('[data-vc-time="keeping"]');if(!(n&&a&&o&&l))return;const i=e=>{e.target===n&&handleMouseOver(o),e.target===a&&handleMouseOver(l);},r=e=>{e.target===n&&handleMouseOut(o),e.target===a&&handleMouseOut(l);};return t.addEventListener("mouseover",i),t.addEventListener("mouseout",r),handleInput$1(e,n,o,s,"hour",e.timeMaxHour,e.timeMinHour),handleInput$1(e,a,l,s,"minute",e.timeMaxMinute,e.timeMinMinute),handleRange(e,n,o,s,"hour"),handleRange(e,a,l,s,"minute"),s&&handleClickKeepingTime(e,s,n,e.timeMaxHour,e.timeMinHour),()=>{t.removeEventListener("mouseover",i),t.removeEventListener("mouseout",r);}},createTime=e=>{const t=e.context.mainElement.querySelector('[data-vc="time"]');if(!e.selectionTimeMode||!t)return;const[n,a]=[e.timeMinHour,e.timeMaxHour],[o,l]=[e.timeMinMinute,e.timeMaxMinute],s=e.context.selectedKeeping?transformTime24(e.context.selectedHours,e.context.selectedKeeping):e.context.selectedHours,i="range"===e.timeControls;var r;t.innerHTML=e.sanitizerHTML(`\n    <div class="${e.styles.timeContent}" data-vc-time="content">\n      ${TimeInput("hour",e.styles.timeHour,e.labels,e.context.selectedHours,i)}\n      ${TimeInput("minute",e.styles.timeMinute,e.labels,e.context.selectedMinutes,i)}\n      ${12===e.selectionTimeMode?(r=e.context.selectedKeeping,`<button type="button" class="${e.styles.timeKeeping}" aria-label="${e.labels.btnKeeping} ${r}" data-vc-time="keeping" ${i?"disabled":""}>${r}</button>`):""}\n    </div>\n    <div class="${e.styles.timeRanges}" data-vc-time="ranges">\n      ${TimeRange("hour",e.styles.timeRange,e.labels,n,a,e.timeStepHour,s)}\n      ${TimeRange("minute",e.styles.timeRange,e.labels,o,l,e.timeStepMinute,e.context.selectedMinutes)}\n    </div>\n  `),handleTime(e,t);},createWeek=e=>{const t=e.selectedWeekends?[...e.selectedWeekends]:[],n=[...e.context.locale.weekdays.long].reduce(((n,a,o)=>[...n,{id:o,titleShort:e.context.locale.weekdays.short[o],titleLong:a,isWeekend:t.includes(o)}]),[]),a=[...n.slice(e.firstWeekday),...n.slice(0,e.firstWeekday)];e.context.mainElement.querySelectorAll('[data-vc="week"]').forEach((t=>{const n=e.onClickWeekDay?document.createElement("button"):document.createElement("b");e.onClickWeekDay&&(n.type="button"),a.forEach((a=>{const o=n.cloneNode(true);o.innerText=a.titleShort,o.className=e.styles.weekDay,o.role="columnheader",o.ariaLabel=a.titleLong,o.dataset.vcWeekDay=String(a.id),a.isWeekend&&(o.dataset.vcWeekDayOff=""),t.appendChild(o);}));}));},createYearEl=(e,t,n,a,o)=>{const l=t.cloneNode(false);return l.className=e.styles.yearsYear,l.innerText=String(o),l.ariaLabel=String(o),l.role="gridcell",l.dataset.vcYearsYear=`${o}`,a&&(l.ariaDisabled="true"),a&&(l.tabIndex=-1),l.disabled=a,setYearModifier(e,l,"year",n===o,false),l},createYears=(e,t)=>{var n;const a=(null==t?void 0:t.dataset.vcYear)?Number(t.dataset.vcYear):e.context.selectedYear;setContext(e,"currentType","year"),createLayouts(e,t),visibilityTitle(e),visibilityArrows(e);const o=e.context.mainElement.querySelector('[data-vc="years"]');if(!e.selectionYearsMode||!o)return;const l="multiple"!==e.type||e.context.selectedYear===a?0:1,s=document.createElement("button");s.type="button";for(let t=e.context.displayYear-7;t<e.context.displayYear+8;t++){const n=t<getDate(e.context.dateMin).getFullYear()+l||t>getDate(e.context.dateMax).getFullYear(),i=createYearEl(e,s,a,n,t);o.appendChild(i),e.onCreateYearEls&&e.onCreateYearEls(e,i);}null==(n=e.context.mainElement.querySelector("[data-vc-years-year]:not([disabled])"))||n.focus();},trackChangesHTMLElement=(e,t,n)=>{new MutationObserver((e=>{for(let a=0;a<e.length;a++){if(e[a].attributeName===t){n();break}}})).observe(e,{attributes:true});},haveListener={value:false,set:()=>haveListener.value=true,check:()=>haveListener.value},setTheme=(e,t)=>e.dataset.vcTheme=t,trackChangesThemeInSystemSettings=(e,t)=>{if(setTheme(e.context.mainElement,t.matches?"dark":"light"),"system"!==e.selectedTheme||haveListener.check())return;const n=e=>{const t=document.querySelectorAll('[data-vc="calendar"]');null==t||t.forEach((t=>setTheme(t,e.matches?"dark":"light")));};t.addEventListener?t.addEventListener("change",n):t.addListener(n),haveListener.set();},detectTheme=(e,t)=>{const n=e.themeAttrDetect.length?document.querySelector(e.themeAttrDetect):null,a=e.themeAttrDetect.replace(/^.*\[(.+)\]/g,((e,t)=>t));if(!n||"system"===n.getAttribute(a))return void trackChangesThemeInSystemSettings(e,t);const o=n.getAttribute(a);o?(setTheme(e.context.mainElement,o),trackChangesHTMLElement(n,a,(()=>{const t=n.getAttribute(a);t&&setTheme(e.context.mainElement,t);}))):trackChangesThemeInSystemSettings(e,t);},handleTheme=e=>{"not all"!==window.matchMedia("(prefers-color-scheme)").media?"system"===e.selectedTheme?detectTheme(e,window.matchMedia("(prefers-color-scheme: dark)")):setTheme(e.context.mainElement,e.selectedTheme):setTheme(e.context.mainElement,"light");},capitalizeFirstLetter=e=>e.charAt(0).toUpperCase()+e.slice(1).replace(/\./,""),getLocaleWeekday=(e,t,n)=>{const a=new Date(`1978-01-0${t+1}T00:00:00.000Z`),o=a.toLocaleString(n,{weekday:"short",timeZone:"UTC"}),l=a.toLocaleString(n,{weekday:"long",timeZone:"UTC"});e.context.locale.weekdays.short.push(capitalizeFirstLetter(o)),e.context.locale.weekdays.long.push(capitalizeFirstLetter(l));},getLocaleMonth=(e,t,n)=>{const a=new Date(`1978-${String(t+1).padStart(2,"0")}-01T00:00:00.000Z`),o=a.toLocaleString(n,{month:"short",timeZone:"UTC"}),l=a.toLocaleString(n,{month:"long",timeZone:"UTC"});e.context.locale.months.short.push(capitalizeFirstLetter(o)),e.context.locale.months.long.push(capitalizeFirstLetter(l));},getLocale=e=>{var t,n,a,o,l,s,i,r;if(!(e.context.locale.weekdays.short[6]&&e.context.locale.weekdays.long[6]&&e.context.locale.months.short[11]&&e.context.locale.months.long[11]))if("string"==typeof e.locale){if("string"==typeof e.locale&&!e.locale.length)throw new Error(errorMessages.notLocale);Array.from({length:7},((t,n)=>getLocaleWeekday(e,n,e.locale))),Array.from({length:12},((t,n)=>getLocaleMonth(e,n,e.locale)));}else {if(!((null==(n=null==(t=e.locale)?void 0:t.weekdays)?void 0:n.short[6])&&(null==(o=null==(a=e.locale)?void 0:a.weekdays)?void 0:o.long[6])&&(null==(s=null==(l=e.locale)?void 0:l.months)?void 0:s.short[11])&&(null==(r=null==(i=e.locale)?void 0:i.months)?void 0:r.long[11])))throw new Error(errorMessages.notLocale);setContext(e,"locale",__spreadValues({},e.locale));}},create=e=>{const t={default:()=>{createWeek(e),createDates(e);},multiple:()=>{createWeek(e),createDates(e);},month:()=>createMonths(e),year:()=>createYears(e)};handleTheme(e),getLocale(e),createLayouts(e),visibilityTitle(e),visibilityArrows(e),createTime(e),t[e.context.currentType]();},handleArrowKeys=e=>{const t=t=>{var n;const a=t.target;if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(t.key)||"button"!==a.localName)return;const o=Array.from(e.context.mainElement.querySelectorAll('[data-vc="calendar"] button')),l=o.indexOf(a);if(-1===l)return;const s=(i=o[l]).hasAttribute("data-vc-date-btn")?7:i.hasAttribute("data-vc-months-month")?4:i.hasAttribute("data-vc-years-year")?5:1;var i;const r=(0, {ArrowUp:()=>Math.max(0,l-s),ArrowDown:()=>Math.min(o.length-1,l+s),ArrowLeft:()=>Math.max(0,l-1),ArrowRight:()=>Math.min(o.length-1,l+1)}[t.key])();null==(n=o[r])||n.focus();};return e.context.mainElement.addEventListener("keydown",t),()=>e.context.mainElement.removeEventListener("keydown",t)},handleMonth=(e,t)=>{const n=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1)));(({prev:()=>n.setMonth(n.getMonth()-e.monthsToSwitch),next:()=>n.setMonth(n.getMonth()+e.monthsToSwitch)}))[t](),setContext(e,"selectedMonth",n.getMonth()),setContext(e,"selectedYear",n.getFullYear()),visibilityTitle(e),visibilityArrows(e),createDates(e);},handleClickArrow=(e,t)=>{const n=t.target.closest("[data-vc-arrow]");if(n){if(["default","multiple"].includes(e.context.currentType))handleMonth(e,n.dataset.vcArrow);else if("year"===e.context.currentType&&void 0!==e.context.displayYear){const a={prev:-15,next:15}[n.dataset.vcArrow];setContext(e,"displayYear",e.context.displayYear+a),createYears(e,t.target);}e.onClickArrow&&e.onClickArrow(e,t);}},resolveToggle=(e,t)=>void 0===t||("function"==typeof t?t(e):t),canToggleSelection=e=>resolveToggle(e,e.enableDateToggle),handleSelectDate=(e,t,n)=>{const a=t.dataset.vcDate,o=t.closest("[data-vc-date][data-vc-date-selected]"),l=canToggleSelection(e);if(o&&!l)return;const s=o?e.context.selectedDates.filter((e=>e!==a)):n?[...e.context.selectedDates,a]:[a];setContext(e,"selectedDates",s);},createDateRangeTooltip=(e,t,n)=>{if(!t)return;if(!n)return t.dataset.vcDateRangeTooltip="hidden",void(t.textContent="");const a=e.context.mainElement.getBoundingClientRect(),o=n.getBoundingClientRect();t.style.left=o.left-a.left+o.width/2+"px",t.style.top=o.bottom-a.top-o.height+"px",t.dataset.vcDateRangeTooltip="visible",t.innerHTML=e.sanitizerHTML(e.onCreateDateRangeTooltip(e,n,t,o,a));},state={self:null,lastDateEl:null,isHovering:false,rangeMin:void 0,rangeMax:void 0,tooltipEl:null,timeoutId:null},addHoverEffect=(e,t,n)=>{var a,o,l;if(!(null==(o=null==(a=state.self)?void 0:a.context)?void 0:o.selectedDates[0]))return;const s=getDateString(e);(null==(l=state.self.context.disableDates)?void 0:l.includes(s))||(state.self.context.mainElement.querySelectorAll(`[data-vc-date="${s}"]`).forEach((e=>e.dataset.vcDateHover="")),t.forEach((e=>e.dataset.vcDateHover="first")),n.forEach((e=>{"first"===e.dataset.vcDateHover?e.dataset.vcDateHover="first-and-last":e.dataset.vcDateHover="last";})));},removeHoverEffect=()=>{var e,t;if(!(null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.mainElement))return;state.self.context.mainElement.querySelectorAll("[data-vc-date-hover]").forEach((e=>e.removeAttribute("data-vc-date-hover")));},handleHoverDatesEvent=e=>{var t,n;if(!e||!(null==(n=null==(t=state.self)?void 0:t.context)?void 0:n.selectedDates[0]))return;if(!e.closest('[data-vc="dates"]'))return state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),void removeHoverEffect();const a=e.closest("[data-vc-date]");if(!a||state.lastDateEl===a)return;state.lastDateEl=a,createDateRangeTooltip(state.self,state.tooltipEl,a),removeHoverEffect();const o=a.dataset.vcDate,l=getDate(state.self.context.selectedDates[0]),s=getDate(o),i=state.self.context.mainElement.querySelectorAll(`[data-vc-date="${state.self.context.selectedDates[0]}"]`),r=state.self.context.mainElement.querySelectorAll(`[data-vc-date="${o}"]`),[c,d]=l<s?[i,r]:[r,i],[u,m]=l<s?[l,s]:[s,l];for(let e=new Date(u);e<=m;e.setDate(e.getDate()+1))addHoverEffect(e,c,d);},handleHoverSelectedDatesRangeEvent=e=>{const t=null==e?void 0:e.closest("[data-vc-date-selected]");if(!t&&state.lastDateEl)return state.lastDateEl=null,void createDateRangeTooltip(state.self,state.tooltipEl,null);t&&state.lastDateEl!==t&&(state.lastDateEl=t,createDateRangeTooltip(state.self,state.tooltipEl,t));},optimizedHoverHandler=e=>t=>{const n=t.target;state.isHovering||(state.isHovering=true,requestAnimationFrame((()=>{e(n),state.isHovering=false;})));},optimizedHandleHoverDatesEvent=optimizedHoverHandler(handleHoverDatesEvent),optimizedHandleHoverSelectedDatesRangeEvent=optimizedHoverHandler(handleHoverSelectedDatesRangeEvent),handleCancelSelectionDates=e=>{state.self&&"Escape"===e.key&&(state.lastDateEl=null,setContext(state.self,"selectedDates",[]),state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates),createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect());},handleMouseLeave=()=>{null!==state.timeoutId&&clearTimeout(state.timeoutId),state.timeoutId=setTimeout((()=>{state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect();}),50);},updateDisabledDates=()=>{var e,t,n,a;if(!(null==(n=null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.selectedDates)?void 0:n[0])||!(null==(a=state.self.context.disableDates)?void 0:a[0]))return;const o=getDate(state.self.context.selectedDates[0]),[l,s]=state.self.context.disableDates.map((e=>getDate(e))).reduce((([e,t],n)=>[o>=n?n:e,o<n&&null===t?n:t]),[null,null]);l&&setContext(state.self,"displayDateMin",getDateString(new Date(l.setDate(l.getDate()+1)))),s&&setContext(state.self,"displayDateMax",getDateString(new Date(s.setDate(s.getDate()-1))));state.self.disableDatesPast&&!state.self.disableAllDates&&getDate(state.self.context.displayDateMin)<getDate(state.self.context.dateToday)&&setContext(state.self,"displayDateMin",state.self.context.dateToday);},handleSelectDateRange=(e,t)=>{state.self=e,state.lastDateEl=t,removeHoverEffect(),e.disableDatesGaps&&(state.rangeMin=state.rangeMin?state.rangeMin:e.context.displayDateMin,state.rangeMax=state.rangeMax?state.rangeMax:e.context.displayDateMax),e.onCreateDateRangeTooltip&&(state.tooltipEl=e.context.mainElement.querySelector("[data-vc-date-range-tooltip]"));const n=null==t?void 0:t.dataset.vcDate;if(n){const t=1===e.context.selectedDates.length&&e.context.selectedDates[0].includes(n),a=t&&!canToggleSelection(e)?[n,n]:t&&canToggleSelection(e)?[]:e.context.selectedDates.length>1?[n]:[...e.context.selectedDates,n];setContext(e,"selectedDates",a),e.context.selectedDates.length>1&&e.context.selectedDates.sort(((e,t)=>+new Date(e)-+new Date(t)));}({set:()=>(e.disableDatesGaps&&updateDisabledDates(),createDateRangeTooltip(state.self,state.tooltipEl,t),state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates),state.self.context.mainElement.addEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.addEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.addEventListener("keydown",handleCancelSelectionDates),()=>{state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates);}),reset:()=>{const[n,a]=[e.context.selectedDates[0],e.context.selectedDates[e.context.selectedDates.length-1]],o=e.context.selectedDates[0]!==e.context.selectedDates[e.context.selectedDates.length-1],l=parseDates([`${n}:${a}`]).filter((t=>!e.context.disableDates.includes(t))),s=o?e.enableEdgeDatesOnly?[n,a]:l:[e.context.selectedDates[0],e.context.selectedDates[0]];if(setContext(e,"selectedDates",s),e.disableDatesGaps&&(setContext(e,"displayDateMin",state.rangeMin),setContext(e,"displayDateMax",state.rangeMax)),state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates),e.onCreateDateRangeTooltip)return e.context.selectedDates[0]||(state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,null)),e.context.selectedDates[0]&&(state.self.context.mainElement.addEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.addEventListener("mouseleave",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,t)),()=>{state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave);}}})[1===e.context.selectedDates.length?"set":"reset"]();},updateDateModifier=e=>{e.context.mainElement.querySelectorAll("[data-vc-date]").forEach((t=>{const n=t.querySelector("[data-vc-date-btn]"),a=t.dataset.vcDate,o=getDate(a).getDay();setDateModifier(e,e.context.selectedYear,t,n,o,a,"current");}));},handleClickDate=(e,t)=>{var n;const a=t.target,o=a.closest("[data-vc-date-btn]");if(!e.selectionDatesMode||!["single","multiple","multiple-ranged"].includes(e.selectionDatesMode)||!o)return;const l=o.closest("[data-vc-date]");(({single:()=>handleSelectDate(e,l,false),multiple:()=>handleSelectDate(e,l,true),"multiple-ranged":()=>handleSelectDateRange(e,l)}))[e.selectionDatesMode](),null==(n=e.context.selectedDates)||n.sort(((e,t)=>+new Date(e)-+new Date(t))),e.onClickDate&&e.onClickDate(e,t),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t);const s=a.closest('[data-vc-date-month="prev"]'),i=a.closest('[data-vc-date-month="next"]');({prev:()=>e.enableMonthChangeOnDayClick?handleMonth(e,"prev"):updateDateModifier(e),next:()=>e.enableMonthChangeOnDayClick?handleMonth(e,"next"):updateDateModifier(e),current:()=>updateDateModifier(e)})[s?"prev":i?"next":"current"]();},typeClick=["month","year"],getValue=(e,t,n)=>{const{currentValue:a,columnID:o}=getColumnID(e,t);return "month"===e.context.currentType&&o>=0?n-o:"year"===e.context.currentType&&e.context.selectedYear!==a?n-1:n},handleMultipleYearSelection=(e,t)=>{const n=getValue(e,"year",Number(t.dataset.vcYearsYear)),a=getDate(e.context.dateMin),o=getDate(e.context.dateMax),l=e.context.displayMonthsCount-1,{columnID:s}=getColumnID(e,"year"),i=e.context.selectedMonth<a.getMonth()&&n<=a.getFullYear(),r=e.context.selectedMonth>o.getMonth()-l+s&&n>=o.getFullYear(),c=n<a.getFullYear(),d=n>o.getFullYear(),u=i||c?a.getFullYear():r||d?o.getFullYear():n,m=i||c?a.getMonth():r||d?o.getMonth()-l+s:e.context.selectedMonth;setContext(e,"selectedYear",u),setContext(e,"selectedMonth",m);},handleMultipleMonthSelection=(e,t)=>{const n=t.closest('[data-vc-column="month"]').querySelector('[data-vc="year"]'),a=getValue(e,"month",Number(t.dataset.vcMonthsMonth)),o=Number(n.dataset.vcYear),l=getDate(e.context.dateMin),s=getDate(e.context.dateMax),i=a<l.getMonth()&&o<=l.getFullYear(),r=a>s.getMonth()&&o>=s.getFullYear();setContext(e,"selectedYear",o),setContext(e,"selectedMonth",i?l.getMonth():r?s.getMonth():a);},handleItemClick=(e,t,n,a)=>{var o;({year:()=>{if("multiple"===e.type)return handleMultipleYearSelection(e,a);setContext(e,"selectedYear",Number(a.dataset.vcYearsYear));},month:()=>{if("multiple"===e.type)return handleMultipleMonthSelection(e,a);setContext(e,"selectedMonth",Number(a.dataset.vcMonthsMonth));}})[n]();(({year:()=>{var n;return null==(n=e.onClickYear)?void 0:n.call(e,e,t)},month:()=>{var n;return null==(n=e.onClickMonth)?void 0:n.call(e,e,t)}}))[n](),e.context.currentType!==e.type?(setContext(e,"currentType",e.type),create(e),null==(o=e.context.mainElement.querySelector(`[data-vc="${n}"]`))||o.focus()):setYearModifier(e,a,n,true,true);},handleClickType=(e,t,n)=>{var a;const o=t.target,l=o.closest(`[data-vc="${n}"]`),s={year:()=>createYears(e,o),month:()=>createMonths(e,o)};if(l&&e.onClickTitle&&e.onClickTitle(e,t),l&&e.context.currentType!==n)return s[n]();const i=o.closest(`[data-vc-${n}s-${n}]`);if(i)return handleItemClick(e,t,n,i);const r=o.closest('[data-vc="grid"]'),c=o.closest('[data-vc="column"]');(e.context.currentType===n&&l||"multiple"===e.type&&e.context.currentType===n&&r&&!c)&&(setContext(e,"currentType",e.type),create(e),null==(a=e.context.mainElement.querySelector(`[data-vc="${n}"]`))||a.focus());},handleClickMonthOrYear=(e,t)=>{const n={month:e.selectionMonthsMode,year:e.selectionYearsMode};typeClick.forEach((a=>{n[a]&&t.target&&handleClickType(e,t,a);}));},handleClickWeekNumber=(e,t)=>{if(!e.enableWeekNumbers||!e.onClickWeekNumber)return;const n=t.target.closest("[data-vc-week-number]"),a=e.context.mainElement.querySelectorAll("[data-vc-date-week-number]");if(!n||!a[0])return;const o=Number(n.innerText),l=Number(n.dataset.vcWeekYear),s=Array.from(a).filter((e=>Number(e.dataset.vcDateWeekNumber)===o));e.onClickWeekNumber(e,o,l,s,t);},handleClickWeekDay=(e,t)=>{if(!e.onClickWeekDay)return;const n=t.target.closest("[data-vc-week-day]"),a=t.target.closest('[data-vc="column"]'),o=a?a.querySelectorAll("[data-vc-date-week-day]"):e.context.mainElement.querySelectorAll("[data-vc-date-week-day]");if(!n||!o[0])return;const l=Number(n.dataset.vcWeekDay),s=Array.from(o).filter((e=>Number(e.dataset.vcDateWeekDay)===l));e.onClickWeekDay(e,l,s,t);},handleClick=e=>{const t=t=>{handleClickArrow(e,t),handleClickWeekDay(e,t),handleClickWeekNumber(e,t),handleClickDate(e,t),handleClickMonthOrYear(e,t);};return e.context.mainElement.addEventListener("click",t),()=>e.context.mainElement.removeEventListener("click",t)},initMonthsCount=e=>{if("multiple"===e.type&&(e.displayMonthsCount<=1||e.displayMonthsCount>12))throw new Error(errorMessages.incorrectMonthsCount);if("multiple"!==e.type&&e.displayMonthsCount>1)throw new Error(errorMessages.incorrectMonthsCount);setContext(e,"displayMonthsCount",e.displayMonthsCount?e.displayMonthsCount:"multiple"===e.type?2:1);},getLocalDate=()=>{const e=new Date;return new Date(e.getTime()-6e4*e.getTimezoneOffset()).toISOString().substring(0,10)},resolveDate=(e,t)=>"today"===e?getLocalDate():e instanceof Date||"number"==typeof e||"string"==typeof e?parseDates([e])[0]:t,initRange=e=>{var t,n,a;const o=resolveDate(e.dateMin,e.dateMin),l=resolveDate(e.dateMax,e.dateMax),s=resolveDate(e.displayDateMin,o),i=resolveDate(e.displayDateMax,l);setContext(e,"dateToday",resolveDate(e.dateToday,e.dateToday)),setContext(e,"displayDateMin",s?getDate(o)>=getDate(s)?o:s:o),setContext(e,"displayDateMax",i?getDate(l)<=getDate(i)?l:i:l);const r=e.disableDatesPast&&!e.disableAllDates&&getDate(s)<getDate(e.context.dateToday);setContext(e,"displayDateMin",r||e.disableAllDates?e.context.dateToday:s),setContext(e,"displayDateMax",e.disableAllDates?e.context.dateToday:i),setContext(e,"disableDates",e.disableDates[0]&&!e.disableAllDates?parseDates(e.disableDates):e.disableAllDates?[e.context.displayDateMin]:[]),e.context.disableDates.length>1&&e.context.disableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),setContext(e,"enableDates",e.enableDates[0]?parseDates(e.enableDates):[]),(null==(t=e.context.enableDates)?void 0:t[0])&&(null==(n=e.context.disableDates)?void 0:n[0])&&setContext(e,"disableDates",e.context.disableDates.filter((t=>!e.context.enableDates.includes(t)))),e.context.enableDates.length>1&&e.context.enableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),(null==(a=e.context.enableDates)?void 0:a[0])&&e.disableAllDates&&(setContext(e,"displayDateMin",e.context.enableDates[0]),setContext(e,"displayDateMax",e.context.enableDates[e.context.enableDates.length-1])),setContext(e,"dateMin",e.displayDisabledDates?o:e.context.displayDateMin),setContext(e,"dateMax",e.displayDisabledDates?l:e.context.displayDateMax);},initSelectedDates=e=>{var t;setContext(e,"selectedDates",(null==(t=e.selectedDates)?void 0:t[0])?parseDates(e.selectedDates):[]);},displayClosestValidDate=e=>{const t=t=>{const n=new Date(t);setInitialContext(e,n.getMonth(),n.getFullYear());};if(e.displayDateMin&&"today"!==e.displayDateMin&&(n=e.displayDateMin,a=new Date,new Date(n).getTime()>a.getTime())){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMin;return t(getDate(resolveDate(n,e.displayDateMin))),true}var n,a;if(e.displayDateMax&&"today"!==e.displayDateMax&&((e,t)=>new Date(e).getTime()<t.getTime())(e.displayDateMax,new Date)){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMax;return t(getDate(resolveDate(n,e.displayDateMax))),true}return  false},setInitialContext=(e,t,n)=>{setContext(e,"selectedMonth",t),setContext(e,"selectedYear",n),setContext(e,"displayYear",n);},initSelectedMonthYear=e=>{var t;if(e.enableJumpToSelectedDate&&(null==(t=e.selectedDates)?void 0:t[0])&&void 0===e.selectedMonth&&void 0===e.selectedYear){const t=getDate(parseDates(e.selectedDates)[0]);return void setInitialContext(e,t.getMonth(),t.getFullYear())}if(displayClosestValidDate(e))return;const n=void 0!==e.selectedMonth&&Number(e.selectedMonth)>=0&&Number(e.selectedMonth)<12,a=void 0!==e.selectedYear&&Number(e.selectedYear)>=0&&Number(e.selectedYear)<=9999;setInitialContext(e,n?Number(e.selectedMonth):getDate(e.context.dateToday).getMonth(),a?Number(e.selectedYear):getDate(e.context.dateToday).getFullYear());},initTime=e=>{var t,n,a;if(!e.selectionTimeMode)return;if(![12,24].includes(e.selectionTimeMode))throw new Error(errorMessages.incorrectTime);const o=12===e.selectionTimeMode,l=o?/^(0[1-9]|1[0-2]):([0-5][0-9]) ?(AM|PM)?$/i:/^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/;let[s,i,r]=null!=(a=null==(n=null==(t=e.selectedTime)?void 0:t.match(l))?void 0:n.slice(1))?a:[];s?o&&!r&&(r="AM"):(s=o?transformTime12(String(e.timeMinHour)):String(e.timeMinHour),i=String(e.timeMinMinute),r=o?Number(transformTime12(String(e.timeMinHour)))>=12?"PM":"AM":null),setContext(e,"selectedHours",s.padStart(2,"0")),setContext(e,"selectedMinutes",i.padStart(2,"0")),setContext(e,"selectedKeeping",r),setContext(e,"selectedTime",`${e.context.selectedHours}:${e.context.selectedMinutes}${r?` ${r}`:""}`);},initAllVariables=e=>{setContext(e,"currentType",e.type),initMonthsCount(e),initRange(e),initSelectedMonthYear(e),initSelectedDates(e),initTime(e);},reset=(e,{year:t,month:n,dates:a,time:o,locale:l},s=true)=>{var i;const r={year:e.selectedYear,month:e.selectedMonth,dates:e.selectedDates,time:e.selectedTime};if(e.selectedYear=t?r.year:e.context.selectedYear,e.selectedMonth=n?r.month:e.context.selectedMonth,e.selectedTime=o?r.time:e.context.selectedTime,e.selectedDates="only-first"===a&&(null==(i=e.context.selectedDates)?void 0:i[0])?[e.context.selectedDates[0]]:true===a?r.dates:e.context.selectedDates,l){setContext(e,"locale",{months:{short:[],long:[]},weekdays:{short:[],long:[]}});}initAllVariables(e),s&&create(e),e.selectedYear=r.year,e.selectedMonth=r.month,e.selectedDates=r.dates,e.selectedTime=r.time,"multiple-ranged"===e.selectionDatesMode&&a&&handleSelectDateRange(e,null);},createToInput=e=>{const t=document.createElement("div");return t.className=e.styles.calendar,t.dataset.vc="calendar",t.dataset.vcInput="",t.dataset.vcCalendarHidden="",setContext(e,"inputModeInit",true),setContext(e,"isShowInInputMode",false),setContext(e,"mainElement",t),document.body.appendChild(e.context.mainElement),reset(e,{year:true,month:true,dates:true,time:true,locale:true}),setTimeout((()=>show(e))),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e)},canOpenOnFocus=e=>resolveToggle(e,e.openOnFocus),handleInput=e=>{setContext(e,"inputElement",e.context.mainElement);const t=()=>{e.context.inputModeInit?setTimeout((()=>show(e))):createToInput(e);};e.context.inputElement.addEventListener("click",t);const n="function"==typeof e.openOnFocus||true===e.openOnFocus,a=()=>{shouldSkipOpenOnFocus(e)?clearSkipOpenOnFocus(e):canOpenOnFocus(e)&&t();};n&&e.context.inputElement.addEventListener("focus",a);const o=t=>{const n="Tab"===t.key&&!t.shiftKey,a=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(t.key);(n||a)&&(t=>{var n;if(!e.context.isShowInInputMode)return  false;if(document.activeElement!==e.context.inputElement)return  false;const a=e=>e.tabIndex>=0&&!e.hasAttribute("disabled")&&"true"!==e.getAttribute("aria-disabled"),o=null!=(n=document.createTreeWalker(e.context.mainElement,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>a(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}).nextNode())?n:a(e.context.mainElement)?e.context.mainElement:null;!o||o.tabIndex<0||(t.preventDefault(),o.focus());})(t);};return e.context.inputElement.addEventListener("keydown",o),()=>{e.context.inputElement.removeEventListener("click",t),n&&e.context.inputElement.removeEventListener("focus",a),e.context.inputElement.removeEventListener("keydown",o);}},init=e=>(setContext(e,"originalElement",e.context.mainElement.cloneNode(true)),setContext(e,"isInit",true),e.inputMode?handleInput(e):(initAllVariables(e),create(e),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e))),update=(e,t)=>{if(!e.context.isInit)throw new Error(errorMessages.notInit);reset(e,__spreadValues(__spreadValues({},{year:true,month:true,dates:true,time:true,locale:true}),t),!(e.inputMode&&!e.context.inputModeInit)),e.onUpdate&&e.onUpdate(e);},replaceProperties=(e,t)=>{const n=Object.keys(t);for(let a=0;a<n.length;a++){const o=n[a];"object"!=typeof e[o]||"object"!=typeof t[o]||t[o]instanceof Date||Array.isArray(t[o])?void 0!==t[o]&&(e[o]=t[o]):replaceProperties(e[o],t[o]);}},set=(e,t,n)=>{replaceProperties(e,t),e.context.isInit&&update(e,n);};function findBestPickerPosition(e,t){const n="left";if(!t||!e)return n;const{canShow:a,parentPositions:o}=getAvailablePosition(e,t),l=a.left&&a.right;return (l&&a.bottom?"center":l&&a.top?["top","center"]:Array.isArray(o)?["bottom"===o[0]?"top":"bottom",...o.slice(1)]:o)||n}const setPosition=(e,t,n)=>{if(!e)return;const a="auto"===n?findBestPickerPosition(e,t):n,o={top:-t.offsetHeight,bottom:e.offsetHeight,left:0,center:e.offsetWidth/2-t.offsetWidth/2,right:e.offsetWidth-t.offsetWidth},l=Array.isArray(a)?a[0]:"bottom",s=Array.isArray(a)?a[1]:a;t.dataset.vcPosition=l;const{top:i,left:r}=getOffset(e),c=i+o[l];let d=r+o[s];const{vw:u}=getViewportDimensions();if(d+t.clientWidth>u){const e=window.innerWidth-document.body.clientWidth;d=u-t.clientWidth-e;}else d<0&&(d=0);Object.assign(t.style,{left:`${d}px`,top:`${c}px`});},show=e=>{if(e.context.isShowInInputMode)return;if(!e.context.currentType)return void e.context.mainElement.click();setContext(e,"cleanupHandlers",[]),setContext(e,"isShowInInputMode",true),e.inputMode&&restoreTabbing(e.context.mainElement),setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput),e.context.mainElement.removeAttribute("data-vc-calendar-hidden");const t=()=>{setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput);};window.addEventListener("resize",t),e.context.cleanupHandlers.push((()=>window.removeEventListener("resize",t)));const n=t=>{"Escape"===t.key&&hide(e);};document.addEventListener("keydown",n),e.context.cleanupHandlers.push((()=>document.removeEventListener("keydown",n)));const a=t=>{t.target===e.context.inputElement||e.context.mainElement.contains(t.target)||hide(e);};document.addEventListener("click",a,{capture:true}),e.context.cleanupHandlers.push((()=>document.removeEventListener("click",a,{capture:true}))),e.onShow&&e.onShow(e);},labels={application:"Calendar",navigation:"Calendar Navigation",arrowNext:{month:"Next month",year:"Next list of years"},arrowPrev:{month:"Previous month",year:"Previous list of years"},month:"Select month, current selected month:",months:"List of months",year:"Select year, current selected year:",years:"List of years",week:"Days of the week",weekNumber:"Numbers of weeks in a year",dates:"Dates in the current month",selectingTime:"Selecting a time ",inputHour:"Hours",inputMinute:"Minutes",rangeHour:"Slider for selecting hours",rangeMinute:"Slider for selecting minutes",btnKeeping:"Switch AM/PM, current position:"},styles={calendar:"vc",controls:"vc-controls",grid:"vc-grid",column:"vc-column",header:"vc-header",headerContent:"vc-header__content",month:"vc-month",year:"vc-year",arrowPrev:"vc-arrow vc-arrow_prev",arrowNext:"vc-arrow vc-arrow_next",wrapper:"vc-wrapper",content:"vc-content",months:"vc-months",monthsMonth:"vc-months__month",years:"vc-years",yearsYear:"vc-years__year",week:"vc-week",weekDay:"vc-week__day",weekNumbers:"vc-week-numbers",weekNumbersTitle:"vc-week-numbers__title",weekNumbersContent:"vc-week-numbers__content",weekNumber:"vc-week-number",dates:"vc-dates",datesRow:"vc-dates__row",date:"vc-date",dateBtn:"vc-date__btn",datePopup:"vc-date__popup",dateRangeTooltip:"vc-date-range-tooltip",time:"vc-time",timeContent:"vc-time__content",timeHour:"vc-time__hour",timeMinute:"vc-time__minute",timeKeeping:"vc-time__keeping",timeRanges:"vc-time__ranges",timeRange:"vc-time__range"};class OptionsCalendar{constructor(){__publicField(this,"type","default"),__publicField(this,"inputMode",false),__publicField(this,"openOnFocus",true),__publicField(this,"positionToInput","left"),__publicField(this,"firstWeekday",1),__publicField(this,"monthsToSwitch",1),__publicField(this,"themeAttrDetect","html[data-theme]"),__publicField(this,"locale","en"),__publicField(this,"dateToday","today"),__publicField(this,"dateMin","1970-01-01"),__publicField(this,"dateMax","2470-12-31"),__publicField(this,"displayDateMin"),__publicField(this,"displayDateMax"),__publicField(this,"displayDatesOutside",true),__publicField(this,"displayDisabledDates",false),__publicField(this,"displayMonthsCount"),__publicField(this,"disableDates",[]),__publicField(this,"disableAllDates",false),__publicField(this,"disableDatesPast",false),__publicField(this,"disableDatesGaps",false),__publicField(this,"disableWeekdays",[]),__publicField(this,"disableToday",false),__publicField(this,"enableDates",[]),__publicField(this,"enableEdgeDatesOnly",true),__publicField(this,"enableDateToggle",true),__publicField(this,"enableWeekNumbers",false),__publicField(this,"enableMonthChangeOnDayClick",true),__publicField(this,"enableJumpToSelectedDate",false),__publicField(this,"selectionDatesMode","single"),__publicField(this,"selectionMonthsMode",true),__publicField(this,"selectionYearsMode",true),__publicField(this,"selectionTimeMode",false),__publicField(this,"selectedDates",[]),__publicField(this,"selectedMonth"),__publicField(this,"selectedYear"),__publicField(this,"selectedHolidays",[]),__publicField(this,"selectedWeekends",[0,6]),__publicField(this,"selectedTime"),__publicField(this,"selectedTheme","system"),__publicField(this,"timeMinHour",0),__publicField(this,"timeMaxHour",23),__publicField(this,"timeMinMinute",0),__publicField(this,"timeMaxMinute",59),__publicField(this,"timeControls","all"),__publicField(this,"timeStepHour",1),__publicField(this,"timeStepMinute",1),__publicField(this,"sanitizerHTML",(e=>e)),__publicField(this,"onClickDate"),__publicField(this,"onClickWeekDay"),__publicField(this,"onClickWeekNumber"),__publicField(this,"onClickTitle"),__publicField(this,"onClickMonth"),__publicField(this,"onClickYear"),__publicField(this,"onClickArrow"),__publicField(this,"onChangeTime"),__publicField(this,"onChangeToInput"),__publicField(this,"onCreateDateRangeTooltip"),__publicField(this,"onCreateDateEls"),__publicField(this,"onCreateMonthEls"),__publicField(this,"onCreateYearEls"),__publicField(this,"onInit"),__publicField(this,"onUpdate"),__publicField(this,"onDestroy"),__publicField(this,"onShow"),__publicField(this,"onHide"),__publicField(this,"popups",{}),__publicField(this,"labels",__spreadValues({},labels)),__publicField(this,"layouts",{default:"",multiple:"",month:"",year:""}),__publicField(this,"styles",__spreadValues({},styles));}}const _Calendar=class e extends OptionsCalendar{constructor(t,n){var a;super(),__publicField(this,"init",(()=>init(this))),__publicField(this,"update",(e=>update(this,e))),__publicField(this,"destroy",(()=>destroy(this))),__publicField(this,"show",(()=>show(this))),__publicField(this,"hide",(()=>hide(this))),__publicField(this,"set",((e,t)=>set(this,e,t))),__publicField(this,"context"),this.context=__spreadProps(__spreadValues({},this.context),{locale:{months:{short:[],long:[]},weekdays:{short:[],long:[]}}}),setContext(this,"mainElement","string"==typeof t?null!=(a=e.memoizedElements.get(t))?a:this.queryAndMemoize(t):t),n&&replaceProperties(this,n);}queryAndMemoize(t){const n=document.querySelector(t);if(!n)throw new Error(errorMessages.notFoundSelector(t));return e.memoizedElements.set(t,n),n}};__publicField(_Calendar,"memoizedElements",new Map);let Calendar=_Calendar;
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap datepicker.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+
+/**
+ * Constants
+ */
+
+const NAME$e = 'datepicker';
+const DATA_KEY$a = 'bs.datepicker';
+const EVENT_KEY$a = `.${DATA_KEY$a}`;
+const DATA_API_KEY$5 = '.data-api';
+const EVENT_CHANGE = `change${EVENT_KEY$a}`;
+const EVENT_SHOW$5 = `show${EVENT_KEY$a}`;
+const EVENT_SHOWN$5 = `shown${EVENT_KEY$a}`;
+const EVENT_HIDE$5 = `hide${EVENT_KEY$a}`;
+const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$a}`;
+const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$a}${DATA_API_KEY$5}`;
+const EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY$a}${DATA_API_KEY$5}`;
+const SELECTOR_DATA_TOGGLE$6 = '[data-bs-toggle="datepicker"]';
+const HIDE_DELAY = 100; // ms delay before hiding after selection
+
+const Default$d = {
+  datepickerTheme: null,
+  // 'light', 'dark', 'auto' - explicit theme for datepicker popover only
+  dateMin: null,
+  dateMax: null,
+  dateFormat: null,
+  // Intl.DateTimeFormat options, or function(date, locale) => string
+  displayElement: null,
+  // Element to show formatted date (defaults to element for buttons)
+  displayMonthsCount: 1,
+  // Number of months to display side-by-side
+  firstWeekday: 1,
+  // Monday
+  inline: false,
+  // Render calendar inline (no popup)
+  locale: 'default',
+  positionElement: null,
+  // Element to position calendar relative to (defaults to input)
+  selectedDates: [],
+  selectionMode: 'single',
+  // 'single', 'multiple', 'multiple-ranged'
+  placement: 'left',
+  // 'left', 'center', 'right', 'auto'
+  vcpOptions: {} // Pass-through for any VCP option
+};
+const DefaultType$d = {
+  datepickerTheme: '(null|string)',
+  dateMin: '(null|string|number|object)',
+  dateMax: '(null|string|number|object)',
+  dateFormat: '(null|object|function)',
+  displayElement: '(null|string|element|boolean)',
+  displayMonthsCount: 'number',
+  firstWeekday: 'number',
+  inline: 'boolean',
+  locale: 'string',
+  positionElement: '(null|string|element)',
+  selectedDates: 'array',
+  selectionMode: 'string',
+  placement: 'string',
+  vcpOptions: 'object'
+};
+
+/**
+ * Class definition
+ */
+
+class Datepicker extends BaseComponent {
+  constructor(element, config) {
+    super(element, config);
+    this._calendar = null;
+    this._isShown = false;
+    this._initCalendar();
   }
-  _getFallbackPlacements() {
-    // Get appropriate fallback placements based on current placement
-    // Fallbacks should preserve alignment (start/end) when possible
-    const placement = this._getPlacement();
 
-    // Handle all possible Floating UI placements
-    const fallbackMap = {
-      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],
-      'bottom-start': ['top-start', 'bottom-end', 'top-end'],
-      'bottom-end': ['top-end', 'bottom-start', 'top-start'],
-      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],
-      'top-start': ['bottom-start', 'top-end', 'bottom-end'],
-      'top-end': ['bottom-end', 'top-start', 'bottom-start'],
-      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],
-      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],
-      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],
-      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],
-      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],
-      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']
-    };
-    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left'];
+  // Getters
+  static get Default() {
+    return Default$d;
   }
-  _getFloatingConfig(placement, middleware) {
-    const defaultConfig = {
-      placement,
-      middleware,
-      strategy: this._config.strategy
-    };
-    return {
-      ...defaultConfig,
-      ...execute(this._config.floatingConfig, [undefined, defaultConfig])
-    };
+  static get DefaultType() {
+    return DefaultType$d;
   }
-  _disposeFloating() {
-    if (this._floatingCleanup) {
-      this._floatingCleanup();
-      this._floatingCleanup = null;
-    }
+  static get NAME() {
+    return NAME$e;
   }
-  _getContainer() {
-    const {
-      container
-    } = this._config;
-    if (container === false) {
-      return null;
+
+  // Public
+  toggle() {
+    if (this._config.inline) {
+      return; // Inline calendars are always visible
     }
-    return container === true ? document.body : getElement(container);
+    return this._isShown ? this.hide() : this.show();
   }
-  _moveMenuToContainer() {
-    const container = this._getContainer();
-    if (!container || !this._menu) {
+  show() {
+    if (this._config.inline) {
+      return; // Inline calendars are always visible
+    }
+    if (!this._calendar || isDisabled(this._element) || this._isShown) {
       return;
     }
-
-    // Only move if not already in the container
-    if (this._menu.parentNode !== container) {
-      container.append(this._menu);
+    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5);
+    if (showEvent.defaultPrevented) {
+      return;
     }
+    this._calendar.show();
+    this._isShown = true;
+    EventHandler.trigger(this._element, EVENT_SHOWN$5);
   }
-  _restoreMenuToOriginalParent() {
-    if (!this._menuOriginalParent || !this._menu) {
+  hide() {
+    if (this._config.inline) {
+      return; // Inline calendars are always visible
+    }
+    if (!this._calendar || !this._isShown) {
       return;
     }
-
-    // Only restore if menu was moved
-    if (this._menu.parentNode !== this._menuOriginalParent) {
-      this._menuOriginalParent.append(this._menu);
+    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5);
+    if (hideEvent.defaultPrevented) {
+      return;
     }
+    this._calendar.hide();
+    this._isShown = false;
+    EventHandler.trigger(this._element, EVENT_HIDDEN$5);
   }
-
-  // Shared helper for positioning any floating element
-  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {
-    if (!floating.isConnected) {
-      return null;
+  dispose() {
+    if (this._themeObserver) {
+      this._themeObserver.disconnect();
+      this._themeObserver = null;
     }
-    const {
-      x,
-      y,
-      placement: finalPlacement
-    } = await computePosition(reference, floating, {
-      placement,
-      middleware,
-      strategy
-    });
-    if (!floating.isConnected) {
-      return null;
+    if (this._calendar) {
+      this._calendar.destroy();
     }
-    Object.assign(floating.style, {
-      position: strategy,
-      left: `${x}px`,
-      top: `${y}px`,
-      margin: '0'
-    });
-    Manipulator.setDataAttribute(floating, 'placement', finalPlacement);
-    return finalPlacement;
+    this._calendar = null;
+    super.dispose();
   }
-
-  // -------------------------------------------------------------------------
-  // Submenu handling
-  // -------------------------------------------------------------------------
-
-  _setupSubmenuListeners() {
-    // Set up hover listeners for submenu triggers
-    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {
-      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {
-        this._onSubmenuTriggerEnter(event);
-      });
-      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {
-        this._onSubmenuLeave(event);
+  getSelectedDates() {
+    const dates = this._calendar?.context?.selectedDates;
+    return dates ? [...dates] : [];
+  }
+  setSelectedDates(dates) {
+    if (this._calendar) {
+      this._calendar.set({
+        selectedDates: dates
       });
+    }
+  }
 
-      // Track mouse movement for safe triangle calculation
-      EventHandler.on(this._menu, 'mousemove', event => {
-        this._trackMousePosition(event);
-      });
+  // Private
+  _initCalendar() {
+    this._isInput = this._element.tagName === 'INPUT';
+    this._isInline = this._config.inline;
+
+    // For inline mode, look for a hidden input child to bind to
+    if (this._isInline && !this._isInput) {
+      this._boundInput = this._element.querySelector('input[type="hidden"], input[name]');
     }
+    this._positionElement = this._resolvePositionElement();
+    this._displayElement = this._resolveDisplayElement();
+    const calendarOptions = this._buildCalendarOptions();
 
-    // Set up click listener for submenu triggers
-    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {
-      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {
-        this._onSubmenuTriggerClick(event);
-      });
+    // Create calendar on the position element (for correct popup positioning)
+    // but value updates still go to this._element (the input)
+    this._calendar = new Calendar(this._positionElement, calendarOptions);
+    this._calendar.init();
+
+    // Watch for theme changes on ancestor elements (for live theme switching)
+    this._setupThemeObserver();
+
+    // Set initial value if input has a value
+    if (this._isInput && this._element.value) {
+      this._parseInputValue();
     }
+
+    // Populate input/display with preselected dates
+    this._updateDisplayWithSelectedDates();
   }
-  _onSubmenuTriggerEnter(event) {
-    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE);
-    if (!trigger) {
+  _updateDisplayWithSelectedDates() {
+    const {
+      selectedDates
+    } = this._config;
+    if (!selectedDates || selectedDates.length === 0) {
       return;
     }
-    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU);
-    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper);
-    if (!submenu) {
-      return;
+    const formattedDate = this._formatDateForInput(selectedDates);
+    if (this._isInput) {
+      this._element.value = formattedDate;
+    }
+    if (this._boundInput) {
+      this._boundInput.value = selectedDates.join(',');
+    }
+    if (this._displayElement) {
+      this._displayElement.textContent = formattedDate;
     }
-
-    // Cancel any pending close timeout for this submenu
-    this._cancelSubmenuCloseTimeout(submenu);
-
-    // Close other open submenus at the same level
-    this._closeSiblingSubmenus(submenuWrapper);
-
-    // Open this submenu
-    this._openSubmenu(trigger, submenu, submenuWrapper);
   }
-  _onSubmenuLeave(event) {
-    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU);
-    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper);
-    if (!submenu || !this._openSubmenus.has(submenu)) {
-      return;
+  _resolvePositionElement() {
+    let {
+      positionElement
+    } = this._config;
+    if (typeof positionElement === 'string') {
+      positionElement = document.querySelector(positionElement);
     }
 
-    // Check if we're moving toward the submenu (safe triangle)
-    if (this._isMovingTowardSubmenu(event, submenu)) {
-      return;
+    // Use input's parent if in form-adorn
+    if (!positionElement && this._isInput && !this._isInline) {
+      const parent = this._element.closest('.form-adorn');
+      if (parent) {
+        positionElement = parent;
+      }
+    }
+    return positionElement || this._element;
+  }
+  _resolveDisplayElement() {
+    const {
+      displayElement
+    } = this._config;
+    if (typeof displayElement === 'string') {
+      return document.querySelector(displayElement);
     }
 
-    // Schedule submenu close with delay
-    this._scheduleSubmenuClose(submenu, submenuWrapper);
+    // For buttons/non-inputs (not inline), look for a [data-bs-datepicker-display] child
+    if (displayElement === true || displayElement === null && !this._isInput && !this._isInline) {
+      const displayChild = this._element.querySelector('[data-bs-datepicker-display]');
+      return displayChild || this._element;
+    }
+    return displayElement;
   }
-  _onSubmenuTriggerClick(event) {
-    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE);
-    if (!trigger) {
+  _getThemeAncestor() {
+    return this._element.closest('[data-bs-theme]');
+  }
+  _getEffectiveTheme() {
+    // Priority: explicit datepickerTheme config > inherited from ancestor > none
+    const {
+      datepickerTheme
+    } = this._config;
+    if (datepickerTheme) {
+      return datepickerTheme;
+    }
+    const ancestor = this._getThemeAncestor();
+    return ancestor?.getAttribute('data-bs-theme') || null;
+  }
+  _syncThemeAttribute(element) {
+    if (!element) {
       return;
     }
-    event.preventDefault();
-    event.stopPropagation();
-    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU);
-    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper);
-    if (!submenu) {
+    const theme = this._getEffectiveTheme();
+    if (theme) {
+      // Copy theme to popover (needed because VCP appends to body, breaking CSS inheritance)
+      element.setAttribute('data-bs-theme', theme);
+    } else {
+      // No theme - remove attribute to allow natural inheritance
+      element.removeAttribute('data-bs-theme');
+    }
+  }
+  _setupThemeObserver() {
+    // Watch for theme changes on ancestor elements
+    const ancestor = this._getThemeAncestor();
+    if (!ancestor || this._config.datepickerTheme) {
+      // No ancestor to watch, or explicit datepickerTheme overrides
       return;
     }
+    this._themeObserver = new MutationObserver(() => {
+      this._syncThemeAttribute(this._calendar?.context?.mainElement);
+    });
+    this._themeObserver.observe(ancestor, {
+      attributes: true,
+      attributeFilter: ['data-bs-theme']
+    });
+  }
+  _buildCalendarOptions() {
+    // Get theme for VCP - use 'system' for auto-detection if no explicit theme
+    const theme = this._getEffectiveTheme();
+    // VCP uses 'system' for auto, Bootstrap uses 'auto'
+    const vcpTheme = !theme || theme === 'auto' ? 'system' : theme;
+    const calendarOptions = {
+      ...this._config.vcpOptions,
+      inputMode: !this._isInline,
+      positionToInput: this._config.placement,
+      firstWeekday: this._config.firstWeekday,
+      locale: this._config.locale,
+      selectionDatesMode: this._config.selectionMode,
+      selectedDates: this._config.selectedDates,
+      displayMonthsCount: this._config.displayMonthsCount,
+      type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',
+      selectedTheme: vcpTheme,
+      themeAttrDetect: '[data-bs-theme]',
+      onClickDate: (self, event) => this._handleDateClick(self, event),
+      onInit: self => {
+        this._syncThemeAttribute(self.context.mainElement);
+      },
+      onShow: () => {
+        this._isShown = true;
+        this._syncThemeAttribute(this._calendar.context.mainElement);
+      },
+      onHide: () => {
+        this._isShown = false;
+      }
+    };
 
-    // Toggle submenu
-    if (this._openSubmenus.has(submenu)) {
-      this._closeSubmenu(submenu, submenuWrapper);
-    } else {
-      this._closeSiblingSubmenus(submenuWrapper);
-      this._openSubmenu(trigger, submenu, submenuWrapper);
+    // Navigate to the month of the first selected date
+    if (this._config.selectedDates.length > 0) {
+      const firstDate = this._parseDate(this._config.selectedDates[0]);
+      calendarOptions.selectedMonth = firstDate.getMonth();
+      calendarOptions.selectedYear = firstDate.getFullYear();
+    }
+    if (this._config.dateMin) {
+      calendarOptions.dateMin = this._config.dateMin;
     }
+    if (this._config.dateMax) {
+      calendarOptions.dateMax = this._config.dateMax;
+    }
+    return calendarOptions;
   }
-  _openSubmenu(trigger, submenu, submenuWrapper) {
-    if (this._openSubmenus.has(submenu)) {
-      return;
+  _handleDateClick(self, event) {
+    const selectedDates = [...self.context.selectedDates];
+    if (selectedDates.length > 0) {
+      const formattedDate = this._formatDateForInput(selectedDates);
+      if (this._isInput) {
+        this._element.value = formattedDate;
+      }
+      if (this._boundInput) {
+        this._boundInput.value = selectedDates.join(',');
+      }
+      if (this._displayElement) {
+        this._displayElement.textContent = formattedDate;
+      }
     }
-
-    // Set ARIA attributes
-    trigger.setAttribute('aria-expanded', 'true');
-    trigger.setAttribute('aria-haspopup', 'true');
-
-    // Position and show submenu
-    submenu.classList.add(CLASS_NAME_SHOW$5);
-    submenuWrapper.classList.add(CLASS_NAME_SHOW$5);
-
-    // Set up Floating UI positioning for submenu
-    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper);
-    this._openSubmenus.set(submenu, cleanup);
-
-    // Set up mouseenter on submenu to cancel close timeout
-    EventHandler.on(submenu, 'mouseenter', () => {
-      this._cancelSubmenuCloseTimeout(submenu);
+    EventHandler.trigger(this._element, EVENT_CHANGE, {
+      dates: selectedDates,
+      event
     });
+    this._maybeHideAfterSelection(selectedDates);
   }
-  _closeSubmenu(submenu, submenuWrapper) {
-    if (!this._openSubmenus.has(submenu)) {
+  _maybeHideAfterSelection(selectedDates) {
+    if (this._isInline) {
       return;
     }
-
-    // Close any nested submenus first
-    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW$5}`, submenu);
-    for (const nested of nestedSubmenus) {
-      const nestedWrapper = nested.closest(SELECTOR_SUBMENU);
-      this._closeSubmenu(nested, nestedWrapper);
+    const shouldHide = this._config.selectionMode === 'single' && selectedDates.length > 0 || this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2;
+    if (shouldHide) {
+      setTimeout(() => this.hide(), HIDE_DELAY);
     }
+  }
+  _parseDate(dateStr) {
+    const [year, month, day] = dateStr.split('-');
+    return new Date(year, month - 1, day);
+  }
+  _formatDate(dateStr) {
+    const date = this._parseDate(dateStr);
+    const locale = this._config.locale === 'default' ? undefined : this._config.locale;
+    const {
+      dateFormat
+    } = this._config;
 
-    // Get the trigger
-    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper);
-
-    // Clean up Floating UI
-    const cleanup = this._openSubmenus.get(submenu);
-    if (cleanup) {
-      cleanup();
+    // Custom function formatter
+    if (typeof dateFormat === 'function') {
+      return dateFormat(date, locale);
     }
-    this._openSubmenus.delete(submenu);
-
-    // Remove event listeners
-    EventHandler.off(submenu, 'mouseenter');
 
-    // Update ARIA and visibility
-    if (trigger) {
-      trigger.setAttribute('aria-expanded', 'false');
+    // Intl.DateTimeFormat options object
+    if (dateFormat && typeof dateFormat === 'object') {
+      return new Intl.DateTimeFormat(locale, dateFormat).format(date);
     }
-    submenu.classList.remove(CLASS_NAME_SHOW$5);
-    submenuWrapper.classList.remove(CLASS_NAME_SHOW$5);
 
-    // Clear inline styles
-    submenu.style.position = '';
-    submenu.style.left = '';
-    submenu.style.top = '';
-    submenu.style.margin = '';
+    // Default: locale-aware formatting
+    return date.toLocaleDateString(locale);
   }
-  _closeAllSubmenus() {
-    for (const [submenu] of this._openSubmenus) {
-      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU);
-      this._closeSubmenu(submenu, submenuWrapper);
+  _formatDateForInput(dates) {
+    if (dates.length === 0) {
+      return '';
     }
-  }
-  _closeSiblingSubmenus(currentSubmenuWrapper) {
-    // Find all sibling submenu wrappers and close their menus
-    const parent = currentSubmenuWrapper.parentNode;
-    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW$5}`, parent);
-    for (const siblingMenu of siblingSubmenus) {
-      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU);
-      if (siblingWrapper !== currentSubmenuWrapper) {
-        this._closeSubmenu(siblingMenu, siblingWrapper);
-      }
+    if (dates.length === 1) {
+      return this._formatDate(dates[0]);
     }
+
+    // For date ranges, use en-dash; for multiple dates, use comma
+    const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', ';
+    return dates.map(d => this._formatDate(d)).join(separator);
   }
-  _createSubmenuFloating(trigger, submenu, submenuWrapper) {
-    const referenceElement = submenuWrapper;
-    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT);
-    const middleware = [offset({
-      mainAxis: 0,
-      crossAxis: -4
-    }), flip({
-      fallbackPlacements: [resolveLogicalPlacement('start-start'), resolveLogicalPlacement('end-end'), resolveLogicalPlacement('start-end')]
-    }), shift({
-      padding: 8
-    })];
-    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware);
-    updatePosition();
-    return autoUpdate(referenceElement, submenu, updatePosition);
-  }
-  _scheduleSubmenuClose(submenu, submenuWrapper) {
-    this._cancelSubmenuCloseTimeout(submenu);
-    const timeoutId = setTimeout(() => {
-      this._closeSubmenu(submenu, submenuWrapper);
-      this._submenuCloseTimeouts.delete(submenu);
-    }, this._config.submenuDelay);
-    this._submenuCloseTimeouts.set(submenu, timeoutId);
-  }
-  _cancelSubmenuCloseTimeout(submenu) {
-    const timeoutId = this._submenuCloseTimeouts.get(submenu);
-    if (timeoutId) {
-      clearTimeout(timeoutId);
-      this._submenuCloseTimeouts.delete(submenu);
+  _parseInputValue() {
+    // Try to parse the input value as a date
+    const value = this._element.value.trim();
+    if (!value) {
+      return;
     }
-  }
-  _clearAllSubmenuTimeouts() {
-    for (const timeoutId of this._submenuCloseTimeouts.values()) {
-      clearTimeout(timeoutId);
+    const date = new Date(value);
+    if (!Number.isNaN(date.getTime())) {
+      const year = date.getFullYear();
+      const month = String(date.getMonth() + 1).padStart(2, '0');
+      const day = String(date.getDate()).padStart(2, '0');
+      const formatted = `${year}-${month}-${day}`;
+      this._calendar.set({
+        selectedDates: [formatted]
+      });
     }
-    this._submenuCloseTimeouts.clear();
-  }
-
-  // -------------------------------------------------------------------------
-  // Hover intent / Safe triangle
-  // -------------------------------------------------------------------------
-
-  _trackMousePosition(event) {
-    this._hoverIntentData = {
-      x: event.clientX,
-      y: event.clientY,
-      timestamp: Date.now()
-    };
   }
-  _isMovingTowardSubmenu(event, submenu) {
-    if (!this._hoverIntentData) {
-      return false;
-    }
-    const submenuRect = submenu.getBoundingClientRect();
-    const currentPos = {
-      x: event.clientX,
-      y: event.clientY
-    };
-    const lastPos = {
-      x: this._hoverIntentData.x,
-      y: this._hoverIntentData.y
-    };
-
-    // Create a triangle from current position to submenu edges
-    // The triangle represents the "safe zone" for diagonal movement
-    const isRtl = isRTL$1();
+}
 
-    // Determine which edge of the submenu to target based on direction
-    const targetX = isRtl ? submenuRect.right : submenuRect.left;
-    const topCorner = {
-      x: targetX,
-      y: submenuRect.top
-    };
-    const bottomCorner = {
-      x: targetX,
-      y: submenuRect.bottom
-    };
+/**
+ * Data API implementation
+ */
 
-    // Check if cursor is moving toward the submenu
-    // by checking if the current position is within the safe triangle
-    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner);
+EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$6, function (event) {
+  // Only handle if not an input (inputs use focus)
+  // Skip inline datepickers (they're always visible)
+  if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true') {
+    return;
   }
-  _pointInTriangle(point, v1, v2, v3) {
-    // Barycentric coordinate method to check if point is inside triangle
-    const d1 = triangleSign(point, v1, v2);
-    const d2 = triangleSign(point, v2, v3);
-    const d3 = triangleSign(point, v3, v1);
-    const hasNeg = d1 < 0 || d2 < 0 || d3 < 0;
-    const hasPos = d1 > 0 || d2 > 0 || d3 > 0;
-    return !(hasNeg && hasPos);
+  event.preventDefault();
+  Datepicker.getOrCreateInstance(this).toggle();
+});
+EventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE$6, function () {
+  // Handle focus for input elements
+  if (this.tagName !== 'INPUT') {
+    return;
   }
+  Datepicker.getOrCreateInstance(this).show();
+});
 
-  // -------------------------------------------------------------------------
-  // Keyboard navigation
-  // -------------------------------------------------------------------------
+// Auto-initialize inline datepickers on DOMContentLoaded
+EventHandler.on(document, `DOMContentLoaded${EVENT_KEY$a}${DATA_API_KEY$5}`, () => {
+  for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE$6}[data-bs-inline="true"]`)) {
+    Datepicker.getOrCreateInstance(element);
+  }
+});
 
-  _selectMenuItem({
-    key,
-    target
-  }) {
-    // Get items only from the current menu level (not nested submenus)
-    // If target is inside a menu, use that menu; otherwise use the main menu
-    const currentMenu = target.closest(SELECTOR_MENU) || this._menu;
-    const items = SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu).filter(element => isVisible(element));
-    if (!items.length) {
-      return;
-    }
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap dialog.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
 
-    // if target isn't included in items (e.g. when expanding the dropdown)
-    // allow cycling to get the last item in case key equals ARROW_UP_KEY
-    getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();
-  }
-  _handleSubmenuKeydown(event) {
-    const {
-      key,
-      target
-    } = event;
-    const isRtl = isRTL$1();
 
-    // Determine the "enter submenu" and "exit submenu" keys based on RTL
-    const enterKey = isRtl ? ARROW_LEFT_KEY$1 : ARROW_RIGHT_KEY$1;
-    const exitKey = isRtl ? ARROW_RIGHT_KEY$1 : ARROW_LEFT_KEY$1;
+/**
+ * Constants
+ */
 
-    // Check if target is a submenu trigger
-    const submenuWrapper = target.closest(SELECTOR_SUBMENU);
-    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE);
+const NAME$d = 'dialog';
+const DATA_KEY$9 = 'bs.dialog';
+const EVENT_KEY$9 = `.${DATA_KEY$9}`;
+const DATA_API_KEY$4 = '.data-api';
+const EVENT_SHOW$4 = `show${EVENT_KEY$9}`;
+const EVENT_SHOWN$4 = `shown${EVENT_KEY$9}`;
+const EVENT_HIDE$4 = `hide${EVENT_KEY$9}`;
+const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$9}`;
+const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$9}`;
+const EVENT_CANCEL = `cancel${EVENT_KEY$9}`;
+const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$9}${DATA_API_KEY$4}`;
+const CLASS_NAME_STATIC = 'dialog-static';
+const CLASS_NAME_OPEN = 'dialog-open';
+const CLASS_NAME_NONMODAL = 'dialog-nonmodal';
+const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="dialog"]';
+const SELECTOR_OPEN_MODAL_DIALOG = 'dialog.dialog[open]:not(.dialog-nonmodal)';
+const Default$c = {
+  backdrop: true,
+  // true (click dismisses) or 'static' (click does nothing) - only applies to modal dialogs
+  keyboard: true,
+  modal: true // true uses showModal(), false uses show() for non-modal dialogs
+};
+const DefaultType$c = {
+  backdrop: '(boolean|string)',
+  keyboard: 'boolean',
+  modal: 'boolean'
+};
 
-    // Handle Enter/Space on submenu trigger
-    if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {
-      event.preventDefault();
-      event.stopPropagation();
-      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper);
-      if (submenu) {
-        this._closeSiblingSubmenus(submenuWrapper);
-        this._openSubmenu(target, submenu, submenuWrapper);
-        // Focus first item in submenu
-        requestAnimationFrame(() => {
-          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu);
-          if (firstItem) {
-            firstItem.focus();
-          }
-        });
-      }
-      return true;
-    }
+/**
+ * Class definition
+ */
 
-    // Handle Right arrow (or Left in RTL) - enter submenu
-    if (key === enterKey && isSubmenuTrigger) {
-      event.preventDefault();
-      event.stopPropagation();
-      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper);
-      if (submenu) {
-        this._closeSiblingSubmenus(submenuWrapper);
-        this._openSubmenu(target, submenu, submenuWrapper);
-        // Focus first item in submenu
-        requestAnimationFrame(() => {
-          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu);
-          if (firstItem) {
-            firstItem.focus();
-          }
-        });
-      }
-      return true;
-    }
+class Dialog extends BaseComponent {
+  constructor(element, config) {
+    super(element, config);
+    this._isTransitioning = false;
+    this._addEventListeners();
+  }
 
-    // Handle Left arrow (or Right in RTL) - exit submenu
-    if (key === exitKey) {
-      const currentMenu = target.closest(SELECTOR_MENU);
-      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU);
-      if (parentSubmenuWrapper) {
-        event.preventDefault();
-        event.stopPropagation();
-        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper);
-        this._closeSubmenu(currentMenu, parentSubmenuWrapper);
-        if (parentTrigger) {
-          parentTrigger.focus();
-        }
-        return true;
-      }
-    }
+  // Getters
+  static get Default() {
+    return Default$c;
+  }
+  static get DefaultType() {
+    return DefaultType$c;
+  }
+  static get NAME() {
+    return NAME$d;
+  }
 
-    // Handle Home/End keys
-    if (key === HOME_KEY$1 || key === END_KEY$1) {
-      event.preventDefault();
-      event.stopPropagation();
-      const currentMenu = target.closest(SELECTOR_MENU);
-      const items = SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu).filter(element => isVisible(element));
-      if (items.length) {
-        const targetItem = key === HOME_KEY$1 ? items[0] : items[items.length - 1];
-        targetItem.focus();
-      }
-      return true;
-    }
-    return false;
+  // Public
+  toggle(relatedTarget) {
+    return this._element.open ? this.hide() : this.show(relatedTarget);
   }
-  static clearMenus(event) {
-    if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {
+  show(relatedTarget) {
+    if (this._element.open || this._isTransitioning) {
       return;
     }
-    const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);
-    for (const toggle of openToggles) {
-      const context = Dropdown.getInstance(toggle);
-      if (!context || context._config.autoClose === false) {
-        continue;
-      }
-      const composedPath = event.composedPath();
-      const isMenuTarget = composedPath.includes(context._menu);
-      if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {
-        continue;
-      }
-
-      // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
-      if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {
-        continue;
-      }
-      const relatedTarget = {
-        relatedTarget: context._element
-      };
-      if (event.type === 'click') {
-        relatedTarget.clickEvent = event;
-      }
-      context._completeHide(relatedTarget);
+    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {
+      relatedTarget
+    });
+    if (showEvent.defaultPrevented) {
+      return;
+    }
+    this._isTransitioning = true;
+    if (this._config.modal) {
+      // Modal dialog: use showModal() for focus trapping, backdrop, and top layer
+      this._element.showModal();
+      // Prevent body scroll for modal dialogs
+      document.body.classList.add(CLASS_NAME_OPEN);
+    } else {
+      // Non-modal dialog: use show() - no backdrop, no focus trap, no top layer
+      this._element.classList.add(CLASS_NAME_NONMODAL);
+      this._element.show();
     }
+    this._queueCallback(() => {
+      this._isTransitioning = false;
+      EventHandler.trigger(this._element, EVENT_SHOWN$4, {
+        relatedTarget
+      });
+    }, this._element, this._isAnimated());
   }
-  static dataApiKeydownHandler(event) {
-    // If not a relevant key => not a dropdown command
-    const isInput = /input|textarea/i.test(event.target.tagName);
-    const isEscapeEvent = event.key === ESCAPE_KEY$1;
-    const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);
-    const isLeftOrRightEvent = [ARROW_LEFT_KEY$1, ARROW_RIGHT_KEY$1].includes(event.key);
-    const isHomeOrEndEvent = [HOME_KEY$1, END_KEY$1].includes(event.key);
-    const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key);
-
-    // Allow Enter/Space only on submenu triggers
-    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE);
-    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent && !(isEnterOrSpaceEvent && isSubmenuTrigger)) {
+  hide() {
+    if (!this._element.open || this._isTransitioning) {
       return;
     }
-    if (isInput && !isEscapeEvent) {
+    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);
+    if (hideEvent.defaultPrevented) {
       return;
     }
+    this._isTransitioning = true;
+    this._queueCallback(() => this._hideDialog(), this._element, this._isAnimated());
+  }
+  dispose() {
+    EventHandler.off(this._element, EVENT_KEY$9);
+    super.dispose();
+  }
+  handleUpdate() {
+    // Provided for API consistency with Modal.
+    // Native dialogs handle their own positioning.
+  }
 
-    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
-    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$5) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$5)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$5)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$5, event.delegateTarget.parentNode);
-    if (!getToggleButton) {
-      return;
-    }
-    const instance = Dropdown.getOrCreateInstance(getToggleButton);
+  // Private
+  _hideDialog() {
+    this._element.close();
+    this._element.classList.remove(CLASS_NAME_NONMODAL);
+    this._isTransitioning = false;
 
-    // Handle submenu navigation first
-    if ((isLeftOrRightEvent || isHomeOrEndEvent || isEnterOrSpaceEvent && isSubmenuTrigger) && instance._handleSubmenuKeydown(event)) {
-      return;
+    // Only restore body scroll if no other modal dialogs are open
+    if (!document.querySelector(SELECTOR_OPEN_MODAL_DIALOG)) {
+      document.body.classList.remove(CLASS_NAME_OPEN);
     }
-
-    // Handle Up/Down navigation
-    if (isUpOrDownEvent) {
-      event.preventDefault();
-      event.stopPropagation();
-      instance.show();
-      instance._selectMenuItem(event);
+    EventHandler.trigger(this._element, EVENT_HIDDEN$4);
+  }
+  _isAnimated() {
+    return this._element.classList.contains('fade');
+  }
+  _triggerBackdropTransition() {
+    const hidePreventedEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);
+    if (hidePreventedEvent.defaultPrevented) {
       return;
     }
+    this._element.classList.add(CLASS_NAME_STATIC);
+    this._queueCallback(() => {
+      this._element.classList.remove(CLASS_NAME_STATIC);
+    }, this._element);
+  }
+  _addEventListeners() {
+    // Handle native cancel event (Escape key) - only fires for modal dialogs
+    EventHandler.on(this._element, 'cancel', event => {
+      // Prevent native close behavior - we'll handle it
+      event.preventDefault();
+      if (!this._config.keyboard) {
+        this._triggerBackdropTransition();
+        return;
+      }
+      EventHandler.trigger(this._element, EVENT_CANCEL);
+      this.hide();
+    });
 
-    // Handle Escape
-    if (isEscapeEvent && instance._isShown()) {
+    // Handle Escape key for non-modal dialogs (native cancel doesn't fire for show())
+    EventHandler.on(this._element, 'keydown', event => {
+      if (event.key !== 'Escape' || this._config.modal) {
+        return;
+      }
       event.preventDefault();
-      event.stopPropagation();
+      if (!this._config.keyboard) {
+        return;
+      }
+      EventHandler.trigger(this._element, EVENT_CANCEL);
+      this.hide();
+    });
 
-      // If in a submenu, close just that submenu
-      const currentMenu = event.target.closest(SELECTOR_MENU);
-      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU);
-      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {
-        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper);
-        instance._closeSubmenu(currentMenu, parentSubmenuWrapper);
-        if (parentTrigger) {
-          parentTrigger.focus();
-        }
+    // Handle backdrop clicks (only applies to modal dialogs)
+    // Native <dialog> fires click on the dialog element when backdrop is clicked
+    EventHandler.on(this._element, 'click', event => {
+      // Only handle clicks directly on the dialog (backdrop area)
+      // Non-modal dialogs don't have a backdrop
+      if (event.target !== this._element || !this._config.modal) {
+        return;
+      }
+      if (this._config.backdrop === 'static') {
+        this._triggerBackdropTransition();
         return;
       }
 
-      // Otherwise close the whole dropdown
-      instance.hide();
-      getToggleButton.focus();
-    }
+      // Default: click backdrop to dismiss
+      this.hide();
+    });
   }
 }
 
@@ -4830,14 +5054,44 @@ class Dropdown extends BaseComponent {
  * Data API implementation
  */
 
-EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$5, Dropdown.dataApiKeydownHandler);
-EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
-EventHandler.on(document, EVENT_CLICK_DATA_API$2, Dropdown.clearMenus);
-EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
 EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$5, function (event) {
-  event.preventDefault();
-  Dropdown.getOrCreateInstance(this).toggle();
+  const target = SelectorEngine.getElementFromSelector(this);
+  if (['A', 'AREA'].includes(this.tagName)) {
+    event.preventDefault();
+  }
+  EventHandler.one(target, EVENT_SHOW$4, showEvent => {
+    if (showEvent.defaultPrevented) {
+      return;
+    }
+    EventHandler.one(target, EVENT_HIDDEN$4, () => {
+      if (isVisible(this)) {
+        this.focus();
+      }
+    });
+  });
+
+  // Get config from trigger's data attributes
+  const config = Manipulator.getDataAttributes(this);
+
+  // Check if trigger is inside an open dialog
+  const currentDialog = this.closest('dialog[open]');
+  const shouldSwap = currentDialog && currentDialog !== target;
+  if (shouldSwap) {
+    // Open new dialog first (its backdrop appears over current)
+    const newDialog = Dialog.getOrCreateInstance(target, config);
+    newDialog.show(this);
+
+    // Close the current dialog (no backdrop flash since new one is already open)
+    const currentInstance = Dialog.getInstance(currentDialog);
+    if (currentInstance) {
+      currentInstance.hide();
+    }
+    return;
+  }
+  const data = Dialog.getOrCreateInstance(target, config);
+  data.toggle(this);
 });
+enableDismissTrigger(Dialog);
 
 /**
  * --------------------------------------------------------------------------
@@ -4935,7 +5189,7 @@ class NavOverflow extends BaseComponent {
       item.dataset.bsNavOrder = index;
     }
 
-    // Create overflow dropdown if it doesn't exist
+    // Create overflow menu if it doesn't exist
     this._createOverflowMenu();
 
     // Setup resize observer
@@ -4952,16 +5206,14 @@ class NavOverflow extends BaseComponent {
       this._overflowMenu = SelectorEngine.findOne(SELECTOR_OVERFLOW_MENU, this._element);
       return;
     }
-
-    // Create the overflow dropdown item
     const overflowItem = document.createElement('li');
-    overflowItem.className = 'nav-item nav-overflow-item dropdown';
+    overflowItem.className = 'nav-item nav-overflow-item';
     overflowItem.innerHTML = `
-      <button class="nav-link nav-overflow-toggle dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-container="body" data-bs-strategy="fixed" aria-expanded="false">
+      <button class="nav-link nav-overflow-toggle" type="button" data-bs-toggle="menu" data-bs-placement="bottom-end" aria-expanded="false">
         <span class="nav-overflow-icon">${this._config.moreIcon}</span>
         <span class="nav-overflow-text">${this._config.moreText}</span>
       </button>
-      <ul class="${CLASS_NAME_OVERFLOW_MENU} dropdown-menu dropdown-menu-end"></ul>
+      <div class="${CLASS_NAME_OVERFLOW_MENU} menu"></div>
     `;
     this._element.append(overflowItem);
     this._overflowToggle = overflowItem.querySelector(SELECTOR_OVERFLOW_TOGGLE);
@@ -5040,26 +5292,19 @@ class NavOverflow extends BaseComponent {
     this._overflowMenu.innerHTML = '';
     this._overflowItems = [];
     for (const item of items) {
-      // Clone the nav link as a dropdown item
       const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item);
       if (!link) {
         continue;
       }
-      const dropdownItem = document.createElement('li');
       const clonedLink = link.cloneNode(true);
-      clonedLink.className = 'dropdown-item';
-
-      // Preserve active state
+      clonedLink.className = 'menu-item';
       if (link.classList.contains('active')) {
         clonedLink.classList.add('active');
       }
-
-      // Preserve disabled state
       if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {
         clonedLink.classList.add('disabled');
       }
-      dropdownItem.append(clonedLink);
-      this._overflowMenu.append(dropdownItem);
+      this._overflowMenu.append(clonedLink);
 
       // Hide original item
       item.classList.add(CLASS_NAME_HIDDEN);
@@ -7031,7 +7276,7 @@ const DATA_API_KEY = '.data-api';
 const EVENT_ACTIVATE = `activate${EVENT_KEY$3}`;
 const EVENT_CLICK$1 = `click${EVENT_KEY$3}`;
 const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$3}${DATA_API_KEY}`;
-const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
+const CLASS_NAME_MENU_ITEM = 'menu-item';
 const CLASS_NAME_ACTIVE$1 = 'active';
 const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
 const SELECTOR_TARGET_LINKS = '[href]';
@@ -7040,8 +7285,7 @@ const SELECTOR_NAV_LINKS = '.nav-link';
 const SELECTOR_NAV_ITEMS = '.nav-item';
 const SELECTOR_LIST_ITEMS = '.list-group-item';
 const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;
-const SELECTOR_DROPDOWN = '.dropdown';
-const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';
+const SELECTOR_MENU_TOGGLE$1 = '[data-bs-toggle="menu"]';
 const Default$2 = {
   rootMargin: '0px 0px -25%',
   smoothScroll: false,
@@ -7212,9 +7456,12 @@ class ScrollSpy extends BaseComponent {
     });
   }
   _activateParents(target) {
-    // Activate dropdown parents
-    if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
-      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);
+    // Activate menu parents
+    if (target.classList.contains(CLASS_NAME_MENU_ITEM)) {
+      const menuToggle = target.closest('.menu')?.previousElementSibling;
+      if (menuToggle?.matches(SELECTOR_MENU_TOGGLE$1)) {
+        menuToggle.classList.add(CLASS_NAME_ACTIVE$1);
+      }
       return;
     }
     for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {
@@ -7275,13 +7522,12 @@ const END_KEY = 'End';
 const CLASS_NAME_ACTIVE = 'active';
 const CLASS_NAME_FADE$1 = 'fade';
 const CLASS_NAME_SHOW$1 = 'show';
-const CLASS_DROPDOWN = 'dropdown';
-const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
-const SELECTOR_DROPDOWN_MENU = '.dropdown-menu';
-const NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;
+const SELECTOR_MENU_TOGGLE = '[data-bs-toggle="menu"]';
+const SELECTOR_MENU = '.menu';
+const NOT_SELECTOR_MENU_TOGGLE = `:not(${SELECTOR_MENU_TOGGLE})`;
 const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]';
 const SELECTOR_OUTER = '.nav-item, .list-group-item';
-const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;
+const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role="tab"]${NOT_SELECTOR_MENU_TOGGLE}`;
 const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; // TODO: could only be `tab` in v6
 const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE$1}`;
 const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`;
@@ -7348,7 +7594,7 @@ class Tab extends BaseComponent {
       }
       element.removeAttribute('tabindex');
       element.setAttribute('aria-selected', true);
-      this._toggleDropDown(element, true);
+      this._toggleMenu(element, true);
       EventHandler.trigger(element, EVENT_SHOWN$1, {
         relatedTarget: relatedElem
       });
@@ -7370,7 +7616,7 @@ class Tab extends BaseComponent {
       }
       element.setAttribute('aria-selected', false);
       element.setAttribute('tabindex', '-1');
-      this._toggleDropDown(element, false);
+      this._toggleMenu(element, false);
       EventHandler.trigger(element, EVENT_HIDDEN$1, {
         relatedTarget: relatedElem
       });
@@ -7437,20 +7683,18 @@ class Tab extends BaseComponent {
       this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`);
     }
   }
-  _toggleDropDown(element, open) {
+  _toggleMenu(element, open) {
     const outerElem = this._getOuterElement(element);
-    if (!outerElem.classList.contains(CLASS_DROPDOWN)) {
+    const menuToggle = SelectorEngine.findOne(SELECTOR_MENU_TOGGLE, outerElem);
+    if (!menuToggle) {
       return;
     }
-    const toggle = (selector, className) => {
-      const element = SelectorEngine.findOne(selector, outerElem);
-      if (element) {
-        element.classList.toggle(className, open);
-      }
-    };
-    toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);
-    toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);
-    outerElem.setAttribute('aria-expanded', open);
+    const menu = SelectorEngine.findOne(SELECTOR_MENU, outerElem);
+    menuToggle.classList.toggle(CLASS_NAME_ACTIVE, open);
+    if (menu) {
+      menu.classList.toggle(CLASS_NAME_SHOW$1, open);
+    }
+    menuToggle.setAttribute('aria-expanded', open);
   }
   _setAttributeIfNotExists(element, attribute, value) {
     if (!element.hasAttribute(attribute)) {
@@ -7742,5 +7986,5 @@ class Toggler extends BaseComponent {
 
 eventActionOnPlugin(Toggler, EVENT_CLICK, SELECTOR_DATA_TOGGLE, 'toggle');
 
-export { Alert, Button, Carousel, Collapse, Datepicker, Dialog, Dropdown, NavOverflow, Offcanvas, OtpInput, Popover, ScrollSpy, Strength, Tab, Toast, Toggler, Tooltip };
+export { Alert, Button, Carousel, Collapse, Combobox, Datepicker, Dialog, Menu, NavOverflow, Offcanvas, OtpInput, Popover, ScrollSpy, Strength, Tab, Toast, Toggler, Tooltip };
 //# sourceMappingURL=bootstrap.bundle.js.map
index fe11c2bfcfcd38e87a4b0ad5da102596648edcb6..fb96465d6068d46223b339d530a332d514f77812 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"bootstrap.bundle.js","sources":["../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/index.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/vanilla-calendar-pro/index.mjs","../../js/src/datepicker.js","../../js/src/dialog.js","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../js/src/util/floating-ui.js","../../js/src/dropdown.js","../../js/src/nav-overflow.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/util/scrollbar.js","../../js/src/offcanvas.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/toggler.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const evt = hydrateObj(new Event(event, { bubbles: true, cancelable: true }), args)\n    element.dispatchEvent(evt)\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n  for (const [key, value] of Object.entries(meta)) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n  if (selector && window.CSS && window.CSS.escape) {\n    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n    selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n  }\n\n  return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  if (isElement(object)) {\n    return object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(parseSelector(object))\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsie appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n  return typeof possibleCallback === 'function' ? possibleCallback.call(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getNextActiveElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  parseSelector,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const [property, expectedTypes] of Object.entries(configTypes)) {\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '6.0.0-alpha1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  // Private\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\n}\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children).filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  },\n\n  getSelectorFromElement(element) {\n    const selector = getSelector(element)\n\n    if (selector) {\n      return SelectorEngine.findOne(selector) ? selector : null\n    }\n\n    return null\n  },\n\n  getElementFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.findOne(selector) : null\n  },\n\n  getMultipleElementsFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.find(selector) : []\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nconst eventActionOnPlugin = (Plugin, onEvent, stringSelector, method, callback = null) => {\n  eventAction(`${onEvent}.${Plugin.NAME}`, stringSelector, data => {\n    const instances = data.targets.filter(Boolean).map(element => Plugin.getOrCreateInstance(element))\n    if (typeof callback === 'function') {\n      callback({ ...data, instances })\n    }\n\n    for (const instance of instances) {\n      instance[method]()\n    }\n  })\n}\n\nconst eventAction = (onEvent, stringSelector, callback) => {\n  const selector = `${stringSelector}:not(.disabled):not(:disabled)`\n  EventHandler.on(document, onEvent, selector, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    const selector = SelectorEngine.getSelectorFromElement(this)\n    const targets = selector ? SelectorEngine.find(selector) : [this]\n\n    callback({ targets, event })\n  })\n}\n\nexport {\n  enableDismissTrigger,\n  eventActionOnPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    this._deltaX = event.touches && event.touches.length > 1 ?\n      0 :\n      event.touches[0].clientX - this._deltaX\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n\n    if (absDeltaX <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltaX / this._deltaX\n\n    this._deltaX = 0\n\n    if (!direction) {\n      return\n    }\n\n    execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getNextActiveElement,\n  isRTL,\n  isVisible,\n  reflow,\n  triggerTransitionEnd\n} from './util/index.js'\nimport Swipe from './util/swipe.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover',\n  ride: false,\n  touch: true,\n  wrap: true\n}\n\nconst DefaultType = {\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)',\n  ride: '(boolean|string)',\n  touch: 'boolean',\n  wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._interval = null\n    this._activeElement = null\n    this._isSliding = false\n    this.touchTimeout = null\n    this._swipeHelper = null\n\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._addEventListeners()\n\n    if (this._config.ride === CLASS_NAME_CAROUSEL) {\n      this.cycle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause() {\n    if (this._isSliding) {\n      triggerTransitionEnd(this._element)\n    }\n\n    this._clearInterval()\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._updateInterval()\n\n    this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n  }\n\n  _maybeEnableCycle() {\n    if (!this._config.ride) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n      return\n    }\n\n    this.cycle()\n  }\n\n  to(index) {\n    const items = this._getItems()\n    if (index > items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    const activeIndex = this._getItemIndex(this._getActive())\n    if (activeIndex === index) {\n      return\n    }\n\n    const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n    this._slide(order, items[index])\n  }\n\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.defaultInterval = config.interval\n    return config\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    if (this._config.touch && Swipe.isSupported()) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n      EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n    }\n\n    const endCallBack = () => {\n      if (this._config.pause !== 'hover') {\n        return\n      }\n\n      // If it's a touch-enabled device, mouseenter/leave are fired as\n      // part of the mouse compatibility events on first tap - the carousel\n      // would stop cycling until user tapped out of it;\n      // here, we listen for touchend, explicitly pause the carousel\n      // (as if it's the second time we tap on it, mouseenter compat event\n      // is NOT fired) and after a timeout (to allow for mouse compatibility\n      // events to fire) we explicitly restart cycling\n\n      this.pause()\n      if (this.touchTimeout) {\n        clearTimeout(this.touchTimeout)\n      }\n\n      this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n    }\n\n    const swipeConfig = {\n      leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n      rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n      endCallback: endCallBack\n    }\n\n    this._swipeHelper = new Swipe(this._element, swipeConfig)\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(this._directionToOrder(direction))\n    }\n  }\n\n  _getItemIndex(element) {\n    return this._getItems().indexOf(element)\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n    activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n    activeIndicator.removeAttribute('aria-current')\n\n    const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n    if (newActiveIndicator) {\n      newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n      newActiveIndicator.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || this._getActive()\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    this._config.interval = elementInterval || this._config.defaultInterval\n  }\n\n  _slide(order, element = null) {\n    if (this._isSliding) {\n      return\n    }\n\n    const activeElement = this._getActive()\n    const isNext = order === ORDER_NEXT\n    const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n    if (nextElement === activeElement) {\n      return\n    }\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n\n    const triggerEvent = eventName => {\n      return EventHandler.trigger(this._element, eventName, {\n        relatedTarget: nextElement,\n        direction: this._orderToDirection(order),\n        from: this._getItemIndex(activeElement),\n        to: nextElementIndex\n      })\n    }\n\n    const slideEvent = triggerEvent(EVENT_SLIDE)\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      return\n    }\n\n    const isCycling = Boolean(this._interval)\n    this.pause()\n\n    this._isSliding = true\n\n    this._setActiveIndicatorElement(nextElementIndex)\n    this._activeElement = nextElement\n\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n    nextElement.classList.add(orderClassName)\n\n    reflow(nextElement)\n\n    activeElement.classList.add(directionalClassName)\n    nextElement.classList.add(directionalClassName)\n\n    const completeCallBack = () => {\n      nextElement.classList.remove(directionalClassName, orderClassName)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n      this._isSliding = false\n\n      triggerEvent(EVENT_SLID)\n    }\n\n    this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_SLIDE)\n  }\n\n  _getActive() {\n    return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  carousel.prev()\n  carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement,\n  reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = SelectorEngine.getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = SelectorEngine.getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  // Private\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = SelectorEngine.getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\nexport default Collapse\n","/*! name: vanilla-calendar-pro v3.1.0 | url: https://github.com/uvarov-frontend/vanilla-calendar-pro */\nvar __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__spreadValues=(e,t)=>{for(var n in t||(t={}))__hasOwnProp.call(t,n)&&__defNormalProp(e,n,t[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(t))__propIsEnum.call(t,n)&&__defNormalProp(e,n,t[n]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__publicField=(e,t,n)=>(__defNormalProp(e,\"symbol\"!=typeof t?t+\"\":t,n),n);const errorMessages={notFoundSelector:e=>`${e} is not found, check the first argument passed to new Calendar.`,notInit:'The calendar has not been initialized, please initialize it using the \"init()\" method first.',notLocale:\"You specified an incorrect language label or did not specify the required number of values ​​for «locale.weekdays» or «locale.months».\",incorrectTime:\"The value of the time property can be: false, 12 or 24.\",incorrectMonthsCount:\"For the «multiple» calendar type, the «displayMonthsCount» parameter can have a value from 2 to 12, and for all others it cannot be greater than 1.\"},setContext=(e,t,n)=>{e.context[t]=n},destroy=e=>{var t,n,a,o,l;if(!e.context.isInit)throw new Error(errorMessages.notInit);e.inputMode?(null==(t=e.context.mainElement.parentElement)||t.removeChild(e.context.mainElement),null==(a=null==(n=e.context.inputElement)?void 0:n.replaceWith)||a.call(n,e.context.originalElement),setContext(e,\"inputElement\",void 0)):null==(l=(o=e.context.mainElement).replaceWith)||l.call(o,e.context.originalElement),setContext(e,\"mainElement\",e.context.originalElement),e.onDestroy&&e.onDestroy(e)},skipOpenOnFocus=new WeakSet,shouldSkipOpenOnFocus=e=>skipOpenOnFocus.has(e),setSkipOpenOnFocus=e=>{skipOpenOnFocus.add(e)},clearSkipOpenOnFocus=e=>{skipOpenOnFocus.delete(e)},PREV_TABINDEX_ATTR=\"data-vc-prev-tabindex\",isFocusable=e=>e.tabIndex>=0&&!e.hasAttribute(\"disabled\")&&\"true\"!==e.getAttribute(\"aria-disabled\"),storePrevTabIndex=e=>{if(e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(\"tabindex\");e.setAttribute(PREV_TABINDEX_ATTR,null!=t?t:\"\")},restorePrevTabIndex=e=>{if(!e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(PREV_TABINDEX_ATTR);\"\"===t||null===t?e.removeAttribute(\"tabindex\"):e.setAttribute(\"tabindex\",t),e.removeAttribute(PREV_TABINDEX_ATTR)},disableTabbing=e=>{isFocusable(e)&&(storePrevTabIndex(e),e.tabIndex=-1);const t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>isFocusable(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;t.nextNode();){const e=t.currentNode;storePrevTabIndex(e),e.tabIndex=-1}},restoreTabbing=e=>{restorePrevTabIndex(e),e.querySelectorAll(`[${PREV_TABINDEX_ATTR}]`).forEach(restorePrevTabIndex)},hide=e=>{if(e.context.isShowInInputMode&&e.context.currentType){if(e.context.mainElement.dataset.vcCalendarHidden=\"\",setContext(e,\"isShowInInputMode\",!1),e.inputMode&&disableTabbing(e.context.mainElement),e.context.cleanupHandlers[0]&&(e.context.cleanupHandlers.forEach((e=>e())),setContext(e,\"cleanupHandlers\",[])),e.inputMode&&e.context.inputElement&&e.context.mainElement.contains(document.activeElement)){(\"function\"==typeof e.openOnFocus||!0===e.openOnFocus)&&setSkipOpenOnFocus(e),e.context.inputElement.focus()}e.onHide&&e.onHide(e)}};function getOffset(e){if(!e||!e.getBoundingClientRect)return{top:0,bottom:0,left:0,right:0};const t=e.getBoundingClientRect(),n=document.documentElement;return{bottom:t.bottom,right:t.right,top:t.top+window.scrollY-n.clientTop,left:t.left+window.scrollX-n.clientLeft}}function getViewportDimensions(){return{vw:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),vh:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}}function getWindowScrollPosition(){return{left:window.scrollX||document.documentElement.scrollLeft||0,top:window.scrollY||document.documentElement.scrollTop||0}}function calculateAvailableSpace(e){const{top:t,left:n}=getWindowScrollPosition(),{top:a,left:o}=getOffset(e),{vh:l,vw:s}=getViewportDimensions(),i=a-t,r=o-n;return{top:i,bottom:l-(i+e.clientHeight),left:r,right:s-(r+e.clientWidth)}}function getAvailablePosition(e,t,n=5){const a={top:!0,bottom:!0,left:!0,right:!0},o=[];if(!t||!e)return{canShow:a,parentPositions:o};const{bottom:l,top:s}=calculateAvailableSpace(e),{top:i,left:r}=getOffset(e),{height:c,width:d}=t.getBoundingClientRect(),{vh:u,vw:m}=getViewportDimensions(),p=m/2,h=u/2;return[{condition:i<h,position:\"top\"},{condition:i>h,position:\"bottom\"},{condition:r<p,position:\"left\"},{condition:r>p,position:\"right\"}].forEach((({condition:e,position:t})=>{e&&o.push(t)})),Object.assign(a,{top:c<=s-n,bottom:c<=l-n,left:d<=r,right:d<=m-r}),{canShow:a,parentPositions:o}}const handleDay=(e,t,n,a)=>{var o;const l=a.querySelector(`[data-vc-date=\"${t}\"]`),s=null==l?void 0:l.querySelector(\"[data-vc-date-btn]\");if(!l||!s)return;if((null==n?void 0:n.modifier)&&s.classList.add(...n.modifier.trim().split(\" \")),!(null==n?void 0:n.html))return;const i=document.createElement(\"div\");i.className=e.styles.datePopup,i.dataset.vcDatePopup=\"\",i.innerHTML=e.sanitizerHTML(n.html),s.ariaExpanded=\"true\",s.ariaLabel=`${s.ariaLabel}, ${null==(o=null==i?void 0:i.textContent)?void 0:o.replace(/^\\s+|\\s+(?=\\s)|\\s+$/g,\"\").replace(/&nbsp;/g,\" \")}`,l.appendChild(i),requestAnimationFrame((()=>{if(!i)return;const{canShow:e}=getAvailablePosition(l,i),t=e.bottom?l.offsetHeight:-i.offsetHeight,n=e.left&&!e.right?l.offsetWidth-i.offsetWidth/2:!e.left&&e.right?i.offsetWidth/2:0;Object.assign(i.style,{left:`${n}px`,top:`${t}px`})}))},createDatePopup=(e,t)=>{var n;e.popups&&(null==(n=Object.entries(e.popups))||n.forEach((([n,a])=>handleDay(e,n,a,t))))},getDate=e=>new Date(`${e}T00:00:00`),getDateString=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,\"0\")}-${String(e.getDate()).padStart(2,\"0\")}`,parseDates=e=>e.reduce(((e,t)=>{if(t instanceof Date||\"number\"==typeof t){const n=t instanceof Date?t:new Date(t);e.push(n.toISOString().substring(0,10))}else t.match(/^(\\d{4}-\\d{2}-\\d{2})$/g)?e.push(t):t.replace(/(\\d{4}-\\d{2}-\\d{2}).*?(\\d{4}-\\d{2}-\\d{2})/g,((t,n,a)=>{const o=getDate(n),l=getDate(a),s=new Date(o.getTime());for(;s<=l;s.setDate(s.getDate()+1))e.push(getDateString(s));return t}));return e}),[]),updateAttribute=(e,t,n,a=\"\")=>{t?e.setAttribute(n,a):e.getAttribute(n)===a&&e.removeAttribute(n)},setDateModifier=(e,t,n,a,o,l,s)=>{var i,r,c,d;const u=getDate(e.context.displayDateMin)>getDate(l)||getDate(e.context.displayDateMax)<getDate(l)||(null==(i=e.context.disableDates)?void 0:i.includes(l))||!e.selectionMonthsMode&&\"current\"!==s||!e.selectionYearsMode&&getDate(l).getFullYear()!==t;updateAttribute(n,u,\"data-vc-date-disabled\"),a&&updateAttribute(a,u,\"aria-disabled\",\"true\"),a&&updateAttribute(a,u,\"tabindex\",\"-1\"),updateAttribute(n,!e.disableToday&&e.context.dateToday===l,\"data-vc-date-today\"),updateAttribute(n,!e.disableToday&&e.context.dateToday===l,\"aria-current\",\"date\"),updateAttribute(n,null==(r=e.selectedWeekends)?void 0:r.includes(o),\"data-vc-date-weekend\");const m=(null==(c=e.selectedHolidays)?void 0:c[0])?parseDates(e.selectedHolidays):[];if(updateAttribute(n,m.includes(l),\"data-vc-date-holiday\"),(null==(d=e.context.selectedDates)?void 0:d.includes(l))?(n.setAttribute(\"data-vc-date-selected\",\"\"),a&&a.setAttribute(\"aria-selected\",\"true\"),e.context.selectedDates.length>1&&\"multiple-ranged\"===e.selectionDatesMode&&(e.context.selectedDates[0]===l&&e.context.selectedDates[e.context.selectedDates.length-1]===l?n.setAttribute(\"data-vc-date-selected\",\"first-and-last\"):e.context.selectedDates[0]===l?n.setAttribute(\"data-vc-date-selected\",\"first\"):e.context.selectedDates[e.context.selectedDates.length-1]===l&&n.setAttribute(\"data-vc-date-selected\",\"last\"),e.context.selectedDates[0]!==l&&e.context.selectedDates[e.context.selectedDates.length-1]!==l&&n.setAttribute(\"data-vc-date-selected\",\"middle\"))):n.hasAttribute(\"data-vc-date-selected\")&&(n.removeAttribute(\"data-vc-date-selected\"),a&&a.removeAttribute(\"aria-selected\")),!e.context.disableDates.includes(l)&&e.enableEdgeDatesOnly&&e.context.selectedDates.length>1&&\"multiple-ranged\"===e.selectionDatesMode){const t=getDate(e.context.selectedDates[0]),a=getDate(e.context.selectedDates[e.context.selectedDates.length-1]),o=getDate(l);updateAttribute(n,o>t&&o<a,\"data-vc-date-selected\",\"middle\")}},getLocaleString=(e,t,n)=>new Date(`${e}T00:00:00.000Z`).toLocaleString(t,n),getWeekNumber=(e,t)=>{const n=getDate(e),a=(n.getDay()-t+7)%7;n.setDate(n.getDate()+4-a);const o=new Date(n.getFullYear(),0,1),l=Math.ceil(((+n-+o)/864e5+1)/7);return{year:n.getFullYear(),week:l}},addWeekNumberForDate=(e,t,n)=>{const a=getWeekNumber(n,e.firstWeekday);a&&(t.dataset.vcDateWeekNumber=String(a.week))},setDaysAsDisabled=(e,t,n)=>{var a,o,l,s,i;const r=null==(a=e.disableWeekdays)?void 0:a.includes(n),c=e.disableAllDates&&!!(null==(o=e.context.enableDates)?void 0:o[0]);!r&&!c||(null==(l=e.context.enableDates)?void 0:l.includes(t))||(null==(s=e.context.disableDates)?void 0:s.includes(t))||(e.context.disableDates.push(t),null==(i=e.context.disableDates)||i.sort(((e,t)=>+new Date(e)-+new Date(t))))},createDate=(e,t,n,a,o,l)=>{const s=getDate(o).getDay(),i=\"string\"==typeof e.locale&&e.locale.length?e.locale:\"en\",r=document.createElement(\"div\");let c;r.className=e.styles.date,r.dataset.vcDate=o,r.dataset.vcDateMonth=l,r.dataset.vcDateWeekDay=String(s),r.role=\"gridcell\",(\"current\"===l||e.displayDatesOutside)&&(c=document.createElement(\"button\"),c.className=e.styles.dateBtn,c.type=\"button\",c.ariaLabel=getLocaleString(o,i,{dateStyle:\"long\",timeZone:\"UTC\"}),c.dataset.vcDateBtn=\"\",c.innerText=String(a),r.appendChild(c)),e.enableWeekNumbers&&addWeekNumberForDate(e,r,o),setDaysAsDisabled(e,o,s),setDateModifier(e,t,r,c,s,o,l),n.addDate(r),e.onCreateDateEls&&e.onCreateDateEls(e,r)},createDatesFromCurrentMonth=(e,t,n,a,o)=>{for(let l=1;l<=n;l++){const n=new Date(a,o,l);createDate(e,a,t,l,getDateString(n),\"current\")}},createDatesFromNextMonth=(e,t,n,a,o)=>{const l=o+1===12?a+1:a,s=o+1===12?\"01\":o+2<10?`0${o+2}`:o+2;for(let o=1;o<=n;o++){const n=o<10?`0${o}`:String(o);createDate(e,a,t,o,`${l}-${s}-${n}`,\"next\")}},createDatesFromPrevMonth=(e,t,n,a,o)=>{let l=new Date(n,a,0).getDate()-(o-1);const s=0===a?n-1:n,i=0===a?12:a<10?`0${a}`:a;for(let a=o;a>0;a--,l++){createDate(e,n,t,l,`${s}-${i}-${l}`,\"prev\")}},createWeekNumbers=(e,t,n,a,o)=>{if(!e.enableWeekNumbers)return;a.textContent=\"\";const l=document.createElement(\"b\");l.className=e.styles.weekNumbersTitle,l.innerText=\"#\",l.dataset.vcWeekNumbers=\"title\",a.appendChild(l);const s=document.createElement(\"div\");s.className=e.styles.weekNumbersContent,s.dataset.vcWeekNumbers=\"content\",a.appendChild(s);const i=document.createElement(\"button\");i.type=\"button\",i.className=e.styles.weekNumber;const r=o.querySelectorAll(\"[data-vc-date]\"),c=Math.ceil((t+n)/7);for(let t=0;t<c;t++){const n=r[0===t?6:7*t].dataset.vcDate,a=getWeekNumber(n,e.firstWeekday);if(!a)return;const o=i.cloneNode(!0);o.innerText=String(a.week),o.dataset.vcWeekNumber=String(a.week),o.dataset.vcWeekYear=String(a.year),o.role=\"rowheader\",o.ariaLabel=`${a.week}`,s.appendChild(o)}},createDates=e=>{const t=new Date(e.context.selectedYear,e.context.selectedMonth,1),n=e.context.mainElement.querySelectorAll('[data-vc=\"dates\"]'),a=e.context.mainElement.querySelectorAll('[data-vc-week=\"numbers\"]');n.forEach(((n,o)=>{e.selectionDatesMode||(n.dataset.vcDatesDisabled=\"\"),n.textContent=\"\";const l=new Date(t);l.setMonth(l.getMonth()+o);const s=l.getMonth(),i=l.getFullYear(),r=(new Date(i,s,1).getDay()-e.firstWeekday+7)%7,c=new Date(i,s+1,0).getDate(),d=r+c,u=Math.ceil(d/7),m=7*u-d,p=[];for(let t=0;t<u;t++){const t=document.createElement(\"div\");t.className=e.styles.datesRow,t.setAttribute(\"data-vc-dates\",\"row\"),t.setAttribute(\"role\",\"row\"),p.push(t)}let h=0,v=0;const g={addDate:e=>{p[h].appendChild(e),v++,v>=7&&(h++,v=0)}};createDatesFromPrevMonth(e,g,i,s,r),createDatesFromCurrentMonth(e,g,c,i,s),createDatesFromNextMonth(e,g,m,i,s);for(const e of p)n.appendChild(e);createDatePopup(e,n),createWeekNumbers(e,r,c,a[o],n)}))},layoutDefault=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [month] />\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n    <#ArrowNext [month] />\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <#WeekNumbers />\\n    <div class=\"${e.styles.content}\" data-vc=\"content\" role=\"grid\">\\n      <#Week />\\n      <#Dates />\\n      <#DateRangeTooltip />\\n    </div>\\n  </div>\\n  <#ControlTime />\\n`,layoutMonths=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <div class=\"${e.styles.content}\" data-vc=\"content\">\\n      <#Months />\\n    </div>\\n  </div>\\n`,layoutMultiple=e=>`\\n  <div class=\"${e.styles.controls}\" data-vc=\"controls\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [month] />\\n    <#ArrowNext [month] />\\n  </div>\\n  <div class=\"${e.styles.grid}\" data-vc=\"grid\">\\n    <#Multiple>\\n      <div class=\"${e.styles.column}\" data-vc=\"column\" role=\"region\">\\n        <div class=\"${e.styles.header}\" data-vc=\"header\">\\n          <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n            <#Month />\\n            <#Year />\\n          </div>\\n        </div>\\n        <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n          <#WeekNumbers />\\n          <div class=\"${e.styles.content}\" data-vc=\"content\" role=\"grid\">\\n            <#Week />\\n            <#Dates />\\n          </div>\\n        </div>\\n      </div>\\n    <#/Multiple>\\n    <#DateRangeTooltip />\\n  </div>\\n  <#ControlTime />\\n`,layoutYears=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [year] />\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n    <#ArrowNext [year] />\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <div class=\"${e.styles.content}\" data-vc=\"content\">\\n      <#Years />\\n    </div>\\n  </div>\\n`,ArrowNext=(e,t)=>`<button type=\"button\" class=\"${e.styles.arrowNext}\" data-vc-arrow=\"next\" aria-label=\"${e.labels.arrowNext[t]}\"></button>`,ArrowPrev=(e,t)=>`<button type=\"button\" class=\"${e.styles.arrowPrev}\" data-vc-arrow=\"prev\" aria-label=\"${e.labels.arrowPrev[t]}\"></button>`,ControlTime=e=>e.selectionTimeMode?`<div class=\"${e.styles.time}\" data-vc=\"time\" role=\"group\" aria-label=\"${e.labels.selectingTime}\"></div>`:\"\",DateRangeTooltip=e=>e.onCreateDateRangeTooltip?`<div class=\"${e.styles.dateRangeTooltip}\" data-vc-date-range-tooltip=\"hidden\"></div>`:\"\",Dates=e=>`<div class=\"${e.styles.dates}\" data-vc=\"dates\" aria-live=\"assertive\" aria-label=\"${e.labels.dates}\" ${\"multiple\"===e.type?\"aria-multiselectable\":\"\"}></div>`,Month=e=>`<button type=\"button\" class=\"${e.styles.month}\" data-vc=\"month\"></button>`,Months=e=>`<div class=\"${e.styles.months}\" data-vc=\"months\" role=\"grid\" aria-live=\"assertive\" aria-label=\"${e.labels.months}\"></div>`,Week=e=>`<div class=\"${e.styles.week}\" data-vc=\"week\" role=\"row\" aria-label=\"${e.labels.week}\"></div>`,WeekNumbers=e=>e.enableWeekNumbers?`<div class=\"${e.styles.weekNumbers}\" data-vc-week=\"numbers\" role=\"row\" aria-label=\"${e.labels.weekNumber}\"></div>`:\"\",Year=e=>`<button type=\"button\" class=\"${e.styles.year}\" data-vc=\"year\"></button>`,Years=e=>`<div class=\"${e.styles.years}\" data-vc=\"years\" role=\"grid\" aria-live=\"assertive\" aria-label=\"${e.labels.years}\"></div>`,components={ArrowNext:ArrowNext,ArrowPrev:ArrowPrev,ControlTime:ControlTime,Dates:Dates,DateRangeTooltip:DateRangeTooltip,Month:Month,Months:Months,Week:Week,WeekNumbers:WeekNumbers,Year:Year,Years:Years},getComponent=e=>components[e],parseLayout=(e,t)=>t.replace(/[\\n\\t]/g,\"\").replace(/<#(?!\\/?Multiple)(.*?)>/g,((t,n)=>{const a=(n.match(/\\[(.*?)\\]/)||[])[1],o=n.replace(/[/\\s\\n\\t]|\\[(.*?)\\]/g,\"\"),l=getComponent(o),s=l?l(e,null!=a?a:null):\"\";return e.sanitizerHTML(s)})).replace(/[\\n\\t]/g,\"\"),parseMultipleLayout=(e,t)=>t.replace(new RegExp(\"<#Multiple>(.*?)<#\\\\/Multiple>\",\"gs\"),((t,n)=>{const a=Array(e.context.displayMonthsCount).fill(n).join(\"\");return e.sanitizerHTML(a)})).replace(/[\\n\\t]/g,\"\"),createLayouts=(e,t)=>{const n={default:layoutDefault,month:layoutMonths,year:layoutYears,multiple:layoutMultiple};if(Object.keys(n).forEach((t=>{const a=t;e.layouts[a].length||(e.layouts[a]=n[a](e))})),e.context.mainElement.className=e.styles.calendar,e.context.mainElement.dataset.vc=\"calendar\",e.context.mainElement.dataset.vcType=e.context.currentType,e.context.mainElement.role=\"application\",e.context.mainElement.tabIndex=0,e.context.mainElement.ariaLabel=e.labels.application,\"multiple\"!==e.context.currentType){if(\"multiple\"===e.type&&t){const n=e.context.mainElement.querySelector('[data-vc=\"controls\"]'),a=e.context.mainElement.querySelector('[data-vc=\"grid\"]'),o=t.closest('[data-vc=\"column\"]');return n&&n.remove(),a&&(a.dataset.vcGrid=\"hidden\"),o&&(o.dataset.vcColumn=e.context.currentType),void(o&&(o.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))))}e.context.mainElement.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))}else e.context.mainElement.innerHTML=e.sanitizerHTML(parseMultipleLayout(e,parseLayout(e,e.layouts[e.context.currentType])))},setVisibilityArrows=(e,t,n,a)=>{e.style.visibility=n?\"hidden\":\"\",t.style.visibility=a?\"hidden\":\"\"},handleDefaultType=(e,t,n)=>{const a=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1))),o=new Date(a.getTime()),l=new Date(a.getTime());o.setMonth(o.getMonth()-e.monthsToSwitch),l.setMonth(l.getMonth()+e.monthsToSwitch);const s=getDate(e.context.dateMin),i=getDate(e.context.dateMax);e.selectionYearsMode||(s.setFullYear(a.getFullYear()),i.setFullYear(a.getFullYear()));const r=!e.selectionMonthsMode||o.getFullYear()<s.getFullYear()||o.getFullYear()===s.getFullYear()&&o.getMonth()<s.getMonth(),c=!e.selectionMonthsMode||l.getFullYear()>i.getFullYear()||l.getFullYear()===i.getFullYear()&&l.getMonth()>i.getMonth()-(e.context.displayMonthsCount-1);setVisibilityArrows(t,n,r,c)},handleYearType=(e,t,n)=>{const a=getDate(e.context.dateMin),o=getDate(e.context.dateMax),l=!!(a.getFullYear()&&e.context.displayYear-7<=a.getFullYear()),s=!!(o.getFullYear()&&e.context.displayYear+7>=o.getFullYear());setVisibilityArrows(t,n,l,s)},visibilityArrows=e=>{if(\"month\"===e.context.currentType)return;const t=e.context.mainElement.querySelector('[data-vc-arrow=\"prev\"]'),n=e.context.mainElement.querySelector('[data-vc-arrow=\"next\"]');if(!t||!n)return;({default:()=>handleDefaultType(e,t,n),year:()=>handleYearType(e,t,n)})[\"multiple\"===e.context.currentType?\"default\":e.context.currentType]()},visibilityHandler=(e,t,n,a,o)=>{const l=new Date(a.setFullYear(e.context.selectedYear,e.context.selectedMonth+n)).getFullYear(),s=new Date(a.setMonth(e.context.selectedMonth+n)).getMonth(),i=e.context.locale.months.long[s],r=t.closest('[data-vc=\"column\"]');r&&(r.ariaLabel=`${i} ${l}`);const c={month:{id:s,label:i},year:{id:l,label:l}};t.innerText=String(c[o].label),t.dataset[`vc${o.charAt(0).toUpperCase()+o.slice(1)}`]=String(c[o].id),t.ariaLabel=`${e.labels[o]} ${c[o].label}`;const d={month:e.selectionMonthsMode,year:e.selectionYearsMode},u=!1===d[o]||\"only-arrows\"===d[o];u&&(t.tabIndex=-1),t.disabled=u},visibilityTitle=e=>{const t=e.context.mainElement.querySelectorAll('[data-vc=\"month\"]'),n=e.context.mainElement.querySelectorAll('[data-vc=\"year\"]'),a=new Date(e.context.selectedYear,e.context.selectedMonth,1);[t,n].forEach((t=>null==t?void 0:t.forEach(((t,n)=>visibilityHandler(e,t,n,a,t.dataset.vc)))))},setYearModifier=(e,t,n,a,o)=>{var l;const s={month:\"[data-vc-months-month]\",year:\"[data-vc-years-year]\"},i={month:{selected:\"data-vc-months-month-selected\",aria:\"aria-selected\",value:\"vcMonthsMonth\",selectedProperty:\"selectedMonth\"},year:{selected:\"data-vc-years-year-selected\",aria:\"aria-selected\",value:\"vcYearsYear\",selectedProperty:\"selectedYear\"}};o&&(null==(l=e.context.mainElement.querySelectorAll(s[n]))||l.forEach((e=>{e.removeAttribute(i[n].selected),e.removeAttribute(i[n].aria)})),setContext(e,i[n].selectedProperty,Number(t.dataset[i[n].value])),visibilityTitle(e),\"year\"===n&&visibilityArrows(e)),a&&(t.setAttribute(i[n].selected,\"\"),t.setAttribute(i[n].aria,\"true\"))},getColumnID=(e,t)=>{var n;if(\"multiple\"!==e.type)return{currentValue:null,columnID:0};const a=e.context.mainElement.querySelectorAll('[data-vc=\"column\"]'),o=Array.from(a).findIndex((e=>e.closest(`[data-vc-column=\"${t}\"]`)));return{currentValue:o>=0?Number(null==(n=a[o].querySelector(`[data-vc=\"${t}\"]`))?void 0:n.getAttribute(`data-vc-${t}`)):null,columnID:Math.max(o,0)}},createMonthEl=(e,t,n,a,o,l,s)=>{const i=t.cloneNode(!1);return i.className=e.styles.monthsMonth,i.innerText=a,i.ariaLabel=o,i.role=\"gridcell\",i.dataset.vcMonthsMonth=`${s}`,l&&(i.ariaDisabled=\"true\"),l&&(i.tabIndex=-1),i.disabled=l,setYearModifier(e,i,\"month\",n===s,!1),i},createMonths=(e,t)=>{var n,a;const o=null==(n=null==t?void 0:t.closest('[data-vc=\"header\"]'))?void 0:n.querySelector('[data-vc=\"year\"]'),l=o?Number(o.dataset.vcYear):e.context.selectedYear,s=(null==t?void 0:t.dataset.vcMonth)?Number(t.dataset.vcMonth):e.context.selectedMonth;setContext(e,\"currentType\",\"month\"),createLayouts(e,t),visibilityTitle(e);const i=e.context.mainElement.querySelector('[data-vc=\"months\"]');if(!e.selectionMonthsMode||!i)return;const r=e.monthsToSwitch>1?e.context.locale.months.long.map(((t,n)=>s-e.monthsToSwitch*n)).concat(e.context.locale.months.long.map(((t,n)=>s+e.monthsToSwitch*n))).filter((e=>e>=0&&e<=12)):Array.from(Array(12).keys()),c=document.createElement(\"button\");c.type=\"button\";for(let t=0;t<12;t++){const n=getDate(e.context.dateMin),a=getDate(e.context.dateMax),o=e.context.displayMonthsCount-1,{columnID:d}=getColumnID(e,\"month\"),u=l<=n.getFullYear()&&t<n.getMonth()+d||l>=a.getFullYear()&&t>a.getMonth()-o+d||l>a.getFullYear()||t!==s&&!r.includes(t),m=createMonthEl(e,c,s,e.context.locale.months.short[t],e.context.locale.months.long[t],u,t);i.appendChild(m),e.onCreateMonthEls&&e.onCreateMonthEls(e,m)}null==(a=e.context.mainElement.querySelector(\"[data-vc-months-month]:not([disabled])\"))||a.focus()},TimeInput=(e,t,n,a,o)=>`\\n  <label class=\"${t}\" data-vc-time-input=\"${e}\">\\n    <input type=\"text\" name=\"${e}\" maxlength=\"2\" aria-label=\"${n[`input${e.charAt(0).toUpperCase()+e.slice(1)}`]}\" value=\"${a}\" ${o?\"disabled\":\"\"}>\\n  </label>\\n`,TimeRange=(e,t,n,a,o,l,s)=>`\\n  <label class=\"${t}\" data-vc-time-range=\"${e}\">\\n    <input type=\"range\" name=\"${e}\" min=\"${a}\" max=\"${o}\" step=\"${l}\" aria-label=\"${n[`range${e.charAt(0).toUpperCase()+e.slice(1)}`]}\" value=\"${s}\">\\n  </label>\\n`,handleActions=(e,t,n,a)=>{({hour:()=>setContext(e,\"selectedHours\",n),minute:()=>setContext(e,\"selectedMinutes\",n)})[a](),setContext(e,\"selectedTime\",`${e.context.selectedHours}:${e.context.selectedMinutes}${e.context.selectedKeeping?` ${e.context.selectedKeeping}`:\"\"}`),e.onChangeTime&&e.onChangeTime(e,t,!1),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t)},transformTime24=(e,t)=>{var n;return(null==(n={0:{AM:\"00\",PM:\"12\"},1:{AM:\"01\",PM:\"13\"},2:{AM:\"02\",PM:\"14\"},3:{AM:\"03\",PM:\"15\"},4:{AM:\"04\",PM:\"16\"},5:{AM:\"05\",PM:\"17\"},6:{AM:\"06\",PM:\"18\"},7:{AM:\"07\",PM:\"19\"},8:{AM:\"08\",PM:\"20\"},9:{AM:\"09\",PM:\"21\"},10:{AM:\"10\",PM:\"22\"},11:{AM:\"11\",PM:\"23\"},12:{AM:\"00\",PM:\"12\"}}[Number(e)])?void 0:n[t])||String(e)},handleClickKeepingTime=(e,t,n,a,o)=>{const l=l=>{const s=\"AM\"===e.context.selectedKeeping?\"PM\":\"AM\",i=transformTime24(e.context.selectedHours,s);Number(i)<=a&&Number(i)>=o?(setContext(e,\"selectedKeeping\",s),n.value=i,handleActions(e,l,e.context.selectedHours,\"hour\"),t.ariaLabel=`${e.labels.btnKeeping} ${e.context.selectedKeeping}`,t.innerText=e.context.selectedKeeping):e.onChangeTime&&e.onChangeTime(e,l,!0)};return t.addEventListener(\"click\",l),()=>{t.removeEventListener(\"click\",l)}},transformTime12=e=>({0:\"12\",13:\"01\",14:\"02\",15:\"03\",16:\"04\",17:\"05\",18:\"06\",19:\"07\",20:\"08\",21:\"09\",22:\"10\",23:\"11\"}[Number(e)]||String(e)),updateInputAndRange=(e,t,n,a)=>{e.value=n,t.value=a},updateKeepingTime$1=(e,t,n)=>{t&&n&&(setContext(e,\"selectedKeeping\",n),t.innerText=n)},handleInput$1=(e,t,n,a,o,l,s)=>{const i={hour:(i,r,c)=>{if(!e.selectionTimeMode)return;({12:()=>{if(!e.context.selectedKeeping)return;const d=Number(transformTime24(r,e.context.selectedKeeping));if(!(d<=l&&d>=s))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,transformTime12(r),transformTime24(r,e.context.selectedKeeping)),i>12&&updateKeepingTime$1(e,a,\"PM\"),handleActions(e,c,transformTime12(r),o)},24:()=>{if(!(i<=l&&i>=s))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,r,r),handleActions(e,c,r,o)}})[e.selectionTimeMode]()},minute:(a,i,r)=>{if(!(a<=l&&a>=s))return n.value=e.context.selectedMinutes,void(e.onChangeTime&&e.onChangeTime(e,r,!0));n.value=i,t.value=i,handleActions(e,r,i,o)}},r=e=>{const t=Number(n.value),a=n.value.padStart(2,\"0\");i[o]&&i[o](t,a,e)};return n.addEventListener(\"change\",r),()=>{n.removeEventListener(\"change\",r)}},updateInputAndTime=(e,t,n,a,o)=>{t.value=o,handleActions(e,n,o,a)},updateKeepingTime=(e,t,n)=>{t&&(setContext(e,\"selectedKeeping\",n),t.innerText=n)},handleRange=(e,t,n,a,o)=>{const l=l=>{const s=Number(t.value),i=t.value.padStart(2,\"0\"),r=\"hour\"===o,c=24===e.selectionTimeMode,d=s>0&&s<12;r&&!c&&updateKeepingTime(e,a,0===s||d?\"AM\":\"PM\"),updateInputAndTime(e,n,l,o,!r||c||d?i:transformTime12(t.value))};return t.addEventListener(\"input\",l),()=>{t.removeEventListener(\"input\",l)}},handleMouseOver=e=>e.setAttribute(\"data-vc-input-focus\",\"\"),handleMouseOut=e=>e.removeAttribute(\"data-vc-input-focus\"),handleTime=(e,t)=>{const n=t.querySelector('[data-vc-time-range=\"hour\"] input[name=\"hour\"]'),a=t.querySelector('[data-vc-time-range=\"minute\"] input[name=\"minute\"]'),o=t.querySelector('[data-vc-time-input=\"hour\"] input[name=\"hour\"]'),l=t.querySelector('[data-vc-time-input=\"minute\"] input[name=\"minute\"]'),s=t.querySelector('[data-vc-time=\"keeping\"]');if(!(n&&a&&o&&l))return;const i=e=>{e.target===n&&handleMouseOver(o),e.target===a&&handleMouseOver(l)},r=e=>{e.target===n&&handleMouseOut(o),e.target===a&&handleMouseOut(l)};return t.addEventListener(\"mouseover\",i),t.addEventListener(\"mouseout\",r),handleInput$1(e,n,o,s,\"hour\",e.timeMaxHour,e.timeMinHour),handleInput$1(e,a,l,s,\"minute\",e.timeMaxMinute,e.timeMinMinute),handleRange(e,n,o,s,\"hour\"),handleRange(e,a,l,s,\"minute\"),s&&handleClickKeepingTime(e,s,n,e.timeMaxHour,e.timeMinHour),()=>{t.removeEventListener(\"mouseover\",i),t.removeEventListener(\"mouseout\",r)}},createTime=e=>{const t=e.context.mainElement.querySelector('[data-vc=\"time\"]');if(!e.selectionTimeMode||!t)return;const[n,a]=[e.timeMinHour,e.timeMaxHour],[o,l]=[e.timeMinMinute,e.timeMaxMinute],s=e.context.selectedKeeping?transformTime24(e.context.selectedHours,e.context.selectedKeeping):e.context.selectedHours,i=\"range\"===e.timeControls;var r;t.innerHTML=e.sanitizerHTML(`\\n    <div class=\"${e.styles.timeContent}\" data-vc-time=\"content\">\\n      ${TimeInput(\"hour\",e.styles.timeHour,e.labels,e.context.selectedHours,i)}\\n      ${TimeInput(\"minute\",e.styles.timeMinute,e.labels,e.context.selectedMinutes,i)}\\n      ${12===e.selectionTimeMode?(r=e.context.selectedKeeping,`<button type=\"button\" class=\"${e.styles.timeKeeping}\" aria-label=\"${e.labels.btnKeeping} ${r}\" data-vc-time=\"keeping\" ${i?\"disabled\":\"\"}>${r}</button>`):\"\"}\\n    </div>\\n    <div class=\"${e.styles.timeRanges}\" data-vc-time=\"ranges\">\\n      ${TimeRange(\"hour\",e.styles.timeRange,e.labels,n,a,e.timeStepHour,s)}\\n      ${TimeRange(\"minute\",e.styles.timeRange,e.labels,o,l,e.timeStepMinute,e.context.selectedMinutes)}\\n    </div>\\n  `),handleTime(e,t)},createWeek=e=>{const t=e.selectedWeekends?[...e.selectedWeekends]:[],n=[...e.context.locale.weekdays.long].reduce(((n,a,o)=>[...n,{id:o,titleShort:e.context.locale.weekdays.short[o],titleLong:a,isWeekend:t.includes(o)}]),[]),a=[...n.slice(e.firstWeekday),...n.slice(0,e.firstWeekday)];e.context.mainElement.querySelectorAll('[data-vc=\"week\"]').forEach((t=>{const n=e.onClickWeekDay?document.createElement(\"button\"):document.createElement(\"b\");e.onClickWeekDay&&(n.type=\"button\"),a.forEach((a=>{const o=n.cloneNode(!0);o.innerText=a.titleShort,o.className=e.styles.weekDay,o.role=\"columnheader\",o.ariaLabel=a.titleLong,o.dataset.vcWeekDay=String(a.id),a.isWeekend&&(o.dataset.vcWeekDayOff=\"\"),t.appendChild(o)}))}))},createYearEl=(e,t,n,a,o)=>{const l=t.cloneNode(!1);return l.className=e.styles.yearsYear,l.innerText=String(o),l.ariaLabel=String(o),l.role=\"gridcell\",l.dataset.vcYearsYear=`${o}`,a&&(l.ariaDisabled=\"true\"),a&&(l.tabIndex=-1),l.disabled=a,setYearModifier(e,l,\"year\",n===o,!1),l},createYears=(e,t)=>{var n;const a=(null==t?void 0:t.dataset.vcYear)?Number(t.dataset.vcYear):e.context.selectedYear;setContext(e,\"currentType\",\"year\"),createLayouts(e,t),visibilityTitle(e),visibilityArrows(e);const o=e.context.mainElement.querySelector('[data-vc=\"years\"]');if(!e.selectionYearsMode||!o)return;const l=\"multiple\"!==e.type||e.context.selectedYear===a?0:1,s=document.createElement(\"button\");s.type=\"button\";for(let t=e.context.displayYear-7;t<e.context.displayYear+8;t++){const n=t<getDate(e.context.dateMin).getFullYear()+l||t>getDate(e.context.dateMax).getFullYear(),i=createYearEl(e,s,a,n,t);o.appendChild(i),e.onCreateYearEls&&e.onCreateYearEls(e,i)}null==(n=e.context.mainElement.querySelector(\"[data-vc-years-year]:not([disabled])\"))||n.focus()},trackChangesHTMLElement=(e,t,n)=>{new MutationObserver((e=>{for(let a=0;a<e.length;a++){if(e[a].attributeName===t){n();break}}})).observe(e,{attributes:!0})},haveListener={value:!1,set:()=>haveListener.value=!0,check:()=>haveListener.value},setTheme=(e,t)=>e.dataset.vcTheme=t,trackChangesThemeInSystemSettings=(e,t)=>{if(setTheme(e.context.mainElement,t.matches?\"dark\":\"light\"),\"system\"!==e.selectedTheme||haveListener.check())return;const n=e=>{const t=document.querySelectorAll('[data-vc=\"calendar\"]');null==t||t.forEach((t=>setTheme(t,e.matches?\"dark\":\"light\")))};t.addEventListener?t.addEventListener(\"change\",n):t.addListener(n),haveListener.set()},detectTheme=(e,t)=>{const n=e.themeAttrDetect.length?document.querySelector(e.themeAttrDetect):null,a=e.themeAttrDetect.replace(/^.*\\[(.+)\\]/g,((e,t)=>t));if(!n||\"system\"===n.getAttribute(a))return void trackChangesThemeInSystemSettings(e,t);const o=n.getAttribute(a);o?(setTheme(e.context.mainElement,o),trackChangesHTMLElement(n,a,(()=>{const t=n.getAttribute(a);t&&setTheme(e.context.mainElement,t)}))):trackChangesThemeInSystemSettings(e,t)},handleTheme=e=>{\"not all\"!==window.matchMedia(\"(prefers-color-scheme)\").media?\"system\"===e.selectedTheme?detectTheme(e,window.matchMedia(\"(prefers-color-scheme: dark)\")):setTheme(e.context.mainElement,e.selectedTheme):setTheme(e.context.mainElement,\"light\")},capitalizeFirstLetter=e=>e.charAt(0).toUpperCase()+e.slice(1).replace(/\\./,\"\"),getLocaleWeekday=(e,t,n)=>{const a=new Date(`1978-01-0${t+1}T00:00:00.000Z`),o=a.toLocaleString(n,{weekday:\"short\",timeZone:\"UTC\"}),l=a.toLocaleString(n,{weekday:\"long\",timeZone:\"UTC\"});e.context.locale.weekdays.short.push(capitalizeFirstLetter(o)),e.context.locale.weekdays.long.push(capitalizeFirstLetter(l))},getLocaleMonth=(e,t,n)=>{const a=new Date(`1978-${String(t+1).padStart(2,\"0\")}-01T00:00:00.000Z`),o=a.toLocaleString(n,{month:\"short\",timeZone:\"UTC\"}),l=a.toLocaleString(n,{month:\"long\",timeZone:\"UTC\"});e.context.locale.months.short.push(capitalizeFirstLetter(o)),e.context.locale.months.long.push(capitalizeFirstLetter(l))},getLocale=e=>{var t,n,a,o,l,s,i,r;if(!(e.context.locale.weekdays.short[6]&&e.context.locale.weekdays.long[6]&&e.context.locale.months.short[11]&&e.context.locale.months.long[11]))if(\"string\"==typeof e.locale){if(\"string\"==typeof e.locale&&!e.locale.length)throw new Error(errorMessages.notLocale);Array.from({length:7},((t,n)=>getLocaleWeekday(e,n,e.locale))),Array.from({length:12},((t,n)=>getLocaleMonth(e,n,e.locale)))}else{if(!((null==(n=null==(t=e.locale)?void 0:t.weekdays)?void 0:n.short[6])&&(null==(o=null==(a=e.locale)?void 0:a.weekdays)?void 0:o.long[6])&&(null==(s=null==(l=e.locale)?void 0:l.months)?void 0:s.short[11])&&(null==(r=null==(i=e.locale)?void 0:i.months)?void 0:r.long[11])))throw new Error(errorMessages.notLocale);setContext(e,\"locale\",__spreadValues({},e.locale))}},create=e=>{const t={default:()=>{createWeek(e),createDates(e)},multiple:()=>{createWeek(e),createDates(e)},month:()=>createMonths(e),year:()=>createYears(e)};handleTheme(e),getLocale(e),createLayouts(e),visibilityTitle(e),visibilityArrows(e),createTime(e),t[e.context.currentType]()},handleArrowKeys=e=>{const t=t=>{var n;const a=t.target;if(![\"ArrowUp\",\"ArrowDown\",\"ArrowLeft\",\"ArrowRight\"].includes(t.key)||\"button\"!==a.localName)return;const o=Array.from(e.context.mainElement.querySelectorAll('[data-vc=\"calendar\"] button')),l=o.indexOf(a);if(-1===l)return;const s=(i=o[l]).hasAttribute(\"data-vc-date-btn\")?7:i.hasAttribute(\"data-vc-months-month\")?4:i.hasAttribute(\"data-vc-years-year\")?5:1;var i;const r=(0,{ArrowUp:()=>Math.max(0,l-s),ArrowDown:()=>Math.min(o.length-1,l+s),ArrowLeft:()=>Math.max(0,l-1),ArrowRight:()=>Math.min(o.length-1,l+1)}[t.key])();null==(n=o[r])||n.focus()};return e.context.mainElement.addEventListener(\"keydown\",t),()=>e.context.mainElement.removeEventListener(\"keydown\",t)},handleMonth=(e,t)=>{const n=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1)));({prev:()=>n.setMonth(n.getMonth()-e.monthsToSwitch),next:()=>n.setMonth(n.getMonth()+e.monthsToSwitch)})[t](),setContext(e,\"selectedMonth\",n.getMonth()),setContext(e,\"selectedYear\",n.getFullYear()),visibilityTitle(e),visibilityArrows(e),createDates(e)},handleClickArrow=(e,t)=>{const n=t.target.closest(\"[data-vc-arrow]\");if(n){if([\"default\",\"multiple\"].includes(e.context.currentType))handleMonth(e,n.dataset.vcArrow);else if(\"year\"===e.context.currentType&&void 0!==e.context.displayYear){const a={prev:-15,next:15}[n.dataset.vcArrow];setContext(e,\"displayYear\",e.context.displayYear+a),createYears(e,t.target)}e.onClickArrow&&e.onClickArrow(e,t)}},resolveToggle=(e,t)=>void 0===t||(\"function\"==typeof t?t(e):t),canToggleSelection=e=>resolveToggle(e,e.enableDateToggle),handleSelectDate=(e,t,n)=>{const a=t.dataset.vcDate,o=t.closest(\"[data-vc-date][data-vc-date-selected]\"),l=canToggleSelection(e);if(o&&!l)return;const s=o?e.context.selectedDates.filter((e=>e!==a)):n?[...e.context.selectedDates,a]:[a];setContext(e,\"selectedDates\",s)},createDateRangeTooltip=(e,t,n)=>{if(!t)return;if(!n)return t.dataset.vcDateRangeTooltip=\"hidden\",void(t.textContent=\"\");const a=e.context.mainElement.getBoundingClientRect(),o=n.getBoundingClientRect();t.style.left=o.left-a.left+o.width/2+\"px\",t.style.top=o.bottom-a.top-o.height+\"px\",t.dataset.vcDateRangeTooltip=\"visible\",t.innerHTML=e.sanitizerHTML(e.onCreateDateRangeTooltip(e,n,t,o,a))},state={self:null,lastDateEl:null,isHovering:!1,rangeMin:void 0,rangeMax:void 0,tooltipEl:null,timeoutId:null},addHoverEffect=(e,t,n)=>{var a,o,l;if(!(null==(o=null==(a=state.self)?void 0:a.context)?void 0:o.selectedDates[0]))return;const s=getDateString(e);(null==(l=state.self.context.disableDates)?void 0:l.includes(s))||(state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${s}\"]`).forEach((e=>e.dataset.vcDateHover=\"\")),t.forEach((e=>e.dataset.vcDateHover=\"first\")),n.forEach((e=>{\"first\"===e.dataset.vcDateHover?e.dataset.vcDateHover=\"first-and-last\":e.dataset.vcDateHover=\"last\"})))},removeHoverEffect=()=>{var e,t;if(!(null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.mainElement))return;state.self.context.mainElement.querySelectorAll(\"[data-vc-date-hover]\").forEach((e=>e.removeAttribute(\"data-vc-date-hover\")))},handleHoverDatesEvent=e=>{var t,n;if(!e||!(null==(n=null==(t=state.self)?void 0:t.context)?void 0:n.selectedDates[0]))return;if(!e.closest('[data-vc=\"dates\"]'))return state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),void removeHoverEffect();const a=e.closest(\"[data-vc-date]\");if(!a||state.lastDateEl===a)return;state.lastDateEl=a,createDateRangeTooltip(state.self,state.tooltipEl,a),removeHoverEffect();const o=a.dataset.vcDate,l=getDate(state.self.context.selectedDates[0]),s=getDate(o),i=state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${state.self.context.selectedDates[0]}\"]`),r=state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${o}\"]`),[c,d]=l<s?[i,r]:[r,i],[u,m]=l<s?[l,s]:[s,l];for(let e=new Date(u);e<=m;e.setDate(e.getDate()+1))addHoverEffect(e,c,d)},handleHoverSelectedDatesRangeEvent=e=>{const t=null==e?void 0:e.closest(\"[data-vc-date-selected]\");if(!t&&state.lastDateEl)return state.lastDateEl=null,void createDateRangeTooltip(state.self,state.tooltipEl,null);t&&state.lastDateEl!==t&&(state.lastDateEl=t,createDateRangeTooltip(state.self,state.tooltipEl,t))},optimizedHoverHandler=e=>t=>{const n=t.target;state.isHovering||(state.isHovering=!0,requestAnimationFrame((()=>{e(n),state.isHovering=!1})))},optimizedHandleHoverDatesEvent=optimizedHoverHandler(handleHoverDatesEvent),optimizedHandleHoverSelectedDatesRangeEvent=optimizedHoverHandler(handleHoverSelectedDatesRangeEvent),handleCancelSelectionDates=e=>{state.self&&\"Escape\"===e.key&&(state.lastDateEl=null,setContext(state.self,\"selectedDates\",[]),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect())},handleMouseLeave=()=>{null!==state.timeoutId&&clearTimeout(state.timeoutId),state.timeoutId=setTimeout((()=>{state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect()}),50)},updateDisabledDates=()=>{var e,t,n,a;if(!(null==(n=null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.selectedDates)?void 0:n[0])||!(null==(a=state.self.context.disableDates)?void 0:a[0]))return;const o=getDate(state.self.context.selectedDates[0]),[l,s]=state.self.context.disableDates.map((e=>getDate(e))).reduce((([e,t],n)=>[o>=n?n:e,o<n&&null===t?n:t]),[null,null]);l&&setContext(state.self,\"displayDateMin\",getDateString(new Date(l.setDate(l.getDate()+1)))),s&&setContext(state.self,\"displayDateMax\",getDateString(new Date(s.setDate(s.getDate()-1))));state.self.disableDatesPast&&!state.self.disableAllDates&&getDate(state.self.context.displayDateMin)<getDate(state.self.context.dateToday)&&setContext(state.self,\"displayDateMin\",state.self.context.dateToday)},handleSelectDateRange=(e,t)=>{state.self=e,state.lastDateEl=t,removeHoverEffect(),e.disableDatesGaps&&(state.rangeMin=state.rangeMin?state.rangeMin:e.context.displayDateMin,state.rangeMax=state.rangeMax?state.rangeMax:e.context.displayDateMax),e.onCreateDateRangeTooltip&&(state.tooltipEl=e.context.mainElement.querySelector(\"[data-vc-date-range-tooltip]\"));const n=null==t?void 0:t.dataset.vcDate;if(n){const t=1===e.context.selectedDates.length&&e.context.selectedDates[0].includes(n),a=t&&!canToggleSelection(e)?[n,n]:t&&canToggleSelection(e)?[]:e.context.selectedDates.length>1?[n]:[...e.context.selectedDates,n];setContext(e,\"selectedDates\",a),e.context.selectedDates.length>1&&e.context.selectedDates.sort(((e,t)=>+new Date(e)-+new Date(t)))}({set:()=>(e.disableDatesGaps&&updateDisabledDates(),createDateRangeTooltip(state.self,state.tooltipEl,t),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),state.self.context.mainElement.addEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.addEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.addEventListener(\"keydown\",handleCancelSelectionDates),()=>{state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates)}),reset:()=>{const[n,a]=[e.context.selectedDates[0],e.context.selectedDates[e.context.selectedDates.length-1]],o=e.context.selectedDates[0]!==e.context.selectedDates[e.context.selectedDates.length-1],l=parseDates([`${n}:${a}`]).filter((t=>!e.context.disableDates.includes(t))),s=o?e.enableEdgeDatesOnly?[n,a]:l:[e.context.selectedDates[0],e.context.selectedDates[0]];if(setContext(e,\"selectedDates\",s),e.disableDatesGaps&&(setContext(e,\"displayDateMin\",state.rangeMin),setContext(e,\"displayDateMax\",state.rangeMax)),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),e.onCreateDateRangeTooltip)return e.context.selectedDates[0]||(state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,null)),e.context.selectedDates[0]&&(state.self.context.mainElement.addEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.addEventListener(\"mouseleave\",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,t)),()=>{state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave)}}})[1===e.context.selectedDates.length?\"set\":\"reset\"]()},updateDateModifier=e=>{e.context.mainElement.querySelectorAll(\"[data-vc-date]\").forEach((t=>{const n=t.querySelector(\"[data-vc-date-btn]\"),a=t.dataset.vcDate,o=getDate(a).getDay();setDateModifier(e,e.context.selectedYear,t,n,o,a,\"current\")}))},handleClickDate=(e,t)=>{var n;const a=t.target,o=a.closest(\"[data-vc-date-btn]\");if(!e.selectionDatesMode||![\"single\",\"multiple\",\"multiple-ranged\"].includes(e.selectionDatesMode)||!o)return;const l=o.closest(\"[data-vc-date]\");({single:()=>handleSelectDate(e,l,!1),multiple:()=>handleSelectDate(e,l,!0),\"multiple-ranged\":()=>handleSelectDateRange(e,l)})[e.selectionDatesMode](),null==(n=e.context.selectedDates)||n.sort(((e,t)=>+new Date(e)-+new Date(t))),e.onClickDate&&e.onClickDate(e,t),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t);const s=a.closest('[data-vc-date-month=\"prev\"]'),i=a.closest('[data-vc-date-month=\"next\"]');({prev:()=>e.enableMonthChangeOnDayClick?handleMonth(e,\"prev\"):updateDateModifier(e),next:()=>e.enableMonthChangeOnDayClick?handleMonth(e,\"next\"):updateDateModifier(e),current:()=>updateDateModifier(e)})[s?\"prev\":i?\"next\":\"current\"]()},typeClick=[\"month\",\"year\"],getValue=(e,t,n)=>{const{currentValue:a,columnID:o}=getColumnID(e,t);return\"month\"===e.context.currentType&&o>=0?n-o:\"year\"===e.context.currentType&&e.context.selectedYear!==a?n-1:n},handleMultipleYearSelection=(e,t)=>{const n=getValue(e,\"year\",Number(t.dataset.vcYearsYear)),a=getDate(e.context.dateMin),o=getDate(e.context.dateMax),l=e.context.displayMonthsCount-1,{columnID:s}=getColumnID(e,\"year\"),i=e.context.selectedMonth<a.getMonth()&&n<=a.getFullYear(),r=e.context.selectedMonth>o.getMonth()-l+s&&n>=o.getFullYear(),c=n<a.getFullYear(),d=n>o.getFullYear(),u=i||c?a.getFullYear():r||d?o.getFullYear():n,m=i||c?a.getMonth():r||d?o.getMonth()-l+s:e.context.selectedMonth;setContext(e,\"selectedYear\",u),setContext(e,\"selectedMonth\",m)},handleMultipleMonthSelection=(e,t)=>{const n=t.closest('[data-vc-column=\"month\"]').querySelector('[data-vc=\"year\"]'),a=getValue(e,\"month\",Number(t.dataset.vcMonthsMonth)),o=Number(n.dataset.vcYear),l=getDate(e.context.dateMin),s=getDate(e.context.dateMax),i=a<l.getMonth()&&o<=l.getFullYear(),r=a>s.getMonth()&&o>=s.getFullYear();setContext(e,\"selectedYear\",o),setContext(e,\"selectedMonth\",i?l.getMonth():r?s.getMonth():a)},handleItemClick=(e,t,n,a)=>{var o;({year:()=>{if(\"multiple\"===e.type)return handleMultipleYearSelection(e,a);setContext(e,\"selectedYear\",Number(a.dataset.vcYearsYear))},month:()=>{if(\"multiple\"===e.type)return handleMultipleMonthSelection(e,a);setContext(e,\"selectedMonth\",Number(a.dataset.vcMonthsMonth))}})[n]();({year:()=>{var n;return null==(n=e.onClickYear)?void 0:n.call(e,e,t)},month:()=>{var n;return null==(n=e.onClickMonth)?void 0:n.call(e,e,t)}})[n](),e.context.currentType!==e.type?(setContext(e,\"currentType\",e.type),create(e),null==(o=e.context.mainElement.querySelector(`[data-vc=\"${n}\"]`))||o.focus()):setYearModifier(e,a,n,!0,!0)},handleClickType=(e,t,n)=>{var a;const o=t.target,l=o.closest(`[data-vc=\"${n}\"]`),s={year:()=>createYears(e,o),month:()=>createMonths(e,o)};if(l&&e.onClickTitle&&e.onClickTitle(e,t),l&&e.context.currentType!==n)return s[n]();const i=o.closest(`[data-vc-${n}s-${n}]`);if(i)return handleItemClick(e,t,n,i);const r=o.closest('[data-vc=\"grid\"]'),c=o.closest('[data-vc=\"column\"]');(e.context.currentType===n&&l||\"multiple\"===e.type&&e.context.currentType===n&&r&&!c)&&(setContext(e,\"currentType\",e.type),create(e),null==(a=e.context.mainElement.querySelector(`[data-vc=\"${n}\"]`))||a.focus())},handleClickMonthOrYear=(e,t)=>{const n={month:e.selectionMonthsMode,year:e.selectionYearsMode};typeClick.forEach((a=>{n[a]&&t.target&&handleClickType(e,t,a)}))},handleClickWeekNumber=(e,t)=>{if(!e.enableWeekNumbers||!e.onClickWeekNumber)return;const n=t.target.closest(\"[data-vc-week-number]\"),a=e.context.mainElement.querySelectorAll(\"[data-vc-date-week-number]\");if(!n||!a[0])return;const o=Number(n.innerText),l=Number(n.dataset.vcWeekYear),s=Array.from(a).filter((e=>Number(e.dataset.vcDateWeekNumber)===o));e.onClickWeekNumber(e,o,l,s,t)},handleClickWeekDay=(e,t)=>{if(!e.onClickWeekDay)return;const n=t.target.closest(\"[data-vc-week-day]\"),a=t.target.closest('[data-vc=\"column\"]'),o=a?a.querySelectorAll(\"[data-vc-date-week-day]\"):e.context.mainElement.querySelectorAll(\"[data-vc-date-week-day]\");if(!n||!o[0])return;const l=Number(n.dataset.vcWeekDay),s=Array.from(o).filter((e=>Number(e.dataset.vcDateWeekDay)===l));e.onClickWeekDay(e,l,s,t)},handleClick=e=>{const t=t=>{handleClickArrow(e,t),handleClickWeekDay(e,t),handleClickWeekNumber(e,t),handleClickDate(e,t),handleClickMonthOrYear(e,t)};return e.context.mainElement.addEventListener(\"click\",t),()=>e.context.mainElement.removeEventListener(\"click\",t)},initMonthsCount=e=>{if(\"multiple\"===e.type&&(e.displayMonthsCount<=1||e.displayMonthsCount>12))throw new Error(errorMessages.incorrectMonthsCount);if(\"multiple\"!==e.type&&e.displayMonthsCount>1)throw new Error(errorMessages.incorrectMonthsCount);setContext(e,\"displayMonthsCount\",e.displayMonthsCount?e.displayMonthsCount:\"multiple\"===e.type?2:1)},getLocalDate=()=>{const e=new Date;return new Date(e.getTime()-6e4*e.getTimezoneOffset()).toISOString().substring(0,10)},resolveDate=(e,t)=>\"today\"===e?getLocalDate():e instanceof Date||\"number\"==typeof e||\"string\"==typeof e?parseDates([e])[0]:t,initRange=e=>{var t,n,a;const o=resolveDate(e.dateMin,e.dateMin),l=resolveDate(e.dateMax,e.dateMax),s=resolveDate(e.displayDateMin,o),i=resolveDate(e.displayDateMax,l);setContext(e,\"dateToday\",resolveDate(e.dateToday,e.dateToday)),setContext(e,\"displayDateMin\",s?getDate(o)>=getDate(s)?o:s:o),setContext(e,\"displayDateMax\",i?getDate(l)<=getDate(i)?l:i:l);const r=e.disableDatesPast&&!e.disableAllDates&&getDate(s)<getDate(e.context.dateToday);setContext(e,\"displayDateMin\",r||e.disableAllDates?e.context.dateToday:s),setContext(e,\"displayDateMax\",e.disableAllDates?e.context.dateToday:i),setContext(e,\"disableDates\",e.disableDates[0]&&!e.disableAllDates?parseDates(e.disableDates):e.disableAllDates?[e.context.displayDateMin]:[]),e.context.disableDates.length>1&&e.context.disableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),setContext(e,\"enableDates\",e.enableDates[0]?parseDates(e.enableDates):[]),(null==(t=e.context.enableDates)?void 0:t[0])&&(null==(n=e.context.disableDates)?void 0:n[0])&&setContext(e,\"disableDates\",e.context.disableDates.filter((t=>!e.context.enableDates.includes(t)))),e.context.enableDates.length>1&&e.context.enableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),(null==(a=e.context.enableDates)?void 0:a[0])&&e.disableAllDates&&(setContext(e,\"displayDateMin\",e.context.enableDates[0]),setContext(e,\"displayDateMax\",e.context.enableDates[e.context.enableDates.length-1])),setContext(e,\"dateMin\",e.displayDisabledDates?o:e.context.displayDateMin),setContext(e,\"dateMax\",e.displayDisabledDates?l:e.context.displayDateMax)},initSelectedDates=e=>{var t;setContext(e,\"selectedDates\",(null==(t=e.selectedDates)?void 0:t[0])?parseDates(e.selectedDates):[])},displayClosestValidDate=e=>{const t=t=>{const n=new Date(t);setInitialContext(e,n.getMonth(),n.getFullYear())};if(e.displayDateMin&&\"today\"!==e.displayDateMin&&(n=e.displayDateMin,a=new Date,new Date(n).getTime()>a.getTime())){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMin;return t(getDate(resolveDate(n,e.displayDateMin))),!0}var n,a;if(e.displayDateMax&&\"today\"!==e.displayDateMax&&((e,t)=>new Date(e).getTime()<t.getTime())(e.displayDateMax,new Date)){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMax;return t(getDate(resolveDate(n,e.displayDateMax))),!0}return!1},setInitialContext=(e,t,n)=>{setContext(e,\"selectedMonth\",t),setContext(e,\"selectedYear\",n),setContext(e,\"displayYear\",n)},initSelectedMonthYear=e=>{var t;if(e.enableJumpToSelectedDate&&(null==(t=e.selectedDates)?void 0:t[0])&&void 0===e.selectedMonth&&void 0===e.selectedYear){const t=getDate(parseDates(e.selectedDates)[0]);return void setInitialContext(e,t.getMonth(),t.getFullYear())}if(displayClosestValidDate(e))return;const n=void 0!==e.selectedMonth&&Number(e.selectedMonth)>=0&&Number(e.selectedMonth)<12,a=void 0!==e.selectedYear&&Number(e.selectedYear)>=0&&Number(e.selectedYear)<=9999;setInitialContext(e,n?Number(e.selectedMonth):getDate(e.context.dateToday).getMonth(),a?Number(e.selectedYear):getDate(e.context.dateToday).getFullYear())},initTime=e=>{var t,n,a;if(!e.selectionTimeMode)return;if(![12,24].includes(e.selectionTimeMode))throw new Error(errorMessages.incorrectTime);const o=12===e.selectionTimeMode,l=o?/^(0[1-9]|1[0-2]):([0-5][0-9]) ?(AM|PM)?$/i:/^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/;let[s,i,r]=null!=(a=null==(n=null==(t=e.selectedTime)?void 0:t.match(l))?void 0:n.slice(1))?a:[];s?o&&!r&&(r=\"AM\"):(s=o?transformTime12(String(e.timeMinHour)):String(e.timeMinHour),i=String(e.timeMinMinute),r=o?Number(transformTime12(String(e.timeMinHour)))>=12?\"PM\":\"AM\":null),setContext(e,\"selectedHours\",s.padStart(2,\"0\")),setContext(e,\"selectedMinutes\",i.padStart(2,\"0\")),setContext(e,\"selectedKeeping\",r),setContext(e,\"selectedTime\",`${e.context.selectedHours}:${e.context.selectedMinutes}${r?` ${r}`:\"\"}`)},initAllVariables=e=>{setContext(e,\"currentType\",e.type),initMonthsCount(e),initRange(e),initSelectedMonthYear(e),initSelectedDates(e),initTime(e)},reset=(e,{year:t,month:n,dates:a,time:o,locale:l},s=!0)=>{var i;const r={year:e.selectedYear,month:e.selectedMonth,dates:e.selectedDates,time:e.selectedTime};if(e.selectedYear=t?r.year:e.context.selectedYear,e.selectedMonth=n?r.month:e.context.selectedMonth,e.selectedTime=o?r.time:e.context.selectedTime,e.selectedDates=\"only-first\"===a&&(null==(i=e.context.selectedDates)?void 0:i[0])?[e.context.selectedDates[0]]:!0===a?r.dates:e.context.selectedDates,l){setContext(e,\"locale\",{months:{short:[],long:[]},weekdays:{short:[],long:[]}})}initAllVariables(e),s&&create(e),e.selectedYear=r.year,e.selectedMonth=r.month,e.selectedDates=r.dates,e.selectedTime=r.time,\"multiple-ranged\"===e.selectionDatesMode&&a&&handleSelectDateRange(e,null)},createToInput=e=>{const t=document.createElement(\"div\");return t.className=e.styles.calendar,t.dataset.vc=\"calendar\",t.dataset.vcInput=\"\",t.dataset.vcCalendarHidden=\"\",setContext(e,\"inputModeInit\",!0),setContext(e,\"isShowInInputMode\",!1),setContext(e,\"mainElement\",t),document.body.appendChild(e.context.mainElement),reset(e,{year:!0,month:!0,dates:!0,time:!0,locale:!0}),setTimeout((()=>show(e))),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e)},canOpenOnFocus=e=>resolveToggle(e,e.openOnFocus),handleInput=e=>{setContext(e,\"inputElement\",e.context.mainElement);const t=()=>{e.context.inputModeInit?setTimeout((()=>show(e))):createToInput(e)};e.context.inputElement.addEventListener(\"click\",t);const n=\"function\"==typeof e.openOnFocus||!0===e.openOnFocus,a=()=>{shouldSkipOpenOnFocus(e)?clearSkipOpenOnFocus(e):canOpenOnFocus(e)&&t()};n&&e.context.inputElement.addEventListener(\"focus\",a);const o=t=>{const n=\"Tab\"===t.key&&!t.shiftKey,a=[\"ArrowUp\",\"ArrowDown\",\"ArrowLeft\",\"ArrowRight\"].includes(t.key);(n||a)&&(t=>{var n;if(!e.context.isShowInInputMode)return!1;if(document.activeElement!==e.context.inputElement)return!1;const a=e=>e.tabIndex>=0&&!e.hasAttribute(\"disabled\")&&\"true\"!==e.getAttribute(\"aria-disabled\"),o=null!=(n=document.createTreeWalker(e.context.mainElement,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>a(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}).nextNode())?n:a(e.context.mainElement)?e.context.mainElement:null;!o||o.tabIndex<0||(t.preventDefault(),o.focus())})(t)};return e.context.inputElement.addEventListener(\"keydown\",o),()=>{e.context.inputElement.removeEventListener(\"click\",t),n&&e.context.inputElement.removeEventListener(\"focus\",a),e.context.inputElement.removeEventListener(\"keydown\",o)}},init=e=>(setContext(e,\"originalElement\",e.context.mainElement.cloneNode(!0)),setContext(e,\"isInit\",!0),e.inputMode?handleInput(e):(initAllVariables(e),create(e),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e))),update=(e,t)=>{if(!e.context.isInit)throw new Error(errorMessages.notInit);reset(e,__spreadValues(__spreadValues({},{year:!0,month:!0,dates:!0,time:!0,locale:!0}),t),!(e.inputMode&&!e.context.inputModeInit)),e.onUpdate&&e.onUpdate(e)},replaceProperties=(e,t)=>{const n=Object.keys(t);for(let a=0;a<n.length;a++){const o=n[a];\"object\"!=typeof e[o]||\"object\"!=typeof t[o]||t[o]instanceof Date||Array.isArray(t[o])?void 0!==t[o]&&(e[o]=t[o]):replaceProperties(e[o],t[o])}},set=(e,t,n)=>{replaceProperties(e,t),e.context.isInit&&update(e,n)};function findBestPickerPosition(e,t){const n=\"left\";if(!t||!e)return n;const{canShow:a,parentPositions:o}=getAvailablePosition(e,t),l=a.left&&a.right;return(l&&a.bottom?\"center\":l&&a.top?[\"top\",\"center\"]:Array.isArray(o)?[\"bottom\"===o[0]?\"top\":\"bottom\",...o.slice(1)]:o)||n}const setPosition=(e,t,n)=>{if(!e)return;const a=\"auto\"===n?findBestPickerPosition(e,t):n,o={top:-t.offsetHeight,bottom:e.offsetHeight,left:0,center:e.offsetWidth/2-t.offsetWidth/2,right:e.offsetWidth-t.offsetWidth},l=Array.isArray(a)?a[0]:\"bottom\",s=Array.isArray(a)?a[1]:a;t.dataset.vcPosition=l;const{top:i,left:r}=getOffset(e),c=i+o[l];let d=r+o[s];const{vw:u}=getViewportDimensions();if(d+t.clientWidth>u){const e=window.innerWidth-document.body.clientWidth;d=u-t.clientWidth-e}else d<0&&(d=0);Object.assign(t.style,{left:`${d}px`,top:`${c}px`})},show=e=>{if(e.context.isShowInInputMode)return;if(!e.context.currentType)return void e.context.mainElement.click();setContext(e,\"cleanupHandlers\",[]),setContext(e,\"isShowInInputMode\",!0),e.inputMode&&restoreTabbing(e.context.mainElement),setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput),e.context.mainElement.removeAttribute(\"data-vc-calendar-hidden\");const t=()=>{setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput)};window.addEventListener(\"resize\",t),e.context.cleanupHandlers.push((()=>window.removeEventListener(\"resize\",t)));const n=t=>{\"Escape\"===t.key&&hide(e)};document.addEventListener(\"keydown\",n),e.context.cleanupHandlers.push((()=>document.removeEventListener(\"keydown\",n)));const a=t=>{t.target===e.context.inputElement||e.context.mainElement.contains(t.target)||hide(e)};document.addEventListener(\"click\",a,{capture:!0}),e.context.cleanupHandlers.push((()=>document.removeEventListener(\"click\",a,{capture:!0}))),e.onShow&&e.onShow(e)},labels={application:\"Calendar\",navigation:\"Calendar Navigation\",arrowNext:{month:\"Next month\",year:\"Next list of years\"},arrowPrev:{month:\"Previous month\",year:\"Previous list of years\"},month:\"Select month, current selected month:\",months:\"List of months\",year:\"Select year, current selected year:\",years:\"List of years\",week:\"Days of the week\",weekNumber:\"Numbers of weeks in a year\",dates:\"Dates in the current month\",selectingTime:\"Selecting a time \",inputHour:\"Hours\",inputMinute:\"Minutes\",rangeHour:\"Slider for selecting hours\",rangeMinute:\"Slider for selecting minutes\",btnKeeping:\"Switch AM/PM, current position:\"},styles={calendar:\"vc\",controls:\"vc-controls\",grid:\"vc-grid\",column:\"vc-column\",header:\"vc-header\",headerContent:\"vc-header__content\",month:\"vc-month\",year:\"vc-year\",arrowPrev:\"vc-arrow vc-arrow_prev\",arrowNext:\"vc-arrow vc-arrow_next\",wrapper:\"vc-wrapper\",content:\"vc-content\",months:\"vc-months\",monthsMonth:\"vc-months__month\",years:\"vc-years\",yearsYear:\"vc-years__year\",week:\"vc-week\",weekDay:\"vc-week__day\",weekNumbers:\"vc-week-numbers\",weekNumbersTitle:\"vc-week-numbers__title\",weekNumbersContent:\"vc-week-numbers__content\",weekNumber:\"vc-week-number\",dates:\"vc-dates\",datesRow:\"vc-dates__row\",date:\"vc-date\",dateBtn:\"vc-date__btn\",datePopup:\"vc-date__popup\",dateRangeTooltip:\"vc-date-range-tooltip\",time:\"vc-time\",timeContent:\"vc-time__content\",timeHour:\"vc-time__hour\",timeMinute:\"vc-time__minute\",timeKeeping:\"vc-time__keeping\",timeRanges:\"vc-time__ranges\",timeRange:\"vc-time__range\"};class OptionsCalendar{constructor(){__publicField(this,\"type\",\"default\"),__publicField(this,\"inputMode\",!1),__publicField(this,\"openOnFocus\",!0),__publicField(this,\"positionToInput\",\"left\"),__publicField(this,\"firstWeekday\",1),__publicField(this,\"monthsToSwitch\",1),__publicField(this,\"themeAttrDetect\",\"html[data-theme]\"),__publicField(this,\"locale\",\"en\"),__publicField(this,\"dateToday\",\"today\"),__publicField(this,\"dateMin\",\"1970-01-01\"),__publicField(this,\"dateMax\",\"2470-12-31\"),__publicField(this,\"displayDateMin\"),__publicField(this,\"displayDateMax\"),__publicField(this,\"displayDatesOutside\",!0),__publicField(this,\"displayDisabledDates\",!1),__publicField(this,\"displayMonthsCount\"),__publicField(this,\"disableDates\",[]),__publicField(this,\"disableAllDates\",!1),__publicField(this,\"disableDatesPast\",!1),__publicField(this,\"disableDatesGaps\",!1),__publicField(this,\"disableWeekdays\",[]),__publicField(this,\"disableToday\",!1),__publicField(this,\"enableDates\",[]),__publicField(this,\"enableEdgeDatesOnly\",!0),__publicField(this,\"enableDateToggle\",!0),__publicField(this,\"enableWeekNumbers\",!1),__publicField(this,\"enableMonthChangeOnDayClick\",!0),__publicField(this,\"enableJumpToSelectedDate\",!1),__publicField(this,\"selectionDatesMode\",\"single\"),__publicField(this,\"selectionMonthsMode\",!0),__publicField(this,\"selectionYearsMode\",!0),__publicField(this,\"selectionTimeMode\",!1),__publicField(this,\"selectedDates\",[]),__publicField(this,\"selectedMonth\"),__publicField(this,\"selectedYear\"),__publicField(this,\"selectedHolidays\",[]),__publicField(this,\"selectedWeekends\",[0,6]),__publicField(this,\"selectedTime\"),__publicField(this,\"selectedTheme\",\"system\"),__publicField(this,\"timeMinHour\",0),__publicField(this,\"timeMaxHour\",23),__publicField(this,\"timeMinMinute\",0),__publicField(this,\"timeMaxMinute\",59),__publicField(this,\"timeControls\",\"all\"),__publicField(this,\"timeStepHour\",1),__publicField(this,\"timeStepMinute\",1),__publicField(this,\"sanitizerHTML\",(e=>e)),__publicField(this,\"onClickDate\"),__publicField(this,\"onClickWeekDay\"),__publicField(this,\"onClickWeekNumber\"),__publicField(this,\"onClickTitle\"),__publicField(this,\"onClickMonth\"),__publicField(this,\"onClickYear\"),__publicField(this,\"onClickArrow\"),__publicField(this,\"onChangeTime\"),__publicField(this,\"onChangeToInput\"),__publicField(this,\"onCreateDateRangeTooltip\"),__publicField(this,\"onCreateDateEls\"),__publicField(this,\"onCreateMonthEls\"),__publicField(this,\"onCreateYearEls\"),__publicField(this,\"onInit\"),__publicField(this,\"onUpdate\"),__publicField(this,\"onDestroy\"),__publicField(this,\"onShow\"),__publicField(this,\"onHide\"),__publicField(this,\"popups\",{}),__publicField(this,\"labels\",__spreadValues({},labels)),__publicField(this,\"layouts\",{default:\"\",multiple:\"\",month:\"\",year:\"\"}),__publicField(this,\"styles\",__spreadValues({},styles))}}const _Calendar=class e extends OptionsCalendar{constructor(t,n){var a;super(),__publicField(this,\"init\",(()=>init(this))),__publicField(this,\"update\",(e=>update(this,e))),__publicField(this,\"destroy\",(()=>destroy(this))),__publicField(this,\"show\",(()=>show(this))),__publicField(this,\"hide\",(()=>hide(this))),__publicField(this,\"set\",((e,t)=>set(this,e,t))),__publicField(this,\"context\"),this.context=__spreadProps(__spreadValues({},this.context),{locale:{months:{short:[],long:[]},weekdays:{short:[],long:[]}}}),setContext(this,\"mainElement\",\"string\"==typeof t?null!=(a=e.memoizedElements.get(t))?a:this.queryAndMemoize(t):t),n&&replaceProperties(this,n)}queryAndMemoize(t){const n=document.querySelector(t);if(!n)throw new Error(errorMessages.notFoundSelector(t));return e.memoizedElements.set(t,n),n}};__publicField(_Calendar,\"memoizedElements\",new Map);let Calendar=_Calendar;export{Calendar};","/**\n * --------------------------------------------------------------------------\n * Bootstrap datepicker.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { Calendar } from 'vanilla-calendar-pro'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'datepicker'\nconst DATA_KEY = 'bs.datepicker'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"datepicker\"]'\n\nconst HIDE_DELAY = 100 // ms delay before hiding after selection\n\nconst Default = {\n  datepickerTheme: null, // 'light', 'dark', 'auto' - explicit theme for datepicker popover only\n  dateMin: null,\n  dateMax: null,\n  dateFormat: null, // Intl.DateTimeFormat options, or function(date, locale) => string\n  displayElement: null, // Element to show formatted date (defaults to element for buttons)\n  displayMonthsCount: 1, // Number of months to display side-by-side\n  firstWeekday: 1, // Monday\n  inline: false, // Render calendar inline (no popup)\n  locale: 'default',\n  positionElement: null, // Element to position calendar relative to (defaults to input)\n  selectedDates: [],\n  selectionMode: 'single', // 'single', 'multiple', 'multiple-ranged'\n  placement: 'left', // 'left', 'center', 'right', 'auto'\n  vcpOptions: {} // Pass-through for any VCP option\n}\n\nconst DefaultType = {\n  datepickerTheme: '(null|string)',\n  dateMin: '(null|string|number|object)',\n  dateMax: '(null|string|number|object)',\n  dateFormat: '(null|object|function)',\n  displayElement: '(null|string|element|boolean)',\n  displayMonthsCount: 'number',\n  firstWeekday: 'number',\n  inline: 'boolean',\n  locale: 'string',\n  positionElement: '(null|string|element)',\n  selectedDates: 'array',\n  selectionMode: 'string',\n  placement: 'string',\n  vcpOptions: 'object'\n}\n\n/**\n * Class definition\n */\n\nclass Datepicker extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._calendar = null\n    this._isShown = false\n\n    this._initCalendar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    return this._isShown ? this.hide() : this.show()\n  }\n\n  show() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || isDisabled(this._element) || this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.show()\n    this._isShown = true\n\n    EventHandler.trigger(this._element, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || !this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.hide()\n    this._isShown = false\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._themeObserver) {\n      this._themeObserver.disconnect()\n      this._themeObserver = null\n    }\n\n    if (this._calendar) {\n      this._calendar.destroy()\n    }\n\n    this._calendar = null\n    super.dispose()\n  }\n\n  getSelectedDates() {\n    const dates = this._calendar?.context?.selectedDates\n    return dates ? [...dates] : []\n  }\n\n  setSelectedDates(dates) {\n    if (this._calendar) {\n      this._calendar.set({ selectedDates: dates })\n    }\n  }\n\n  // Private\n  _initCalendar() {\n    this._isInput = this._element.tagName === 'INPUT'\n    this._isInline = this._config.inline\n\n    // For inline mode, look for a hidden input child to bind to\n    if (this._isInline && !this._isInput) {\n      this._boundInput = this._element.querySelector('input[type=\"hidden\"], input[name]')\n    }\n\n    this._positionElement = this._resolvePositionElement()\n    this._displayElement = this._resolveDisplayElement()\n\n    const calendarOptions = this._buildCalendarOptions()\n\n    // Create calendar on the position element (for correct popup positioning)\n    // but value updates still go to this._element (the input)\n    this._calendar = new Calendar(this._positionElement, calendarOptions)\n    this._calendar.init()\n\n    // Watch for theme changes on ancestor elements (for live theme switching)\n    this._setupThemeObserver()\n\n    // Set initial value if input has a value\n    if (this._isInput && this._element.value) {\n      this._parseInputValue()\n    }\n\n    // Populate input/display with preselected dates\n    this._updateDisplayWithSelectedDates()\n  }\n\n  _updateDisplayWithSelectedDates() {\n    const { selectedDates } = this._config\n    if (!selectedDates || selectedDates.length === 0) {\n      return\n    }\n\n    const formattedDate = this._formatDateForInput(selectedDates)\n\n    if (this._isInput) {\n      this._element.value = formattedDate\n    }\n\n    if (this._boundInput) {\n      this._boundInput.value = selectedDates.join(',')\n    }\n\n    if (this._displayElement) {\n      this._displayElement.textContent = formattedDate\n    }\n  }\n\n  _resolvePositionElement() {\n    let { positionElement } = this._config\n\n    if (typeof positionElement === 'string') {\n      positionElement = document.querySelector(positionElement)\n    }\n\n    // Use input's parent if in form-adorn\n    if (!positionElement && this._isInput && !this._isInline) {\n      const parent = this._element.closest('.form-adorn')\n      if (parent) {\n        positionElement = parent\n      }\n    }\n\n    return positionElement || this._element\n  }\n\n  _resolveDisplayElement() {\n    const { displayElement } = this._config\n\n    if (typeof displayElement === 'string') {\n      return document.querySelector(displayElement)\n    }\n\n    // For buttons/non-inputs (not inline), look for a [data-bs-datepicker-display] child\n    if (displayElement === true || (displayElement === null && !this._isInput && !this._isInline)) {\n      const displayChild = this._element.querySelector('[data-bs-datepicker-display]')\n      return displayChild || this._element\n    }\n\n    return displayElement\n  }\n\n  _getThemeAncestor() {\n    return this._element.closest('[data-bs-theme]')\n  }\n\n  _getEffectiveTheme() {\n    // Priority: explicit datepickerTheme config > inherited from ancestor > none\n    const { datepickerTheme } = this._config\n    if (datepickerTheme) {\n      return datepickerTheme\n    }\n\n    const ancestor = this._getThemeAncestor()\n    return ancestor?.getAttribute('data-bs-theme') || null\n  }\n\n  _syncThemeAttribute(element) {\n    if (!element) {\n      return\n    }\n\n    const theme = this._getEffectiveTheme()\n\n    if (theme) {\n      // Copy theme to popover (needed because VCP appends to body, breaking CSS inheritance)\n      element.setAttribute('data-bs-theme', theme)\n    } else {\n      // No theme - remove attribute to allow natural inheritance\n      element.removeAttribute('data-bs-theme')\n    }\n  }\n\n  _setupThemeObserver() {\n    // Watch for theme changes on ancestor elements\n    const ancestor = this._getThemeAncestor()\n    if (!ancestor || this._config.datepickerTheme) {\n      // No ancestor to watch, or explicit datepickerTheme overrides\n      return\n    }\n\n    this._themeObserver = new MutationObserver(() => {\n      this._syncThemeAttribute(this._calendar?.context?.mainElement)\n    })\n\n    this._themeObserver.observe(ancestor, {\n      attributes: true,\n      attributeFilter: ['data-bs-theme']\n    })\n  }\n\n  _buildCalendarOptions() {\n    // Get theme for VCP - use 'system' for auto-detection if no explicit theme\n    const theme = this._getEffectiveTheme()\n    // VCP uses 'system' for auto, Bootstrap uses 'auto'\n    const vcpTheme = !theme || theme === 'auto' ? 'system' : theme\n\n    const calendarOptions = {\n      ...this._config.vcpOptions,\n      inputMode: !this._isInline,\n      positionToInput: this._config.placement,\n      firstWeekday: this._config.firstWeekday,\n      locale: this._config.locale,\n      selectionDatesMode: this._config.selectionMode,\n      selectedDates: this._config.selectedDates,\n      displayMonthsCount: this._config.displayMonthsCount,\n      type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',\n      selectedTheme: vcpTheme,\n      themeAttrDetect: '[data-bs-theme]',\n      onClickDate: (self, event) => this._handleDateClick(self, event),\n      onInit: self => {\n        this._syncThemeAttribute(self.context.mainElement)\n      },\n      onShow: () => {\n        this._isShown = true\n        this._syncThemeAttribute(this._calendar.context.mainElement)\n      },\n      onHide: () => {\n        this._isShown = false\n      }\n    }\n\n    // Navigate to the month of the first selected date\n    if (this._config.selectedDates.length > 0) {\n      const firstDate = this._parseDate(this._config.selectedDates[0])\n      calendarOptions.selectedMonth = firstDate.getMonth()\n      calendarOptions.selectedYear = firstDate.getFullYear()\n    }\n\n    if (this._config.dateMin) {\n      calendarOptions.dateMin = this._config.dateMin\n    }\n\n    if (this._config.dateMax) {\n      calendarOptions.dateMax = this._config.dateMax\n    }\n\n    return calendarOptions\n  }\n\n  _handleDateClick(self, event) {\n    const selectedDates = [...self.context.selectedDates]\n\n    if (selectedDates.length > 0) {\n      const formattedDate = this._formatDateForInput(selectedDates)\n\n      if (this._isInput) {\n        this._element.value = formattedDate\n      }\n\n      if (this._boundInput) {\n        this._boundInput.value = selectedDates.join(',')\n      }\n\n      if (this._displayElement) {\n        this._displayElement.textContent = formattedDate\n      }\n    }\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      dates: selectedDates,\n      event\n    })\n\n    this._maybeHideAfterSelection(selectedDates)\n  }\n\n  _maybeHideAfterSelection(selectedDates) {\n    if (this._isInline) {\n      return\n    }\n\n    const shouldHide =\n      (this._config.selectionMode === 'single' && selectedDates.length > 0) ||\n      (this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2)\n\n    if (shouldHide) {\n      setTimeout(() => this.hide(), HIDE_DELAY)\n    }\n  }\n\n  _parseDate(dateStr) {\n    const [year, month, day] = dateStr.split('-')\n    return new Date(year, month - 1, day)\n  }\n\n  _formatDate(dateStr) {\n    const date = this._parseDate(dateStr)\n    const locale = this._config.locale === 'default' ? undefined : this._config.locale\n    const { dateFormat } = this._config\n\n    // Custom function formatter\n    if (typeof dateFormat === 'function') {\n      return dateFormat(date, locale)\n    }\n\n    // Intl.DateTimeFormat options object\n    if (dateFormat && typeof dateFormat === 'object') {\n      return new Intl.DateTimeFormat(locale, dateFormat).format(date)\n    }\n\n    // Default: locale-aware formatting\n    return date.toLocaleDateString(locale)\n  }\n\n  _formatDateForInput(dates) {\n    if (dates.length === 0) {\n      return ''\n    }\n\n    if (dates.length === 1) {\n      return this._formatDate(dates[0])\n    }\n\n    // For date ranges, use en-dash; for multiple dates, use comma\n    const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', '\n    return dates.map(d => this._formatDate(d)).join(separator)\n  }\n\n  _parseInputValue() {\n    // Try to parse the input value as a date\n    const value = this._element.value.trim()\n    if (!value) {\n      return\n    }\n\n    const date = new Date(value)\n    if (!Number.isNaN(date.getTime())) {\n      const year = date.getFullYear()\n      const month = String(date.getMonth() + 1).padStart(2, '0')\n      const day = String(date.getDate()).padStart(2, '0')\n      const formatted = `${year}-${month}-${day}`\n      this._calendar.set({ selectedDates: [formatted] })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // Only handle if not an input (inputs use focus)\n  // Skip inline datepickers (they're always visible)\n  if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true') {\n    return\n  }\n\n  event.preventDefault()\n  Datepicker.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE, function () {\n  // Handle focus for input elements\n  if (this.tagName !== 'INPUT') {\n    return\n  }\n\n  Datepicker.getOrCreateInstance(this).show()\n})\n\n// Auto-initialize inline datepickers on DOMContentLoaded\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE}[data-bs-inline=\"true\"]`)) {\n    Datepicker.getOrCreateInstance(element)\n  }\n})\n\nexport default Datepicker\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dialog'\nconst DATA_KEY = 'bs.dialog'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_STATIC = 'dialog-static'\nconst CLASS_NAME_OPEN = 'dialog-open'\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\nconst SELECTOR_OPEN_MODAL_DIALOG = 'dialog.dialog[open]:not(.dialog-nonmodal)'\n\nconst Default = {\n  backdrop: true, // true (click dismisses) or 'static' (click does nothing) - only applies to modal dialogs\n  keyboard: true,\n  modal: true // true uses showModal(), false uses show() for non-modal dialogs\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  modal: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Dialog extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._element.open ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n\n    if (this._config.modal) {\n      // Modal dialog: use showModal() for focus trapping, backdrop, and top layer\n      this._element.showModal()\n      // Prevent body scroll for modal dialogs\n      document.body.classList.add(CLASS_NAME_OPEN)\n    } else {\n      // Non-modal dialog: use show() - no backdrop, no focus trap, no top layer\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n      this._element.show()\n    }\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }, this._element, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n\n    this._queueCallback(() => this._hideDialog(), this._element, this._isAnimated())\n  }\n\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n    super.dispose()\n  }\n\n  handleUpdate() {\n    // Provided for API consistency with Modal.\n    // Native dialogs handle their own positioning.\n  }\n\n  // Private\n  _hideDialog() {\n    this._element.close()\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n    this._isTransitioning = false\n\n    // Only restore body scroll if no other modal dialogs are open\n    if (!document.querySelector(SELECTOR_OPEN_MODAL_DIALOG)) {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n    }\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains('fade')\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      this._element.classList.remove(CLASS_NAME_STATIC)\n    }, this._element)\n  }\n\n  _addEventListeners() {\n    // Handle native cancel event (Escape key) - only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      // Prevent native close behavior - we'll handle it\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_CANCEL)\n      this.hide()\n    })\n\n    // Handle Escape key for non-modal dialogs (native cancel doesn't fire for show())\n    EventHandler.on(this._element, 'keydown', event => {\n      if (event.key !== 'Escape' || this._config.modal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_CANCEL)\n      this.hide()\n    })\n\n    // Handle backdrop clicks (only applies to modal dialogs)\n    // Native <dialog> fires click on the dialog element when backdrop is clicked\n    EventHandler.on(this._element, 'click', event => {\n      // Only handle clicks directly on the dialog (backdrop area)\n      // Non-modal dialogs don't have a backdrop\n      if (event.target !== this._element || !this._config.modal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      // Default: click backdrop to dismiss\n      this.hide()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  // Get config from trigger's data attributes\n  const config = Manipulator.getDataAttributes(this)\n\n  // Check if trigger is inside an open dialog\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Open new dialog first (its backdrop appears over current)\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    newDialog.show(this)\n\n    // Close the current dialog (no backdrop flash since new one is already open)\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      currentInstance.hide()\n    }\n\n    return\n  }\n\n  const data = Dialog.getOrCreateInstance(target, config)\n  data.toggle(this)\n})\n\nenableDismissTrigger(Dialog)\n\nexport default Dialog\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n  return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rlPlacement : lrPlacement;\n      return isStart ? lrPlacement : rlPlacement;\n    case 'left':\n    case 'right':\n      return isStart ? tbPlacement : btPlacement;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n          if (!ignoreCrossAxisOverflow ||\n          // We leave the current main axis only if every placement on that axis\n          // overflows the main axis.\n          overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n            // Try next placement and re-run the lifecycle.\n            return {\n              data: {\n                index: nextIndex,\n                overflows: overflowsData\n              },\n              reset: {\n                placement: nextPlacement\n              }\n            };\n          }\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = originSides.has(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = originSides.has(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n  return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n  return topLayerSelectors.some(selector => {\n    try {\n      return element.matches(selector);\n    } catch (_e) {\n      return false;\n    }\n  });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n  const webkit = isWebKit();\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n  return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle$1(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  const windowScrollbarX = getWindowScrollBarX(html);\n  // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n  // visual width of the <html> but this is not considered in the size\n  // of `html.clientWidth`.\n  if (windowScrollbarX <= 0) {\n    const doc = html.ownerDocument;\n    const body = doc.body;\n    const bodyStyles = getComputedStyle(body);\n    const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n    const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n    if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n      width -= clippingStableScrollbarWidth;\n    }\n  } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n    // If the <body> scrollbar is on the left, the width needs to be extended\n    // by the scrollbar amount so there isn't extra space on the right.\n    width += windowScrollbarX;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n\n  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n  // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n  function setLeftRTLScrollbarOffset() {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      setLeftRTLScrollbarOffset();\n    }\n  }\n  if (isFixed && !isOffsetParentAnElement && documentElement) {\n    setLeftRTLScrollbarOffset();\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        // It's possible that even though the ratio is reported as 1, the\n        // element is not actually fully within the IntersectionObserver's root\n        // area anymore. This can happen under performance constraints. This may\n        // be a bug in the browser's IntersectionObserver implementation. To\n        // work around this, we compare the element's bounding rect now with\n        // what it was at the time we created the IntersectionObserver. If they\n        // are not equal then the element moved, so we refresh.\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/floating-ui.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isRTL } from './index.js'\n\n/**\n * Breakpoints for responsive placement (matches SCSS $breakpoints)\n */\nexport const BREAKPOINTS = {\n  sm: 576,\n  md: 768,\n  lg: 1024,\n  xl: 1280,\n  '2xl': 1536\n}\n\n/**\n * Default placement with RTL support\n */\nexport const getDefaultPlacement = (fallback = 'bottom') => {\n  if (fallback.includes('-start') || fallback.includes('-end')) {\n    const [side, alignment] = fallback.split('-')\n    const flippedAlignment = alignment === 'start' ? 'end' : 'start'\n    return isRTL() ? `${side}-${flippedAlignment}` : fallback\n  }\n\n  return fallback\n}\n\n/**\n * Parse a placement string that may contain responsive prefixes\n * Example: \"bottom-start md:top-end lg:right\" returns { xs: 'bottom-start', md: 'top-end', lg: 'right' }\n *\n * @param {string} placementString - The placement string to parse\n * @param {string} defaultPlacement - The default placement to use for xs/base\n * @returns {object|null} - Object with breakpoint keys and placement values, or null if not responsive\n */\nexport const parseResponsivePlacement = (placementString, defaultPlacement = 'bottom') => {\n  // Check if placement contains responsive prefixes (e.g., \"bottom-start md:top-end\")\n  if (!placementString || !placementString.includes(':')) {\n    return null\n  }\n\n  // Parse the placement string into breakpoint-keyed object\n  const parts = placementString.split(/\\s+/)\n  const placements = { xs: defaultPlacement } // Default fallback\n\n  for (const part of parts) {\n    if (part.includes(':')) {\n      // Responsive placement like \"md:top-end\"\n      const [breakpoint, placement] = part.split(':')\n      if (BREAKPOINTS[breakpoint] !== undefined) {\n        placements[breakpoint] = placement\n      }\n    } else {\n      // Base placement (no prefix = xs/default)\n      placements.xs = part\n    }\n  }\n\n  return placements\n}\n\n/**\n * Get the active placement for the current viewport width\n *\n * @param {object} responsivePlacements - Object with breakpoint keys and placement values\n * @param {string} defaultPlacement - Fallback placement\n * @returns {string} - The active placement for current viewport\n */\nexport const getResponsivePlacement = (responsivePlacements, defaultPlacement = 'bottom') => {\n  if (!responsivePlacements) {\n    return defaultPlacement\n  }\n\n  // Get current viewport width\n  const viewportWidth = window.innerWidth\n\n  // Find the largest breakpoint that matches\n  let activePlacement = responsivePlacements.xs || defaultPlacement\n\n  // Check breakpoints in order (sm, md, lg, xl, 2xl)\n  const breakpointOrder = ['sm', 'md', 'lg', 'xl', '2xl']\n\n  for (const breakpoint of breakpointOrder) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    if (viewportWidth >= minWidth && responsivePlacements[breakpoint]) {\n      activePlacement = responsivePlacements[breakpoint]\n    }\n  }\n\n  return activePlacement\n}\n\n/**\n * Create media query listeners for responsive placement changes\n *\n * @param {Function} callback - Callback to run when breakpoint changes\n * @returns {Array} - Array of { mql, handler } objects for cleanup\n */\nexport const createBreakpointListeners = callback => {\n  const listeners = []\n\n  for (const breakpoint of Object.keys(BREAKPOINTS)) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    const mql = window.matchMedia(`(min-width: ${minWidth}px)`)\n\n    mql.addEventListener('change', callback)\n    listeners.push({ mql, handler: callback })\n  }\n\n  return listeners\n}\n\n/**\n * Clean up media query listeners\n *\n * @param {Array} listeners - Array of { mql, handler } objects\n */\nexport const disposeBreakpointListeners = listeners => {\n  for (const { mql, handler } of listeners) {\n    mql.removeEventListener('change', handler)\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\nconst RIGHT_MOUSE_BUTTON = 2\n\n// Hover intent delay (ms) - grace period before closing submenu\nconst SUBMENU_CLOSE_DELAY = 100\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_SUBMENU = '.dropdown-submenu'\nconst SELECTOR_SUBMENU_TOGGLE = '.dropdown-submenu > .dropdown-item'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-item:not(.disabled):not(:disabled)'\n\n// Default logical placement (uses start/end which get resolved to left/right based on RTL)\nconst DEFAULT_PLACEMENT = 'bottom-start'\nconst SUBMENU_PLACEMENT = 'end-start'\n\n// Resolve logical placement (start/end) to physical (left/right) based on RTL\nconst resolveLogicalPlacement = placement => {\n  if (isRTL()) {\n    // RTL: start → right, end → left\n    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left')\n  }\n\n  // LTR: start → left, end → right\n  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right')\n}\n\n// Helper for barycentric coordinate calculation (point in triangle check)\nconst triangleSign = (p1, p2, p3) =>\n  ((p1.x - p3.x) * (p2.y - p3.y)) - ((p2.x - p3.x) * (p1.y - p3.y))\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  container: false,\n  display: 'dynamic',\n  offset: [0, 2],\n  floatingConfig: null,\n  placement: DEFAULT_PLACEMENT,\n  reference: 'toggle',\n  strategy: 'absolute',\n  // Submenu options\n  submenuTrigger: 'both', // 'click', 'hover', or 'both'\n  submenuDelay: SUBMENU_CLOSE_DELAY\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  display: 'string',\n  offset: '(array|string|function)',\n  floatingConfig: '(null|object|function)',\n  placement: 'string',\n  reference: '(string|element|object)',\n  strategy: 'string',\n  submenuTrigger: 'string',\n  submenuDelay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s dropdowns require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    this._floatingCleanup = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n    this._parent = this._element.parentNode // dropdown wrapper\n    this._isSubmenu = this._parent.classList.contains('dropdown-submenu')\n    this._openSubmenus = new Map() // Map of submenu element -> cleanup function\n    this._submenuCloseTimeouts = new Map() // Map of submenu element -> timeout ID\n    this._hoverIntentData = null // For safe triangle calculation\n\n    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n    this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n\n    // Store original menu parent for container option\n    this._menuOriginalParent = this._menu?.parentNode\n\n    // Parse responsive placements on init\n    this._parseResponsivePlacements()\n\n    // Set up submenu event listeners\n    this._setupSubmenuListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    // Move menu to container if specified (to escape overflow clipping)\n    this._moveMenuToContainer()\n\n    this._createFloating()\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', 'true')\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    this._parent.classList.add(CLASS_NAME_SHOW)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n    this._disposeMediaQueryListeners()\n    this._closeAllSubmenus()\n    this._clearAllSubmenuTimeouts()\n    super.dispose()\n  }\n\n  update() {\n    if (this._floatingCleanup) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Private\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    // Close all open submenus first\n    this._closeAllSubmenus()\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._disposeFloating()\n\n    // Restore menu to original parent if it was moved\n    this._restoreMenuToOriginalParent()\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._parent.classList.remove(CLASS_NAME_SHOW)\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'placement')\n    Manipulator.removeDataAttribute(this._menu, 'display')\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      // Floating UI virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createFloating() {\n    if (this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'display', 'static')\n      return\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    // Initial position update\n    this._updateFloatingPosition(referenceElement)\n\n    // Set up auto-update for scroll/resize\n    this._floatingCleanup = autoUpdate(\n      referenceElement,\n      this._menu,\n      () => this._updateFloatingPosition(referenceElement)\n    )\n  }\n\n  async _updateFloatingPosition(referenceElement = null) {\n    if (!this._menu) {\n      return\n    }\n\n    if (!referenceElement) {\n      if (this._config.reference === 'parent') {\n        referenceElement = this._parent\n      } else if (isElement(this._config.reference)) {\n        referenceElement = getElement(this._config.reference)\n      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference\n      } else {\n        referenceElement = this._element\n      }\n    }\n\n    const placement = this._getPlacement()\n    const middleware = this._getFloatingMiddleware()\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    await this._applyFloatingPosition(\n      referenceElement,\n      this._menu,\n      floatingConfig.placement,\n      floatingConfig.middleware,\n      floatingConfig.strategy\n    )\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    // If we have responsive placements, find the appropriate one for current viewport\n    const placement = this._responsivePlacements ?\n      getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) :\n      this._config.placement\n\n    // Resolve logical placements (start/end) to physical (left/right) based on RTL\n    return resolveLogicalPlacement(placement)\n  }\n\n  _parseResponsivePlacements() {\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT)\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  _getOffset() {\n    const { offset: offsetConfig } = this._config\n\n    if (typeof offsetConfig === 'string') {\n      return offsetConfig.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offsetConfig === 'function') {\n      // Floating UI passes different args, adapt the interface for offset function callbacks\n      return ({ placement, rects }) => {\n        const result = offsetConfig({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offsetConfig\n  }\n\n  _getFloatingMiddleware() {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      // Offset middleware - handles distance from reference\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      // Flip middleware - handles fallback placements\n      flip({\n        fallbackPlacements: this._getFallbackPlacements()\n      }),\n      // Shift middleware - prevents overflow\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    return middleware\n  }\n\n  _getFallbackPlacements() {\n    // Get appropriate fallback placements based on current placement\n    // Fallbacks should preserve alignment (start/end) when possible\n    const placement = this._getPlacement()\n\n    // Handle all possible Floating UI placements\n    const fallbackMap = {\n      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\n      'bottom-start': ['top-start', 'bottom-end', 'top-end'],\n      'bottom-end': ['top-end', 'bottom-start', 'top-start'],\n      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],\n      'top-start': ['bottom-start', 'top-end', 'bottom-end'],\n      'top-end': ['bottom-end', 'top-start', 'bottom-start'],\n      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],\n      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],\n      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],\n      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],\n      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],\n      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']\n    }\n\n    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left']\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware,\n      strategy: this._config.strategy\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n  }\n\n  _getContainer() {\n    const { container } = this._config\n    if (container === false) {\n      return null\n    }\n\n    return container === true ? document.body : getElement(container)\n  }\n\n  _moveMenuToContainer() {\n    const container = this._getContainer()\n    if (!container || !this._menu) {\n      return\n    }\n\n    // Only move if not already in the container\n    if (this._menu.parentNode !== container) {\n      container.append(this._menu)\n    }\n  }\n\n  _restoreMenuToOriginalParent() {\n    if (!this._menuOriginalParent || !this._menu) {\n      return\n    }\n\n    // Only restore if menu was moved\n    if (this._menu.parentNode !== this._menuOriginalParent) {\n      this._menuOriginalParent.append(this._menu)\n    }\n  }\n\n  // Shared helper for positioning any floating element\n  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {\n    if (!floating.isConnected) {\n      return null\n    }\n\n    const { x, y, placement: finalPlacement } = await computePosition(\n      reference,\n      floating,\n      { placement, middleware, strategy }\n    )\n\n    if (!floating.isConnected) {\n      return null\n    }\n\n    Object.assign(floating.style, {\n      position: strategy,\n      left: `${x}px`,\n      top: `${y}px`,\n      margin: '0'\n    })\n\n    Manipulator.setDataAttribute(floating, 'placement', finalPlacement)\n    return finalPlacement\n  }\n\n  // -------------------------------------------------------------------------\n  // Submenu handling\n  // -------------------------------------------------------------------------\n\n  _setupSubmenuListeners() {\n    // Set up hover listeners for submenu triggers\n    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerEnter(event)\n      })\n\n      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {\n        this._onSubmenuLeave(event)\n      })\n\n      // Track mouse movement for safe triangle calculation\n      EventHandler.on(this._menu, 'mousemove', event => {\n        this._trackMousePosition(event)\n      })\n    }\n\n    // Set up click listener for submenu triggers\n    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerClick(event)\n      })\n    }\n  }\n\n  _onSubmenuTriggerEnter(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    // Cancel any pending close timeout for this submenu\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    // Close other open submenus at the same level\n    this._closeSiblingSubmenus(submenuWrapper)\n\n    // Open this submenu\n    this._openSubmenu(trigger, submenu, submenuWrapper)\n  }\n\n  _onSubmenuLeave(event) {\n    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu || !this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    // Check if we're moving toward the submenu (safe triangle)\n    if (this._isMovingTowardSubmenu(event, submenu)) {\n      return\n    }\n\n    // Schedule submenu close with delay\n    this._scheduleSubmenuClose(submenu, submenuWrapper)\n  }\n\n  _onSubmenuTriggerClick(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    // Toggle submenu\n    if (this._openSubmenus.has(submenu)) {\n      this._closeSubmenu(submenu, submenuWrapper)\n    } else {\n      this._closeSiblingSubmenus(submenuWrapper)\n      this._openSubmenu(trigger, submenu, submenuWrapper)\n    }\n  }\n\n  _openSubmenu(trigger, submenu, submenuWrapper) {\n    if (this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    // Set ARIA attributes\n    trigger.setAttribute('aria-expanded', 'true')\n    trigger.setAttribute('aria-haspopup', 'true')\n\n    // Position and show submenu\n    submenu.classList.add(CLASS_NAME_SHOW)\n    submenuWrapper.classList.add(CLASS_NAME_SHOW)\n\n    // Set up Floating UI positioning for submenu\n    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper)\n    this._openSubmenus.set(submenu, cleanup)\n\n    // Set up mouseenter on submenu to cancel close timeout\n    EventHandler.on(submenu, 'mouseenter', () => {\n      this._cancelSubmenuCloseTimeout(submenu)\n    })\n  }\n\n  _closeSubmenu(submenu, submenuWrapper) {\n    if (!this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    // Close any nested submenus first\n    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, submenu)\n    for (const nested of nestedSubmenus) {\n      const nestedWrapper = nested.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(nested, nestedWrapper)\n    }\n\n    // Get the trigger\n    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper)\n\n    // Clean up Floating UI\n    const cleanup = this._openSubmenus.get(submenu)\n    if (cleanup) {\n      cleanup()\n    }\n\n    this._openSubmenus.delete(submenu)\n\n    // Remove event listeners\n    EventHandler.off(submenu, 'mouseenter')\n\n    // Update ARIA and visibility\n    if (trigger) {\n      trigger.setAttribute('aria-expanded', 'false')\n    }\n\n    submenu.classList.remove(CLASS_NAME_SHOW)\n    submenuWrapper.classList.remove(CLASS_NAME_SHOW)\n\n    // Clear inline styles\n    submenu.style.position = ''\n    submenu.style.left = ''\n    submenu.style.top = ''\n    submenu.style.margin = ''\n  }\n\n  _closeAllSubmenus() {\n    for (const [submenu] of this._openSubmenus) {\n      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(submenu, submenuWrapper)\n    }\n  }\n\n  _closeSiblingSubmenus(currentSubmenuWrapper) {\n    // Find all sibling submenu wrappers and close their menus\n    const parent = currentSubmenuWrapper.parentNode\n    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, parent)\n\n    for (const siblingMenu of siblingSubmenus) {\n      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU)\n      if (siblingWrapper !== currentSubmenuWrapper) {\n        this._closeSubmenu(siblingMenu, siblingWrapper)\n      }\n    }\n  }\n\n  _createSubmenuFloating(trigger, submenu, submenuWrapper) {\n    const referenceElement = submenuWrapper\n    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT)\n    const middleware = [\n      offset({ mainAxis: 0, crossAxis: -4 }),\n      flip({\n        fallbackPlacements: [\n          resolveLogicalPlacement('start-start'),\n          resolveLogicalPlacement('end-end'),\n          resolveLogicalPlacement('start-end')\n        ]\n      }),\n      shift({ padding: 8 })\n    ]\n\n    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware)\n\n    updatePosition()\n    return autoUpdate(referenceElement, submenu, updatePosition)\n  }\n\n  _scheduleSubmenuClose(submenu, submenuWrapper) {\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    const timeoutId = setTimeout(() => {\n      this._closeSubmenu(submenu, submenuWrapper)\n      this._submenuCloseTimeouts.delete(submenu)\n    }, this._config.submenuDelay)\n\n    this._submenuCloseTimeouts.set(submenu, timeoutId)\n  }\n\n  _cancelSubmenuCloseTimeout(submenu) {\n    const timeoutId = this._submenuCloseTimeouts.get(submenu)\n    if (timeoutId) {\n      clearTimeout(timeoutId)\n      this._submenuCloseTimeouts.delete(submenu)\n    }\n  }\n\n  _clearAllSubmenuTimeouts() {\n    for (const timeoutId of this._submenuCloseTimeouts.values()) {\n      clearTimeout(timeoutId)\n    }\n\n    this._submenuCloseTimeouts.clear()\n  }\n\n  // -------------------------------------------------------------------------\n  // Hover intent / Safe triangle\n  // -------------------------------------------------------------------------\n\n  _trackMousePosition(event) {\n    this._hoverIntentData = {\n      x: event.clientX,\n      y: event.clientY,\n      timestamp: Date.now()\n    }\n  }\n\n  _isMovingTowardSubmenu(event, submenu) {\n    if (!this._hoverIntentData) {\n      return false\n    }\n\n    const submenuRect = submenu.getBoundingClientRect()\n    const currentPos = { x: event.clientX, y: event.clientY }\n    const lastPos = { x: this._hoverIntentData.x, y: this._hoverIntentData.y }\n\n    // Create a triangle from current position to submenu edges\n    // The triangle represents the \"safe zone\" for diagonal movement\n    const isRtl = isRTL()\n\n    // Determine which edge of the submenu to target based on direction\n    const targetX = isRtl ? submenuRect.right : submenuRect.left\n    const topCorner = { x: targetX, y: submenuRect.top }\n    const bottomCorner = { x: targetX, y: submenuRect.bottom }\n\n    // Check if cursor is moving toward the submenu\n    // by checking if the current position is within the safe triangle\n    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner)\n  }\n\n  _pointInTriangle(point, v1, v2, v3) {\n    // Barycentric coordinate method to check if point is inside triangle\n    const d1 = triangleSign(point, v1, v2)\n    const d2 = triangleSign(point, v2, v3)\n    const d3 = triangleSign(point, v3, v1)\n\n    const hasNeg = (d1 < 0) || (d2 < 0) || (d3 < 0)\n    const hasPos = (d1 > 0) || (d2 > 0) || (d3 > 0)\n\n    return !(hasNeg && hasPos)\n  }\n\n  // -------------------------------------------------------------------------\n  // Keyboard navigation\n  // -------------------------------------------------------------------------\n\n  _selectMenuItem({ key, target }) {\n    // Get items only from the current menu level (not nested submenus)\n    // If target is inside a menu, use that menu; otherwise use the main menu\n    const currentMenu = target.closest(SELECTOR_MENU) || this._menu\n    const items = SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n      .filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  _handleSubmenuKeydown(event) {\n    const { key, target } = event\n    const isRtl = isRTL()\n\n    // Determine the \"enter submenu\" and \"exit submenu\" keys based on RTL\n    const enterKey = isRtl ? ARROW_LEFT_KEY : ARROW_RIGHT_KEY\n    const exitKey = isRtl ? ARROW_RIGHT_KEY : ARROW_LEFT_KEY\n\n    // Check if target is a submenu trigger\n    const submenuWrapper = target.closest(SELECTOR_SUBMENU)\n    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    // Handle Enter/Space on submenu trigger\n    if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        // Focus first item in submenu\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    // Handle Right arrow (or Left in RTL) - enter submenu\n    if (key === enterKey && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        // Focus first item in submenu\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    // Handle Left arrow (or Right in RTL) - exit submenu\n    if (key === exitKey) {\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper) {\n        event.preventDefault()\n        event.stopPropagation()\n\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        this._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return true\n      }\n    }\n\n    // Handle Home/End keys\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const items = SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n        .filter(element => isVisible(element))\n\n      if (items.length) {\n        const targetItem = key === HOME_KEY ? items[0] : items[items.length - 1]\n        targetItem.focus()\n      }\n\n      return true\n    }\n\n    return false\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n    for (const toggle of openToggles) {\n      const context = Dropdown.getInstance(toggle)\n      if (!context || context._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(context._menu)\n      if (\n        composedPath.includes(context._element) ||\n        (context._config.autoClose === 'inside' && !isMenuTarget) ||\n        (context._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n      if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: context._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      context._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    // If not a relevant key => not a dropdown command\n    const isInput = /input|textarea/i.test(event.target.tagName)\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n    const isLeftOrRightEvent = [ARROW_LEFT_KEY, ARROW_RIGHT_KEY].includes(event.key)\n    const isHomeOrEndEvent = [HOME_KEY, END_KEY].includes(event.key)\n    const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key)\n\n    // Allow Enter/Space only on submenu triggers\n    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent &&\n        !(isEnterOrSpaceEvent && isSubmenuTrigger)) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    if (!getToggleButton) {\n      return\n    }\n\n    const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n    // Handle submenu navigation first\n    if ((isLeftOrRightEvent || isHomeOrEndEvent || (isEnterOrSpaceEvent && isSubmenuTrigger)) && instance._handleSubmenuKeydown(event)) {\n      return\n    }\n\n    // Handle Up/Down navigation\n    if (isUpOrDownEvent) {\n      event.preventDefault()\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    // Handle Escape\n    if (isEscapeEvent && instance._isShown()) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      // If in a submenu, close just that submenu\n      const currentMenu = event.target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        instance._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return\n      }\n\n      // Otherwise close the whole dropdown\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Dropdown.getOrCreateInstance(this).toggle()\n})\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap nav-overflow.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'navoverflow'\nconst DATA_KEY = 'bs.navoverflow'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_UPDATE = `update${EVENT_KEY}`\nconst EVENT_OVERFLOW = `overflow${EVENT_KEY}`\n\nconst CLASS_NAME_OVERFLOW = 'nav-overflow'\nconst CLASS_NAME_OVERFLOW_MENU = 'nav-overflow-menu'\nconst CLASS_NAME_HIDDEN = 'd-none'\n\nconst SELECTOR_NAV_ITEM = '.nav-item'\nconst SELECTOR_NAV_LINK = '.nav-link'\nconst SELECTOR_OVERFLOW_TOGGLE = '.nav-overflow-toggle'\nconst SELECTOR_OVERFLOW_MENU = '.nav-overflow-menu'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  moreText: 'More',\n  moreIcon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\"><path d=\"M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3\"/></svg>',\n  threshold: 0 // Minimum items to keep visible before showing overflow\n}\n\nconst DefaultType = {\n  moreText: 'string',\n  moreIcon: 'string',\n  threshold: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass NavOverflow extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._items = []\n    this._overflowItems = []\n    this._overflowMenu = null\n    this._overflowToggle = null\n    this._resizeObserver = null\n    this._isInitialized = false\n\n    this._init()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._calculateOverflow()\n    EventHandler.trigger(this._element, EVENT_UPDATE)\n  }\n\n  dispose() {\n    if (this._resizeObserver) {\n      this._resizeObserver.disconnect()\n    }\n\n    // Move items back to original positions\n    this._restoreItems()\n\n    // Remove overflow menu\n    if (this._overflowToggle && this._overflowToggle.parentElement) {\n      this._overflowToggle.parentElement.remove()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _init() {\n    // Add overflow class to nav\n    this._element.classList.add(CLASS_NAME_OVERFLOW)\n\n    // Get all nav items\n    this._items = [...SelectorEngine.find(SELECTOR_NAV_ITEM, this._element)]\n\n    // Store original order data\n    for (const [index, item] of this._items.entries()) {\n      item.dataset.bsNavOrder = index\n    }\n\n    // Create overflow dropdown if it doesn't exist\n    this._createOverflowMenu()\n\n    // Setup resize observer\n    this._setupResizeObserver()\n\n    // Initial calculation\n    this._calculateOverflow()\n\n    this._isInitialized = true\n  }\n\n  _createOverflowMenu() {\n    // Check if overflow menu already exists\n    this._overflowToggle = SelectorEngine.findOne(SELECTOR_OVERFLOW_TOGGLE, this._element)\n\n    if (this._overflowToggle) {\n      this._overflowMenu = SelectorEngine.findOne(SELECTOR_OVERFLOW_MENU, this._element)\n      return\n    }\n\n    // Create the overflow dropdown item\n    const overflowItem = document.createElement('li')\n    overflowItem.className = 'nav-item nav-overflow-item dropdown'\n    overflowItem.innerHTML = `\n      <button class=\"nav-link nav-overflow-toggle dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" data-bs-container=\"body\" data-bs-strategy=\"fixed\" aria-expanded=\"false\">\n        <span class=\"nav-overflow-icon\">${this._config.moreIcon}</span>\n        <span class=\"nav-overflow-text\">${this._config.moreText}</span>\n      </button>\n      <ul class=\"${CLASS_NAME_OVERFLOW_MENU} dropdown-menu dropdown-menu-end\"></ul>\n    `\n\n    this._element.append(overflowItem)\n    this._overflowToggle = overflowItem.querySelector(SELECTOR_OVERFLOW_TOGGLE)\n    this._overflowMenu = overflowItem.querySelector(SELECTOR_OVERFLOW_MENU)\n  }\n\n  _setupResizeObserver() {\n    if (typeof ResizeObserver === 'undefined') {\n      // Fallback for older browsers\n      EventHandler.on(window, 'resize', () => this._calculateOverflow())\n      return\n    }\n\n    this._resizeObserver = new ResizeObserver(() => {\n      this._calculateOverflow()\n    })\n\n    this._resizeObserver.observe(this._element)\n  }\n\n  _calculateOverflow() {\n    // First, restore all items to measure properly\n    this._restoreItems()\n\n    const navWidth = this._element.offsetWidth\n    const overflowItem = this._overflowToggle?.closest('.nav-item')\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      const itemWidth = item.offsetWidth\n      usedWidth += itemWidth\n\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      if (usedWidth > overflowThreshold) {\n        itemsToOverflow.push(item)\n      }\n    }\n\n    // Check if we need threshold minimum visible\n    const visibleCount = this._items.length - itemsToOverflow.length\n    if (visibleCount < this._config.threshold && this._items.length > this._config.threshold) {\n      // Add more items to overflow until we reach threshold (but not keep items)\n      const toMove = this._items.slice(this._config.threshold).filter(item => !item.classList.contains(CLASS_NAME_KEEP))\n      itemsToOverflow.length = 0\n      itemsToOverflow.push(...toMove)\n    }\n\n    // Move items to overflow menu\n    this._moveToOverflow(itemsToOverflow)\n\n    // Show/hide overflow toggle\n    if (overflowItem) {\n      if (itemsToOverflow.length > 0) {\n        overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n      } else {\n        overflowItem.classList.add(CLASS_NAME_HIDDEN)\n      }\n    }\n\n    // Trigger overflow event if items changed\n    if (itemsToOverflow.length > 0) {\n      EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n        overflowCount: itemsToOverflow.length,\n        visibleCount: this._items.length - itemsToOverflow.length\n      })\n    }\n  }\n\n  _moveToOverflow(items) {\n    if (!this._overflowMenu) {\n      return\n    }\n\n    // Clear existing overflow items\n    this._overflowMenu.innerHTML = ''\n    this._overflowItems = []\n\n    for (const item of items) {\n      // Clone the nav link as a dropdown item\n      const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item)\n      if (!link) {\n        continue\n      }\n\n      const dropdownItem = document.createElement('li')\n      const clonedLink = link.cloneNode(true)\n      clonedLink.className = 'dropdown-item'\n\n      // Preserve active state\n      if (link.classList.contains('active')) {\n        clonedLink.classList.add('active')\n      }\n\n      // Preserve disabled state\n      if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {\n        clonedLink.classList.add('disabled')\n      }\n\n      dropdownItem.append(clonedLink)\n      this._overflowMenu.append(dropdownItem)\n\n      // Hide original item\n      item.classList.add(CLASS_NAME_HIDDEN)\n      item.dataset.bsNavOverflow = 'true'\n\n      this._overflowItems.push(item)\n    }\n  }\n\n  _restoreItems() {\n    for (const item of this._items) {\n      item.classList.remove(CLASS_NAME_HIDDEN)\n      delete item.dataset.bsNavOverflow\n    }\n\n    if (this._overflowMenu) {\n      this._overflowMenu.innerHTML = ''\n    }\n\n    this._overflowItems = []\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const element of SelectorEngine.find('[data-bs-toggle=\"nav-overflow\"]')) {\n    NavOverflow.getOrCreateInstance(element)\n  }\n})\n\nexport default NavOverflow\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport {\n  execute, executeAfterTransition, getElement, reflow\n} from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n  className: 'modal-backdrop',\n  clickCallback: null,\n  isAnimated: false,\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n  className: 'string',\n  clickCallback: '(function|null)',\n  isAnimated: 'boolean',\n  isVisible: 'boolean',\n  rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    const element = this._getElement()\n    if (this._config.isAnimated) {\n      reflow(element)\n    }\n\n    element.classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  // Private\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = this._config.className\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _configAfterMerge(config) {\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    const element = this._getElement()\n    this._config.rootElement.append(element)\n\n    EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n  autofocus: true,\n  trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n  autofocus: 'boolean',\n  trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isActive = false\n    this._lastTabNavDirection = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  activate() {\n    if (this._isActive) {\n      return\n    }\n\n    if (this._config.autofocus) {\n      this._config.trapElement.focus()\n    }\n\n    EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n    this._isActive = true\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return\n    }\n\n    this._isActive = false\n    EventHandler.off(document, EVENT_KEY)\n  }\n\n  // Private\n  _handleFocusin(event) {\n    const { trapElement } = this._config\n\n    if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n      return\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement)\n\n    if (elements.length === 0) {\n      trapElement.focus()\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus()\n    } else {\n      elements[0].focus()\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n  }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  // Public\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n\n  // Private\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProperty, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProperty)\n      const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n      element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _saveInitialAttribute(element, styleProperty) {\n    const actualValue = element.style.getPropertyValue(styleProperty)\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProperty, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProperty) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProperty)\n      // We only want to remove the property if the value is `null`; the value can also be zero\n      if (value === null) {\n        element.style.removeProperty(styleProperty)\n        return\n      }\n\n      Manipulator.removeDataAttribute(element, styleProperty)\n      element.style.setProperty(styleProperty, value)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n      return\n    }\n\n    for (const sel of SelectorEngine.find(selector, this._element)) {\n      callBack(sel)\n    }\n  }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n  isDisabled,\n  isVisible\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n    }\n\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    const completeCallBack = () => {\n      if (!this._config.scroll || this._config.backdrop) {\n        this._focustrap.activate()\n      }\n\n      this._element.classList.add(CLASS_NAME_SHOW)\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._focustrap.deactivate()\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.add(CLASS_NAME_HIDING)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  // Private\n  _initializeBackDrop() {\n    const clickCallback = () => {\n      if (this._config.backdrop === 'static') {\n        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n        return\n      }\n\n      this.hide()\n    }\n\n    // 'static' option will be translated to true, and booleans will keep their value\n    const isVisible = Boolean(this._config.backdrop)\n\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: isVisible ? clickCallback : null\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (event.key !== ESCAPE_KEY) {\n        return\n      }\n\n      if (this._config.keyboard) {\n        this.hide()\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (alreadyOpen && alreadyOpen !== target) {\n    Offcanvas.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n    Offcanvas.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Offcanvas.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap strength.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'strength'\nconst DATA_KEY = 'bs.strength'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_STRENGTH_CHANGE = `strengthChange${EVENT_KEY}`\n\nconst SELECTOR_DATA_STRENGTH = '[data-bs-strength]'\n\nconst STRENGTH_LEVELS = ['weak', 'fair', 'good', 'strong']\n\nconst Default = {\n  input: null, // Selector or element for password input\n  minLength: 8,\n  messages: {\n    weak: 'Weak',\n    fair: 'Fair',\n    good: 'Good',\n    strong: 'Strong'\n  },\n  weights: {\n    minLength: 1,\n    extraLength: 1,\n    lowercase: 1,\n    uppercase: 1,\n    numbers: 1,\n    special: 1,\n    multipleSpecial: 1,\n    longPassword: 1\n  },\n  thresholds: [2, 4, 6], // weak ≤2, fair ≤4, good ≤6, strong >6\n  scorer: null // Custom scoring function (password) => number\n}\n\nconst DefaultType = {\n  input: '(string|element|null)',\n  minLength: 'number',\n  messages: 'object',\n  weights: 'object',\n  thresholds: 'array',\n  scorer: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Strength extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = this._getInput()\n    this._segments = SelectorEngine.find('.strength-segment', this._element)\n    this._textElement = SelectorEngine.findOne('.strength-text', this._element.parentElement)\n    this._currentStrength = null\n\n    if (this._input) {\n      this._addEventListeners()\n      // Check initial value\n      this._evaluate()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getStrength() {\n    return this._currentStrength\n  }\n\n  evaluate() {\n    this._evaluate()\n  }\n\n  // Private\n  _getInput() {\n    if (this._config.input) {\n      return typeof this._config.input === 'string' ?\n        SelectorEngine.findOne(this._config.input) :\n        this._config.input\n    }\n\n    // Look for preceding password input\n    const parent = this._element.parentElement\n    return SelectorEngine.findOne('input[type=\"password\"]', parent)\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, 'input', () => this._evaluate())\n    EventHandler.on(this._input, 'change', () => this._evaluate())\n  }\n\n  _evaluate() {\n    const password = this._input.value\n    const score = this._calculateScore(password)\n    const strength = this._scoreToStrength(score)\n\n    if (strength !== this._currentStrength) {\n      this._currentStrength = strength\n      this._updateUI(strength, score)\n\n      EventHandler.trigger(this._element, EVENT_STRENGTH_CHANGE, {\n        strength,\n        score,\n        password: password.length > 0 ? '***' : '' // Don't expose actual password\n      })\n    }\n  }\n\n  _calculateScore(password) {\n    if (!password) {\n      return 0\n    }\n\n    // Use custom scorer if provided\n    if (typeof this._config.scorer === 'function') {\n      return this._config.scorer(password)\n    }\n\n    const { weights } = this._config\n    let score = 0\n\n    // Length scoring\n    if (password.length >= this._config.minLength) {\n      score += weights.minLength\n    }\n\n    if (password.length >= this._config.minLength + 4) {\n      score += weights.extraLength\n    }\n\n    // Character variety\n    if (/[a-z]/.test(password)) {\n      score += weights.lowercase\n    }\n\n    if (/[A-Z]/.test(password)) {\n      score += weights.uppercase\n    }\n\n    if (/\\d/.test(password)) {\n      score += weights.numbers\n    }\n\n    // Special characters\n    if (/[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.special\n    }\n\n    // Extra points for more special chars or length\n    if (/[!@#$%^&*(),.?\":{}|<>].*[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.multipleSpecial\n    }\n\n    if (password.length >= 16) {\n      score += weights.longPassword\n    }\n\n    return score\n  }\n\n  _scoreToStrength(score) {\n    if (score === 0) {\n      return null\n    }\n\n    const [weak, fair, good] = this._config.thresholds\n\n    if (score <= weak) {\n      return 'weak'\n    }\n\n    if (score <= fair) {\n      return 'fair'\n    }\n\n    if (score <= good) {\n      return 'good'\n    }\n\n    return 'strong'\n  }\n\n  _updateUI(strength) {\n    // Update data attribute on element\n    if (strength) {\n      this._element.dataset.bsStrength = strength\n    } else {\n      delete this._element.dataset.bsStrength\n    }\n\n    // Update segmented meter\n    const strengthIndex = strength ? STRENGTH_LEVELS.indexOf(strength) : -1\n\n    for (const [index, segment] of this._segments.entries()) {\n      if (index <= strengthIndex) {\n        segment.classList.add('active')\n      } else {\n        segment.classList.remove('active')\n      }\n    }\n\n    // Update text feedback\n    if (this._textElement) {\n      if (strength && this._config.messages[strength]) {\n        this._textElement.textContent = this._config.messages[strength]\n        this._textElement.dataset.bsStrength = strength\n\n        // Also set the color via inheriting from parent or using CSS variable\n        const colorMap = {\n          weak: 'danger',\n          fair: 'warning',\n          good: 'info',\n          strong: 'success'\n        }\n        this._textElement.style.setProperty('--strength-color', `var(--${colorMap[strength]}-text)`)\n      } else {\n        this._textElement.textContent = ''\n        delete this._textElement.dataset.bsStrength\n      }\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_STRENGTH)) {\n    Strength.getOrCreateInstance(element)\n  }\n})\n\nexport default Strength\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap otp-input.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'otpInput'\nconst DATA_KEY = 'bs.otp-input'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\nconst Default = {\n  length: 6,\n  mask: false\n}\n\nconst DefaultType = {\n  length: 'number',\n  mask: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._inputs = SelectorEngine.find(SELECTOR_INPUT, this._element)\n    this._setupInputs()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getValue() {\n    return this._inputs.map(input => input.value).join('')\n  }\n\n  setValue(value) {\n    const chars = String(value).split('')\n    for (const [index, input] of this._inputs.entries()) {\n      input.value = chars[index] || ''\n    }\n\n    this._checkComplete()\n  }\n\n  clear() {\n    for (const input of this._inputs) {\n      input.value = ''\n    }\n\n    this._inputs[0]?.focus()\n  }\n\n  focus() {\n    // Focus first empty input, or last input if all filled\n    const emptyInput = this._inputs.find(input => !input.value)\n    if (emptyInput) {\n      emptyInput.focus()\n    } else {\n      this._inputs.at(-1)?.focus()\n    }\n  }\n\n  // Private\n  _setupInputs() {\n    for (const input of this._inputs) {\n      // Set attributes for proper OTP handling\n      input.setAttribute('maxlength', '1')\n      input.setAttribute('inputmode', 'numeric')\n      input.setAttribute('pattern', '\\\\d*')\n\n      // First input gets autocomplete for browser OTP autofill\n      if (input === this._inputs[0]) {\n        input.setAttribute('autocomplete', 'one-time-code')\n      } else {\n        input.setAttribute('autocomplete', 'off')\n      }\n\n      // Mask input if configured\n      if (this._config.mask) {\n        input.setAttribute('type', 'password')\n      }\n    }\n  }\n\n  _addEventListeners() {\n    for (const [index, input] of this._inputs.entries()) {\n      EventHandler.on(input, 'input', event => this._handleInput(event, index))\n      EventHandler.on(input, 'keydown', event => this._handleKeydown(event, index))\n      EventHandler.on(input, 'paste', event => this._handlePaste(event))\n      EventHandler.on(input, 'focus', event => this._handleFocus(event))\n    }\n  }\n\n  _handleInput(event, index) {\n    const input = event.target\n\n    // Only allow digits\n    if (!/^\\d*$/.test(input.value)) {\n      input.value = input.value.replace(/\\D/g, '')\n    }\n\n    const { value } = input\n\n    // Handle multi-character input (some browsers/autofill)\n    if (value.length > 1) {\n      // Distribute characters across inputs\n      const chars = value.split('')\n      input.value = chars[0] || ''\n\n      for (let i = 1; i < chars.length && index + i < this._inputs.length; i++) {\n        this._inputs[index + i].value = chars[i]\n      }\n\n      // Focus appropriate input\n      const nextIndex = Math.min(index + chars.length, this._inputs.length - 1)\n      this._inputs[nextIndex].focus()\n    } else if (value && index < this._inputs.length - 1) {\n      // Auto-advance to next input\n      this._inputs[index + 1].focus()\n    }\n\n    EventHandler.trigger(this._element, EVENT_INPUT, {\n      value: this.getValue(),\n      index\n    })\n\n    this._checkComplete()\n  }\n\n  _handleKeydown(event, index) {\n    const { key } = event\n\n    switch (key) {\n      case 'Backspace': {\n        if (!this._inputs[index].value && index > 0) {\n          // Move to previous input and clear it\n          event.preventDefault()\n          this._inputs[index - 1].value = ''\n          this._inputs[index - 1].focus()\n        }\n\n        break\n      }\n\n      case 'Delete': {\n        // Clear current and shift remaining values left\n        event.preventDefault()\n        for (let i = index; i < this._inputs.length - 1; i++) {\n          this._inputs[i].value = this._inputs[i + 1].value\n        }\n\n        this._inputs.at(-1).value = ''\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (index > 0) {\n          event.preventDefault()\n          this._inputs[index - 1].focus()\n        }\n\n        break\n      }\n\n      case 'ArrowRight': {\n        if (index < this._inputs.length - 1) {\n          event.preventDefault()\n          this._inputs[index + 1].focus()\n        }\n\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handlePaste(event) {\n    event.preventDefault()\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    const digits = pastedData.replace(/\\D/g, '').slice(0, this._inputs.length)\n\n    if (digits) {\n      this.setValue(digits)\n\n      // Focus last filled input or last input\n      const lastIndex = Math.min(digits.length, this._inputs.length) - 1\n      this._inputs[lastIndex].focus()\n    }\n  }\n\n  _handleFocus(event) {\n    // Select the content on focus for easy replacement\n    event.target.select()\n  }\n\n  _checkComplete() {\n    const value = this.getValue()\n    const isComplete = value.length === this._inputs.length &&\n      this._inputs.every(input => input.value !== '')\n\n    if (isComplete) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  dd: [],\n  div: [],\n  dl: [],\n  dt: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n      continue\n    }\n\n    const attributeList = [].concat(...element.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [undefined, this])\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  arrow,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport {\n  execute, findShadowRoot, getElement, getUID, isRTL, noop\n} from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tooltip\"]'\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 6],\n  placement: 'top',\n  floatingConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  floatingConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._floatingCleanup = null\n    this._templateFactory = null\n    this._newContent = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n\n    // Protected\n    this.tip = null\n\n    this._parseResponsivePlacements()\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposeFloating()\n    this._disposeMediaQueryListeners()\n    super.dispose()\n  }\n\n  async show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    this._disposeFloating()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    const { container } = this._config\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    await this._createFloating(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposeFloating()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._floatingCleanup && this.tip) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle())\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposeFloating()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement(tip) {\n    // If we have responsive placements, get the one for current viewport\n    if (this._responsivePlacements) {\n      const placement = getResponsivePlacement(this._responsivePlacements, 'top')\n      return AttachmentMap[placement.toUpperCase()] || placement\n    }\n\n    // Execute placement (can be a function)\n    const placement = execute(this._config.placement, [this, tip, this._element])\n    return AttachmentMap[placement.toUpperCase()] || placement\n  }\n\n  _parseResponsivePlacements() {\n    // Only parse if placement is a string (not a function)\n    if (typeof this._config.placement !== 'string') {\n      this._responsivePlacements = null\n      return\n    }\n\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, 'top')\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  async _createFloating(tip) {\n    const placement = this._getPlacement(tip)\n    const arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n\n    // Initial position update\n    await this._updateFloatingPosition(tip, placement, arrowElement)\n\n    // Set up auto-update for scroll/resize\n    this._floatingCleanup = autoUpdate(\n      this._element,\n      tip,\n      () => this._updateFloatingPosition(tip, null, arrowElement)\n    )\n  }\n\n  async _updateFloatingPosition(tip = this.tip, placement = null, arrowElement = null) {\n    if (!tip) {\n      return\n    }\n\n    if (!placement) {\n      placement = this._getPlacement(tip)\n    }\n\n    if (!arrowElement) {\n      arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n    }\n\n    const middleware = this._getFloatingMiddleware(arrowElement)\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    const { x, y, placement: finalPlacement, middlewareData } = await computePosition(\n      this._element,\n      tip,\n      floatingConfig\n    )\n\n    // Apply position to tooltip\n    Object.assign(tip.style, {\n      position: 'absolute',\n      left: `${x}px`,\n      top: `${y}px`\n    })\n\n    // Ensure arrow is absolutely positioned within tooltip\n    if (arrowElement) {\n      arrowElement.style.position = 'absolute'\n    }\n\n    // Set placement attribute for CSS arrow styling\n    Manipulator.setDataAttribute(tip, 'placement', finalPlacement)\n\n    // Position arrow along the edge (center it) if present\n    // The CSS handles which edge to place it on via data-bs-placement\n    if (arrowElement && middlewareData.arrow) {\n      const { x: arrowX, y: arrowY } = middlewareData.arrow\n      const isVertical = finalPlacement.startsWith('top') || finalPlacement.startsWith('bottom')\n\n      // Only set the cross-axis position (centering along the edge)\n      // The main-axis position (which edge) is handled by CSS\n      Object.assign(arrowElement.style, {\n        left: isVertical && arrowX !== null ? `${arrowX}px` : '',\n        top: !isVertical && arrowY !== null ? `${arrowY}px` : '',\n        // Reset the other axis to let CSS handle it\n        right: '',\n        bottom: ''\n      })\n    }\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      // Floating UI passes different args, adapt the interface for offset function callbacks\n      return ({ placement, rects }) => {\n        const result = offset({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this._element, this._element])\n  }\n\n  _getFloatingMiddleware(arrowElement) {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      // Offset middleware - handles distance from reference\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      // Flip middleware - handles fallback placements\n      flip({\n        fallbackPlacements: this._config.fallbackPlacements\n      }),\n      // Shift middleware - prevents overflow\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    // Arrow middleware - positions the arrow element\n    if (arrowElement) {\n      middleware.push(arrow({ element: arrowElement }))\n    }\n\n    return middleware\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK])\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const [key, value] of Object.entries(this._config)) {\n      if (this.constructor.Default[key] !== value) {\n        config[key] = value\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n}\n\n/**\n * Data API implementation - auto-initialize tooltips\n */\n\nconst initTooltip = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Get or create instance and trigger the appropriate action\n  const tooltip = Tooltip.getOrCreateInstance(target)\n\n  // For focus events, manually trigger enter to show\n  if (event.type === 'focusin') {\n    tooltip._activeTrigger.focus = true\n    tooltip._enter()\n  }\n}\n\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initTooltip)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initTooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"popover\"]'\n\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_MOUSEENTER = 'mouseenter'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return this._getTitle() || this._getContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n}\n\n/**\n * Data API implementation - auto-initialize popovers\n */\n\nconst initPopover = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Prevent default for click events to avoid navigation\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Get or create instance\n  const popover = Popover.getOrCreateInstance(target)\n\n  // Trigger the appropriate action based on event type\n  if (event.type === 'click') {\n    popover.toggle()\n  } else if (event.type === 'focusin') {\n    popover._activeTrigger.focus = true\n    popover._enter()\n  }\n}\n\n// Support click (default), hover, and focus triggers\nEventHandler.on(document, EVENT_CLICK, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initPopover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n  rootMargin: '0px 0px -25%',\n  smoothScroll: false,\n  target: null,\n  threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n  rootMargin: 'string',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n    this._activeTarget = null\n    this._observer = null\n    this._previousScrollData = {\n      visibleEntryTop: 0,\n      parentScrollTop: 0\n    }\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    } else {\n      this._observer = this._getNewObserver()\n    }\n\n    for (const section of this._observableSections.values()) {\n      this._observer.observe(section)\n    }\n  }\n\n  dispose() {\n    this._observer.disconnect()\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.target = getElement(config.target) || document.body\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // unregister any previous listeners\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const observableSection = this._observableSections.get(event.target.hash)\n      if (observableSection) {\n        event.preventDefault()\n        const root = this._rootElement || window\n        const height = observableSection.offsetTop - this._element.offsetTop\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'smooth' })\n          return\n        }\n\n        // Chrome 60 doesn't support `scrollTo`\n        root.scrollTop = height\n      }\n    })\n  }\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin\n    }\n\n    return new IntersectionObserver(entries => this._observerCallback(entries), options)\n  }\n\n  // The logic of selection\n  _observerCallback(entries) {\n    const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n    const activate = entry => {\n      this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n      this._process(targetElement(entry))\n    }\n\n    const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n    const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n    this._previousScrollData.parentScrollTop = parentScrollTop\n\n    for (const entry of entries) {\n      if (!entry.isIntersecting) {\n        this._activeTarget = null\n        this._clearActiveClass(targetElement(entry))\n\n        continue\n      }\n\n      const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n      // if we are scrolling down, pick the bigger offsetTop\n      if (userScrollsDown && entryIsLowerThanPrevious) {\n        activate(entry)\n        // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n        if (!parentScrollTop) {\n          return\n        }\n\n        continue\n      }\n\n      // if we are scrolling up, pick the smallest offsetTop\n      if (!userScrollsDown && !entryIsLowerThanPrevious) {\n        activate(entry)\n      }\n    }\n  }\n\n  _initializeTargetsAndObservables() {\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n    for (const anchor of targetLinks) {\n      // ensure that the anchor has an id and is not disabled\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element)\n\n      // ensure that the observableSection exists & is visible\n      if (isVisible(observableSection)) {\n        this._targetLinks.set(decodeURI(anchor.hash), anchor)\n        this._observableSections.set(anchor.hash, observableSection)\n      }\n    }\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate dropdown parents\n    if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n        .classList.add(CLASS_NAME_ACTIVE)\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_TAB_PANEL}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleDropDown(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleDropDown(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n\n    const children = this._getChildren().filter(element => !isDisabled(element))\n    let nextActiveElement\n\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n    }\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n    }\n  }\n\n  _toggleDropDown(element, open) {\n    const outerElem = this._getOuterElement(element)\n    if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n      return\n    }\n\n    const toggle = (selector, className) => {\n      const element = SelectorEngine.findOne(selector, outerElem)\n      if (element) {\n        element.classList.toggle(className, open)\n      }\n    }\n\n    toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n    toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n    outerElem.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toggler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { eventActionOnPlugin } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toggler'\nconst DATA_KEY = 'bs.toggler'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_TOGGLE = `toggle${EVENT_KEY}`\nconst EVENT_TOGGLED = `toggled${EVENT_KEY}`\nconst EVENT_CLICK = 'click'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"toggler\"]'\n\nconst DefaultType = {\n  attribute: 'string',\n  value: '(string|number|boolean)'\n}\n\nconst Default = {\n  attribute: 'class',\n  value: null\n}\n\n/**\n * Class definition\n */\n\nclass Toggler extends BaseComponent {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    const toggleEvent = EventHandler.trigger(this._element, EVENT_TOGGLE)\n\n    if (toggleEvent.defaultPrevented) {\n      return\n    }\n\n    this._execute()\n\n    EventHandler.trigger(this._element, EVENT_TOGGLED)\n  }\n\n  // Private\n  _execute() {\n    const { attribute, value } = this._config\n\n    if (attribute === 'id') {\n      return // You have to be kidding\n    }\n\n    if (attribute === 'class') {\n      this._element.classList.toggle(value)\n      return\n    }\n\n    // Compare as strings since getAttribute() always returns a string\n    if (this._element.getAttribute(attribute) === String(value)) {\n      this._element.removeAttribute(attribute)\n      return\n    }\n\n    this._element.setAttribute(attribute, value)\n  }\n}\n\n/**\n * Data API implementation\n */\n\neventActionOnPlugin(Toggler, EVENT_CLICK, SELECTOR_DATA_TOGGLE, 'toggle')\n\nexport default Toggler\n"],"names":["elementMap","Map","set","element","key","instance","has","instanceMap","get","size","console","error","Array","from","keys","remove","delete","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","bootstrapHandler","fn","handler","event","hydrateObj","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","selector","domElements","querySelectorAll","target","parentNode","domElement","findHandler","events","callable","delegationSelector","Object","values","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","replace","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","length","elementEvent","slice","keyHandlers","trigger","args","evt","Event","bubbles","cancelable","dispatchEvent","obj","meta","value","defineProperty","configurable","normalizeData","Number","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","getAttribute","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","window","CSS","escape","match","id","toType","object","undefined","prototype","getUID","prefix","Math","floor","random","document","getElementById","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","isElement","nodeType","getElement","querySelector","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","isDisabled","Node","ELEMENT_NODE","classList","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","isRTL","dir","execute","possibleCallback","defaultValue","executeAfterTransition","callback","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","Config","Default","DefaultType","NAME","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","VERSION","BaseComponent","_element","_config","Data","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","eventName","name","getSelector","hrefAttribute","trim","map","sel","join","SelectorEngine","concat","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","preventDefault","eventActionOnPlugin","Plugin","onEvent","stringSelector","eventAction","data","instances","targets","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","closeEvent","defaultPrevented","_destroyElement","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","button","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","touches","clientX","_eventIsPointerPenTouch","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM_IMG","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","KEY_TO_DIRECTION","interval","keyboard","pause","ride","touch","wrap","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","visibilityState","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","_addTouchEventListeners","img","endCallBack","clearTimeout","swipeConfig","_directionToOrder","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","_orderToDirection","slideEvent","isCycling","directionalClassName","orderClassName","completeCallBack","_isAnimated","clearInterval","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","startEvent","activeInstance","dimension","_getDimension","style","complete","capitalizedDimension","scrollSize","getBoundingClientRect","selected","triggerArray","isOpen","EVENT_CHANGE","EVENT_FOCUSIN_DATA_API","HIDE_DELAY","datepickerTheme","dateMin","dateMax","dateFormat","displayElement","displayMonthsCount","firstWeekday","inline","locale","positionElement","selectedDates","selectionMode","placement","vcpOptions","Datepicker","_calendar","_initCalendar","showEvent","hideEvent","_themeObserver","disconnect","destroy","getSelectedDates","dates","context","setSelectedDates","_isInput","_isInline","_boundInput","_positionElement","_resolvePositionElement","_displayElement","_resolveDisplayElement","calendarOptions","_buildCalendarOptions","Calendar","init","_setupThemeObserver","_parseInputValue","_updateDisplayWithSelectedDates","formattedDate","_formatDateForInput","textContent","displayChild","_getThemeAncestor","_getEffectiveTheme","_syncThemeAttribute","theme","MutationObserver","mainElement","observe","attributeFilter","vcpTheme","inputMode","positionToInput","selectionDatesMode","selectedTheme","themeAttrDetect","onClickDate","self","_handleDateClick","onInit","onShow","onHide","firstDate","_parseDate","selectedMonth","getMonth","selectedYear","getFullYear","_maybeHideAfterSelection","shouldHide","dateStr","year","month","day","Date","_formatDate","date","Intl","DateTimeFormat","format","toLocaleDateString","separator","d","isNaN","getTime","String","padStart","getDate","formatted","bsInline","EVENT_HIDE_PREVENTED","EVENT_CANCEL","CLASS_NAME_STATIC","CLASS_NAME_OPEN","CLASS_NAME_NONMODAL","SELECTOR_OPEN_MODAL_DIALOG","backdrop","modal","Dialog","open","showModal","body","_hideDialog","handleUpdate","_triggerBackdropTransition","hidePreventedEvent","focus","currentDialog","shouldSwap","newDialog","currentInstance","computePosition","arrow","flip","offset","shift","BREAKPOINTS","sm","md","lg","xl","parseResponsivePlacement","placementString","defaultPlacement","parts","placements","xs","part","breakpoint","getResponsivePlacement","responsivePlacements","viewportWidth","innerWidth","activePlacement","breakpointOrder","minWidth","createBreakpointListeners","listeners","mql","matchMedia","disposeBreakpointListeners","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","ENTER_KEY","SPACE_KEY","RIGHT_MOUSE_BUTTON","SUBMENU_CLOSE_DELAY","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","SELECTOR_SUBMENU","SELECTOR_SUBMENU_TOGGLE","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","DEFAULT_PLACEMENT","SUBMENU_PLACEMENT","resolveLogicalPlacement","triangleSign","p1","p2","p3","x","y","autoClose","boundary","container","display","floatingConfig","reference","strategy","submenuTrigger","submenuDelay","Dropdown","_floatingCleanup","_mediaQueryListeners","_responsivePlacements","_parent","_isSubmenu","_openSubmenus","_submenuCloseTimeouts","_hoverIntentData","_menu","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","_moveMenuToContainer","_createFloating","_completeHide","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","update","_updateFloatingPosition","referenceElement","autoUpdate","_getPlacement","middleware","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","_setupMediaQueryListeners","_getOffset","offsetConfig","rects","result","floating","offsetValue","mainAxis","crossAxis","fallbackPlacements","_getFallbackPlacements","fallbackMap","bottom","top","right","left","defaultConfig","_getContainer","append","isConnected","finalPlacement","assign","position","margin","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","_isMovingTowardSubmenu","_scheduleSubmenuClose","stopPropagation","_closeSubmenu","cleanup","_createSubmenuFloating","nestedSubmenus","nested","nestedWrapper","currentSubmenuWrapper","siblingSubmenus","siblingMenu","siblingWrapper","padding","updatePosition","timeoutId","clear","clientY","timestamp","now","submenuRect","currentPos","lastPos","isRtl","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","hasNeg","hasPos","_selectMenuItem","currentMenu","_handleSubmenuKeydown","enterKey","exitKey","isSubmenuTrigger","requestAnimationFrame","firstItem","parentSubmenuWrapper","parentTrigger","targetItem","clearMenus","openToggles","composedPath","isMenuTarget","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","isLeftOrRightEvent","isHomeOrEndEvent","isEnterOrSpaceEvent","getToggleButton","EVENT_UPDATE","EVENT_OVERFLOW","CLASS_NAME_OVERFLOW","CLASS_NAME_OVERFLOW_MENU","CLASS_NAME_HIDDEN","SELECTOR_NAV_ITEM","SELECTOR_NAV_LINK","SELECTOR_OVERFLOW_TOGGLE","SELECTOR_OVERFLOW_MENU","CLASS_NAME_KEEP","moreText","moreIcon","threshold","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_resizeObserver","_isInitialized","_init","_calculateOverflow","_restoreItems","parentElement","item","bsNavOrder","_createOverflowMenu","_setupResizeObserver","overflowItem","createElement","className","innerHTML","ResizeObserver","navWidth","offsetWidth","overflowWidth","usedWidth","itemsToOverflow","overflowThreshold","itemWidth","visibleCount","toMove","_moveToOverflow","overflowCount","link","dropdownItem","clonedLink","cloneNode","bsNavOverflow","EVENT_MOUSEDOWN","clickCallback","rootElement","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","autofocus","trapElement","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","clientWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","reset","_resetElementAttributes","isOverflowing","_saveInitialAttribute","overflow","styleProperty","scrollbarWidth","manipulationCallBack","setProperty","_applyManipulationCallback","actualValue","removeProperty","callBack","CLASS_NAME_SHOWING","CLASS_NAME_HIDING","CLASS_NAME_BACKDROP","OPEN_SELECTOR","EVENT_RESIZE","EVENT_KEYDOWN_DISMISS","scroll","Offcanvas","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","blur","completeCallback","alreadyOpen","EVENT_STRENGTH_CHANGE","SELECTOR_DATA_STRENGTH","STRENGTH_LEVELS","input","minLength","messages","weak","fair","good","strong","weights","extraLength","lowercase","uppercase","numbers","special","multipleSpecial","longPassword","thresholds","scorer","Strength","_input","_getInput","_segments","_textElement","_currentStrength","_evaluate","getStrength","evaluate","password","score","_calculateScore","strength","_scoreToStrength","_updateUI","bsStrength","strengthIndex","segment","colorMap","EVENT_COMPLETE","EVENT_INPUT","SELECTOR_DATA_OTP","SELECTOR_INPUT","mask","OtpInput","_inputs","_setupInputs","getValue","setValue","chars","_checkComplete","emptyInput","at","_handleInput","_handlePaste","_handleFocus","i","nextIndex","pastedData","clipboardData","getData","digits","lastIndex","select","isComplete","every","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","a","area","b","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","li","ol","p","pre","s","small","span","sub","sup","u","ul","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","attributeRegex","some","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","domParser","DOMParser","createdDocument","parseFromString","elementName","attributeList","allowedAttributes","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","_maybeSanitize","text","_setContent","arg","templateElement","_putElementInTemplate","DISALLOWED_ATTRIBUTES","CLASS_NAME_MODAL","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","_leave","_enter","_hideModalHandler","_isWithContent","shadowRoot","isInTheDom","ownerDocument","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","middlewareData","arrowX","arrowY","isVertical","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","tooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","popover","EVENT_ACTIVATE","CLASS_NAME_DROPDOWN_ITEM","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","rootMargin","smoothScroll","ScrollSpy","_targetLinks","_observableSections","_rootElement","overflowY","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","observableSection","hash","height","offsetTop","scrollTo","behavior","scrollTop","options","IntersectionObserver","_observerCallback","targetElement","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","listGroup","activeNodes","node","spy","CLASS_DROPDOWN","SELECTOR_DROPDOWN_MENU","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","_deactivate","_activate","relatedElem","_toggleDropDown","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","EVENT_TOGGLE","EVENT_TOGGLED","Toggler","toggleEvent","_execute"],"mappings":"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","x_google_ignoreList":[13,16,17,18,19]}
\ No newline at end of file
+{"version":3,"file":"bootstrap.bundle.js","sources":["../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/index.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../js/src/util/floating-ui.js","../../js/src/menu.js","../../js/src/combobox.js","../../node_modules/vanilla-calendar-pro/index.mjs","../../js/src/datepicker.js","../../js/src/dialog.js","../../js/src/nav-overflow.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/util/scrollbar.js","../../js/src/offcanvas.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/toggler.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const evt = hydrateObj(new Event(event, { bubbles: true, cancelable: true }), args)\n    element.dispatchEvent(evt)\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n  for (const [key, value] of Object.entries(meta)) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n  if (selector && window.CSS && window.CSS.escape) {\n    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n    selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n  }\n\n  return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  if (isElement(object)) {\n    return object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(parseSelector(object))\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsie appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n  return typeof possibleCallback === 'function' ? possibleCallback.call(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getNextActiveElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  parseSelector,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const [property, expectedTypes] of Object.entries(configTypes)) {\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '6.0.0-alpha1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  // Private\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\n}\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children).filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  },\n\n  getSelectorFromElement(element) {\n    const selector = getSelector(element)\n\n    if (selector) {\n      return SelectorEngine.findOne(selector) ? selector : null\n    }\n\n    return null\n  },\n\n  getElementFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.findOne(selector) : null\n  },\n\n  getMultipleElementsFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.find(selector) : []\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nconst eventActionOnPlugin = (Plugin, onEvent, stringSelector, method, callback = null) => {\n  eventAction(`${onEvent}.${Plugin.NAME}`, stringSelector, data => {\n    const instances = data.targets.filter(Boolean).map(element => Plugin.getOrCreateInstance(element))\n    if (typeof callback === 'function') {\n      callback({ ...data, instances })\n    }\n\n    for (const instance of instances) {\n      instance[method]()\n    }\n  })\n}\n\nconst eventAction = (onEvent, stringSelector, callback) => {\n  const selector = `${stringSelector}:not(.disabled):not(:disabled)`\n  EventHandler.on(document, onEvent, selector, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    const selector = SelectorEngine.getSelectorFromElement(this)\n    const targets = selector ? SelectorEngine.find(selector) : [this]\n\n    callback({ targets, event })\n  })\n}\n\nexport {\n  enableDismissTrigger,\n  eventActionOnPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    this._deltaX = event.touches && event.touches.length > 1 ?\n      0 :\n      event.touches[0].clientX - this._deltaX\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n\n    if (absDeltaX <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltaX / this._deltaX\n\n    this._deltaX = 0\n\n    if (!direction) {\n      return\n    }\n\n    execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getNextActiveElement,\n  isRTL,\n  isVisible,\n  reflow,\n  triggerTransitionEnd\n} from './util/index.js'\nimport Swipe from './util/swipe.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover',\n  ride: false,\n  touch: true,\n  wrap: true\n}\n\nconst DefaultType = {\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)',\n  ride: '(boolean|string)',\n  touch: 'boolean',\n  wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._interval = null\n    this._activeElement = null\n    this._isSliding = false\n    this.touchTimeout = null\n    this._swipeHelper = null\n\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._addEventListeners()\n\n    if (this._config.ride === CLASS_NAME_CAROUSEL) {\n      this.cycle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause() {\n    if (this._isSliding) {\n      triggerTransitionEnd(this._element)\n    }\n\n    this._clearInterval()\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._updateInterval()\n\n    this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n  }\n\n  _maybeEnableCycle() {\n    if (!this._config.ride) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n      return\n    }\n\n    this.cycle()\n  }\n\n  to(index) {\n    const items = this._getItems()\n    if (index > items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    const activeIndex = this._getItemIndex(this._getActive())\n    if (activeIndex === index) {\n      return\n    }\n\n    const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n    this._slide(order, items[index])\n  }\n\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.defaultInterval = config.interval\n    return config\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    if (this._config.touch && Swipe.isSupported()) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n      EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n    }\n\n    const endCallBack = () => {\n      if (this._config.pause !== 'hover') {\n        return\n      }\n\n      // If it's a touch-enabled device, mouseenter/leave are fired as\n      // part of the mouse compatibility events on first tap - the carousel\n      // would stop cycling until user tapped out of it;\n      // here, we listen for touchend, explicitly pause the carousel\n      // (as if it's the second time we tap on it, mouseenter compat event\n      // is NOT fired) and after a timeout (to allow for mouse compatibility\n      // events to fire) we explicitly restart cycling\n\n      this.pause()\n      if (this.touchTimeout) {\n        clearTimeout(this.touchTimeout)\n      }\n\n      this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n    }\n\n    const swipeConfig = {\n      leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n      rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n      endCallback: endCallBack\n    }\n\n    this._swipeHelper = new Swipe(this._element, swipeConfig)\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(this._directionToOrder(direction))\n    }\n  }\n\n  _getItemIndex(element) {\n    return this._getItems().indexOf(element)\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n    activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n    activeIndicator.removeAttribute('aria-current')\n\n    const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n    if (newActiveIndicator) {\n      newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n      newActiveIndicator.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || this._getActive()\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    this._config.interval = elementInterval || this._config.defaultInterval\n  }\n\n  _slide(order, element = null) {\n    if (this._isSliding) {\n      return\n    }\n\n    const activeElement = this._getActive()\n    const isNext = order === ORDER_NEXT\n    const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n    if (nextElement === activeElement) {\n      return\n    }\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n\n    const triggerEvent = eventName => {\n      return EventHandler.trigger(this._element, eventName, {\n        relatedTarget: nextElement,\n        direction: this._orderToDirection(order),\n        from: this._getItemIndex(activeElement),\n        to: nextElementIndex\n      })\n    }\n\n    const slideEvent = triggerEvent(EVENT_SLIDE)\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      return\n    }\n\n    const isCycling = Boolean(this._interval)\n    this.pause()\n\n    this._isSliding = true\n\n    this._setActiveIndicatorElement(nextElementIndex)\n    this._activeElement = nextElement\n\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n    nextElement.classList.add(orderClassName)\n\n    reflow(nextElement)\n\n    activeElement.classList.add(directionalClassName)\n    nextElement.classList.add(directionalClassName)\n\n    const completeCallBack = () => {\n      nextElement.classList.remove(directionalClassName, orderClassName)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n      this._isSliding = false\n\n      triggerEvent(EVENT_SLID)\n    }\n\n    this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_SLIDE)\n  }\n\n  _getActive() {\n    return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  carousel.prev()\n  carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement,\n  reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = SelectorEngine.getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = SelectorEngine.getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  // Private\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = SelectorEngine.getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\nexport default Collapse\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n  return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rlPlacement : lrPlacement;\n      return isStart ? lrPlacement : rlPlacement;\n    case 'left':\n    case 'right':\n      return isStart ? tbPlacement : btPlacement;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n          if (!ignoreCrossAxisOverflow ||\n          // We leave the current main axis only if every placement on that axis\n          // overflows the main axis.\n          overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n            // Try next placement and re-run the lifecycle.\n            return {\n              data: {\n                index: nextIndex,\n                overflows: overflowsData\n              },\n              reset: {\n                placement: nextPlacement\n              }\n            };\n          }\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = originSides.has(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = originSides.has(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n  return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n  return topLayerSelectors.some(selector => {\n    try {\n      return element.matches(selector);\n    } catch (_e) {\n      return false;\n    }\n  });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n  const webkit = isWebKit();\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n  return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle$1(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  const windowScrollbarX = getWindowScrollBarX(html);\n  // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n  // visual width of the <html> but this is not considered in the size\n  // of `html.clientWidth`.\n  if (windowScrollbarX <= 0) {\n    const doc = html.ownerDocument;\n    const body = doc.body;\n    const bodyStyles = getComputedStyle(body);\n    const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n    const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n    if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n      width -= clippingStableScrollbarWidth;\n    }\n  } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n    // If the <body> scrollbar is on the left, the width needs to be extended\n    // by the scrollbar amount so there isn't extra space on the right.\n    width += windowScrollbarX;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n\n  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n  // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n  function setLeftRTLScrollbarOffset() {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      setLeftRTLScrollbarOffset();\n    }\n  }\n  if (isFixed && !isOffsetParentAnElement && documentElement) {\n    setLeftRTLScrollbarOffset();\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        // It's possible that even though the ratio is reported as 1, the\n        // element is not actually fully within the IntersectionObserver's root\n        // area anymore. This can happen under performance constraints. This may\n        // be a bug in the browser's IntersectionObserver implementation. To\n        // work around this, we compare the element's bounding rect now with\n        // what it was at the time we created the IntersectionObserver. If they\n        // are not equal then the element moved, so we refresh.\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/floating-ui.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isRTL } from './index.js'\n\n/**\n * Breakpoints for responsive placement (matches SCSS $breakpoints)\n */\nexport const BREAKPOINTS = {\n  sm: 576,\n  md: 768,\n  lg: 1024,\n  xl: 1280,\n  '2xl': 1536\n}\n\n/**\n * Default placement with RTL support\n */\nexport const getDefaultPlacement = (fallback = 'bottom') => {\n  if (fallback.includes('-start') || fallback.includes('-end')) {\n    const [side, alignment] = fallback.split('-')\n    const flippedAlignment = alignment === 'start' ? 'end' : 'start'\n    return isRTL() ? `${side}-${flippedAlignment}` : fallback\n  }\n\n  return fallback\n}\n\n/**\n * Parse a placement string that may contain responsive prefixes\n * Example: \"bottom-start md:top-end lg:right\" returns { xs: 'bottom-start', md: 'top-end', lg: 'right' }\n *\n * @param {string} placementString - The placement string to parse\n * @param {string} defaultPlacement - The default placement to use for xs/base\n * @returns {object|null} - Object with breakpoint keys and placement values, or null if not responsive\n */\nexport const parseResponsivePlacement = (placementString, defaultPlacement = 'bottom') => {\n  // Check if placement contains responsive prefixes (e.g., \"bottom-start md:top-end\")\n  if (!placementString || !placementString.includes(':')) {\n    return null\n  }\n\n  // Parse the placement string into breakpoint-keyed object\n  const parts = placementString.split(/\\s+/)\n  const placements = { xs: defaultPlacement } // Default fallback\n\n  for (const part of parts) {\n    if (part.includes(':')) {\n      // Responsive placement like \"md:top-end\"\n      const [breakpoint, placement] = part.split(':')\n      if (BREAKPOINTS[breakpoint] !== undefined) {\n        placements[breakpoint] = placement\n      }\n    } else {\n      // Base placement (no prefix = xs/default)\n      placements.xs = part\n    }\n  }\n\n  return placements\n}\n\n/**\n * Get the active placement for the current viewport width\n *\n * @param {object} responsivePlacements - Object with breakpoint keys and placement values\n * @param {string} defaultPlacement - Fallback placement\n * @returns {string} - The active placement for current viewport\n */\nexport const getResponsivePlacement = (responsivePlacements, defaultPlacement = 'bottom') => {\n  if (!responsivePlacements) {\n    return defaultPlacement\n  }\n\n  // Get current viewport width\n  const viewportWidth = window.innerWidth\n\n  // Find the largest breakpoint that matches\n  let activePlacement = responsivePlacements.xs || defaultPlacement\n\n  // Check breakpoints in order (sm, md, lg, xl, 2xl)\n  const breakpointOrder = ['sm', 'md', 'lg', 'xl', '2xl']\n\n  for (const breakpoint of breakpointOrder) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    if (viewportWidth >= minWidth && responsivePlacements[breakpoint]) {\n      activePlacement = responsivePlacements[breakpoint]\n    }\n  }\n\n  return activePlacement\n}\n\n/**\n * Create media query listeners for responsive placement changes\n *\n * @param {Function} callback - Callback to run when breakpoint changes\n * @returns {Array} - Array of { mql, handler } objects for cleanup\n */\nexport const createBreakpointListeners = callback => {\n  const listeners = []\n\n  for (const breakpoint of Object.keys(BREAKPOINTS)) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    const mql = window.matchMedia(`(min-width: ${minWidth}px)`)\n\n    mql.addEventListener('change', callback)\n    listeners.push({ mql, handler: callback })\n  }\n\n  return listeners\n}\n\n/**\n * Clean up media query listeners\n *\n * @param {Array} listeners - Array of { mql, handler } objects\n */\nexport const disposeBreakpointListeners = listeners => {\n  for (const { mql, handler } of listeners) {\n    mql.removeEventListener('change', handler)\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap menu.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'menu'\nconst DATA_KEY = 'bs.menu'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\nconst RIGHT_MOUSE_BUTTON = 2\n\nconst SUBMENU_CLOSE_DELAY = 100\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"menu\"]:not(.disabled):not(:disabled)'\n\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_SUBMENU = '.submenu'\nconst SELECTOR_SUBMENU_TOGGLE = '.submenu > .menu-item'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item:not(.disabled):not(:disabled)'\n\nconst DEFAULT_PLACEMENT = 'bottom-start'\nconst SUBMENU_PLACEMENT = 'end-start'\n\nconst resolveLogicalPlacement = placement => {\n  if (isRTL()) {\n    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left')\n  }\n\n  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right')\n}\n\nconst triangleSign = (p1, p2, p3) =>\n  ((p1.x - p3.x) * (p2.y - p3.y)) - ((p2.x - p3.x) * (p1.y - p3.y))\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  container: false,\n  display: 'dynamic',\n  offset: [0, 2],\n  floatingConfig: null,\n  menu: null,\n  placement: DEFAULT_PLACEMENT,\n  reference: 'toggle',\n  strategy: 'absolute',\n  submenuTrigger: 'both',\n  submenuDelay: SUBMENU_CLOSE_DELAY\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  display: 'string',\n  offset: '(array|string|function)',\n  floatingConfig: '(null|object|function)',\n  menu: '(null|element)',\n  placement: 'string',\n  reference: '(string|element|object)',\n  strategy: 'string',\n  submenuTrigger: 'string',\n  submenuDelay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Menu extends BaseComponent {\n  static _openInstances = new Set()\n\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s menus require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    this._floatingCleanup = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n    this._parent = this._element.parentNode\n    this._isSubmenu = this._parent.classList?.contains('submenu')\n    this._openSubmenus = new Map()\n    this._submenuCloseTimeouts = new Map()\n    this._hoverIntentData = null\n\n    this._menu = this._config.menu || this._findMenu()\n\n    this._menuOriginalParent = this._menu?.parentNode\n\n    this._parseResponsivePlacements()\n    this._setupSubmenuListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._moveMenuToContainer()\n    this._createFloating()\n\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus({ focusVisible: false })\n    this._element.setAttribute('aria-expanded', 'true')\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.add(CLASS_NAME_SHOW)\n    }\n\n    Menu._openInstances.add(this)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n    this._disposeMediaQueryListeners()\n    this._closeAllSubmenus()\n    this._clearAllSubmenuTimeouts()\n    Menu._openInstances.delete(this)\n    super.dispose()\n  }\n\n  update() {\n    if (this._floatingCleanup) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Private\n  _findMenu() {\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n  }\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._closeAllSubmenus()\n\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'placement')\n    Manipulator.removeDataAttribute(this._menu, 'display')\n    Menu._openInstances.delete(this)\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createFloating() {\n    if (this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'display', 'static')\n      return\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    this._updateFloatingPosition(referenceElement)\n\n    this._floatingCleanup = autoUpdate(\n      referenceElement,\n      this._menu,\n      () => this._updateFloatingPosition(referenceElement)\n    )\n  }\n\n  async _updateFloatingPosition(referenceElement = null) {\n    if (!this._menu) {\n      return\n    }\n\n    if (!referenceElement) {\n      if (this._config.reference === 'parent') {\n        referenceElement = this._parent\n      } else if (isElement(this._config.reference)) {\n        referenceElement = getElement(this._config.reference)\n      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference\n      } else {\n        referenceElement = this._element\n      }\n    }\n\n    const placement = this._getPlacement()\n    const middleware = this._getFloatingMiddleware()\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    await this._applyFloatingPosition(\n      referenceElement,\n      this._menu,\n      floatingConfig.placement,\n      floatingConfig.middleware,\n      floatingConfig.strategy\n    )\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    const placement = this._responsivePlacements ?\n      getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) :\n      this._config.placement\n\n    return resolveLogicalPlacement(placement)\n  }\n\n  _parseResponsivePlacements() {\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT)\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  _getOffset() {\n    const { offset: offsetConfig } = this._config\n\n    if (typeof offsetConfig === 'string') {\n      return offsetConfig.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offsetConfig === 'function') {\n      return ({ placement, rects }) => {\n        const result = offsetConfig({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offsetConfig\n  }\n\n  _getFloatingMiddleware() {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      flip({\n        fallbackPlacements: this._getFallbackPlacements()\n      }),\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    return middleware\n  }\n\n  _getFallbackPlacements() {\n    const placement = this._getPlacement()\n\n    const fallbackMap = {\n      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\n      'bottom-start': ['top-start', 'bottom-end', 'top-end'],\n      'bottom-end': ['top-end', 'bottom-start', 'top-start'],\n      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],\n      'top-start': ['bottom-start', 'top-end', 'bottom-end'],\n      'top-end': ['bottom-end', 'top-start', 'bottom-start'],\n      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],\n      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],\n      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],\n      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],\n      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],\n      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']\n    }\n\n    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left']\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware,\n      strategy: this._config.strategy\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n  }\n\n  _getContainer() {\n    const { container } = this._config\n    if (container === false) {\n      return null\n    }\n\n    return container === true ? document.body : getElement(container)\n  }\n\n  _moveMenuToContainer() {\n    const container = this._getContainer()\n    if (!container || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== container) {\n      container.append(this._menu)\n    }\n  }\n\n  _restoreMenuToOriginalParent() {\n    if (!this._menuOriginalParent || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== this._menuOriginalParent) {\n      this._menuOriginalParent.append(this._menu)\n    }\n  }\n\n  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {\n    if (!floating.isConnected) {\n      return null\n    }\n\n    const { x, y, placement: finalPlacement } = await computePosition(\n      reference,\n      floating,\n      { placement, middleware, strategy }\n    )\n\n    if (!floating.isConnected) {\n      return null\n    }\n\n    Object.assign(floating.style, {\n      position: strategy,\n      left: `${x}px`,\n      top: `${y}px`,\n      margin: '0'\n    })\n\n    Manipulator.setDataAttribute(floating, 'placement', finalPlacement)\n    return finalPlacement\n  }\n\n  // -------------------------------------------------------------------------\n  // Submenu handling\n  // -------------------------------------------------------------------------\n\n  _setupSubmenuListeners() {\n    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerEnter(event)\n      })\n\n      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {\n        this._onSubmenuLeave(event)\n      })\n\n      EventHandler.on(this._menu, 'mousemove', event => {\n        this._trackMousePosition(event)\n      })\n    }\n\n    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerClick(event)\n      })\n    }\n  }\n\n  _onSubmenuTriggerEnter(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    this._cancelSubmenuCloseTimeout(submenu)\n    this._closeSiblingSubmenus(submenuWrapper)\n    this._openSubmenu(trigger, submenu, submenuWrapper)\n  }\n\n  _onSubmenuLeave(event) {\n    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu || !this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    if (this._isMovingTowardSubmenu(event, submenu)) {\n      return\n    }\n\n    this._scheduleSubmenuClose(submenu, submenuWrapper)\n  }\n\n  _onSubmenuTriggerClick(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    if (this._openSubmenus.has(submenu)) {\n      this._closeSubmenu(submenu, submenuWrapper)\n    } else {\n      this._closeSiblingSubmenus(submenuWrapper)\n      this._openSubmenu(trigger, submenu, submenuWrapper)\n    }\n  }\n\n  _openSubmenu(trigger, submenu, submenuWrapper) {\n    if (this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    trigger.setAttribute('aria-expanded', 'true')\n    trigger.setAttribute('aria-haspopup', 'true')\n\n    submenu.classList.add(CLASS_NAME_SHOW)\n    submenuWrapper.classList.add(CLASS_NAME_SHOW)\n\n    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper)\n    this._openSubmenus.set(submenu, cleanup)\n\n    EventHandler.on(submenu, 'mouseenter', () => {\n      this._cancelSubmenuCloseTimeout(submenu)\n    })\n  }\n\n  _closeSubmenu(submenu, submenuWrapper) {\n    if (!this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, submenu)\n    for (const nested of nestedSubmenus) {\n      const nestedWrapper = nested.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(nested, nestedWrapper)\n    }\n\n    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper)\n\n    const cleanup = this._openSubmenus.get(submenu)\n    if (cleanup) {\n      cleanup()\n    }\n\n    this._openSubmenus.delete(submenu)\n    EventHandler.off(submenu, 'mouseenter')\n\n    if (trigger) {\n      trigger.setAttribute('aria-expanded', 'false')\n    }\n\n    submenu.classList.remove(CLASS_NAME_SHOW)\n    submenuWrapper.classList.remove(CLASS_NAME_SHOW)\n\n    submenu.style.position = ''\n    submenu.style.left = ''\n    submenu.style.top = ''\n    submenu.style.margin = ''\n  }\n\n  _closeAllSubmenus() {\n    for (const [submenu] of this._openSubmenus) {\n      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(submenu, submenuWrapper)\n    }\n  }\n\n  _closeSiblingSubmenus(currentSubmenuWrapper) {\n    const parent = currentSubmenuWrapper.parentNode\n    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, parent)\n\n    for (const siblingMenu of siblingSubmenus) {\n      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU)\n      if (siblingWrapper !== currentSubmenuWrapper) {\n        this._closeSubmenu(siblingMenu, siblingWrapper)\n      }\n    }\n  }\n\n  _createSubmenuFloating(trigger, submenu, submenuWrapper) {\n    const referenceElement = submenuWrapper\n    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT)\n    const middleware = [\n      offset({ mainAxis: 0, crossAxis: -4 }),\n      flip({\n        fallbackPlacements: [\n          resolveLogicalPlacement('start-start'),\n          resolveLogicalPlacement('end-end'),\n          resolveLogicalPlacement('start-end')\n        ]\n      }),\n      shift({ padding: 8 })\n    ]\n\n    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware)\n\n    updatePosition()\n    return autoUpdate(referenceElement, submenu, updatePosition)\n  }\n\n  _scheduleSubmenuClose(submenu, submenuWrapper) {\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    const timeoutId = setTimeout(() => {\n      this._closeSubmenu(submenu, submenuWrapper)\n      this._submenuCloseTimeouts.delete(submenu)\n    }, this._config.submenuDelay)\n\n    this._submenuCloseTimeouts.set(submenu, timeoutId)\n  }\n\n  _cancelSubmenuCloseTimeout(submenu) {\n    const timeoutId = this._submenuCloseTimeouts.get(submenu)\n    if (timeoutId) {\n      clearTimeout(timeoutId)\n      this._submenuCloseTimeouts.delete(submenu)\n    }\n  }\n\n  _clearAllSubmenuTimeouts() {\n    for (const timeoutId of this._submenuCloseTimeouts.values()) {\n      clearTimeout(timeoutId)\n    }\n\n    this._submenuCloseTimeouts.clear()\n  }\n\n  // -------------------------------------------------------------------------\n  // Hover intent / Safe triangle\n  // -------------------------------------------------------------------------\n\n  _trackMousePosition(event) {\n    this._hoverIntentData = {\n      x: event.clientX,\n      y: event.clientY,\n      timestamp: Date.now()\n    }\n  }\n\n  _isMovingTowardSubmenu(event, submenu) {\n    if (!this._hoverIntentData) {\n      return false\n    }\n\n    const submenuRect = submenu.getBoundingClientRect()\n    const currentPos = { x: event.clientX, y: event.clientY }\n    const lastPos = { x: this._hoverIntentData.x, y: this._hoverIntentData.y }\n\n    const isRtl = isRTL()\n    const targetX = isRtl ? submenuRect.right : submenuRect.left\n    const topCorner = { x: targetX, y: submenuRect.top }\n    const bottomCorner = { x: targetX, y: submenuRect.bottom }\n\n    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner)\n  }\n\n  _pointInTriangle(point, v1, v2, v3) {\n    const d1 = triangleSign(point, v1, v2)\n    const d2 = triangleSign(point, v2, v3)\n    const d3 = triangleSign(point, v3, v1)\n\n    const hasNeg = (d1 < 0) || (d2 < 0) || (d3 < 0)\n    const hasPos = (d1 > 0) || (d2 > 0) || (d3 > 0)\n\n    return !(hasNeg && hasPos)\n  }\n\n  // -------------------------------------------------------------------------\n  // Keyboard navigation\n  // -------------------------------------------------------------------------\n\n  _selectMenuItem({ key, target }) {\n    const currentMenu = target.closest(SELECTOR_MENU) || this._menu\n    const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n      .filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  _handleSubmenuKeydown(event) {\n    const { key, target } = event\n    const isRtl = isRTL()\n\n    const enterKey = isRtl ? ARROW_LEFT_KEY : ARROW_RIGHT_KEY\n    const exitKey = isRtl ? ARROW_RIGHT_KEY : ARROW_LEFT_KEY\n\n    const submenuWrapper = target.closest(SELECTOR_SUBMENU)\n    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === enterKey && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === exitKey) {\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper) {\n        event.preventDefault()\n        event.stopPropagation()\n\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        this._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return true\n      }\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n        .filter(element => isVisible(element))\n\n      if (items.length) {\n        const targetItem = key === HOME_KEY ? items[0] : items[items.length - 1]\n        targetItem.focus()\n      }\n\n      return true\n    }\n\n    return false\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    for (const instance of Menu._openInstances) {\n      if (instance._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(instance._menu)\n      if (\n        composedPath.includes(instance._element) ||\n        (instance._config.autoClose === 'inside' && !isMenuTarget) ||\n        (instance._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      if (instance._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: instance._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      instance._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    const isInput = /input|textarea/i.test(event.target.tagName)\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n    const isLeftOrRightEvent = [ARROW_LEFT_KEY, ARROW_RIGHT_KEY].includes(event.key)\n    const isHomeOrEndEvent = [HOME_KEY, END_KEY].includes(event.key)\n    const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key)\n\n    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent &&\n        !(isEnterOrSpaceEvent && isSubmenuTrigger)) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    if (!getToggleButton) {\n      return\n    }\n\n    const instance = Menu.getOrCreateInstance(getToggleButton)\n\n    if ((isLeftOrRightEvent || isHomeOrEndEvent || (isEnterOrSpaceEvent && isSubmenuTrigger)) && instance._handleSubmenuKeydown(event)) {\n      return\n    }\n\n    if (isUpOrDownEvent) {\n      event.preventDefault()\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (isEscapeEvent && instance._isShown()) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = event.target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        instance._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return\n      }\n\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Menu.getOrCreateInstance(this).toggle()\n})\n\nexport default Menu\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap combobox.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Menu from './menu.js'\nimport { getNextActiveElement, isDisabled, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'combobox'\nconst DATA_KEY = 'bs.combobox'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SELECTED = 'selected'\nconst CLASS_NAME_PLACEHOLDER = 'combobox-placeholder'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"combobox\"]'\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_MENU_ITEM = '.menu-item[data-bs-value]'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item[data-bs-value]:not(.disabled):not(:disabled)'\nconst SELECTOR_VALUE = '.combobox-value'\nconst SELECTOR_SEARCH_INPUT = '.combobox-search-input'\nconst SELECTOR_NO_RESULTS = '.combobox-no-results'\n\nconst Default = {\n  boundary: 'clippingParents',\n  multiple: false,\n  name: null,\n  offset: [0, 2],\n  placeholder: '',\n  placement: 'bottom-start',\n  search: false,\n  searchNormalize: false\n}\n\nconst DefaultType = {\n  boundary: '(string|element)',\n  multiple: 'boolean',\n  name: '(string|null)',\n  offset: '(array|string|function)',\n  placeholder: 'string',\n  placement: 'string',\n  search: 'boolean',\n  searchNormalize: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Combobox extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._toggle = this._element\n    this._menu = SelectorEngine.next(this._toggle, SELECTOR_MENU)[0]\n    this._valueDisplay = SelectorEngine.findOne(SELECTOR_VALUE, this._toggle)\n    this._searchInput = SelectorEngine.findOne(SELECTOR_SEARCH_INPUT, this._menu)\n    this._noResults = SelectorEngine.findOne(SELECTOR_NO_RESULTS, this._menu)\n    this._hiddenInput = null\n    this._menuInstance = null\n\n    this._createHiddenInput()\n    this._createMenuInstance()\n    this._syncInitialSelection()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._toggle) || this._isShown()) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._toggle, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.show()\n\n    if (this._searchInput) {\n      this._searchInput.value = ''\n      this._filterItems('')\n      requestAnimationFrame(() => this._searchInput.focus())\n    }\n\n    EventHandler.trigger(this._toggle, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._toggle, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.hide()\n    EventHandler.trigger(this._toggle, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._menuInstance) {\n      this._menuInstance.dispose()\n      this._menuInstance = null\n    }\n\n    if (this._hiddenInput) {\n      this._hiddenInput.remove()\n      this._hiddenInput = null\n    }\n\n    EventHandler.off(this._menu, EVENT_KEY)\n    EventHandler.off(this._toggle, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _createHiddenInput() {\n    const { name } = this._config\n    if (!name) {\n      return\n    }\n\n    this._hiddenInput = document.createElement('input')\n    this._hiddenInput.type = 'hidden'\n    this._hiddenInput.name = name\n    this._hiddenInput.value = ''\n    this._toggle.parentNode.insertBefore(this._hiddenInput, this._toggle)\n  }\n\n  _createMenuInstance() {\n    this._menuInstance = new Menu(this._toggle, {\n      menu: this._menu,\n      autoClose: this._config.multiple ? 'outside' : true,\n      boundary: this._config.boundary,\n      offset: this._config.offset,\n      placement: this._config.placement\n    })\n  }\n\n  _syncInitialSelection() {\n    const selectedItems = this._getSelectedItems()\n    if (selectedItems.length > 0) {\n      this._updateToggleText()\n      this._updateHiddenInput()\n    } else {\n      this._showPlaceholder()\n    }\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._menu, 'click', SELECTOR_MENU_ITEM, event => {\n      const item = event.target.closest(SELECTOR_MENU_ITEM)\n      if (!item || isDisabled(item)) {\n        return\n      }\n\n      event.preventDefault()\n      event.stopPropagation()\n      this._selectItem(item)\n    })\n\n    EventHandler.on(this._toggle, 'keydown', event => {\n      this._handleToggleKeydown(event)\n    })\n\n    EventHandler.on(this._menu, 'keydown', event => {\n      this._handleMenuKeydown(event)\n    })\n\n    if (this._searchInput) {\n      EventHandler.on(this._searchInput, 'input', () => {\n        this._filterItems(this._searchInput.value)\n      })\n\n      EventHandler.on(this._searchInput, 'keydown', event => {\n        if (event.key === ARROW_DOWN_KEY) {\n          event.preventDefault()\n          const items = this._getVisibleItems()\n          if (items.length > 0) {\n            items[0].focus()\n          }\n        }\n\n        if (event.key === ESCAPE_KEY) {\n          this.hide()\n          this._toggle.focus()\n        }\n      })\n    }\n  }\n\n  _selectItem(item) {\n    if (this._config.multiple) {\n      item.classList.toggle(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', item.classList.contains(CLASS_NAME_SELECTED))\n    } else {\n      const previouslySelected = SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n      for (const prev of previouslySelected) {\n        prev.classList.remove(CLASS_NAME_SELECTED)\n        prev.setAttribute('aria-selected', 'false')\n      }\n\n      item.classList.add(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', 'true')\n    }\n\n    this._updateToggleText()\n    this._updateHiddenInput()\n\n    const value = this._config.multiple ?\n      this._getSelectedItems().map(el => el.dataset.bsValue) :\n      item.dataset.bsValue\n\n    EventHandler.trigger(this._toggle, EVENT_CHANGE, {\n      value,\n      item\n    })\n\n    if (!this._config.multiple) {\n      this.hide()\n      this._toggle.focus()\n    }\n  }\n\n  _updateToggleText() {\n    const selectedItems = this._getSelectedItems()\n\n    if (selectedItems.length === 0) {\n      this._showPlaceholder()\n      return\n    }\n\n    this._valueDisplay.classList.remove(CLASS_NAME_PLACEHOLDER)\n\n    if (this._config.multiple && selectedItems.length > 1) {\n      this._valueDisplay.textContent = `${selectedItems.length} selected`\n    } else {\n      const item = selectedItems[0]\n      const label = SelectorEngine.findOne('.menu-item-content > span:first-child', item)\n      this._valueDisplay.textContent = label ? label.textContent : item.textContent.trim()\n    }\n  }\n\n  _showPlaceholder() {\n    const { placeholder } = this._config\n    if (placeholder) {\n      this._valueDisplay.textContent = placeholder\n      this._valueDisplay.classList.add(CLASS_NAME_PLACEHOLDER)\n    }\n  }\n\n  _updateHiddenInput() {\n    if (!this._hiddenInput) {\n      return\n    }\n\n    const selectedItems = this._getSelectedItems()\n    const values = selectedItems.map(el => el.dataset.bsValue)\n    this._hiddenInput.value = this._config.multiple ? values.join(',') : (values[0] || '')\n  }\n\n  _getSelectedItems() {\n    return SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n  }\n\n  _getVisibleItems() {\n    return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu)\n      .filter(item => isVisible(item))\n  }\n\n  _filterItems(query) {\n    const normalizedQuery = this._normalizeText(query.toLowerCase().trim())\n    const items = SelectorEngine.find(SELECTOR_MENU_ITEM, this._menu)\n    let visibleCount = 0\n\n    for (const item of items) {\n      const text = this._normalizeText(item.textContent.toLowerCase().trim())\n      const matches = !normalizedQuery || text.includes(normalizedQuery)\n      item.style.display = matches ? '' : 'none'\n      if (matches) {\n        visibleCount++\n      }\n    }\n\n    if (this._noResults) {\n      this._noResults.classList.toggle('d-none', visibleCount > 0)\n    }\n  }\n\n  _normalizeText(text) {\n    if (this._config.searchNormalize) {\n      return text.normalize('NFD').replace(/[\\u0300-\\u036F]/g, '')\n    }\n\n    return text\n  }\n\n  _handleToggleKeydown(event) {\n    const { key } = event\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      if (!this._isShown()) {\n        this.show()\n      }\n\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const target = key === ARROW_DOWN_KEY ? items[0] : items[items.length - 1]\n        target.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !this._isShown()) {\n      event.preventDefault()\n      this.show()\n    }\n  }\n\n  _handleMenuKeydown(event) {\n    const { key, target } = event\n\n    if (key === ESCAPE_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n      this._toggle.focus()\n      return\n    }\n\n    if (key === TAB_KEY) {\n      this.hide()\n      return\n    }\n\n    const isInput = target.matches('input')\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n      }\n\n      return\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const targetItem = key === HOME_KEY ? items[0] : items[items.length - 1]\n        targetItem.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !isInput) {\n      event.preventDefault()\n      const item = target.closest(SELECTOR_MENU_ITEM)\n      if (item && !isDisabled(item)) {\n        this._selectItem(item)\n      }\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Combobox.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Combobox.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const toggle of SelectorEngine.find(SELECTOR_DATA_TOGGLE)) {\n    Combobox.getOrCreateInstance(toggle)\n  }\n})\n\nexport default Combobox\n","/*! name: vanilla-calendar-pro v3.1.0 | url: https://github.com/uvarov-frontend/vanilla-calendar-pro */\nvar __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__spreadValues=(e,t)=>{for(var n in t||(t={}))__hasOwnProp.call(t,n)&&__defNormalProp(e,n,t[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(t))__propIsEnum.call(t,n)&&__defNormalProp(e,n,t[n]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__publicField=(e,t,n)=>(__defNormalProp(e,\"symbol\"!=typeof t?t+\"\":t,n),n);const errorMessages={notFoundSelector:e=>`${e} is not found, check the first argument passed to new Calendar.`,notInit:'The calendar has not been initialized, please initialize it using the \"init()\" method first.',notLocale:\"You specified an incorrect language label or did not specify the required number of values ​​for «locale.weekdays» or «locale.months».\",incorrectTime:\"The value of the time property can be: false, 12 or 24.\",incorrectMonthsCount:\"For the «multiple» calendar type, the «displayMonthsCount» parameter can have a value from 2 to 12, and for all others it cannot be greater than 1.\"},setContext=(e,t,n)=>{e.context[t]=n},destroy=e=>{var t,n,a,o,l;if(!e.context.isInit)throw new Error(errorMessages.notInit);e.inputMode?(null==(t=e.context.mainElement.parentElement)||t.removeChild(e.context.mainElement),null==(a=null==(n=e.context.inputElement)?void 0:n.replaceWith)||a.call(n,e.context.originalElement),setContext(e,\"inputElement\",void 0)):null==(l=(o=e.context.mainElement).replaceWith)||l.call(o,e.context.originalElement),setContext(e,\"mainElement\",e.context.originalElement),e.onDestroy&&e.onDestroy(e)},skipOpenOnFocus=new WeakSet,shouldSkipOpenOnFocus=e=>skipOpenOnFocus.has(e),setSkipOpenOnFocus=e=>{skipOpenOnFocus.add(e)},clearSkipOpenOnFocus=e=>{skipOpenOnFocus.delete(e)},PREV_TABINDEX_ATTR=\"data-vc-prev-tabindex\",isFocusable=e=>e.tabIndex>=0&&!e.hasAttribute(\"disabled\")&&\"true\"!==e.getAttribute(\"aria-disabled\"),storePrevTabIndex=e=>{if(e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(\"tabindex\");e.setAttribute(PREV_TABINDEX_ATTR,null!=t?t:\"\")},restorePrevTabIndex=e=>{if(!e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(PREV_TABINDEX_ATTR);\"\"===t||null===t?e.removeAttribute(\"tabindex\"):e.setAttribute(\"tabindex\",t),e.removeAttribute(PREV_TABINDEX_ATTR)},disableTabbing=e=>{isFocusable(e)&&(storePrevTabIndex(e),e.tabIndex=-1);const t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>isFocusable(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;t.nextNode();){const e=t.currentNode;storePrevTabIndex(e),e.tabIndex=-1}},restoreTabbing=e=>{restorePrevTabIndex(e),e.querySelectorAll(`[${PREV_TABINDEX_ATTR}]`).forEach(restorePrevTabIndex)},hide=e=>{if(e.context.isShowInInputMode&&e.context.currentType){if(e.context.mainElement.dataset.vcCalendarHidden=\"\",setContext(e,\"isShowInInputMode\",!1),e.inputMode&&disableTabbing(e.context.mainElement),e.context.cleanupHandlers[0]&&(e.context.cleanupHandlers.forEach((e=>e())),setContext(e,\"cleanupHandlers\",[])),e.inputMode&&e.context.inputElement&&e.context.mainElement.contains(document.activeElement)){(\"function\"==typeof e.openOnFocus||!0===e.openOnFocus)&&setSkipOpenOnFocus(e),e.context.inputElement.focus()}e.onHide&&e.onHide(e)}};function getOffset(e){if(!e||!e.getBoundingClientRect)return{top:0,bottom:0,left:0,right:0};const t=e.getBoundingClientRect(),n=document.documentElement;return{bottom:t.bottom,right:t.right,top:t.top+window.scrollY-n.clientTop,left:t.left+window.scrollX-n.clientLeft}}function getViewportDimensions(){return{vw:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),vh:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}}function getWindowScrollPosition(){return{left:window.scrollX||document.documentElement.scrollLeft||0,top:window.scrollY||document.documentElement.scrollTop||0}}function calculateAvailableSpace(e){const{top:t,left:n}=getWindowScrollPosition(),{top:a,left:o}=getOffset(e),{vh:l,vw:s}=getViewportDimensions(),i=a-t,r=o-n;return{top:i,bottom:l-(i+e.clientHeight),left:r,right:s-(r+e.clientWidth)}}function getAvailablePosition(e,t,n=5){const a={top:!0,bottom:!0,left:!0,right:!0},o=[];if(!t||!e)return{canShow:a,parentPositions:o};const{bottom:l,top:s}=calculateAvailableSpace(e),{top:i,left:r}=getOffset(e),{height:c,width:d}=t.getBoundingClientRect(),{vh:u,vw:m}=getViewportDimensions(),p=m/2,h=u/2;return[{condition:i<h,position:\"top\"},{condition:i>h,position:\"bottom\"},{condition:r<p,position:\"left\"},{condition:r>p,position:\"right\"}].forEach((({condition:e,position:t})=>{e&&o.push(t)})),Object.assign(a,{top:c<=s-n,bottom:c<=l-n,left:d<=r,right:d<=m-r}),{canShow:a,parentPositions:o}}const handleDay=(e,t,n,a)=>{var o;const l=a.querySelector(`[data-vc-date=\"${t}\"]`),s=null==l?void 0:l.querySelector(\"[data-vc-date-btn]\");if(!l||!s)return;if((null==n?void 0:n.modifier)&&s.classList.add(...n.modifier.trim().split(\" \")),!(null==n?void 0:n.html))return;const i=document.createElement(\"div\");i.className=e.styles.datePopup,i.dataset.vcDatePopup=\"\",i.innerHTML=e.sanitizerHTML(n.html),s.ariaExpanded=\"true\",s.ariaLabel=`${s.ariaLabel}, ${null==(o=null==i?void 0:i.textContent)?void 0:o.replace(/^\\s+|\\s+(?=\\s)|\\s+$/g,\"\").replace(/&nbsp;/g,\" \")}`,l.appendChild(i),requestAnimationFrame((()=>{if(!i)return;const{canShow:e}=getAvailablePosition(l,i),t=e.bottom?l.offsetHeight:-i.offsetHeight,n=e.left&&!e.right?l.offsetWidth-i.offsetWidth/2:!e.left&&e.right?i.offsetWidth/2:0;Object.assign(i.style,{left:`${n}px`,top:`${t}px`})}))},createDatePopup=(e,t)=>{var n;e.popups&&(null==(n=Object.entries(e.popups))||n.forEach((([n,a])=>handleDay(e,n,a,t))))},getDate=e=>new Date(`${e}T00:00:00`),getDateString=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,\"0\")}-${String(e.getDate()).padStart(2,\"0\")}`,parseDates=e=>e.reduce(((e,t)=>{if(t instanceof Date||\"number\"==typeof t){const n=t instanceof Date?t:new Date(t);e.push(n.toISOString().substring(0,10))}else t.match(/^(\\d{4}-\\d{2}-\\d{2})$/g)?e.push(t):t.replace(/(\\d{4}-\\d{2}-\\d{2}).*?(\\d{4}-\\d{2}-\\d{2})/g,((t,n,a)=>{const o=getDate(n),l=getDate(a),s=new Date(o.getTime());for(;s<=l;s.setDate(s.getDate()+1))e.push(getDateString(s));return t}));return e}),[]),updateAttribute=(e,t,n,a=\"\")=>{t?e.setAttribute(n,a):e.getAttribute(n)===a&&e.removeAttribute(n)},setDateModifier=(e,t,n,a,o,l,s)=>{var i,r,c,d;const u=getDate(e.context.displayDateMin)>getDate(l)||getDate(e.context.displayDateMax)<getDate(l)||(null==(i=e.context.disableDates)?void 0:i.includes(l))||!e.selectionMonthsMode&&\"current\"!==s||!e.selectionYearsMode&&getDate(l).getFullYear()!==t;updateAttribute(n,u,\"data-vc-date-disabled\"),a&&updateAttribute(a,u,\"aria-disabled\",\"true\"),a&&updateAttribute(a,u,\"tabindex\",\"-1\"),updateAttribute(n,!e.disableToday&&e.context.dateToday===l,\"data-vc-date-today\"),updateAttribute(n,!e.disableToday&&e.context.dateToday===l,\"aria-current\",\"date\"),updateAttribute(n,null==(r=e.selectedWeekends)?void 0:r.includes(o),\"data-vc-date-weekend\");const m=(null==(c=e.selectedHolidays)?void 0:c[0])?parseDates(e.selectedHolidays):[];if(updateAttribute(n,m.includes(l),\"data-vc-date-holiday\"),(null==(d=e.context.selectedDates)?void 0:d.includes(l))?(n.setAttribute(\"data-vc-date-selected\",\"\"),a&&a.setAttribute(\"aria-selected\",\"true\"),e.context.selectedDates.length>1&&\"multiple-ranged\"===e.selectionDatesMode&&(e.context.selectedDates[0]===l&&e.context.selectedDates[e.context.selectedDates.length-1]===l?n.setAttribute(\"data-vc-date-selected\",\"first-and-last\"):e.context.selectedDates[0]===l?n.setAttribute(\"data-vc-date-selected\",\"first\"):e.context.selectedDates[e.context.selectedDates.length-1]===l&&n.setAttribute(\"data-vc-date-selected\",\"last\"),e.context.selectedDates[0]!==l&&e.context.selectedDates[e.context.selectedDates.length-1]!==l&&n.setAttribute(\"data-vc-date-selected\",\"middle\"))):n.hasAttribute(\"data-vc-date-selected\")&&(n.removeAttribute(\"data-vc-date-selected\"),a&&a.removeAttribute(\"aria-selected\")),!e.context.disableDates.includes(l)&&e.enableEdgeDatesOnly&&e.context.selectedDates.length>1&&\"multiple-ranged\"===e.selectionDatesMode){const t=getDate(e.context.selectedDates[0]),a=getDate(e.context.selectedDates[e.context.selectedDates.length-1]),o=getDate(l);updateAttribute(n,o>t&&o<a,\"data-vc-date-selected\",\"middle\")}},getLocaleString=(e,t,n)=>new Date(`${e}T00:00:00.000Z`).toLocaleString(t,n),getWeekNumber=(e,t)=>{const n=getDate(e),a=(n.getDay()-t+7)%7;n.setDate(n.getDate()+4-a);const o=new Date(n.getFullYear(),0,1),l=Math.ceil(((+n-+o)/864e5+1)/7);return{year:n.getFullYear(),week:l}},addWeekNumberForDate=(e,t,n)=>{const a=getWeekNumber(n,e.firstWeekday);a&&(t.dataset.vcDateWeekNumber=String(a.week))},setDaysAsDisabled=(e,t,n)=>{var a,o,l,s,i;const r=null==(a=e.disableWeekdays)?void 0:a.includes(n),c=e.disableAllDates&&!!(null==(o=e.context.enableDates)?void 0:o[0]);!r&&!c||(null==(l=e.context.enableDates)?void 0:l.includes(t))||(null==(s=e.context.disableDates)?void 0:s.includes(t))||(e.context.disableDates.push(t),null==(i=e.context.disableDates)||i.sort(((e,t)=>+new Date(e)-+new Date(t))))},createDate=(e,t,n,a,o,l)=>{const s=getDate(o).getDay(),i=\"string\"==typeof e.locale&&e.locale.length?e.locale:\"en\",r=document.createElement(\"div\");let c;r.className=e.styles.date,r.dataset.vcDate=o,r.dataset.vcDateMonth=l,r.dataset.vcDateWeekDay=String(s),r.role=\"gridcell\",(\"current\"===l||e.displayDatesOutside)&&(c=document.createElement(\"button\"),c.className=e.styles.dateBtn,c.type=\"button\",c.ariaLabel=getLocaleString(o,i,{dateStyle:\"long\",timeZone:\"UTC\"}),c.dataset.vcDateBtn=\"\",c.innerText=String(a),r.appendChild(c)),e.enableWeekNumbers&&addWeekNumberForDate(e,r,o),setDaysAsDisabled(e,o,s),setDateModifier(e,t,r,c,s,o,l),n.addDate(r),e.onCreateDateEls&&e.onCreateDateEls(e,r)},createDatesFromCurrentMonth=(e,t,n,a,o)=>{for(let l=1;l<=n;l++){const n=new Date(a,o,l);createDate(e,a,t,l,getDateString(n),\"current\")}},createDatesFromNextMonth=(e,t,n,a,o)=>{const l=o+1===12?a+1:a,s=o+1===12?\"01\":o+2<10?`0${o+2}`:o+2;for(let o=1;o<=n;o++){const n=o<10?`0${o}`:String(o);createDate(e,a,t,o,`${l}-${s}-${n}`,\"next\")}},createDatesFromPrevMonth=(e,t,n,a,o)=>{let l=new Date(n,a,0).getDate()-(o-1);const s=0===a?n-1:n,i=0===a?12:a<10?`0${a}`:a;for(let a=o;a>0;a--,l++){createDate(e,n,t,l,`${s}-${i}-${l}`,\"prev\")}},createWeekNumbers=(e,t,n,a,o)=>{if(!e.enableWeekNumbers)return;a.textContent=\"\";const l=document.createElement(\"b\");l.className=e.styles.weekNumbersTitle,l.innerText=\"#\",l.dataset.vcWeekNumbers=\"title\",a.appendChild(l);const s=document.createElement(\"div\");s.className=e.styles.weekNumbersContent,s.dataset.vcWeekNumbers=\"content\",a.appendChild(s);const i=document.createElement(\"button\");i.type=\"button\",i.className=e.styles.weekNumber;const r=o.querySelectorAll(\"[data-vc-date]\"),c=Math.ceil((t+n)/7);for(let t=0;t<c;t++){const n=r[0===t?6:7*t].dataset.vcDate,a=getWeekNumber(n,e.firstWeekday);if(!a)return;const o=i.cloneNode(!0);o.innerText=String(a.week),o.dataset.vcWeekNumber=String(a.week),o.dataset.vcWeekYear=String(a.year),o.role=\"rowheader\",o.ariaLabel=`${a.week}`,s.appendChild(o)}},createDates=e=>{const t=new Date(e.context.selectedYear,e.context.selectedMonth,1),n=e.context.mainElement.querySelectorAll('[data-vc=\"dates\"]'),a=e.context.mainElement.querySelectorAll('[data-vc-week=\"numbers\"]');n.forEach(((n,o)=>{e.selectionDatesMode||(n.dataset.vcDatesDisabled=\"\"),n.textContent=\"\";const l=new Date(t);l.setMonth(l.getMonth()+o);const s=l.getMonth(),i=l.getFullYear(),r=(new Date(i,s,1).getDay()-e.firstWeekday+7)%7,c=new Date(i,s+1,0).getDate(),d=r+c,u=Math.ceil(d/7),m=7*u-d,p=[];for(let t=0;t<u;t++){const t=document.createElement(\"div\");t.className=e.styles.datesRow,t.setAttribute(\"data-vc-dates\",\"row\"),t.setAttribute(\"role\",\"row\"),p.push(t)}let h=0,v=0;const g={addDate:e=>{p[h].appendChild(e),v++,v>=7&&(h++,v=0)}};createDatesFromPrevMonth(e,g,i,s,r),createDatesFromCurrentMonth(e,g,c,i,s),createDatesFromNextMonth(e,g,m,i,s);for(const e of p)n.appendChild(e);createDatePopup(e,n),createWeekNumbers(e,r,c,a[o],n)}))},layoutDefault=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [month] />\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n    <#ArrowNext [month] />\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <#WeekNumbers />\\n    <div class=\"${e.styles.content}\" data-vc=\"content\" role=\"grid\">\\n      <#Week />\\n      <#Dates />\\n      <#DateRangeTooltip />\\n    </div>\\n  </div>\\n  <#ControlTime />\\n`,layoutMonths=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <div class=\"${e.styles.content}\" data-vc=\"content\">\\n      <#Months />\\n    </div>\\n  </div>\\n`,layoutMultiple=e=>`\\n  <div class=\"${e.styles.controls}\" data-vc=\"controls\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [month] />\\n    <#ArrowNext [month] />\\n  </div>\\n  <div class=\"${e.styles.grid}\" data-vc=\"grid\">\\n    <#Multiple>\\n      <div class=\"${e.styles.column}\" data-vc=\"column\" role=\"region\">\\n        <div class=\"${e.styles.header}\" data-vc=\"header\">\\n          <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n            <#Month />\\n            <#Year />\\n          </div>\\n        </div>\\n        <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n          <#WeekNumbers />\\n          <div class=\"${e.styles.content}\" data-vc=\"content\" role=\"grid\">\\n            <#Week />\\n            <#Dates />\\n          </div>\\n        </div>\\n      </div>\\n    <#/Multiple>\\n    <#DateRangeTooltip />\\n  </div>\\n  <#ControlTime />\\n`,layoutYears=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [year] />\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n    <#ArrowNext [year] />\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <div class=\"${e.styles.content}\" data-vc=\"content\">\\n      <#Years />\\n    </div>\\n  </div>\\n`,ArrowNext=(e,t)=>`<button type=\"button\" class=\"${e.styles.arrowNext}\" data-vc-arrow=\"next\" aria-label=\"${e.labels.arrowNext[t]}\"></button>`,ArrowPrev=(e,t)=>`<button type=\"button\" class=\"${e.styles.arrowPrev}\" data-vc-arrow=\"prev\" aria-label=\"${e.labels.arrowPrev[t]}\"></button>`,ControlTime=e=>e.selectionTimeMode?`<div class=\"${e.styles.time}\" data-vc=\"time\" role=\"group\" aria-label=\"${e.labels.selectingTime}\"></div>`:\"\",DateRangeTooltip=e=>e.onCreateDateRangeTooltip?`<div class=\"${e.styles.dateRangeTooltip}\" data-vc-date-range-tooltip=\"hidden\"></div>`:\"\",Dates=e=>`<div class=\"${e.styles.dates}\" data-vc=\"dates\" aria-live=\"assertive\" aria-label=\"${e.labels.dates}\" ${\"multiple\"===e.type?\"aria-multiselectable\":\"\"}></div>`,Month=e=>`<button type=\"button\" class=\"${e.styles.month}\" data-vc=\"month\"></button>`,Months=e=>`<div class=\"${e.styles.months}\" data-vc=\"months\" role=\"grid\" aria-live=\"assertive\" aria-label=\"${e.labels.months}\"></div>`,Week=e=>`<div class=\"${e.styles.week}\" data-vc=\"week\" role=\"row\" aria-label=\"${e.labels.week}\"></div>`,WeekNumbers=e=>e.enableWeekNumbers?`<div class=\"${e.styles.weekNumbers}\" data-vc-week=\"numbers\" role=\"row\" aria-label=\"${e.labels.weekNumber}\"></div>`:\"\",Year=e=>`<button type=\"button\" class=\"${e.styles.year}\" data-vc=\"year\"></button>`,Years=e=>`<div class=\"${e.styles.years}\" data-vc=\"years\" role=\"grid\" aria-live=\"assertive\" aria-label=\"${e.labels.years}\"></div>`,components={ArrowNext:ArrowNext,ArrowPrev:ArrowPrev,ControlTime:ControlTime,Dates:Dates,DateRangeTooltip:DateRangeTooltip,Month:Month,Months:Months,Week:Week,WeekNumbers:WeekNumbers,Year:Year,Years:Years},getComponent=e=>components[e],parseLayout=(e,t)=>t.replace(/[\\n\\t]/g,\"\").replace(/<#(?!\\/?Multiple)(.*?)>/g,((t,n)=>{const a=(n.match(/\\[(.*?)\\]/)||[])[1],o=n.replace(/[/\\s\\n\\t]|\\[(.*?)\\]/g,\"\"),l=getComponent(o),s=l?l(e,null!=a?a:null):\"\";return e.sanitizerHTML(s)})).replace(/[\\n\\t]/g,\"\"),parseMultipleLayout=(e,t)=>t.replace(new RegExp(\"<#Multiple>(.*?)<#\\\\/Multiple>\",\"gs\"),((t,n)=>{const a=Array(e.context.displayMonthsCount).fill(n).join(\"\");return e.sanitizerHTML(a)})).replace(/[\\n\\t]/g,\"\"),createLayouts=(e,t)=>{const n={default:layoutDefault,month:layoutMonths,year:layoutYears,multiple:layoutMultiple};if(Object.keys(n).forEach((t=>{const a=t;e.layouts[a].length||(e.layouts[a]=n[a](e))})),e.context.mainElement.className=e.styles.calendar,e.context.mainElement.dataset.vc=\"calendar\",e.context.mainElement.dataset.vcType=e.context.currentType,e.context.mainElement.role=\"application\",e.context.mainElement.tabIndex=0,e.context.mainElement.ariaLabel=e.labels.application,\"multiple\"!==e.context.currentType){if(\"multiple\"===e.type&&t){const n=e.context.mainElement.querySelector('[data-vc=\"controls\"]'),a=e.context.mainElement.querySelector('[data-vc=\"grid\"]'),o=t.closest('[data-vc=\"column\"]');return n&&n.remove(),a&&(a.dataset.vcGrid=\"hidden\"),o&&(o.dataset.vcColumn=e.context.currentType),void(o&&(o.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))))}e.context.mainElement.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))}else e.context.mainElement.innerHTML=e.sanitizerHTML(parseMultipleLayout(e,parseLayout(e,e.layouts[e.context.currentType])))},setVisibilityArrows=(e,t,n,a)=>{e.style.visibility=n?\"hidden\":\"\",t.style.visibility=a?\"hidden\":\"\"},handleDefaultType=(e,t,n)=>{const a=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1))),o=new Date(a.getTime()),l=new Date(a.getTime());o.setMonth(o.getMonth()-e.monthsToSwitch),l.setMonth(l.getMonth()+e.monthsToSwitch);const s=getDate(e.context.dateMin),i=getDate(e.context.dateMax);e.selectionYearsMode||(s.setFullYear(a.getFullYear()),i.setFullYear(a.getFullYear()));const r=!e.selectionMonthsMode||o.getFullYear()<s.getFullYear()||o.getFullYear()===s.getFullYear()&&o.getMonth()<s.getMonth(),c=!e.selectionMonthsMode||l.getFullYear()>i.getFullYear()||l.getFullYear()===i.getFullYear()&&l.getMonth()>i.getMonth()-(e.context.displayMonthsCount-1);setVisibilityArrows(t,n,r,c)},handleYearType=(e,t,n)=>{const a=getDate(e.context.dateMin),o=getDate(e.context.dateMax),l=!!(a.getFullYear()&&e.context.displayYear-7<=a.getFullYear()),s=!!(o.getFullYear()&&e.context.displayYear+7>=o.getFullYear());setVisibilityArrows(t,n,l,s)},visibilityArrows=e=>{if(\"month\"===e.context.currentType)return;const t=e.context.mainElement.querySelector('[data-vc-arrow=\"prev\"]'),n=e.context.mainElement.querySelector('[data-vc-arrow=\"next\"]');if(!t||!n)return;({default:()=>handleDefaultType(e,t,n),year:()=>handleYearType(e,t,n)})[\"multiple\"===e.context.currentType?\"default\":e.context.currentType]()},visibilityHandler=(e,t,n,a,o)=>{const l=new Date(a.setFullYear(e.context.selectedYear,e.context.selectedMonth+n)).getFullYear(),s=new Date(a.setMonth(e.context.selectedMonth+n)).getMonth(),i=e.context.locale.months.long[s],r=t.closest('[data-vc=\"column\"]');r&&(r.ariaLabel=`${i} ${l}`);const c={month:{id:s,label:i},year:{id:l,label:l}};t.innerText=String(c[o].label),t.dataset[`vc${o.charAt(0).toUpperCase()+o.slice(1)}`]=String(c[o].id),t.ariaLabel=`${e.labels[o]} ${c[o].label}`;const d={month:e.selectionMonthsMode,year:e.selectionYearsMode},u=!1===d[o]||\"only-arrows\"===d[o];u&&(t.tabIndex=-1),t.disabled=u},visibilityTitle=e=>{const t=e.context.mainElement.querySelectorAll('[data-vc=\"month\"]'),n=e.context.mainElement.querySelectorAll('[data-vc=\"year\"]'),a=new Date(e.context.selectedYear,e.context.selectedMonth,1);[t,n].forEach((t=>null==t?void 0:t.forEach(((t,n)=>visibilityHandler(e,t,n,a,t.dataset.vc)))))},setYearModifier=(e,t,n,a,o)=>{var l;const s={month:\"[data-vc-months-month]\",year:\"[data-vc-years-year]\"},i={month:{selected:\"data-vc-months-month-selected\",aria:\"aria-selected\",value:\"vcMonthsMonth\",selectedProperty:\"selectedMonth\"},year:{selected:\"data-vc-years-year-selected\",aria:\"aria-selected\",value:\"vcYearsYear\",selectedProperty:\"selectedYear\"}};o&&(null==(l=e.context.mainElement.querySelectorAll(s[n]))||l.forEach((e=>{e.removeAttribute(i[n].selected),e.removeAttribute(i[n].aria)})),setContext(e,i[n].selectedProperty,Number(t.dataset[i[n].value])),visibilityTitle(e),\"year\"===n&&visibilityArrows(e)),a&&(t.setAttribute(i[n].selected,\"\"),t.setAttribute(i[n].aria,\"true\"))},getColumnID=(e,t)=>{var n;if(\"multiple\"!==e.type)return{currentValue:null,columnID:0};const a=e.context.mainElement.querySelectorAll('[data-vc=\"column\"]'),o=Array.from(a).findIndex((e=>e.closest(`[data-vc-column=\"${t}\"]`)));return{currentValue:o>=0?Number(null==(n=a[o].querySelector(`[data-vc=\"${t}\"]`))?void 0:n.getAttribute(`data-vc-${t}`)):null,columnID:Math.max(o,0)}},createMonthEl=(e,t,n,a,o,l,s)=>{const i=t.cloneNode(!1);return i.className=e.styles.monthsMonth,i.innerText=a,i.ariaLabel=o,i.role=\"gridcell\",i.dataset.vcMonthsMonth=`${s}`,l&&(i.ariaDisabled=\"true\"),l&&(i.tabIndex=-1),i.disabled=l,setYearModifier(e,i,\"month\",n===s,!1),i},createMonths=(e,t)=>{var n,a;const o=null==(n=null==t?void 0:t.closest('[data-vc=\"header\"]'))?void 0:n.querySelector('[data-vc=\"year\"]'),l=o?Number(o.dataset.vcYear):e.context.selectedYear,s=(null==t?void 0:t.dataset.vcMonth)?Number(t.dataset.vcMonth):e.context.selectedMonth;setContext(e,\"currentType\",\"month\"),createLayouts(e,t),visibilityTitle(e);const i=e.context.mainElement.querySelector('[data-vc=\"months\"]');if(!e.selectionMonthsMode||!i)return;const r=e.monthsToSwitch>1?e.context.locale.months.long.map(((t,n)=>s-e.monthsToSwitch*n)).concat(e.context.locale.months.long.map(((t,n)=>s+e.monthsToSwitch*n))).filter((e=>e>=0&&e<=12)):Array.from(Array(12).keys()),c=document.createElement(\"button\");c.type=\"button\";for(let t=0;t<12;t++){const n=getDate(e.context.dateMin),a=getDate(e.context.dateMax),o=e.context.displayMonthsCount-1,{columnID:d}=getColumnID(e,\"month\"),u=l<=n.getFullYear()&&t<n.getMonth()+d||l>=a.getFullYear()&&t>a.getMonth()-o+d||l>a.getFullYear()||t!==s&&!r.includes(t),m=createMonthEl(e,c,s,e.context.locale.months.short[t],e.context.locale.months.long[t],u,t);i.appendChild(m),e.onCreateMonthEls&&e.onCreateMonthEls(e,m)}null==(a=e.context.mainElement.querySelector(\"[data-vc-months-month]:not([disabled])\"))||a.focus()},TimeInput=(e,t,n,a,o)=>`\\n  <label class=\"${t}\" data-vc-time-input=\"${e}\">\\n    <input type=\"text\" name=\"${e}\" maxlength=\"2\" aria-label=\"${n[`input${e.charAt(0).toUpperCase()+e.slice(1)}`]}\" value=\"${a}\" ${o?\"disabled\":\"\"}>\\n  </label>\\n`,TimeRange=(e,t,n,a,o,l,s)=>`\\n  <label class=\"${t}\" data-vc-time-range=\"${e}\">\\n    <input type=\"range\" name=\"${e}\" min=\"${a}\" max=\"${o}\" step=\"${l}\" aria-label=\"${n[`range${e.charAt(0).toUpperCase()+e.slice(1)}`]}\" value=\"${s}\">\\n  </label>\\n`,handleActions=(e,t,n,a)=>{({hour:()=>setContext(e,\"selectedHours\",n),minute:()=>setContext(e,\"selectedMinutes\",n)})[a](),setContext(e,\"selectedTime\",`${e.context.selectedHours}:${e.context.selectedMinutes}${e.context.selectedKeeping?` ${e.context.selectedKeeping}`:\"\"}`),e.onChangeTime&&e.onChangeTime(e,t,!1),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t)},transformTime24=(e,t)=>{var n;return(null==(n={0:{AM:\"00\",PM:\"12\"},1:{AM:\"01\",PM:\"13\"},2:{AM:\"02\",PM:\"14\"},3:{AM:\"03\",PM:\"15\"},4:{AM:\"04\",PM:\"16\"},5:{AM:\"05\",PM:\"17\"},6:{AM:\"06\",PM:\"18\"},7:{AM:\"07\",PM:\"19\"},8:{AM:\"08\",PM:\"20\"},9:{AM:\"09\",PM:\"21\"},10:{AM:\"10\",PM:\"22\"},11:{AM:\"11\",PM:\"23\"},12:{AM:\"00\",PM:\"12\"}}[Number(e)])?void 0:n[t])||String(e)},handleClickKeepingTime=(e,t,n,a,o)=>{const l=l=>{const s=\"AM\"===e.context.selectedKeeping?\"PM\":\"AM\",i=transformTime24(e.context.selectedHours,s);Number(i)<=a&&Number(i)>=o?(setContext(e,\"selectedKeeping\",s),n.value=i,handleActions(e,l,e.context.selectedHours,\"hour\"),t.ariaLabel=`${e.labels.btnKeeping} ${e.context.selectedKeeping}`,t.innerText=e.context.selectedKeeping):e.onChangeTime&&e.onChangeTime(e,l,!0)};return t.addEventListener(\"click\",l),()=>{t.removeEventListener(\"click\",l)}},transformTime12=e=>({0:\"12\",13:\"01\",14:\"02\",15:\"03\",16:\"04\",17:\"05\",18:\"06\",19:\"07\",20:\"08\",21:\"09\",22:\"10\",23:\"11\"}[Number(e)]||String(e)),updateInputAndRange=(e,t,n,a)=>{e.value=n,t.value=a},updateKeepingTime$1=(e,t,n)=>{t&&n&&(setContext(e,\"selectedKeeping\",n),t.innerText=n)},handleInput$1=(e,t,n,a,o,l,s)=>{const i={hour:(i,r,c)=>{if(!e.selectionTimeMode)return;({12:()=>{if(!e.context.selectedKeeping)return;const d=Number(transformTime24(r,e.context.selectedKeeping));if(!(d<=l&&d>=s))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,transformTime12(r),transformTime24(r,e.context.selectedKeeping)),i>12&&updateKeepingTime$1(e,a,\"PM\"),handleActions(e,c,transformTime12(r),o)},24:()=>{if(!(i<=l&&i>=s))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,r,r),handleActions(e,c,r,o)}})[e.selectionTimeMode]()},minute:(a,i,r)=>{if(!(a<=l&&a>=s))return n.value=e.context.selectedMinutes,void(e.onChangeTime&&e.onChangeTime(e,r,!0));n.value=i,t.value=i,handleActions(e,r,i,o)}},r=e=>{const t=Number(n.value),a=n.value.padStart(2,\"0\");i[o]&&i[o](t,a,e)};return n.addEventListener(\"change\",r),()=>{n.removeEventListener(\"change\",r)}},updateInputAndTime=(e,t,n,a,o)=>{t.value=o,handleActions(e,n,o,a)},updateKeepingTime=(e,t,n)=>{t&&(setContext(e,\"selectedKeeping\",n),t.innerText=n)},handleRange=(e,t,n,a,o)=>{const l=l=>{const s=Number(t.value),i=t.value.padStart(2,\"0\"),r=\"hour\"===o,c=24===e.selectionTimeMode,d=s>0&&s<12;r&&!c&&updateKeepingTime(e,a,0===s||d?\"AM\":\"PM\"),updateInputAndTime(e,n,l,o,!r||c||d?i:transformTime12(t.value))};return t.addEventListener(\"input\",l),()=>{t.removeEventListener(\"input\",l)}},handleMouseOver=e=>e.setAttribute(\"data-vc-input-focus\",\"\"),handleMouseOut=e=>e.removeAttribute(\"data-vc-input-focus\"),handleTime=(e,t)=>{const n=t.querySelector('[data-vc-time-range=\"hour\"] input[name=\"hour\"]'),a=t.querySelector('[data-vc-time-range=\"minute\"] input[name=\"minute\"]'),o=t.querySelector('[data-vc-time-input=\"hour\"] input[name=\"hour\"]'),l=t.querySelector('[data-vc-time-input=\"minute\"] input[name=\"minute\"]'),s=t.querySelector('[data-vc-time=\"keeping\"]');if(!(n&&a&&o&&l))return;const i=e=>{e.target===n&&handleMouseOver(o),e.target===a&&handleMouseOver(l)},r=e=>{e.target===n&&handleMouseOut(o),e.target===a&&handleMouseOut(l)};return t.addEventListener(\"mouseover\",i),t.addEventListener(\"mouseout\",r),handleInput$1(e,n,o,s,\"hour\",e.timeMaxHour,e.timeMinHour),handleInput$1(e,a,l,s,\"minute\",e.timeMaxMinute,e.timeMinMinute),handleRange(e,n,o,s,\"hour\"),handleRange(e,a,l,s,\"minute\"),s&&handleClickKeepingTime(e,s,n,e.timeMaxHour,e.timeMinHour),()=>{t.removeEventListener(\"mouseover\",i),t.removeEventListener(\"mouseout\",r)}},createTime=e=>{const t=e.context.mainElement.querySelector('[data-vc=\"time\"]');if(!e.selectionTimeMode||!t)return;const[n,a]=[e.timeMinHour,e.timeMaxHour],[o,l]=[e.timeMinMinute,e.timeMaxMinute],s=e.context.selectedKeeping?transformTime24(e.context.selectedHours,e.context.selectedKeeping):e.context.selectedHours,i=\"range\"===e.timeControls;var r;t.innerHTML=e.sanitizerHTML(`\\n    <div class=\"${e.styles.timeContent}\" data-vc-time=\"content\">\\n      ${TimeInput(\"hour\",e.styles.timeHour,e.labels,e.context.selectedHours,i)}\\n      ${TimeInput(\"minute\",e.styles.timeMinute,e.labels,e.context.selectedMinutes,i)}\\n      ${12===e.selectionTimeMode?(r=e.context.selectedKeeping,`<button type=\"button\" class=\"${e.styles.timeKeeping}\" aria-label=\"${e.labels.btnKeeping} ${r}\" data-vc-time=\"keeping\" ${i?\"disabled\":\"\"}>${r}</button>`):\"\"}\\n    </div>\\n    <div class=\"${e.styles.timeRanges}\" data-vc-time=\"ranges\">\\n      ${TimeRange(\"hour\",e.styles.timeRange,e.labels,n,a,e.timeStepHour,s)}\\n      ${TimeRange(\"minute\",e.styles.timeRange,e.labels,o,l,e.timeStepMinute,e.context.selectedMinutes)}\\n    </div>\\n  `),handleTime(e,t)},createWeek=e=>{const t=e.selectedWeekends?[...e.selectedWeekends]:[],n=[...e.context.locale.weekdays.long].reduce(((n,a,o)=>[...n,{id:o,titleShort:e.context.locale.weekdays.short[o],titleLong:a,isWeekend:t.includes(o)}]),[]),a=[...n.slice(e.firstWeekday),...n.slice(0,e.firstWeekday)];e.context.mainElement.querySelectorAll('[data-vc=\"week\"]').forEach((t=>{const n=e.onClickWeekDay?document.createElement(\"button\"):document.createElement(\"b\");e.onClickWeekDay&&(n.type=\"button\"),a.forEach((a=>{const o=n.cloneNode(!0);o.innerText=a.titleShort,o.className=e.styles.weekDay,o.role=\"columnheader\",o.ariaLabel=a.titleLong,o.dataset.vcWeekDay=String(a.id),a.isWeekend&&(o.dataset.vcWeekDayOff=\"\"),t.appendChild(o)}))}))},createYearEl=(e,t,n,a,o)=>{const l=t.cloneNode(!1);return l.className=e.styles.yearsYear,l.innerText=String(o),l.ariaLabel=String(o),l.role=\"gridcell\",l.dataset.vcYearsYear=`${o}`,a&&(l.ariaDisabled=\"true\"),a&&(l.tabIndex=-1),l.disabled=a,setYearModifier(e,l,\"year\",n===o,!1),l},createYears=(e,t)=>{var n;const a=(null==t?void 0:t.dataset.vcYear)?Number(t.dataset.vcYear):e.context.selectedYear;setContext(e,\"currentType\",\"year\"),createLayouts(e,t),visibilityTitle(e),visibilityArrows(e);const o=e.context.mainElement.querySelector('[data-vc=\"years\"]');if(!e.selectionYearsMode||!o)return;const l=\"multiple\"!==e.type||e.context.selectedYear===a?0:1,s=document.createElement(\"button\");s.type=\"button\";for(let t=e.context.displayYear-7;t<e.context.displayYear+8;t++){const n=t<getDate(e.context.dateMin).getFullYear()+l||t>getDate(e.context.dateMax).getFullYear(),i=createYearEl(e,s,a,n,t);o.appendChild(i),e.onCreateYearEls&&e.onCreateYearEls(e,i)}null==(n=e.context.mainElement.querySelector(\"[data-vc-years-year]:not([disabled])\"))||n.focus()},trackChangesHTMLElement=(e,t,n)=>{new MutationObserver((e=>{for(let a=0;a<e.length;a++){if(e[a].attributeName===t){n();break}}})).observe(e,{attributes:!0})},haveListener={value:!1,set:()=>haveListener.value=!0,check:()=>haveListener.value},setTheme=(e,t)=>e.dataset.vcTheme=t,trackChangesThemeInSystemSettings=(e,t)=>{if(setTheme(e.context.mainElement,t.matches?\"dark\":\"light\"),\"system\"!==e.selectedTheme||haveListener.check())return;const n=e=>{const t=document.querySelectorAll('[data-vc=\"calendar\"]');null==t||t.forEach((t=>setTheme(t,e.matches?\"dark\":\"light\")))};t.addEventListener?t.addEventListener(\"change\",n):t.addListener(n),haveListener.set()},detectTheme=(e,t)=>{const n=e.themeAttrDetect.length?document.querySelector(e.themeAttrDetect):null,a=e.themeAttrDetect.replace(/^.*\\[(.+)\\]/g,((e,t)=>t));if(!n||\"system\"===n.getAttribute(a))return void trackChangesThemeInSystemSettings(e,t);const o=n.getAttribute(a);o?(setTheme(e.context.mainElement,o),trackChangesHTMLElement(n,a,(()=>{const t=n.getAttribute(a);t&&setTheme(e.context.mainElement,t)}))):trackChangesThemeInSystemSettings(e,t)},handleTheme=e=>{\"not all\"!==window.matchMedia(\"(prefers-color-scheme)\").media?\"system\"===e.selectedTheme?detectTheme(e,window.matchMedia(\"(prefers-color-scheme: dark)\")):setTheme(e.context.mainElement,e.selectedTheme):setTheme(e.context.mainElement,\"light\")},capitalizeFirstLetter=e=>e.charAt(0).toUpperCase()+e.slice(1).replace(/\\./,\"\"),getLocaleWeekday=(e,t,n)=>{const a=new Date(`1978-01-0${t+1}T00:00:00.000Z`),o=a.toLocaleString(n,{weekday:\"short\",timeZone:\"UTC\"}),l=a.toLocaleString(n,{weekday:\"long\",timeZone:\"UTC\"});e.context.locale.weekdays.short.push(capitalizeFirstLetter(o)),e.context.locale.weekdays.long.push(capitalizeFirstLetter(l))},getLocaleMonth=(e,t,n)=>{const a=new Date(`1978-${String(t+1).padStart(2,\"0\")}-01T00:00:00.000Z`),o=a.toLocaleString(n,{month:\"short\",timeZone:\"UTC\"}),l=a.toLocaleString(n,{month:\"long\",timeZone:\"UTC\"});e.context.locale.months.short.push(capitalizeFirstLetter(o)),e.context.locale.months.long.push(capitalizeFirstLetter(l))},getLocale=e=>{var t,n,a,o,l,s,i,r;if(!(e.context.locale.weekdays.short[6]&&e.context.locale.weekdays.long[6]&&e.context.locale.months.short[11]&&e.context.locale.months.long[11]))if(\"string\"==typeof e.locale){if(\"string\"==typeof e.locale&&!e.locale.length)throw new Error(errorMessages.notLocale);Array.from({length:7},((t,n)=>getLocaleWeekday(e,n,e.locale))),Array.from({length:12},((t,n)=>getLocaleMonth(e,n,e.locale)))}else{if(!((null==(n=null==(t=e.locale)?void 0:t.weekdays)?void 0:n.short[6])&&(null==(o=null==(a=e.locale)?void 0:a.weekdays)?void 0:o.long[6])&&(null==(s=null==(l=e.locale)?void 0:l.months)?void 0:s.short[11])&&(null==(r=null==(i=e.locale)?void 0:i.months)?void 0:r.long[11])))throw new Error(errorMessages.notLocale);setContext(e,\"locale\",__spreadValues({},e.locale))}},create=e=>{const t={default:()=>{createWeek(e),createDates(e)},multiple:()=>{createWeek(e),createDates(e)},month:()=>createMonths(e),year:()=>createYears(e)};handleTheme(e),getLocale(e),createLayouts(e),visibilityTitle(e),visibilityArrows(e),createTime(e),t[e.context.currentType]()},handleArrowKeys=e=>{const t=t=>{var n;const a=t.target;if(![\"ArrowUp\",\"ArrowDown\",\"ArrowLeft\",\"ArrowRight\"].includes(t.key)||\"button\"!==a.localName)return;const o=Array.from(e.context.mainElement.querySelectorAll('[data-vc=\"calendar\"] button')),l=o.indexOf(a);if(-1===l)return;const s=(i=o[l]).hasAttribute(\"data-vc-date-btn\")?7:i.hasAttribute(\"data-vc-months-month\")?4:i.hasAttribute(\"data-vc-years-year\")?5:1;var i;const r=(0,{ArrowUp:()=>Math.max(0,l-s),ArrowDown:()=>Math.min(o.length-1,l+s),ArrowLeft:()=>Math.max(0,l-1),ArrowRight:()=>Math.min(o.length-1,l+1)}[t.key])();null==(n=o[r])||n.focus()};return e.context.mainElement.addEventListener(\"keydown\",t),()=>e.context.mainElement.removeEventListener(\"keydown\",t)},handleMonth=(e,t)=>{const n=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1)));({prev:()=>n.setMonth(n.getMonth()-e.monthsToSwitch),next:()=>n.setMonth(n.getMonth()+e.monthsToSwitch)})[t](),setContext(e,\"selectedMonth\",n.getMonth()),setContext(e,\"selectedYear\",n.getFullYear()),visibilityTitle(e),visibilityArrows(e),createDates(e)},handleClickArrow=(e,t)=>{const n=t.target.closest(\"[data-vc-arrow]\");if(n){if([\"default\",\"multiple\"].includes(e.context.currentType))handleMonth(e,n.dataset.vcArrow);else if(\"year\"===e.context.currentType&&void 0!==e.context.displayYear){const a={prev:-15,next:15}[n.dataset.vcArrow];setContext(e,\"displayYear\",e.context.displayYear+a),createYears(e,t.target)}e.onClickArrow&&e.onClickArrow(e,t)}},resolveToggle=(e,t)=>void 0===t||(\"function\"==typeof t?t(e):t),canToggleSelection=e=>resolveToggle(e,e.enableDateToggle),handleSelectDate=(e,t,n)=>{const a=t.dataset.vcDate,o=t.closest(\"[data-vc-date][data-vc-date-selected]\"),l=canToggleSelection(e);if(o&&!l)return;const s=o?e.context.selectedDates.filter((e=>e!==a)):n?[...e.context.selectedDates,a]:[a];setContext(e,\"selectedDates\",s)},createDateRangeTooltip=(e,t,n)=>{if(!t)return;if(!n)return t.dataset.vcDateRangeTooltip=\"hidden\",void(t.textContent=\"\");const a=e.context.mainElement.getBoundingClientRect(),o=n.getBoundingClientRect();t.style.left=o.left-a.left+o.width/2+\"px\",t.style.top=o.bottom-a.top-o.height+\"px\",t.dataset.vcDateRangeTooltip=\"visible\",t.innerHTML=e.sanitizerHTML(e.onCreateDateRangeTooltip(e,n,t,o,a))},state={self:null,lastDateEl:null,isHovering:!1,rangeMin:void 0,rangeMax:void 0,tooltipEl:null,timeoutId:null},addHoverEffect=(e,t,n)=>{var a,o,l;if(!(null==(o=null==(a=state.self)?void 0:a.context)?void 0:o.selectedDates[0]))return;const s=getDateString(e);(null==(l=state.self.context.disableDates)?void 0:l.includes(s))||(state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${s}\"]`).forEach((e=>e.dataset.vcDateHover=\"\")),t.forEach((e=>e.dataset.vcDateHover=\"first\")),n.forEach((e=>{\"first\"===e.dataset.vcDateHover?e.dataset.vcDateHover=\"first-and-last\":e.dataset.vcDateHover=\"last\"})))},removeHoverEffect=()=>{var e,t;if(!(null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.mainElement))return;state.self.context.mainElement.querySelectorAll(\"[data-vc-date-hover]\").forEach((e=>e.removeAttribute(\"data-vc-date-hover\")))},handleHoverDatesEvent=e=>{var t,n;if(!e||!(null==(n=null==(t=state.self)?void 0:t.context)?void 0:n.selectedDates[0]))return;if(!e.closest('[data-vc=\"dates\"]'))return state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),void removeHoverEffect();const a=e.closest(\"[data-vc-date]\");if(!a||state.lastDateEl===a)return;state.lastDateEl=a,createDateRangeTooltip(state.self,state.tooltipEl,a),removeHoverEffect();const o=a.dataset.vcDate,l=getDate(state.self.context.selectedDates[0]),s=getDate(o),i=state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${state.self.context.selectedDates[0]}\"]`),r=state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${o}\"]`),[c,d]=l<s?[i,r]:[r,i],[u,m]=l<s?[l,s]:[s,l];for(let e=new Date(u);e<=m;e.setDate(e.getDate()+1))addHoverEffect(e,c,d)},handleHoverSelectedDatesRangeEvent=e=>{const t=null==e?void 0:e.closest(\"[data-vc-date-selected]\");if(!t&&state.lastDateEl)return state.lastDateEl=null,void createDateRangeTooltip(state.self,state.tooltipEl,null);t&&state.lastDateEl!==t&&(state.lastDateEl=t,createDateRangeTooltip(state.self,state.tooltipEl,t))},optimizedHoverHandler=e=>t=>{const n=t.target;state.isHovering||(state.isHovering=!0,requestAnimationFrame((()=>{e(n),state.isHovering=!1})))},optimizedHandleHoverDatesEvent=optimizedHoverHandler(handleHoverDatesEvent),optimizedHandleHoverSelectedDatesRangeEvent=optimizedHoverHandler(handleHoverSelectedDatesRangeEvent),handleCancelSelectionDates=e=>{state.self&&\"Escape\"===e.key&&(state.lastDateEl=null,setContext(state.self,\"selectedDates\",[]),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect())},handleMouseLeave=()=>{null!==state.timeoutId&&clearTimeout(state.timeoutId),state.timeoutId=setTimeout((()=>{state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect()}),50)},updateDisabledDates=()=>{var e,t,n,a;if(!(null==(n=null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.selectedDates)?void 0:n[0])||!(null==(a=state.self.context.disableDates)?void 0:a[0]))return;const o=getDate(state.self.context.selectedDates[0]),[l,s]=state.self.context.disableDates.map((e=>getDate(e))).reduce((([e,t],n)=>[o>=n?n:e,o<n&&null===t?n:t]),[null,null]);l&&setContext(state.self,\"displayDateMin\",getDateString(new Date(l.setDate(l.getDate()+1)))),s&&setContext(state.self,\"displayDateMax\",getDateString(new Date(s.setDate(s.getDate()-1))));state.self.disableDatesPast&&!state.self.disableAllDates&&getDate(state.self.context.displayDateMin)<getDate(state.self.context.dateToday)&&setContext(state.self,\"displayDateMin\",state.self.context.dateToday)},handleSelectDateRange=(e,t)=>{state.self=e,state.lastDateEl=t,removeHoverEffect(),e.disableDatesGaps&&(state.rangeMin=state.rangeMin?state.rangeMin:e.context.displayDateMin,state.rangeMax=state.rangeMax?state.rangeMax:e.context.displayDateMax),e.onCreateDateRangeTooltip&&(state.tooltipEl=e.context.mainElement.querySelector(\"[data-vc-date-range-tooltip]\"));const n=null==t?void 0:t.dataset.vcDate;if(n){const t=1===e.context.selectedDates.length&&e.context.selectedDates[0].includes(n),a=t&&!canToggleSelection(e)?[n,n]:t&&canToggleSelection(e)?[]:e.context.selectedDates.length>1?[n]:[...e.context.selectedDates,n];setContext(e,\"selectedDates\",a),e.context.selectedDates.length>1&&e.context.selectedDates.sort(((e,t)=>+new Date(e)-+new Date(t)))}({set:()=>(e.disableDatesGaps&&updateDisabledDates(),createDateRangeTooltip(state.self,state.tooltipEl,t),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),state.self.context.mainElement.addEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.addEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.addEventListener(\"keydown\",handleCancelSelectionDates),()=>{state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates)}),reset:()=>{const[n,a]=[e.context.selectedDates[0],e.context.selectedDates[e.context.selectedDates.length-1]],o=e.context.selectedDates[0]!==e.context.selectedDates[e.context.selectedDates.length-1],l=parseDates([`${n}:${a}`]).filter((t=>!e.context.disableDates.includes(t))),s=o?e.enableEdgeDatesOnly?[n,a]:l:[e.context.selectedDates[0],e.context.selectedDates[0]];if(setContext(e,\"selectedDates\",s),e.disableDatesGaps&&(setContext(e,\"displayDateMin\",state.rangeMin),setContext(e,\"displayDateMax\",state.rangeMax)),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),e.onCreateDateRangeTooltip)return e.context.selectedDates[0]||(state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,null)),e.context.selectedDates[0]&&(state.self.context.mainElement.addEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.addEventListener(\"mouseleave\",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,t)),()=>{state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave)}}})[1===e.context.selectedDates.length?\"set\":\"reset\"]()},updateDateModifier=e=>{e.context.mainElement.querySelectorAll(\"[data-vc-date]\").forEach((t=>{const n=t.querySelector(\"[data-vc-date-btn]\"),a=t.dataset.vcDate,o=getDate(a).getDay();setDateModifier(e,e.context.selectedYear,t,n,o,a,\"current\")}))},handleClickDate=(e,t)=>{var n;const a=t.target,o=a.closest(\"[data-vc-date-btn]\");if(!e.selectionDatesMode||![\"single\",\"multiple\",\"multiple-ranged\"].includes(e.selectionDatesMode)||!o)return;const l=o.closest(\"[data-vc-date]\");({single:()=>handleSelectDate(e,l,!1),multiple:()=>handleSelectDate(e,l,!0),\"multiple-ranged\":()=>handleSelectDateRange(e,l)})[e.selectionDatesMode](),null==(n=e.context.selectedDates)||n.sort(((e,t)=>+new Date(e)-+new Date(t))),e.onClickDate&&e.onClickDate(e,t),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t);const s=a.closest('[data-vc-date-month=\"prev\"]'),i=a.closest('[data-vc-date-month=\"next\"]');({prev:()=>e.enableMonthChangeOnDayClick?handleMonth(e,\"prev\"):updateDateModifier(e),next:()=>e.enableMonthChangeOnDayClick?handleMonth(e,\"next\"):updateDateModifier(e),current:()=>updateDateModifier(e)})[s?\"prev\":i?\"next\":\"current\"]()},typeClick=[\"month\",\"year\"],getValue=(e,t,n)=>{const{currentValue:a,columnID:o}=getColumnID(e,t);return\"month\"===e.context.currentType&&o>=0?n-o:\"year\"===e.context.currentType&&e.context.selectedYear!==a?n-1:n},handleMultipleYearSelection=(e,t)=>{const n=getValue(e,\"year\",Number(t.dataset.vcYearsYear)),a=getDate(e.context.dateMin),o=getDate(e.context.dateMax),l=e.context.displayMonthsCount-1,{columnID:s}=getColumnID(e,\"year\"),i=e.context.selectedMonth<a.getMonth()&&n<=a.getFullYear(),r=e.context.selectedMonth>o.getMonth()-l+s&&n>=o.getFullYear(),c=n<a.getFullYear(),d=n>o.getFullYear(),u=i||c?a.getFullYear():r||d?o.getFullYear():n,m=i||c?a.getMonth():r||d?o.getMonth()-l+s:e.context.selectedMonth;setContext(e,\"selectedYear\",u),setContext(e,\"selectedMonth\",m)},handleMultipleMonthSelection=(e,t)=>{const n=t.closest('[data-vc-column=\"month\"]').querySelector('[data-vc=\"year\"]'),a=getValue(e,\"month\",Number(t.dataset.vcMonthsMonth)),o=Number(n.dataset.vcYear),l=getDate(e.context.dateMin),s=getDate(e.context.dateMax),i=a<l.getMonth()&&o<=l.getFullYear(),r=a>s.getMonth()&&o>=s.getFullYear();setContext(e,\"selectedYear\",o),setContext(e,\"selectedMonth\",i?l.getMonth():r?s.getMonth():a)},handleItemClick=(e,t,n,a)=>{var o;({year:()=>{if(\"multiple\"===e.type)return handleMultipleYearSelection(e,a);setContext(e,\"selectedYear\",Number(a.dataset.vcYearsYear))},month:()=>{if(\"multiple\"===e.type)return handleMultipleMonthSelection(e,a);setContext(e,\"selectedMonth\",Number(a.dataset.vcMonthsMonth))}})[n]();({year:()=>{var n;return null==(n=e.onClickYear)?void 0:n.call(e,e,t)},month:()=>{var n;return null==(n=e.onClickMonth)?void 0:n.call(e,e,t)}})[n](),e.context.currentType!==e.type?(setContext(e,\"currentType\",e.type),create(e),null==(o=e.context.mainElement.querySelector(`[data-vc=\"${n}\"]`))||o.focus()):setYearModifier(e,a,n,!0,!0)},handleClickType=(e,t,n)=>{var a;const o=t.target,l=o.closest(`[data-vc=\"${n}\"]`),s={year:()=>createYears(e,o),month:()=>createMonths(e,o)};if(l&&e.onClickTitle&&e.onClickTitle(e,t),l&&e.context.currentType!==n)return s[n]();const i=o.closest(`[data-vc-${n}s-${n}]`);if(i)return handleItemClick(e,t,n,i);const r=o.closest('[data-vc=\"grid\"]'),c=o.closest('[data-vc=\"column\"]');(e.context.currentType===n&&l||\"multiple\"===e.type&&e.context.currentType===n&&r&&!c)&&(setContext(e,\"currentType\",e.type),create(e),null==(a=e.context.mainElement.querySelector(`[data-vc=\"${n}\"]`))||a.focus())},handleClickMonthOrYear=(e,t)=>{const n={month:e.selectionMonthsMode,year:e.selectionYearsMode};typeClick.forEach((a=>{n[a]&&t.target&&handleClickType(e,t,a)}))},handleClickWeekNumber=(e,t)=>{if(!e.enableWeekNumbers||!e.onClickWeekNumber)return;const n=t.target.closest(\"[data-vc-week-number]\"),a=e.context.mainElement.querySelectorAll(\"[data-vc-date-week-number]\");if(!n||!a[0])return;const o=Number(n.innerText),l=Number(n.dataset.vcWeekYear),s=Array.from(a).filter((e=>Number(e.dataset.vcDateWeekNumber)===o));e.onClickWeekNumber(e,o,l,s,t)},handleClickWeekDay=(e,t)=>{if(!e.onClickWeekDay)return;const n=t.target.closest(\"[data-vc-week-day]\"),a=t.target.closest('[data-vc=\"column\"]'),o=a?a.querySelectorAll(\"[data-vc-date-week-day]\"):e.context.mainElement.querySelectorAll(\"[data-vc-date-week-day]\");if(!n||!o[0])return;const l=Number(n.dataset.vcWeekDay),s=Array.from(o).filter((e=>Number(e.dataset.vcDateWeekDay)===l));e.onClickWeekDay(e,l,s,t)},handleClick=e=>{const t=t=>{handleClickArrow(e,t),handleClickWeekDay(e,t),handleClickWeekNumber(e,t),handleClickDate(e,t),handleClickMonthOrYear(e,t)};return e.context.mainElement.addEventListener(\"click\",t),()=>e.context.mainElement.removeEventListener(\"click\",t)},initMonthsCount=e=>{if(\"multiple\"===e.type&&(e.displayMonthsCount<=1||e.displayMonthsCount>12))throw new Error(errorMessages.incorrectMonthsCount);if(\"multiple\"!==e.type&&e.displayMonthsCount>1)throw new Error(errorMessages.incorrectMonthsCount);setContext(e,\"displayMonthsCount\",e.displayMonthsCount?e.displayMonthsCount:\"multiple\"===e.type?2:1)},getLocalDate=()=>{const e=new Date;return new Date(e.getTime()-6e4*e.getTimezoneOffset()).toISOString().substring(0,10)},resolveDate=(e,t)=>\"today\"===e?getLocalDate():e instanceof Date||\"number\"==typeof e||\"string\"==typeof e?parseDates([e])[0]:t,initRange=e=>{var t,n,a;const o=resolveDate(e.dateMin,e.dateMin),l=resolveDate(e.dateMax,e.dateMax),s=resolveDate(e.displayDateMin,o),i=resolveDate(e.displayDateMax,l);setContext(e,\"dateToday\",resolveDate(e.dateToday,e.dateToday)),setContext(e,\"displayDateMin\",s?getDate(o)>=getDate(s)?o:s:o),setContext(e,\"displayDateMax\",i?getDate(l)<=getDate(i)?l:i:l);const r=e.disableDatesPast&&!e.disableAllDates&&getDate(s)<getDate(e.context.dateToday);setContext(e,\"displayDateMin\",r||e.disableAllDates?e.context.dateToday:s),setContext(e,\"displayDateMax\",e.disableAllDates?e.context.dateToday:i),setContext(e,\"disableDates\",e.disableDates[0]&&!e.disableAllDates?parseDates(e.disableDates):e.disableAllDates?[e.context.displayDateMin]:[]),e.context.disableDates.length>1&&e.context.disableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),setContext(e,\"enableDates\",e.enableDates[0]?parseDates(e.enableDates):[]),(null==(t=e.context.enableDates)?void 0:t[0])&&(null==(n=e.context.disableDates)?void 0:n[0])&&setContext(e,\"disableDates\",e.context.disableDates.filter((t=>!e.context.enableDates.includes(t)))),e.context.enableDates.length>1&&e.context.enableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),(null==(a=e.context.enableDates)?void 0:a[0])&&e.disableAllDates&&(setContext(e,\"displayDateMin\",e.context.enableDates[0]),setContext(e,\"displayDateMax\",e.context.enableDates[e.context.enableDates.length-1])),setContext(e,\"dateMin\",e.displayDisabledDates?o:e.context.displayDateMin),setContext(e,\"dateMax\",e.displayDisabledDates?l:e.context.displayDateMax)},initSelectedDates=e=>{var t;setContext(e,\"selectedDates\",(null==(t=e.selectedDates)?void 0:t[0])?parseDates(e.selectedDates):[])},displayClosestValidDate=e=>{const t=t=>{const n=new Date(t);setInitialContext(e,n.getMonth(),n.getFullYear())};if(e.displayDateMin&&\"today\"!==e.displayDateMin&&(n=e.displayDateMin,a=new Date,new Date(n).getTime()>a.getTime())){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMin;return t(getDate(resolveDate(n,e.displayDateMin))),!0}var n,a;if(e.displayDateMax&&\"today\"!==e.displayDateMax&&((e,t)=>new Date(e).getTime()<t.getTime())(e.displayDateMax,new Date)){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMax;return t(getDate(resolveDate(n,e.displayDateMax))),!0}return!1},setInitialContext=(e,t,n)=>{setContext(e,\"selectedMonth\",t),setContext(e,\"selectedYear\",n),setContext(e,\"displayYear\",n)},initSelectedMonthYear=e=>{var t;if(e.enableJumpToSelectedDate&&(null==(t=e.selectedDates)?void 0:t[0])&&void 0===e.selectedMonth&&void 0===e.selectedYear){const t=getDate(parseDates(e.selectedDates)[0]);return void setInitialContext(e,t.getMonth(),t.getFullYear())}if(displayClosestValidDate(e))return;const n=void 0!==e.selectedMonth&&Number(e.selectedMonth)>=0&&Number(e.selectedMonth)<12,a=void 0!==e.selectedYear&&Number(e.selectedYear)>=0&&Number(e.selectedYear)<=9999;setInitialContext(e,n?Number(e.selectedMonth):getDate(e.context.dateToday).getMonth(),a?Number(e.selectedYear):getDate(e.context.dateToday).getFullYear())},initTime=e=>{var t,n,a;if(!e.selectionTimeMode)return;if(![12,24].includes(e.selectionTimeMode))throw new Error(errorMessages.incorrectTime);const o=12===e.selectionTimeMode,l=o?/^(0[1-9]|1[0-2]):([0-5][0-9]) ?(AM|PM)?$/i:/^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/;let[s,i,r]=null!=(a=null==(n=null==(t=e.selectedTime)?void 0:t.match(l))?void 0:n.slice(1))?a:[];s?o&&!r&&(r=\"AM\"):(s=o?transformTime12(String(e.timeMinHour)):String(e.timeMinHour),i=String(e.timeMinMinute),r=o?Number(transformTime12(String(e.timeMinHour)))>=12?\"PM\":\"AM\":null),setContext(e,\"selectedHours\",s.padStart(2,\"0\")),setContext(e,\"selectedMinutes\",i.padStart(2,\"0\")),setContext(e,\"selectedKeeping\",r),setContext(e,\"selectedTime\",`${e.context.selectedHours}:${e.context.selectedMinutes}${r?` ${r}`:\"\"}`)},initAllVariables=e=>{setContext(e,\"currentType\",e.type),initMonthsCount(e),initRange(e),initSelectedMonthYear(e),initSelectedDates(e),initTime(e)},reset=(e,{year:t,month:n,dates:a,time:o,locale:l},s=!0)=>{var i;const r={year:e.selectedYear,month:e.selectedMonth,dates:e.selectedDates,time:e.selectedTime};if(e.selectedYear=t?r.year:e.context.selectedYear,e.selectedMonth=n?r.month:e.context.selectedMonth,e.selectedTime=o?r.time:e.context.selectedTime,e.selectedDates=\"only-first\"===a&&(null==(i=e.context.selectedDates)?void 0:i[0])?[e.context.selectedDates[0]]:!0===a?r.dates:e.context.selectedDates,l){setContext(e,\"locale\",{months:{short:[],long:[]},weekdays:{short:[],long:[]}})}initAllVariables(e),s&&create(e),e.selectedYear=r.year,e.selectedMonth=r.month,e.selectedDates=r.dates,e.selectedTime=r.time,\"multiple-ranged\"===e.selectionDatesMode&&a&&handleSelectDateRange(e,null)},createToInput=e=>{const t=document.createElement(\"div\");return t.className=e.styles.calendar,t.dataset.vc=\"calendar\",t.dataset.vcInput=\"\",t.dataset.vcCalendarHidden=\"\",setContext(e,\"inputModeInit\",!0),setContext(e,\"isShowInInputMode\",!1),setContext(e,\"mainElement\",t),document.body.appendChild(e.context.mainElement),reset(e,{year:!0,month:!0,dates:!0,time:!0,locale:!0}),setTimeout((()=>show(e))),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e)},canOpenOnFocus=e=>resolveToggle(e,e.openOnFocus),handleInput=e=>{setContext(e,\"inputElement\",e.context.mainElement);const t=()=>{e.context.inputModeInit?setTimeout((()=>show(e))):createToInput(e)};e.context.inputElement.addEventListener(\"click\",t);const n=\"function\"==typeof e.openOnFocus||!0===e.openOnFocus,a=()=>{shouldSkipOpenOnFocus(e)?clearSkipOpenOnFocus(e):canOpenOnFocus(e)&&t()};n&&e.context.inputElement.addEventListener(\"focus\",a);const o=t=>{const n=\"Tab\"===t.key&&!t.shiftKey,a=[\"ArrowUp\",\"ArrowDown\",\"ArrowLeft\",\"ArrowRight\"].includes(t.key);(n||a)&&(t=>{var n;if(!e.context.isShowInInputMode)return!1;if(document.activeElement!==e.context.inputElement)return!1;const a=e=>e.tabIndex>=0&&!e.hasAttribute(\"disabled\")&&\"true\"!==e.getAttribute(\"aria-disabled\"),o=null!=(n=document.createTreeWalker(e.context.mainElement,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>a(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}).nextNode())?n:a(e.context.mainElement)?e.context.mainElement:null;!o||o.tabIndex<0||(t.preventDefault(),o.focus())})(t)};return e.context.inputElement.addEventListener(\"keydown\",o),()=>{e.context.inputElement.removeEventListener(\"click\",t),n&&e.context.inputElement.removeEventListener(\"focus\",a),e.context.inputElement.removeEventListener(\"keydown\",o)}},init=e=>(setContext(e,\"originalElement\",e.context.mainElement.cloneNode(!0)),setContext(e,\"isInit\",!0),e.inputMode?handleInput(e):(initAllVariables(e),create(e),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e))),update=(e,t)=>{if(!e.context.isInit)throw new Error(errorMessages.notInit);reset(e,__spreadValues(__spreadValues({},{year:!0,month:!0,dates:!0,time:!0,locale:!0}),t),!(e.inputMode&&!e.context.inputModeInit)),e.onUpdate&&e.onUpdate(e)},replaceProperties=(e,t)=>{const n=Object.keys(t);for(let a=0;a<n.length;a++){const o=n[a];\"object\"!=typeof e[o]||\"object\"!=typeof t[o]||t[o]instanceof Date||Array.isArray(t[o])?void 0!==t[o]&&(e[o]=t[o]):replaceProperties(e[o],t[o])}},set=(e,t,n)=>{replaceProperties(e,t),e.context.isInit&&update(e,n)};function findBestPickerPosition(e,t){const n=\"left\";if(!t||!e)return n;const{canShow:a,parentPositions:o}=getAvailablePosition(e,t),l=a.left&&a.right;return(l&&a.bottom?\"center\":l&&a.top?[\"top\",\"center\"]:Array.isArray(o)?[\"bottom\"===o[0]?\"top\":\"bottom\",...o.slice(1)]:o)||n}const setPosition=(e,t,n)=>{if(!e)return;const a=\"auto\"===n?findBestPickerPosition(e,t):n,o={top:-t.offsetHeight,bottom:e.offsetHeight,left:0,center:e.offsetWidth/2-t.offsetWidth/2,right:e.offsetWidth-t.offsetWidth},l=Array.isArray(a)?a[0]:\"bottom\",s=Array.isArray(a)?a[1]:a;t.dataset.vcPosition=l;const{top:i,left:r}=getOffset(e),c=i+o[l];let d=r+o[s];const{vw:u}=getViewportDimensions();if(d+t.clientWidth>u){const e=window.innerWidth-document.body.clientWidth;d=u-t.clientWidth-e}else d<0&&(d=0);Object.assign(t.style,{left:`${d}px`,top:`${c}px`})},show=e=>{if(e.context.isShowInInputMode)return;if(!e.context.currentType)return void e.context.mainElement.click();setContext(e,\"cleanupHandlers\",[]),setContext(e,\"isShowInInputMode\",!0),e.inputMode&&restoreTabbing(e.context.mainElement),setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput),e.context.mainElement.removeAttribute(\"data-vc-calendar-hidden\");const t=()=>{setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput)};window.addEventListener(\"resize\",t),e.context.cleanupHandlers.push((()=>window.removeEventListener(\"resize\",t)));const n=t=>{\"Escape\"===t.key&&hide(e)};document.addEventListener(\"keydown\",n),e.context.cleanupHandlers.push((()=>document.removeEventListener(\"keydown\",n)));const a=t=>{t.target===e.context.inputElement||e.context.mainElement.contains(t.target)||hide(e)};document.addEventListener(\"click\",a,{capture:!0}),e.context.cleanupHandlers.push((()=>document.removeEventListener(\"click\",a,{capture:!0}))),e.onShow&&e.onShow(e)},labels={application:\"Calendar\",navigation:\"Calendar Navigation\",arrowNext:{month:\"Next month\",year:\"Next list of years\"},arrowPrev:{month:\"Previous month\",year:\"Previous list of years\"},month:\"Select month, current selected month:\",months:\"List of months\",year:\"Select year, current selected year:\",years:\"List of years\",week:\"Days of the week\",weekNumber:\"Numbers of weeks in a year\",dates:\"Dates in the current month\",selectingTime:\"Selecting a time \",inputHour:\"Hours\",inputMinute:\"Minutes\",rangeHour:\"Slider for selecting hours\",rangeMinute:\"Slider for selecting minutes\",btnKeeping:\"Switch AM/PM, current position:\"},styles={calendar:\"vc\",controls:\"vc-controls\",grid:\"vc-grid\",column:\"vc-column\",header:\"vc-header\",headerContent:\"vc-header__content\",month:\"vc-month\",year:\"vc-year\",arrowPrev:\"vc-arrow vc-arrow_prev\",arrowNext:\"vc-arrow vc-arrow_next\",wrapper:\"vc-wrapper\",content:\"vc-content\",months:\"vc-months\",monthsMonth:\"vc-months__month\",years:\"vc-years\",yearsYear:\"vc-years__year\",week:\"vc-week\",weekDay:\"vc-week__day\",weekNumbers:\"vc-week-numbers\",weekNumbersTitle:\"vc-week-numbers__title\",weekNumbersContent:\"vc-week-numbers__content\",weekNumber:\"vc-week-number\",dates:\"vc-dates\",datesRow:\"vc-dates__row\",date:\"vc-date\",dateBtn:\"vc-date__btn\",datePopup:\"vc-date__popup\",dateRangeTooltip:\"vc-date-range-tooltip\",time:\"vc-time\",timeContent:\"vc-time__content\",timeHour:\"vc-time__hour\",timeMinute:\"vc-time__minute\",timeKeeping:\"vc-time__keeping\",timeRanges:\"vc-time__ranges\",timeRange:\"vc-time__range\"};class OptionsCalendar{constructor(){__publicField(this,\"type\",\"default\"),__publicField(this,\"inputMode\",!1),__publicField(this,\"openOnFocus\",!0),__publicField(this,\"positionToInput\",\"left\"),__publicField(this,\"firstWeekday\",1),__publicField(this,\"monthsToSwitch\",1),__publicField(this,\"themeAttrDetect\",\"html[data-theme]\"),__publicField(this,\"locale\",\"en\"),__publicField(this,\"dateToday\",\"today\"),__publicField(this,\"dateMin\",\"1970-01-01\"),__publicField(this,\"dateMax\",\"2470-12-31\"),__publicField(this,\"displayDateMin\"),__publicField(this,\"displayDateMax\"),__publicField(this,\"displayDatesOutside\",!0),__publicField(this,\"displayDisabledDates\",!1),__publicField(this,\"displayMonthsCount\"),__publicField(this,\"disableDates\",[]),__publicField(this,\"disableAllDates\",!1),__publicField(this,\"disableDatesPast\",!1),__publicField(this,\"disableDatesGaps\",!1),__publicField(this,\"disableWeekdays\",[]),__publicField(this,\"disableToday\",!1),__publicField(this,\"enableDates\",[]),__publicField(this,\"enableEdgeDatesOnly\",!0),__publicField(this,\"enableDateToggle\",!0),__publicField(this,\"enableWeekNumbers\",!1),__publicField(this,\"enableMonthChangeOnDayClick\",!0),__publicField(this,\"enableJumpToSelectedDate\",!1),__publicField(this,\"selectionDatesMode\",\"single\"),__publicField(this,\"selectionMonthsMode\",!0),__publicField(this,\"selectionYearsMode\",!0),__publicField(this,\"selectionTimeMode\",!1),__publicField(this,\"selectedDates\",[]),__publicField(this,\"selectedMonth\"),__publicField(this,\"selectedYear\"),__publicField(this,\"selectedHolidays\",[]),__publicField(this,\"selectedWeekends\",[0,6]),__publicField(this,\"selectedTime\"),__publicField(this,\"selectedTheme\",\"system\"),__publicField(this,\"timeMinHour\",0),__publicField(this,\"timeMaxHour\",23),__publicField(this,\"timeMinMinute\",0),__publicField(this,\"timeMaxMinute\",59),__publicField(this,\"timeControls\",\"all\"),__publicField(this,\"timeStepHour\",1),__publicField(this,\"timeStepMinute\",1),__publicField(this,\"sanitizerHTML\",(e=>e)),__publicField(this,\"onClickDate\"),__publicField(this,\"onClickWeekDay\"),__publicField(this,\"onClickWeekNumber\"),__publicField(this,\"onClickTitle\"),__publicField(this,\"onClickMonth\"),__publicField(this,\"onClickYear\"),__publicField(this,\"onClickArrow\"),__publicField(this,\"onChangeTime\"),__publicField(this,\"onChangeToInput\"),__publicField(this,\"onCreateDateRangeTooltip\"),__publicField(this,\"onCreateDateEls\"),__publicField(this,\"onCreateMonthEls\"),__publicField(this,\"onCreateYearEls\"),__publicField(this,\"onInit\"),__publicField(this,\"onUpdate\"),__publicField(this,\"onDestroy\"),__publicField(this,\"onShow\"),__publicField(this,\"onHide\"),__publicField(this,\"popups\",{}),__publicField(this,\"labels\",__spreadValues({},labels)),__publicField(this,\"layouts\",{default:\"\",multiple:\"\",month:\"\",year:\"\"}),__publicField(this,\"styles\",__spreadValues({},styles))}}const _Calendar=class e extends OptionsCalendar{constructor(t,n){var a;super(),__publicField(this,\"init\",(()=>init(this))),__publicField(this,\"update\",(e=>update(this,e))),__publicField(this,\"destroy\",(()=>destroy(this))),__publicField(this,\"show\",(()=>show(this))),__publicField(this,\"hide\",(()=>hide(this))),__publicField(this,\"set\",((e,t)=>set(this,e,t))),__publicField(this,\"context\"),this.context=__spreadProps(__spreadValues({},this.context),{locale:{months:{short:[],long:[]},weekdays:{short:[],long:[]}}}),setContext(this,\"mainElement\",\"string\"==typeof t?null!=(a=e.memoizedElements.get(t))?a:this.queryAndMemoize(t):t),n&&replaceProperties(this,n)}queryAndMemoize(t){const n=document.querySelector(t);if(!n)throw new Error(errorMessages.notFoundSelector(t));return e.memoizedElements.set(t,n),n}};__publicField(_Calendar,\"memoizedElements\",new Map);let Calendar=_Calendar;export{Calendar};","/**\n * --------------------------------------------------------------------------\n * Bootstrap datepicker.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { Calendar } from 'vanilla-calendar-pro'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'datepicker'\nconst DATA_KEY = 'bs.datepicker'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"datepicker\"]'\n\nconst HIDE_DELAY = 100 // ms delay before hiding after selection\n\nconst Default = {\n  datepickerTheme: null, // 'light', 'dark', 'auto' - explicit theme for datepicker popover only\n  dateMin: null,\n  dateMax: null,\n  dateFormat: null, // Intl.DateTimeFormat options, or function(date, locale) => string\n  displayElement: null, // Element to show formatted date (defaults to element for buttons)\n  displayMonthsCount: 1, // Number of months to display side-by-side\n  firstWeekday: 1, // Monday\n  inline: false, // Render calendar inline (no popup)\n  locale: 'default',\n  positionElement: null, // Element to position calendar relative to (defaults to input)\n  selectedDates: [],\n  selectionMode: 'single', // 'single', 'multiple', 'multiple-ranged'\n  placement: 'left', // 'left', 'center', 'right', 'auto'\n  vcpOptions: {} // Pass-through for any VCP option\n}\n\nconst DefaultType = {\n  datepickerTheme: '(null|string)',\n  dateMin: '(null|string|number|object)',\n  dateMax: '(null|string|number|object)',\n  dateFormat: '(null|object|function)',\n  displayElement: '(null|string|element|boolean)',\n  displayMonthsCount: 'number',\n  firstWeekday: 'number',\n  inline: 'boolean',\n  locale: 'string',\n  positionElement: '(null|string|element)',\n  selectedDates: 'array',\n  selectionMode: 'string',\n  placement: 'string',\n  vcpOptions: 'object'\n}\n\n/**\n * Class definition\n */\n\nclass Datepicker extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._calendar = null\n    this._isShown = false\n\n    this._initCalendar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    return this._isShown ? this.hide() : this.show()\n  }\n\n  show() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || isDisabled(this._element) || this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.show()\n    this._isShown = true\n\n    EventHandler.trigger(this._element, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || !this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.hide()\n    this._isShown = false\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._themeObserver) {\n      this._themeObserver.disconnect()\n      this._themeObserver = null\n    }\n\n    if (this._calendar) {\n      this._calendar.destroy()\n    }\n\n    this._calendar = null\n    super.dispose()\n  }\n\n  getSelectedDates() {\n    const dates = this._calendar?.context?.selectedDates\n    return dates ? [...dates] : []\n  }\n\n  setSelectedDates(dates) {\n    if (this._calendar) {\n      this._calendar.set({ selectedDates: dates })\n    }\n  }\n\n  // Private\n  _initCalendar() {\n    this._isInput = this._element.tagName === 'INPUT'\n    this._isInline = this._config.inline\n\n    // For inline mode, look for a hidden input child to bind to\n    if (this._isInline && !this._isInput) {\n      this._boundInput = this._element.querySelector('input[type=\"hidden\"], input[name]')\n    }\n\n    this._positionElement = this._resolvePositionElement()\n    this._displayElement = this._resolveDisplayElement()\n\n    const calendarOptions = this._buildCalendarOptions()\n\n    // Create calendar on the position element (for correct popup positioning)\n    // but value updates still go to this._element (the input)\n    this._calendar = new Calendar(this._positionElement, calendarOptions)\n    this._calendar.init()\n\n    // Watch for theme changes on ancestor elements (for live theme switching)\n    this._setupThemeObserver()\n\n    // Set initial value if input has a value\n    if (this._isInput && this._element.value) {\n      this._parseInputValue()\n    }\n\n    // Populate input/display with preselected dates\n    this._updateDisplayWithSelectedDates()\n  }\n\n  _updateDisplayWithSelectedDates() {\n    const { selectedDates } = this._config\n    if (!selectedDates || selectedDates.length === 0) {\n      return\n    }\n\n    const formattedDate = this._formatDateForInput(selectedDates)\n\n    if (this._isInput) {\n      this._element.value = formattedDate\n    }\n\n    if (this._boundInput) {\n      this._boundInput.value = selectedDates.join(',')\n    }\n\n    if (this._displayElement) {\n      this._displayElement.textContent = formattedDate\n    }\n  }\n\n  _resolvePositionElement() {\n    let { positionElement } = this._config\n\n    if (typeof positionElement === 'string') {\n      positionElement = document.querySelector(positionElement)\n    }\n\n    // Use input's parent if in form-adorn\n    if (!positionElement && this._isInput && !this._isInline) {\n      const parent = this._element.closest('.form-adorn')\n      if (parent) {\n        positionElement = parent\n      }\n    }\n\n    return positionElement || this._element\n  }\n\n  _resolveDisplayElement() {\n    const { displayElement } = this._config\n\n    if (typeof displayElement === 'string') {\n      return document.querySelector(displayElement)\n    }\n\n    // For buttons/non-inputs (not inline), look for a [data-bs-datepicker-display] child\n    if (displayElement === true || (displayElement === null && !this._isInput && !this._isInline)) {\n      const displayChild = this._element.querySelector('[data-bs-datepicker-display]')\n      return displayChild || this._element\n    }\n\n    return displayElement\n  }\n\n  _getThemeAncestor() {\n    return this._element.closest('[data-bs-theme]')\n  }\n\n  _getEffectiveTheme() {\n    // Priority: explicit datepickerTheme config > inherited from ancestor > none\n    const { datepickerTheme } = this._config\n    if (datepickerTheme) {\n      return datepickerTheme\n    }\n\n    const ancestor = this._getThemeAncestor()\n    return ancestor?.getAttribute('data-bs-theme') || null\n  }\n\n  _syncThemeAttribute(element) {\n    if (!element) {\n      return\n    }\n\n    const theme = this._getEffectiveTheme()\n\n    if (theme) {\n      // Copy theme to popover (needed because VCP appends to body, breaking CSS inheritance)\n      element.setAttribute('data-bs-theme', theme)\n    } else {\n      // No theme - remove attribute to allow natural inheritance\n      element.removeAttribute('data-bs-theme')\n    }\n  }\n\n  _setupThemeObserver() {\n    // Watch for theme changes on ancestor elements\n    const ancestor = this._getThemeAncestor()\n    if (!ancestor || this._config.datepickerTheme) {\n      // No ancestor to watch, or explicit datepickerTheme overrides\n      return\n    }\n\n    this._themeObserver = new MutationObserver(() => {\n      this._syncThemeAttribute(this._calendar?.context?.mainElement)\n    })\n\n    this._themeObserver.observe(ancestor, {\n      attributes: true,\n      attributeFilter: ['data-bs-theme']\n    })\n  }\n\n  _buildCalendarOptions() {\n    // Get theme for VCP - use 'system' for auto-detection if no explicit theme\n    const theme = this._getEffectiveTheme()\n    // VCP uses 'system' for auto, Bootstrap uses 'auto'\n    const vcpTheme = !theme || theme === 'auto' ? 'system' : theme\n\n    const calendarOptions = {\n      ...this._config.vcpOptions,\n      inputMode: !this._isInline,\n      positionToInput: this._config.placement,\n      firstWeekday: this._config.firstWeekday,\n      locale: this._config.locale,\n      selectionDatesMode: this._config.selectionMode,\n      selectedDates: this._config.selectedDates,\n      displayMonthsCount: this._config.displayMonthsCount,\n      type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',\n      selectedTheme: vcpTheme,\n      themeAttrDetect: '[data-bs-theme]',\n      onClickDate: (self, event) => this._handleDateClick(self, event),\n      onInit: self => {\n        this._syncThemeAttribute(self.context.mainElement)\n      },\n      onShow: () => {\n        this._isShown = true\n        this._syncThemeAttribute(this._calendar.context.mainElement)\n      },\n      onHide: () => {\n        this._isShown = false\n      }\n    }\n\n    // Navigate to the month of the first selected date\n    if (this._config.selectedDates.length > 0) {\n      const firstDate = this._parseDate(this._config.selectedDates[0])\n      calendarOptions.selectedMonth = firstDate.getMonth()\n      calendarOptions.selectedYear = firstDate.getFullYear()\n    }\n\n    if (this._config.dateMin) {\n      calendarOptions.dateMin = this._config.dateMin\n    }\n\n    if (this._config.dateMax) {\n      calendarOptions.dateMax = this._config.dateMax\n    }\n\n    return calendarOptions\n  }\n\n  _handleDateClick(self, event) {\n    const selectedDates = [...self.context.selectedDates]\n\n    if (selectedDates.length > 0) {\n      const formattedDate = this._formatDateForInput(selectedDates)\n\n      if (this._isInput) {\n        this._element.value = formattedDate\n      }\n\n      if (this._boundInput) {\n        this._boundInput.value = selectedDates.join(',')\n      }\n\n      if (this._displayElement) {\n        this._displayElement.textContent = formattedDate\n      }\n    }\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      dates: selectedDates,\n      event\n    })\n\n    this._maybeHideAfterSelection(selectedDates)\n  }\n\n  _maybeHideAfterSelection(selectedDates) {\n    if (this._isInline) {\n      return\n    }\n\n    const shouldHide =\n      (this._config.selectionMode === 'single' && selectedDates.length > 0) ||\n      (this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2)\n\n    if (shouldHide) {\n      setTimeout(() => this.hide(), HIDE_DELAY)\n    }\n  }\n\n  _parseDate(dateStr) {\n    const [year, month, day] = dateStr.split('-')\n    return new Date(year, month - 1, day)\n  }\n\n  _formatDate(dateStr) {\n    const date = this._parseDate(dateStr)\n    const locale = this._config.locale === 'default' ? undefined : this._config.locale\n    const { dateFormat } = this._config\n\n    // Custom function formatter\n    if (typeof dateFormat === 'function') {\n      return dateFormat(date, locale)\n    }\n\n    // Intl.DateTimeFormat options object\n    if (dateFormat && typeof dateFormat === 'object') {\n      return new Intl.DateTimeFormat(locale, dateFormat).format(date)\n    }\n\n    // Default: locale-aware formatting\n    return date.toLocaleDateString(locale)\n  }\n\n  _formatDateForInput(dates) {\n    if (dates.length === 0) {\n      return ''\n    }\n\n    if (dates.length === 1) {\n      return this._formatDate(dates[0])\n    }\n\n    // For date ranges, use en-dash; for multiple dates, use comma\n    const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', '\n    return dates.map(d => this._formatDate(d)).join(separator)\n  }\n\n  _parseInputValue() {\n    // Try to parse the input value as a date\n    const value = this._element.value.trim()\n    if (!value) {\n      return\n    }\n\n    const date = new Date(value)\n    if (!Number.isNaN(date.getTime())) {\n      const year = date.getFullYear()\n      const month = String(date.getMonth() + 1).padStart(2, '0')\n      const day = String(date.getDate()).padStart(2, '0')\n      const formatted = `${year}-${month}-${day}`\n      this._calendar.set({ selectedDates: [formatted] })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // Only handle if not an input (inputs use focus)\n  // Skip inline datepickers (they're always visible)\n  if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true') {\n    return\n  }\n\n  event.preventDefault()\n  Datepicker.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE, function () {\n  // Handle focus for input elements\n  if (this.tagName !== 'INPUT') {\n    return\n  }\n\n  Datepicker.getOrCreateInstance(this).show()\n})\n\n// Auto-initialize inline datepickers on DOMContentLoaded\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE}[data-bs-inline=\"true\"]`)) {\n    Datepicker.getOrCreateInstance(element)\n  }\n})\n\nexport default Datepicker\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dialog'\nconst DATA_KEY = 'bs.dialog'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_STATIC = 'dialog-static'\nconst CLASS_NAME_OPEN = 'dialog-open'\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\nconst SELECTOR_OPEN_MODAL_DIALOG = 'dialog.dialog[open]:not(.dialog-nonmodal)'\n\nconst Default = {\n  backdrop: true, // true (click dismisses) or 'static' (click does nothing) - only applies to modal dialogs\n  keyboard: true,\n  modal: true // true uses showModal(), false uses show() for non-modal dialogs\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  modal: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Dialog extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._element.open ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n\n    if (this._config.modal) {\n      // Modal dialog: use showModal() for focus trapping, backdrop, and top layer\n      this._element.showModal()\n      // Prevent body scroll for modal dialogs\n      document.body.classList.add(CLASS_NAME_OPEN)\n    } else {\n      // Non-modal dialog: use show() - no backdrop, no focus trap, no top layer\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n      this._element.show()\n    }\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }, this._element, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n\n    this._queueCallback(() => this._hideDialog(), this._element, this._isAnimated())\n  }\n\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n    super.dispose()\n  }\n\n  handleUpdate() {\n    // Provided for API consistency with Modal.\n    // Native dialogs handle their own positioning.\n  }\n\n  // Private\n  _hideDialog() {\n    this._element.close()\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n    this._isTransitioning = false\n\n    // Only restore body scroll if no other modal dialogs are open\n    if (!document.querySelector(SELECTOR_OPEN_MODAL_DIALOG)) {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n    }\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains('fade')\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      this._element.classList.remove(CLASS_NAME_STATIC)\n    }, this._element)\n  }\n\n  _addEventListeners() {\n    // Handle native cancel event (Escape key) - only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      // Prevent native close behavior - we'll handle it\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_CANCEL)\n      this.hide()\n    })\n\n    // Handle Escape key for non-modal dialogs (native cancel doesn't fire for show())\n    EventHandler.on(this._element, 'keydown', event => {\n      if (event.key !== 'Escape' || this._config.modal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_CANCEL)\n      this.hide()\n    })\n\n    // Handle backdrop clicks (only applies to modal dialogs)\n    // Native <dialog> fires click on the dialog element when backdrop is clicked\n    EventHandler.on(this._element, 'click', event => {\n      // Only handle clicks directly on the dialog (backdrop area)\n      // Non-modal dialogs don't have a backdrop\n      if (event.target !== this._element || !this._config.modal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      // Default: click backdrop to dismiss\n      this.hide()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  // Get config from trigger's data attributes\n  const config = Manipulator.getDataAttributes(this)\n\n  // Check if trigger is inside an open dialog\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Open new dialog first (its backdrop appears over current)\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    newDialog.show(this)\n\n    // Close the current dialog (no backdrop flash since new one is already open)\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      currentInstance.hide()\n    }\n\n    return\n  }\n\n  const data = Dialog.getOrCreateInstance(target, config)\n  data.toggle(this)\n})\n\nenableDismissTrigger(Dialog)\n\nexport default Dialog\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap nav-overflow.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'navoverflow'\nconst DATA_KEY = 'bs.navoverflow'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_UPDATE = `update${EVENT_KEY}`\nconst EVENT_OVERFLOW = `overflow${EVENT_KEY}`\n\nconst CLASS_NAME_OVERFLOW = 'nav-overflow'\nconst CLASS_NAME_OVERFLOW_MENU = 'nav-overflow-menu'\nconst CLASS_NAME_HIDDEN = 'd-none'\n\nconst SELECTOR_NAV_ITEM = '.nav-item'\nconst SELECTOR_NAV_LINK = '.nav-link'\nconst SELECTOR_OVERFLOW_TOGGLE = '.nav-overflow-toggle'\nconst SELECTOR_OVERFLOW_MENU = '.nav-overflow-menu'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  moreText: 'More',\n  moreIcon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\"><path d=\"M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3\"/></svg>',\n  threshold: 0 // Minimum items to keep visible before showing overflow\n}\n\nconst DefaultType = {\n  moreText: 'string',\n  moreIcon: 'string',\n  threshold: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass NavOverflow extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._items = []\n    this._overflowItems = []\n    this._overflowMenu = null\n    this._overflowToggle = null\n    this._resizeObserver = null\n    this._isInitialized = false\n\n    this._init()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._calculateOverflow()\n    EventHandler.trigger(this._element, EVENT_UPDATE)\n  }\n\n  dispose() {\n    if (this._resizeObserver) {\n      this._resizeObserver.disconnect()\n    }\n\n    // Move items back to original positions\n    this._restoreItems()\n\n    // Remove overflow menu\n    if (this._overflowToggle && this._overflowToggle.parentElement) {\n      this._overflowToggle.parentElement.remove()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _init() {\n    // Add overflow class to nav\n    this._element.classList.add(CLASS_NAME_OVERFLOW)\n\n    // Get all nav items\n    this._items = [...SelectorEngine.find(SELECTOR_NAV_ITEM, this._element)]\n\n    // Store original order data\n    for (const [index, item] of this._items.entries()) {\n      item.dataset.bsNavOrder = index\n    }\n\n    // Create overflow menu if it doesn't exist\n    this._createOverflowMenu()\n\n    // Setup resize observer\n    this._setupResizeObserver()\n\n    // Initial calculation\n    this._calculateOverflow()\n\n    this._isInitialized = true\n  }\n\n  _createOverflowMenu() {\n    // Check if overflow menu already exists\n    this._overflowToggle = SelectorEngine.findOne(SELECTOR_OVERFLOW_TOGGLE, this._element)\n\n    if (this._overflowToggle) {\n      this._overflowMenu = SelectorEngine.findOne(SELECTOR_OVERFLOW_MENU, this._element)\n      return\n    }\n\n    const overflowItem = document.createElement('li')\n    overflowItem.className = 'nav-item nav-overflow-item'\n    overflowItem.innerHTML = `\n      <button class=\"nav-link nav-overflow-toggle\" type=\"button\" data-bs-toggle=\"menu\" data-bs-placement=\"bottom-end\" aria-expanded=\"false\">\n        <span class=\"nav-overflow-icon\">${this._config.moreIcon}</span>\n        <span class=\"nav-overflow-text\">${this._config.moreText}</span>\n      </button>\n      <div class=\"${CLASS_NAME_OVERFLOW_MENU} menu\"></div>\n    `\n\n    this._element.append(overflowItem)\n    this._overflowToggle = overflowItem.querySelector(SELECTOR_OVERFLOW_TOGGLE)\n    this._overflowMenu = overflowItem.querySelector(SELECTOR_OVERFLOW_MENU)\n  }\n\n  _setupResizeObserver() {\n    if (typeof ResizeObserver === 'undefined') {\n      // Fallback for older browsers\n      EventHandler.on(window, 'resize', () => this._calculateOverflow())\n      return\n    }\n\n    this._resizeObserver = new ResizeObserver(() => {\n      this._calculateOverflow()\n    })\n\n    this._resizeObserver.observe(this._element)\n  }\n\n  _calculateOverflow() {\n    // First, restore all items to measure properly\n    this._restoreItems()\n\n    const navWidth = this._element.offsetWidth\n    const overflowItem = this._overflowToggle?.closest('.nav-item')\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      const itemWidth = item.offsetWidth\n      usedWidth += itemWidth\n\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      if (usedWidth > overflowThreshold) {\n        itemsToOverflow.push(item)\n      }\n    }\n\n    // Check if we need threshold minimum visible\n    const visibleCount = this._items.length - itemsToOverflow.length\n    if (visibleCount < this._config.threshold && this._items.length > this._config.threshold) {\n      // Add more items to overflow until we reach threshold (but not keep items)\n      const toMove = this._items.slice(this._config.threshold).filter(item => !item.classList.contains(CLASS_NAME_KEEP))\n      itemsToOverflow.length = 0\n      itemsToOverflow.push(...toMove)\n    }\n\n    // Move items to overflow menu\n    this._moveToOverflow(itemsToOverflow)\n\n    // Show/hide overflow toggle\n    if (overflowItem) {\n      if (itemsToOverflow.length > 0) {\n        overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n      } else {\n        overflowItem.classList.add(CLASS_NAME_HIDDEN)\n      }\n    }\n\n    // Trigger overflow event if items changed\n    if (itemsToOverflow.length > 0) {\n      EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n        overflowCount: itemsToOverflow.length,\n        visibleCount: this._items.length - itemsToOverflow.length\n      })\n    }\n  }\n\n  _moveToOverflow(items) {\n    if (!this._overflowMenu) {\n      return\n    }\n\n    // Clear existing overflow items\n    this._overflowMenu.innerHTML = ''\n    this._overflowItems = []\n\n    for (const item of items) {\n      const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item)\n      if (!link) {\n        continue\n      }\n\n      const clonedLink = link.cloneNode(true)\n      clonedLink.className = 'menu-item'\n\n      if (link.classList.contains('active')) {\n        clonedLink.classList.add('active')\n      }\n\n      if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {\n        clonedLink.classList.add('disabled')\n      }\n\n      this._overflowMenu.append(clonedLink)\n\n      // Hide original item\n      item.classList.add(CLASS_NAME_HIDDEN)\n      item.dataset.bsNavOverflow = 'true'\n\n      this._overflowItems.push(item)\n    }\n  }\n\n  _restoreItems() {\n    for (const item of this._items) {\n      item.classList.remove(CLASS_NAME_HIDDEN)\n      delete item.dataset.bsNavOverflow\n    }\n\n    if (this._overflowMenu) {\n      this._overflowMenu.innerHTML = ''\n    }\n\n    this._overflowItems = []\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const element of SelectorEngine.find('[data-bs-toggle=\"nav-overflow\"]')) {\n    NavOverflow.getOrCreateInstance(element)\n  }\n})\n\nexport default NavOverflow\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport {\n  execute, executeAfterTransition, getElement, reflow\n} from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n  className: 'modal-backdrop',\n  clickCallback: null,\n  isAnimated: false,\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n  className: 'string',\n  clickCallback: '(function|null)',\n  isAnimated: 'boolean',\n  isVisible: 'boolean',\n  rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    const element = this._getElement()\n    if (this._config.isAnimated) {\n      reflow(element)\n    }\n\n    element.classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  // Private\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = this._config.className\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _configAfterMerge(config) {\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    const element = this._getElement()\n    this._config.rootElement.append(element)\n\n    EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n  autofocus: true,\n  trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n  autofocus: 'boolean',\n  trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isActive = false\n    this._lastTabNavDirection = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  activate() {\n    if (this._isActive) {\n      return\n    }\n\n    if (this._config.autofocus) {\n      this._config.trapElement.focus()\n    }\n\n    EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n    this._isActive = true\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return\n    }\n\n    this._isActive = false\n    EventHandler.off(document, EVENT_KEY)\n  }\n\n  // Private\n  _handleFocusin(event) {\n    const { trapElement } = this._config\n\n    if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n      return\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement)\n\n    if (elements.length === 0) {\n      trapElement.focus()\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus()\n    } else {\n      elements[0].focus()\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n  }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  // Public\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n\n  // Private\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProperty, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProperty)\n      const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n      element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _saveInitialAttribute(element, styleProperty) {\n    const actualValue = element.style.getPropertyValue(styleProperty)\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProperty, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProperty) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProperty)\n      // We only want to remove the property if the value is `null`; the value can also be zero\n      if (value === null) {\n        element.style.removeProperty(styleProperty)\n        return\n      }\n\n      Manipulator.removeDataAttribute(element, styleProperty)\n      element.style.setProperty(styleProperty, value)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n      return\n    }\n\n    for (const sel of SelectorEngine.find(selector, this._element)) {\n      callBack(sel)\n    }\n  }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n  isDisabled,\n  isVisible\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n    }\n\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    const completeCallBack = () => {\n      if (!this._config.scroll || this._config.backdrop) {\n        this._focustrap.activate()\n      }\n\n      this._element.classList.add(CLASS_NAME_SHOW)\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._focustrap.deactivate()\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.add(CLASS_NAME_HIDING)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  // Private\n  _initializeBackDrop() {\n    const clickCallback = () => {\n      if (this._config.backdrop === 'static') {\n        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n        return\n      }\n\n      this.hide()\n    }\n\n    // 'static' option will be translated to true, and booleans will keep their value\n    const isVisible = Boolean(this._config.backdrop)\n\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: isVisible ? clickCallback : null\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (event.key !== ESCAPE_KEY) {\n        return\n      }\n\n      if (this._config.keyboard) {\n        this.hide()\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (alreadyOpen && alreadyOpen !== target) {\n    Offcanvas.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n    Offcanvas.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Offcanvas.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap strength.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'strength'\nconst DATA_KEY = 'bs.strength'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_STRENGTH_CHANGE = `strengthChange${EVENT_KEY}`\n\nconst SELECTOR_DATA_STRENGTH = '[data-bs-strength]'\n\nconst STRENGTH_LEVELS = ['weak', 'fair', 'good', 'strong']\n\nconst Default = {\n  input: null, // Selector or element for password input\n  minLength: 8,\n  messages: {\n    weak: 'Weak',\n    fair: 'Fair',\n    good: 'Good',\n    strong: 'Strong'\n  },\n  weights: {\n    minLength: 1,\n    extraLength: 1,\n    lowercase: 1,\n    uppercase: 1,\n    numbers: 1,\n    special: 1,\n    multipleSpecial: 1,\n    longPassword: 1\n  },\n  thresholds: [2, 4, 6], // weak ≤2, fair ≤4, good ≤6, strong >6\n  scorer: null // Custom scoring function (password) => number\n}\n\nconst DefaultType = {\n  input: '(string|element|null)',\n  minLength: 'number',\n  messages: 'object',\n  weights: 'object',\n  thresholds: 'array',\n  scorer: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Strength extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = this._getInput()\n    this._segments = SelectorEngine.find('.strength-segment', this._element)\n    this._textElement = SelectorEngine.findOne('.strength-text', this._element.parentElement)\n    this._currentStrength = null\n\n    if (this._input) {\n      this._addEventListeners()\n      // Check initial value\n      this._evaluate()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getStrength() {\n    return this._currentStrength\n  }\n\n  evaluate() {\n    this._evaluate()\n  }\n\n  // Private\n  _getInput() {\n    if (this._config.input) {\n      return typeof this._config.input === 'string' ?\n        SelectorEngine.findOne(this._config.input) :\n        this._config.input\n    }\n\n    // Look for preceding password input\n    const parent = this._element.parentElement\n    return SelectorEngine.findOne('input[type=\"password\"]', parent)\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, 'input', () => this._evaluate())\n    EventHandler.on(this._input, 'change', () => this._evaluate())\n  }\n\n  _evaluate() {\n    const password = this._input.value\n    const score = this._calculateScore(password)\n    const strength = this._scoreToStrength(score)\n\n    if (strength !== this._currentStrength) {\n      this._currentStrength = strength\n      this._updateUI(strength, score)\n\n      EventHandler.trigger(this._element, EVENT_STRENGTH_CHANGE, {\n        strength,\n        score,\n        password: password.length > 0 ? '***' : '' // Don't expose actual password\n      })\n    }\n  }\n\n  _calculateScore(password) {\n    if (!password) {\n      return 0\n    }\n\n    // Use custom scorer if provided\n    if (typeof this._config.scorer === 'function') {\n      return this._config.scorer(password)\n    }\n\n    const { weights } = this._config\n    let score = 0\n\n    // Length scoring\n    if (password.length >= this._config.minLength) {\n      score += weights.minLength\n    }\n\n    if (password.length >= this._config.minLength + 4) {\n      score += weights.extraLength\n    }\n\n    // Character variety\n    if (/[a-z]/.test(password)) {\n      score += weights.lowercase\n    }\n\n    if (/[A-Z]/.test(password)) {\n      score += weights.uppercase\n    }\n\n    if (/\\d/.test(password)) {\n      score += weights.numbers\n    }\n\n    // Special characters\n    if (/[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.special\n    }\n\n    // Extra points for more special chars or length\n    if (/[!@#$%^&*(),.?\":{}|<>].*[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.multipleSpecial\n    }\n\n    if (password.length >= 16) {\n      score += weights.longPassword\n    }\n\n    return score\n  }\n\n  _scoreToStrength(score) {\n    if (score === 0) {\n      return null\n    }\n\n    const [weak, fair, good] = this._config.thresholds\n\n    if (score <= weak) {\n      return 'weak'\n    }\n\n    if (score <= fair) {\n      return 'fair'\n    }\n\n    if (score <= good) {\n      return 'good'\n    }\n\n    return 'strong'\n  }\n\n  _updateUI(strength) {\n    // Update data attribute on element\n    if (strength) {\n      this._element.dataset.bsStrength = strength\n    } else {\n      delete this._element.dataset.bsStrength\n    }\n\n    // Update segmented meter\n    const strengthIndex = strength ? STRENGTH_LEVELS.indexOf(strength) : -1\n\n    for (const [index, segment] of this._segments.entries()) {\n      if (index <= strengthIndex) {\n        segment.classList.add('active')\n      } else {\n        segment.classList.remove('active')\n      }\n    }\n\n    // Update text feedback\n    if (this._textElement) {\n      if (strength && this._config.messages[strength]) {\n        this._textElement.textContent = this._config.messages[strength]\n        this._textElement.dataset.bsStrength = strength\n\n        // Also set the color via inheriting from parent or using CSS variable\n        const colorMap = {\n          weak: 'danger',\n          fair: 'warning',\n          good: 'info',\n          strong: 'success'\n        }\n        this._textElement.style.setProperty('--strength-color', `var(--${colorMap[strength]}-text)`)\n      } else {\n        this._textElement.textContent = ''\n        delete this._textElement.dataset.bsStrength\n      }\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_STRENGTH)) {\n    Strength.getOrCreateInstance(element)\n  }\n})\n\nexport default Strength\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap otp-input.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'otpInput'\nconst DATA_KEY = 'bs.otp-input'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\nconst Default = {\n  length: 6,\n  mask: false\n}\n\nconst DefaultType = {\n  length: 'number',\n  mask: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._inputs = SelectorEngine.find(SELECTOR_INPUT, this._element)\n    this._setupInputs()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getValue() {\n    return this._inputs.map(input => input.value).join('')\n  }\n\n  setValue(value) {\n    const chars = String(value).split('')\n    for (const [index, input] of this._inputs.entries()) {\n      input.value = chars[index] || ''\n    }\n\n    this._checkComplete()\n  }\n\n  clear() {\n    for (const input of this._inputs) {\n      input.value = ''\n    }\n\n    this._inputs[0]?.focus()\n  }\n\n  focus() {\n    // Focus first empty input, or last input if all filled\n    const emptyInput = this._inputs.find(input => !input.value)\n    if (emptyInput) {\n      emptyInput.focus()\n    } else {\n      this._inputs.at(-1)?.focus()\n    }\n  }\n\n  // Private\n  _setupInputs() {\n    for (const input of this._inputs) {\n      // Set attributes for proper OTP handling\n      input.setAttribute('maxlength', '1')\n      input.setAttribute('inputmode', 'numeric')\n      input.setAttribute('pattern', '\\\\d*')\n\n      // First input gets autocomplete for browser OTP autofill\n      if (input === this._inputs[0]) {\n        input.setAttribute('autocomplete', 'one-time-code')\n      } else {\n        input.setAttribute('autocomplete', 'off')\n      }\n\n      // Mask input if configured\n      if (this._config.mask) {\n        input.setAttribute('type', 'password')\n      }\n    }\n  }\n\n  _addEventListeners() {\n    for (const [index, input] of this._inputs.entries()) {\n      EventHandler.on(input, 'input', event => this._handleInput(event, index))\n      EventHandler.on(input, 'keydown', event => this._handleKeydown(event, index))\n      EventHandler.on(input, 'paste', event => this._handlePaste(event))\n      EventHandler.on(input, 'focus', event => this._handleFocus(event))\n    }\n  }\n\n  _handleInput(event, index) {\n    const input = event.target\n\n    // Only allow digits\n    if (!/^\\d*$/.test(input.value)) {\n      input.value = input.value.replace(/\\D/g, '')\n    }\n\n    const { value } = input\n\n    // Handle multi-character input (some browsers/autofill)\n    if (value.length > 1) {\n      // Distribute characters across inputs\n      const chars = value.split('')\n      input.value = chars[0] || ''\n\n      for (let i = 1; i < chars.length && index + i < this._inputs.length; i++) {\n        this._inputs[index + i].value = chars[i]\n      }\n\n      // Focus appropriate input\n      const nextIndex = Math.min(index + chars.length, this._inputs.length - 1)\n      this._inputs[nextIndex].focus()\n    } else if (value && index < this._inputs.length - 1) {\n      // Auto-advance to next input\n      this._inputs[index + 1].focus()\n    }\n\n    EventHandler.trigger(this._element, EVENT_INPUT, {\n      value: this.getValue(),\n      index\n    })\n\n    this._checkComplete()\n  }\n\n  _handleKeydown(event, index) {\n    const { key } = event\n\n    switch (key) {\n      case 'Backspace': {\n        if (!this._inputs[index].value && index > 0) {\n          // Move to previous input and clear it\n          event.preventDefault()\n          this._inputs[index - 1].value = ''\n          this._inputs[index - 1].focus()\n        }\n\n        break\n      }\n\n      case 'Delete': {\n        // Clear current and shift remaining values left\n        event.preventDefault()\n        for (let i = index; i < this._inputs.length - 1; i++) {\n          this._inputs[i].value = this._inputs[i + 1].value\n        }\n\n        this._inputs.at(-1).value = ''\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (index > 0) {\n          event.preventDefault()\n          this._inputs[index - 1].focus()\n        }\n\n        break\n      }\n\n      case 'ArrowRight': {\n        if (index < this._inputs.length - 1) {\n          event.preventDefault()\n          this._inputs[index + 1].focus()\n        }\n\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handlePaste(event) {\n    event.preventDefault()\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    const digits = pastedData.replace(/\\D/g, '').slice(0, this._inputs.length)\n\n    if (digits) {\n      this.setValue(digits)\n\n      // Focus last filled input or last input\n      const lastIndex = Math.min(digits.length, this._inputs.length) - 1\n      this._inputs[lastIndex].focus()\n    }\n  }\n\n  _handleFocus(event) {\n    // Select the content on focus for easy replacement\n    event.target.select()\n  }\n\n  _checkComplete() {\n    const value = this.getValue()\n    const isComplete = value.length === this._inputs.length &&\n      this._inputs.every(input => input.value !== '')\n\n    if (isComplete) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  dd: [],\n  div: [],\n  dl: [],\n  dt: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n      continue\n    }\n\n    const attributeList = [].concat(...element.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [undefined, this])\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  arrow,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport {\n  execute, findShadowRoot, getElement, getUID, isRTL, noop\n} from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tooltip\"]'\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 6],\n  placement: 'top',\n  floatingConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  floatingConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._floatingCleanup = null\n    this._templateFactory = null\n    this._newContent = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n\n    // Protected\n    this.tip = null\n\n    this._parseResponsivePlacements()\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposeFloating()\n    this._disposeMediaQueryListeners()\n    super.dispose()\n  }\n\n  async show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    this._disposeFloating()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    const { container } = this._config\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    await this._createFloating(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposeFloating()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._floatingCleanup && this.tip) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle())\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposeFloating()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement(tip) {\n    // If we have responsive placements, get the one for current viewport\n    if (this._responsivePlacements) {\n      const placement = getResponsivePlacement(this._responsivePlacements, 'top')\n      return AttachmentMap[placement.toUpperCase()] || placement\n    }\n\n    // Execute placement (can be a function)\n    const placement = execute(this._config.placement, [this, tip, this._element])\n    return AttachmentMap[placement.toUpperCase()] || placement\n  }\n\n  _parseResponsivePlacements() {\n    // Only parse if placement is a string (not a function)\n    if (typeof this._config.placement !== 'string') {\n      this._responsivePlacements = null\n      return\n    }\n\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, 'top')\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  async _createFloating(tip) {\n    const placement = this._getPlacement(tip)\n    const arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n\n    // Initial position update\n    await this._updateFloatingPosition(tip, placement, arrowElement)\n\n    // Set up auto-update for scroll/resize\n    this._floatingCleanup = autoUpdate(\n      this._element,\n      tip,\n      () => this._updateFloatingPosition(tip, null, arrowElement)\n    )\n  }\n\n  async _updateFloatingPosition(tip = this.tip, placement = null, arrowElement = null) {\n    if (!tip) {\n      return\n    }\n\n    if (!placement) {\n      placement = this._getPlacement(tip)\n    }\n\n    if (!arrowElement) {\n      arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n    }\n\n    const middleware = this._getFloatingMiddleware(arrowElement)\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    const { x, y, placement: finalPlacement, middlewareData } = await computePosition(\n      this._element,\n      tip,\n      floatingConfig\n    )\n\n    // Apply position to tooltip\n    Object.assign(tip.style, {\n      position: 'absolute',\n      left: `${x}px`,\n      top: `${y}px`\n    })\n\n    // Ensure arrow is absolutely positioned within tooltip\n    if (arrowElement) {\n      arrowElement.style.position = 'absolute'\n    }\n\n    // Set placement attribute for CSS arrow styling\n    Manipulator.setDataAttribute(tip, 'placement', finalPlacement)\n\n    // Position arrow along the edge (center it) if present\n    // The CSS handles which edge to place it on via data-bs-placement\n    if (arrowElement && middlewareData.arrow) {\n      const { x: arrowX, y: arrowY } = middlewareData.arrow\n      const isVertical = finalPlacement.startsWith('top') || finalPlacement.startsWith('bottom')\n\n      // Only set the cross-axis position (centering along the edge)\n      // The main-axis position (which edge) is handled by CSS\n      Object.assign(arrowElement.style, {\n        left: isVertical && arrowX !== null ? `${arrowX}px` : '',\n        top: !isVertical && arrowY !== null ? `${arrowY}px` : '',\n        // Reset the other axis to let CSS handle it\n        right: '',\n        bottom: ''\n      })\n    }\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      // Floating UI passes different args, adapt the interface for offset function callbacks\n      return ({ placement, rects }) => {\n        const result = offset({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this._element, this._element])\n  }\n\n  _getFloatingMiddleware(arrowElement) {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      // Offset middleware - handles distance from reference\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      // Flip middleware - handles fallback placements\n      flip({\n        fallbackPlacements: this._config.fallbackPlacements\n      }),\n      // Shift middleware - prevents overflow\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    // Arrow middleware - positions the arrow element\n    if (arrowElement) {\n      middleware.push(arrow({ element: arrowElement }))\n    }\n\n    return middleware\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK])\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const [key, value] of Object.entries(this._config)) {\n      if (this.constructor.Default[key] !== value) {\n        config[key] = value\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n}\n\n/**\n * Data API implementation - auto-initialize tooltips\n */\n\nconst initTooltip = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Get or create instance and trigger the appropriate action\n  const tooltip = Tooltip.getOrCreateInstance(target)\n\n  // For focus events, manually trigger enter to show\n  if (event.type === 'focusin') {\n    tooltip._activeTrigger.focus = true\n    tooltip._enter()\n  }\n}\n\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initTooltip)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initTooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"popover\"]'\n\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_MOUSEENTER = 'mouseenter'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return this._getTitle() || this._getContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n}\n\n/**\n * Data API implementation - auto-initialize popovers\n */\n\nconst initPopover = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Prevent default for click events to avoid navigation\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Get or create instance\n  const popover = Popover.getOrCreateInstance(target)\n\n  // Trigger the appropriate action based on event type\n  if (event.type === 'click') {\n    popover.toggle()\n  } else if (event.type === 'focusin') {\n    popover._activeTrigger.focus = true\n    popover._enter()\n  }\n}\n\n// Support click (default), hover, and focus triggers\nEventHandler.on(document, EVENT_CLICK, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initPopover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_MENU_ITEM = 'menu-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\n\nconst Default = {\n  rootMargin: '0px 0px -25%',\n  smoothScroll: false,\n  target: null,\n  threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n  rootMargin: 'string',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n    this._activeTarget = null\n    this._observer = null\n    this._previousScrollData = {\n      visibleEntryTop: 0,\n      parentScrollTop: 0\n    }\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    } else {\n      this._observer = this._getNewObserver()\n    }\n\n    for (const section of this._observableSections.values()) {\n      this._observer.observe(section)\n    }\n  }\n\n  dispose() {\n    this._observer.disconnect()\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.target = getElement(config.target) || document.body\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // unregister any previous listeners\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const observableSection = this._observableSections.get(event.target.hash)\n      if (observableSection) {\n        event.preventDefault()\n        const root = this._rootElement || window\n        const height = observableSection.offsetTop - this._element.offsetTop\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'smooth' })\n          return\n        }\n\n        // Chrome 60 doesn't support `scrollTo`\n        root.scrollTop = height\n      }\n    })\n  }\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin\n    }\n\n    return new IntersectionObserver(entries => this._observerCallback(entries), options)\n  }\n\n  // The logic of selection\n  _observerCallback(entries) {\n    const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n    const activate = entry => {\n      this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n      this._process(targetElement(entry))\n    }\n\n    const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n    const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n    this._previousScrollData.parentScrollTop = parentScrollTop\n\n    for (const entry of entries) {\n      if (!entry.isIntersecting) {\n        this._activeTarget = null\n        this._clearActiveClass(targetElement(entry))\n\n        continue\n      }\n\n      const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n      // if we are scrolling down, pick the bigger offsetTop\n      if (userScrollsDown && entryIsLowerThanPrevious) {\n        activate(entry)\n        // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n        if (!parentScrollTop) {\n          return\n        }\n\n        continue\n      }\n\n      // if we are scrolling up, pick the smallest offsetTop\n      if (!userScrollsDown && !entryIsLowerThanPrevious) {\n        activate(entry)\n      }\n    }\n  }\n\n  _initializeTargetsAndObservables() {\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n    for (const anchor of targetLinks) {\n      // ensure that the anchor has an id and is not disabled\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element)\n\n      // ensure that the observableSection exists & is visible\n      if (isVisible(observableSection)) {\n        this._targetLinks.set(decodeURI(anchor.hash), anchor)\n        this._observableSections.set(anchor.hash, observableSection)\n      }\n    }\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate menu parents\n    if (target.classList.contains(CLASS_NAME_MENU_ITEM)) {\n      const menuToggle = target.closest('.menu')?.previousElementSibling\n      if (menuToggle?.matches(SELECTOR_MENU_TOGGLE)) {\n        menuToggle.classList.add(CLASS_NAME_ACTIVE)\n      }\n\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\nconst SELECTOR_MENU = '.menu'\nconst NOT_SELECTOR_MENU_TOGGLE = `:not(${SELECTOR_MENU_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_MENU_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_TAB_PANEL}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleMenu(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleMenu(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n\n    const children = this._getChildren().filter(element => !isDisabled(element))\n    let nextActiveElement\n\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n    }\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n    }\n  }\n\n  _toggleMenu(element, open) {\n    const outerElem = this._getOuterElement(element)\n    const menuToggle = SelectorEngine.findOne(SELECTOR_MENU_TOGGLE, outerElem)\n    if (!menuToggle) {\n      return\n    }\n\n    const menu = SelectorEngine.findOne(SELECTOR_MENU, outerElem)\n\n    menuToggle.classList.toggle(CLASS_NAME_ACTIVE, open)\n    if (menu) {\n      menu.classList.toggle(CLASS_NAME_SHOW, open)\n    }\n\n    menuToggle.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toggler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { eventActionOnPlugin } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toggler'\nconst DATA_KEY = 'bs.toggler'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_TOGGLE = `toggle${EVENT_KEY}`\nconst EVENT_TOGGLED = `toggled${EVENT_KEY}`\nconst EVENT_CLICK = 'click'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"toggler\"]'\n\nconst DefaultType = {\n  attribute: 'string',\n  value: '(string|number|boolean)'\n}\n\nconst Default = {\n  attribute: 'class',\n  value: null\n}\n\n/**\n * Class definition\n */\n\nclass Toggler extends BaseComponent {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    const toggleEvent = EventHandler.trigger(this._element, EVENT_TOGGLE)\n\n    if (toggleEvent.defaultPrevented) {\n      return\n    }\n\n    this._execute()\n\n    EventHandler.trigger(this._element, EVENT_TOGGLED)\n  }\n\n  // Private\n  _execute() {\n    const { attribute, value } = this._config\n\n    if (attribute === 'id') {\n      return // You have to be kidding\n    }\n\n    if (attribute === 'class') {\n      this._element.classList.toggle(value)\n      return\n    }\n\n    // Compare as strings since getAttribute() always returns a string\n    if (this._element.getAttribute(attribute) === String(value)) {\n      this._element.removeAttribute(attribute)\n      return\n    }\n\n    this._element.setAttribute(attribute, value)\n  }\n}\n\n/**\n * Data API implementation\n */\n\neventActionOnPlugin(Toggler, EVENT_CLICK, SELECTOR_DATA_TOGGLE, 'toggle')\n\nexport default Toggler\n"],"names":["elementMap","Map","set","element","key","instance","has","instanceMap","get","size","console","error","Array","from","keys","remove","delete","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","bootstrapHandler","fn","handler","event","hydrateObj","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","selector","domElements","querySelectorAll","target","parentNode","domElement","findHandler","events","callable","delegationSelector","Object","values","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","replace","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","length","elementEvent","slice","keyHandlers","trigger","args","evt","Event","bubbles","cancelable","dispatchEvent","obj","meta","value","defineProperty","configurable","normalizeData","Number","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","getAttribute","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","window","CSS","escape","match","id","toType","object","undefined","prototype","getUID","prefix","Math","floor","random","document","getElementById","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","isElement","nodeType","getElement","querySelector","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","isDisabled","Node","ELEMENT_NODE","classList","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","isRTL","dir","execute","possibleCallback","defaultValue","executeAfterTransition","callback","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","Config","Default","DefaultType","NAME","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","VERSION","BaseComponent","_element","_config","Data","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","eventName","name","getSelector","hrefAttribute","trim","map","sel","join","SelectorEngine","concat","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","preventDefault","eventActionOnPlugin","Plugin","onEvent","stringSelector","eventAction","data","instances","targets","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","closeEvent","defaultPrevented","_destroyElement","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","button","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","touches","clientX","_eventIsPointerPenTouch","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM_IMG","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","KEY_TO_DIRECTION","interval","keyboard","pause","ride","touch","wrap","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","visibilityState","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","_addTouchEventListeners","img","endCallBack","clearTimeout","swipeConfig","_directionToOrder","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","_orderToDirection","slideEvent","isCycling","directionalClassName","orderClassName","completeCallBack","_isAnimated","clearInterval","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","startEvent","activeInstance","dimension","_getDimension","style","complete","capitalizedDimension","scrollSize","getBoundingClientRect","selected","triggerArray","isOpen","computePosition","arrow","flip","offset","shift","BREAKPOINTS","sm","md","lg","xl","parseResponsivePlacement","placementString","defaultPlacement","parts","placements","xs","part","breakpoint","placement","getResponsivePlacement","responsivePlacements","viewportWidth","innerWidth","activePlacement","breakpointOrder","minWidth","createBreakpointListeners","listeners","mql","matchMedia","disposeBreakpointListeners","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","ENTER_KEY","SPACE_KEY","RIGHT_MOUSE_BUTTON","SUBMENU_CLOSE_DELAY","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_MENU","SELECTOR_SUBMENU","SELECTOR_SUBMENU_TOGGLE","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","DEFAULT_PLACEMENT","SUBMENU_PLACEMENT","resolveLogicalPlacement","triangleSign","p1","p2","p3","x","y","autoClose","boundary","container","display","floatingConfig","menu","reference","strategy","submenuTrigger","submenuDelay","Menu","_openInstances","_floatingCleanup","_mediaQueryListeners","_responsivePlacements","_parent","_isSubmenu","_openSubmenus","_submenuCloseTimeouts","_hoverIntentData","_menu","_findMenu","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","showEvent","_moveMenuToContainer","_createFloating","body","focus","focusVisible","_completeHide","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","update","_updateFloatingPosition","hideEvent","referenceElement","autoUpdate","_getPlacement","middleware","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","_setupMediaQueryListeners","_getOffset","offsetConfig","rects","result","floating","offsetValue","mainAxis","crossAxis","fallbackPlacements","_getFallbackPlacements","fallbackMap","bottom","top","right","left","defaultConfig","_getContainer","append","isConnected","finalPlacement","assign","position","margin","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","_isMovingTowardSubmenu","_scheduleSubmenuClose","stopPropagation","_closeSubmenu","cleanup","_createSubmenuFloating","nestedSubmenus","nested","nestedWrapper","currentSubmenuWrapper","siblingSubmenus","siblingMenu","siblingWrapper","padding","updatePosition","timeoutId","clear","clientY","timestamp","Date","now","submenuRect","currentPos","lastPos","isRtl","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","hasNeg","hasPos","_selectMenuItem","currentMenu","_handleSubmenuKeydown","enterKey","exitKey","isSubmenuTrigger","requestAnimationFrame","firstItem","parentSubmenuWrapper","parentTrigger","targetItem","clearMenus","composedPath","isMenuTarget","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","isLeftOrRightEvent","isHomeOrEndEvent","isEnterOrSpaceEvent","getToggleButton","EVENT_CHANGE","CLASS_NAME_SELECTED","CLASS_NAME_PLACEHOLDER","SELECTOR_MENU_ITEM","SELECTOR_VALUE","SELECTOR_SEARCH_INPUT","SELECTOR_NO_RESULTS","multiple","placeholder","search","searchNormalize","Combobox","_toggle","_valueDisplay","_searchInput","_noResults","_hiddenInput","_menuInstance","_createHiddenInput","_createMenuInstance","_syncInitialSelection","_filterItems","createElement","insertBefore","selectedItems","_getSelectedItems","_updateToggleText","_updateHiddenInput","_showPlaceholder","item","_selectItem","_handleToggleKeydown","_handleMenuKeydown","_getVisibleItems","previouslySelected","bsValue","textContent","label","query","normalizedQuery","_normalizeText","visibleCount","text","normalize","jQueryInterface","each","EVENT_FOCUSIN_DATA_API","HIDE_DELAY","datepickerTheme","dateMin","dateMax","dateFormat","displayElement","displayMonthsCount","firstWeekday","inline","locale","positionElement","selectedDates","selectionMode","vcpOptions","Datepicker","_calendar","_initCalendar","_themeObserver","disconnect","destroy","getSelectedDates","dates","context","setSelectedDates","_isInput","_isInline","_boundInput","_positionElement","_resolvePositionElement","_displayElement","_resolveDisplayElement","calendarOptions","_buildCalendarOptions","Calendar","init","_setupThemeObserver","_parseInputValue","_updateDisplayWithSelectedDates","formattedDate","_formatDateForInput","displayChild","_getThemeAncestor","_getEffectiveTheme","_syncThemeAttribute","theme","MutationObserver","mainElement","observe","attributeFilter","vcpTheme","inputMode","positionToInput","selectionDatesMode","selectedTheme","themeAttrDetect","onClickDate","self","_handleDateClick","onInit","onShow","onHide","firstDate","_parseDate","selectedMonth","getMonth","selectedYear","getFullYear","_maybeHideAfterSelection","shouldHide","dateStr","year","month","day","_formatDate","date","Intl","DateTimeFormat","format","toLocaleDateString","separator","d","isNaN","getTime","String","padStart","getDate","formatted","bsInline","EVENT_HIDE_PREVENTED","EVENT_CANCEL","CLASS_NAME_STATIC","CLASS_NAME_OPEN","CLASS_NAME_NONMODAL","SELECTOR_OPEN_MODAL_DIALOG","backdrop","modal","Dialog","open","showModal","_hideDialog","handleUpdate","_triggerBackdropTransition","hidePreventedEvent","currentDialog","shouldSwap","newDialog","currentInstance","EVENT_UPDATE","EVENT_OVERFLOW","CLASS_NAME_OVERFLOW","CLASS_NAME_OVERFLOW_MENU","CLASS_NAME_HIDDEN","SELECTOR_NAV_ITEM","SELECTOR_NAV_LINK","SELECTOR_OVERFLOW_TOGGLE","SELECTOR_OVERFLOW_MENU","CLASS_NAME_KEEP","moreText","moreIcon","threshold","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_resizeObserver","_isInitialized","_init","_calculateOverflow","_restoreItems","parentElement","bsNavOrder","_createOverflowMenu","_setupResizeObserver","overflowItem","className","innerHTML","ResizeObserver","navWidth","offsetWidth","overflowWidth","usedWidth","itemsToOverflow","overflowThreshold","itemWidth","toMove","_moveToOverflow","overflowCount","link","clonedLink","cloneNode","bsNavOverflow","EVENT_MOUSEDOWN","clickCallback","rootElement","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","autofocus","trapElement","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","clientWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","reset","_resetElementAttributes","isOverflowing","_saveInitialAttribute","overflow","styleProperty","scrollbarWidth","manipulationCallBack","setProperty","_applyManipulationCallback","actualValue","removeProperty","callBack","CLASS_NAME_SHOWING","CLASS_NAME_HIDING","CLASS_NAME_BACKDROP","OPEN_SELECTOR","EVENT_RESIZE","EVENT_KEYDOWN_DISMISS","scroll","Offcanvas","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","blur","completeCallback","alreadyOpen","EVENT_STRENGTH_CHANGE","SELECTOR_DATA_STRENGTH","STRENGTH_LEVELS","input","minLength","messages","weak","fair","good","strong","weights","extraLength","lowercase","uppercase","numbers","special","multipleSpecial","longPassword","thresholds","scorer","Strength","_input","_getInput","_segments","_textElement","_currentStrength","_evaluate","getStrength","evaluate","password","score","_calculateScore","strength","_scoreToStrength","_updateUI","bsStrength","strengthIndex","segment","colorMap","EVENT_COMPLETE","EVENT_INPUT","SELECTOR_DATA_OTP","SELECTOR_INPUT","mask","OtpInput","_inputs","_setupInputs","getValue","setValue","chars","_checkComplete","emptyInput","at","_handleInput","_handlePaste","_handleFocus","i","nextIndex","pastedData","clipboardData","getData","digits","lastIndex","select","isComplete","every","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","a","area","b","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","li","ol","p","pre","s","small","span","sub","sup","u","ul","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","attributeRegex","some","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","domParser","DOMParser","createdDocument","parseFromString","elementName","attributeList","allowedAttributes","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","_maybeSanitize","_setContent","arg","templateElement","_putElementInTemplate","DISALLOWED_ATTRIBUTES","CLASS_NAME_MODAL","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","_leave","_enter","_hideModalHandler","_isWithContent","shadowRoot","isInTheDom","ownerDocument","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","middlewareData","arrowX","arrowY","isVertical","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","tooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","popover","EVENT_ACTIVATE","CLASS_NAME_MENU_ITEM","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_MENU_TOGGLE","rootMargin","smoothScroll","ScrollSpy","_targetLinks","_observableSections","_rootElement","overflowY","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","observableSection","hash","height","offsetTop","scrollTo","behavior","scrollTop","options","IntersectionObserver","_observerCallback","targetElement","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","menuToggle","listGroup","activeNodes","node","spy","NOT_SELECTOR_MENU_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","_deactivate","_activate","relatedElem","_toggleMenu","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","EVENT_TOGGLE","EVENT_TOGGLED","Toggler","toggleEvent","_execute"],"mappings":"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","x_google_ignoreList":[13,14,15,16,20]}
\ No newline at end of file
index ef2b4d1a8befff6182395a64a5c015f1f10f3b59..33b447d857ac7762a208a3b0c80a1cd338e9cb74 100644 (file)
@@ -3,7 +3,7 @@
   * Copyright 2011-2026 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   */
-const elementMap=new Map,Data={set(e,t,n){elementMap.has(e)||elementMap.set(e,new Map);const i=elementMap.get(e);i.has(t)||0===i.size?i.set(t,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(i.keys())[0]}.`)},get:(e,t)=>elementMap.has(e)&&elementMap.get(e).get(t)||null,remove(e,t){if(!elementMap.has(e))return;const n=elementMap.get(e);n.delete(t),0===n.size&&elementMap.delete(e)}},namespaceRegex=/[^.]*(?=\..*)\.|.*/,stripNameRegex=/\..*/,stripUidRegex=/::\d+$/,eventRegistry={};let uidEvent=1;const customEvents={mouseenter:"mouseover",mouseleave:"mouseout"},nativeEvents=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function makeEventUid(e,t){return t&&`${t}::${uidEvent++}`||e.uidEvent||uidEvent++}function getElementEvents(e){const t=makeEventUid(e);return e.uidEvent=t,eventRegistry[t]=eventRegistry[t]||{},eventRegistry[t]}function bootstrapHandler(e,t){return function n(i){return hydrateObj(i,{delegateTarget:e}),n.oneOff&&EventHandler.off(e,i.type,t),t.apply(e,[i])}}function bootstrapDelegationHandler(e,t,n){return function i(s){const o=e.querySelectorAll(t);for(let{target:a}=s;a&&a!==this;a=a.parentNode)for(const l of o)if(l===a)return hydrateObj(s,{delegateTarget:a}),i.oneOff&&EventHandler.off(e,s.type,t,n),n.apply(a,[s])}}function findHandler(e,t,n=null){return Object.values(e).find(e=>e.callable===t&&e.delegationSelector===n)}function normalizeParameters(e,t,n){const i="string"==typeof t,s=i?n:t||n;let o=getTypeEvent(e);return nativeEvents.has(o)||(o=e),[i,s,o]}function addHandler(e,t,n,i,s){if("string"!=typeof t||!e)return;let[o,a,l]=normalizeParameters(t,n,i);if(t in customEvents){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};a=e(a)}const r=getElementEvents(e),c=r[l]||(r[l]={}),d=findHandler(c,a,o?n:null);if(d)return void(d.oneOff=d.oneOff&&s);const u=makeEventUid(a,t.replace(namespaceRegex,"")),h=o?bootstrapDelegationHandler(e,n,a):bootstrapHandler(e,a);h.delegationSelector=o?n:null,h.callable=a,h.oneOff=s,h.uidEvent=u,c[u]=h,e.addEventListener(l,h,o)}function removeHandler(e,t,n,i,s){const o=findHandler(t[n],i,s);o&&(e.removeEventListener(n,o,Boolean(s)),delete t[n][o.uidEvent])}function removeNamespacedHandlers(e,t,n,i){const s=t[n]||{};for(const[o,a]of Object.entries(s))o.includes(i)&&removeHandler(e,t,n,a.callable,a.delegationSelector)}function getTypeEvent(e){return e=e.replace(stripNameRegex,""),customEvents[e]||e}const EventHandler={on(e,t,n,i){addHandler(e,t,n,i,!1)},one(e,t,n,i){addHandler(e,t,n,i,!0)},off(e,t,n,i){if("string"!=typeof t||!e)return;const[s,o,a]=normalizeParameters(t,n,i),l=a!==t,r=getElementEvents(e),c=r[a]||{},d=t.startsWith(".");if(void 0===o){if(d)for(const n of Object.keys(r))removeNamespacedHandlers(e,r,n,t.slice(1));for(const[n,i]of Object.entries(c)){const s=n.replace(stripUidRegex,"");l&&!t.includes(s)||removeHandler(e,r,a,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;removeHandler(e,r,a,o,s?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=hydrateObj(new Event(t,{bubbles:!0,cancelable:!0}),n);return e.dispatchEvent(i),i}};function hydrateObj(e,t={}){for(const[n,i]of Object.entries(t))try{e[n]=i}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>i})}return e}function normalizeData(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function normalizeDataKey(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}const Manipulator={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${normalizeDataKey(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${normalizeDataKey(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter(e=>e.startsWith("bs")&&!e.startsWith("bsConfig"));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1),t[n]=normalizeData(e.dataset[i])}return t},getDataAttribute:(e,t)=>normalizeData(e.getAttribute(`data-bs-${normalizeDataKey(t)}`))},MAX_UID=1e6,MILLISECONDS_MULTIPLIER=1e3,TRANSITION_END="transitionend",parseSelector=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(e,t)=>`#${CSS.escape(t)}`)),e),toType=e=>null==e?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),getUID=e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e},getTransitionDurationFromElement=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const i=Number.parseFloat(t),s=Number.parseFloat(n);return i||s?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0},triggerTransitionEnd=e=>{e.dispatchEvent(new Event(TRANSITION_END))},isElement$1=e=>!(!e||"object"!=typeof e)&&void 0!==e.nodeType,getElement=e=>isElement$1(e)?e:"string"==typeof e&&e.length>0?document.querySelector(parseSelector(e)):null,isVisible=e=>{if(!isElement$1(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t},isDisabled=e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")),findShadowRoot=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?findShadowRoot(e.parentNode):null},noop=()=>{},reflow=e=>{e.offsetHeight},isRTL$1=()=>"rtl"===document.documentElement.dir,execute=(e,t=[],n=e)=>"function"==typeof e?e.call(...t):n,executeAfterTransition=(e,t,n=!0)=>{if(!n)return void execute(e);const i=getTransitionDurationFromElement(t)+5;let s=!1;const o=({target:n})=>{n===t&&(s=!0,t.removeEventListener(TRANSITION_END,o),execute(e))};t.addEventListener(TRANSITION_END,o),setTimeout(()=>{s||triggerTransitionEnd(t)},i)},getNextActiveElement=(e,t,n,i)=>{const s=e.length;let o=e.indexOf(t);return-1===o?!n&&i?e[s-1]:e[0]:(o+=n?1:-1,i&&(o=(o+s)%s),e[Math.max(0,Math.min(o,s-1))])};class Config{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=isElement$1(t)?Manipulator.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...isElement$1(t)?Manipulator.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e,t=this.constructor.DefaultType){for(const[n,i]of Object.entries(t)){const t=e[n],s=isElement$1(t)?"element":toType(t);if(!new RegExp(i).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${s}" but expected type "${i}".`)}}}const VERSION="6.0.0-alpha1";class BaseComponent extends Config{constructor(e,t){super(),(e=getElement(e))&&(this._element=e,this._config=this._getConfig(t),Data.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Data.remove(this._element,this.constructor.DATA_KEY),EventHandler.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t,n=!0){executeAfterTransition(e,t,n)}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return Data.get(getElement(e),this.DATA_KEY)}static getOrCreateInstance(e,t={}){return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return VERSION}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const getSelector=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map(e=>parseSelector(e)).join(","):null},SelectorEngine={find:(e,t=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(t,e)),findOne:(e,t=document.documentElement)=>Element.prototype.querySelector.call(t,e),children:(e,t)=>[].concat(...e.children).filter(e=>e.matches(t)),parents(e,t){const n=[];let i=e.parentNode.closest(t);for(;i;)n.push(i),i=i.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(e=>`${e}:not([tabindex^="-"])`).join(",");return this.find(t,e).filter(e=>!isDisabled(e)&&isVisible(e))},getSelectorFromElement(e){const t=getSelector(e);return t&&SelectorEngine.findOne(t)?t:null},getElementFromSelector(e){const t=getSelector(e);return t?SelectorEngine.findOne(t):null},getMultipleElementsFromSelector(e){const t=getSelector(e);return t?SelectorEngine.find(t):[]}},enableDismissTrigger=(e,t="hide")=>{const n=`click.dismiss${e.EVENT_KEY}`,i=e.NAME;EventHandler.on(document,n,`[data-bs-dismiss="${i}"]`,function(n){if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),isDisabled(this))return;const s=SelectorEngine.getElementFromSelector(this)||this.closest(`.${i}`);e.getOrCreateInstance(s)[t]()})},eventActionOnPlugin=(e,t,n,i,s=null)=>{eventAction(`${t}.${e.NAME}`,n,t=>{const n=t.targets.filter(Boolean).map(t=>e.getOrCreateInstance(t));"function"==typeof s&&s({...t,instances:n});for(const e of n)e[i]()})},eventAction=(e,t,n)=>{const i=`${t}:not(.disabled):not(:disabled)`;EventHandler.on(document,e,i,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault();const t=SelectorEngine.getSelectorFromElement(this),i=t?SelectorEngine.find(t):[this];n({targets:i,event:e})})},NAME$k="alert",DATA_KEY$f="bs.alert",EVENT_KEY$g=".bs.alert",EVENT_CLOSE="close.bs.alert",EVENT_CLOSED="closed.bs.alert",CLASS_NAME_FADE$4="fade",CLASS_NAME_SHOW$7="show";class Alert extends BaseComponent{static get NAME(){return NAME$k}close(){if(EventHandler.trigger(this._element,EVENT_CLOSE).defaultPrevented)return;this._element.classList.remove("show");const e=this._element.classList.contains("fade");this._queueCallback(()=>this._destroyElement(),this._element,e)}_destroyElement(){this._element.remove(),EventHandler.trigger(this._element,EVENT_CLOSED),this.dispose()}}enableDismissTrigger(Alert,"close");const NAME$j="button",DATA_KEY$e="bs.button",EVENT_KEY$f=`.${DATA_KEY$e}`,DATA_API_KEY$9=".data-api",CLASS_NAME_ACTIVE$3="active",SELECTOR_DATA_TOGGLE$9='[data-bs-toggle="button"]',EVENT_CLICK_DATA_API$7=`click${EVENT_KEY$f}.data-api`;class Button extends BaseComponent{static get NAME(){return NAME$j}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}}EventHandler.on(document,EVENT_CLICK_DATA_API$7,SELECTOR_DATA_TOGGLE$9,e=>{e.preventDefault();const t=e.target.closest(SELECTOR_DATA_TOGGLE$9);Button.getOrCreateInstance(t).toggle()});const NAME$i="swipe",EVENT_KEY$e=".bs.swipe",EVENT_TOUCHSTART="touchstart.bs.swipe",EVENT_TOUCHMOVE="touchmove.bs.swipe",EVENT_TOUCHEND="touchend.bs.swipe",EVENT_POINTERDOWN="pointerdown.bs.swipe",EVENT_POINTERUP="pointerup.bs.swipe",POINTER_TYPE_TOUCH="touch",POINTER_TYPE_PEN="pen",CLASS_NAME_POINTER_EVENT="pointer-event",SWIPE_THRESHOLD=40,Default$h={endCallback:null,leftCallback:null,rightCallback:null},DefaultType$h={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class Swipe extends Config{constructor(e,t){super(),this._element=e,e&&Swipe.isSupported()&&(this._config=this._getConfig(t),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Default$h}static get DefaultType(){return DefaultType$h}static get NAME(){return NAME$i}dispose(){EventHandler.off(this._element,".bs.swipe")}_start(e){this._supportPointerEvents?this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX):this._deltaX=e.touches[0].clientX}_end(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX),this._handleSwipe(),execute(this._config.endCallback)}_move(e){this._deltaX=e.touches&&e.touches.length>1?0:e.touches[0].clientX-this._deltaX}_handleSwipe(){const e=Math.abs(this._deltaX);if(e<=40)return;const t=e/this._deltaX;this._deltaX=0,t&&execute(t>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(EventHandler.on(this._element,EVENT_POINTERDOWN,e=>this._start(e)),EventHandler.on(this._element,EVENT_POINTERUP,e=>this._end(e)),this._element.classList.add("pointer-event")):(EventHandler.on(this._element,EVENT_TOUCHSTART,e=>this._start(e)),EventHandler.on(this._element,EVENT_TOUCHMOVE,e=>this._move(e)),EventHandler.on(this._element,EVENT_TOUCHEND,e=>this._end(e)))}_eventIsPointerPenTouch(e){return this._supportPointerEvents&&("pen"===e.pointerType||"touch"===e.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const NAME$h="carousel",DATA_KEY$d="bs.carousel",EVENT_KEY$d=`.${DATA_KEY$d}`,DATA_API_KEY$8=".data-api",ARROW_LEFT_KEY$2="ArrowLeft",ARROW_RIGHT_KEY$2="ArrowRight",TOUCHEVENT_COMPAT_WAIT=500,ORDER_NEXT="next",ORDER_PREV="prev",DIRECTION_LEFT="left",DIRECTION_RIGHT="right",EVENT_SLIDE=`slide${EVENT_KEY$d}`,EVENT_SLID=`slid${EVENT_KEY$d}`,EVENT_KEYDOWN$1=`keydown${EVENT_KEY$d}`,EVENT_MOUSEENTER$2=`mouseenter${EVENT_KEY$d}`,EVENT_MOUSELEAVE$1=`mouseleave${EVENT_KEY$d}`,EVENT_DRAG_START=`dragstart${EVENT_KEY$d}`,EVENT_LOAD_DATA_API$3=`load${EVENT_KEY$d}.data-api`,EVENT_CLICK_DATA_API$6=`click${EVENT_KEY$d}.data-api`,CLASS_NAME_CAROUSEL="carousel",CLASS_NAME_ACTIVE$2="active",CLASS_NAME_SLIDE="slide",CLASS_NAME_END="carousel-item-end",CLASS_NAME_START="carousel-item-start",CLASS_NAME_NEXT="carousel-item-next",CLASS_NAME_PREV="carousel-item-prev",SELECTOR_ACTIVE=".active",SELECTOR_ITEM=".carousel-item",SELECTOR_ACTIVE_ITEM=".active.carousel-item",SELECTOR_ITEM_IMG=".carousel-item img",SELECTOR_INDICATORS=".carousel-indicators",SELECTOR_DATA_SLIDE="[data-bs-slide], [data-bs-slide-to]",SELECTOR_DATA_RIDE='[data-bs-ride="carousel"]',KEY_TO_DIRECTION={[ARROW_LEFT_KEY$2]:"right",[ARROW_RIGHT_KEY$2]:"left"},Default$g={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},DefaultType$g={interval:"number",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class Carousel extends BaseComponent{constructor(e,t){super(e,t),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=SelectorEngine.findOne(SELECTOR_INDICATORS,this._element),this._addEventListeners(),"carousel"===this._config.ride&&this.cycle()}static get Default(){return Default$g}static get DefaultType(){return DefaultType$g}static get NAME(){return NAME$h}next(){this._slide("next")}nextWhenVisible(){"visible"===document.visibilityState&&isVisible(this._element)&&this.next()}prev(){this._slide("prev")}pause(){this._isSliding&&triggerTransitionEnd(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?EventHandler.one(this._element,EVENT_SLID,()=>this.cycle()):this.cycle())}to(e){const t=this._getItems();if(e>t.length-1||e<0)return;if(this._isSliding)return void EventHandler.one(this._element,EVENT_SLID,()=>this.to(e));const n=this._getItemIndex(this._getActive());if(n===e)return;const i=e>n?"next":"prev";this._slide(i,t[e])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(e){return e.defaultInterval=e.interval,e}_addEventListeners(){this._config.keyboard&&EventHandler.on(this._element,EVENT_KEYDOWN$1,e=>this._keydown(e)),"hover"===this._config.pause&&(EventHandler.on(this._element,EVENT_MOUSEENTER$2,()=>this.pause()),EventHandler.on(this._element,EVENT_MOUSELEAVE$1,()=>this._maybeEnableCycle())),this._config.touch&&Swipe.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const e of SelectorEngine.find(SELECTOR_ITEM_IMG,this._element))EventHandler.on(e,EVENT_DRAG_START,e=>e.preventDefault());const e={leftCallback:()=>this._slide(this._directionToOrder("left")),rightCallback:()=>this._slide(this._directionToOrder("right")),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),500+this._config.interval))}};this._swipeHelper=new Swipe(this._element,e)}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const t=KEY_TO_DIRECTION[e.key];t&&(e.preventDefault(),this._slide(this._directionToOrder(t)))}_getItemIndex(e){return this._getItems().indexOf(e)}_setActiveIndicatorElement(e){if(!this._indicatorsElement)return;const t=SelectorEngine.findOne(".active",this._indicatorsElement);t.classList.remove("active"),t.removeAttribute("aria-current");const n=SelectorEngine.findOne(`[data-bs-slide-to="${e}"]`,this._indicatorsElement);n&&(n.classList.add("active"),n.setAttribute("aria-current","true"))}_updateInterval(){const e=this._activeElement||this._getActive();if(!e)return;const t=Number.parseInt(e.getAttribute("data-bs-interval"),10);this._config.interval=t||this._config.defaultInterval}_slide(e,t=null){if(this._isSliding)return;const n=this._getActive(),i="next"===e,s=t||getNextActiveElement(this._getItems(),n,i,this._config.wrap);if(s===n)return;const o=this._getItemIndex(s),a=t=>EventHandler.trigger(this._element,t,{relatedTarget:s,direction:this._orderToDirection(e),from:this._getItemIndex(n),to:o});if(a(EVENT_SLIDE).defaultPrevented)return;if(!n||!s)return;const l=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const r=i?CLASS_NAME_START:CLASS_NAME_END,c=i?CLASS_NAME_NEXT:CLASS_NAME_PREV;s.classList.add(c),reflow(s),n.classList.add(r),s.classList.add(r),this._queueCallback(()=>{s.classList.remove(r,c),s.classList.add("active"),n.classList.remove("active",c,r),this._isSliding=!1,a(EVENT_SLID)},n,this._isAnimated()),l&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element)}_getItems(){return SelectorEngine.find(SELECTOR_ITEM,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(e){return isRTL$1()?"left"===e?"prev":"next":"left"===e?"next":"prev"}_orderToDirection(e){return isRTL$1()?"prev"===e?"left":"right":"prev"===e?"right":"left"}}EventHandler.on(document,EVENT_CLICK_DATA_API$6,SELECTOR_DATA_SLIDE,function(e){const t=SelectorEngine.getElementFromSelector(this);if(!t||!t.classList.contains("carousel"))return;e.preventDefault();const n=Carousel.getOrCreateInstance(t),i=this.getAttribute("data-bs-slide-to");return i?(n.to(i),void n._maybeEnableCycle()):"next"===Manipulator.getDataAttribute(this,"slide")?(n.next(),void n._maybeEnableCycle()):(n.prev(),void n._maybeEnableCycle())}),EventHandler.on(window,EVENT_LOAD_DATA_API$3,()=>{const e=SelectorEngine.find(SELECTOR_DATA_RIDE);for(const t of e)Carousel.getOrCreateInstance(t)});const NAME$g="collapse",DATA_KEY$c="bs.collapse",EVENT_KEY$c=`.${DATA_KEY$c}`,DATA_API_KEY$7=".data-api",EVENT_SHOW$7=`show${EVENT_KEY$c}`,EVENT_SHOWN$7=`shown${EVENT_KEY$c}`,EVENT_HIDE$7=`hide${EVENT_KEY$c}`,EVENT_HIDDEN$7=`hidden${EVENT_KEY$c}`,EVENT_CLICK_DATA_API$5=`click${EVENT_KEY$c}.data-api`,CLASS_NAME_SHOW$6="show",CLASS_NAME_COLLAPSE="collapse",CLASS_NAME_COLLAPSING="collapsing",CLASS_NAME_COLLAPSED="collapsed",CLASS_NAME_DEEPER_CHILDREN=":scope .collapse .collapse",CLASS_NAME_HORIZONTAL="collapse-horizontal",WIDTH="width",HEIGHT="height",SELECTOR_ACTIVES=".collapse.show, .collapse.collapsing",SELECTOR_DATA_TOGGLE$8='[data-bs-toggle="collapse"]',Default$f={parent:null,toggle:!0},DefaultType$f={parent:"(null|element)",toggle:"boolean"};class Collapse extends BaseComponent{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=SelectorEngine.find(SELECTOR_DATA_TOGGLE$8);for(const e of n){const t=SelectorEngine.getSelectorFromElement(e),n=SelectorEngine.find(t).filter(e=>e===this._element);null!==t&&n.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Default$f}static get DefaultType(){return DefaultType$f}static get NAME(){return NAME$g}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(e=>e!==this._element).map(e=>Collapse.getOrCreateInstance(e,{toggle:!1}))),e.length&&e[0]._isTransitioning)return;if(EventHandler.trigger(this._element,EVENT_SHOW$7).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[t]="",EventHandler.trigger(this._element,EVENT_SHOWN$7)},this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(EventHandler.trigger(this._element,EVENT_HIDE$7).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,reflow(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");for(const e of this._triggerArray){const t=SelectorEngine.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0,this._element.style[e]="",this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),EventHandler.trigger(this._element,EVENT_HIDDEN$7)},this._element,!0)}_isShown(e=this._element){return e.classList.contains("show")}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=getElement(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?WIDTH:HEIGHT}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$8);for(const t of e){const e=SelectorEngine.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN,this._config.parent);return SelectorEngine.find(e,this._config.parent).filter(e=>!t.includes(e))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const n of e)n.classList.toggle("collapsed",!t),n.setAttribute("aria-expanded",t)}}EventHandler.on(document,EVENT_CLICK_DATA_API$5,SELECTOR_DATA_TOGGLE$8,function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of SelectorEngine.getMultipleElementsFromSelector(this))Collapse.getOrCreateInstance(e,{toggle:!1}).toggle()});
+const elementMap=new Map,Data={set(e,t,n){elementMap.has(e)||elementMap.set(e,new Map);const i=elementMap.get(e);i.has(t)||0===i.size?i.set(t,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(i.keys())[0]}.`)},get:(e,t)=>elementMap.has(e)&&elementMap.get(e).get(t)||null,remove(e,t){if(!elementMap.has(e))return;const n=elementMap.get(e);n.delete(t),0===n.size&&elementMap.delete(e)}},namespaceRegex=/[^.]*(?=\..*)\.|.*/,stripNameRegex=/\..*/,stripUidRegex=/::\d+$/,eventRegistry={};let uidEvent=1;const customEvents={mouseenter:"mouseover",mouseleave:"mouseout"},nativeEvents=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function makeEventUid(e,t){return t&&`${t}::${uidEvent++}`||e.uidEvent||uidEvent++}function getElementEvents(e){const t=makeEventUid(e);return e.uidEvent=t,eventRegistry[t]=eventRegistry[t]||{},eventRegistry[t]}function bootstrapHandler(e,t){return function n(i){return hydrateObj(i,{delegateTarget:e}),n.oneOff&&EventHandler.off(e,i.type,t),t.apply(e,[i])}}function bootstrapDelegationHandler(e,t,n){return function i(s){const o=e.querySelectorAll(t);for(let{target:a}=s;a&&a!==this;a=a.parentNode)for(const l of o)if(l===a)return hydrateObj(s,{delegateTarget:a}),i.oneOff&&EventHandler.off(e,s.type,t,n),n.apply(a,[s])}}function findHandler(e,t,n=null){return Object.values(e).find(e=>e.callable===t&&e.delegationSelector===n)}function normalizeParameters(e,t,n){const i="string"==typeof t,s=i?n:t||n;let o=getTypeEvent(e);return nativeEvents.has(o)||(o=e),[i,s,o]}function addHandler(e,t,n,i,s){if("string"!=typeof t||!e)return;let[o,a,l]=normalizeParameters(t,n,i);if(t in customEvents){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};a=e(a)}const r=getElementEvents(e),c=r[l]||(r[l]={}),d=findHandler(c,a,o?n:null);if(d)return void(d.oneOff=d.oneOff&&s);const u=makeEventUid(a,t.replace(namespaceRegex,"")),h=o?bootstrapDelegationHandler(e,n,a):bootstrapHandler(e,a);h.delegationSelector=o?n:null,h.callable=a,h.oneOff=s,h.uidEvent=u,c[u]=h,e.addEventListener(l,h,o)}function removeHandler(e,t,n,i,s){const o=findHandler(t[n],i,s);o&&(e.removeEventListener(n,o,Boolean(s)),delete t[n][o.uidEvent])}function removeNamespacedHandlers(e,t,n,i){const s=t[n]||{};for(const[o,a]of Object.entries(s))o.includes(i)&&removeHandler(e,t,n,a.callable,a.delegationSelector)}function getTypeEvent(e){return e=e.replace(stripNameRegex,""),customEvents[e]||e}const EventHandler={on(e,t,n,i){addHandler(e,t,n,i,!1)},one(e,t,n,i){addHandler(e,t,n,i,!0)},off(e,t,n,i){if("string"!=typeof t||!e)return;const[s,o,a]=normalizeParameters(t,n,i),l=a!==t,r=getElementEvents(e),c=r[a]||{},d=t.startsWith(".");if(void 0===o){if(d)for(const n of Object.keys(r))removeNamespacedHandlers(e,r,n,t.slice(1));for(const[n,i]of Object.entries(c)){const s=n.replace(stripUidRegex,"");l&&!t.includes(s)||removeHandler(e,r,a,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;removeHandler(e,r,a,o,s?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=hydrateObj(new Event(t,{bubbles:!0,cancelable:!0}),n);return e.dispatchEvent(i),i}};function hydrateObj(e,t={}){for(const[n,i]of Object.entries(t))try{e[n]=i}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>i})}return e}function normalizeData(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function normalizeDataKey(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}const Manipulator={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${normalizeDataKey(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${normalizeDataKey(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter(e=>e.startsWith("bs")&&!e.startsWith("bsConfig"));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1),t[n]=normalizeData(e.dataset[i])}return t},getDataAttribute:(e,t)=>normalizeData(e.getAttribute(`data-bs-${normalizeDataKey(t)}`))},MAX_UID=1e6,MILLISECONDS_MULTIPLIER=1e3,TRANSITION_END="transitionend",parseSelector=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(e,t)=>`#${CSS.escape(t)}`)),e),toType=e=>null==e?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),getUID=e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e},getTransitionDurationFromElement=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const i=Number.parseFloat(t),s=Number.parseFloat(n);return i||s?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0},triggerTransitionEnd=e=>{e.dispatchEvent(new Event(TRANSITION_END))},isElement$1=e=>!(!e||"object"!=typeof e)&&void 0!==e.nodeType,getElement=e=>isElement$1(e)?e:"string"==typeof e&&e.length>0?document.querySelector(parseSelector(e)):null,isVisible=e=>{if(!isElement$1(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t},isDisabled=e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")),findShadowRoot=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?findShadowRoot(e.parentNode):null},noop=()=>{},reflow=e=>{e.offsetHeight},isRTL$1=()=>"rtl"===document.documentElement.dir,execute=(e,t=[],n=e)=>"function"==typeof e?e.call(...t):n,executeAfterTransition=(e,t,n=!0)=>{if(!n)return void execute(e);const i=getTransitionDurationFromElement(t)+5;let s=!1;const o=({target:n})=>{n===t&&(s=!0,t.removeEventListener(TRANSITION_END,o),execute(e))};t.addEventListener(TRANSITION_END,o),setTimeout(()=>{s||triggerTransitionEnd(t)},i)},getNextActiveElement=(e,t,n,i)=>{const s=e.length;let o=e.indexOf(t);return-1===o?!n&&i?e[s-1]:e[0]:(o+=n?1:-1,i&&(o=(o+s)%s),e[Math.max(0,Math.min(o,s-1))])};class Config{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=isElement$1(t)?Manipulator.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...isElement$1(t)?Manipulator.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e,t=this.constructor.DefaultType){for(const[n,i]of Object.entries(t)){const t=e[n],s=isElement$1(t)?"element":toType(t);if(!new RegExp(i).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${s}" but expected type "${i}".`)}}}const VERSION="6.0.0-alpha1";class BaseComponent extends Config{constructor(e,t){super(),(e=getElement(e))&&(this._element=e,this._config=this._getConfig(t),Data.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Data.remove(this._element,this.constructor.DATA_KEY),EventHandler.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t,n=!0){executeAfterTransition(e,t,n)}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return Data.get(getElement(e),this.DATA_KEY)}static getOrCreateInstance(e,t={}){return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return VERSION}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const getSelector=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map(e=>parseSelector(e)).join(","):null},SelectorEngine={find:(e,t=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(t,e)),findOne:(e,t=document.documentElement)=>Element.prototype.querySelector.call(t,e),children:(e,t)=>[].concat(...e.children).filter(e=>e.matches(t)),parents(e,t){const n=[];let i=e.parentNode.closest(t);for(;i;)n.push(i),i=i.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(e=>`${e}:not([tabindex^="-"])`).join(",");return this.find(t,e).filter(e=>!isDisabled(e)&&isVisible(e))},getSelectorFromElement(e){const t=getSelector(e);return t&&SelectorEngine.findOne(t)?t:null},getElementFromSelector(e){const t=getSelector(e);return t?SelectorEngine.findOne(t):null},getMultipleElementsFromSelector(e){const t=getSelector(e);return t?SelectorEngine.find(t):[]}},enableDismissTrigger=(e,t="hide")=>{const n=`click.dismiss${e.EVENT_KEY}`,i=e.NAME;EventHandler.on(document,n,`[data-bs-dismiss="${i}"]`,function(n){if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),isDisabled(this))return;const s=SelectorEngine.getElementFromSelector(this)||this.closest(`.${i}`);e.getOrCreateInstance(s)[t]()})},eventActionOnPlugin=(e,t,n,i,s=null)=>{eventAction(`${t}.${e.NAME}`,n,t=>{const n=t.targets.filter(Boolean).map(t=>e.getOrCreateInstance(t));"function"==typeof s&&s({...t,instances:n});for(const e of n)e[i]()})},eventAction=(e,t,n)=>{const i=`${t}:not(.disabled):not(:disabled)`;EventHandler.on(document,e,i,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault();const t=SelectorEngine.getSelectorFromElement(this),i=t?SelectorEngine.find(t):[this];n({targets:i,event:e})})},NAME$l="alert",DATA_KEY$g="bs.alert",EVENT_KEY$h=".bs.alert",EVENT_CLOSE="close.bs.alert",EVENT_CLOSED="closed.bs.alert",CLASS_NAME_FADE$4="fade",CLASS_NAME_SHOW$8="show";class Alert extends BaseComponent{static get NAME(){return NAME$l}close(){if(EventHandler.trigger(this._element,EVENT_CLOSE).defaultPrevented)return;this._element.classList.remove("show");const e=this._element.classList.contains("fade");this._queueCallback(()=>this._destroyElement(),this._element,e)}_destroyElement(){this._element.remove(),EventHandler.trigger(this._element,EVENT_CLOSED),this.dispose()}}enableDismissTrigger(Alert,"close");const NAME$k="button",DATA_KEY$f="bs.button",EVENT_KEY$g=`.${DATA_KEY$f}`,DATA_API_KEY$a=".data-api",CLASS_NAME_ACTIVE$3="active",SELECTOR_DATA_TOGGLE$a='[data-bs-toggle="button"]',EVENT_CLICK_DATA_API$8=`click${EVENT_KEY$g}.data-api`;class Button extends BaseComponent{static get NAME(){return NAME$k}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}}EventHandler.on(document,EVENT_CLICK_DATA_API$8,SELECTOR_DATA_TOGGLE$a,e=>{e.preventDefault();const t=e.target.closest(SELECTOR_DATA_TOGGLE$a);Button.getOrCreateInstance(t).toggle()});const NAME$j="swipe",EVENT_KEY$f=".bs.swipe",EVENT_TOUCHSTART="touchstart.bs.swipe",EVENT_TOUCHMOVE="touchmove.bs.swipe",EVENT_TOUCHEND="touchend.bs.swipe",EVENT_POINTERDOWN="pointerdown.bs.swipe",EVENT_POINTERUP="pointerup.bs.swipe",POINTER_TYPE_TOUCH="touch",POINTER_TYPE_PEN="pen",CLASS_NAME_POINTER_EVENT="pointer-event",SWIPE_THRESHOLD=40,Default$i={endCallback:null,leftCallback:null,rightCallback:null},DefaultType$i={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class Swipe extends Config{constructor(e,t){super(),this._element=e,e&&Swipe.isSupported()&&(this._config=this._getConfig(t),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Default$i}static get DefaultType(){return DefaultType$i}static get NAME(){return NAME$j}dispose(){EventHandler.off(this._element,".bs.swipe")}_start(e){this._supportPointerEvents?this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX):this._deltaX=e.touches[0].clientX}_end(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX),this._handleSwipe(),execute(this._config.endCallback)}_move(e){this._deltaX=e.touches&&e.touches.length>1?0:e.touches[0].clientX-this._deltaX}_handleSwipe(){const e=Math.abs(this._deltaX);if(e<=40)return;const t=e/this._deltaX;this._deltaX=0,t&&execute(t>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(EventHandler.on(this._element,EVENT_POINTERDOWN,e=>this._start(e)),EventHandler.on(this._element,EVENT_POINTERUP,e=>this._end(e)),this._element.classList.add("pointer-event")):(EventHandler.on(this._element,EVENT_TOUCHSTART,e=>this._start(e)),EventHandler.on(this._element,EVENT_TOUCHMOVE,e=>this._move(e)),EventHandler.on(this._element,EVENT_TOUCHEND,e=>this._end(e)))}_eventIsPointerPenTouch(e){return this._supportPointerEvents&&("pen"===e.pointerType||"touch"===e.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const NAME$i="carousel",DATA_KEY$e="bs.carousel",EVENT_KEY$e=`.${DATA_KEY$e}`,DATA_API_KEY$9=".data-api",ARROW_LEFT_KEY$2="ArrowLeft",ARROW_RIGHT_KEY$2="ArrowRight",TOUCHEVENT_COMPAT_WAIT=500,ORDER_NEXT="next",ORDER_PREV="prev",DIRECTION_LEFT="left",DIRECTION_RIGHT="right",EVENT_SLIDE=`slide${EVENT_KEY$e}`,EVENT_SLID=`slid${EVENT_KEY$e}`,EVENT_KEYDOWN$1=`keydown${EVENT_KEY$e}`,EVENT_MOUSEENTER$2=`mouseenter${EVENT_KEY$e}`,EVENT_MOUSELEAVE$1=`mouseleave${EVENT_KEY$e}`,EVENT_DRAG_START=`dragstart${EVENT_KEY$e}`,EVENT_LOAD_DATA_API$3=`load${EVENT_KEY$e}.data-api`,EVENT_CLICK_DATA_API$7=`click${EVENT_KEY$e}.data-api`,CLASS_NAME_CAROUSEL="carousel",CLASS_NAME_ACTIVE$2="active",CLASS_NAME_SLIDE="slide",CLASS_NAME_END="carousel-item-end",CLASS_NAME_START="carousel-item-start",CLASS_NAME_NEXT="carousel-item-next",CLASS_NAME_PREV="carousel-item-prev",SELECTOR_ACTIVE=".active",SELECTOR_ITEM=".carousel-item",SELECTOR_ACTIVE_ITEM=".active.carousel-item",SELECTOR_ITEM_IMG=".carousel-item img",SELECTOR_INDICATORS=".carousel-indicators",SELECTOR_DATA_SLIDE="[data-bs-slide], [data-bs-slide-to]",SELECTOR_DATA_RIDE='[data-bs-ride="carousel"]',KEY_TO_DIRECTION={[ARROW_LEFT_KEY$2]:"right",[ARROW_RIGHT_KEY$2]:"left"},Default$h={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},DefaultType$h={interval:"number",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class Carousel extends BaseComponent{constructor(e,t){super(e,t),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=SelectorEngine.findOne(SELECTOR_INDICATORS,this._element),this._addEventListeners(),"carousel"===this._config.ride&&this.cycle()}static get Default(){return Default$h}static get DefaultType(){return DefaultType$h}static get NAME(){return NAME$i}next(){this._slide("next")}nextWhenVisible(){"visible"===document.visibilityState&&isVisible(this._element)&&this.next()}prev(){this._slide("prev")}pause(){this._isSliding&&triggerTransitionEnd(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?EventHandler.one(this._element,EVENT_SLID,()=>this.cycle()):this.cycle())}to(e){const t=this._getItems();if(e>t.length-1||e<0)return;if(this._isSliding)return void EventHandler.one(this._element,EVENT_SLID,()=>this.to(e));const n=this._getItemIndex(this._getActive());if(n===e)return;const i=e>n?"next":"prev";this._slide(i,t[e])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(e){return e.defaultInterval=e.interval,e}_addEventListeners(){this._config.keyboard&&EventHandler.on(this._element,EVENT_KEYDOWN$1,e=>this._keydown(e)),"hover"===this._config.pause&&(EventHandler.on(this._element,EVENT_MOUSEENTER$2,()=>this.pause()),EventHandler.on(this._element,EVENT_MOUSELEAVE$1,()=>this._maybeEnableCycle())),this._config.touch&&Swipe.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const e of SelectorEngine.find(SELECTOR_ITEM_IMG,this._element))EventHandler.on(e,EVENT_DRAG_START,e=>e.preventDefault());const e={leftCallback:()=>this._slide(this._directionToOrder("left")),rightCallback:()=>this._slide(this._directionToOrder("right")),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),500+this._config.interval))}};this._swipeHelper=new Swipe(this._element,e)}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const t=KEY_TO_DIRECTION[e.key];t&&(e.preventDefault(),this._slide(this._directionToOrder(t)))}_getItemIndex(e){return this._getItems().indexOf(e)}_setActiveIndicatorElement(e){if(!this._indicatorsElement)return;const t=SelectorEngine.findOne(".active",this._indicatorsElement);t.classList.remove("active"),t.removeAttribute("aria-current");const n=SelectorEngine.findOne(`[data-bs-slide-to="${e}"]`,this._indicatorsElement);n&&(n.classList.add("active"),n.setAttribute("aria-current","true"))}_updateInterval(){const e=this._activeElement||this._getActive();if(!e)return;const t=Number.parseInt(e.getAttribute("data-bs-interval"),10);this._config.interval=t||this._config.defaultInterval}_slide(e,t=null){if(this._isSliding)return;const n=this._getActive(),i="next"===e,s=t||getNextActiveElement(this._getItems(),n,i,this._config.wrap);if(s===n)return;const o=this._getItemIndex(s),a=t=>EventHandler.trigger(this._element,t,{relatedTarget:s,direction:this._orderToDirection(e),from:this._getItemIndex(n),to:o});if(a(EVENT_SLIDE).defaultPrevented)return;if(!n||!s)return;const l=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const r=i?CLASS_NAME_START:CLASS_NAME_END,c=i?CLASS_NAME_NEXT:CLASS_NAME_PREV;s.classList.add(c),reflow(s),n.classList.add(r),s.classList.add(r),this._queueCallback(()=>{s.classList.remove(r,c),s.classList.add("active"),n.classList.remove("active",c,r),this._isSliding=!1,a(EVENT_SLID)},n,this._isAnimated()),l&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element)}_getItems(){return SelectorEngine.find(SELECTOR_ITEM,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(e){return isRTL$1()?"left"===e?"prev":"next":"left"===e?"next":"prev"}_orderToDirection(e){return isRTL$1()?"prev"===e?"left":"right":"prev"===e?"right":"left"}}EventHandler.on(document,EVENT_CLICK_DATA_API$7,SELECTOR_DATA_SLIDE,function(e){const t=SelectorEngine.getElementFromSelector(this);if(!t||!t.classList.contains("carousel"))return;e.preventDefault();const n=Carousel.getOrCreateInstance(t),i=this.getAttribute("data-bs-slide-to");return i?(n.to(i),void n._maybeEnableCycle()):"next"===Manipulator.getDataAttribute(this,"slide")?(n.next(),void n._maybeEnableCycle()):(n.prev(),void n._maybeEnableCycle())}),EventHandler.on(window,EVENT_LOAD_DATA_API$3,()=>{const e=SelectorEngine.find(SELECTOR_DATA_RIDE);for(const t of e)Carousel.getOrCreateInstance(t)});const NAME$h="collapse",DATA_KEY$d="bs.collapse",EVENT_KEY$d=`.${DATA_KEY$d}`,DATA_API_KEY$8=".data-api",EVENT_SHOW$8=`show${EVENT_KEY$d}`,EVENT_SHOWN$8=`shown${EVENT_KEY$d}`,EVENT_HIDE$8=`hide${EVENT_KEY$d}`,EVENT_HIDDEN$8=`hidden${EVENT_KEY$d}`,EVENT_CLICK_DATA_API$6=`click${EVENT_KEY$d}.data-api`,CLASS_NAME_SHOW$7="show",CLASS_NAME_COLLAPSE="collapse",CLASS_NAME_COLLAPSING="collapsing",CLASS_NAME_COLLAPSED="collapsed",CLASS_NAME_DEEPER_CHILDREN=":scope .collapse .collapse",CLASS_NAME_HORIZONTAL="collapse-horizontal",WIDTH="width",HEIGHT="height",SELECTOR_ACTIVES=".collapse.show, .collapse.collapsing",SELECTOR_DATA_TOGGLE$9='[data-bs-toggle="collapse"]',Default$g={parent:null,toggle:!0},DefaultType$g={parent:"(null|element)",toggle:"boolean"};class Collapse extends BaseComponent{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=SelectorEngine.find(SELECTOR_DATA_TOGGLE$9);for(const e of n){const t=SelectorEngine.getSelectorFromElement(e),n=SelectorEngine.find(t).filter(e=>e===this._element);null!==t&&n.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Default$g}static get DefaultType(){return DefaultType$g}static get NAME(){return NAME$h}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(e=>e!==this._element).map(e=>Collapse.getOrCreateInstance(e,{toggle:!1}))),e.length&&e[0]._isTransitioning)return;if(EventHandler.trigger(this._element,EVENT_SHOW$8).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[t]="",EventHandler.trigger(this._element,EVENT_SHOWN$8)},this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(EventHandler.trigger(this._element,EVENT_HIDE$8).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,reflow(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");for(const e of this._triggerArray){const t=SelectorEngine.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0,this._element.style[e]="",this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),EventHandler.trigger(this._element,EVENT_HIDDEN$8)},this._element,!0)}_isShown(e=this._element){return e.classList.contains("show")}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=getElement(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?WIDTH:HEIGHT}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$9);for(const t of e){const e=SelectorEngine.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN,this._config.parent);return SelectorEngine.find(e,this._config.parent).filter(e=>!t.includes(e))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const n of e)n.classList.toggle("collapsed",!t),n.setAttribute("aria-expanded",t)}}EventHandler.on(document,EVENT_CLICK_DATA_API$6,SELECTOR_DATA_TOGGLE$9,function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of SelectorEngine.getMultipleElementsFromSelector(this))Collapse.getOrCreateInstance(e,{toggle:!1}).toggle()});const min=Math.min,max=Math.max,round=Math.round,floor=Math.floor,createCoords=e=>({x:e,y:e}),oppositeSideMap={left:"right",right:"left",bottom:"top",top:"bottom"},oppositeAlignmentMap={start:"end",end:"start"};function clamp(e,t,n){return max(e,min(t,n))}function evaluate(e,t){return"function"==typeof e?e(t):e}function getSide(e){return e.split("-")[0]}function getAlignment(e){return e.split("-")[1]}function getOppositeAxis(e){return"x"===e?"y":"x"}function getAxisLength(e){return"y"===e?"height":"width"}const yAxisSides=new Set(["top","bottom"]);function getSideAxis(e){return yAxisSides.has(getSide(e))?"y":"x"}function getAlignmentAxis(e){return getOppositeAxis(getSideAxis(e))}function getAlignmentSides(e,t,n){void 0===n&&(n=!1);const i=getAlignment(e),s=getAlignmentAxis(e),o=getAxisLength(s);let a="x"===s?i===(n?"end":"start")?"right":"left":"start"===i?"bottom":"top";return t.reference[o]>t.floating[o]&&(a=getOppositePlacement(a)),[a,getOppositePlacement(a)]}function getExpandedPlacements(e){const t=getOppositePlacement(e);return[getOppositeAlignmentPlacement(e),t,getOppositeAlignmentPlacement(t)]}function getOppositeAlignmentPlacement(e){return e.replace(/start|end/g,e=>oppositeAlignmentMap[e])}const lrPlacement=["left","right"],rlPlacement=["right","left"],tbPlacement=["top","bottom"],btPlacement=["bottom","top"];function getSideList(e,t,n){switch(e){case"top":case"bottom":return n?t?rlPlacement:lrPlacement:t?lrPlacement:rlPlacement;case"left":case"right":return t?tbPlacement:btPlacement;default:return[]}}function getOppositeAxisPlacements(e,t,n,i){const s=getAlignment(e);let o=getSideList(getSide(e),"start"===n,i);return s&&(o=o.map(e=>e+"-"+s),t&&(o=o.concat(o.map(getOppositeAlignmentPlacement)))),o}function getOppositePlacement(e){return e.replace(/left|right|bottom|top/g,e=>oppositeSideMap[e])}function expandPaddingObject(e){return{top:0,right:0,bottom:0,left:0,...e}}function getPaddingObject(e){return"number"!=typeof e?expandPaddingObject(e):{top:e,right:e,bottom:e,left:e}}function rectToClientRect(e){const{x:t,y:n,width:i,height:s}=e;return{width:i,height:s,top:n,left:t,right:t+i,bottom:n+s,x:t,y:n}}function computeCoordsFromPlacement(e,t,n){let{reference:i,floating:s}=e;const o=getSideAxis(t),a=getAlignmentAxis(t),l=getAxisLength(a),r=getSide(t),c="y"===o,d=i.x+i.width/2-s.width/2,u=i.y+i.height/2-s.height/2,h=i[l]/2-s[l]/2;let m;switch(r){case"top":m={x:d,y:i.y-s.height};break;case"bottom":m={x:d,y:i.y+i.height};break;case"right":m={x:i.x+i.width,y:u};break;case"left":m={x:i.x-s.width,y:u};break;default:m={x:i.x,y:i.y}}switch(getAlignment(t)){case"start":m[a]-=h*(n&&c?-1:1);break;case"end":m[a]+=h*(n&&c?-1:1)}return m}const computePosition$1=async(e,t,n)=>{const{placement:i="bottom",strategy:s="absolute",middleware:o=[],platform:a}=n,l=o.filter(Boolean),r=await(null==a.isRTL?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:s}),{x:d,y:u}=computeCoordsFromPlacement(c,i,r),h=i,m={},_=0;for(let n=0;n<l.length;n++){const{name:o,fn:g}=l[n],{x:E,y:p,data:f,reset:v}=await g({x:d,y:u,initialPlacement:i,placement:h,strategy:s,middlewareData:m,rects:c,platform:a,elements:{reference:e,floating:t}});d=null!=E?E:d,u=null!=p?p:u,m={...m,[o]:{...m[o],...f}},v&&_<=50&&(_++,"object"==typeof v&&(v.placement&&(h=v.placement),v.rects&&(c=!0===v.rects?await a.getElementRects({reference:e,floating:t,strategy:s}):v.rects),({x:d,y:u}=computeCoordsFromPlacement(c,h,r))),n=-1)}return{x:d,y:u,placement:h,strategy:s,middlewareData:m}};async function detectOverflow(e,t){var n;void 0===t&&(t={});const{x:i,y:s,platform:o,rects:a,elements:l,strategy:r}=e,{boundary:c="clippingAncestors",rootBoundary:d="viewport",elementContext:u="floating",altBoundary:h=!1,padding:m=0}=evaluate(t,e),_=getPaddingObject(m),g=l[h?"floating"===u?"reference":"floating":u],E=rectToClientRect(await o.getClippingRect({element:null==(n=await(null==o.isElement?void 0:o.isElement(g)))||n?g:g.contextElement||await(null==o.getDocumentElement?void 0:o.getDocumentElement(l.floating)),boundary:c,rootBoundary:d,strategy:r})),p="floating"===u?{x:i,y:s,width:a.floating.width,height:a.floating.height}:a.reference,f=await(null==o.getOffsetParent?void 0:o.getOffsetParent(l.floating)),v=await(null==o.isElement?void 0:o.isElement(f))&&await(null==o.getScale?void 0:o.getScale(f))||{x:1,y:1},T=rectToClientRect(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({elements:l,rect:p,offsetParent:f,strategy:r}):p);return{top:(E.top-T.top+_.top)/v.y,bottom:(T.bottom-E.bottom+_.bottom)/v.y,left:(E.left-T.left+_.left)/v.x,right:(T.right-E.right+_.right)/v.x}}const arrow$1=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:i,placement:s,rects:o,platform:a,elements:l,middlewareData:r}=t,{element:c,padding:d=0}=evaluate(e,t)||{};if(null==c)return{};const u=getPaddingObject(d),h={x:n,y:i},m=getAlignmentAxis(s),_=getAxisLength(m),g=await a.getDimensions(c),E="y"===m,p=E?"top":"left",f=E?"bottom":"right",v=E?"clientHeight":"clientWidth",T=o.reference[_]+o.reference[m]-h[m]-o.floating[_],b=h[m]-o.reference[m],A=await(null==a.getOffsetParent?void 0:a.getOffsetParent(c));let D=A?A[v]:0;D&&await(null==a.isElement?void 0:a.isElement(A))||(D=l.floating[v]||o.floating[_]);const y=T/2-b/2,S=D/2-g[_]/2-1,C=min(u[p],S),N=min(u[f],S),w=C,x=D-g[_]-N,M=D/2-g[_]/2+y,O=clamp(w,M,x),L=!r.arrow&&null!=getAlignment(s)&&M!==O&&o.reference[_]/2-(M<w?C:N)-g[_]/2<0,$=L?M<w?M-w:M-x:0;return{[m]:h[m]+$,data:{[m]:O,centerOffset:M-O-$,...L&&{alignmentOffset:$}},reset:L}}}),flip$1=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,i;const{placement:s,middlewareData:o,rects:a,initialPlacement:l,platform:r,elements:c}=t,{mainAxis:d=!0,crossAxis:u=!0,fallbackPlacements:h,fallbackStrategy:m="bestFit",fallbackAxisSideDirection:_="none",flipAlignment:g=!0,...E}=evaluate(e,t);if(null!=(n=o.arrow)&&n.alignmentOffset)return{};const p=getSide(s),f=getSideAxis(l),v=getSide(l)===l,T=await(null==r.isRTL?void 0:r.isRTL(c.floating)),b=h||(v||!g?[getOppositePlacement(l)]:getExpandedPlacements(l)),A="none"!==_;!h&&A&&b.push(...getOppositeAxisPlacements(l,g,_,T));const D=[l,...b],y=await detectOverflow(t,E),S=[];let C=(null==(i=o.flip)?void 0:i.overflows)||[];if(d&&S.push(y[p]),u){const e=getAlignmentSides(s,a,T);S.push(y[e[0]],y[e[1]])}if(C=[...C,{placement:s,overflows:S}],!S.every(e=>e<=0)){var N,w;const e=((null==(N=o.flip)?void 0:N.index)||0)+1,t=D[e];if(t&&("alignment"!==u||f===getSideAxis(t)||C.every(e=>getSideAxis(e.placement)!==f||e.overflows[0]>0)))return{data:{index:e,overflows:C},reset:{placement:t}};let n=null==(w=C.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:w.placement;if(!n)switch(m){case"bestFit":{var x;const e=null==(x=C.filter(e=>{if(A){const t=getSideAxis(e.placement);return t===f||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:x[0];e&&(n=e);break}case"initialPlacement":n=l}if(s!==n)return{reset:{placement:n}}}return{}}}},originSides=new Set(["left","top"]);async function convertValueToCoords(e,t){const{placement:n,platform:i,elements:s}=e,o=await(null==i.isRTL?void 0:i.isRTL(s.floating)),a=getSide(n),l=getAlignment(n),r="y"===getSideAxis(n),c=originSides.has(a)?-1:1,d=o&&r?-1:1,u=evaluate(t,e);let{mainAxis:h,crossAxis:m,alignmentAxis:_}="number"==typeof u?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:u.mainAxis||0,crossAxis:u.crossAxis||0,alignmentAxis:u.alignmentAxis};return l&&"number"==typeof _&&(m="end"===l?-1*_:_),r?{x:m*d,y:h*c}:{x:h*c,y:m*d}}const offset$1=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,i;const{x:s,y:o,placement:a,middlewareData:l}=t,r=await convertValueToCoords(t,e);return a===(null==(n=l.offset)?void 0:n.placement)&&null!=(i=l.arrow)&&i.alignmentOffset?{}:{x:s+r.x,y:o+r.y,data:{...r,placement:a}}}}},shift$1=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:i,placement:s}=t,{mainAxis:o=!0,crossAxis:a=!1,limiter:l={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...r}=evaluate(e,t),c={x:n,y:i},d=await detectOverflow(t,r),u=getSideAxis(getSide(s)),h=getOppositeAxis(u);let m=c[h],_=c[u];if(o){const e="y"===h?"bottom":"right";m=clamp(m+d["y"===h?"top":"left"],m,m-d[e])}if(a){const e="y"===u?"bottom":"right";_=clamp(_+d["y"===u?"top":"left"],_,_-d[e])}const g=l.fn({...t,[h]:m,[u]:_});return{...g,data:{x:g.x-n,y:g.y-i,enabled:{[h]:o,[u]:a}}}}}};function hasWindow(){return"undefined"!=typeof window}function getNodeName(e){return isNode(e)?(e.nodeName||"").toLowerCase():"#document"}function getWindow(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function getDocumentElement(e){var t;return null==(t=(isNode(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function isNode(e){return!!hasWindow()&&(e instanceof Node||e instanceof getWindow(e).Node)}function isElement(e){return!!hasWindow()&&(e instanceof Element||e instanceof getWindow(e).Element)}function isHTMLElement(e){return!!hasWindow()&&(e instanceof HTMLElement||e instanceof getWindow(e).HTMLElement)}function isShadowRoot(e){return!(!hasWindow()||"undefined"==typeof ShadowRoot)&&(e instanceof ShadowRoot||e instanceof getWindow(e).ShadowRoot)}const invalidOverflowDisplayValues=new Set(["inline","contents"]);function isOverflowElement(e){const{overflow:t,overflowX:n,overflowY:i,display:s}=getComputedStyle$1(e);return/auto|scroll|overlay|hidden|clip/.test(t+i+n)&&!invalidOverflowDisplayValues.has(s)}const tableElements=new Set(["table","td","th"]);function isTableElement(e){return tableElements.has(getNodeName(e))}const topLayerSelectors=[":popover-open",":modal"];function isTopLayer(e){return topLayerSelectors.some(t=>{try{return e.matches(t)}catch(e){return!1}})}const transformProperties=["transform","translate","scale","rotate","perspective"],willChangeValues=["transform","translate","scale","rotate","perspective","filter"],containValues=["paint","layout","strict","content"];function isContainingBlock(e){const t=isWebKit(),n=isElement(e)?getComputedStyle$1(e):e;return transformProperties.some(e=>!!n[e]&&"none"!==n[e])||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||willChangeValues.some(e=>(n.willChange||"").includes(e))||containValues.some(e=>(n.contain||"").includes(e))}function getContainingBlock(e){let t=getParentNode(e);for(;isHTMLElement(t)&&!isLastTraversableNode(t);){if(isContainingBlock(t))return t;if(isTopLayer(t))return null;t=getParentNode(t)}return null}function isWebKit(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}const lastTraversableNodeNames=new Set(["html","body","#document"]);function isLastTraversableNode(e){return lastTraversableNodeNames.has(getNodeName(e))}function getComputedStyle$1(e){return getWindow(e).getComputedStyle(e)}function getNodeScroll(e){return isElement(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function getParentNode(e){if("html"===getNodeName(e))return e;const t=e.assignedSlot||e.parentNode||isShadowRoot(e)&&e.host||getDocumentElement(e);return isShadowRoot(t)?t.host:t}function getNearestOverflowAncestor(e){const t=getParentNode(e);return isLastTraversableNode(t)?e.ownerDocument?e.ownerDocument.body:e.body:isHTMLElement(t)&&isOverflowElement(t)?t:getNearestOverflowAncestor(t)}function getOverflowAncestors(e,t,n){var i;void 0===t&&(t=[]),void 0===n&&(n=!0);const s=getNearestOverflowAncestor(e),o=s===(null==(i=e.ownerDocument)?void 0:i.body),a=getWindow(s);if(o){const e=getFrameElement(a);return t.concat(a,a.visualViewport||[],isOverflowElement(s)?s:[],e&&n?getOverflowAncestors(e):[])}return t.concat(s,getOverflowAncestors(s,[],n))}function getFrameElement(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function getCssDimensions(e){const t=getComputedStyle$1(e);let n=parseFloat(t.width)||0,i=parseFloat(t.height)||0;const s=isHTMLElement(e),o=s?e.offsetWidth:n,a=s?e.offsetHeight:i,l=round(n)!==o||round(i)!==a;return l&&(n=o,i=a),{width:n,height:i,$:l}}function unwrapElement(e){return isElement(e)?e:e.contextElement}function getScale(e){const t=unwrapElement(e);if(!isHTMLElement(t))return createCoords(1);const n=t.getBoundingClientRect(),{width:i,height:s,$:o}=getCssDimensions(t);let a=(o?round(n.width):n.width)/i,l=(o?round(n.height):n.height)/s;return a&&Number.isFinite(a)||(a=1),l&&Number.isFinite(l)||(l=1),{x:a,y:l}}const noOffsets=createCoords(0);function getVisualOffsets(e){const t=getWindow(e);return isWebKit()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:noOffsets}function shouldAddVisualOffsets(e,t,n){return void 0===t&&(t=!1),!(!n||t&&n!==getWindow(e))&&t}function getBoundingClientRect(e,t,n,i){void 0===t&&(t=!1),void 0===n&&(n=!1);const s=e.getBoundingClientRect(),o=unwrapElement(e);let a=createCoords(1);t&&(i?isElement(i)&&(a=getScale(i)):a=getScale(e));const l=shouldAddVisualOffsets(o,n,i)?getVisualOffsets(o):createCoords(0);let r=(s.left+l.x)/a.x,c=(s.top+l.y)/a.y,d=s.width/a.x,u=s.height/a.y;if(o){const e=getWindow(o),t=i&&isElement(i)?getWindow(i):i;let n=e,s=getFrameElement(n);for(;s&&i&&t!==n;){const e=getScale(s),t=s.getBoundingClientRect(),i=getComputedStyle$1(s),o=t.left+(s.clientLeft+parseFloat(i.paddingLeft))*e.x,a=t.top+(s.clientTop+parseFloat(i.paddingTop))*e.y;r*=e.x,c*=e.y,d*=e.x,u*=e.y,r+=o,c+=a,n=getWindow(s),s=getFrameElement(n)}}return rectToClientRect({width:d,height:u,x:r,y:c})}function getWindowScrollBarX(e,t){const n=getNodeScroll(e).scrollLeft;return t?t.left+n:getBoundingClientRect(getDocumentElement(e)).left+n}function getHTMLOffset(e,t){const n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-getWindowScrollBarX(e,n),y:n.top+t.scrollTop}}function convertOffsetParentRelativeRectToViewportRelativeRect(e){let{elements:t,rect:n,offsetParent:i,strategy:s}=e;const o="fixed"===s,a=getDocumentElement(i),l=!!t&&isTopLayer(t.floating);if(i===a||l&&o)return n;let r={scrollLeft:0,scrollTop:0},c=createCoords(1);const d=createCoords(0),u=isHTMLElement(i);if((u||!u&&!o)&&(("body"!==getNodeName(i)||isOverflowElement(a))&&(r=getNodeScroll(i)),isHTMLElement(i))){const e=getBoundingClientRect(i);c=getScale(i),d.x=e.x+i.clientLeft,d.y=e.y+i.clientTop}const h=!a||u||o?createCoords(0):getHTMLOffset(a,r);return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-r.scrollLeft*c.x+d.x+h.x,y:n.y*c.y-r.scrollTop*c.y+d.y+h.y}}function getClientRects(e){return Array.from(e.getClientRects())}function getDocumentRect(e){const t=getDocumentElement(e),n=getNodeScroll(e),i=e.ownerDocument.body,s=max(t.scrollWidth,t.clientWidth,i.scrollWidth,i.clientWidth),o=max(t.scrollHeight,t.clientHeight,i.scrollHeight,i.clientHeight);let a=-n.scrollLeft+getWindowScrollBarX(e);const l=-n.scrollTop;return"rtl"===getComputedStyle$1(i).direction&&(a+=max(t.clientWidth,i.clientWidth)-s),{width:s,height:o,x:a,y:l}}const SCROLLBAR_MAX=25;function getViewportRect(e,t){const n=getWindow(e),i=getDocumentElement(e),s=n.visualViewport;let o=i.clientWidth,a=i.clientHeight,l=0,r=0;if(s){o=s.width,a=s.height;const e=isWebKit();(!e||e&&"fixed"===t)&&(l=s.offsetLeft,r=s.offsetTop)}const c=getWindowScrollBarX(i);if(c<=0){const e=i.ownerDocument,t=e.body,n=getComputedStyle(t),s="CSS1Compat"===e.compatMode&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,a=Math.abs(i.clientWidth-t.clientWidth-s);a<=25&&(o-=a)}else c<=25&&(o+=c);return{width:o,height:a,x:l,y:r}}const absoluteOrFixed=new Set(["absolute","fixed"]);function getInnerBoundingClientRect(e,t){const n=getBoundingClientRect(e,!0,"fixed"===t),i=n.top+e.clientTop,s=n.left+e.clientLeft,o=isHTMLElement(e)?getScale(e):createCoords(1);return{width:e.clientWidth*o.x,height:e.clientHeight*o.y,x:s*o.x,y:i*o.y}}function getClientRectFromClippingAncestor(e,t,n){let i;if("viewport"===t)i=getViewportRect(e,n);else if("document"===t)i=getDocumentRect(getDocumentElement(e));else if(isElement(t))i=getInnerBoundingClientRect(t,n);else{const n=getVisualOffsets(e);i={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return rectToClientRect(i)}function hasFixedPositionAncestor(e,t){const n=getParentNode(e);return!(n===t||!isElement(n)||isLastTraversableNode(n))&&("fixed"===getComputedStyle$1(n).position||hasFixedPositionAncestor(n,t))}function getClippingElementAncestors(e,t){const n=t.get(e);if(n)return n;let i=getOverflowAncestors(e,[],!1).filter(e=>isElement(e)&&"body"!==getNodeName(e)),s=null;const o="fixed"===getComputedStyle$1(e).position;let a=o?getParentNode(e):e;for(;isElement(a)&&!isLastTraversableNode(a);){const t=getComputedStyle$1(a),n=isContainingBlock(a);n||"fixed"!==t.position||(s=null),(o?!n&&!s:!n&&"static"===t.position&&s&&absoluteOrFixed.has(s.position)||isOverflowElement(a)&&!n&&hasFixedPositionAncestor(e,a))?i=i.filter(e=>e!==a):s=t,a=getParentNode(a)}return t.set(e,i),i}function getClippingRect(e){let{element:t,boundary:n,rootBoundary:i,strategy:s}=e;const o=[..."clippingAncestors"===n?isTopLayer(t)?[]:getClippingElementAncestors(t,this._c):[].concat(n),i],a=o[0],l=o.reduce((e,n)=>{const i=getClientRectFromClippingAncestor(t,n,s);return e.top=max(i.top,e.top),e.right=min(i.right,e.right),e.bottom=min(i.bottom,e.bottom),e.left=max(i.left,e.left),e},getClientRectFromClippingAncestor(t,a,s));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function getDimensions(e){const{width:t,height:n}=getCssDimensions(e);return{width:t,height:n}}function getRectRelativeToOffsetParent(e,t,n){const i=isHTMLElement(t),s=getDocumentElement(t),o="fixed"===n,a=getBoundingClientRect(e,!0,o,t);let l={scrollLeft:0,scrollTop:0};const r=createCoords(0);function c(){r.x=getWindowScrollBarX(s)}if(i||!i&&!o)if(("body"!==getNodeName(t)||isOverflowElement(s))&&(l=getNodeScroll(t)),i){const e=getBoundingClientRect(t,!0,o,t);r.x=e.x+t.clientLeft,r.y=e.y+t.clientTop}else s&&c();o&&!i&&s&&c();const d=!s||i||o?createCoords(0):getHTMLOffset(s,l);return{x:a.left+l.scrollLeft-r.x-d.x,y:a.top+l.scrollTop-r.y-d.y,width:a.width,height:a.height}}function isStaticPositioned(e){return"static"===getComputedStyle$1(e).position}function getTrueOffsetParent(e,t){if(!isHTMLElement(e)||"fixed"===getComputedStyle$1(e).position)return null;if(t)return t(e);let n=e.offsetParent;return getDocumentElement(e)===n&&(n=n.ownerDocument.body),n}function getOffsetParent(e,t){const n=getWindow(e);if(isTopLayer(e))return n;if(!isHTMLElement(e)){let t=getParentNode(e);for(;t&&!isLastTraversableNode(t);){if(isElement(t)&&!isStaticPositioned(t))return t;t=getParentNode(t)}return n}let i=getTrueOffsetParent(e,t);for(;i&&isTableElement(i)&&isStaticPositioned(i);)i=getTrueOffsetParent(i,t);return i&&isLastTraversableNode(i)&&isStaticPositioned(i)&&!isContainingBlock(i)?n:i||getContainingBlock(e)||n}const getElementRects=async function(e){const t=this.getOffsetParent||getOffsetParent,n=this.getDimensions,i=await n(e.floating);return{reference:getRectRelativeToOffsetParent(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:i.width,height:i.height}}};function isRTL(e){return"rtl"===getComputedStyle$1(e).direction}const platform={convertOffsetParentRelativeRectToViewportRelativeRect:convertOffsetParentRelativeRectToViewportRelativeRect,getDocumentElement:getDocumentElement,getClippingRect:getClippingRect,getOffsetParent:getOffsetParent,getElementRects:getElementRects,getClientRects:getClientRects,getDimensions:getDimensions,getScale:getScale,isElement:isElement,isRTL:isRTL};function rectsAreEqual(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function observeMove(e,t){let n,i=null;const s=getDocumentElement(e);function o(){var e;clearTimeout(n),null==(e=i)||e.disconnect(),i=null}return function a(l,r){void 0===l&&(l=!1),void 0===r&&(r=1),o();const c=e.getBoundingClientRect(),{left:d,top:u,width:h,height:m}=c;if(l||t(),!h||!m)return;const _={rootMargin:-floor(u)+"px "+-floor(s.clientWidth-(d+h))+"px "+-floor(s.clientHeight-(u+m))+"px "+-floor(d)+"px",threshold:max(0,min(1,r))||1};let g=!0;function E(t){const i=t[0].intersectionRatio;if(i!==r){if(!g)return a();i?a(!1,i):n=setTimeout(()=>{a(!1,1e-7)},1e3)}1!==i||rectsAreEqual(c,e.getBoundingClientRect())||a(),g=!1}try{i=new IntersectionObserver(E,{..._,root:s.ownerDocument})}catch(e){i=new IntersectionObserver(E,_)}i.observe(e)}(!0),o}function autoUpdate(e,t,n,i){void 0===i&&(i={});const{ancestorScroll:s=!0,ancestorResize:o=!0,elementResize:a="function"==typeof ResizeObserver,layoutShift:l="function"==typeof IntersectionObserver,animationFrame:r=!1}=i,c=unwrapElement(e),d=s||o?[...c?getOverflowAncestors(c):[],...getOverflowAncestors(t)]:[];d.forEach(e=>{s&&e.addEventListener("scroll",n,{passive:!0}),o&&e.addEventListener("resize",n)});const u=c&&l?observeMove(c,n):null;let h,m=-1,_=null;a&&(_=new ResizeObserver(e=>{let[i]=e;i&&i.target===c&&_&&(_.unobserve(t),cancelAnimationFrame(m),m=requestAnimationFrame(()=>{var e;null==(e=_)||e.observe(t)})),n()}),c&&!r&&_.observe(c),_.observe(t));let g=r?getBoundingClientRect(e):null;return r&&function t(){const i=getBoundingClientRect(e);g&&!rectsAreEqual(g,i)&&n(),g=i,h=requestAnimationFrame(t)}(),n(),()=>{var e;d.forEach(e=>{s&&e.removeEventListener("scroll",n),o&&e.removeEventListener("resize",n)}),null==u||u(),null==(e=_)||e.disconnect(),_=null,r&&cancelAnimationFrame(h)}}const offset=offset$1,shift=shift$1,flip=flip$1,arrow=arrow$1,computePosition=(e,t,n)=>{const i=new Map,s={platform:platform,...n},o={...s.platform,_c:i};return computePosition$1(e,t,{...s,platform:o})},BREAKPOINTS={sm:576,md:768,lg:1024,xl:1280,"2xl":1536},parseResponsivePlacement=(e,t="bottom")=>{if(!e||!e.includes(":"))return null;const n=e.split(/\s+/),i={xs:t};for(const e of n)if(e.includes(":")){const[t,n]=e.split(":");void 0!==BREAKPOINTS[t]&&(i[t]=n)}else i.xs=e;return i},getResponsivePlacement=(e,t="bottom")=>{if(!e)return t;const n=window.innerWidth;let i=e.xs||t;const s=["sm","md","lg","xl","2xl"];for(const t of s)n>=BREAKPOINTS[t]&&e[t]&&(i=e[t]);return i},createBreakpointListeners=e=>{const t=[];for(const n of Object.keys(BREAKPOINTS)){const i=BREAKPOINTS[n],s=window.matchMedia(`(min-width: ${i}px)`);s.addEventListener("change",e),t.push({mql:s,handler:e})}return t},disposeBreakpointListeners=e=>{for(const{mql:t,handler:n}of e)t.removeEventListener("change",n)},NAME$g="menu",DATA_KEY$c="bs.menu",EVENT_KEY$c=".bs.menu",DATA_API_KEY$7=".data-api",ESCAPE_KEY$2="Escape",TAB_KEY$2="Tab",ARROW_UP_KEY$2="ArrowUp",ARROW_DOWN_KEY$2="ArrowDown",ARROW_LEFT_KEY$1="ArrowLeft",ARROW_RIGHT_KEY$1="ArrowRight",HOME_KEY$2="Home",END_KEY$2="End",ENTER_KEY$1="Enter",SPACE_KEY$1=" ",RIGHT_MOUSE_BUTTON=2,SUBMENU_CLOSE_DELAY=100,EVENT_HIDE$7="hide.bs.menu",EVENT_HIDDEN$7="hidden.bs.menu",EVENT_SHOW$7="show.bs.menu",EVENT_SHOWN$7="shown.bs.menu",EVENT_CLICK_DATA_API$5="click.bs.menu.data-api",EVENT_KEYDOWN_DATA_API="keydown.bs.menu.data-api",EVENT_KEYUP_DATA_API="keyup.bs.menu.data-api",CLASS_NAME_SHOW$6="show",SELECTOR_DATA_TOGGLE$8='[data-bs-toggle="menu"]:not(.disabled):not(:disabled)',SELECTOR_MENU$2=".menu",SELECTOR_SUBMENU=".submenu",SELECTOR_SUBMENU_TOGGLE=".submenu > .menu-item",SELECTOR_NAVBAR_NAV=".navbar-nav",SELECTOR_VISIBLE_ITEMS$1=".menu-item:not(.disabled):not(:disabled)",DEFAULT_PLACEMENT="bottom-start",SUBMENU_PLACEMENT="end-start",resolveLogicalPlacement=e=>isRTL$1()?e.replace(/^start(?=-|$)/,"right").replace(/^end(?=-|$)/,"left"):e.replace(/^start(?=-|$)/,"left").replace(/^end(?=-|$)/,"right"),triangleSign=(e,t,n)=>(e.x-n.x)*(t.y-n.y)-(t.x-n.x)*(e.y-n.y),Default$f={autoClose:!0,boundary:"clippingParents",container:!1,display:"dynamic",offset:[0,2],floatingConfig:null,menu:null,placement:"bottom-start",reference:"toggle",strategy:"absolute",submenuTrigger:"both",submenuDelay:100},DefaultType$f={autoClose:"(boolean|string)",boundary:"(string|element)",container:"(string|element|boolean)",display:"string",offset:"(array|string|function)",floatingConfig:"(null|object|function)",menu:"(null|element)",placement:"string",reference:"(string|element|object)",strategy:"string",submenuTrigger:"string",submenuDelay:"number"};class Menu extends BaseComponent{static _openInstances=(()=>new Set)();constructor(e,t){super(e,t),this._floatingCleanup=null,this._mediaQueryListeners=[],this._responsivePlacements=null,this._parent=this._element.parentNode,this._isSubmenu=this._parent.classList?.contains("submenu"),this._openSubmenus=new Map,this._submenuCloseTimeouts=new Map,this._hoverIntentData=null,this._menu=this._config.menu||this._findMenu(),this._menuOriginalParent=this._menu?.parentNode,this._parseResponsivePlacements(),this._setupSubmenuListeners()}static get Default(){return Default$f}static get DefaultType(){return DefaultType$f}static get NAME(){return"menu"}toggle(){return this._isShown()?this.hide():this.show()}show(){if(isDisabled(this._element)||this._isShown())return;const e={relatedTarget:this._element};if(!EventHandler.trigger(this._element,EVENT_SHOW$7,e).defaultPrevented){if(this._moveMenuToContainer(),this._createFloating(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const e of[].concat(...document.body.children))EventHandler.on(e,"mouseover",noop);this._element.focus({focusVisible:!1}),this._element.setAttribute("aria-expanded","true"),this._menu.classList.add("show"),this._element.classList.add("show"),this._parent&&this._parent.classList.add("show"),Menu._openInstances.add(this),EventHandler.trigger(this._element,EVENT_SHOWN$7,e)}}hide(){if(isDisabled(this._element)||!this._isShown())return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._disposeFloating(),this._restoreMenuToOriginalParent(),this._disposeMediaQueryListeners(),this._closeAllSubmenus(),this._clearAllSubmenuTimeouts(),Menu._openInstances.delete(this),super.dispose()}update(){this._floatingCleanup&&this._updateFloatingPosition()}_findMenu(){return SelectorEngine.next(this._element,".menu")[0]||SelectorEngine.prev(this._element,".menu")[0]||SelectorEngine.findOne(".menu",this._parent)}_completeHide(e){if(!EventHandler.trigger(this._element,EVENT_HIDE$7,e).defaultPrevented){if(this._closeAllSubmenus(),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))EventHandler.off(e,"mouseover",noop);this._disposeFloating(),this._restoreMenuToOriginalParent(),this._menu.classList.remove("show"),this._element.classList.remove("show"),this._parent&&this._parent.classList.remove("show"),this._element.setAttribute("aria-expanded","false"),Manipulator.removeDataAttribute(this._menu,"placement"),Manipulator.removeDataAttribute(this._menu,"display"),Menu._openInstances.delete(this),EventHandler.trigger(this._element,EVENT_HIDDEN$7,e)}}_getConfig(e){if("object"==typeof(e=super._getConfig(e)).reference&&!isElement$1(e.reference)&&"function"!=typeof e.reference.getBoundingClientRect)throw new TypeError(`${"menu".toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_createFloating(){if("static"===this._config.display)return void Manipulator.setDataAttribute(this._menu,"display","static");let e=this._element;"parent"===this._config.reference?e=this._parent:isElement$1(this._config.reference)?e=getElement(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference),this._updateFloatingPosition(e),this._floatingCleanup=autoUpdate(e,this._menu,()=>this._updateFloatingPosition(e))}async _updateFloatingPosition(e=null){if(!this._menu)return;e||(e="parent"===this._config.reference?this._parent:isElement$1(this._config.reference)?getElement(this._config.reference):"object"==typeof this._config.reference?this._config.reference:this._element);const t=this._getPlacement(),n=this._getFloatingMiddleware(),i=this._getFloatingConfig(t,n);await this._applyFloatingPosition(e,this._menu,i.placement,i.middleware,i.strategy)}_isShown(){return this._menu.classList.contains("show")}_getPlacement(){const e=this._responsivePlacements?getResponsivePlacement(this._responsivePlacements,"bottom-start"):this._config.placement;return resolveLogicalPlacement(e)}_parseResponsivePlacements(){this._responsivePlacements=parseResponsivePlacement(this._config.placement,"bottom-start"),this._responsivePlacements&&this._setupMediaQueryListeners()}_setupMediaQueryListeners(){this._disposeMediaQueryListeners(),this._mediaQueryListeners=createBreakpointListeners(()=>{this._isShown()&&this._updateFloatingPosition()})}_disposeMediaQueryListeners(){disposeBreakpointListeners(this._mediaQueryListeners),this._mediaQueryListeners=[]}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?({placement:t,rects:n})=>e({placement:t,reference:n.reference,floating:n.floating},this._element):e}_getFloatingMiddleware(){const e=this._getOffset();return[offset("function"==typeof e?e:{mainAxis:e[1]||0,crossAxis:e[0]||0}),flip({fallbackPlacements:this._getFallbackPlacements()}),shift({boundary:"clippingParents"===this._config.boundary?"clippingAncestors":this._config.boundary})]}_getFallbackPlacements(){return{bottom:["top","bottom-start","bottom-end","top-start","top-end"],"bottom-start":["top-start","bottom-end","top-end"],"bottom-end":["top-end","bottom-start","top-start"],top:["bottom","top-start","top-end","bottom-start","bottom-end"],"top-start":["bottom-start","top-end","bottom-end"],"top-end":["bottom-end","top-start","bottom-start"],right:["left","right-start","right-end","left-start","left-end"],"right-start":["left-start","right-end","left-end","top-start","bottom-start"],"right-end":["left-end","right-start","left-start","top-end","bottom-end"],left:["right","left-start","left-end","right-start","right-end"],"left-start":["right-start","left-end","right-end","top-start","bottom-start"],"left-end":["right-end","left-start","right-start","top-end","bottom-end"]}[this._getPlacement()]||["top","bottom","right","left"]}_getFloatingConfig(e,t){const n={placement:e,middleware:t,strategy:this._config.strategy};return{...n,...execute(this._config.floatingConfig,[void 0,n])}}_disposeFloating(){this._floatingCleanup&&(this._floatingCleanup(),this._floatingCleanup=null)}_getContainer(){const{container:e}=this._config;return!1===e?null:!0===e?document.body:getElement(e)}_moveMenuToContainer(){const e=this._getContainer();e&&this._menu&&this._menu.parentNode!==e&&e.append(this._menu)}_restoreMenuToOriginalParent(){this._menuOriginalParent&&this._menu&&this._menu.parentNode!==this._menuOriginalParent&&this._menuOriginalParent.append(this._menu)}async _applyFloatingPosition(e,t,n,i,s="absolute"){if(!t.isConnected)return null;const{x:o,y:a,placement:l}=await computePosition(e,t,{placement:n,middleware:i,strategy:s});return t.isConnected?(Object.assign(t.style,{position:s,left:`${o}px`,top:`${a}px`,margin:"0"}),Manipulator.setDataAttribute(t,"placement",l),l):null}_setupSubmenuListeners(){"hover"!==this._config.submenuTrigger&&"both"!==this._config.submenuTrigger||(EventHandler.on(this._menu,"mouseenter",".submenu > .menu-item",e=>{this._onSubmenuTriggerEnter(e)}),EventHandler.on(this._menu,"mouseleave",".submenu",e=>{this._onSubmenuLeave(e)}),EventHandler.on(this._menu,"mousemove",e=>{this._trackMousePosition(e)})),"click"!==this._config.submenuTrigger&&"both"!==this._config.submenuTrigger||EventHandler.on(this._menu,"click",".submenu > .menu-item",e=>{this._onSubmenuTriggerClick(e)})}_onSubmenuTriggerEnter(e){const t=e.target.closest(".submenu > .menu-item");if(!t)return;const n=t.closest(".submenu"),i=SelectorEngine.findOne(".menu",n);i&&(this._cancelSubmenuCloseTimeout(i),this._closeSiblingSubmenus(n),this._openSubmenu(t,i,n))}_onSubmenuLeave(e){const t=e.target.closest(".submenu"),n=SelectorEngine.findOne(".menu",t);n&&this._openSubmenus.has(n)&&(this._isMovingTowardSubmenu(e,n)||this._scheduleSubmenuClose(n,t))}_onSubmenuTriggerClick(e){const t=e.target.closest(".submenu > .menu-item");if(!t)return;e.preventDefault(),e.stopPropagation();const n=t.closest(".submenu"),i=SelectorEngine.findOne(".menu",n);i&&(this._openSubmenus.has(i)?this._closeSubmenu(i,n):(this._closeSiblingSubmenus(n),this._openSubmenu(t,i,n)))}_openSubmenu(e,t,n){if(this._openSubmenus.has(t))return;e.setAttribute("aria-expanded","true"),e.setAttribute("aria-haspopup","true"),t.classList.add("show"),n.classList.add("show");const i=this._createSubmenuFloating(e,t,n);this._openSubmenus.set(t,i),EventHandler.on(t,"mouseenter",()=>{this._cancelSubmenuCloseTimeout(t)})}_closeSubmenu(e,t){if(!this._openSubmenus.has(e))return;const n=SelectorEngine.find(".submenu .menu.show",e);for(const e of n){const t=e.closest(".submenu");this._closeSubmenu(e,t)}const i=SelectorEngine.findOne(".submenu > .menu-item",t),s=this._openSubmenus.get(e);s&&s(),this._openSubmenus.delete(e),EventHandler.off(e,"mouseenter"),i&&i.setAttribute("aria-expanded","false"),e.classList.remove("show"),t.classList.remove("show"),e.style.position="",e.style.left="",e.style.top="",e.style.margin=""}_closeAllSubmenus(){for(const[e]of this._openSubmenus){const t=e.closest(".submenu");this._closeSubmenu(e,t)}}_closeSiblingSubmenus(e){const t=e.parentNode,n=SelectorEngine.find(".submenu > .menu.show",t);for(const t of n){const n=t.closest(".submenu");n!==e&&this._closeSubmenu(t,n)}}_createSubmenuFloating(e,t,n){const i=n,s=resolveLogicalPlacement("end-start"),o=[offset({mainAxis:0,crossAxis:-4}),flip({fallbackPlacements:[resolveLogicalPlacement("start-start"),resolveLogicalPlacement("end-end"),resolveLogicalPlacement("start-end")]}),shift({padding:8})],a=()=>this._applyFloatingPosition(i,t,s,o);return a(),autoUpdate(i,t,a)}_scheduleSubmenuClose(e,t){this._cancelSubmenuCloseTimeout(e);const n=setTimeout(()=>{this._closeSubmenu(e,t),this._submenuCloseTimeouts.delete(e)},this._config.submenuDelay);this._submenuCloseTimeouts.set(e,n)}_cancelSubmenuCloseTimeout(e){const t=this._submenuCloseTimeouts.get(e);t&&(clearTimeout(t),this._submenuCloseTimeouts.delete(e))}_clearAllSubmenuTimeouts(){for(const e of this._submenuCloseTimeouts.values())clearTimeout(e);this._submenuCloseTimeouts.clear()}_trackMousePosition(e){this._hoverIntentData={x:e.clientX,y:e.clientY,timestamp:Date.now()}}_isMovingTowardSubmenu(e,t){if(!this._hoverIntentData)return!1;const n=t.getBoundingClientRect(),i={x:e.clientX,y:e.clientY},s={x:this._hoverIntentData.x,y:this._hoverIntentData.y},o=isRTL$1()?n.right:n.left,a={x:o,y:n.top},l={x:o,y:n.bottom};return this._pointInTriangle(i,s,a,l)}_pointInTriangle(e,t,n,i){const s=triangleSign(e,t,n),o=triangleSign(e,n,i),a=triangleSign(e,i,t);return!((s<0||o<0||a<0)&&(s>0||o>0||a>0))}_selectMenuItem({key:e,target:t}){const n=t.closest(".menu")||this._menu,i=SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS$1}`,n).filter(e=>isVisible(e));i.length&&getNextActiveElement(i,t,e===ARROW_DOWN_KEY$2,!i.includes(t)).focus()}_handleSubmenuKeydown(e){const{key:t,target:n}=e,i=isRTL$1(),s=i?ARROW_LEFT_KEY$1:ARROW_RIGHT_KEY$1,o=i?ARROW_RIGHT_KEY$1:ARROW_LEFT_KEY$1,a=n.closest(".submenu"),l=a&&n.matches(".submenu > .menu-item");if((t===ENTER_KEY$1||t===SPACE_KEY$1)&&l){e.preventDefault(),e.stopPropagation();const t=SelectorEngine.findOne(".menu",a);return t&&(this._closeSiblingSubmenus(a),this._openSubmenu(n,t,a),requestAnimationFrame(()=>{const e=SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS$1,t);e&&e.focus()})),!0}if(t===s&&l){e.preventDefault(),e.stopPropagation();const t=SelectorEngine.findOne(".menu",a);return t&&(this._closeSiblingSubmenus(a),this._openSubmenu(n,t,a),requestAnimationFrame(()=>{const e=SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS$1,t);e&&e.focus()})),!0}if(t===o){const t=n.closest(".menu"),i=t?.closest(".submenu");if(i){e.preventDefault(),e.stopPropagation();const n=SelectorEngine.findOne(".submenu > .menu-item",i);return this._closeSubmenu(t,i),n&&n.focus(),!0}}if(t===HOME_KEY$2||t===END_KEY$2){e.preventDefault(),e.stopPropagation();const i=n.closest(".menu"),s=SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS$1}`,i).filter(e=>isVisible(e));return s.length&&(t===HOME_KEY$2?s[0]:s[s.length-1]).focus(),!0}return!1}static clearMenus(e){if(2!==e.button&&("keyup"!==e.type||"Tab"===e.key))for(const t of Menu._openInstances){if(!1===t._config.autoClose)continue;const n=e.composedPath(),i=n.includes(t._menu);if(n.includes(t._element)||"inside"===t._config.autoClose&&!i||"outside"===t._config.autoClose&&i)continue;if(t._menu.contains(e.target)&&("keyup"===e.type&&"Tab"===e.key||/input|select|option|textarea|form/i.test(e.target.tagName)))continue;const s={relatedTarget:t._element};"click"===e.type&&(s.clickEvent=e),t._completeHide(s)}}static dataApiKeydownHandler(e){const t=/input|textarea/i.test(e.target.tagName),n="Escape"===e.key,i=[ARROW_UP_KEY$2,ARROW_DOWN_KEY$2].includes(e.key),s=[ARROW_LEFT_KEY$1,ARROW_RIGHT_KEY$1].includes(e.key),o=[HOME_KEY$2,END_KEY$2].includes(e.key),a=[ENTER_KEY$1,SPACE_KEY$1].includes(e.key),l=e.target.matches(".submenu > .menu-item");if(!(i||n||s||o||a&&l))return;if(t&&!n)return;const r=this.matches(SELECTOR_DATA_TOGGLE$8)?this:SelectorEngine.prev(this,SELECTOR_DATA_TOGGLE$8)[0]||SelectorEngine.next(this,SELECTOR_DATA_TOGGLE$8)[0]||SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$8,e.delegateTarget.parentNode);if(!r)return;const c=Menu.getOrCreateInstance(r);if(!(s||o||a&&l)||!c._handleSubmenuKeydown(e)){if(i)return e.preventDefault(),e.stopPropagation(),c.show(),void c._selectMenuItem(e);if(n&&c._isShown()){e.preventDefault(),e.stopPropagation();const t=e.target.closest(".menu"),n=t?.closest(".submenu");if(n&&c._openSubmenus.size>0){const e=SelectorEngine.findOne(".submenu > .menu-item",n);return c._closeSubmenu(t,n),void(e&&e.focus())}c.hide(),r.focus()}}}}EventHandler.on(document,EVENT_KEYDOWN_DATA_API,SELECTOR_DATA_TOGGLE$8,Menu.dataApiKeydownHandler),EventHandler.on(document,EVENT_KEYDOWN_DATA_API,".menu",Menu.dataApiKeydownHandler),EventHandler.on(document,EVENT_CLICK_DATA_API$5,Menu.clearMenus),EventHandler.on(document,EVENT_KEYUP_DATA_API,Menu.clearMenus),EventHandler.on(document,EVENT_CLICK_DATA_API$5,SELECTOR_DATA_TOGGLE$8,function(e){e.preventDefault(),Menu.getOrCreateInstance(this).toggle()});const NAME$f="combobox",DATA_KEY$b="bs.combobox",EVENT_KEY$b=`.${DATA_KEY$b}`,DATA_API_KEY$6=".data-api",ESCAPE_KEY$1="Escape",TAB_KEY$1="Tab",ARROW_UP_KEY$1="ArrowUp",ARROW_DOWN_KEY$1="ArrowDown",HOME_KEY$1="Home",END_KEY$1="End",ENTER_KEY="Enter",SPACE_KEY=" ",EVENT_CHANGE$1=`change${EVENT_KEY$b}`,EVENT_SHOW$6=`show${EVENT_KEY$b}`,EVENT_SHOWN$6=`shown${EVENT_KEY$b}`,EVENT_HIDE$6=`hide${EVENT_KEY$b}`,EVENT_HIDDEN$6=`hidden${EVENT_KEY$b}`,EVENT_CLICK_DATA_API$4=`click${EVENT_KEY$b}.data-api`,CLASS_NAME_SHOW$5="show",CLASS_NAME_SELECTED="selected",CLASS_NAME_PLACEHOLDER="combobox-placeholder",SELECTOR_DATA_TOGGLE$7='[data-bs-toggle="combobox"]',SELECTOR_MENU$1=".menu",SELECTOR_MENU_ITEM=".menu-item[data-bs-value]",SELECTOR_VISIBLE_ITEMS=".menu-item[data-bs-value]:not(.disabled):not(:disabled)",SELECTOR_VALUE=".combobox-value",SELECTOR_SEARCH_INPUT=".combobox-search-input",SELECTOR_NO_RESULTS=".combobox-no-results",Default$e={boundary:"clippingParents",multiple:!1,name:null,offset:[0,2],placeholder:"",placement:"bottom-start",search:!1,searchNormalize:!1},DefaultType$e={boundary:"(string|element)",multiple:"boolean",name:"(string|null)",offset:"(array|string|function)",placeholder:"string",placement:"string",search:"boolean",searchNormalize:"boolean"};class Combobox extends BaseComponent{constructor(e,t){super(e,t),this._toggle=this._element,this._menu=SelectorEngine.next(this._toggle,".menu")[0],this._valueDisplay=SelectorEngine.findOne(SELECTOR_VALUE,this._toggle),this._searchInput=SelectorEngine.findOne(SELECTOR_SEARCH_INPUT,this._menu),this._noResults=SelectorEngine.findOne(SELECTOR_NO_RESULTS,this._menu),this._hiddenInput=null,this._menuInstance=null,this._createHiddenInput(),this._createMenuInstance(),this._syncInitialSelection(),this._addEventListeners()}static get Default(){return Default$e}static get DefaultType(){return DefaultType$e}static get NAME(){return NAME$f}toggle(){return this._isShown()?this.hide():this.show()}show(){isDisabled(this._toggle)||this._isShown()||EventHandler.trigger(this._toggle,EVENT_SHOW$6).defaultPrevented||(this._menuInstance.show(),this._searchInput&&(this._searchInput.value="",this._filterItems(""),requestAnimationFrame(()=>this._searchInput.focus())),EventHandler.trigger(this._toggle,EVENT_SHOWN$6))}hide(){this._isShown()&&(EventHandler.trigger(this._toggle,EVENT_HIDE$6).defaultPrevented||(this._menuInstance.hide(),EventHandler.trigger(this._toggle,EVENT_HIDDEN$6)))}dispose(){this._menuInstance&&(this._menuInstance.dispose(),this._menuInstance=null),this._hiddenInput&&(this._hiddenInput.remove(),this._hiddenInput=null),EventHandler.off(this._menu,EVENT_KEY$b),EventHandler.off(this._toggle,EVENT_KEY$b),super.dispose()}_isShown(){return this._menu.classList.contains("show")}_createHiddenInput(){const{name:e}=this._config;e&&(this._hiddenInput=document.createElement("input"),this._hiddenInput.type="hidden",this._hiddenInput.name=e,this._hiddenInput.value="",this._toggle.parentNode.insertBefore(this._hiddenInput,this._toggle))}_createMenuInstance(){this._menuInstance=new Menu(this._toggle,{menu:this._menu,autoClose:!this._config.multiple||"outside",boundary:this._config.boundary,offset:this._config.offset,placement:this._config.placement})}_syncInitialSelection(){this._getSelectedItems().length>0?(this._updateToggleText(),this._updateHiddenInput()):this._showPlaceholder()}_addEventListeners(){EventHandler.on(this._menu,"click",SELECTOR_MENU_ITEM,e=>{const t=e.target.closest(SELECTOR_MENU_ITEM);t&&!isDisabled(t)&&(e.preventDefault(),e.stopPropagation(),this._selectItem(t))}),EventHandler.on(this._toggle,"keydown",e=>{this._handleToggleKeydown(e)}),EventHandler.on(this._menu,"keydown",e=>{this._handleMenuKeydown(e)}),this._searchInput&&(EventHandler.on(this._searchInput,"input",()=>{this._filterItems(this._searchInput.value)}),EventHandler.on(this._searchInput,"keydown",e=>{if("ArrowDown"===e.key){e.preventDefault();const t=this._getVisibleItems();t.length>0&&t[0].focus()}"Escape"===e.key&&(this.hide(),this._toggle.focus())}))}_selectItem(e){if(this._config.multiple)e.classList.toggle("selected"),e.setAttribute("aria-selected",e.classList.contains("selected"));else{const t=SelectorEngine.find(".selected",this._menu);for(const e of t)e.classList.remove("selected"),e.setAttribute("aria-selected","false");e.classList.add("selected"),e.setAttribute("aria-selected","true")}this._updateToggleText(),this._updateHiddenInput();const t=this._config.multiple?this._getSelectedItems().map(e=>e.dataset.bsValue):e.dataset.bsValue;EventHandler.trigger(this._toggle,EVENT_CHANGE$1,{value:t,item:e}),this._config.multiple||(this.hide(),this._toggle.focus())}_updateToggleText(){const e=this._getSelectedItems();if(0!==e.length)if(this._valueDisplay.classList.remove("combobox-placeholder"),this._config.multiple&&e.length>1)this._valueDisplay.textContent=`${e.length} selected`;else{const t=e[0],n=SelectorEngine.findOne(".menu-item-content > span:first-child",t);this._valueDisplay.textContent=n?n.textContent:t.textContent.trim()}else this._showPlaceholder()}_showPlaceholder(){const{placeholder:e}=this._config;e&&(this._valueDisplay.textContent=e,this._valueDisplay.classList.add("combobox-placeholder"))}_updateHiddenInput(){if(!this._hiddenInput)return;const e=this._getSelectedItems().map(e=>e.dataset.bsValue);this._hiddenInput.value=this._config.multiple?e.join(","):e[0]||""}_getSelectedItems(){return SelectorEngine.find(".selected",this._menu)}_getVisibleItems(){return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS,this._menu).filter(e=>isVisible(e))}_filterItems(e){const t=this._normalizeText(e.toLowerCase().trim()),n=SelectorEngine.find(SELECTOR_MENU_ITEM,this._menu);let i=0;for(const e of n){const n=this._normalizeText(e.textContent.toLowerCase().trim()),s=!t||n.includes(t);e.style.display=s?"":"none",s&&i++}this._noResults&&this._noResults.classList.toggle("d-none",i>0)}_normalizeText(e){return this._config.searchNormalize?e.normalize("NFD").replace(/[\u0300-\u036F]/g,""):e}_handleToggleKeydown(e){const{key:t}=e;if("ArrowDown"===t||"ArrowUp"===t){e.preventDefault(),this._isShown()||this.show();const n=this._getVisibleItems();return void(n.length>0&&("ArrowDown"===t?n[0]:n[n.length-1]).focus())}"Enter"!==t&&" "!==t||this._isShown()||(e.preventDefault(),this.show())}_handleMenuKeydown(e){const{key:t,target:n}=e;if("Escape"===t)return e.preventDefault(),e.stopPropagation(),this.hide(),void this._toggle.focus();if("Tab"===t)return void this.hide();const i=n.matches("input");if("ArrowDown"===t||"ArrowUp"===t){e.preventDefault();const i=this._getVisibleItems();return void(i.length>0&&getNextActiveElement(i,n,"ArrowDown"===t,!i.includes(n)).focus())}if("Home"===t||"End"===t){e.preventDefault();const n=this._getVisibleItems();return void(n.length>0&&("Home"===t?n[0]:n[n.length-1]).focus())}if(("Enter"===t||" "===t)&&!i){e.preventDefault();const t=n.closest(SELECTOR_MENU_ITEM);t&&!isDisabled(t)&&this._selectItem(t)}}static jQueryInterface(e){return this.each(function(){const t=Combobox.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}})}}EventHandler.on(document,EVENT_CLICK_DATA_API$4,SELECTOR_DATA_TOGGLE$7,function(e){e.preventDefault(),Combobox.getOrCreateInstance(this).toggle()}),EventHandler.on(document,"DOMContentLoaded",()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_TOGGLE$7))Combobox.getOrCreateInstance(e)});
 /*! name: vanilla-calendar-pro v3.1.0 | url: https://github.com/uvarov-frontend/vanilla-calendar-pro */
-var __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__spreadValues=(e,t)=>{for(var n in t||(t={}))__hasOwnProp.call(t,n)&&__defNormalProp(e,n,t[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(t))__propIsEnum.call(t,n)&&__defNormalProp(e,n,t[n]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__publicField=(e,t,n)=>(__defNormalProp(e,"symbol"!=typeof t?t+"":t,n),n);const errorMessages={notFoundSelector:e=>`${e} is not found, check the first argument passed to new Calendar.`,notInit:'The calendar has not been initialized, please initialize it using the "init()" method first.',notLocale:"You specified an incorrect language label or did not specify the required number of values ​​for «locale.weekdays» or «locale.months».",incorrectTime:"The value of the time property can be: false, 12 or 24.",incorrectMonthsCount:"For the «multiple» calendar type, the «displayMonthsCount» parameter can have a value from 2 to 12, and for all others it cannot be greater than 1."},setContext=(e,t,n)=>{e.context[t]=n},destroy=e=>{var t,n,i,s,o;if(!e.context.isInit)throw new Error(errorMessages.notInit);e.inputMode?(null==(t=e.context.mainElement.parentElement)||t.removeChild(e.context.mainElement),null==(i=null==(n=e.context.inputElement)?void 0:n.replaceWith)||i.call(n,e.context.originalElement),setContext(e,"inputElement",void 0)):null==(o=(s=e.context.mainElement).replaceWith)||o.call(s,e.context.originalElement),setContext(e,"mainElement",e.context.originalElement),e.onDestroy&&e.onDestroy(e)},skipOpenOnFocus=new WeakSet,shouldSkipOpenOnFocus=e=>skipOpenOnFocus.has(e),setSkipOpenOnFocus=e=>{skipOpenOnFocus.add(e)},clearSkipOpenOnFocus=e=>{skipOpenOnFocus.delete(e)},PREV_TABINDEX_ATTR="data-vc-prev-tabindex",isFocusable=e=>e.tabIndex>=0&&!e.hasAttribute("disabled")&&"true"!==e.getAttribute("aria-disabled"),storePrevTabIndex=e=>{if(e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute("tabindex");e.setAttribute(PREV_TABINDEX_ATTR,null!=t?t:"")},restorePrevTabIndex=e=>{if(!e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(PREV_TABINDEX_ATTR);""===t||null===t?e.removeAttribute("tabindex"):e.setAttribute("tabindex",t),e.removeAttribute(PREV_TABINDEX_ATTR)},disableTabbing=e=>{isFocusable(e)&&(storePrevTabIndex(e),e.tabIndex=-1);const t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>isFocusable(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;t.nextNode();){const e=t.currentNode;storePrevTabIndex(e),e.tabIndex=-1}},restoreTabbing=e=>{restorePrevTabIndex(e),e.querySelectorAll(`[${PREV_TABINDEX_ATTR}]`).forEach(restorePrevTabIndex)},hide=e=>{e.context.isShowInInputMode&&e.context.currentType&&(e.context.mainElement.dataset.vcCalendarHidden="",setContext(e,"isShowInInputMode",!1),e.inputMode&&disableTabbing(e.context.mainElement),e.context.cleanupHandlers[0]&&(e.context.cleanupHandlers.forEach(e=>e()),setContext(e,"cleanupHandlers",[])),e.inputMode&&e.context.inputElement&&e.context.mainElement.contains(document.activeElement)&&(("function"==typeof e.openOnFocus||!0===e.openOnFocus)&&setSkipOpenOnFocus(e),e.context.inputElement.focus()),e.onHide&&e.onHide(e))};function getOffset(e){if(!e||!e.getBoundingClientRect)return{top:0,bottom:0,left:0,right:0};const t=e.getBoundingClientRect(),n=document.documentElement;return{bottom:t.bottom,right:t.right,top:t.top+window.scrollY-n.clientTop,left:t.left+window.scrollX-n.clientLeft}}function getViewportDimensions(){return{vw:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),vh:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}}function getWindowScrollPosition(){return{left:window.scrollX||document.documentElement.scrollLeft||0,top:window.scrollY||document.documentElement.scrollTop||0}}function calculateAvailableSpace(e){const{top:t,left:n}=getWindowScrollPosition(),{top:i,left:s}=getOffset(e),{vh:o,vw:a}=getViewportDimensions(),l=i-t,r=s-n;return{top:l,bottom:o-(l+e.clientHeight),left:r,right:a-(r+e.clientWidth)}}function getAvailablePosition(e,t,n=5){const i={top:!0,bottom:!0,left:!0,right:!0},s=[];if(!t||!e)return{canShow:i,parentPositions:s};const{bottom:o,top:a}=calculateAvailableSpace(e),{top:l,left:r}=getOffset(e),{height:c,width:d}=t.getBoundingClientRect(),{vh:u,vw:h}=getViewportDimensions(),m=h/2,g=u/2;return[{condition:l<g,position:"top"},{condition:l>g,position:"bottom"},{condition:r<m,position:"left"},{condition:r>m,position:"right"}].forEach(({condition:e,position:t})=>{e&&s.push(t)}),Object.assign(i,{top:c<=a-n,bottom:c<=o-n,left:d<=r,right:d<=h-r}),{canShow:i,parentPositions:s}}const handleDay=(e,t,n,i)=>{var s;const o=i.querySelector(`[data-vc-date="${t}"]`),a=null==o?void 0:o.querySelector("[data-vc-date-btn]");if(!o||!a)return;if((null==n?void 0:n.modifier)&&a.classList.add(...n.modifier.trim().split(" ")),!(null==n?void 0:n.html))return;const l=document.createElement("div");l.className=e.styles.datePopup,l.dataset.vcDatePopup="",l.innerHTML=e.sanitizerHTML(n.html),a.ariaExpanded="true",a.ariaLabel=`${a.ariaLabel}, ${null==(s=null==l?void 0:l.textContent)?void 0:s.replace(/^\s+|\s+(?=\s)|\s+$/g,"").replace(/&nbsp;/g," ")}`,o.appendChild(l),requestAnimationFrame(()=>{if(!l)return;const{canShow:e}=getAvailablePosition(o,l),t=e.bottom?o.offsetHeight:-l.offsetHeight,n=e.left&&!e.right?o.offsetWidth-l.offsetWidth/2:!e.left&&e.right?l.offsetWidth/2:0;Object.assign(l.style,{left:`${n}px`,top:`${t}px`})})},createDatePopup=(e,t)=>{var n;e.popups&&(null==(n=Object.entries(e.popups))||n.forEach(([n,i])=>handleDay(e,n,i,t)))},getDate=e=>new Date(`${e}T00:00:00`),getDateString=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`,parseDates=e=>e.reduce((e,t)=>{if(t instanceof Date||"number"==typeof t){const n=t instanceof Date?t:new Date(t);e.push(n.toISOString().substring(0,10))}else t.match(/^(\d{4}-\d{2}-\d{2})$/g)?e.push(t):t.replace(/(\d{4}-\d{2}-\d{2}).*?(\d{4}-\d{2}-\d{2})/g,(t,n,i)=>{const s=getDate(n),o=getDate(i),a=new Date(s.getTime());for(;a<=o;a.setDate(a.getDate()+1))e.push(getDateString(a));return t});return e},[]),updateAttribute=(e,t,n,i="")=>{t?e.setAttribute(n,i):e.getAttribute(n)===i&&e.removeAttribute(n)},setDateModifier=(e,t,n,i,s,o,a)=>{var l,r,c,d;const u=getDate(e.context.displayDateMin)>getDate(o)||getDate(e.context.displayDateMax)<getDate(o)||(null==(l=e.context.disableDates)?void 0:l.includes(o))||!e.selectionMonthsMode&&"current"!==a||!e.selectionYearsMode&&getDate(o).getFullYear()!==t;updateAttribute(n,u,"data-vc-date-disabled"),i&&updateAttribute(i,u,"aria-disabled","true"),i&&updateAttribute(i,u,"tabindex","-1"),updateAttribute(n,!e.disableToday&&e.context.dateToday===o,"data-vc-date-today"),updateAttribute(n,!e.disableToday&&e.context.dateToday===o,"aria-current","date"),updateAttribute(n,null==(r=e.selectedWeekends)?void 0:r.includes(s),"data-vc-date-weekend");const h=(null==(c=e.selectedHolidays)?void 0:c[0])?parseDates(e.selectedHolidays):[];if(updateAttribute(n,h.includes(o),"data-vc-date-holiday"),(null==(d=e.context.selectedDates)?void 0:d.includes(o))?(n.setAttribute("data-vc-date-selected",""),i&&i.setAttribute("aria-selected","true"),e.context.selectedDates.length>1&&"multiple-ranged"===e.selectionDatesMode&&(e.context.selectedDates[0]===o&&e.context.selectedDates[e.context.selectedDates.length-1]===o?n.setAttribute("data-vc-date-selected","first-and-last"):e.context.selectedDates[0]===o?n.setAttribute("data-vc-date-selected","first"):e.context.selectedDates[e.context.selectedDates.length-1]===o&&n.setAttribute("data-vc-date-selected","last"),e.context.selectedDates[0]!==o&&e.context.selectedDates[e.context.selectedDates.length-1]!==o&&n.setAttribute("data-vc-date-selected","middle"))):n.hasAttribute("data-vc-date-selected")&&(n.removeAttribute("data-vc-date-selected"),i&&i.removeAttribute("aria-selected")),!e.context.disableDates.includes(o)&&e.enableEdgeDatesOnly&&e.context.selectedDates.length>1&&"multiple-ranged"===e.selectionDatesMode){const t=getDate(e.context.selectedDates[0]),i=getDate(e.context.selectedDates[e.context.selectedDates.length-1]),s=getDate(o);updateAttribute(n,s>t&&s<i,"data-vc-date-selected","middle")}},getLocaleString=(e,t,n)=>new Date(`${e}T00:00:00.000Z`).toLocaleString(t,n),getWeekNumber=(e,t)=>{const n=getDate(e),i=(n.getDay()-t+7)%7;n.setDate(n.getDate()+4-i);const s=new Date(n.getFullYear(),0,1),o=Math.ceil(((+n-+s)/864e5+1)/7);return{year:n.getFullYear(),week:o}},addWeekNumberForDate=(e,t,n)=>{const i=getWeekNumber(n,e.firstWeekday);i&&(t.dataset.vcDateWeekNumber=String(i.week))},setDaysAsDisabled=(e,t,n)=>{var i,s,o,a,l;const r=null==(i=e.disableWeekdays)?void 0:i.includes(n),c=e.disableAllDates&&!!(null==(s=e.context.enableDates)?void 0:s[0]);!r&&!c||(null==(o=e.context.enableDates)?void 0:o.includes(t))||(null==(a=e.context.disableDates)?void 0:a.includes(t))||(e.context.disableDates.push(t),null==(l=e.context.disableDates)||l.sort((e,t)=>+new Date(e)-+new Date(t)))},createDate=(e,t,n,i,s,o)=>{const a=getDate(s).getDay(),l="string"==typeof e.locale&&e.locale.length?e.locale:"en",r=document.createElement("div");let c;r.className=e.styles.date,r.dataset.vcDate=s,r.dataset.vcDateMonth=o,r.dataset.vcDateWeekDay=String(a),r.role="gridcell",("current"===o||e.displayDatesOutside)&&(c=document.createElement("button"),c.className=e.styles.dateBtn,c.type="button",c.ariaLabel=getLocaleString(s,l,{dateStyle:"long",timeZone:"UTC"}),c.dataset.vcDateBtn="",c.innerText=String(i),r.appendChild(c)),e.enableWeekNumbers&&addWeekNumberForDate(e,r,s),setDaysAsDisabled(e,s,a),setDateModifier(e,t,r,c,a,s,o),n.addDate(r),e.onCreateDateEls&&e.onCreateDateEls(e,r)},createDatesFromCurrentMonth=(e,t,n,i,s)=>{for(let o=1;o<=n;o++){const n=new Date(i,s,o);createDate(e,i,t,o,getDateString(n),"current")}},createDatesFromNextMonth=(e,t,n,i,s)=>{const o=s+1===12?i+1:i,a=s+1===12?"01":s+2<10?`0${s+2}`:s+2;for(let s=1;s<=n;s++){const n=s<10?`0${s}`:String(s);createDate(e,i,t,s,`${o}-${a}-${n}`,"next")}},createDatesFromPrevMonth=(e,t,n,i,s)=>{let o=new Date(n,i,0).getDate()-(s-1);const a=0===i?n-1:n,l=0===i?12:i<10?`0${i}`:i;for(let i=s;i>0;i--,o++)createDate(e,n,t,o,`${a}-${l}-${o}`,"prev")},createWeekNumbers=(e,t,n,i,s)=>{if(!e.enableWeekNumbers)return;i.textContent="";const o=document.createElement("b");o.className=e.styles.weekNumbersTitle,o.innerText="#",o.dataset.vcWeekNumbers="title",i.appendChild(o);const a=document.createElement("div");a.className=e.styles.weekNumbersContent,a.dataset.vcWeekNumbers="content",i.appendChild(a);const l=document.createElement("button");l.type="button",l.className=e.styles.weekNumber;const r=s.querySelectorAll("[data-vc-date]"),c=Math.ceil((t+n)/7);for(let t=0;t<c;t++){const n=r[0===t?6:7*t].dataset.vcDate,i=getWeekNumber(n,e.firstWeekday);if(!i)return;const s=l.cloneNode(!0);s.innerText=String(i.week),s.dataset.vcWeekNumber=String(i.week),s.dataset.vcWeekYear=String(i.year),s.role="rowheader",s.ariaLabel=`${i.week}`,a.appendChild(s)}},createDates=e=>{const t=new Date(e.context.selectedYear,e.context.selectedMonth,1),n=e.context.mainElement.querySelectorAll('[data-vc="dates"]'),i=e.context.mainElement.querySelectorAll('[data-vc-week="numbers"]');n.forEach((n,s)=>{e.selectionDatesMode||(n.dataset.vcDatesDisabled=""),n.textContent="";const o=new Date(t);o.setMonth(o.getMonth()+s);const a=o.getMonth(),l=o.getFullYear(),r=(new Date(l,a,1).getDay()-e.firstWeekday+7)%7,c=new Date(l,a+1,0).getDate(),d=r+c,u=Math.ceil(d/7),h=7*u-d,m=[];for(let t=0;t<u;t++){const t=document.createElement("div");t.className=e.styles.datesRow,t.setAttribute("data-vc-dates","row"),t.setAttribute("role","row"),m.push(t)}let g=0,_=0;const E={addDate:e=>{m[g].appendChild(e),_++,_>=7&&(g++,_=0)}};createDatesFromPrevMonth(e,E,l,a,r),createDatesFromCurrentMonth(e,E,c,l,a),createDatesFromNextMonth(e,E,h,l,a);for(const e of m)n.appendChild(e);createDatePopup(e,n),createWeekNumbers(e,r,c,i[s],n)})},layoutDefault=e=>`\n  <div class="${e.styles.header}" data-vc="header" role="toolbar" aria-label="${e.labels.navigation}">\n    <#ArrowPrev [month] />\n    <div class="${e.styles.headerContent}" data-vc-header="content">\n      <#Month />\n      <#Year />\n    </div>\n    <#ArrowNext [month] />\n  </div>\n  <div class="${e.styles.wrapper}" data-vc="wrapper">\n    <#WeekNumbers />\n    <div class="${e.styles.content}" data-vc="content" role="grid">\n      <#Week />\n      <#Dates />\n      <#DateRangeTooltip />\n    </div>\n  </div>\n  <#ControlTime />\n`,layoutMonths=e=>`\n  <div class="${e.styles.header}" data-vc="header" role="toolbar" aria-label="${e.labels.navigation}">\n    <div class="${e.styles.headerContent}" data-vc-header="content">\n      <#Month />\n      <#Year />\n    </div>\n  </div>\n  <div class="${e.styles.wrapper}" data-vc="wrapper">\n    <div class="${e.styles.content}" data-vc="content">\n      <#Months />\n    </div>\n  </div>\n`,layoutMultiple=e=>`\n  <div class="${e.styles.controls}" data-vc="controls" role="toolbar" aria-label="${e.labels.navigation}">\n    <#ArrowPrev [month] />\n    <#ArrowNext [month] />\n  </div>\n  <div class="${e.styles.grid}" data-vc="grid">\n    <#Multiple>\n      <div class="${e.styles.column}" data-vc="column" role="region">\n        <div class="${e.styles.header}" data-vc="header">\n          <div class="${e.styles.headerContent}" data-vc-header="content">\n            <#Month />\n            <#Year />\n          </div>\n        </div>\n        <div class="${e.styles.wrapper}" data-vc="wrapper">\n          <#WeekNumbers />\n          <div class="${e.styles.content}" data-vc="content" role="grid">\n            <#Week />\n            <#Dates />\n          </div>\n        </div>\n      </div>\n    <#/Multiple>\n    <#DateRangeTooltip />\n  </div>\n  <#ControlTime />\n`,layoutYears=e=>`\n  <div class="${e.styles.header}" data-vc="header" role="toolbar" aria-label="${e.labels.navigation}">\n    <#ArrowPrev [year] />\n    <div class="${e.styles.headerContent}" data-vc-header="content">\n      <#Month />\n      <#Year />\n    </div>\n    <#ArrowNext [year] />\n  </div>\n  <div class="${e.styles.wrapper}" data-vc="wrapper">\n    <div class="${e.styles.content}" data-vc="content">\n      <#Years />\n    </div>\n  </div>\n`,ArrowNext=(e,t)=>`<button type="button" class="${e.styles.arrowNext}" data-vc-arrow="next" aria-label="${e.labels.arrowNext[t]}"></button>`,ArrowPrev=(e,t)=>`<button type="button" class="${e.styles.arrowPrev}" data-vc-arrow="prev" aria-label="${e.labels.arrowPrev[t]}"></button>`,ControlTime=e=>e.selectionTimeMode?`<div class="${e.styles.time}" data-vc="time" role="group" aria-label="${e.labels.selectingTime}"></div>`:"",DateRangeTooltip=e=>e.onCreateDateRangeTooltip?`<div class="${e.styles.dateRangeTooltip}" data-vc-date-range-tooltip="hidden"></div>`:"",Dates=e=>`<div class="${e.styles.dates}" data-vc="dates" aria-live="assertive" aria-label="${e.labels.dates}" ${"multiple"===e.type?"aria-multiselectable":""}></div>`,Month=e=>`<button type="button" class="${e.styles.month}" data-vc="month"></button>`,Months=e=>`<div class="${e.styles.months}" data-vc="months" role="grid" aria-live="assertive" aria-label="${e.labels.months}"></div>`,Week=e=>`<div class="${e.styles.week}" data-vc="week" role="row" aria-label="${e.labels.week}"></div>`,WeekNumbers=e=>e.enableWeekNumbers?`<div class="${e.styles.weekNumbers}" data-vc-week="numbers" role="row" aria-label="${e.labels.weekNumber}"></div>`:"",Year=e=>`<button type="button" class="${e.styles.year}" data-vc="year"></button>`,Years=e=>`<div class="${e.styles.years}" data-vc="years" role="grid" aria-live="assertive" aria-label="${e.labels.years}"></div>`,components={ArrowNext:ArrowNext,ArrowPrev:ArrowPrev,ControlTime:ControlTime,Dates:Dates,DateRangeTooltip:DateRangeTooltip,Month:Month,Months:Months,Week:Week,WeekNumbers:WeekNumbers,Year:Year,Years:Years},getComponent=e=>components[e],parseLayout=(e,t)=>t.replace(/[\n\t]/g,"").replace(/<#(?!\/?Multiple)(.*?)>/g,(t,n)=>{const i=(n.match(/\[(.*?)\]/)||[])[1],s=n.replace(/[/\s\n\t]|\[(.*?)\]/g,""),o=getComponent(s),a=o?o(e,null!=i?i:null):"";return e.sanitizerHTML(a)}).replace(/[\n\t]/g,""),parseMultipleLayout=(e,t)=>t.replace(new RegExp("<#Multiple>(.*?)<#\\/Multiple>","gs"),(t,n)=>{const i=Array(e.context.displayMonthsCount).fill(n).join("");return e.sanitizerHTML(i)}).replace(/[\n\t]/g,""),createLayouts=(e,t)=>{const n={default:layoutDefault,month:layoutMonths,year:layoutYears,multiple:layoutMultiple};if(Object.keys(n).forEach(t=>{const i=t;e.layouts[i].length||(e.layouts[i]=n[i](e))}),e.context.mainElement.className=e.styles.calendar,e.context.mainElement.dataset.vc="calendar",e.context.mainElement.dataset.vcType=e.context.currentType,e.context.mainElement.role="application",e.context.mainElement.tabIndex=0,e.context.mainElement.ariaLabel=e.labels.application,"multiple"!==e.context.currentType){if("multiple"===e.type&&t){const n=e.context.mainElement.querySelector('[data-vc="controls"]'),i=e.context.mainElement.querySelector('[data-vc="grid"]'),s=t.closest('[data-vc="column"]');return n&&n.remove(),i&&(i.dataset.vcGrid="hidden"),s&&(s.dataset.vcColumn=e.context.currentType),void(s&&(s.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))))}e.context.mainElement.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))}else e.context.mainElement.innerHTML=e.sanitizerHTML(parseMultipleLayout(e,parseLayout(e,e.layouts[e.context.currentType])))},setVisibilityArrows=(e,t,n,i)=>{e.style.visibility=n?"hidden":"",t.style.visibility=i?"hidden":""},handleDefaultType=(e,t,n)=>{const i=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1))),s=new Date(i.getTime()),o=new Date(i.getTime());s.setMonth(s.getMonth()-e.monthsToSwitch),o.setMonth(o.getMonth()+e.monthsToSwitch);const a=getDate(e.context.dateMin),l=getDate(e.context.dateMax);e.selectionYearsMode||(a.setFullYear(i.getFullYear()),l.setFullYear(i.getFullYear()));const r=!e.selectionMonthsMode||s.getFullYear()<a.getFullYear()||s.getFullYear()===a.getFullYear()&&s.getMonth()<a.getMonth(),c=!e.selectionMonthsMode||o.getFullYear()>l.getFullYear()||o.getFullYear()===l.getFullYear()&&o.getMonth()>l.getMonth()-(e.context.displayMonthsCount-1);setVisibilityArrows(t,n,r,c)},handleYearType=(e,t,n)=>{const i=getDate(e.context.dateMin),s=getDate(e.context.dateMax),o=!!(i.getFullYear()&&e.context.displayYear-7<=i.getFullYear()),a=!!(s.getFullYear()&&e.context.displayYear+7>=s.getFullYear());setVisibilityArrows(t,n,o,a)},visibilityArrows=e=>{if("month"===e.context.currentType)return;const t=e.context.mainElement.querySelector('[data-vc-arrow="prev"]'),n=e.context.mainElement.querySelector('[data-vc-arrow="next"]');t&&n&&{default:()=>handleDefaultType(e,t,n),year:()=>handleYearType(e,t,n)}["multiple"===e.context.currentType?"default":e.context.currentType]()},visibilityHandler=(e,t,n,i,s)=>{const o=new Date(i.setFullYear(e.context.selectedYear,e.context.selectedMonth+n)).getFullYear(),a=new Date(i.setMonth(e.context.selectedMonth+n)).getMonth(),l=e.context.locale.months.long[a],r=t.closest('[data-vc="column"]');r&&(r.ariaLabel=`${l} ${o}`);const c={month:{id:a,label:l},year:{id:o,label:o}};t.innerText=String(c[s].label),t.dataset[`vc${s.charAt(0).toUpperCase()+s.slice(1)}`]=String(c[s].id),t.ariaLabel=`${e.labels[s]} ${c[s].label}`;const d={month:e.selectionMonthsMode,year:e.selectionYearsMode},u=!1===d[s]||"only-arrows"===d[s];u&&(t.tabIndex=-1),t.disabled=u},visibilityTitle=e=>{const t=e.context.mainElement.querySelectorAll('[data-vc="month"]'),n=e.context.mainElement.querySelectorAll('[data-vc="year"]'),i=new Date(e.context.selectedYear,e.context.selectedMonth,1);[t,n].forEach(t=>null==t?void 0:t.forEach((t,n)=>visibilityHandler(e,t,n,i,t.dataset.vc)))},setYearModifier=(e,t,n,i,s)=>{var o;const a={month:{selected:"data-vc-months-month-selected",aria:"aria-selected",value:"vcMonthsMonth",selectedProperty:"selectedMonth"},year:{selected:"data-vc-years-year-selected",aria:"aria-selected",value:"vcYearsYear",selectedProperty:"selectedYear"}};s&&(null==(o=e.context.mainElement.querySelectorAll({month:"[data-vc-months-month]",year:"[data-vc-years-year]"}[n]))||o.forEach(e=>{e.removeAttribute(a[n].selected),e.removeAttribute(a[n].aria)}),setContext(e,a[n].selectedProperty,Number(t.dataset[a[n].value])),visibilityTitle(e),"year"===n&&visibilityArrows(e)),i&&(t.setAttribute(a[n].selected,""),t.setAttribute(a[n].aria,"true"))},getColumnID=(e,t)=>{var n;if("multiple"!==e.type)return{currentValue:null,columnID:0};const i=e.context.mainElement.querySelectorAll('[data-vc="column"]'),s=Array.from(i).findIndex(e=>e.closest(`[data-vc-column="${t}"]`));return{currentValue:s>=0?Number(null==(n=i[s].querySelector(`[data-vc="${t}"]`))?void 0:n.getAttribute(`data-vc-${t}`)):null,columnID:Math.max(s,0)}},createMonthEl=(e,t,n,i,s,o,a)=>{const l=t.cloneNode(!1);return l.className=e.styles.monthsMonth,l.innerText=i,l.ariaLabel=s,l.role="gridcell",l.dataset.vcMonthsMonth=`${a}`,o&&(l.ariaDisabled="true"),o&&(l.tabIndex=-1),l.disabled=o,setYearModifier(e,l,"month",n===a,!1),l},createMonths=(e,t)=>{var n,i;const s=null==(n=null==t?void 0:t.closest('[data-vc="header"]'))?void 0:n.querySelector('[data-vc="year"]'),o=s?Number(s.dataset.vcYear):e.context.selectedYear,a=(null==t?void 0:t.dataset.vcMonth)?Number(t.dataset.vcMonth):e.context.selectedMonth;setContext(e,"currentType","month"),createLayouts(e,t),visibilityTitle(e);const l=e.context.mainElement.querySelector('[data-vc="months"]');if(!e.selectionMonthsMode||!l)return;const r=e.monthsToSwitch>1?e.context.locale.months.long.map((t,n)=>a-e.monthsToSwitch*n).concat(e.context.locale.months.long.map((t,n)=>a+e.monthsToSwitch*n)).filter(e=>e>=0&&e<=12):Array.from(Array(12).keys()),c=document.createElement("button");c.type="button";for(let t=0;t<12;t++){const n=getDate(e.context.dateMin),i=getDate(e.context.dateMax),s=e.context.displayMonthsCount-1,{columnID:d}=getColumnID(e,"month"),u=o<=n.getFullYear()&&t<n.getMonth()+d||o>=i.getFullYear()&&t>i.getMonth()-s+d||o>i.getFullYear()||t!==a&&!r.includes(t),h=createMonthEl(e,c,a,e.context.locale.months.short[t],e.context.locale.months.long[t],u,t);l.appendChild(h),e.onCreateMonthEls&&e.onCreateMonthEls(e,h)}null==(i=e.context.mainElement.querySelector("[data-vc-months-month]:not([disabled])"))||i.focus()},TimeInput=(e,t,n,i,s)=>`\n  <label class="${t}" data-vc-time-input="${e}">\n    <input type="text" name="${e}" maxlength="2" aria-label="${n[`input${e.charAt(0).toUpperCase()+e.slice(1)}`]}" value="${i}" ${s?"disabled":""}>\n  </label>\n`,TimeRange=(e,t,n,i,s,o,a)=>`\n  <label class="${t}" data-vc-time-range="${e}">\n    <input type="range" name="${e}" min="${i}" max="${s}" step="${o}" aria-label="${n[`range${e.charAt(0).toUpperCase()+e.slice(1)}`]}" value="${a}">\n  </label>\n`,handleActions=(e,t,n,i)=>{({hour:()=>setContext(e,"selectedHours",n),minute:()=>setContext(e,"selectedMinutes",n)})[i](),setContext(e,"selectedTime",`${e.context.selectedHours}:${e.context.selectedMinutes}${e.context.selectedKeeping?` ${e.context.selectedKeeping}`:""}`),e.onChangeTime&&e.onChangeTime(e,t,!1),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t)},transformTime24=(e,t)=>{var n;return(null==(n={0:{AM:"00",PM:"12"},1:{AM:"01",PM:"13"},2:{AM:"02",PM:"14"},3:{AM:"03",PM:"15"},4:{AM:"04",PM:"16"},5:{AM:"05",PM:"17"},6:{AM:"06",PM:"18"},7:{AM:"07",PM:"19"},8:{AM:"08",PM:"20"},9:{AM:"09",PM:"21"},10:{AM:"10",PM:"22"},11:{AM:"11",PM:"23"},12:{AM:"00",PM:"12"}}[Number(e)])?void 0:n[t])||String(e)},handleClickKeepingTime=(e,t,n,i,s)=>{const o=o=>{const a="AM"===e.context.selectedKeeping?"PM":"AM",l=transformTime24(e.context.selectedHours,a);Number(l)<=i&&Number(l)>=s?(setContext(e,"selectedKeeping",a),n.value=l,handleActions(e,o,e.context.selectedHours,"hour"),t.ariaLabel=`${e.labels.btnKeeping} ${e.context.selectedKeeping}`,t.innerText=e.context.selectedKeeping):e.onChangeTime&&e.onChangeTime(e,o,!0)};return t.addEventListener("click",o),()=>{t.removeEventListener("click",o)}},transformTime12=e=>({0:"12",13:"01",14:"02",15:"03",16:"04",17:"05",18:"06",19:"07",20:"08",21:"09",22:"10",23:"11"}[Number(e)]||String(e)),updateInputAndRange=(e,t,n,i)=>{e.value=n,t.value=i},updateKeepingTime$1=(e,t,n)=>{t&&n&&(setContext(e,"selectedKeeping",n),t.innerText=n)},handleInput$1=(e,t,n,i,s,o,a)=>{const l={hour:(l,r,c)=>{e.selectionTimeMode&&{12:()=>{if(!e.context.selectedKeeping)return;const d=Number(transformTime24(r,e.context.selectedKeeping));if(!(d<=o&&d>=a))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,transformTime12(r),transformTime24(r,e.context.selectedKeeping)),l>12&&updateKeepingTime$1(e,i,"PM"),handleActions(e,c,transformTime12(r),s)},24:()=>{if(!(l<=o&&l>=a))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,r,r),handleActions(e,c,r,s)}}[e.selectionTimeMode]()},minute:(i,l,r)=>{if(!(i<=o&&i>=a))return n.value=e.context.selectedMinutes,void(e.onChangeTime&&e.onChangeTime(e,r,!0));n.value=l,t.value=l,handleActions(e,r,l,s)}},r=e=>{const t=Number(n.value),i=n.value.padStart(2,"0");l[s]&&l[s](t,i,e)};return n.addEventListener("change",r),()=>{n.removeEventListener("change",r)}},updateInputAndTime=(e,t,n,i,s)=>{t.value=s,handleActions(e,n,s,i)},updateKeepingTime=(e,t,n)=>{t&&(setContext(e,"selectedKeeping",n),t.innerText=n)},handleRange=(e,t,n,i,s)=>{const o=o=>{const a=Number(t.value),l=t.value.padStart(2,"0"),r="hour"===s,c=24===e.selectionTimeMode,d=a>0&&a<12;r&&!c&&updateKeepingTime(e,i,0===a||d?"AM":"PM"),updateInputAndTime(e,n,o,s,!r||c||d?l:transformTime12(t.value))};return t.addEventListener("input",o),()=>{t.removeEventListener("input",o)}},handleMouseOver=e=>e.setAttribute("data-vc-input-focus",""),handleMouseOut=e=>e.removeAttribute("data-vc-input-focus"),handleTime=(e,t)=>{const n=t.querySelector('[data-vc-time-range="hour"] input[name="hour"]'),i=t.querySelector('[data-vc-time-range="minute"] input[name="minute"]'),s=t.querySelector('[data-vc-time-input="hour"] input[name="hour"]'),o=t.querySelector('[data-vc-time-input="minute"] input[name="minute"]'),a=t.querySelector('[data-vc-time="keeping"]');if(!(n&&i&&s&&o))return;const l=e=>{e.target===n&&handleMouseOver(s),e.target===i&&handleMouseOver(o)},r=e=>{e.target===n&&handleMouseOut(s),e.target===i&&handleMouseOut(o)};return t.addEventListener("mouseover",l),t.addEventListener("mouseout",r),handleInput$1(e,n,s,a,"hour",e.timeMaxHour,e.timeMinHour),handleInput$1(e,i,o,a,"minute",e.timeMaxMinute,e.timeMinMinute),handleRange(e,n,s,a,"hour"),handleRange(e,i,o,a,"minute"),a&&handleClickKeepingTime(e,a,n,e.timeMaxHour,e.timeMinHour),()=>{t.removeEventListener("mouseover",l),t.removeEventListener("mouseout",r)}},createTime=e=>{const t=e.context.mainElement.querySelector('[data-vc="time"]');if(!e.selectionTimeMode||!t)return;const[n,i]=[e.timeMinHour,e.timeMaxHour],[s,o]=[e.timeMinMinute,e.timeMaxMinute],a=e.context.selectedKeeping?transformTime24(e.context.selectedHours,e.context.selectedKeeping):e.context.selectedHours,l="range"===e.timeControls;var r;t.innerHTML=e.sanitizerHTML(`\n    <div class="${e.styles.timeContent}" data-vc-time="content">\n      ${TimeInput("hour",e.styles.timeHour,e.labels,e.context.selectedHours,l)}\n      ${TimeInput("minute",e.styles.timeMinute,e.labels,e.context.selectedMinutes,l)}\n      ${12===e.selectionTimeMode?(r=e.context.selectedKeeping,`<button type="button" class="${e.styles.timeKeeping}" aria-label="${e.labels.btnKeeping} ${r}" data-vc-time="keeping" ${l?"disabled":""}>${r}</button>`):""}\n    </div>\n    <div class="${e.styles.timeRanges}" data-vc-time="ranges">\n      ${TimeRange("hour",e.styles.timeRange,e.labels,n,i,e.timeStepHour,a)}\n      ${TimeRange("minute",e.styles.timeRange,e.labels,s,o,e.timeStepMinute,e.context.selectedMinutes)}\n    </div>\n  `),handleTime(e,t)},createWeek=e=>{const t=e.selectedWeekends?[...e.selectedWeekends]:[],n=[...e.context.locale.weekdays.long].reduce((n,i,s)=>[...n,{id:s,titleShort:e.context.locale.weekdays.short[s],titleLong:i,isWeekend:t.includes(s)}],[]),i=[...n.slice(e.firstWeekday),...n.slice(0,e.firstWeekday)];e.context.mainElement.querySelectorAll('[data-vc="week"]').forEach(t=>{const n=e.onClickWeekDay?document.createElement("button"):document.createElement("b");e.onClickWeekDay&&(n.type="button"),i.forEach(i=>{const s=n.cloneNode(!0);s.innerText=i.titleShort,s.className=e.styles.weekDay,s.role="columnheader",s.ariaLabel=i.titleLong,s.dataset.vcWeekDay=String(i.id),i.isWeekend&&(s.dataset.vcWeekDayOff=""),t.appendChild(s)})})},createYearEl=(e,t,n,i,s)=>{const o=t.cloneNode(!1);return o.className=e.styles.yearsYear,o.innerText=String(s),o.ariaLabel=String(s),o.role="gridcell",o.dataset.vcYearsYear=`${s}`,i&&(o.ariaDisabled="true"),i&&(o.tabIndex=-1),o.disabled=i,setYearModifier(e,o,"year",n===s,!1),o},createYears=(e,t)=>{var n;const i=(null==t?void 0:t.dataset.vcYear)?Number(t.dataset.vcYear):e.context.selectedYear;setContext(e,"currentType","year"),createLayouts(e,t),visibilityTitle(e),visibilityArrows(e);const s=e.context.mainElement.querySelector('[data-vc="years"]');if(!e.selectionYearsMode||!s)return;const o="multiple"!==e.type||e.context.selectedYear===i?0:1,a=document.createElement("button");a.type="button";for(let t=e.context.displayYear-7;t<e.context.displayYear+8;t++){const n=t<getDate(e.context.dateMin).getFullYear()+o||t>getDate(e.context.dateMax).getFullYear(),l=createYearEl(e,a,i,n,t);s.appendChild(l),e.onCreateYearEls&&e.onCreateYearEls(e,l)}null==(n=e.context.mainElement.querySelector("[data-vc-years-year]:not([disabled])"))||n.focus()},trackChangesHTMLElement=(e,t,n)=>{new MutationObserver(e=>{for(let i=0;i<e.length;i++)if(e[i].attributeName===t){n();break}}).observe(e,{attributes:!0})},haveListener={value:!1,set:()=>haveListener.value=!0,check:()=>haveListener.value},setTheme=(e,t)=>e.dataset.vcTheme=t,trackChangesThemeInSystemSettings=(e,t)=>{if(setTheme(e.context.mainElement,t.matches?"dark":"light"),"system"!==e.selectedTheme||haveListener.check())return;const n=e=>{const t=document.querySelectorAll('[data-vc="calendar"]');null==t||t.forEach(t=>setTheme(t,e.matches?"dark":"light"))};t.addEventListener?t.addEventListener("change",n):t.addListener(n),haveListener.set()},detectTheme=(e,t)=>{const n=e.themeAttrDetect.length?document.querySelector(e.themeAttrDetect):null,i=e.themeAttrDetect.replace(/^.*\[(.+)\]/g,(e,t)=>t);if(!n||"system"===n.getAttribute(i))return void trackChangesThemeInSystemSettings(e,t);const s=n.getAttribute(i);s?(setTheme(e.context.mainElement,s),trackChangesHTMLElement(n,i,()=>{const t=n.getAttribute(i);t&&setTheme(e.context.mainElement,t)})):trackChangesThemeInSystemSettings(e,t)},handleTheme=e=>{"not all"!==window.matchMedia("(prefers-color-scheme)").media?"system"===e.selectedTheme?detectTheme(e,window.matchMedia("(prefers-color-scheme: dark)")):setTheme(e.context.mainElement,e.selectedTheme):setTheme(e.context.mainElement,"light")},capitalizeFirstLetter=e=>e.charAt(0).toUpperCase()+e.slice(1).replace(/\./,""),getLocaleWeekday=(e,t,n)=>{const i=new Date(`1978-01-0${t+1}T00:00:00.000Z`),s=i.toLocaleString(n,{weekday:"short",timeZone:"UTC"}),o=i.toLocaleString(n,{weekday:"long",timeZone:"UTC"});e.context.locale.weekdays.short.push(capitalizeFirstLetter(s)),e.context.locale.weekdays.long.push(capitalizeFirstLetter(o))},getLocaleMonth=(e,t,n)=>{const i=new Date(`1978-${String(t+1).padStart(2,"0")}-01T00:00:00.000Z`),s=i.toLocaleString(n,{month:"short",timeZone:"UTC"}),o=i.toLocaleString(n,{month:"long",timeZone:"UTC"});e.context.locale.months.short.push(capitalizeFirstLetter(s)),e.context.locale.months.long.push(capitalizeFirstLetter(o))},getLocale=e=>{var t,n,i,s,o,a,l,r;if(!(e.context.locale.weekdays.short[6]&&e.context.locale.weekdays.long[6]&&e.context.locale.months.short[11]&&e.context.locale.months.long[11]))if("string"==typeof e.locale){if("string"==typeof e.locale&&!e.locale.length)throw new Error(errorMessages.notLocale);Array.from({length:7},(t,n)=>getLocaleWeekday(e,n,e.locale)),Array.from({length:12},(t,n)=>getLocaleMonth(e,n,e.locale))}else{if(!((null==(n=null==(t=e.locale)?void 0:t.weekdays)?void 0:n.short[6])&&(null==(s=null==(i=e.locale)?void 0:i.weekdays)?void 0:s.long[6])&&(null==(a=null==(o=e.locale)?void 0:o.months)?void 0:a.short[11])&&(null==(r=null==(l=e.locale)?void 0:l.months)?void 0:r.long[11])))throw new Error(errorMessages.notLocale);setContext(e,"locale",__spreadValues({},e.locale))}},create=e=>{const t={default:()=>{createWeek(e),createDates(e)},multiple:()=>{createWeek(e),createDates(e)},month:()=>createMonths(e),year:()=>createYears(e)};handleTheme(e),getLocale(e),createLayouts(e),visibilityTitle(e),visibilityArrows(e),createTime(e),t[e.context.currentType]()},handleArrowKeys=e=>{const t=t=>{var n;const i=t.target;if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(t.key)||"button"!==i.localName)return;const s=Array.from(e.context.mainElement.querySelectorAll('[data-vc="calendar"] button')),o=s.indexOf(i);if(-1===o)return;const a=(l=s[o]).hasAttribute("data-vc-date-btn")?7:l.hasAttribute("data-vc-months-month")?4:l.hasAttribute("data-vc-years-year")?5:1;var l;const r=(0,{ArrowUp:()=>Math.max(0,o-a),ArrowDown:()=>Math.min(s.length-1,o+a),ArrowLeft:()=>Math.max(0,o-1),ArrowRight:()=>Math.min(s.length-1,o+1)}[t.key])();null==(n=s[r])||n.focus()};return e.context.mainElement.addEventListener("keydown",t),()=>e.context.mainElement.removeEventListener("keydown",t)},handleMonth=(e,t)=>{const n=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1)));({prev:()=>n.setMonth(n.getMonth()-e.monthsToSwitch),next:()=>n.setMonth(n.getMonth()+e.monthsToSwitch)})[t](),setContext(e,"selectedMonth",n.getMonth()),setContext(e,"selectedYear",n.getFullYear()),visibilityTitle(e),visibilityArrows(e),createDates(e)},handleClickArrow=(e,t)=>{const n=t.target.closest("[data-vc-arrow]");if(n){if(["default","multiple"].includes(e.context.currentType))handleMonth(e,n.dataset.vcArrow);else if("year"===e.context.currentType&&void 0!==e.context.displayYear){const i={prev:-15,next:15}[n.dataset.vcArrow];setContext(e,"displayYear",e.context.displayYear+i),createYears(e,t.target)}e.onClickArrow&&e.onClickArrow(e,t)}},resolveToggle=(e,t)=>void 0===t||("function"==typeof t?t(e):t),canToggleSelection=e=>resolveToggle(e,e.enableDateToggle),handleSelectDate=(e,t,n)=>{const i=t.dataset.vcDate,s=t.closest("[data-vc-date][data-vc-date-selected]"),o=canToggleSelection(e);if(s&&!o)return;const a=s?e.context.selectedDates.filter(e=>e!==i):n?[...e.context.selectedDates,i]:[i];setContext(e,"selectedDates",a)},createDateRangeTooltip=(e,t,n)=>{if(!t)return;if(!n)return t.dataset.vcDateRangeTooltip="hidden",void(t.textContent="");const i=e.context.mainElement.getBoundingClientRect(),s=n.getBoundingClientRect();t.style.left=s.left-i.left+s.width/2+"px",t.style.top=s.bottom-i.top-s.height+"px",t.dataset.vcDateRangeTooltip="visible",t.innerHTML=e.sanitizerHTML(e.onCreateDateRangeTooltip(e,n,t,s,i))},state={self:null,lastDateEl:null,isHovering:!1,rangeMin:void 0,rangeMax:void 0,tooltipEl:null,timeoutId:null},addHoverEffect=(e,t,n)=>{var i,s,o;if(!(null==(s=null==(i=state.self)?void 0:i.context)?void 0:s.selectedDates[0]))return;const a=getDateString(e);(null==(o=state.self.context.disableDates)?void 0:o.includes(a))||(state.self.context.mainElement.querySelectorAll(`[data-vc-date="${a}"]`).forEach(e=>e.dataset.vcDateHover=""),t.forEach(e=>e.dataset.vcDateHover="first"),n.forEach(e=>{"first"===e.dataset.vcDateHover?e.dataset.vcDateHover="first-and-last":e.dataset.vcDateHover="last"}))},removeHoverEffect=()=>{var e,t;(null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.mainElement)&&state.self.context.mainElement.querySelectorAll("[data-vc-date-hover]").forEach(e=>e.removeAttribute("data-vc-date-hover"))},handleHoverDatesEvent=e=>{var t,n;if(!e||!(null==(n=null==(t=state.self)?void 0:t.context)?void 0:n.selectedDates[0]))return;if(!e.closest('[data-vc="dates"]'))return state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),void removeHoverEffect();const i=e.closest("[data-vc-date]");if(!i||state.lastDateEl===i)return;state.lastDateEl=i,createDateRangeTooltip(state.self,state.tooltipEl,i),removeHoverEffect();const s=i.dataset.vcDate,o=getDate(state.self.context.selectedDates[0]),a=getDate(s),l=state.self.context.mainElement.querySelectorAll(`[data-vc-date="${state.self.context.selectedDates[0]}"]`),r=state.self.context.mainElement.querySelectorAll(`[data-vc-date="${s}"]`),[c,d]=o<a?[l,r]:[r,l],[u,h]=o<a?[o,a]:[a,o];for(let e=new Date(u);e<=h;e.setDate(e.getDate()+1))addHoverEffect(e,c,d)},handleHoverSelectedDatesRangeEvent=e=>{const t=null==e?void 0:e.closest("[data-vc-date-selected]");if(!t&&state.lastDateEl)return state.lastDateEl=null,void createDateRangeTooltip(state.self,state.tooltipEl,null);t&&state.lastDateEl!==t&&(state.lastDateEl=t,createDateRangeTooltip(state.self,state.tooltipEl,t))},optimizedHoverHandler=e=>t=>{const n=t.target;state.isHovering||(state.isHovering=!0,requestAnimationFrame(()=>{e(n),state.isHovering=!1}))},optimizedHandleHoverDatesEvent=optimizedHoverHandler(handleHoverDatesEvent),optimizedHandleHoverSelectedDatesRangeEvent=optimizedHoverHandler(handleHoverSelectedDatesRangeEvent),handleCancelSelectionDates=e=>{state.self&&"Escape"===e.key&&(state.lastDateEl=null,setContext(state.self,"selectedDates",[]),state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates),createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect())},handleMouseLeave=()=>{null!==state.timeoutId&&clearTimeout(state.timeoutId),state.timeoutId=setTimeout(()=>{state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect()},50)},updateDisabledDates=()=>{var e,t,n,i;if(!(null==(n=null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.selectedDates)?void 0:n[0])||!(null==(i=state.self.context.disableDates)?void 0:i[0]))return;const s=getDate(state.self.context.selectedDates[0]),[o,a]=state.self.context.disableDates.map(e=>getDate(e)).reduce(([e,t],n)=>[s>=n?n:e,s<n&&null===t?n:t],[null,null]);o&&setContext(state.self,"displayDateMin",getDateString(new Date(o.setDate(o.getDate()+1)))),a&&setContext(state.self,"displayDateMax",getDateString(new Date(a.setDate(a.getDate()-1)))),state.self.disableDatesPast&&!state.self.disableAllDates&&getDate(state.self.context.displayDateMin)<getDate(state.self.context.dateToday)&&setContext(state.self,"displayDateMin",state.self.context.dateToday)},handleSelectDateRange=(e,t)=>{state.self=e,state.lastDateEl=t,removeHoverEffect(),e.disableDatesGaps&&(state.rangeMin=state.rangeMin?state.rangeMin:e.context.displayDateMin,state.rangeMax=state.rangeMax?state.rangeMax:e.context.displayDateMax),e.onCreateDateRangeTooltip&&(state.tooltipEl=e.context.mainElement.querySelector("[data-vc-date-range-tooltip]"));const n=null==t?void 0:t.dataset.vcDate;if(n){const t=1===e.context.selectedDates.length&&e.context.selectedDates[0].includes(n),i=t&&!canToggleSelection(e)?[n,n]:t&&canToggleSelection(e)?[]:e.context.selectedDates.length>1?[n]:[...e.context.selectedDates,n];setContext(e,"selectedDates",i),e.context.selectedDates.length>1&&e.context.selectedDates.sort((e,t)=>+new Date(e)-+new Date(t))}({set:()=>(e.disableDatesGaps&&updateDisabledDates(),createDateRangeTooltip(state.self,state.tooltipEl,t),state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates),state.self.context.mainElement.addEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.addEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.addEventListener("keydown",handleCancelSelectionDates),()=>{state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates)}),reset:()=>{const[n,i]=[e.context.selectedDates[0],e.context.selectedDates[e.context.selectedDates.length-1]],s=e.context.selectedDates[0]!==e.context.selectedDates[e.context.selectedDates.length-1],o=parseDates([`${n}:${i}`]).filter(t=>!e.context.disableDates.includes(t)),a=s?e.enableEdgeDatesOnly?[n,i]:o:[e.context.selectedDates[0],e.context.selectedDates[0]];if(setContext(e,"selectedDates",a),e.disableDatesGaps&&(setContext(e,"displayDateMin",state.rangeMin),setContext(e,"displayDateMax",state.rangeMax)),state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates),e.onCreateDateRangeTooltip)return e.context.selectedDates[0]||(state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,null)),e.context.selectedDates[0]&&(state.self.context.mainElement.addEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.addEventListener("mouseleave",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,t)),()=>{state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave)}}})[1===e.context.selectedDates.length?"set":"reset"]()},updateDateModifier=e=>{e.context.mainElement.querySelectorAll("[data-vc-date]").forEach(t=>{const n=t.querySelector("[data-vc-date-btn]"),i=t.dataset.vcDate,s=getDate(i).getDay();setDateModifier(e,e.context.selectedYear,t,n,s,i,"current")})},handleClickDate=(e,t)=>{var n;const i=t.target,s=i.closest("[data-vc-date-btn]");if(!e.selectionDatesMode||!["single","multiple","multiple-ranged"].includes(e.selectionDatesMode)||!s)return;const o=s.closest("[data-vc-date]");({single:()=>handleSelectDate(e,o,!1),multiple:()=>handleSelectDate(e,o,!0),"multiple-ranged":()=>handleSelectDateRange(e,o)})[e.selectionDatesMode](),null==(n=e.context.selectedDates)||n.sort((e,t)=>+new Date(e)-+new Date(t)),e.onClickDate&&e.onClickDate(e,t),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t);const a=i.closest('[data-vc-date-month="prev"]'),l=i.closest('[data-vc-date-month="next"]');({prev:()=>e.enableMonthChangeOnDayClick?handleMonth(e,"prev"):updateDateModifier(e),next:()=>e.enableMonthChangeOnDayClick?handleMonth(e,"next"):updateDateModifier(e),current:()=>updateDateModifier(e)})[a?"prev":l?"next":"current"]()},typeClick=["month","year"],getValue=(e,t,n)=>{const{currentValue:i,columnID:s}=getColumnID(e,t);return"month"===e.context.currentType&&s>=0?n-s:"year"===e.context.currentType&&e.context.selectedYear!==i?n-1:n},handleMultipleYearSelection=(e,t)=>{const n=getValue(e,"year",Number(t.dataset.vcYearsYear)),i=getDate(e.context.dateMin),s=getDate(e.context.dateMax),o=e.context.displayMonthsCount-1,{columnID:a}=getColumnID(e,"year"),l=e.context.selectedMonth<i.getMonth()&&n<=i.getFullYear(),r=e.context.selectedMonth>s.getMonth()-o+a&&n>=s.getFullYear(),c=n<i.getFullYear(),d=n>s.getFullYear(),u=l||c?i.getFullYear():r||d?s.getFullYear():n,h=l||c?i.getMonth():r||d?s.getMonth()-o+a:e.context.selectedMonth;setContext(e,"selectedYear",u),setContext(e,"selectedMonth",h)},handleMultipleMonthSelection=(e,t)=>{const n=t.closest('[data-vc-column="month"]').querySelector('[data-vc="year"]'),i=getValue(e,"month",Number(t.dataset.vcMonthsMonth)),s=Number(n.dataset.vcYear),o=getDate(e.context.dateMin),a=getDate(e.context.dateMax),l=i<o.getMonth()&&s<=o.getFullYear(),r=i>a.getMonth()&&s>=a.getFullYear();setContext(e,"selectedYear",s),setContext(e,"selectedMonth",l?o.getMonth():r?a.getMonth():i)},handleItemClick=(e,t,n,i)=>{var s;({year:()=>{if("multiple"===e.type)return handleMultipleYearSelection(e,i);setContext(e,"selectedYear",Number(i.dataset.vcYearsYear))},month:()=>{if("multiple"===e.type)return handleMultipleMonthSelection(e,i);setContext(e,"selectedMonth",Number(i.dataset.vcMonthsMonth))}})[n](),{year:()=>{var n;return null==(n=e.onClickYear)?void 0:n.call(e,e,t)},month:()=>{var n;return null==(n=e.onClickMonth)?void 0:n.call(e,e,t)}}[n](),e.context.currentType!==e.type?(setContext(e,"currentType",e.type),create(e),null==(s=e.context.mainElement.querySelector(`[data-vc="${n}"]`))||s.focus()):setYearModifier(e,i,n,!0,!0)},handleClickType=(e,t,n)=>{var i;const s=t.target,o=s.closest(`[data-vc="${n}"]`),a={year:()=>createYears(e,s),month:()=>createMonths(e,s)};if(o&&e.onClickTitle&&e.onClickTitle(e,t),o&&e.context.currentType!==n)return a[n]();const l=s.closest(`[data-vc-${n}s-${n}]`);if(l)return handleItemClick(e,t,n,l);const r=s.closest('[data-vc="grid"]'),c=s.closest('[data-vc="column"]');(e.context.currentType===n&&o||"multiple"===e.type&&e.context.currentType===n&&r&&!c)&&(setContext(e,"currentType",e.type),create(e),null==(i=e.context.mainElement.querySelector(`[data-vc="${n}"]`))||i.focus())},handleClickMonthOrYear=(e,t)=>{const n={month:e.selectionMonthsMode,year:e.selectionYearsMode};typeClick.forEach(i=>{n[i]&&t.target&&handleClickType(e,t,i)})},handleClickWeekNumber=(e,t)=>{if(!e.enableWeekNumbers||!e.onClickWeekNumber)return;const n=t.target.closest("[data-vc-week-number]"),i=e.context.mainElement.querySelectorAll("[data-vc-date-week-number]");if(!n||!i[0])return;const s=Number(n.innerText),o=Number(n.dataset.vcWeekYear),a=Array.from(i).filter(e=>Number(e.dataset.vcDateWeekNumber)===s);e.onClickWeekNumber(e,s,o,a,t)},handleClickWeekDay=(e,t)=>{if(!e.onClickWeekDay)return;const n=t.target.closest("[data-vc-week-day]"),i=t.target.closest('[data-vc="column"]'),s=i?i.querySelectorAll("[data-vc-date-week-day]"):e.context.mainElement.querySelectorAll("[data-vc-date-week-day]");if(!n||!s[0])return;const o=Number(n.dataset.vcWeekDay),a=Array.from(s).filter(e=>Number(e.dataset.vcDateWeekDay)===o);e.onClickWeekDay(e,o,a,t)},handleClick=e=>{const t=t=>{handleClickArrow(e,t),handleClickWeekDay(e,t),handleClickWeekNumber(e,t),handleClickDate(e,t),handleClickMonthOrYear(e,t)};return e.context.mainElement.addEventListener("click",t),()=>e.context.mainElement.removeEventListener("click",t)},initMonthsCount=e=>{if("multiple"===e.type&&(e.displayMonthsCount<=1||e.displayMonthsCount>12))throw new Error(errorMessages.incorrectMonthsCount);if("multiple"!==e.type&&e.displayMonthsCount>1)throw new Error(errorMessages.incorrectMonthsCount);setContext(e,"displayMonthsCount",e.displayMonthsCount?e.displayMonthsCount:"multiple"===e.type?2:1)},getLocalDate=()=>{const e=new Date;return new Date(e.getTime()-6e4*e.getTimezoneOffset()).toISOString().substring(0,10)},resolveDate=(e,t)=>"today"===e?getLocalDate():e instanceof Date||"number"==typeof e||"string"==typeof e?parseDates([e])[0]:t,initRange=e=>{var t,n,i;const s=resolveDate(e.dateMin,e.dateMin),o=resolveDate(e.dateMax,e.dateMax),a=resolveDate(e.displayDateMin,s),l=resolveDate(e.displayDateMax,o);setContext(e,"dateToday",resolveDate(e.dateToday,e.dateToday)),setContext(e,"displayDateMin",a?getDate(s)>=getDate(a)?s:a:s),setContext(e,"displayDateMax",l?getDate(o)<=getDate(l)?o:l:o);const r=e.disableDatesPast&&!e.disableAllDates&&getDate(a)<getDate(e.context.dateToday);setContext(e,"displayDateMin",r||e.disableAllDates?e.context.dateToday:a),setContext(e,"displayDateMax",e.disableAllDates?e.context.dateToday:l),setContext(e,"disableDates",e.disableDates[0]&&!e.disableAllDates?parseDates(e.disableDates):e.disableAllDates?[e.context.displayDateMin]:[]),e.context.disableDates.length>1&&e.context.disableDates.sort((e,t)=>+new Date(e)-+new Date(t)),setContext(e,"enableDates",e.enableDates[0]?parseDates(e.enableDates):[]),(null==(t=e.context.enableDates)?void 0:t[0])&&(null==(n=e.context.disableDates)?void 0:n[0])&&setContext(e,"disableDates",e.context.disableDates.filter(t=>!e.context.enableDates.includes(t))),e.context.enableDates.length>1&&e.context.enableDates.sort((e,t)=>+new Date(e)-+new Date(t)),(null==(i=e.context.enableDates)?void 0:i[0])&&e.disableAllDates&&(setContext(e,"displayDateMin",e.context.enableDates[0]),setContext(e,"displayDateMax",e.context.enableDates[e.context.enableDates.length-1])),setContext(e,"dateMin",e.displayDisabledDates?s:e.context.displayDateMin),setContext(e,"dateMax",e.displayDisabledDates?o:e.context.displayDateMax)},initSelectedDates=e=>{var t;setContext(e,"selectedDates",(null==(t=e.selectedDates)?void 0:t[0])?parseDates(e.selectedDates):[])},displayClosestValidDate=e=>{const t=t=>{const n=new Date(t);setInitialContext(e,n.getMonth(),n.getFullYear())};if(e.displayDateMin&&"today"!==e.displayDateMin&&(n=e.displayDateMin,i=new Date,new Date(n).getTime()>i.getTime())){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMin;return t(getDate(resolveDate(n,e.displayDateMin))),!0}var n,i;if(e.displayDateMax&&"today"!==e.displayDateMax&&((e,t)=>new Date(e).getTime()<t.getTime())(e.displayDateMax,new Date)){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMax;return t(getDate(resolveDate(n,e.displayDateMax))),!0}return!1},setInitialContext=(e,t,n)=>{setContext(e,"selectedMonth",t),setContext(e,"selectedYear",n),setContext(e,"displayYear",n)},initSelectedMonthYear=e=>{var t;if(e.enableJumpToSelectedDate&&(null==(t=e.selectedDates)?void 0:t[0])&&void 0===e.selectedMonth&&void 0===e.selectedYear){const t=getDate(parseDates(e.selectedDates)[0]);return void setInitialContext(e,t.getMonth(),t.getFullYear())}if(displayClosestValidDate(e))return;const n=void 0!==e.selectedMonth&&Number(e.selectedMonth)>=0&&Number(e.selectedMonth)<12,i=void 0!==e.selectedYear&&Number(e.selectedYear)>=0&&Number(e.selectedYear)<=9999;setInitialContext(e,n?Number(e.selectedMonth):getDate(e.context.dateToday).getMonth(),i?Number(e.selectedYear):getDate(e.context.dateToday).getFullYear())},initTime=e=>{var t,n,i;if(!e.selectionTimeMode)return;if(![12,24].includes(e.selectionTimeMode))throw new Error(errorMessages.incorrectTime);const s=12===e.selectionTimeMode,o=s?/^(0[1-9]|1[0-2]):([0-5][0-9]) ?(AM|PM)?$/i:/^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/;let[a,l,r]=null!=(i=null==(n=null==(t=e.selectedTime)?void 0:t.match(o))?void 0:n.slice(1))?i:[];a?s&&!r&&(r="AM"):(a=s?transformTime12(String(e.timeMinHour)):String(e.timeMinHour),l=String(e.timeMinMinute),r=s?Number(transformTime12(String(e.timeMinHour)))>=12?"PM":"AM":null),setContext(e,"selectedHours",a.padStart(2,"0")),setContext(e,"selectedMinutes",l.padStart(2,"0")),setContext(e,"selectedKeeping",r),setContext(e,"selectedTime",`${e.context.selectedHours}:${e.context.selectedMinutes}${r?` ${r}`:""}`)},initAllVariables=e=>{setContext(e,"currentType",e.type),initMonthsCount(e),initRange(e),initSelectedMonthYear(e),initSelectedDates(e),initTime(e)},reset=(e,{year:t,month:n,dates:i,time:s,locale:o},a=!0)=>{var l;const r={year:e.selectedYear,month:e.selectedMonth,dates:e.selectedDates,time:e.selectedTime};e.selectedYear=t?r.year:e.context.selectedYear,e.selectedMonth=n?r.month:e.context.selectedMonth,e.selectedTime=s?r.time:e.context.selectedTime,e.selectedDates="only-first"===i&&(null==(l=e.context.selectedDates)?void 0:l[0])?[e.context.selectedDates[0]]:!0===i?r.dates:e.context.selectedDates,o&&setContext(e,"locale",{months:{short:[],long:[]},weekdays:{short:[],long:[]}}),initAllVariables(e),a&&create(e),e.selectedYear=r.year,e.selectedMonth=r.month,e.selectedDates=r.dates,e.selectedTime=r.time,"multiple-ranged"===e.selectionDatesMode&&i&&handleSelectDateRange(e,null)},createToInput=e=>{const t=document.createElement("div");return t.className=e.styles.calendar,t.dataset.vc="calendar",t.dataset.vcInput="",t.dataset.vcCalendarHidden="",setContext(e,"inputModeInit",!0),setContext(e,"isShowInInputMode",!1),setContext(e,"mainElement",t),document.body.appendChild(e.context.mainElement),reset(e,{year:!0,month:!0,dates:!0,time:!0,locale:!0}),setTimeout(()=>show(e)),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e)},canOpenOnFocus=e=>resolveToggle(e,e.openOnFocus),handleInput=e=>{setContext(e,"inputElement",e.context.mainElement);const t=()=>{e.context.inputModeInit?setTimeout(()=>show(e)):createToInput(e)};e.context.inputElement.addEventListener("click",t);const n="function"==typeof e.openOnFocus||!0===e.openOnFocus,i=()=>{shouldSkipOpenOnFocus(e)?clearSkipOpenOnFocus(e):canOpenOnFocus(e)&&t()};n&&e.context.inputElement.addEventListener("focus",i);const s=t=>{const n="Tab"===t.key&&!t.shiftKey,i=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(t.key);(n||i)&&(t=>{var n;if(!e.context.isShowInInputMode)return!1;if(document.activeElement!==e.context.inputElement)return!1;const i=e=>e.tabIndex>=0&&!e.hasAttribute("disabled")&&"true"!==e.getAttribute("aria-disabled"),s=null!=(n=document.createTreeWalker(e.context.mainElement,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>i(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}).nextNode())?n:i(e.context.mainElement)?e.context.mainElement:null;!s||s.tabIndex<0||(t.preventDefault(),s.focus())})(t)};return e.context.inputElement.addEventListener("keydown",s),()=>{e.context.inputElement.removeEventListener("click",t),n&&e.context.inputElement.removeEventListener("focus",i),e.context.inputElement.removeEventListener("keydown",s)}},init=e=>(setContext(e,"originalElement",e.context.mainElement.cloneNode(!0)),setContext(e,"isInit",!0),e.inputMode?handleInput(e):(initAllVariables(e),create(e),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e))),update=(e,t)=>{if(!e.context.isInit)throw new Error(errorMessages.notInit);reset(e,__spreadValues(__spreadValues({},{year:!0,month:!0,dates:!0,time:!0,locale:!0}),t),!(e.inputMode&&!e.context.inputModeInit)),e.onUpdate&&e.onUpdate(e)},replaceProperties=(e,t)=>{const n=Object.keys(t);for(let i=0;i<n.length;i++){const s=n[i];"object"!=typeof e[s]||"object"!=typeof t[s]||t[s]instanceof Date||Array.isArray(t[s])?void 0!==t[s]&&(e[s]=t[s]):replaceProperties(e[s],t[s])}},set=(e,t,n)=>{replaceProperties(e,t),e.context.isInit&&update(e,n)};function findBestPickerPosition(e,t){const n="left";if(!t||!e)return n;const{canShow:i,parentPositions:s}=getAvailablePosition(e,t),o=i.left&&i.right;return(o&&i.bottom?"center":o&&i.top?["top","center"]:Array.isArray(s)?["bottom"===s[0]?"top":"bottom",...s.slice(1)]:s)||n}const setPosition=(e,t,n)=>{if(!e)return;const i="auto"===n?findBestPickerPosition(e,t):n,s={top:-t.offsetHeight,bottom:e.offsetHeight,left:0,center:e.offsetWidth/2-t.offsetWidth/2,right:e.offsetWidth-t.offsetWidth},o=Array.isArray(i)?i[0]:"bottom",a=Array.isArray(i)?i[1]:i;t.dataset.vcPosition=o;const{top:l,left:r}=getOffset(e),c=l+s[o];let d=r+s[a];const{vw:u}=getViewportDimensions();if(d+t.clientWidth>u){const e=window.innerWidth-document.body.clientWidth;d=u-t.clientWidth-e}else d<0&&(d=0);Object.assign(t.style,{left:`${d}px`,top:`${c}px`})},show=e=>{if(e.context.isShowInInputMode)return;if(!e.context.currentType)return void e.context.mainElement.click();setContext(e,"cleanupHandlers",[]),setContext(e,"isShowInInputMode",!0),e.inputMode&&restoreTabbing(e.context.mainElement),setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput),e.context.mainElement.removeAttribute("data-vc-calendar-hidden");const t=()=>{setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput)};window.addEventListener("resize",t),e.context.cleanupHandlers.push(()=>window.removeEventListener("resize",t));const n=t=>{"Escape"===t.key&&hide(e)};document.addEventListener("keydown",n),e.context.cleanupHandlers.push(()=>document.removeEventListener("keydown",n));const i=t=>{t.target===e.context.inputElement||e.context.mainElement.contains(t.target)||hide(e)};document.addEventListener("click",i,{capture:!0}),e.context.cleanupHandlers.push(()=>document.removeEventListener("click",i,{capture:!0})),e.onShow&&e.onShow(e)},labels={application:"Calendar",navigation:"Calendar Navigation",arrowNext:{month:"Next month",year:"Next list of years"},arrowPrev:{month:"Previous month",year:"Previous list of years"},month:"Select month, current selected month:",months:"List of months",year:"Select year, current selected year:",years:"List of years",week:"Days of the week",weekNumber:"Numbers of weeks in a year",dates:"Dates in the current month",selectingTime:"Selecting a time ",inputHour:"Hours",inputMinute:"Minutes",rangeHour:"Slider for selecting hours",rangeMinute:"Slider for selecting minutes",btnKeeping:"Switch AM/PM, current position:"},styles={calendar:"vc",controls:"vc-controls",grid:"vc-grid",column:"vc-column",header:"vc-header",headerContent:"vc-header__content",month:"vc-month",year:"vc-year",arrowPrev:"vc-arrow vc-arrow_prev",arrowNext:"vc-arrow vc-arrow_next",wrapper:"vc-wrapper",content:"vc-content",months:"vc-months",monthsMonth:"vc-months__month",years:"vc-years",yearsYear:"vc-years__year",week:"vc-week",weekDay:"vc-week__day",weekNumbers:"vc-week-numbers",weekNumbersTitle:"vc-week-numbers__title",weekNumbersContent:"vc-week-numbers__content",weekNumber:"vc-week-number",dates:"vc-dates",datesRow:"vc-dates__row",date:"vc-date",dateBtn:"vc-date__btn",datePopup:"vc-date__popup",dateRangeTooltip:"vc-date-range-tooltip",time:"vc-time",timeContent:"vc-time__content",timeHour:"vc-time__hour",timeMinute:"vc-time__minute",timeKeeping:"vc-time__keeping",timeRanges:"vc-time__ranges",timeRange:"vc-time__range"};class OptionsCalendar{constructor(){__publicField(this,"type","default"),__publicField(this,"inputMode",!1),__publicField(this,"openOnFocus",!0),__publicField(this,"positionToInput","left"),__publicField(this,"firstWeekday",1),__publicField(this,"monthsToSwitch",1),__publicField(this,"themeAttrDetect","html[data-theme]"),__publicField(this,"locale","en"),__publicField(this,"dateToday","today"),__publicField(this,"dateMin","1970-01-01"),__publicField(this,"dateMax","2470-12-31"),__publicField(this,"displayDateMin"),__publicField(this,"displayDateMax"),__publicField(this,"displayDatesOutside",!0),__publicField(this,"displayDisabledDates",!1),__publicField(this,"displayMonthsCount"),__publicField(this,"disableDates",[]),__publicField(this,"disableAllDates",!1),__publicField(this,"disableDatesPast",!1),__publicField(this,"disableDatesGaps",!1),__publicField(this,"disableWeekdays",[]),__publicField(this,"disableToday",!1),__publicField(this,"enableDates",[]),__publicField(this,"enableEdgeDatesOnly",!0),__publicField(this,"enableDateToggle",!0),__publicField(this,"enableWeekNumbers",!1),__publicField(this,"enableMonthChangeOnDayClick",!0),__publicField(this,"enableJumpToSelectedDate",!1),__publicField(this,"selectionDatesMode","single"),__publicField(this,"selectionMonthsMode",!0),__publicField(this,"selectionYearsMode",!0),__publicField(this,"selectionTimeMode",!1),__publicField(this,"selectedDates",[]),__publicField(this,"selectedMonth"),__publicField(this,"selectedYear"),__publicField(this,"selectedHolidays",[]),__publicField(this,"selectedWeekends",[0,6]),__publicField(this,"selectedTime"),__publicField(this,"selectedTheme","system"),__publicField(this,"timeMinHour",0),__publicField(this,"timeMaxHour",23),__publicField(this,"timeMinMinute",0),__publicField(this,"timeMaxMinute",59),__publicField(this,"timeControls","all"),__publicField(this,"timeStepHour",1),__publicField(this,"timeStepMinute",1),__publicField(this,"sanitizerHTML",e=>e),__publicField(this,"onClickDate"),__publicField(this,"onClickWeekDay"),__publicField(this,"onClickWeekNumber"),__publicField(this,"onClickTitle"),__publicField(this,"onClickMonth"),__publicField(this,"onClickYear"),__publicField(this,"onClickArrow"),__publicField(this,"onChangeTime"),__publicField(this,"onChangeToInput"),__publicField(this,"onCreateDateRangeTooltip"),__publicField(this,"onCreateDateEls"),__publicField(this,"onCreateMonthEls"),__publicField(this,"onCreateYearEls"),__publicField(this,"onInit"),__publicField(this,"onUpdate"),__publicField(this,"onDestroy"),__publicField(this,"onShow"),__publicField(this,"onHide"),__publicField(this,"popups",{}),__publicField(this,"labels",__spreadValues({},labels)),__publicField(this,"layouts",{default:"",multiple:"",month:"",year:""}),__publicField(this,"styles",__spreadValues({},styles))}}const _Calendar=class e extends OptionsCalendar{constructor(t,n){var i;super(),__publicField(this,"init",()=>init(this)),__publicField(this,"update",e=>update(this,e)),__publicField(this,"destroy",()=>destroy(this)),__publicField(this,"show",()=>show(this)),__publicField(this,"hide",()=>hide(this)),__publicField(this,"set",(e,t)=>set(this,e,t)),__publicField(this,"context"),this.context=__spreadProps(__spreadValues({},this.context),{locale:{months:{short:[],long:[]},weekdays:{short:[],long:[]}}}),setContext(this,"mainElement","string"==typeof t?null!=(i=e.memoizedElements.get(t))?i:this.queryAndMemoize(t):t),n&&replaceProperties(this,n)}queryAndMemoize(t){const n=document.querySelector(t);if(!n)throw new Error(errorMessages.notFoundSelector(t));return e.memoizedElements.set(t,n),n}};__publicField(_Calendar,"memoizedElements",new Map);let Calendar=_Calendar;const NAME$f="datepicker",DATA_KEY$b="bs.datepicker",EVENT_KEY$b=`.${DATA_KEY$b}`,DATA_API_KEY$6=".data-api",EVENT_CHANGE=`change${EVENT_KEY$b}`,EVENT_SHOW$6=`show${EVENT_KEY$b}`,EVENT_SHOWN$6=`shown${EVENT_KEY$b}`,EVENT_HIDE$6=`hide${EVENT_KEY$b}`,EVENT_HIDDEN$6=`hidden${EVENT_KEY$b}`,EVENT_CLICK_DATA_API$4=`click${EVENT_KEY$b}.data-api`,EVENT_FOCUSIN_DATA_API=`focusin${EVENT_KEY$b}.data-api`,SELECTOR_DATA_TOGGLE$7='[data-bs-toggle="datepicker"]',HIDE_DELAY=100,Default$e={datepickerTheme:null,dateMin:null,dateMax:null,dateFormat:null,displayElement:null,displayMonthsCount:1,firstWeekday:1,inline:!1,locale:"default",positionElement:null,selectedDates:[],selectionMode:"single",placement:"left",vcpOptions:{}},DefaultType$e={datepickerTheme:"(null|string)",dateMin:"(null|string|number|object)",dateMax:"(null|string|number|object)",dateFormat:"(null|object|function)",displayElement:"(null|string|element|boolean)",displayMonthsCount:"number",firstWeekday:"number",inline:"boolean",locale:"string",positionElement:"(null|string|element)",selectedDates:"array",selectionMode:"string",placement:"string",vcpOptions:"object"};class Datepicker extends BaseComponent{constructor(e,t){super(e,t),this._calendar=null,this._isShown=!1,this._initCalendar()}static get Default(){return Default$e}static get DefaultType(){return DefaultType$e}static get NAME(){return NAME$f}toggle(){if(!this._config.inline)return this._isShown?this.hide():this.show()}show(){this._config.inline||!this._calendar||isDisabled(this._element)||this._isShown||EventHandler.trigger(this._element,EVENT_SHOW$6).defaultPrevented||(this._calendar.show(),this._isShown=!0,EventHandler.trigger(this._element,EVENT_SHOWN$6))}hide(){this._config.inline||this._calendar&&this._isShown&&(EventHandler.trigger(this._element,EVENT_HIDE$6).defaultPrevented||(this._calendar.hide(),this._isShown=!1,EventHandler.trigger(this._element,EVENT_HIDDEN$6)))}dispose(){this._themeObserver&&(this._themeObserver.disconnect(),this._themeObserver=null),this._calendar&&this._calendar.destroy(),this._calendar=null,super.dispose()}getSelectedDates(){const e=this._calendar?.context?.selectedDates;return e?[...e]:[]}setSelectedDates(e){this._calendar&&this._calendar.set({selectedDates:e})}_initCalendar(){this._isInput="INPUT"===this._element.tagName,this._isInline=this._config.inline,this._isInline&&!this._isInput&&(this._boundInput=this._element.querySelector('input[type="hidden"], input[name]')),this._positionElement=this._resolvePositionElement(),this._displayElement=this._resolveDisplayElement();const e=this._buildCalendarOptions();this._calendar=new Calendar(this._positionElement,e),this._calendar.init(),this._setupThemeObserver(),this._isInput&&this._element.value&&this._parseInputValue(),this._updateDisplayWithSelectedDates()}_updateDisplayWithSelectedDates(){const{selectedDates:e}=this._config;if(!e||0===e.length)return;const t=this._formatDateForInput(e);this._isInput&&(this._element.value=t),this._boundInput&&(this._boundInput.value=e.join(",")),this._displayElement&&(this._displayElement.textContent=t)}_resolvePositionElement(){let{positionElement:e}=this._config;if("string"==typeof e&&(e=document.querySelector(e)),!e&&this._isInput&&!this._isInline){const t=this._element.closest(".form-adorn");t&&(e=t)}return e||this._element}_resolveDisplayElement(){const{displayElement:e}=this._config;return"string"==typeof e?document.querySelector(e):!0===e||null===e&&!this._isInput&&!this._isInline?this._element.querySelector("[data-bs-datepicker-display]")||this._element:e}_getThemeAncestor(){return this._element.closest("[data-bs-theme]")}_getEffectiveTheme(){const{datepickerTheme:e}=this._config;if(e)return e;const t=this._getThemeAncestor();return t?.getAttribute("data-bs-theme")||null}_syncThemeAttribute(e){if(!e)return;const t=this._getEffectiveTheme();t?e.setAttribute("data-bs-theme",t):e.removeAttribute("data-bs-theme")}_setupThemeObserver(){const e=this._getThemeAncestor();e&&!this._config.datepickerTheme&&(this._themeObserver=new MutationObserver(()=>{this._syncThemeAttribute(this._calendar?.context?.mainElement)}),this._themeObserver.observe(e,{attributes:!0,attributeFilter:["data-bs-theme"]}))}_buildCalendarOptions(){const e=this._getEffectiveTheme(),t=e&&"auto"!==e?e:"system",n={...this._config.vcpOptions,inputMode:!this._isInline,positionToInput:this._config.placement,firstWeekday:this._config.firstWeekday,locale:this._config.locale,selectionDatesMode:this._config.selectionMode,selectedDates:this._config.selectedDates,displayMonthsCount:this._config.displayMonthsCount,type:this._config.displayMonthsCount>1?"multiple":"default",selectedTheme:t,themeAttrDetect:"[data-bs-theme]",onClickDate:(e,t)=>this._handleDateClick(e,t),onInit:e=>{this._syncThemeAttribute(e.context.mainElement)},onShow:()=>{this._isShown=!0,this._syncThemeAttribute(this._calendar.context.mainElement)},onHide:()=>{this._isShown=!1}};if(this._config.selectedDates.length>0){const e=this._parseDate(this._config.selectedDates[0]);n.selectedMonth=e.getMonth(),n.selectedYear=e.getFullYear()}return this._config.dateMin&&(n.dateMin=this._config.dateMin),this._config.dateMax&&(n.dateMax=this._config.dateMax),n}_handleDateClick(e,t){const n=[...e.context.selectedDates];if(n.length>0){const e=this._formatDateForInput(n);this._isInput&&(this._element.value=e),this._boundInput&&(this._boundInput.value=n.join(",")),this._displayElement&&(this._displayElement.textContent=e)}EventHandler.trigger(this._element,EVENT_CHANGE,{dates:n,event:t}),this._maybeHideAfterSelection(n)}_maybeHideAfterSelection(e){this._isInline||("single"===this._config.selectionMode&&e.length>0||"multiple-ranged"===this._config.selectionMode&&e.length>=2)&&setTimeout(()=>this.hide(),100)}_parseDate(e){const[t,n,i]=e.split("-");return new Date(t,n-1,i)}_formatDate(e){const t=this._parseDate(e),n="default"===this._config.locale?void 0:this._config.locale,{dateFormat:i}=this._config;return"function"==typeof i?i(t,n):i&&"object"==typeof i?new Intl.DateTimeFormat(n,i).format(t):t.toLocaleDateString(n)}_formatDateForInput(e){if(0===e.length)return"";if(1===e.length)return this._formatDate(e[0]);const t="multiple-ranged"===this._config.selectionMode?" – ":", ";return e.map(e=>this._formatDate(e)).join(t)}_parseInputValue(){const e=this._element.value.trim();if(!e)return;const t=new Date(e);if(!Number.isNaN(t.getTime())){const e=`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`;this._calendar.set({selectedDates:[e]})}}}EventHandler.on(document,EVENT_CLICK_DATA_API$4,SELECTOR_DATA_TOGGLE$7,function(e){"INPUT"!==this.tagName&&"true"!==this.dataset.bsInline&&(e.preventDefault(),Datepicker.getOrCreateInstance(this).toggle())}),EventHandler.on(document,EVENT_FOCUSIN_DATA_API,SELECTOR_DATA_TOGGLE$7,function(){"INPUT"===this.tagName&&Datepicker.getOrCreateInstance(this).show()}),EventHandler.on(document,`DOMContentLoaded${EVENT_KEY$b}.data-api`,()=>{for(const e of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE$7}[data-bs-inline="true"]`))Datepicker.getOrCreateInstance(e)});const NAME$e="dialog",DATA_KEY$a="bs.dialog",EVENT_KEY$a=`.${DATA_KEY$a}`,DATA_API_KEY$5=".data-api",EVENT_SHOW$5=`show${EVENT_KEY$a}`,EVENT_SHOWN$5=`shown${EVENT_KEY$a}`,EVENT_HIDE$5=`hide${EVENT_KEY$a}`,EVENT_HIDDEN$5=`hidden${EVENT_KEY$a}`,EVENT_HIDE_PREVENTED$1=`hidePrevented${EVENT_KEY$a}`,EVENT_CANCEL=`cancel${EVENT_KEY$a}`,EVENT_CLICK_DATA_API$3=`click${EVENT_KEY$a}.data-api`,CLASS_NAME_STATIC="dialog-static",CLASS_NAME_OPEN="dialog-open",CLASS_NAME_NONMODAL="dialog-nonmodal",SELECTOR_DATA_TOGGLE$6='[data-bs-toggle="dialog"]',SELECTOR_OPEN_MODAL_DIALOG="dialog.dialog[open]:not(.dialog-nonmodal)",Default$d={backdrop:!0,keyboard:!0,modal:!0},DefaultType$d={backdrop:"(boolean|string)",keyboard:"boolean",modal:"boolean"};class Dialog extends BaseComponent{constructor(e,t){super(e,t),this._isTransitioning=!1,this._addEventListeners()}static get Default(){return Default$d}static get DefaultType(){return DefaultType$d}static get NAME(){return NAME$e}toggle(e){return this._element.open?this.hide():this.show(e)}show(e){this._element.open||this._isTransitioning||EventHandler.trigger(this._element,EVENT_SHOW$5,{relatedTarget:e}).defaultPrevented||(this._isTransitioning=!0,this._config.modal?(this._element.showModal(),document.body.classList.add("dialog-open")):(this._element.classList.add("dialog-nonmodal"),this._element.show()),this._queueCallback(()=>{this._isTransitioning=!1,EventHandler.trigger(this._element,EVENT_SHOWN$5,{relatedTarget:e})},this._element,this._isAnimated()))}hide(){this._element.open&&!this._isTransitioning&&(EventHandler.trigger(this._element,EVENT_HIDE$5).defaultPrevented||(this._isTransitioning=!0,this._queueCallback(()=>this._hideDialog(),this._element,this._isAnimated())))}dispose(){EventHandler.off(this._element,EVENT_KEY$a),super.dispose()}handleUpdate(){}_hideDialog(){this._element.close(),this._element.classList.remove("dialog-nonmodal"),this._isTransitioning=!1,document.querySelector(SELECTOR_OPEN_MODAL_DIALOG)||document.body.classList.remove("dialog-open"),EventHandler.trigger(this._element,EVENT_HIDDEN$5)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED$1).defaultPrevented||(this._element.classList.add("dialog-static"),this._queueCallback(()=>{this._element.classList.remove("dialog-static")},this._element))}_addEventListeners(){EventHandler.on(this._element,"cancel",e=>{e.preventDefault(),this._config.keyboard?(EventHandler.trigger(this._element,EVENT_CANCEL),this.hide()):this._triggerBackdropTransition()}),EventHandler.on(this._element,"keydown",e=>{"Escape"!==e.key||this._config.modal||(e.preventDefault(),this._config.keyboard&&(EventHandler.trigger(this._element,EVENT_CANCEL),this.hide()))}),EventHandler.on(this._element,"click",e=>{e.target===this._element&&this._config.modal&&("static"!==this._config.backdrop?this.hide():this._triggerBackdropTransition())})}}EventHandler.on(document,EVENT_CLICK_DATA_API$3,SELECTOR_DATA_TOGGLE$6,function(e){const t=SelectorEngine.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),EventHandler.one(t,EVENT_SHOW$5,e=>{e.defaultPrevented||EventHandler.one(t,EVENT_HIDDEN$5,()=>{isVisible(this)&&this.focus()})});const n=Manipulator.getDataAttributes(this),i=this.closest("dialog[open]");if(i&&i!==t){Dialog.getOrCreateInstance(t,n).show(this);const e=Dialog.getInstance(i);return void(e&&e.hide())}Dialog.getOrCreateInstance(t,n).toggle(this)}),enableDismissTrigger(Dialog);const min=Math.min,max=Math.max,round=Math.round,floor=Math.floor,createCoords=e=>({x:e,y:e}),oppositeSideMap={left:"right",right:"left",bottom:"top",top:"bottom"},oppositeAlignmentMap={start:"end",end:"start"};function clamp(e,t,n){return max(e,min(t,n))}function evaluate(e,t){return"function"==typeof e?e(t):e}function getSide(e){return e.split("-")[0]}function getAlignment(e){return e.split("-")[1]}function getOppositeAxis(e){return"x"===e?"y":"x"}function getAxisLength(e){return"y"===e?"height":"width"}const yAxisSides=new Set(["top","bottom"]);function getSideAxis(e){return yAxisSides.has(getSide(e))?"y":"x"}function getAlignmentAxis(e){return getOppositeAxis(getSideAxis(e))}function getAlignmentSides(e,t,n){void 0===n&&(n=!1);const i=getAlignment(e),s=getAlignmentAxis(e),o=getAxisLength(s);let a="x"===s?i===(n?"end":"start")?"right":"left":"start"===i?"bottom":"top";return t.reference[o]>t.floating[o]&&(a=getOppositePlacement(a)),[a,getOppositePlacement(a)]}function getExpandedPlacements(e){const t=getOppositePlacement(e);return[getOppositeAlignmentPlacement(e),t,getOppositeAlignmentPlacement(t)]}function getOppositeAlignmentPlacement(e){return e.replace(/start|end/g,e=>oppositeAlignmentMap[e])}const lrPlacement=["left","right"],rlPlacement=["right","left"],tbPlacement=["top","bottom"],btPlacement=["bottom","top"];function getSideList(e,t,n){switch(e){case"top":case"bottom":return n?t?rlPlacement:lrPlacement:t?lrPlacement:rlPlacement;case"left":case"right":return t?tbPlacement:btPlacement;default:return[]}}function getOppositeAxisPlacements(e,t,n,i){const s=getAlignment(e);let o=getSideList(getSide(e),"start"===n,i);return s&&(o=o.map(e=>e+"-"+s),t&&(o=o.concat(o.map(getOppositeAlignmentPlacement)))),o}function getOppositePlacement(e){return e.replace(/left|right|bottom|top/g,e=>oppositeSideMap[e])}function expandPaddingObject(e){return{top:0,right:0,bottom:0,left:0,...e}}function getPaddingObject(e){return"number"!=typeof e?expandPaddingObject(e):{top:e,right:e,bottom:e,left:e}}function rectToClientRect(e){const{x:t,y:n,width:i,height:s}=e;return{width:i,height:s,top:n,left:t,right:t+i,bottom:n+s,x:t,y:n}}function computeCoordsFromPlacement(e,t,n){let{reference:i,floating:s}=e;const o=getSideAxis(t),a=getAlignmentAxis(t),l=getAxisLength(a),r=getSide(t),c="y"===o,d=i.x+i.width/2-s.width/2,u=i.y+i.height/2-s.height/2,h=i[l]/2-s[l]/2;let m;switch(r){case"top":m={x:d,y:i.y-s.height};break;case"bottom":m={x:d,y:i.y+i.height};break;case"right":m={x:i.x+i.width,y:u};break;case"left":m={x:i.x-s.width,y:u};break;default:m={x:i.x,y:i.y}}switch(getAlignment(t)){case"start":m[a]-=h*(n&&c?-1:1);break;case"end":m[a]+=h*(n&&c?-1:1)}return m}const computePosition$1=async(e,t,n)=>{const{placement:i="bottom",strategy:s="absolute",middleware:o=[],platform:a}=n,l=o.filter(Boolean),r=await(null==a.isRTL?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:s}),{x:d,y:u}=computeCoordsFromPlacement(c,i,r),h=i,m={},g=0;for(let n=0;n<l.length;n++){const{name:o,fn:_}=l[n],{x:E,y:p,data:f,reset:v}=await _({x:d,y:u,initialPlacement:i,placement:h,strategy:s,middlewareData:m,rects:c,platform:a,elements:{reference:e,floating:t}});d=null!=E?E:d,u=null!=p?p:u,m={...m,[o]:{...m[o],...f}},v&&g<=50&&(g++,"object"==typeof v&&(v.placement&&(h=v.placement),v.rects&&(c=!0===v.rects?await a.getElementRects({reference:e,floating:t,strategy:s}):v.rects),({x:d,y:u}=computeCoordsFromPlacement(c,h,r))),n=-1)}return{x:d,y:u,placement:h,strategy:s,middlewareData:m}};async function detectOverflow(e,t){var n;void 0===t&&(t={});const{x:i,y:s,platform:o,rects:a,elements:l,strategy:r}=e,{boundary:c="clippingAncestors",rootBoundary:d="viewport",elementContext:u="floating",altBoundary:h=!1,padding:m=0}=evaluate(t,e),g=getPaddingObject(m),_=l[h?"floating"===u?"reference":"floating":u],E=rectToClientRect(await o.getClippingRect({element:null==(n=await(null==o.isElement?void 0:o.isElement(_)))||n?_:_.contextElement||await(null==o.getDocumentElement?void 0:o.getDocumentElement(l.floating)),boundary:c,rootBoundary:d,strategy:r})),p="floating"===u?{x:i,y:s,width:a.floating.width,height:a.floating.height}:a.reference,f=await(null==o.getOffsetParent?void 0:o.getOffsetParent(l.floating)),v=await(null==o.isElement?void 0:o.isElement(f))&&await(null==o.getScale?void 0:o.getScale(f))||{x:1,y:1},T=rectToClientRect(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({elements:l,rect:p,offsetParent:f,strategy:r}):p);return{top:(E.top-T.top+g.top)/v.y,bottom:(T.bottom-E.bottom+g.bottom)/v.y,left:(E.left-T.left+g.left)/v.x,right:(T.right-E.right+g.right)/v.x}}const arrow$1=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:i,placement:s,rects:o,platform:a,elements:l,middlewareData:r}=t,{element:c,padding:d=0}=evaluate(e,t)||{};if(null==c)return{};const u=getPaddingObject(d),h={x:n,y:i},m=getAlignmentAxis(s),g=getAxisLength(m),_=await a.getDimensions(c),E="y"===m,p=E?"top":"left",f=E?"bottom":"right",v=E?"clientHeight":"clientWidth",T=o.reference[g]+o.reference[m]-h[m]-o.floating[g],b=h[m]-o.reference[m],A=await(null==a.getOffsetParent?void 0:a.getOffsetParent(c));let D=A?A[v]:0;D&&await(null==a.isElement?void 0:a.isElement(A))||(D=l.floating[v]||o.floating[g]);const y=T/2-b/2,S=D/2-_[g]/2-1,C=min(u[p],S),w=min(u[f],S),N=C,x=D-_[g]-w,M=D/2-_[g]/2+y,O=clamp(N,M,x),L=!r.arrow&&null!=getAlignment(s)&&M!==O&&o.reference[g]/2-(M<N?C:w)-_[g]/2<0,$=L?M<N?M-N:M-x:0;return{[m]:h[m]+$,data:{[m]:O,centerOffset:M-O-$,...L&&{alignmentOffset:$}},reset:L}}}),flip$1=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,i;const{placement:s,middlewareData:o,rects:a,initialPlacement:l,platform:r,elements:c}=t,{mainAxis:d=!0,crossAxis:u=!0,fallbackPlacements:h,fallbackStrategy:m="bestFit",fallbackAxisSideDirection:g="none",flipAlignment:_=!0,...E}=evaluate(e,t);if(null!=(n=o.arrow)&&n.alignmentOffset)return{};const p=getSide(s),f=getSideAxis(l),v=getSide(l)===l,T=await(null==r.isRTL?void 0:r.isRTL(c.floating)),b=h||(v||!_?[getOppositePlacement(l)]:getExpandedPlacements(l)),A="none"!==g;!h&&A&&b.push(...getOppositeAxisPlacements(l,_,g,T));const D=[l,...b],y=await detectOverflow(t,E),S=[];let C=(null==(i=o.flip)?void 0:i.overflows)||[];if(d&&S.push(y[p]),u){const e=getAlignmentSides(s,a,T);S.push(y[e[0]],y[e[1]])}if(C=[...C,{placement:s,overflows:S}],!S.every(e=>e<=0)){var w,N;const e=((null==(w=o.flip)?void 0:w.index)||0)+1,t=D[e];if(t&&("alignment"!==u||f===getSideAxis(t)||C.every(e=>getSideAxis(e.placement)!==f||e.overflows[0]>0)))return{data:{index:e,overflows:C},reset:{placement:t}};let n=null==(N=C.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:N.placement;if(!n)switch(m){case"bestFit":{var x;const e=null==(x=C.filter(e=>{if(A){const t=getSideAxis(e.placement);return t===f||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:x[0];e&&(n=e);break}case"initialPlacement":n=l}if(s!==n)return{reset:{placement:n}}}return{}}}},originSides=new Set(["left","top"]);async function convertValueToCoords(e,t){const{placement:n,platform:i,elements:s}=e,o=await(null==i.isRTL?void 0:i.isRTL(s.floating)),a=getSide(n),l=getAlignment(n),r="y"===getSideAxis(n),c=originSides.has(a)?-1:1,d=o&&r?-1:1,u=evaluate(t,e);let{mainAxis:h,crossAxis:m,alignmentAxis:g}="number"==typeof u?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:u.mainAxis||0,crossAxis:u.crossAxis||0,alignmentAxis:u.alignmentAxis};return l&&"number"==typeof g&&(m="end"===l?-1*g:g),r?{x:m*d,y:h*c}:{x:h*c,y:m*d}}const offset$1=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,i;const{x:s,y:o,placement:a,middlewareData:l}=t,r=await convertValueToCoords(t,e);return a===(null==(n=l.offset)?void 0:n.placement)&&null!=(i=l.arrow)&&i.alignmentOffset?{}:{x:s+r.x,y:o+r.y,data:{...r,placement:a}}}}},shift$1=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:i,placement:s}=t,{mainAxis:o=!0,crossAxis:a=!1,limiter:l={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...r}=evaluate(e,t),c={x:n,y:i},d=await detectOverflow(t,r),u=getSideAxis(getSide(s)),h=getOppositeAxis(u);let m=c[h],g=c[u];if(o){const e="y"===h?"bottom":"right";m=clamp(m+d["y"===h?"top":"left"],m,m-d[e])}if(a){const e="y"===u?"bottom":"right";g=clamp(g+d["y"===u?"top":"left"],g,g-d[e])}const _=l.fn({...t,[h]:m,[u]:g});return{..._,data:{x:_.x-n,y:_.y-i,enabled:{[h]:o,[u]:a}}}}}};function hasWindow(){return"undefined"!=typeof window}function getNodeName(e){return isNode(e)?(e.nodeName||"").toLowerCase():"#document"}function getWindow(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function getDocumentElement(e){var t;return null==(t=(isNode(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function isNode(e){return!!hasWindow()&&(e instanceof Node||e instanceof getWindow(e).Node)}function isElement(e){return!!hasWindow()&&(e instanceof Element||e instanceof getWindow(e).Element)}function isHTMLElement(e){return!!hasWindow()&&(e instanceof HTMLElement||e instanceof getWindow(e).HTMLElement)}function isShadowRoot(e){return!(!hasWindow()||"undefined"==typeof ShadowRoot)&&(e instanceof ShadowRoot||e instanceof getWindow(e).ShadowRoot)}const invalidOverflowDisplayValues=new Set(["inline","contents"]);function isOverflowElement(e){const{overflow:t,overflowX:n,overflowY:i,display:s}=getComputedStyle$1(e);return/auto|scroll|overlay|hidden|clip/.test(t+i+n)&&!invalidOverflowDisplayValues.has(s)}const tableElements=new Set(["table","td","th"]);function isTableElement(e){return tableElements.has(getNodeName(e))}const topLayerSelectors=[":popover-open",":modal"];function isTopLayer(e){return topLayerSelectors.some(t=>{try{return e.matches(t)}catch(e){return!1}})}const transformProperties=["transform","translate","scale","rotate","perspective"],willChangeValues=["transform","translate","scale","rotate","perspective","filter"],containValues=["paint","layout","strict","content"];function isContainingBlock(e){const t=isWebKit(),n=isElement(e)?getComputedStyle$1(e):e;return transformProperties.some(e=>!!n[e]&&"none"!==n[e])||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||willChangeValues.some(e=>(n.willChange||"").includes(e))||containValues.some(e=>(n.contain||"").includes(e))}function getContainingBlock(e){let t=getParentNode(e);for(;isHTMLElement(t)&&!isLastTraversableNode(t);){if(isContainingBlock(t))return t;if(isTopLayer(t))return null;t=getParentNode(t)}return null}function isWebKit(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}const lastTraversableNodeNames=new Set(["html","body","#document"]);function isLastTraversableNode(e){return lastTraversableNodeNames.has(getNodeName(e))}function getComputedStyle$1(e){return getWindow(e).getComputedStyle(e)}function getNodeScroll(e){return isElement(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function getParentNode(e){if("html"===getNodeName(e))return e;const t=e.assignedSlot||e.parentNode||isShadowRoot(e)&&e.host||getDocumentElement(e);return isShadowRoot(t)?t.host:t}function getNearestOverflowAncestor(e){const t=getParentNode(e);return isLastTraversableNode(t)?e.ownerDocument?e.ownerDocument.body:e.body:isHTMLElement(t)&&isOverflowElement(t)?t:getNearestOverflowAncestor(t)}function getOverflowAncestors(e,t,n){var i;void 0===t&&(t=[]),void 0===n&&(n=!0);const s=getNearestOverflowAncestor(e),o=s===(null==(i=e.ownerDocument)?void 0:i.body),a=getWindow(s);if(o){const e=getFrameElement(a);return t.concat(a,a.visualViewport||[],isOverflowElement(s)?s:[],e&&n?getOverflowAncestors(e):[])}return t.concat(s,getOverflowAncestors(s,[],n))}function getFrameElement(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function getCssDimensions(e){const t=getComputedStyle$1(e);let n=parseFloat(t.width)||0,i=parseFloat(t.height)||0;const s=isHTMLElement(e),o=s?e.offsetWidth:n,a=s?e.offsetHeight:i,l=round(n)!==o||round(i)!==a;return l&&(n=o,i=a),{width:n,height:i,$:l}}function unwrapElement(e){return isElement(e)?e:e.contextElement}function getScale(e){const t=unwrapElement(e);if(!isHTMLElement(t))return createCoords(1);const n=t.getBoundingClientRect(),{width:i,height:s,$:o}=getCssDimensions(t);let a=(o?round(n.width):n.width)/i,l=(o?round(n.height):n.height)/s;return a&&Number.isFinite(a)||(a=1),l&&Number.isFinite(l)||(l=1),{x:a,y:l}}const noOffsets=createCoords(0);function getVisualOffsets(e){const t=getWindow(e);return isWebKit()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:noOffsets}function shouldAddVisualOffsets(e,t,n){return void 0===t&&(t=!1),!(!n||t&&n!==getWindow(e))&&t}function getBoundingClientRect(e,t,n,i){void 0===t&&(t=!1),void 0===n&&(n=!1);const s=e.getBoundingClientRect(),o=unwrapElement(e);let a=createCoords(1);t&&(i?isElement(i)&&(a=getScale(i)):a=getScale(e));const l=shouldAddVisualOffsets(o,n,i)?getVisualOffsets(o):createCoords(0);let r=(s.left+l.x)/a.x,c=(s.top+l.y)/a.y,d=s.width/a.x,u=s.height/a.y;if(o){const e=getWindow(o),t=i&&isElement(i)?getWindow(i):i;let n=e,s=getFrameElement(n);for(;s&&i&&t!==n;){const e=getScale(s),t=s.getBoundingClientRect(),i=getComputedStyle$1(s),o=t.left+(s.clientLeft+parseFloat(i.paddingLeft))*e.x,a=t.top+(s.clientTop+parseFloat(i.paddingTop))*e.y;r*=e.x,c*=e.y,d*=e.x,u*=e.y,r+=o,c+=a,n=getWindow(s),s=getFrameElement(n)}}return rectToClientRect({width:d,height:u,x:r,y:c})}function getWindowScrollBarX(e,t){const n=getNodeScroll(e).scrollLeft;return t?t.left+n:getBoundingClientRect(getDocumentElement(e)).left+n}function getHTMLOffset(e,t){const n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-getWindowScrollBarX(e,n),y:n.top+t.scrollTop}}function convertOffsetParentRelativeRectToViewportRelativeRect(e){let{elements:t,rect:n,offsetParent:i,strategy:s}=e;const o="fixed"===s,a=getDocumentElement(i),l=!!t&&isTopLayer(t.floating);if(i===a||l&&o)return n;let r={scrollLeft:0,scrollTop:0},c=createCoords(1);const d=createCoords(0),u=isHTMLElement(i);if((u||!u&&!o)&&(("body"!==getNodeName(i)||isOverflowElement(a))&&(r=getNodeScroll(i)),isHTMLElement(i))){const e=getBoundingClientRect(i);c=getScale(i),d.x=e.x+i.clientLeft,d.y=e.y+i.clientTop}const h=!a||u||o?createCoords(0):getHTMLOffset(a,r);return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-r.scrollLeft*c.x+d.x+h.x,y:n.y*c.y-r.scrollTop*c.y+d.y+h.y}}function getClientRects(e){return Array.from(e.getClientRects())}function getDocumentRect(e){const t=getDocumentElement(e),n=getNodeScroll(e),i=e.ownerDocument.body,s=max(t.scrollWidth,t.clientWidth,i.scrollWidth,i.clientWidth),o=max(t.scrollHeight,t.clientHeight,i.scrollHeight,i.clientHeight);let a=-n.scrollLeft+getWindowScrollBarX(e);const l=-n.scrollTop;return"rtl"===getComputedStyle$1(i).direction&&(a+=max(t.clientWidth,i.clientWidth)-s),{width:s,height:o,x:a,y:l}}const SCROLLBAR_MAX=25;function getViewportRect(e,t){const n=getWindow(e),i=getDocumentElement(e),s=n.visualViewport;let o=i.clientWidth,a=i.clientHeight,l=0,r=0;if(s){o=s.width,a=s.height;const e=isWebKit();(!e||e&&"fixed"===t)&&(l=s.offsetLeft,r=s.offsetTop)}const c=getWindowScrollBarX(i);if(c<=0){const e=i.ownerDocument,t=e.body,n=getComputedStyle(t),s="CSS1Compat"===e.compatMode&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,a=Math.abs(i.clientWidth-t.clientWidth-s);a<=25&&(o-=a)}else c<=25&&(o+=c);return{width:o,height:a,x:l,y:r}}const absoluteOrFixed=new Set(["absolute","fixed"]);function getInnerBoundingClientRect(e,t){const n=getBoundingClientRect(e,!0,"fixed"===t),i=n.top+e.clientTop,s=n.left+e.clientLeft,o=isHTMLElement(e)?getScale(e):createCoords(1);return{width:e.clientWidth*o.x,height:e.clientHeight*o.y,x:s*o.x,y:i*o.y}}function getClientRectFromClippingAncestor(e,t,n){let i;if("viewport"===t)i=getViewportRect(e,n);else if("document"===t)i=getDocumentRect(getDocumentElement(e));else if(isElement(t))i=getInnerBoundingClientRect(t,n);else{const n=getVisualOffsets(e);i={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return rectToClientRect(i)}function hasFixedPositionAncestor(e,t){const n=getParentNode(e);return!(n===t||!isElement(n)||isLastTraversableNode(n))&&("fixed"===getComputedStyle$1(n).position||hasFixedPositionAncestor(n,t))}function getClippingElementAncestors(e,t){const n=t.get(e);if(n)return n;let i=getOverflowAncestors(e,[],!1).filter(e=>isElement(e)&&"body"!==getNodeName(e)),s=null;const o="fixed"===getComputedStyle$1(e).position;let a=o?getParentNode(e):e;for(;isElement(a)&&!isLastTraversableNode(a);){const t=getComputedStyle$1(a),n=isContainingBlock(a);n||"fixed"!==t.position||(s=null),(o?!n&&!s:!n&&"static"===t.position&&s&&absoluteOrFixed.has(s.position)||isOverflowElement(a)&&!n&&hasFixedPositionAncestor(e,a))?i=i.filter(e=>e!==a):s=t,a=getParentNode(a)}return t.set(e,i),i}function getClippingRect(e){let{element:t,boundary:n,rootBoundary:i,strategy:s}=e;const o=[..."clippingAncestors"===n?isTopLayer(t)?[]:getClippingElementAncestors(t,this._c):[].concat(n),i],a=o[0],l=o.reduce((e,n)=>{const i=getClientRectFromClippingAncestor(t,n,s);return e.top=max(i.top,e.top),e.right=min(i.right,e.right),e.bottom=min(i.bottom,e.bottom),e.left=max(i.left,e.left),e},getClientRectFromClippingAncestor(t,a,s));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function getDimensions(e){const{width:t,height:n}=getCssDimensions(e);return{width:t,height:n}}function getRectRelativeToOffsetParent(e,t,n){const i=isHTMLElement(t),s=getDocumentElement(t),o="fixed"===n,a=getBoundingClientRect(e,!0,o,t);let l={scrollLeft:0,scrollTop:0};const r=createCoords(0);function c(){r.x=getWindowScrollBarX(s)}if(i||!i&&!o)if(("body"!==getNodeName(t)||isOverflowElement(s))&&(l=getNodeScroll(t)),i){const e=getBoundingClientRect(t,!0,o,t);r.x=e.x+t.clientLeft,r.y=e.y+t.clientTop}else s&&c();o&&!i&&s&&c();const d=!s||i||o?createCoords(0):getHTMLOffset(s,l);return{x:a.left+l.scrollLeft-r.x-d.x,y:a.top+l.scrollTop-r.y-d.y,width:a.width,height:a.height}}function isStaticPositioned(e){return"static"===getComputedStyle$1(e).position}function getTrueOffsetParent(e,t){if(!isHTMLElement(e)||"fixed"===getComputedStyle$1(e).position)return null;if(t)return t(e);let n=e.offsetParent;return getDocumentElement(e)===n&&(n=n.ownerDocument.body),n}function getOffsetParent(e,t){const n=getWindow(e);if(isTopLayer(e))return n;if(!isHTMLElement(e)){let t=getParentNode(e);for(;t&&!isLastTraversableNode(t);){if(isElement(t)&&!isStaticPositioned(t))return t;t=getParentNode(t)}return n}let i=getTrueOffsetParent(e,t);for(;i&&isTableElement(i)&&isStaticPositioned(i);)i=getTrueOffsetParent(i,t);return i&&isLastTraversableNode(i)&&isStaticPositioned(i)&&!isContainingBlock(i)?n:i||getContainingBlock(e)||n}const getElementRects=async function(e){const t=this.getOffsetParent||getOffsetParent,n=this.getDimensions,i=await n(e.floating);return{reference:getRectRelativeToOffsetParent(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:i.width,height:i.height}}};function isRTL(e){return"rtl"===getComputedStyle$1(e).direction}const platform={convertOffsetParentRelativeRectToViewportRelativeRect:convertOffsetParentRelativeRectToViewportRelativeRect,getDocumentElement:getDocumentElement,getClippingRect:getClippingRect,getOffsetParent:getOffsetParent,getElementRects:getElementRects,getClientRects:getClientRects,getDimensions:getDimensions,getScale:getScale,isElement:isElement,isRTL:isRTL};function rectsAreEqual(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function observeMove(e,t){let n,i=null;const s=getDocumentElement(e);function o(){var e;clearTimeout(n),null==(e=i)||e.disconnect(),i=null}return function a(l,r){void 0===l&&(l=!1),void 0===r&&(r=1),o();const c=e.getBoundingClientRect(),{left:d,top:u,width:h,height:m}=c;if(l||t(),!h||!m)return;const g={rootMargin:-floor(u)+"px "+-floor(s.clientWidth-(d+h))+"px "+-floor(s.clientHeight-(u+m))+"px "+-floor(d)+"px",threshold:max(0,min(1,r))||1};let _=!0;function E(t){const i=t[0].intersectionRatio;if(i!==r){if(!_)return a();i?a(!1,i):n=setTimeout(()=>{a(!1,1e-7)},1e3)}1!==i||rectsAreEqual(c,e.getBoundingClientRect())||a(),_=!1}try{i=new IntersectionObserver(E,{...g,root:s.ownerDocument})}catch(e){i=new IntersectionObserver(E,g)}i.observe(e)}(!0),o}function autoUpdate(e,t,n,i){void 0===i&&(i={});const{ancestorScroll:s=!0,ancestorResize:o=!0,elementResize:a="function"==typeof ResizeObserver,layoutShift:l="function"==typeof IntersectionObserver,animationFrame:r=!1}=i,c=unwrapElement(e),d=s||o?[...c?getOverflowAncestors(c):[],...getOverflowAncestors(t)]:[];d.forEach(e=>{s&&e.addEventListener("scroll",n,{passive:!0}),o&&e.addEventListener("resize",n)});const u=c&&l?observeMove(c,n):null;let h,m=-1,g=null;a&&(g=new ResizeObserver(e=>{let[i]=e;i&&i.target===c&&g&&(g.unobserve(t),cancelAnimationFrame(m),m=requestAnimationFrame(()=>{var e;null==(e=g)||e.observe(t)})),n()}),c&&!r&&g.observe(c),g.observe(t));let _=r?getBoundingClientRect(e):null;return r&&function t(){const i=getBoundingClientRect(e);_&&!rectsAreEqual(_,i)&&n(),_=i,h=requestAnimationFrame(t)}(),n(),()=>{var e;d.forEach(e=>{s&&e.removeEventListener("scroll",n),o&&e.removeEventListener("resize",n)}),null==u||u(),null==(e=g)||e.disconnect(),g=null,r&&cancelAnimationFrame(h)}}const offset=offset$1,shift=shift$1,flip=flip$1,arrow=arrow$1,computePosition=(e,t,n)=>{const i=new Map,s={platform:platform,...n},o={...s.platform,_c:i};return computePosition$1(e,t,{...s,platform:o})},BREAKPOINTS={sm:576,md:768,lg:1024,xl:1280,"2xl":1536},parseResponsivePlacement=(e,t="bottom")=>{if(!e||!e.includes(":"))return null;const n=e.split(/\s+/),i={xs:t};for(const e of n)if(e.includes(":")){const[t,n]=e.split(":");void 0!==BREAKPOINTS[t]&&(i[t]=n)}else i.xs=e;return i},getResponsivePlacement=(e,t="bottom")=>{if(!e)return t;const n=window.innerWidth;let i=e.xs||t;const s=["sm","md","lg","xl","2xl"];for(const t of s)n>=BREAKPOINTS[t]&&e[t]&&(i=e[t]);return i},createBreakpointListeners=e=>{const t=[];for(const n of Object.keys(BREAKPOINTS)){const i=BREAKPOINTS[n],s=window.matchMedia(`(min-width: ${i}px)`);s.addEventListener("change",e),t.push({mql:s,handler:e})}return t},disposeBreakpointListeners=e=>{for(const{mql:t,handler:n}of e)t.removeEventListener("change",n)},NAME$d="dropdown",DATA_KEY$9="bs.dropdown",EVENT_KEY$9=`.${DATA_KEY$9}`,DATA_API_KEY$4=".data-api",ESCAPE_KEY$1="Escape",TAB_KEY$1="Tab",ARROW_UP_KEY$1="ArrowUp",ARROW_DOWN_KEY$1="ArrowDown",ARROW_LEFT_KEY$1="ArrowLeft",ARROW_RIGHT_KEY$1="ArrowRight",HOME_KEY$1="Home",END_KEY$1="End",ENTER_KEY="Enter",SPACE_KEY=" ",RIGHT_MOUSE_BUTTON=2,SUBMENU_CLOSE_DELAY=100,EVENT_HIDE$4=`hide${EVENT_KEY$9}`,EVENT_HIDDEN$4=`hidden${EVENT_KEY$9}`,EVENT_SHOW$4=`show${EVENT_KEY$9}`,EVENT_SHOWN$4=`shown${EVENT_KEY$9}`,EVENT_CLICK_DATA_API$2=`click${EVENT_KEY$9}.data-api`,EVENT_KEYDOWN_DATA_API=`keydown${EVENT_KEY$9}.data-api`,EVENT_KEYUP_DATA_API=`keyup${EVENT_KEY$9}.data-api`,CLASS_NAME_SHOW$5="show",SELECTOR_DATA_TOGGLE$5='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',SELECTOR_DATA_TOGGLE_SHOWN=`${SELECTOR_DATA_TOGGLE$5}.show`,SELECTOR_MENU=".dropdown-menu",SELECTOR_SUBMENU=".dropdown-submenu",SELECTOR_SUBMENU_TOGGLE=".dropdown-submenu > .dropdown-item",SELECTOR_NAVBAR_NAV=".navbar-nav",SELECTOR_VISIBLE_ITEMS=".dropdown-item:not(.disabled):not(:disabled)",DEFAULT_PLACEMENT="bottom-start",SUBMENU_PLACEMENT="end-start",resolveLogicalPlacement=e=>isRTL$1()?e.replace(/^start(?=-|$)/,"right").replace(/^end(?=-|$)/,"left"):e.replace(/^start(?=-|$)/,"left").replace(/^end(?=-|$)/,"right"),triangleSign=(e,t,n)=>(e.x-n.x)*(t.y-n.y)-(t.x-n.x)*(e.y-n.y),Default$c={autoClose:!0,boundary:"clippingParents",container:!1,display:"dynamic",offset:[0,2],floatingConfig:null,placement:"bottom-start",reference:"toggle",strategy:"absolute",submenuTrigger:"both",submenuDelay:100},DefaultType$c={autoClose:"(boolean|string)",boundary:"(string|element)",container:"(string|element|boolean)",display:"string",offset:"(array|string|function)",floatingConfig:"(null|object|function)",placement:"string",reference:"(string|element|object)",strategy:"string",submenuTrigger:"string",submenuDelay:"number"};class Dropdown extends BaseComponent{constructor(e,t){super(e,t),this._floatingCleanup=null,this._mediaQueryListeners=[],this._responsivePlacements=null,this._parent=this._element.parentNode,this._isSubmenu=this._parent.classList.contains("dropdown-submenu"),this._openSubmenus=new Map,this._submenuCloseTimeouts=new Map,this._hoverIntentData=null,this._menu=SelectorEngine.next(this._element,SELECTOR_MENU)[0]||SelectorEngine.prev(this._element,SELECTOR_MENU)[0]||SelectorEngine.findOne(SELECTOR_MENU,this._parent),this._menuOriginalParent=this._menu?.parentNode,this._parseResponsivePlacements(),this._setupSubmenuListeners()}static get Default(){return Default$c}static get DefaultType(){return DefaultType$c}static get NAME(){return NAME$d}toggle(){return this._isShown()?this.hide():this.show()}show(){if(isDisabled(this._element)||this._isShown())return;const e={relatedTarget:this._element};if(!EventHandler.trigger(this._element,EVENT_SHOW$4,e).defaultPrevented){if(this._moveMenuToContainer(),this._createFloating(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const e of[].concat(...document.body.children))EventHandler.on(e,"mouseover",noop);this._element.focus(),this._element.setAttribute("aria-expanded","true"),this._menu.classList.add("show"),this._element.classList.add("show"),this._parent.classList.add("show"),EventHandler.trigger(this._element,EVENT_SHOWN$4,e)}}hide(){if(isDisabled(this._element)||!this._isShown())return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._disposeFloating(),this._restoreMenuToOriginalParent(),this._disposeMediaQueryListeners(),this._closeAllSubmenus(),this._clearAllSubmenuTimeouts(),super.dispose()}update(){this._floatingCleanup&&this._updateFloatingPosition()}_completeHide(e){if(!EventHandler.trigger(this._element,EVENT_HIDE$4,e).defaultPrevented){if(this._closeAllSubmenus(),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))EventHandler.off(e,"mouseover",noop);this._disposeFloating(),this._restoreMenuToOriginalParent(),this._menu.classList.remove("show"),this._element.classList.remove("show"),this._parent.classList.remove("show"),this._element.setAttribute("aria-expanded","false"),Manipulator.removeDataAttribute(this._menu,"placement"),Manipulator.removeDataAttribute(this._menu,"display"),EventHandler.trigger(this._element,EVENT_HIDDEN$4,e)}}_getConfig(e){if("object"==typeof(e=super._getConfig(e)).reference&&!isElement$1(e.reference)&&"function"!=typeof e.reference.getBoundingClientRect)throw new TypeError(`${NAME$d.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_createFloating(){if("static"===this._config.display)return void Manipulator.setDataAttribute(this._menu,"display","static");let e=this._element;"parent"===this._config.reference?e=this._parent:isElement$1(this._config.reference)?e=getElement(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference),this._updateFloatingPosition(e),this._floatingCleanup=autoUpdate(e,this._menu,()=>this._updateFloatingPosition(e))}async _updateFloatingPosition(e=null){if(!this._menu)return;e||(e="parent"===this._config.reference?this._parent:isElement$1(this._config.reference)?getElement(this._config.reference):"object"==typeof this._config.reference?this._config.reference:this._element);const t=this._getPlacement(),n=this._getFloatingMiddleware(),i=this._getFloatingConfig(t,n);await this._applyFloatingPosition(e,this._menu,i.placement,i.middleware,i.strategy)}_isShown(){return this._menu.classList.contains("show")}_getPlacement(){const e=this._responsivePlacements?getResponsivePlacement(this._responsivePlacements,"bottom-start"):this._config.placement;return resolveLogicalPlacement(e)}_parseResponsivePlacements(){this._responsivePlacements=parseResponsivePlacement(this._config.placement,"bottom-start"),this._responsivePlacements&&this._setupMediaQueryListeners()}_setupMediaQueryListeners(){this._disposeMediaQueryListeners(),this._mediaQueryListeners=createBreakpointListeners(()=>{this._isShown()&&this._updateFloatingPosition()})}_disposeMediaQueryListeners(){disposeBreakpointListeners(this._mediaQueryListeners),this._mediaQueryListeners=[]}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?({placement:t,rects:n})=>e({placement:t,reference:n.reference,floating:n.floating},this._element):e}_getFloatingMiddleware(){const e=this._getOffset();return[offset("function"==typeof e?e:{mainAxis:e[1]||0,crossAxis:e[0]||0}),flip({fallbackPlacements:this._getFallbackPlacements()}),shift({boundary:"clippingParents"===this._config.boundary?"clippingAncestors":this._config.boundary})]}_getFallbackPlacements(){return{bottom:["top","bottom-start","bottom-end","top-start","top-end"],"bottom-start":["top-start","bottom-end","top-end"],"bottom-end":["top-end","bottom-start","top-start"],top:["bottom","top-start","top-end","bottom-start","bottom-end"],"top-start":["bottom-start","top-end","bottom-end"],"top-end":["bottom-end","top-start","bottom-start"],right:["left","right-start","right-end","left-start","left-end"],"right-start":["left-start","right-end","left-end","top-start","bottom-start"],"right-end":["left-end","right-start","left-start","top-end","bottom-end"],left:["right","left-start","left-end","right-start","right-end"],"left-start":["right-start","left-end","right-end","top-start","bottom-start"],"left-end":["right-end","left-start","right-start","top-end","bottom-end"]}[this._getPlacement()]||["top","bottom","right","left"]}_getFloatingConfig(e,t){const n={placement:e,middleware:t,strategy:this._config.strategy};return{...n,...execute(this._config.floatingConfig,[void 0,n])}}_disposeFloating(){this._floatingCleanup&&(this._floatingCleanup(),this._floatingCleanup=null)}_getContainer(){const{container:e}=this._config;return!1===e?null:!0===e?document.body:getElement(e)}_moveMenuToContainer(){const e=this._getContainer();e&&this._menu&&this._menu.parentNode!==e&&e.append(this._menu)}_restoreMenuToOriginalParent(){this._menuOriginalParent&&this._menu&&this._menu.parentNode!==this._menuOriginalParent&&this._menuOriginalParent.append(this._menu)}async _applyFloatingPosition(e,t,n,i,s="absolute"){if(!t.isConnected)return null;const{x:o,y:a,placement:l}=await computePosition(e,t,{placement:n,middleware:i,strategy:s});return t.isConnected?(Object.assign(t.style,{position:s,left:`${o}px`,top:`${a}px`,margin:"0"}),Manipulator.setDataAttribute(t,"placement",l),l):null}_setupSubmenuListeners(){"hover"!==this._config.submenuTrigger&&"both"!==this._config.submenuTrigger||(EventHandler.on(this._menu,"mouseenter",SELECTOR_SUBMENU_TOGGLE,e=>{this._onSubmenuTriggerEnter(e)}),EventHandler.on(this._menu,"mouseleave",SELECTOR_SUBMENU,e=>{this._onSubmenuLeave(e)}),EventHandler.on(this._menu,"mousemove",e=>{this._trackMousePosition(e)})),"click"!==this._config.submenuTrigger&&"both"!==this._config.submenuTrigger||EventHandler.on(this._menu,"click",SELECTOR_SUBMENU_TOGGLE,e=>{this._onSubmenuTriggerClick(e)})}_onSubmenuTriggerEnter(e){const t=e.target.closest(SELECTOR_SUBMENU_TOGGLE);if(!t)return;const n=t.closest(SELECTOR_SUBMENU),i=SelectorEngine.findOne(SELECTOR_MENU,n);i&&(this._cancelSubmenuCloseTimeout(i),this._closeSiblingSubmenus(n),this._openSubmenu(t,i,n))}_onSubmenuLeave(e){const t=e.target.closest(SELECTOR_SUBMENU),n=SelectorEngine.findOne(SELECTOR_MENU,t);n&&this._openSubmenus.has(n)&&(this._isMovingTowardSubmenu(e,n)||this._scheduleSubmenuClose(n,t))}_onSubmenuTriggerClick(e){const t=e.target.closest(SELECTOR_SUBMENU_TOGGLE);if(!t)return;e.preventDefault(),e.stopPropagation();const n=t.closest(SELECTOR_SUBMENU),i=SelectorEngine.findOne(SELECTOR_MENU,n);i&&(this._openSubmenus.has(i)?this._closeSubmenu(i,n):(this._closeSiblingSubmenus(n),this._openSubmenu(t,i,n)))}_openSubmenu(e,t,n){if(this._openSubmenus.has(t))return;e.setAttribute("aria-expanded","true"),e.setAttribute("aria-haspopup","true"),t.classList.add("show"),n.classList.add("show");const i=this._createSubmenuFloating(e,t,n);this._openSubmenus.set(t,i),EventHandler.on(t,"mouseenter",()=>{this._cancelSubmenuCloseTimeout(t)})}_closeSubmenu(e,t){if(!this._openSubmenus.has(e))return;const n=SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.show`,e);for(const e of n){const t=e.closest(SELECTOR_SUBMENU);this._closeSubmenu(e,t)}const i=SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE,t),s=this._openSubmenus.get(e);s&&s(),this._openSubmenus.delete(e),EventHandler.off(e,"mouseenter"),i&&i.setAttribute("aria-expanded","false"),e.classList.remove("show"),t.classList.remove("show"),e.style.position="",e.style.left="",e.style.top="",e.style.margin=""}_closeAllSubmenus(){for(const[e]of this._openSubmenus){const t=e.closest(SELECTOR_SUBMENU);this._closeSubmenu(e,t)}}_closeSiblingSubmenus(e){const t=e.parentNode,n=SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.show`,t);for(const t of n){const n=t.closest(SELECTOR_SUBMENU);n!==e&&this._closeSubmenu(t,n)}}_createSubmenuFloating(e,t,n){const i=n,s=resolveLogicalPlacement("end-start"),o=[offset({mainAxis:0,crossAxis:-4}),flip({fallbackPlacements:[resolveLogicalPlacement("start-start"),resolveLogicalPlacement("end-end"),resolveLogicalPlacement("start-end")]}),shift({padding:8})],a=()=>this._applyFloatingPosition(i,t,s,o);return a(),autoUpdate(i,t,a)}_scheduleSubmenuClose(e,t){this._cancelSubmenuCloseTimeout(e);const n=setTimeout(()=>{this._closeSubmenu(e,t),this._submenuCloseTimeouts.delete(e)},this._config.submenuDelay);this._submenuCloseTimeouts.set(e,n)}_cancelSubmenuCloseTimeout(e){const t=this._submenuCloseTimeouts.get(e);t&&(clearTimeout(t),this._submenuCloseTimeouts.delete(e))}_clearAllSubmenuTimeouts(){for(const e of this._submenuCloseTimeouts.values())clearTimeout(e);this._submenuCloseTimeouts.clear()}_trackMousePosition(e){this._hoverIntentData={x:e.clientX,y:e.clientY,timestamp:Date.now()}}_isMovingTowardSubmenu(e,t){if(!this._hoverIntentData)return!1;const n=t.getBoundingClientRect(),i={x:e.clientX,y:e.clientY},s={x:this._hoverIntentData.x,y:this._hoverIntentData.y},o=isRTL$1()?n.right:n.left,a={x:o,y:n.top},l={x:o,y:n.bottom};return this._pointInTriangle(i,s,a,l)}_pointInTriangle(e,t,n,i){const s=triangleSign(e,t,n),o=triangleSign(e,n,i),a=triangleSign(e,i,t);return!((s<0||o<0||a<0)&&(s>0||o>0||a>0))}_selectMenuItem({key:e,target:t}){const n=t.closest(SELECTOR_MENU)||this._menu,i=SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`,n).filter(e=>isVisible(e));i.length&&getNextActiveElement(i,t,e===ARROW_DOWN_KEY$1,!i.includes(t)).focus()}_handleSubmenuKeydown(e){const{key:t,target:n}=e,i=isRTL$1(),s=i?ARROW_LEFT_KEY$1:ARROW_RIGHT_KEY$1,o=i?ARROW_RIGHT_KEY$1:ARROW_LEFT_KEY$1,a=n.closest(SELECTOR_SUBMENU),l=a&&n.matches(SELECTOR_SUBMENU_TOGGLE);if((t===ENTER_KEY||t===SPACE_KEY)&&l){e.preventDefault(),e.stopPropagation();const t=SelectorEngine.findOne(SELECTOR_MENU,a);return t&&(this._closeSiblingSubmenus(a),this._openSubmenu(n,t,a),requestAnimationFrame(()=>{const e=SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS,t);e&&e.focus()})),!0}if(t===s&&l){e.preventDefault(),e.stopPropagation();const t=SelectorEngine.findOne(SELECTOR_MENU,a);return t&&(this._closeSiblingSubmenus(a),this._openSubmenu(n,t,a),requestAnimationFrame(()=>{const e=SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS,t);e&&e.focus()})),!0}if(t===o){const t=n.closest(SELECTOR_MENU),i=t?.closest(SELECTOR_SUBMENU);if(i){e.preventDefault(),e.stopPropagation();const n=SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE,i);return this._closeSubmenu(t,i),n&&n.focus(),!0}}if(t===HOME_KEY$1||t===END_KEY$1){e.preventDefault(),e.stopPropagation();const i=n.closest(SELECTOR_MENU),s=SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`,i).filter(e=>isVisible(e));return s.length&&(t===HOME_KEY$1?s[0]:s[s.length-1]).focus(),!0}return!1}static clearMenus(e){if(2===e.button||"keyup"===e.type&&"Tab"!==e.key)return;const t=SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);for(const n of t){const t=Dropdown.getInstance(n);if(!t||!1===t._config.autoClose)continue;const i=e.composedPath(),s=i.includes(t._menu);if(i.includes(t._element)||"inside"===t._config.autoClose&&!s||"outside"===t._config.autoClose&&s)continue;if(t._menu.contains(e.target)&&("keyup"===e.type&&"Tab"===e.key||/input|select|option|textarea|form/i.test(e.target.tagName)))continue;const o={relatedTarget:t._element};"click"===e.type&&(o.clickEvent=e),t._completeHide(o)}}static dataApiKeydownHandler(e){const t=/input|textarea/i.test(e.target.tagName),n="Escape"===e.key,i=[ARROW_UP_KEY$1,ARROW_DOWN_KEY$1].includes(e.key),s=[ARROW_LEFT_KEY$1,ARROW_RIGHT_KEY$1].includes(e.key),o=[HOME_KEY$1,END_KEY$1].includes(e.key),a=[ENTER_KEY,SPACE_KEY].includes(e.key),l=e.target.matches(SELECTOR_SUBMENU_TOGGLE);if(!(i||n||s||o||a&&l))return;if(t&&!n)return;const r=this.matches(SELECTOR_DATA_TOGGLE$5)?this:SelectorEngine.prev(this,SELECTOR_DATA_TOGGLE$5)[0]||SelectorEngine.next(this,SELECTOR_DATA_TOGGLE$5)[0]||SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$5,e.delegateTarget.parentNode);if(!r)return;const c=Dropdown.getOrCreateInstance(r);if(!(s||o||a&&l)||!c._handleSubmenuKeydown(e)){if(i)return e.preventDefault(),e.stopPropagation(),c.show(),void c._selectMenuItem(e);if(n&&c._isShown()){e.preventDefault(),e.stopPropagation();const t=e.target.closest(SELECTOR_MENU),n=t?.closest(SELECTOR_SUBMENU);if(n&&c._openSubmenus.size>0){const e=SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE,n);return c._closeSubmenu(t,n),void(e&&e.focus())}c.hide(),r.focus()}}}}EventHandler.on(document,EVENT_KEYDOWN_DATA_API,SELECTOR_DATA_TOGGLE$5,Dropdown.dataApiKeydownHandler),EventHandler.on(document,EVENT_KEYDOWN_DATA_API,SELECTOR_MENU,Dropdown.dataApiKeydownHandler),EventHandler.on(document,EVENT_CLICK_DATA_API$2,Dropdown.clearMenus),EventHandler.on(document,EVENT_KEYUP_DATA_API,Dropdown.clearMenus),EventHandler.on(document,EVENT_CLICK_DATA_API$2,SELECTOR_DATA_TOGGLE$5,function(e){e.preventDefault(),Dropdown.getOrCreateInstance(this).toggle()});const NAME$c="navoverflow",DATA_KEY$8="bs.navoverflow",EVENT_KEY$8=`.${DATA_KEY$8}`,EVENT_UPDATE=`update${EVENT_KEY$8}`,EVENT_OVERFLOW=`overflow${EVENT_KEY$8}`,CLASS_NAME_OVERFLOW="nav-overflow",CLASS_NAME_OVERFLOW_MENU="nav-overflow-menu",CLASS_NAME_HIDDEN="d-none",SELECTOR_NAV_ITEM=".nav-item",SELECTOR_NAV_LINK=".nav-link",SELECTOR_OVERFLOW_TOGGLE=".nav-overflow-toggle",SELECTOR_OVERFLOW_MENU=".nav-overflow-menu",CLASS_NAME_KEEP="nav-overflow-keep",Default$b={moreText:"More",moreIcon:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"><path d="M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/></svg>',threshold:0},DefaultType$b={moreText:"string",moreIcon:"string",threshold:"number"};class NavOverflow extends BaseComponent{constructor(e,t){super(e,t),this._items=[],this._overflowItems=[],this._overflowMenu=null,this._overflowToggle=null,this._resizeObserver=null,this._isInitialized=!1,this._init()}static get Default(){return Default$b}static get DefaultType(){return DefaultType$b}static get NAME(){return NAME$c}update(){this._calculateOverflow(),EventHandler.trigger(this._element,EVENT_UPDATE)}dispose(){this._resizeObserver&&this._resizeObserver.disconnect(),this._restoreItems(),this._overflowToggle&&this._overflowToggle.parentElement&&this._overflowToggle.parentElement.remove(),super.dispose()}_init(){this._element.classList.add("nav-overflow"),this._items=[...SelectorEngine.find(".nav-item",this._element)];for(const[e,t]of this._items.entries())t.dataset.bsNavOrder=e;this._createOverflowMenu(),this._setupResizeObserver(),this._calculateOverflow(),this._isInitialized=!0}_createOverflowMenu(){if(this._overflowToggle=SelectorEngine.findOne(".nav-overflow-toggle",this._element),this._overflowToggle)return void(this._overflowMenu=SelectorEngine.findOne(".nav-overflow-menu",this._element));const e=document.createElement("li");e.className="nav-item nav-overflow-item dropdown",e.innerHTML=`\n      <button class="nav-link nav-overflow-toggle dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-container="body" data-bs-strategy="fixed" aria-expanded="false">\n        <span class="nav-overflow-icon">${this._config.moreIcon}</span>\n        <span class="nav-overflow-text">${this._config.moreText}</span>\n      </button>\n      <ul class="nav-overflow-menu dropdown-menu dropdown-menu-end"></ul>\n    `,this._element.append(e),this._overflowToggle=e.querySelector(".nav-overflow-toggle"),this._overflowMenu=e.querySelector(".nav-overflow-menu")}_setupResizeObserver(){"undefined"!=typeof ResizeObserver?(this._resizeObserver=new ResizeObserver(()=>{this._calculateOverflow()}),this._resizeObserver.observe(this._element)):EventHandler.on(window,"resize",()=>this._calculateOverflow())}_calculateOverflow(){this._restoreItems();const e=this._element.offsetWidth,t=this._overflowToggle?.closest(".nav-item");let n=0;const i=[],s=e-(t?.offsetWidth||0)-10;for(const e of this._items)n+=e.offsetWidth,e.classList.contains(CLASS_NAME_KEEP)||n>s&&i.push(e);if(this._items.length-i.length<this._config.threshold&&this._items.length>this._config.threshold){const e=this._items.slice(this._config.threshold).filter(e=>!e.classList.contains(CLASS_NAME_KEEP));i.length=0,i.push(...e)}this._moveToOverflow(i),t&&(i.length>0?t.classList.remove("d-none"):t.classList.add("d-none")),i.length>0&&EventHandler.trigger(this._element,EVENT_OVERFLOW,{overflowCount:i.length,visibleCount:this._items.length-i.length})}_moveToOverflow(e){if(this._overflowMenu){this._overflowMenu.innerHTML="",this._overflowItems=[];for(const t of e){const e=SelectorEngine.findOne(".nav-link",t);if(!e)continue;const n=document.createElement("li"),i=e.cloneNode(!0);i.className="dropdown-item",e.classList.contains("active")&&i.classList.add("active"),(e.classList.contains("disabled")||e.hasAttribute("disabled"))&&i.classList.add("disabled"),n.append(i),this._overflowMenu.append(n),t.classList.add("d-none"),t.dataset.bsNavOverflow="true",this._overflowItems.push(t)}}}_restoreItems(){for(const e of this._items)e.classList.remove("d-none"),delete e.dataset.bsNavOverflow;this._overflowMenu&&(this._overflowMenu.innerHTML=""),this._overflowItems=[]}}EventHandler.on(document,"DOMContentLoaded",()=>{for(const e of SelectorEngine.find('[data-bs-toggle="nav-overflow"]'))NavOverflow.getOrCreateInstance(e)});const NAME$b="backdrop",CLASS_NAME_FADE$3="fade",CLASS_NAME_SHOW$4="show",EVENT_MOUSEDOWN=`mousedown.bs.${NAME$b}`,Default$a={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},DefaultType$a={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Backdrop extends Config{constructor(e){super(),this._config=this._getConfig(e),this._isAppended=!1,this._element=null}static get Default(){return Default$a}static get DefaultType(){return DefaultType$a}static get NAME(){return NAME$b}show(e){if(!this._config.isVisible)return void execute(e);this._append();const t=this._getElement();this._config.isAnimated&&reflow(t),t.classList.add("show"),this._emulateAnimation(()=>{execute(e)})}hide(e){this._config.isVisible?(this._getElement().classList.remove("show"),this._emulateAnimation(()=>{this.dispose(),execute(e)})):execute(e)}dispose(){this._isAppended&&(EventHandler.off(this._element,EVENT_MOUSEDOWN),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const e=document.createElement("div");e.className=this._config.className,this._config.isAnimated&&e.classList.add("fade"),this._element=e}return this._element}_configAfterMerge(e){return e.rootElement=getElement(e.rootElement),e}_append(){if(this._isAppended)return;const e=this._getElement();this._config.rootElement.append(e),EventHandler.on(e,EVENT_MOUSEDOWN,()=>{execute(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(e){executeAfterTransition(e,this._getElement(),this._config.isAnimated)}}const NAME$a="focustrap",DATA_KEY$7="bs.focustrap",EVENT_KEY$7=`.${DATA_KEY$7}`,EVENT_FOCUSIN$3=`focusin${EVENT_KEY$7}`,EVENT_KEYDOWN_TAB=`keydown.tab${EVENT_KEY$7}`,TAB_KEY="Tab",TAB_NAV_FORWARD="forward",TAB_NAV_BACKWARD="backward",Default$9={autofocus:!0,trapElement:null},DefaultType$9={autofocus:"boolean",trapElement:"element"};class FocusTrap extends Config{constructor(e){super(),this._config=this._getConfig(e),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return Default$9}static get DefaultType(){return DefaultType$9}static get NAME(){return NAME$a}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),EventHandler.off(document,EVENT_KEY$7),EventHandler.on(document,EVENT_FOCUSIN$3,e=>this._handleFocusin(e)),EventHandler.on(document,EVENT_KEYDOWN_TAB,e=>this._handleKeydown(e)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,EventHandler.off(document,EVENT_KEY$7))}_handleFocusin(e){const{trapElement:t}=this._config;if(e.target===document||e.target===t||t.contains(e.target))return;const n=SelectorEngine.focusableChildren(t);0===n.length?t.focus():"backward"===this._lastTabNavDirection?n[n.length-1].focus():n[0].focus()}_handleKeydown(e){"Tab"===e.key&&(this._lastTabNavDirection=e.shiftKey?"backward":"forward")}}const SELECTOR_FIXED_CONTENT=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",SELECTOR_STICKY_CONTENT=".sticky-top",PROPERTY_PADDING="padding-right",PROPERTY_MARGIN="margin-right";class ScrollBarHelper{constructor(){this._element=document.body}getWidth(){const e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}hide(){const e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,"padding-right",t=>t+e),this._setElementAttributes(SELECTOR_FIXED_CONTENT,"padding-right",t=>t+e),this._setElementAttributes(".sticky-top","margin-right",t=>t-e)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"padding-right"),this._resetElementAttributes(SELECTOR_FIXED_CONTENT,"padding-right"),this._resetElementAttributes(".sticky-top","margin-right")}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(e,t,n){const i=this.getWidth();this._applyManipulationCallback(e,e=>{if(e!==this._element&&window.innerWidth>e.clientWidth+i)return;this._saveInitialAttribute(e,t);const s=window.getComputedStyle(e).getPropertyValue(t);e.style.setProperty(t,`${n(Number.parseFloat(s))}px`)})}_saveInitialAttribute(e,t){const n=e.style.getPropertyValue(t);n&&Manipulator.setDataAttribute(e,t,n)}_resetElementAttributes(e,t){this._applyManipulationCallback(e,e=>{const n=Manipulator.getDataAttribute(e,t);null!==n?(Manipulator.removeDataAttribute(e,t),e.style.setProperty(t,n)):e.style.removeProperty(t)})}_applyManipulationCallback(e,t){if(isElement$1(e))t(e);else for(const n of SelectorEngine.find(e,this._element))t(n)}}const NAME$9="offcanvas",DATA_KEY$6="bs.offcanvas",EVENT_KEY$6=`.${DATA_KEY$6}`,DATA_API_KEY$3=".data-api",EVENT_LOAD_DATA_API$2=`load${EVENT_KEY$6}.data-api`,ESCAPE_KEY="Escape",CLASS_NAME_SHOW$3="show",CLASS_NAME_SHOWING$1="showing",CLASS_NAME_HIDING="hiding",CLASS_NAME_BACKDROP="offcanvas-backdrop",OPEN_SELECTOR=".offcanvas.show",EVENT_SHOW$3=`show${EVENT_KEY$6}`,EVENT_SHOWN$3=`shown${EVENT_KEY$6}`,EVENT_HIDE$3=`hide${EVENT_KEY$6}`,EVENT_HIDE_PREVENTED=`hidePrevented${EVENT_KEY$6}`,EVENT_HIDDEN$3=`hidden${EVENT_KEY$6}`,EVENT_RESIZE=`resize${EVENT_KEY$6}`,EVENT_CLICK_DATA_API$1=`click${EVENT_KEY$6}.data-api`,EVENT_KEYDOWN_DISMISS=`keydown.dismiss${EVENT_KEY$6}`,SELECTOR_DATA_TOGGLE$4='[data-bs-toggle="offcanvas"]',Default$8={backdrop:!0,keyboard:!0,scroll:!1},DefaultType$8={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Offcanvas extends BaseComponent{constructor(e,t){super(e,t),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Default$8}static get DefaultType(){return DefaultType$8}static get NAME(){return NAME$9}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){this._isShown||EventHandler.trigger(this._element,EVENT_SHOW$3,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new ScrollBarHelper).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add("showing"),this._queueCallback(()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add("show"),this._element.classList.remove("showing"),EventHandler.trigger(this._element,EVENT_SHOWN$3,{relatedTarget:e})},this._element,!0))}hide(){this._isShown&&(EventHandler.trigger(this._element,EVENT_HIDE$3).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add("hiding"),this._backdrop.hide(),this._queueCallback(()=>{this._element.classList.remove("show","hiding"),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new ScrollBarHelper).reset(),EventHandler.trigger(this._element,EVENT_HIDDEN$3)},this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const e=Boolean(this._config.backdrop);return new Backdrop({className:CLASS_NAME_BACKDROP,isVisible:e,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:e?()=>{"static"!==this._config.backdrop?this.hide():EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED)}:null})}_initializeFocusTrap(){return new FocusTrap({trapElement:this._element})}_addEventListeners(){EventHandler.on(this._element,EVENT_KEYDOWN_DISMISS,e=>{"Escape"===e.key&&(this._config.keyboard?this.hide():EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED))})}}EventHandler.on(document,EVENT_CLICK_DATA_API$1,SELECTOR_DATA_TOGGLE$4,function(e){const t=SelectorEngine.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),isDisabled(this))return;EventHandler.one(t,EVENT_HIDDEN$3,()=>{isVisible(this)&&this.focus()});const n=SelectorEngine.findOne(OPEN_SELECTOR);n&&n!==t&&Offcanvas.getInstance(n).hide(),Offcanvas.getOrCreateInstance(t).toggle(this)}),EventHandler.on(window,EVENT_LOAD_DATA_API$2,()=>{for(const e of SelectorEngine.find(OPEN_SELECTOR))Offcanvas.getOrCreateInstance(e).show()}),EventHandler.on(window,EVENT_RESIZE,()=>{for(const e of SelectorEngine.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(e).position&&Offcanvas.getOrCreateInstance(e).hide()}),enableDismissTrigger(Offcanvas);const NAME$8="strength",DATA_KEY$5="bs.strength",EVENT_KEY$5=`.${DATA_KEY$5}`,DATA_API_KEY$2=".data-api",EVENT_STRENGTH_CHANGE=`strengthChange${EVENT_KEY$5}`,SELECTOR_DATA_STRENGTH="[data-bs-strength]",STRENGTH_LEVELS=["weak","fair","good","strong"],Default$7={input:null,minLength:8,messages:{weak:"Weak",fair:"Fair",good:"Good",strong:"Strong"},weights:{minLength:1,extraLength:1,lowercase:1,uppercase:1,numbers:1,special:1,multipleSpecial:1,longPassword:1},thresholds:[2,4,6],scorer:null},DefaultType$7={input:"(string|element|null)",minLength:"number",messages:"object",weights:"object",thresholds:"array",scorer:"(function|null)"};class Strength extends BaseComponent{constructor(e,t){super(e,t),this._input=this._getInput(),this._segments=SelectorEngine.find(".strength-segment",this._element),this._textElement=SelectorEngine.findOne(".strength-text",this._element.parentElement),this._currentStrength=null,this._input&&(this._addEventListeners(),this._evaluate())}static get Default(){return Default$7}static get DefaultType(){return DefaultType$7}static get NAME(){return NAME$8}getStrength(){return this._currentStrength}evaluate(){this._evaluate()}_getInput(){if(this._config.input)return"string"==typeof this._config.input?SelectorEngine.findOne(this._config.input):this._config.input;const e=this._element.parentElement;return SelectorEngine.findOne('input[type="password"]',e)}_addEventListeners(){EventHandler.on(this._input,"input",()=>this._evaluate()),EventHandler.on(this._input,"change",()=>this._evaluate())}_evaluate(){const e=this._input.value,t=this._calculateScore(e),n=this._scoreToStrength(t);n!==this._currentStrength&&(this._currentStrength=n,this._updateUI(n,t),EventHandler.trigger(this._element,EVENT_STRENGTH_CHANGE,{strength:n,score:t,password:e.length>0?"***":""}))}_calculateScore(e){if(!e)return 0;if("function"==typeof this._config.scorer)return this._config.scorer(e);const{weights:t}=this._config;let n=0;return e.length>=this._config.minLength&&(n+=t.minLength),e.length>=this._config.minLength+4&&(n+=t.extraLength),/[a-z]/.test(e)&&(n+=t.lowercase),/[A-Z]/.test(e)&&(n+=t.uppercase),/\d/.test(e)&&(n+=t.numbers),/[!@#$%^&*(),.?":{}|<>]/.test(e)&&(n+=t.special),/[!@#$%^&*(),.?":{}|<>].*[!@#$%^&*(),.?":{}|<>]/.test(e)&&(n+=t.multipleSpecial),e.length>=16&&(n+=t.longPassword),n}_scoreToStrength(e){if(0===e)return null;const[t,n,i]=this._config.thresholds;return e<=t?"weak":e<=n?"fair":e<=i?"good":"strong"}_updateUI(e){e?this._element.dataset.bsStrength=e:delete this._element.dataset.bsStrength;const t=e?STRENGTH_LEVELS.indexOf(e):-1;for(const[e,n]of this._segments.entries())e<=t?n.classList.add("active"):n.classList.remove("active");if(this._textElement)if(e&&this._config.messages[e]){this._textElement.textContent=this._config.messages[e],this._textElement.dataset.bsStrength=e;const t={weak:"danger",fair:"warning",good:"info",strong:"success"};this._textElement.style.setProperty("--strength-color",`var(--${t[e]}-text)`)}else this._textElement.textContent="",delete this._textElement.dataset.bsStrength}}EventHandler.on(document,`DOMContentLoaded${EVENT_KEY$5}.data-api`,()=>{for(const e of SelectorEngine.find("[data-bs-strength]"))Strength.getOrCreateInstance(e)});const NAME$7="otpInput",DATA_KEY$4="bs.otp-input",EVENT_KEY$4=`.${DATA_KEY$4}`,DATA_API_KEY$1=".data-api",EVENT_COMPLETE=`complete${EVENT_KEY$4}`,EVENT_INPUT=`input${EVENT_KEY$4}`,SELECTOR_DATA_OTP="[data-bs-otp]",SELECTOR_INPUT="input",Default$6={length:6,mask:!1},DefaultType$6={length:"number",mask:"boolean"};class OtpInput extends BaseComponent{constructor(e,t){super(e,t),this._inputs=SelectorEngine.find("input",this._element),this._setupInputs(),this._addEventListeners()}static get Default(){return Default$6}static get DefaultType(){return DefaultType$6}static get NAME(){return NAME$7}getValue(){return this._inputs.map(e=>e.value).join("")}setValue(e){const t=String(e).split("");for(const[e,n]of this._inputs.entries())n.value=t[e]||"";this._checkComplete()}clear(){for(const e of this._inputs)e.value="";this._inputs[0]?.focus()}focus(){const e=this._inputs.find(e=>!e.value);e?e.focus():this._inputs.at(-1)?.focus()}_setupInputs(){for(const e of this._inputs)e.setAttribute("maxlength","1"),e.setAttribute("inputmode","numeric"),e.setAttribute("pattern","\\d*"),e===this._inputs[0]?e.setAttribute("autocomplete","one-time-code"):e.setAttribute("autocomplete","off"),this._config.mask&&e.setAttribute("type","password")}_addEventListeners(){for(const[e,t]of this._inputs.entries())EventHandler.on(t,"input",t=>this._handleInput(t,e)),EventHandler.on(t,"keydown",t=>this._handleKeydown(t,e)),EventHandler.on(t,"paste",e=>this._handlePaste(e)),EventHandler.on(t,"focus",e=>this._handleFocus(e))}_handleInput(e,t){const n=e.target;/^\d*$/.test(n.value)||(n.value=n.value.replace(/\D/g,""));const{value:i}=n;if(i.length>1){const e=i.split("");n.value=e[0]||"";for(let n=1;n<e.length&&t+n<this._inputs.length;n++)this._inputs[t+n].value=e[n];const s=Math.min(t+e.length,this._inputs.length-1);this._inputs[s].focus()}else i&&t<this._inputs.length-1&&this._inputs[t+1].focus();EventHandler.trigger(this._element,EVENT_INPUT,{value:this.getValue(),index:t}),this._checkComplete()}_handleKeydown(e,t){const{key:n}=e;switch(n){case"Backspace":!this._inputs[t].value&&t>0&&(e.preventDefault(),this._inputs[t-1].value="",this._inputs[t-1].focus());break;case"Delete":e.preventDefault();for(let e=t;e<this._inputs.length-1;e++)this._inputs[e].value=this._inputs[e+1].value;this._inputs.at(-1).value="";break;case"ArrowLeft":t>0&&(e.preventDefault(),this._inputs[t-1].focus());break;case"ArrowRight":t<this._inputs.length-1&&(e.preventDefault(),this._inputs[t+1].focus())}}_handlePaste(e){e.preventDefault();const t=(e.clipboardData||window.clipboardData).getData("text").replace(/\D/g,"").slice(0,this._inputs.length);if(t){this.setValue(t);const e=Math.min(t.length,this._inputs.length)-1;this._inputs[e].focus()}}_handleFocus(e){e.target.select()}_checkComplete(){const e=this.getValue();e.length===this._inputs.length&&this._inputs.every(e=>""!==e.value)&&EventHandler.trigger(this._element,EVENT_COMPLETE,{value:e})}}EventHandler.on(document,`DOMContentLoaded${EVENT_KEY$4}.data-api`,()=>{for(const e of SelectorEngine.find("[data-bs-otp]"))OtpInput.getOrCreateInstance(e)});const ARIA_ATTRIBUTE_PATTERN=/^aria-[\w-]*$/i,DefaultAllowlist={"*":["class","dir","id","lang","role",ARIA_ATTRIBUTE_PATTERN],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},uriAttributes=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),SAFE_URL_PATTERN=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,allowedAttribute=(e,t)=>{const n=e.nodeName.toLowerCase();return t.includes(n)?!uriAttributes.has(n)||Boolean(SAFE_URL_PATTERN.test(e.nodeValue)):t.filter(e=>e instanceof RegExp).some(e=>e.test(n))};function sanitizeHtml(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const i=(new window.DOMParser).parseFromString(e,"text/html"),s=[].concat(...i.body.querySelectorAll("*"));for(const e of s){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const i=[].concat(...e.attributes),s=[].concat(t["*"]||[],t[n]||[]);for(const t of i)allowedAttribute(t,s)||e.removeAttribute(t.nodeName)}return i.body.innerHTML}const NAME$6="TemplateFactory",Default$5={allowList:DefaultAllowlist,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},DefaultType$5={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},DefaultContentType={entry:"(string|element|function|null)",selector:"(string|element)"};class TemplateFactory extends Config{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Default$5}static get DefaultType(){return DefaultType$5}static get NAME(){return NAME$6}getContent(){return Object.values(this._config.content).map(e=>this._resolvePossibleFunction(e)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},DefaultContentType)}_setContent(e,t,n){const i=SelectorEngine.findOne(n,e);i&&((t=this._resolvePossibleFunction(t))?isElement$1(t)?this._putElementInTemplate(getElement(t),i):this._config.html?i.innerHTML=this._maybeSanitize(t):i.textContent=t:i.remove())}_maybeSanitize(e){return this._config.sanitize?sanitizeHtml(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return execute(e,[void 0,this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const NAME$5="tooltip",DISALLOWED_ATTRIBUTES=new Set(["sanitize","allowList","sanitizeFn"]),CLASS_NAME_FADE$2="fade",CLASS_NAME_MODAL="modal",CLASS_NAME_SHOW$2="show",SELECTOR_TOOLTIP_INNER=".tooltip-inner",SELECTOR_MODAL=".modal",SELECTOR_DATA_TOGGLE$3='[data-bs-toggle="tooltip"]',EVENT_MODAL_HIDE="hide.bs.modal",TRIGGER_HOVER="hover",TRIGGER_FOCUS="focus",TRIGGER_CLICK="click",TRIGGER_MANUAL="manual",EVENT_HIDE$2="hide",EVENT_HIDDEN$2="hidden",EVENT_SHOW$2="show",EVENT_SHOWN$2="shown",EVENT_INSERTED="inserted",EVENT_CLICK$3="click",EVENT_FOCUSIN$2="focusin",EVENT_FOCUSOUT$1="focusout",EVENT_MOUSEENTER$1="mouseenter",EVENT_MOUSELEAVE="mouseleave",AttachmentMap={AUTO:"auto",TOP:"top",RIGHT:isRTL$1()?"left":"right",BOTTOM:"bottom",LEFT:isRTL$1()?"right":"left"},Default$4={allowList:DefaultAllowlist,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",floatingConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},DefaultType$4={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",floatingConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Tooltip extends BaseComponent{constructor(e,t){super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._floatingCleanup=null,this._templateFactory=null,this._newContent=null,this._mediaQueryListeners=[],this._responsivePlacements=null,this.tip=null,this._parseResponsivePlacements(),this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Default$4}static get DefaultType(){return DefaultType$4}static get NAME(){return NAME$5}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),EventHandler.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposeFloating(),this._disposeMediaQueryListeners(),super.dispose()}async show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=EventHandler.trigger(this._element,this.constructor.eventName("show")),t=(findShadowRoot(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this._disposeFloating();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),EventHandler.trigger(this._element,this.constructor.eventName("inserted"))),await this._createFloating(n),n.classList.add("show"),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))EventHandler.on(e,"mouseover",noop);this._queueCallback(()=>{EventHandler.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1},this.tip,this._isAnimated())}hide(){if(this._isShown()&&!EventHandler.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove("show"),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))EventHandler.off(e,"mouseover",noop);this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this._isHovered=null,this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposeFloating(),this._element.removeAttribute("aria-describedby"),EventHandler.trigger(this._element,this.constructor.eventName("hidden")))},this.tip,this._isAnimated())}}update(){this._floatingCleanup&&this.tip&&this._updateFloatingPosition()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();t.classList.remove("fade","show"),t.classList.add(`bs-${this.constructor.NAME}-auto`);const n=getUID(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add("fade"),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposeFloating(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new TemplateFactory({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[SELECTOR_TOOLTIP_INNER]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains("fade")}_isShown(){return this.tip&&this.tip.classList.contains("show")}_getPlacement(e){if(this._responsivePlacements){const e=getResponsivePlacement(this._responsivePlacements,"top");return AttachmentMap[e.toUpperCase()]||e}const t=execute(this._config.placement,[this,e,this._element]);return AttachmentMap[t.toUpperCase()]||t}_parseResponsivePlacements(){"string"==typeof this._config.placement?(this._responsivePlacements=parseResponsivePlacement(this._config.placement,"top"),this._responsivePlacements&&this._setupMediaQueryListeners()):this._responsivePlacements=null}_setupMediaQueryListeners(){this._disposeMediaQueryListeners(),this._mediaQueryListeners=createBreakpointListeners(()=>{this._isShown()&&this._updateFloatingPosition()})}_disposeMediaQueryListeners(){disposeBreakpointListeners(this._mediaQueryListeners),this._mediaQueryListeners=[]}async _createFloating(e){const t=this._getPlacement(e),n=e.querySelector(`.${this.constructor.NAME}-arrow`);await this._updateFloatingPosition(e,t,n),this._floatingCleanup=autoUpdate(this._element,e,()=>this._updateFloatingPosition(e,null,n))}async _updateFloatingPosition(e=this.tip,t=null,n=null){if(!e)return;t||(t=this._getPlacement(e)),n||(n=e.querySelector(`.${this.constructor.NAME}-arrow`));const i=this._getFloatingMiddleware(n),s=this._getFloatingConfig(t,i),{x:o,y:a,placement:l,middlewareData:r}=await computePosition(this._element,e,s);if(Object.assign(e.style,{position:"absolute",left:`${o}px`,top:`${a}px`}),n&&(n.style.position="absolute"),Manipulator.setDataAttribute(e,"placement",l),n&&r.arrow){const{x:e,y:t}=r.arrow,i=l.startsWith("top")||l.startsWith("bottom");Object.assign(n.style,{left:i&&null!==e?`${e}px`:"",top:i||null===t?"":`${t}px`,right:"",bottom:""})}}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?({placement:t,rects:n})=>e({placement:t,reference:n.reference,floating:n.floating},this._element):e}_resolvePossibleFunction(e){return execute(e,[this._element,this._element])}_getFloatingMiddleware(e){const t=this._getOffset(),n=[offset("function"==typeof t?t:{mainAxis:t[1]||0,crossAxis:t[0]||0}),flip({fallbackPlacements:this._config.fallbackPlacements}),shift({boundary:"clippingParents"===this._config.boundary?"clippingAncestors":this._config.boundary})];return e&&n.push(arrow({element:e})),n}_getFloatingConfig(e,t){const n={placement:e,middleware:t};return{...n,...execute(this._config.floatingConfig,[void 0,n])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)EventHandler.on(this._element,this.constructor.eventName("click"),this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger.click=!(t._isShown()&&t._activeTrigger.click),t.toggle()});else if("manual"!==t){const e="hover"===t?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n="hover"===t?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");EventHandler.on(this._element,e,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?"focus":"hover"]=!0,t._enter()}),EventHandler.on(this._element,n,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?"focus":"hover"]=t._element.contains(e.relatedTarget),t._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},EventHandler.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=Manipulator.getDataAttributes(this._element);for(const e of Object.keys(t))DISALLOWED_ATTRIBUTES.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:getElement(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposeFloating(){this._floatingCleanup&&(this._floatingCleanup(),this._floatingCleanup=null),this.tip&&(this.tip.remove(),this.tip=null)}}const initTooltip=e=>{const t=e.target.closest(SELECTOR_DATA_TOGGLE$3);if(!t)return;const n=Tooltip.getOrCreateInstance(t);"focusin"===e.type&&(n._activeTrigger.focus=!0,n._enter())};EventHandler.on(document,"focusin",SELECTOR_DATA_TOGGLE$3,initTooltip),EventHandler.on(document,"mouseenter",SELECTOR_DATA_TOGGLE$3,initTooltip);const NAME$4="popover",SELECTOR_TITLE=".popover-header",SELECTOR_CONTENT=".popover-body",SELECTOR_DATA_TOGGLE$2='[data-bs-toggle="popover"]',EVENT_CLICK$2="click",EVENT_FOCUSIN$1="focusin",EVENT_MOUSEENTER="mouseenter",Default$3={...Tooltip.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},DefaultType$3={...Tooltip.DefaultType,content:"(null|string|element|function)"};class Popover extends Tooltip{static get Default(){return Default$3}static get DefaultType(){return DefaultType$3}static get NAME(){return NAME$4}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[SELECTOR_TITLE]:this._getTitle(),[SELECTOR_CONTENT]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}}const initPopover=e=>{const t=e.target.closest(SELECTOR_DATA_TOGGLE$2);if(!t)return;"click"===e.type&&e.preventDefault();const n=Popover.getOrCreateInstance(t);"click"===e.type?n.toggle():"focusin"===e.type&&(n._activeTrigger.focus=!0,n._enter())};EventHandler.on(document,"click",SELECTOR_DATA_TOGGLE$2,initPopover),EventHandler.on(document,"focusin",SELECTOR_DATA_TOGGLE$2,initPopover),EventHandler.on(document,"mouseenter",SELECTOR_DATA_TOGGLE$2,initPopover);const NAME$3="scrollspy",DATA_KEY$3="bs.scrollspy",EVENT_KEY$3=`.${DATA_KEY$3}`,DATA_API_KEY=".data-api",EVENT_ACTIVATE=`activate${EVENT_KEY$3}`,EVENT_CLICK$1=`click${EVENT_KEY$3}`,EVENT_LOAD_DATA_API$1=`load${EVENT_KEY$3}.data-api`,CLASS_NAME_DROPDOWN_ITEM="dropdown-item",CLASS_NAME_ACTIVE$1="active",SELECTOR_DATA_SPY='[data-bs-spy="scroll"]',SELECTOR_TARGET_LINKS="[href]",SELECTOR_NAV_LIST_GROUP=".nav, .list-group",SELECTOR_NAV_LINKS=".nav-link",SELECTOR_NAV_ITEMS=".nav-item",SELECTOR_LIST_ITEMS=".list-group-item",SELECTOR_LINK_ITEMS=".nav-link, .nav-item > .nav-link, .list-group-item",SELECTOR_DROPDOWN=".dropdown",SELECTOR_DROPDOWN_TOGGLE$1=".dropdown-toggle",Default$2={rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},DefaultType$2={rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class ScrollSpy extends BaseComponent{constructor(e,t){super(e,t),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return Default$2}static get DefaultType(){return DefaultType$2}static get NAME(){return NAME$3}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const e of this._observableSections.values())this._observer.observe(e)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(e){return e.target=getElement(e.target)||document.body,"string"==typeof e.threshold&&(e.threshold=e.threshold.split(",").map(e=>Number.parseFloat(e))),e}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(EventHandler.off(this._config.target,EVENT_CLICK$1),EventHandler.on(this._config.target,EVENT_CLICK$1,"[href]",e=>{const t=this._observableSections.get(e.target.hash);if(t){e.preventDefault();const n=this._rootElement||window,i=t.offsetTop-this._element.offsetTop;if(n.scrollTo)return void n.scrollTo({top:i,behavior:"smooth"});n.scrollTop=i}}))}_getNewObserver(){const e={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(e=>this._observerCallback(e),e)}_observerCallback(e){const t=e=>this._targetLinks.get(`#${e.target.id}`),n=e=>{this._previousScrollData.visibleEntryTop=e.target.offsetTop,this._process(t(e))},i=(this._rootElement||document.documentElement).scrollTop,s=i>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=i;for(const o of e){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(t(o));continue}const e=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&e){if(n(o),!i)return}else s||e||n(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const e=SelectorEngine.find("[href]",this._config.target);for(const t of e){if(!t.hash||isDisabled(t))continue;const e=SelectorEngine.findOne(decodeURI(t.hash),this._element);isVisible(e)&&(this._targetLinks.set(decodeURI(t.hash),t),this._observableSections.set(t.hash,e))}}_process(e){this._activeTarget!==e&&(this._clearActiveClass(this._config.target),this._activeTarget=e,e.classList.add("active"),this._activateParents(e),EventHandler.trigger(this._element,EVENT_ACTIVATE,{relatedTarget:e}))}_activateParents(e){if(e.classList.contains("dropdown-item"))SelectorEngine.findOne(".dropdown-toggle",e.closest(".dropdown")).classList.add("active");else for(const t of SelectorEngine.parents(e,".nav, .list-group"))for(const e of SelectorEngine.prev(t,SELECTOR_LINK_ITEMS))e.classList.add("active")}_clearActiveClass(e){e.classList.remove("active");const t=SelectorEngine.find("[href].active",e);for(const e of t)e.classList.remove("active")}}EventHandler.on(window,EVENT_LOAD_DATA_API$1,()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_SPY))ScrollSpy.getOrCreateInstance(e)});const NAME$2="tab",DATA_KEY$2="bs.tab",EVENT_KEY$2=".bs.tab",EVENT_HIDE$1="hide.bs.tab",EVENT_HIDDEN$1="hidden.bs.tab",EVENT_SHOW$1="show.bs.tab",EVENT_SHOWN$1="shown.bs.tab",EVENT_CLICK_DATA_API="click.bs.tab",EVENT_KEYDOWN="keydown.bs.tab",EVENT_LOAD_DATA_API="load.bs.tab",ARROW_LEFT_KEY="ArrowLeft",ARROW_RIGHT_KEY="ArrowRight",ARROW_UP_KEY="ArrowUp",ARROW_DOWN_KEY="ArrowDown",HOME_KEY="Home",END_KEY="End",CLASS_NAME_ACTIVE="active",CLASS_NAME_FADE$1="fade",CLASS_NAME_SHOW$1="show",CLASS_DROPDOWN="dropdown",SELECTOR_DROPDOWN_TOGGLE=".dropdown-toggle",SELECTOR_DROPDOWN_MENU=".dropdown-menu",NOT_SELECTOR_DROPDOWN_TOGGLE=":not(.dropdown-toggle)",SELECTOR_TAB_PANEL='.list-group, .nav, [role="tablist"]',SELECTOR_OUTER=".nav-item, .list-group-item",SELECTOR_INNER='.nav-link:not(.dropdown-toggle), .list-group-item:not(.dropdown-toggle), [role="tab"]:not(.dropdown-toggle)',SELECTOR_DATA_TOGGLE$1='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',SELECTOR_INNER_ELEM=`${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE$1}`,SELECTOR_DATA_TOGGLE_ACTIVE='.active[data-bs-toggle="tab"], .active[data-bs-toggle="pill"], .active[data-bs-toggle="list"]';class Tab extends BaseComponent{constructor(e){super(e),this._parent=this._element.closest(SELECTOR_TAB_PANEL),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),EventHandler.on(this._element,EVENT_KEYDOWN,e=>this._keydown(e)))}static get NAME(){return"tab"}show(){const e=this._element;if(this._elemIsActive(e))return;const t=this._getActiveElem(),n=t?EventHandler.trigger(t,EVENT_HIDE$1,{relatedTarget:e}):null;EventHandler.trigger(e,EVENT_SHOW$1,{relatedTarget:t}).defaultPrevented||n&&n.defaultPrevented||(this._deactivate(t,e),this._activate(e,t))}_activate(e,t){e&&(e.classList.add("active"),this._activate(SelectorEngine.getElementFromSelector(e)),this._queueCallback(()=>{"tab"===e.getAttribute("role")?(e.removeAttribute("tabindex"),e.setAttribute("aria-selected",!0),this._toggleDropDown(e,!0),EventHandler.trigger(e,EVENT_SHOWN$1,{relatedTarget:t})):e.classList.add("show")},e,e.classList.contains("fade")))}_deactivate(e,t){e&&(e.classList.remove("active"),e.blur(),this._deactivate(SelectorEngine.getElementFromSelector(e)),this._queueCallback(()=>{"tab"===e.getAttribute("role")?(e.setAttribute("aria-selected",!1),e.setAttribute("tabindex","-1"),this._toggleDropDown(e,!1),EventHandler.trigger(e,EVENT_HIDDEN$1,{relatedTarget:t})):e.classList.remove("show")},e,e.classList.contains("fade")))}_keydown(e){if(![ARROW_LEFT_KEY,ARROW_RIGHT_KEY,ARROW_UP_KEY,ARROW_DOWN_KEY,HOME_KEY,END_KEY].includes(e.key))return;e.stopPropagation(),e.preventDefault();const t=this._getChildren().filter(e=>!isDisabled(e));let n;if([HOME_KEY,END_KEY].includes(e.key))n=t[e.key===HOME_KEY?0:t.length-1];else{const i=[ARROW_RIGHT_KEY,ARROW_DOWN_KEY].includes(e.key);n=getNextActiveElement(t,e.target,i,!0)}n&&(n.focus({preventScroll:!0}),Tab.getOrCreateInstance(n).show())}_getChildren(){return SelectorEngine.find(SELECTOR_INNER_ELEM,this._parent)}_getActiveElem(){return this._getChildren().find(e=>this._elemIsActive(e))||null}_setInitialAttributes(e,t){this._setAttributeIfNotExists(e,"role","tablist");for(const e of t)this._setInitialAttributesOnChild(e)}_setInitialAttributesOnChild(e){e=this._getInnerElement(e);const t=this._elemIsActive(e),n=this._getOuterElement(e);e.setAttribute("aria-selected",t),n!==e&&this._setAttributeIfNotExists(n,"role","presentation"),t||e.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(e,"role","tab"),this._setInitialAttributesOnTargetPanel(e)}_setInitialAttributesOnTargetPanel(e){const t=SelectorEngine.getElementFromSelector(e);t&&(this._setAttributeIfNotExists(t,"role","tabpanel"),e.id&&this._setAttributeIfNotExists(t,"aria-labelledby",`${e.id}`))}_toggleDropDown(e,t){const n=this._getOuterElement(e);if(!n.classList.contains("dropdown"))return;const i=(e,i)=>{const s=SelectorEngine.findOne(e,n);s&&s.classList.toggle(i,t)};i(".dropdown-toggle","active"),i(".dropdown-menu","show"),n.setAttribute("aria-expanded",t)}_setAttributeIfNotExists(e,t,n){e.hasAttribute(t)||e.setAttribute(t,n)}_elemIsActive(e){return e.classList.contains("active")}_getInnerElement(e){return e.matches(SELECTOR_INNER_ELEM)?e:SelectorEngine.findOne(SELECTOR_INNER_ELEM,e)}_getOuterElement(e){return e.closest(SELECTOR_OUTER)||e}}EventHandler.on(document,"click.bs.tab",SELECTOR_DATA_TOGGLE$1,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault(),isDisabled(this)||Tab.getOrCreateInstance(this).show()}),EventHandler.on(window,"load.bs.tab",()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE))Tab.getOrCreateInstance(e)});const NAME$1="toast",DATA_KEY$1="bs.toast",EVENT_KEY$1=".bs.toast",EVENT_MOUSEOVER="mouseover.bs.toast",EVENT_MOUSEOUT="mouseout.bs.toast",EVENT_FOCUSIN="focusin.bs.toast",EVENT_FOCUSOUT="focusout.bs.toast",EVENT_HIDE="hide.bs.toast",EVENT_HIDDEN="hidden.bs.toast",EVENT_SHOW="show.bs.toast",EVENT_SHOWN="shown.bs.toast",CLASS_NAME_FADE="fade",CLASS_NAME_HIDE="hide",CLASS_NAME_SHOW="show",CLASS_NAME_SHOWING="showing",DefaultType$1={animation:"boolean",autohide:"boolean",delay:"number"},Default$1={animation:!0,autohide:!0,delay:5e3};class Toast extends BaseComponent{constructor(e,t){super(e,t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Default$1}static get DefaultType(){return DefaultType$1}static get NAME(){return NAME$1}show(){EventHandler.trigger(this._element,EVENT_SHOW).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove("hide"),reflow(this._element),this._element.classList.add("show","showing"),this._queueCallback(()=>{this._element.classList.remove("showing"),EventHandler.trigger(this._element,EVENT_SHOWN),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this.isShown()&&(EventHandler.trigger(this._element,EVENT_HIDE).defaultPrevented||(this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.add("hide"),this._element.classList.remove("showing","show"),EventHandler.trigger(this._element,EVENT_HIDDEN)},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove("show"),super.dispose()}isShown(){return this._element.classList.contains("show")}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)return void this._clearTimeout();const n=e.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}_setListeners(){EventHandler.on(this._element,EVENT_MOUSEOVER,e=>this._onInteraction(e,!0)),EventHandler.on(this._element,EVENT_MOUSEOUT,e=>this._onInteraction(e,!1)),EventHandler.on(this._element,EVENT_FOCUSIN,e=>this._onInteraction(e,!0)),EventHandler.on(this._element,EVENT_FOCUSOUT,e=>this._onInteraction(e,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}}enableDismissTrigger(Toast);const NAME="toggler",DATA_KEY="bs.toggler",EVENT_KEY=`.${DATA_KEY}`,EVENT_TOGGLE=`toggle${EVENT_KEY}`,EVENT_TOGGLED=`toggled${EVENT_KEY}`,EVENT_CLICK="click",SELECTOR_DATA_TOGGLE='[data-bs-toggle="toggler"]',DefaultType={attribute:"string",value:"(string|number|boolean)"},Default={attribute:"class",value:null};class Toggler extends BaseComponent{static get Default(){return Default}static get DefaultType(){return DefaultType}static get NAME(){return NAME}toggle(){EventHandler.trigger(this._element,EVENT_TOGGLE).defaultPrevented||(this._execute(),EventHandler.trigger(this._element,EVENT_TOGGLED))}_execute(){const{attribute:e,value:t}=this._config;"id"!==e&&("class"!==e?this._element.getAttribute(e)!==String(t)?this._element.setAttribute(e,t):this._element.removeAttribute(e):this._element.classList.toggle(t))}}eventActionOnPlugin(Toggler,"click",SELECTOR_DATA_TOGGLE,"toggle");export{Alert,Button,Carousel,Collapse,Datepicker,Dialog,Dropdown,NavOverflow,Offcanvas,OtpInput,Popover,ScrollSpy,Strength,Tab,Toast,Toggler,Tooltip};
+var __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__spreadValues=(e,t)=>{for(var n in t||(t={}))__hasOwnProp.call(t,n)&&__defNormalProp(e,n,t[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(t))__propIsEnum.call(t,n)&&__defNormalProp(e,n,t[n]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__publicField=(e,t,n)=>(__defNormalProp(e,"symbol"!=typeof t?t+"":t,n),n);const errorMessages={notFoundSelector:e=>`${e} is not found, check the first argument passed to new Calendar.`,notInit:'The calendar has not been initialized, please initialize it using the "init()" method first.',notLocale:"You specified an incorrect language label or did not specify the required number of values ​​for «locale.weekdays» or «locale.months».",incorrectTime:"The value of the time property can be: false, 12 or 24.",incorrectMonthsCount:"For the «multiple» calendar type, the «displayMonthsCount» parameter can have a value from 2 to 12, and for all others it cannot be greater than 1."},setContext=(e,t,n)=>{e.context[t]=n},destroy=e=>{var t,n,i,s,o;if(!e.context.isInit)throw new Error(errorMessages.notInit);e.inputMode?(null==(t=e.context.mainElement.parentElement)||t.removeChild(e.context.mainElement),null==(i=null==(n=e.context.inputElement)?void 0:n.replaceWith)||i.call(n,e.context.originalElement),setContext(e,"inputElement",void 0)):null==(o=(s=e.context.mainElement).replaceWith)||o.call(s,e.context.originalElement),setContext(e,"mainElement",e.context.originalElement),e.onDestroy&&e.onDestroy(e)},skipOpenOnFocus=new WeakSet,shouldSkipOpenOnFocus=e=>skipOpenOnFocus.has(e),setSkipOpenOnFocus=e=>{skipOpenOnFocus.add(e)},clearSkipOpenOnFocus=e=>{skipOpenOnFocus.delete(e)},PREV_TABINDEX_ATTR="data-vc-prev-tabindex",isFocusable=e=>e.tabIndex>=0&&!e.hasAttribute("disabled")&&"true"!==e.getAttribute("aria-disabled"),storePrevTabIndex=e=>{if(e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute("tabindex");e.setAttribute(PREV_TABINDEX_ATTR,null!=t?t:"")},restorePrevTabIndex=e=>{if(!e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(PREV_TABINDEX_ATTR);""===t||null===t?e.removeAttribute("tabindex"):e.setAttribute("tabindex",t),e.removeAttribute(PREV_TABINDEX_ATTR)},disableTabbing=e=>{isFocusable(e)&&(storePrevTabIndex(e),e.tabIndex=-1);const t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>isFocusable(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;t.nextNode();){const e=t.currentNode;storePrevTabIndex(e),e.tabIndex=-1}},restoreTabbing=e=>{restorePrevTabIndex(e),e.querySelectorAll(`[${PREV_TABINDEX_ATTR}]`).forEach(restorePrevTabIndex)},hide=e=>{e.context.isShowInInputMode&&e.context.currentType&&(e.context.mainElement.dataset.vcCalendarHidden="",setContext(e,"isShowInInputMode",!1),e.inputMode&&disableTabbing(e.context.mainElement),e.context.cleanupHandlers[0]&&(e.context.cleanupHandlers.forEach(e=>e()),setContext(e,"cleanupHandlers",[])),e.inputMode&&e.context.inputElement&&e.context.mainElement.contains(document.activeElement)&&(("function"==typeof e.openOnFocus||!0===e.openOnFocus)&&setSkipOpenOnFocus(e),e.context.inputElement.focus()),e.onHide&&e.onHide(e))};function getOffset(e){if(!e||!e.getBoundingClientRect)return{top:0,bottom:0,left:0,right:0};const t=e.getBoundingClientRect(),n=document.documentElement;return{bottom:t.bottom,right:t.right,top:t.top+window.scrollY-n.clientTop,left:t.left+window.scrollX-n.clientLeft}}function getViewportDimensions(){return{vw:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),vh:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}}function getWindowScrollPosition(){return{left:window.scrollX||document.documentElement.scrollLeft||0,top:window.scrollY||document.documentElement.scrollTop||0}}function calculateAvailableSpace(e){const{top:t,left:n}=getWindowScrollPosition(),{top:i,left:s}=getOffset(e),{vh:o,vw:a}=getViewportDimensions(),l=i-t,r=s-n;return{top:l,bottom:o-(l+e.clientHeight),left:r,right:a-(r+e.clientWidth)}}function getAvailablePosition(e,t,n=5){const i={top:!0,bottom:!0,left:!0,right:!0},s=[];if(!t||!e)return{canShow:i,parentPositions:s};const{bottom:o,top:a}=calculateAvailableSpace(e),{top:l,left:r}=getOffset(e),{height:c,width:d}=t.getBoundingClientRect(),{vh:u,vw:h}=getViewportDimensions(),m=h/2,_=u/2;return[{condition:l<_,position:"top"},{condition:l>_,position:"bottom"},{condition:r<m,position:"left"},{condition:r>m,position:"right"}].forEach(({condition:e,position:t})=>{e&&s.push(t)}),Object.assign(i,{top:c<=a-n,bottom:c<=o-n,left:d<=r,right:d<=h-r}),{canShow:i,parentPositions:s}}const handleDay=(e,t,n,i)=>{var s;const o=i.querySelector(`[data-vc-date="${t}"]`),a=null==o?void 0:o.querySelector("[data-vc-date-btn]");if(!o||!a)return;if((null==n?void 0:n.modifier)&&a.classList.add(...n.modifier.trim().split(" ")),!(null==n?void 0:n.html))return;const l=document.createElement("div");l.className=e.styles.datePopup,l.dataset.vcDatePopup="",l.innerHTML=e.sanitizerHTML(n.html),a.ariaExpanded="true",a.ariaLabel=`${a.ariaLabel}, ${null==(s=null==l?void 0:l.textContent)?void 0:s.replace(/^\s+|\s+(?=\s)|\s+$/g,"").replace(/&nbsp;/g," ")}`,o.appendChild(l),requestAnimationFrame(()=>{if(!l)return;const{canShow:e}=getAvailablePosition(o,l),t=e.bottom?o.offsetHeight:-l.offsetHeight,n=e.left&&!e.right?o.offsetWidth-l.offsetWidth/2:!e.left&&e.right?l.offsetWidth/2:0;Object.assign(l.style,{left:`${n}px`,top:`${t}px`})})},createDatePopup=(e,t)=>{var n;e.popups&&(null==(n=Object.entries(e.popups))||n.forEach(([n,i])=>handleDay(e,n,i,t)))},getDate=e=>new Date(`${e}T00:00:00`),getDateString=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`,parseDates=e=>e.reduce((e,t)=>{if(t instanceof Date||"number"==typeof t){const n=t instanceof Date?t:new Date(t);e.push(n.toISOString().substring(0,10))}else t.match(/^(\d{4}-\d{2}-\d{2})$/g)?e.push(t):t.replace(/(\d{4}-\d{2}-\d{2}).*?(\d{4}-\d{2}-\d{2})/g,(t,n,i)=>{const s=getDate(n),o=getDate(i),a=new Date(s.getTime());for(;a<=o;a.setDate(a.getDate()+1))e.push(getDateString(a));return t});return e},[]),updateAttribute=(e,t,n,i="")=>{t?e.setAttribute(n,i):e.getAttribute(n)===i&&e.removeAttribute(n)},setDateModifier=(e,t,n,i,s,o,a)=>{var l,r,c,d;const u=getDate(e.context.displayDateMin)>getDate(o)||getDate(e.context.displayDateMax)<getDate(o)||(null==(l=e.context.disableDates)?void 0:l.includes(o))||!e.selectionMonthsMode&&"current"!==a||!e.selectionYearsMode&&getDate(o).getFullYear()!==t;updateAttribute(n,u,"data-vc-date-disabled"),i&&updateAttribute(i,u,"aria-disabled","true"),i&&updateAttribute(i,u,"tabindex","-1"),updateAttribute(n,!e.disableToday&&e.context.dateToday===o,"data-vc-date-today"),updateAttribute(n,!e.disableToday&&e.context.dateToday===o,"aria-current","date"),updateAttribute(n,null==(r=e.selectedWeekends)?void 0:r.includes(s),"data-vc-date-weekend");const h=(null==(c=e.selectedHolidays)?void 0:c[0])?parseDates(e.selectedHolidays):[];if(updateAttribute(n,h.includes(o),"data-vc-date-holiday"),(null==(d=e.context.selectedDates)?void 0:d.includes(o))?(n.setAttribute("data-vc-date-selected",""),i&&i.setAttribute("aria-selected","true"),e.context.selectedDates.length>1&&"multiple-ranged"===e.selectionDatesMode&&(e.context.selectedDates[0]===o&&e.context.selectedDates[e.context.selectedDates.length-1]===o?n.setAttribute("data-vc-date-selected","first-and-last"):e.context.selectedDates[0]===o?n.setAttribute("data-vc-date-selected","first"):e.context.selectedDates[e.context.selectedDates.length-1]===o&&n.setAttribute("data-vc-date-selected","last"),e.context.selectedDates[0]!==o&&e.context.selectedDates[e.context.selectedDates.length-1]!==o&&n.setAttribute("data-vc-date-selected","middle"))):n.hasAttribute("data-vc-date-selected")&&(n.removeAttribute("data-vc-date-selected"),i&&i.removeAttribute("aria-selected")),!e.context.disableDates.includes(o)&&e.enableEdgeDatesOnly&&e.context.selectedDates.length>1&&"multiple-ranged"===e.selectionDatesMode){const t=getDate(e.context.selectedDates[0]),i=getDate(e.context.selectedDates[e.context.selectedDates.length-1]),s=getDate(o);updateAttribute(n,s>t&&s<i,"data-vc-date-selected","middle")}},getLocaleString=(e,t,n)=>new Date(`${e}T00:00:00.000Z`).toLocaleString(t,n),getWeekNumber=(e,t)=>{const n=getDate(e),i=(n.getDay()-t+7)%7;n.setDate(n.getDate()+4-i);const s=new Date(n.getFullYear(),0,1),o=Math.ceil(((+n-+s)/864e5+1)/7);return{year:n.getFullYear(),week:o}},addWeekNumberForDate=(e,t,n)=>{const i=getWeekNumber(n,e.firstWeekday);i&&(t.dataset.vcDateWeekNumber=String(i.week))},setDaysAsDisabled=(e,t,n)=>{var i,s,o,a,l;const r=null==(i=e.disableWeekdays)?void 0:i.includes(n),c=e.disableAllDates&&!!(null==(s=e.context.enableDates)?void 0:s[0]);!r&&!c||(null==(o=e.context.enableDates)?void 0:o.includes(t))||(null==(a=e.context.disableDates)?void 0:a.includes(t))||(e.context.disableDates.push(t),null==(l=e.context.disableDates)||l.sort((e,t)=>+new Date(e)-+new Date(t)))},createDate=(e,t,n,i,s,o)=>{const a=getDate(s).getDay(),l="string"==typeof e.locale&&e.locale.length?e.locale:"en",r=document.createElement("div");let c;r.className=e.styles.date,r.dataset.vcDate=s,r.dataset.vcDateMonth=o,r.dataset.vcDateWeekDay=String(a),r.role="gridcell",("current"===o||e.displayDatesOutside)&&(c=document.createElement("button"),c.className=e.styles.dateBtn,c.type="button",c.ariaLabel=getLocaleString(s,l,{dateStyle:"long",timeZone:"UTC"}),c.dataset.vcDateBtn="",c.innerText=String(i),r.appendChild(c)),e.enableWeekNumbers&&addWeekNumberForDate(e,r,s),setDaysAsDisabled(e,s,a),setDateModifier(e,t,r,c,a,s,o),n.addDate(r),e.onCreateDateEls&&e.onCreateDateEls(e,r)},createDatesFromCurrentMonth=(e,t,n,i,s)=>{for(let o=1;o<=n;o++){const n=new Date(i,s,o);createDate(e,i,t,o,getDateString(n),"current")}},createDatesFromNextMonth=(e,t,n,i,s)=>{const o=s+1===12?i+1:i,a=s+1===12?"01":s+2<10?`0${s+2}`:s+2;for(let s=1;s<=n;s++){const n=s<10?`0${s}`:String(s);createDate(e,i,t,s,`${o}-${a}-${n}`,"next")}},createDatesFromPrevMonth=(e,t,n,i,s)=>{let o=new Date(n,i,0).getDate()-(s-1);const a=0===i?n-1:n,l=0===i?12:i<10?`0${i}`:i;for(let i=s;i>0;i--,o++)createDate(e,n,t,o,`${a}-${l}-${o}`,"prev")},createWeekNumbers=(e,t,n,i,s)=>{if(!e.enableWeekNumbers)return;i.textContent="";const o=document.createElement("b");o.className=e.styles.weekNumbersTitle,o.innerText="#",o.dataset.vcWeekNumbers="title",i.appendChild(o);const a=document.createElement("div");a.className=e.styles.weekNumbersContent,a.dataset.vcWeekNumbers="content",i.appendChild(a);const l=document.createElement("button");l.type="button",l.className=e.styles.weekNumber;const r=s.querySelectorAll("[data-vc-date]"),c=Math.ceil((t+n)/7);for(let t=0;t<c;t++){const n=r[0===t?6:7*t].dataset.vcDate,i=getWeekNumber(n,e.firstWeekday);if(!i)return;const s=l.cloneNode(!0);s.innerText=String(i.week),s.dataset.vcWeekNumber=String(i.week),s.dataset.vcWeekYear=String(i.year),s.role="rowheader",s.ariaLabel=`${i.week}`,a.appendChild(s)}},createDates=e=>{const t=new Date(e.context.selectedYear,e.context.selectedMonth,1),n=e.context.mainElement.querySelectorAll('[data-vc="dates"]'),i=e.context.mainElement.querySelectorAll('[data-vc-week="numbers"]');n.forEach((n,s)=>{e.selectionDatesMode||(n.dataset.vcDatesDisabled=""),n.textContent="";const o=new Date(t);o.setMonth(o.getMonth()+s);const a=o.getMonth(),l=o.getFullYear(),r=(new Date(l,a,1).getDay()-e.firstWeekday+7)%7,c=new Date(l,a+1,0).getDate(),d=r+c,u=Math.ceil(d/7),h=7*u-d,m=[];for(let t=0;t<u;t++){const t=document.createElement("div");t.className=e.styles.datesRow,t.setAttribute("data-vc-dates","row"),t.setAttribute("role","row"),m.push(t)}let _=0,g=0;const E={addDate:e=>{m[_].appendChild(e),g++,g>=7&&(_++,g=0)}};createDatesFromPrevMonth(e,E,l,a,r),createDatesFromCurrentMonth(e,E,c,l,a),createDatesFromNextMonth(e,E,h,l,a);for(const e of m)n.appendChild(e);createDatePopup(e,n),createWeekNumbers(e,r,c,i[s],n)})},layoutDefault=e=>`\n  <div class="${e.styles.header}" data-vc="header" role="toolbar" aria-label="${e.labels.navigation}">\n    <#ArrowPrev [month] />\n    <div class="${e.styles.headerContent}" data-vc-header="content">\n      <#Month />\n      <#Year />\n    </div>\n    <#ArrowNext [month] />\n  </div>\n  <div class="${e.styles.wrapper}" data-vc="wrapper">\n    <#WeekNumbers />\n    <div class="${e.styles.content}" data-vc="content" role="grid">\n      <#Week />\n      <#Dates />\n      <#DateRangeTooltip />\n    </div>\n  </div>\n  <#ControlTime />\n`,layoutMonths=e=>`\n  <div class="${e.styles.header}" data-vc="header" role="toolbar" aria-label="${e.labels.navigation}">\n    <div class="${e.styles.headerContent}" data-vc-header="content">\n      <#Month />\n      <#Year />\n    </div>\n  </div>\n  <div class="${e.styles.wrapper}" data-vc="wrapper">\n    <div class="${e.styles.content}" data-vc="content">\n      <#Months />\n    </div>\n  </div>\n`,layoutMultiple=e=>`\n  <div class="${e.styles.controls}" data-vc="controls" role="toolbar" aria-label="${e.labels.navigation}">\n    <#ArrowPrev [month] />\n    <#ArrowNext [month] />\n  </div>\n  <div class="${e.styles.grid}" data-vc="grid">\n    <#Multiple>\n      <div class="${e.styles.column}" data-vc="column" role="region">\n        <div class="${e.styles.header}" data-vc="header">\n          <div class="${e.styles.headerContent}" data-vc-header="content">\n            <#Month />\n            <#Year />\n          </div>\n        </div>\n        <div class="${e.styles.wrapper}" data-vc="wrapper">\n          <#WeekNumbers />\n          <div class="${e.styles.content}" data-vc="content" role="grid">\n            <#Week />\n            <#Dates />\n          </div>\n        </div>\n      </div>\n    <#/Multiple>\n    <#DateRangeTooltip />\n  </div>\n  <#ControlTime />\n`,layoutYears=e=>`\n  <div class="${e.styles.header}" data-vc="header" role="toolbar" aria-label="${e.labels.navigation}">\n    <#ArrowPrev [year] />\n    <div class="${e.styles.headerContent}" data-vc-header="content">\n      <#Month />\n      <#Year />\n    </div>\n    <#ArrowNext [year] />\n  </div>\n  <div class="${e.styles.wrapper}" data-vc="wrapper">\n    <div class="${e.styles.content}" data-vc="content">\n      <#Years />\n    </div>\n  </div>\n`,ArrowNext=(e,t)=>`<button type="button" class="${e.styles.arrowNext}" data-vc-arrow="next" aria-label="${e.labels.arrowNext[t]}"></button>`,ArrowPrev=(e,t)=>`<button type="button" class="${e.styles.arrowPrev}" data-vc-arrow="prev" aria-label="${e.labels.arrowPrev[t]}"></button>`,ControlTime=e=>e.selectionTimeMode?`<div class="${e.styles.time}" data-vc="time" role="group" aria-label="${e.labels.selectingTime}"></div>`:"",DateRangeTooltip=e=>e.onCreateDateRangeTooltip?`<div class="${e.styles.dateRangeTooltip}" data-vc-date-range-tooltip="hidden"></div>`:"",Dates=e=>`<div class="${e.styles.dates}" data-vc="dates" aria-live="assertive" aria-label="${e.labels.dates}" ${"multiple"===e.type?"aria-multiselectable":""}></div>`,Month=e=>`<button type="button" class="${e.styles.month}" data-vc="month"></button>`,Months=e=>`<div class="${e.styles.months}" data-vc="months" role="grid" aria-live="assertive" aria-label="${e.labels.months}"></div>`,Week=e=>`<div class="${e.styles.week}" data-vc="week" role="row" aria-label="${e.labels.week}"></div>`,WeekNumbers=e=>e.enableWeekNumbers?`<div class="${e.styles.weekNumbers}" data-vc-week="numbers" role="row" aria-label="${e.labels.weekNumber}"></div>`:"",Year=e=>`<button type="button" class="${e.styles.year}" data-vc="year"></button>`,Years=e=>`<div class="${e.styles.years}" data-vc="years" role="grid" aria-live="assertive" aria-label="${e.labels.years}"></div>`,components={ArrowNext:ArrowNext,ArrowPrev:ArrowPrev,ControlTime:ControlTime,Dates:Dates,DateRangeTooltip:DateRangeTooltip,Month:Month,Months:Months,Week:Week,WeekNumbers:WeekNumbers,Year:Year,Years:Years},getComponent=e=>components[e],parseLayout=(e,t)=>t.replace(/[\n\t]/g,"").replace(/<#(?!\/?Multiple)(.*?)>/g,(t,n)=>{const i=(n.match(/\[(.*?)\]/)||[])[1],s=n.replace(/[/\s\n\t]|\[(.*?)\]/g,""),o=getComponent(s),a=o?o(e,null!=i?i:null):"";return e.sanitizerHTML(a)}).replace(/[\n\t]/g,""),parseMultipleLayout=(e,t)=>t.replace(new RegExp("<#Multiple>(.*?)<#\\/Multiple>","gs"),(t,n)=>{const i=Array(e.context.displayMonthsCount).fill(n).join("");return e.sanitizerHTML(i)}).replace(/[\n\t]/g,""),createLayouts=(e,t)=>{const n={default:layoutDefault,month:layoutMonths,year:layoutYears,multiple:layoutMultiple};if(Object.keys(n).forEach(t=>{const i=t;e.layouts[i].length||(e.layouts[i]=n[i](e))}),e.context.mainElement.className=e.styles.calendar,e.context.mainElement.dataset.vc="calendar",e.context.mainElement.dataset.vcType=e.context.currentType,e.context.mainElement.role="application",e.context.mainElement.tabIndex=0,e.context.mainElement.ariaLabel=e.labels.application,"multiple"!==e.context.currentType){if("multiple"===e.type&&t){const n=e.context.mainElement.querySelector('[data-vc="controls"]'),i=e.context.mainElement.querySelector('[data-vc="grid"]'),s=t.closest('[data-vc="column"]');return n&&n.remove(),i&&(i.dataset.vcGrid="hidden"),s&&(s.dataset.vcColumn=e.context.currentType),void(s&&(s.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))))}e.context.mainElement.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))}else e.context.mainElement.innerHTML=e.sanitizerHTML(parseMultipleLayout(e,parseLayout(e,e.layouts[e.context.currentType])))},setVisibilityArrows=(e,t,n,i)=>{e.style.visibility=n?"hidden":"",t.style.visibility=i?"hidden":""},handleDefaultType=(e,t,n)=>{const i=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1))),s=new Date(i.getTime()),o=new Date(i.getTime());s.setMonth(s.getMonth()-e.monthsToSwitch),o.setMonth(o.getMonth()+e.monthsToSwitch);const a=getDate(e.context.dateMin),l=getDate(e.context.dateMax);e.selectionYearsMode||(a.setFullYear(i.getFullYear()),l.setFullYear(i.getFullYear()));const r=!e.selectionMonthsMode||s.getFullYear()<a.getFullYear()||s.getFullYear()===a.getFullYear()&&s.getMonth()<a.getMonth(),c=!e.selectionMonthsMode||o.getFullYear()>l.getFullYear()||o.getFullYear()===l.getFullYear()&&o.getMonth()>l.getMonth()-(e.context.displayMonthsCount-1);setVisibilityArrows(t,n,r,c)},handleYearType=(e,t,n)=>{const i=getDate(e.context.dateMin),s=getDate(e.context.dateMax),o=!!(i.getFullYear()&&e.context.displayYear-7<=i.getFullYear()),a=!!(s.getFullYear()&&e.context.displayYear+7>=s.getFullYear());setVisibilityArrows(t,n,o,a)},visibilityArrows=e=>{if("month"===e.context.currentType)return;const t=e.context.mainElement.querySelector('[data-vc-arrow="prev"]'),n=e.context.mainElement.querySelector('[data-vc-arrow="next"]');t&&n&&{default:()=>handleDefaultType(e,t,n),year:()=>handleYearType(e,t,n)}["multiple"===e.context.currentType?"default":e.context.currentType]()},visibilityHandler=(e,t,n,i,s)=>{const o=new Date(i.setFullYear(e.context.selectedYear,e.context.selectedMonth+n)).getFullYear(),a=new Date(i.setMonth(e.context.selectedMonth+n)).getMonth(),l=e.context.locale.months.long[a],r=t.closest('[data-vc="column"]');r&&(r.ariaLabel=`${l} ${o}`);const c={month:{id:a,label:l},year:{id:o,label:o}};t.innerText=String(c[s].label),t.dataset[`vc${s.charAt(0).toUpperCase()+s.slice(1)}`]=String(c[s].id),t.ariaLabel=`${e.labels[s]} ${c[s].label}`;const d={month:e.selectionMonthsMode,year:e.selectionYearsMode},u=!1===d[s]||"only-arrows"===d[s];u&&(t.tabIndex=-1),t.disabled=u},visibilityTitle=e=>{const t=e.context.mainElement.querySelectorAll('[data-vc="month"]'),n=e.context.mainElement.querySelectorAll('[data-vc="year"]'),i=new Date(e.context.selectedYear,e.context.selectedMonth,1);[t,n].forEach(t=>null==t?void 0:t.forEach((t,n)=>visibilityHandler(e,t,n,i,t.dataset.vc)))},setYearModifier=(e,t,n,i,s)=>{var o;const a={month:{selected:"data-vc-months-month-selected",aria:"aria-selected",value:"vcMonthsMonth",selectedProperty:"selectedMonth"},year:{selected:"data-vc-years-year-selected",aria:"aria-selected",value:"vcYearsYear",selectedProperty:"selectedYear"}};s&&(null==(o=e.context.mainElement.querySelectorAll({month:"[data-vc-months-month]",year:"[data-vc-years-year]"}[n]))||o.forEach(e=>{e.removeAttribute(a[n].selected),e.removeAttribute(a[n].aria)}),setContext(e,a[n].selectedProperty,Number(t.dataset[a[n].value])),visibilityTitle(e),"year"===n&&visibilityArrows(e)),i&&(t.setAttribute(a[n].selected,""),t.setAttribute(a[n].aria,"true"))},getColumnID=(e,t)=>{var n;if("multiple"!==e.type)return{currentValue:null,columnID:0};const i=e.context.mainElement.querySelectorAll('[data-vc="column"]'),s=Array.from(i).findIndex(e=>e.closest(`[data-vc-column="${t}"]`));return{currentValue:s>=0?Number(null==(n=i[s].querySelector(`[data-vc="${t}"]`))?void 0:n.getAttribute(`data-vc-${t}`)):null,columnID:Math.max(s,0)}},createMonthEl=(e,t,n,i,s,o,a)=>{const l=t.cloneNode(!1);return l.className=e.styles.monthsMonth,l.innerText=i,l.ariaLabel=s,l.role="gridcell",l.dataset.vcMonthsMonth=`${a}`,o&&(l.ariaDisabled="true"),o&&(l.tabIndex=-1),l.disabled=o,setYearModifier(e,l,"month",n===a,!1),l},createMonths=(e,t)=>{var n,i;const s=null==(n=null==t?void 0:t.closest('[data-vc="header"]'))?void 0:n.querySelector('[data-vc="year"]'),o=s?Number(s.dataset.vcYear):e.context.selectedYear,a=(null==t?void 0:t.dataset.vcMonth)?Number(t.dataset.vcMonth):e.context.selectedMonth;setContext(e,"currentType","month"),createLayouts(e,t),visibilityTitle(e);const l=e.context.mainElement.querySelector('[data-vc="months"]');if(!e.selectionMonthsMode||!l)return;const r=e.monthsToSwitch>1?e.context.locale.months.long.map((t,n)=>a-e.monthsToSwitch*n).concat(e.context.locale.months.long.map((t,n)=>a+e.monthsToSwitch*n)).filter(e=>e>=0&&e<=12):Array.from(Array(12).keys()),c=document.createElement("button");c.type="button";for(let t=0;t<12;t++){const n=getDate(e.context.dateMin),i=getDate(e.context.dateMax),s=e.context.displayMonthsCount-1,{columnID:d}=getColumnID(e,"month"),u=o<=n.getFullYear()&&t<n.getMonth()+d||o>=i.getFullYear()&&t>i.getMonth()-s+d||o>i.getFullYear()||t!==a&&!r.includes(t),h=createMonthEl(e,c,a,e.context.locale.months.short[t],e.context.locale.months.long[t],u,t);l.appendChild(h),e.onCreateMonthEls&&e.onCreateMonthEls(e,h)}null==(i=e.context.mainElement.querySelector("[data-vc-months-month]:not([disabled])"))||i.focus()},TimeInput=(e,t,n,i,s)=>`\n  <label class="${t}" data-vc-time-input="${e}">\n    <input type="text" name="${e}" maxlength="2" aria-label="${n[`input${e.charAt(0).toUpperCase()+e.slice(1)}`]}" value="${i}" ${s?"disabled":""}>\n  </label>\n`,TimeRange=(e,t,n,i,s,o,a)=>`\n  <label class="${t}" data-vc-time-range="${e}">\n    <input type="range" name="${e}" min="${i}" max="${s}" step="${o}" aria-label="${n[`range${e.charAt(0).toUpperCase()+e.slice(1)}`]}" value="${a}">\n  </label>\n`,handleActions=(e,t,n,i)=>{({hour:()=>setContext(e,"selectedHours",n),minute:()=>setContext(e,"selectedMinutes",n)})[i](),setContext(e,"selectedTime",`${e.context.selectedHours}:${e.context.selectedMinutes}${e.context.selectedKeeping?` ${e.context.selectedKeeping}`:""}`),e.onChangeTime&&e.onChangeTime(e,t,!1),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t)},transformTime24=(e,t)=>{var n;return(null==(n={0:{AM:"00",PM:"12"},1:{AM:"01",PM:"13"},2:{AM:"02",PM:"14"},3:{AM:"03",PM:"15"},4:{AM:"04",PM:"16"},5:{AM:"05",PM:"17"},6:{AM:"06",PM:"18"},7:{AM:"07",PM:"19"},8:{AM:"08",PM:"20"},9:{AM:"09",PM:"21"},10:{AM:"10",PM:"22"},11:{AM:"11",PM:"23"},12:{AM:"00",PM:"12"}}[Number(e)])?void 0:n[t])||String(e)},handleClickKeepingTime=(e,t,n,i,s)=>{const o=o=>{const a="AM"===e.context.selectedKeeping?"PM":"AM",l=transformTime24(e.context.selectedHours,a);Number(l)<=i&&Number(l)>=s?(setContext(e,"selectedKeeping",a),n.value=l,handleActions(e,o,e.context.selectedHours,"hour"),t.ariaLabel=`${e.labels.btnKeeping} ${e.context.selectedKeeping}`,t.innerText=e.context.selectedKeeping):e.onChangeTime&&e.onChangeTime(e,o,!0)};return t.addEventListener("click",o),()=>{t.removeEventListener("click",o)}},transformTime12=e=>({0:"12",13:"01",14:"02",15:"03",16:"04",17:"05",18:"06",19:"07",20:"08",21:"09",22:"10",23:"11"}[Number(e)]||String(e)),updateInputAndRange=(e,t,n,i)=>{e.value=n,t.value=i},updateKeepingTime$1=(e,t,n)=>{t&&n&&(setContext(e,"selectedKeeping",n),t.innerText=n)},handleInput$1=(e,t,n,i,s,o,a)=>{const l={hour:(l,r,c)=>{e.selectionTimeMode&&{12:()=>{if(!e.context.selectedKeeping)return;const d=Number(transformTime24(r,e.context.selectedKeeping));if(!(d<=o&&d>=a))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,transformTime12(r),transformTime24(r,e.context.selectedKeeping)),l>12&&updateKeepingTime$1(e,i,"PM"),handleActions(e,c,transformTime12(r),s)},24:()=>{if(!(l<=o&&l>=a))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,r,r),handleActions(e,c,r,s)}}[e.selectionTimeMode]()},minute:(i,l,r)=>{if(!(i<=o&&i>=a))return n.value=e.context.selectedMinutes,void(e.onChangeTime&&e.onChangeTime(e,r,!0));n.value=l,t.value=l,handleActions(e,r,l,s)}},r=e=>{const t=Number(n.value),i=n.value.padStart(2,"0");l[s]&&l[s](t,i,e)};return n.addEventListener("change",r),()=>{n.removeEventListener("change",r)}},updateInputAndTime=(e,t,n,i,s)=>{t.value=s,handleActions(e,n,s,i)},updateKeepingTime=(e,t,n)=>{t&&(setContext(e,"selectedKeeping",n),t.innerText=n)},handleRange=(e,t,n,i,s)=>{const o=o=>{const a=Number(t.value),l=t.value.padStart(2,"0"),r="hour"===s,c=24===e.selectionTimeMode,d=a>0&&a<12;r&&!c&&updateKeepingTime(e,i,0===a||d?"AM":"PM"),updateInputAndTime(e,n,o,s,!r||c||d?l:transformTime12(t.value))};return t.addEventListener("input",o),()=>{t.removeEventListener("input",o)}},handleMouseOver=e=>e.setAttribute("data-vc-input-focus",""),handleMouseOut=e=>e.removeAttribute("data-vc-input-focus"),handleTime=(e,t)=>{const n=t.querySelector('[data-vc-time-range="hour"] input[name="hour"]'),i=t.querySelector('[data-vc-time-range="minute"] input[name="minute"]'),s=t.querySelector('[data-vc-time-input="hour"] input[name="hour"]'),o=t.querySelector('[data-vc-time-input="minute"] input[name="minute"]'),a=t.querySelector('[data-vc-time="keeping"]');if(!(n&&i&&s&&o))return;const l=e=>{e.target===n&&handleMouseOver(s),e.target===i&&handleMouseOver(o)},r=e=>{e.target===n&&handleMouseOut(s),e.target===i&&handleMouseOut(o)};return t.addEventListener("mouseover",l),t.addEventListener("mouseout",r),handleInput$1(e,n,s,a,"hour",e.timeMaxHour,e.timeMinHour),handleInput$1(e,i,o,a,"minute",e.timeMaxMinute,e.timeMinMinute),handleRange(e,n,s,a,"hour"),handleRange(e,i,o,a,"minute"),a&&handleClickKeepingTime(e,a,n,e.timeMaxHour,e.timeMinHour),()=>{t.removeEventListener("mouseover",l),t.removeEventListener("mouseout",r)}},createTime=e=>{const t=e.context.mainElement.querySelector('[data-vc="time"]');if(!e.selectionTimeMode||!t)return;const[n,i]=[e.timeMinHour,e.timeMaxHour],[s,o]=[e.timeMinMinute,e.timeMaxMinute],a=e.context.selectedKeeping?transformTime24(e.context.selectedHours,e.context.selectedKeeping):e.context.selectedHours,l="range"===e.timeControls;var r;t.innerHTML=e.sanitizerHTML(`\n    <div class="${e.styles.timeContent}" data-vc-time="content">\n      ${TimeInput("hour",e.styles.timeHour,e.labels,e.context.selectedHours,l)}\n      ${TimeInput("minute",e.styles.timeMinute,e.labels,e.context.selectedMinutes,l)}\n      ${12===e.selectionTimeMode?(r=e.context.selectedKeeping,`<button type="button" class="${e.styles.timeKeeping}" aria-label="${e.labels.btnKeeping} ${r}" data-vc-time="keeping" ${l?"disabled":""}>${r}</button>`):""}\n    </div>\n    <div class="${e.styles.timeRanges}" data-vc-time="ranges">\n      ${TimeRange("hour",e.styles.timeRange,e.labels,n,i,e.timeStepHour,a)}\n      ${TimeRange("minute",e.styles.timeRange,e.labels,s,o,e.timeStepMinute,e.context.selectedMinutes)}\n    </div>\n  `),handleTime(e,t)},createWeek=e=>{const t=e.selectedWeekends?[...e.selectedWeekends]:[],n=[...e.context.locale.weekdays.long].reduce((n,i,s)=>[...n,{id:s,titleShort:e.context.locale.weekdays.short[s],titleLong:i,isWeekend:t.includes(s)}],[]),i=[...n.slice(e.firstWeekday),...n.slice(0,e.firstWeekday)];e.context.mainElement.querySelectorAll('[data-vc="week"]').forEach(t=>{const n=e.onClickWeekDay?document.createElement("button"):document.createElement("b");e.onClickWeekDay&&(n.type="button"),i.forEach(i=>{const s=n.cloneNode(!0);s.innerText=i.titleShort,s.className=e.styles.weekDay,s.role="columnheader",s.ariaLabel=i.titleLong,s.dataset.vcWeekDay=String(i.id),i.isWeekend&&(s.dataset.vcWeekDayOff=""),t.appendChild(s)})})},createYearEl=(e,t,n,i,s)=>{const o=t.cloneNode(!1);return o.className=e.styles.yearsYear,o.innerText=String(s),o.ariaLabel=String(s),o.role="gridcell",o.dataset.vcYearsYear=`${s}`,i&&(o.ariaDisabled="true"),i&&(o.tabIndex=-1),o.disabled=i,setYearModifier(e,o,"year",n===s,!1),o},createYears=(e,t)=>{var n;const i=(null==t?void 0:t.dataset.vcYear)?Number(t.dataset.vcYear):e.context.selectedYear;setContext(e,"currentType","year"),createLayouts(e,t),visibilityTitle(e),visibilityArrows(e);const s=e.context.mainElement.querySelector('[data-vc="years"]');if(!e.selectionYearsMode||!s)return;const o="multiple"!==e.type||e.context.selectedYear===i?0:1,a=document.createElement("button");a.type="button";for(let t=e.context.displayYear-7;t<e.context.displayYear+8;t++){const n=t<getDate(e.context.dateMin).getFullYear()+o||t>getDate(e.context.dateMax).getFullYear(),l=createYearEl(e,a,i,n,t);s.appendChild(l),e.onCreateYearEls&&e.onCreateYearEls(e,l)}null==(n=e.context.mainElement.querySelector("[data-vc-years-year]:not([disabled])"))||n.focus()},trackChangesHTMLElement=(e,t,n)=>{new MutationObserver(e=>{for(let i=0;i<e.length;i++)if(e[i].attributeName===t){n();break}}).observe(e,{attributes:!0})},haveListener={value:!1,set:()=>haveListener.value=!0,check:()=>haveListener.value},setTheme=(e,t)=>e.dataset.vcTheme=t,trackChangesThemeInSystemSettings=(e,t)=>{if(setTheme(e.context.mainElement,t.matches?"dark":"light"),"system"!==e.selectedTheme||haveListener.check())return;const n=e=>{const t=document.querySelectorAll('[data-vc="calendar"]');null==t||t.forEach(t=>setTheme(t,e.matches?"dark":"light"))};t.addEventListener?t.addEventListener("change",n):t.addListener(n),haveListener.set()},detectTheme=(e,t)=>{const n=e.themeAttrDetect.length?document.querySelector(e.themeAttrDetect):null,i=e.themeAttrDetect.replace(/^.*\[(.+)\]/g,(e,t)=>t);if(!n||"system"===n.getAttribute(i))return void trackChangesThemeInSystemSettings(e,t);const s=n.getAttribute(i);s?(setTheme(e.context.mainElement,s),trackChangesHTMLElement(n,i,()=>{const t=n.getAttribute(i);t&&setTheme(e.context.mainElement,t)})):trackChangesThemeInSystemSettings(e,t)},handleTheme=e=>{"not all"!==window.matchMedia("(prefers-color-scheme)").media?"system"===e.selectedTheme?detectTheme(e,window.matchMedia("(prefers-color-scheme: dark)")):setTheme(e.context.mainElement,e.selectedTheme):setTheme(e.context.mainElement,"light")},capitalizeFirstLetter=e=>e.charAt(0).toUpperCase()+e.slice(1).replace(/\./,""),getLocaleWeekday=(e,t,n)=>{const i=new Date(`1978-01-0${t+1}T00:00:00.000Z`),s=i.toLocaleString(n,{weekday:"short",timeZone:"UTC"}),o=i.toLocaleString(n,{weekday:"long",timeZone:"UTC"});e.context.locale.weekdays.short.push(capitalizeFirstLetter(s)),e.context.locale.weekdays.long.push(capitalizeFirstLetter(o))},getLocaleMonth=(e,t,n)=>{const i=new Date(`1978-${String(t+1).padStart(2,"0")}-01T00:00:00.000Z`),s=i.toLocaleString(n,{month:"short",timeZone:"UTC"}),o=i.toLocaleString(n,{month:"long",timeZone:"UTC"});e.context.locale.months.short.push(capitalizeFirstLetter(s)),e.context.locale.months.long.push(capitalizeFirstLetter(o))},getLocale=e=>{var t,n,i,s,o,a,l,r;if(!(e.context.locale.weekdays.short[6]&&e.context.locale.weekdays.long[6]&&e.context.locale.months.short[11]&&e.context.locale.months.long[11]))if("string"==typeof e.locale){if("string"==typeof e.locale&&!e.locale.length)throw new Error(errorMessages.notLocale);Array.from({length:7},(t,n)=>getLocaleWeekday(e,n,e.locale)),Array.from({length:12},(t,n)=>getLocaleMonth(e,n,e.locale))}else{if(!((null==(n=null==(t=e.locale)?void 0:t.weekdays)?void 0:n.short[6])&&(null==(s=null==(i=e.locale)?void 0:i.weekdays)?void 0:s.long[6])&&(null==(a=null==(o=e.locale)?void 0:o.months)?void 0:a.short[11])&&(null==(r=null==(l=e.locale)?void 0:l.months)?void 0:r.long[11])))throw new Error(errorMessages.notLocale);setContext(e,"locale",__spreadValues({},e.locale))}},create=e=>{const t={default:()=>{createWeek(e),createDates(e)},multiple:()=>{createWeek(e),createDates(e)},month:()=>createMonths(e),year:()=>createYears(e)};handleTheme(e),getLocale(e),createLayouts(e),visibilityTitle(e),visibilityArrows(e),createTime(e),t[e.context.currentType]()},handleArrowKeys=e=>{const t=t=>{var n;const i=t.target;if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(t.key)||"button"!==i.localName)return;const s=Array.from(e.context.mainElement.querySelectorAll('[data-vc="calendar"] button')),o=s.indexOf(i);if(-1===o)return;const a=(l=s[o]).hasAttribute("data-vc-date-btn")?7:l.hasAttribute("data-vc-months-month")?4:l.hasAttribute("data-vc-years-year")?5:1;var l;const r=(0,{ArrowUp:()=>Math.max(0,o-a),ArrowDown:()=>Math.min(s.length-1,o+a),ArrowLeft:()=>Math.max(0,o-1),ArrowRight:()=>Math.min(s.length-1,o+1)}[t.key])();null==(n=s[r])||n.focus()};return e.context.mainElement.addEventListener("keydown",t),()=>e.context.mainElement.removeEventListener("keydown",t)},handleMonth=(e,t)=>{const n=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1)));({prev:()=>n.setMonth(n.getMonth()-e.monthsToSwitch),next:()=>n.setMonth(n.getMonth()+e.monthsToSwitch)})[t](),setContext(e,"selectedMonth",n.getMonth()),setContext(e,"selectedYear",n.getFullYear()),visibilityTitle(e),visibilityArrows(e),createDates(e)},handleClickArrow=(e,t)=>{const n=t.target.closest("[data-vc-arrow]");if(n){if(["default","multiple"].includes(e.context.currentType))handleMonth(e,n.dataset.vcArrow);else if("year"===e.context.currentType&&void 0!==e.context.displayYear){const i={prev:-15,next:15}[n.dataset.vcArrow];setContext(e,"displayYear",e.context.displayYear+i),createYears(e,t.target)}e.onClickArrow&&e.onClickArrow(e,t)}},resolveToggle=(e,t)=>void 0===t||("function"==typeof t?t(e):t),canToggleSelection=e=>resolveToggle(e,e.enableDateToggle),handleSelectDate=(e,t,n)=>{const i=t.dataset.vcDate,s=t.closest("[data-vc-date][data-vc-date-selected]"),o=canToggleSelection(e);if(s&&!o)return;const a=s?e.context.selectedDates.filter(e=>e!==i):n?[...e.context.selectedDates,i]:[i];setContext(e,"selectedDates",a)},createDateRangeTooltip=(e,t,n)=>{if(!t)return;if(!n)return t.dataset.vcDateRangeTooltip="hidden",void(t.textContent="");const i=e.context.mainElement.getBoundingClientRect(),s=n.getBoundingClientRect();t.style.left=s.left-i.left+s.width/2+"px",t.style.top=s.bottom-i.top-s.height+"px",t.dataset.vcDateRangeTooltip="visible",t.innerHTML=e.sanitizerHTML(e.onCreateDateRangeTooltip(e,n,t,s,i))},state={self:null,lastDateEl:null,isHovering:!1,rangeMin:void 0,rangeMax:void 0,tooltipEl:null,timeoutId:null},addHoverEffect=(e,t,n)=>{var i,s,o;if(!(null==(s=null==(i=state.self)?void 0:i.context)?void 0:s.selectedDates[0]))return;const a=getDateString(e);(null==(o=state.self.context.disableDates)?void 0:o.includes(a))||(state.self.context.mainElement.querySelectorAll(`[data-vc-date="${a}"]`).forEach(e=>e.dataset.vcDateHover=""),t.forEach(e=>e.dataset.vcDateHover="first"),n.forEach(e=>{"first"===e.dataset.vcDateHover?e.dataset.vcDateHover="first-and-last":e.dataset.vcDateHover="last"}))},removeHoverEffect=()=>{var e,t;(null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.mainElement)&&state.self.context.mainElement.querySelectorAll("[data-vc-date-hover]").forEach(e=>e.removeAttribute("data-vc-date-hover"))},handleHoverDatesEvent=e=>{var t,n;if(!e||!(null==(n=null==(t=state.self)?void 0:t.context)?void 0:n.selectedDates[0]))return;if(!e.closest('[data-vc="dates"]'))return state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),void removeHoverEffect();const i=e.closest("[data-vc-date]");if(!i||state.lastDateEl===i)return;state.lastDateEl=i,createDateRangeTooltip(state.self,state.tooltipEl,i),removeHoverEffect();const s=i.dataset.vcDate,o=getDate(state.self.context.selectedDates[0]),a=getDate(s),l=state.self.context.mainElement.querySelectorAll(`[data-vc-date="${state.self.context.selectedDates[0]}"]`),r=state.self.context.mainElement.querySelectorAll(`[data-vc-date="${s}"]`),[c,d]=o<a?[l,r]:[r,l],[u,h]=o<a?[o,a]:[a,o];for(let e=new Date(u);e<=h;e.setDate(e.getDate()+1))addHoverEffect(e,c,d)},handleHoverSelectedDatesRangeEvent=e=>{const t=null==e?void 0:e.closest("[data-vc-date-selected]");if(!t&&state.lastDateEl)return state.lastDateEl=null,void createDateRangeTooltip(state.self,state.tooltipEl,null);t&&state.lastDateEl!==t&&(state.lastDateEl=t,createDateRangeTooltip(state.self,state.tooltipEl,t))},optimizedHoverHandler=e=>t=>{const n=t.target;state.isHovering||(state.isHovering=!0,requestAnimationFrame(()=>{e(n),state.isHovering=!1}))},optimizedHandleHoverDatesEvent=optimizedHoverHandler(handleHoverDatesEvent),optimizedHandleHoverSelectedDatesRangeEvent=optimizedHoverHandler(handleHoverSelectedDatesRangeEvent),handleCancelSelectionDates=e=>{state.self&&"Escape"===e.key&&(state.lastDateEl=null,setContext(state.self,"selectedDates",[]),state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates),createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect())},handleMouseLeave=()=>{null!==state.timeoutId&&clearTimeout(state.timeoutId),state.timeoutId=setTimeout(()=>{state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect()},50)},updateDisabledDates=()=>{var e,t,n,i;if(!(null==(n=null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.selectedDates)?void 0:n[0])||!(null==(i=state.self.context.disableDates)?void 0:i[0]))return;const s=getDate(state.self.context.selectedDates[0]),[o,a]=state.self.context.disableDates.map(e=>getDate(e)).reduce(([e,t],n)=>[s>=n?n:e,s<n&&null===t?n:t],[null,null]);o&&setContext(state.self,"displayDateMin",getDateString(new Date(o.setDate(o.getDate()+1)))),a&&setContext(state.self,"displayDateMax",getDateString(new Date(a.setDate(a.getDate()-1)))),state.self.disableDatesPast&&!state.self.disableAllDates&&getDate(state.self.context.displayDateMin)<getDate(state.self.context.dateToday)&&setContext(state.self,"displayDateMin",state.self.context.dateToday)},handleSelectDateRange=(e,t)=>{state.self=e,state.lastDateEl=t,removeHoverEffect(),e.disableDatesGaps&&(state.rangeMin=state.rangeMin?state.rangeMin:e.context.displayDateMin,state.rangeMax=state.rangeMax?state.rangeMax:e.context.displayDateMax),e.onCreateDateRangeTooltip&&(state.tooltipEl=e.context.mainElement.querySelector("[data-vc-date-range-tooltip]"));const n=null==t?void 0:t.dataset.vcDate;if(n){const t=1===e.context.selectedDates.length&&e.context.selectedDates[0].includes(n),i=t&&!canToggleSelection(e)?[n,n]:t&&canToggleSelection(e)?[]:e.context.selectedDates.length>1?[n]:[...e.context.selectedDates,n];setContext(e,"selectedDates",i),e.context.selectedDates.length>1&&e.context.selectedDates.sort((e,t)=>+new Date(e)-+new Date(t))}({set:()=>(e.disableDatesGaps&&updateDisabledDates(),createDateRangeTooltip(state.self,state.tooltipEl,t),state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates),state.self.context.mainElement.addEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.addEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.addEventListener("keydown",handleCancelSelectionDates),()=>{state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates)}),reset:()=>{const[n,i]=[e.context.selectedDates[0],e.context.selectedDates[e.context.selectedDates.length-1]],s=e.context.selectedDates[0]!==e.context.selectedDates[e.context.selectedDates.length-1],o=parseDates([`${n}:${i}`]).filter(t=>!e.context.disableDates.includes(t)),a=s?e.enableEdgeDatesOnly?[n,i]:o:[e.context.selectedDates[0],e.context.selectedDates[0]];if(setContext(e,"selectedDates",a),e.disableDatesGaps&&(setContext(e,"displayDateMin",state.rangeMin),setContext(e,"displayDateMax",state.rangeMax)),state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates),e.onCreateDateRangeTooltip)return e.context.selectedDates[0]||(state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,null)),e.context.selectedDates[0]&&(state.self.context.mainElement.addEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.addEventListener("mouseleave",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,t)),()=>{state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave)}}})[1===e.context.selectedDates.length?"set":"reset"]()},updateDateModifier=e=>{e.context.mainElement.querySelectorAll("[data-vc-date]").forEach(t=>{const n=t.querySelector("[data-vc-date-btn]"),i=t.dataset.vcDate,s=getDate(i).getDay();setDateModifier(e,e.context.selectedYear,t,n,s,i,"current")})},handleClickDate=(e,t)=>{var n;const i=t.target,s=i.closest("[data-vc-date-btn]");if(!e.selectionDatesMode||!["single","multiple","multiple-ranged"].includes(e.selectionDatesMode)||!s)return;const o=s.closest("[data-vc-date]");({single:()=>handleSelectDate(e,o,!1),multiple:()=>handleSelectDate(e,o,!0),"multiple-ranged":()=>handleSelectDateRange(e,o)})[e.selectionDatesMode](),null==(n=e.context.selectedDates)||n.sort((e,t)=>+new Date(e)-+new Date(t)),e.onClickDate&&e.onClickDate(e,t),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t);const a=i.closest('[data-vc-date-month="prev"]'),l=i.closest('[data-vc-date-month="next"]');({prev:()=>e.enableMonthChangeOnDayClick?handleMonth(e,"prev"):updateDateModifier(e),next:()=>e.enableMonthChangeOnDayClick?handleMonth(e,"next"):updateDateModifier(e),current:()=>updateDateModifier(e)})[a?"prev":l?"next":"current"]()},typeClick=["month","year"],getValue=(e,t,n)=>{const{currentValue:i,columnID:s}=getColumnID(e,t);return"month"===e.context.currentType&&s>=0?n-s:"year"===e.context.currentType&&e.context.selectedYear!==i?n-1:n},handleMultipleYearSelection=(e,t)=>{const n=getValue(e,"year",Number(t.dataset.vcYearsYear)),i=getDate(e.context.dateMin),s=getDate(e.context.dateMax),o=e.context.displayMonthsCount-1,{columnID:a}=getColumnID(e,"year"),l=e.context.selectedMonth<i.getMonth()&&n<=i.getFullYear(),r=e.context.selectedMonth>s.getMonth()-o+a&&n>=s.getFullYear(),c=n<i.getFullYear(),d=n>s.getFullYear(),u=l||c?i.getFullYear():r||d?s.getFullYear():n,h=l||c?i.getMonth():r||d?s.getMonth()-o+a:e.context.selectedMonth;setContext(e,"selectedYear",u),setContext(e,"selectedMonth",h)},handleMultipleMonthSelection=(e,t)=>{const n=t.closest('[data-vc-column="month"]').querySelector('[data-vc="year"]'),i=getValue(e,"month",Number(t.dataset.vcMonthsMonth)),s=Number(n.dataset.vcYear),o=getDate(e.context.dateMin),a=getDate(e.context.dateMax),l=i<o.getMonth()&&s<=o.getFullYear(),r=i>a.getMonth()&&s>=a.getFullYear();setContext(e,"selectedYear",s),setContext(e,"selectedMonth",l?o.getMonth():r?a.getMonth():i)},handleItemClick=(e,t,n,i)=>{var s;({year:()=>{if("multiple"===e.type)return handleMultipleYearSelection(e,i);setContext(e,"selectedYear",Number(i.dataset.vcYearsYear))},month:()=>{if("multiple"===e.type)return handleMultipleMonthSelection(e,i);setContext(e,"selectedMonth",Number(i.dataset.vcMonthsMonth))}})[n](),{year:()=>{var n;return null==(n=e.onClickYear)?void 0:n.call(e,e,t)},month:()=>{var n;return null==(n=e.onClickMonth)?void 0:n.call(e,e,t)}}[n](),e.context.currentType!==e.type?(setContext(e,"currentType",e.type),create(e),null==(s=e.context.mainElement.querySelector(`[data-vc="${n}"]`))||s.focus()):setYearModifier(e,i,n,!0,!0)},handleClickType=(e,t,n)=>{var i;const s=t.target,o=s.closest(`[data-vc="${n}"]`),a={year:()=>createYears(e,s),month:()=>createMonths(e,s)};if(o&&e.onClickTitle&&e.onClickTitle(e,t),o&&e.context.currentType!==n)return a[n]();const l=s.closest(`[data-vc-${n}s-${n}]`);if(l)return handleItemClick(e,t,n,l);const r=s.closest('[data-vc="grid"]'),c=s.closest('[data-vc="column"]');(e.context.currentType===n&&o||"multiple"===e.type&&e.context.currentType===n&&r&&!c)&&(setContext(e,"currentType",e.type),create(e),null==(i=e.context.mainElement.querySelector(`[data-vc="${n}"]`))||i.focus())},handleClickMonthOrYear=(e,t)=>{const n={month:e.selectionMonthsMode,year:e.selectionYearsMode};typeClick.forEach(i=>{n[i]&&t.target&&handleClickType(e,t,i)})},handleClickWeekNumber=(e,t)=>{if(!e.enableWeekNumbers||!e.onClickWeekNumber)return;const n=t.target.closest("[data-vc-week-number]"),i=e.context.mainElement.querySelectorAll("[data-vc-date-week-number]");if(!n||!i[0])return;const s=Number(n.innerText),o=Number(n.dataset.vcWeekYear),a=Array.from(i).filter(e=>Number(e.dataset.vcDateWeekNumber)===s);e.onClickWeekNumber(e,s,o,a,t)},handleClickWeekDay=(e,t)=>{if(!e.onClickWeekDay)return;const n=t.target.closest("[data-vc-week-day]"),i=t.target.closest('[data-vc="column"]'),s=i?i.querySelectorAll("[data-vc-date-week-day]"):e.context.mainElement.querySelectorAll("[data-vc-date-week-day]");if(!n||!s[0])return;const o=Number(n.dataset.vcWeekDay),a=Array.from(s).filter(e=>Number(e.dataset.vcDateWeekDay)===o);e.onClickWeekDay(e,o,a,t)},handleClick=e=>{const t=t=>{handleClickArrow(e,t),handleClickWeekDay(e,t),handleClickWeekNumber(e,t),handleClickDate(e,t),handleClickMonthOrYear(e,t)};return e.context.mainElement.addEventListener("click",t),()=>e.context.mainElement.removeEventListener("click",t)},initMonthsCount=e=>{if("multiple"===e.type&&(e.displayMonthsCount<=1||e.displayMonthsCount>12))throw new Error(errorMessages.incorrectMonthsCount);if("multiple"!==e.type&&e.displayMonthsCount>1)throw new Error(errorMessages.incorrectMonthsCount);setContext(e,"displayMonthsCount",e.displayMonthsCount?e.displayMonthsCount:"multiple"===e.type?2:1)},getLocalDate=()=>{const e=new Date;return new Date(e.getTime()-6e4*e.getTimezoneOffset()).toISOString().substring(0,10)},resolveDate=(e,t)=>"today"===e?getLocalDate():e instanceof Date||"number"==typeof e||"string"==typeof e?parseDates([e])[0]:t,initRange=e=>{var t,n,i;const s=resolveDate(e.dateMin,e.dateMin),o=resolveDate(e.dateMax,e.dateMax),a=resolveDate(e.displayDateMin,s),l=resolveDate(e.displayDateMax,o);setContext(e,"dateToday",resolveDate(e.dateToday,e.dateToday)),setContext(e,"displayDateMin",a?getDate(s)>=getDate(a)?s:a:s),setContext(e,"displayDateMax",l?getDate(o)<=getDate(l)?o:l:o);const r=e.disableDatesPast&&!e.disableAllDates&&getDate(a)<getDate(e.context.dateToday);setContext(e,"displayDateMin",r||e.disableAllDates?e.context.dateToday:a),setContext(e,"displayDateMax",e.disableAllDates?e.context.dateToday:l),setContext(e,"disableDates",e.disableDates[0]&&!e.disableAllDates?parseDates(e.disableDates):e.disableAllDates?[e.context.displayDateMin]:[]),e.context.disableDates.length>1&&e.context.disableDates.sort((e,t)=>+new Date(e)-+new Date(t)),setContext(e,"enableDates",e.enableDates[0]?parseDates(e.enableDates):[]),(null==(t=e.context.enableDates)?void 0:t[0])&&(null==(n=e.context.disableDates)?void 0:n[0])&&setContext(e,"disableDates",e.context.disableDates.filter(t=>!e.context.enableDates.includes(t))),e.context.enableDates.length>1&&e.context.enableDates.sort((e,t)=>+new Date(e)-+new Date(t)),(null==(i=e.context.enableDates)?void 0:i[0])&&e.disableAllDates&&(setContext(e,"displayDateMin",e.context.enableDates[0]),setContext(e,"displayDateMax",e.context.enableDates[e.context.enableDates.length-1])),setContext(e,"dateMin",e.displayDisabledDates?s:e.context.displayDateMin),setContext(e,"dateMax",e.displayDisabledDates?o:e.context.displayDateMax)},initSelectedDates=e=>{var t;setContext(e,"selectedDates",(null==(t=e.selectedDates)?void 0:t[0])?parseDates(e.selectedDates):[])},displayClosestValidDate=e=>{const t=t=>{const n=new Date(t);setInitialContext(e,n.getMonth(),n.getFullYear())};if(e.displayDateMin&&"today"!==e.displayDateMin&&(n=e.displayDateMin,i=new Date,new Date(n).getTime()>i.getTime())){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMin;return t(getDate(resolveDate(n,e.displayDateMin))),!0}var n,i;if(e.displayDateMax&&"today"!==e.displayDateMax&&((e,t)=>new Date(e).getTime()<t.getTime())(e.displayDateMax,new Date)){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMax;return t(getDate(resolveDate(n,e.displayDateMax))),!0}return!1},setInitialContext=(e,t,n)=>{setContext(e,"selectedMonth",t),setContext(e,"selectedYear",n),setContext(e,"displayYear",n)},initSelectedMonthYear=e=>{var t;if(e.enableJumpToSelectedDate&&(null==(t=e.selectedDates)?void 0:t[0])&&void 0===e.selectedMonth&&void 0===e.selectedYear){const t=getDate(parseDates(e.selectedDates)[0]);return void setInitialContext(e,t.getMonth(),t.getFullYear())}if(displayClosestValidDate(e))return;const n=void 0!==e.selectedMonth&&Number(e.selectedMonth)>=0&&Number(e.selectedMonth)<12,i=void 0!==e.selectedYear&&Number(e.selectedYear)>=0&&Number(e.selectedYear)<=9999;setInitialContext(e,n?Number(e.selectedMonth):getDate(e.context.dateToday).getMonth(),i?Number(e.selectedYear):getDate(e.context.dateToday).getFullYear())},initTime=e=>{var t,n,i;if(!e.selectionTimeMode)return;if(![12,24].includes(e.selectionTimeMode))throw new Error(errorMessages.incorrectTime);const s=12===e.selectionTimeMode,o=s?/^(0[1-9]|1[0-2]):([0-5][0-9]) ?(AM|PM)?$/i:/^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/;let[a,l,r]=null!=(i=null==(n=null==(t=e.selectedTime)?void 0:t.match(o))?void 0:n.slice(1))?i:[];a?s&&!r&&(r="AM"):(a=s?transformTime12(String(e.timeMinHour)):String(e.timeMinHour),l=String(e.timeMinMinute),r=s?Number(transformTime12(String(e.timeMinHour)))>=12?"PM":"AM":null),setContext(e,"selectedHours",a.padStart(2,"0")),setContext(e,"selectedMinutes",l.padStart(2,"0")),setContext(e,"selectedKeeping",r),setContext(e,"selectedTime",`${e.context.selectedHours}:${e.context.selectedMinutes}${r?` ${r}`:""}`)},initAllVariables=e=>{setContext(e,"currentType",e.type),initMonthsCount(e),initRange(e),initSelectedMonthYear(e),initSelectedDates(e),initTime(e)},reset=(e,{year:t,month:n,dates:i,time:s,locale:o},a=!0)=>{var l;const r={year:e.selectedYear,month:e.selectedMonth,dates:e.selectedDates,time:e.selectedTime};e.selectedYear=t?r.year:e.context.selectedYear,e.selectedMonth=n?r.month:e.context.selectedMonth,e.selectedTime=s?r.time:e.context.selectedTime,e.selectedDates="only-first"===i&&(null==(l=e.context.selectedDates)?void 0:l[0])?[e.context.selectedDates[0]]:!0===i?r.dates:e.context.selectedDates,o&&setContext(e,"locale",{months:{short:[],long:[]},weekdays:{short:[],long:[]}}),initAllVariables(e),a&&create(e),e.selectedYear=r.year,e.selectedMonth=r.month,e.selectedDates=r.dates,e.selectedTime=r.time,"multiple-ranged"===e.selectionDatesMode&&i&&handleSelectDateRange(e,null)},createToInput=e=>{const t=document.createElement("div");return t.className=e.styles.calendar,t.dataset.vc="calendar",t.dataset.vcInput="",t.dataset.vcCalendarHidden="",setContext(e,"inputModeInit",!0),setContext(e,"isShowInInputMode",!1),setContext(e,"mainElement",t),document.body.appendChild(e.context.mainElement),reset(e,{year:!0,month:!0,dates:!0,time:!0,locale:!0}),setTimeout(()=>show(e)),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e)},canOpenOnFocus=e=>resolveToggle(e,e.openOnFocus),handleInput=e=>{setContext(e,"inputElement",e.context.mainElement);const t=()=>{e.context.inputModeInit?setTimeout(()=>show(e)):createToInput(e)};e.context.inputElement.addEventListener("click",t);const n="function"==typeof e.openOnFocus||!0===e.openOnFocus,i=()=>{shouldSkipOpenOnFocus(e)?clearSkipOpenOnFocus(e):canOpenOnFocus(e)&&t()};n&&e.context.inputElement.addEventListener("focus",i);const s=t=>{const n="Tab"===t.key&&!t.shiftKey,i=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(t.key);(n||i)&&(t=>{var n;if(!e.context.isShowInInputMode)return!1;if(document.activeElement!==e.context.inputElement)return!1;const i=e=>e.tabIndex>=0&&!e.hasAttribute("disabled")&&"true"!==e.getAttribute("aria-disabled"),s=null!=(n=document.createTreeWalker(e.context.mainElement,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>i(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}).nextNode())?n:i(e.context.mainElement)?e.context.mainElement:null;!s||s.tabIndex<0||(t.preventDefault(),s.focus())})(t)};return e.context.inputElement.addEventListener("keydown",s),()=>{e.context.inputElement.removeEventListener("click",t),n&&e.context.inputElement.removeEventListener("focus",i),e.context.inputElement.removeEventListener("keydown",s)}},init=e=>(setContext(e,"originalElement",e.context.mainElement.cloneNode(!0)),setContext(e,"isInit",!0),e.inputMode?handleInput(e):(initAllVariables(e),create(e),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e))),update=(e,t)=>{if(!e.context.isInit)throw new Error(errorMessages.notInit);reset(e,__spreadValues(__spreadValues({},{year:!0,month:!0,dates:!0,time:!0,locale:!0}),t),!(e.inputMode&&!e.context.inputModeInit)),e.onUpdate&&e.onUpdate(e)},replaceProperties=(e,t)=>{const n=Object.keys(t);for(let i=0;i<n.length;i++){const s=n[i];"object"!=typeof e[s]||"object"!=typeof t[s]||t[s]instanceof Date||Array.isArray(t[s])?void 0!==t[s]&&(e[s]=t[s]):replaceProperties(e[s],t[s])}},set=(e,t,n)=>{replaceProperties(e,t),e.context.isInit&&update(e,n)};function findBestPickerPosition(e,t){const n="left";if(!t||!e)return n;const{canShow:i,parentPositions:s}=getAvailablePosition(e,t),o=i.left&&i.right;return(o&&i.bottom?"center":o&&i.top?["top","center"]:Array.isArray(s)?["bottom"===s[0]?"top":"bottom",...s.slice(1)]:s)||n}const setPosition=(e,t,n)=>{if(!e)return;const i="auto"===n?findBestPickerPosition(e,t):n,s={top:-t.offsetHeight,bottom:e.offsetHeight,left:0,center:e.offsetWidth/2-t.offsetWidth/2,right:e.offsetWidth-t.offsetWidth},o=Array.isArray(i)?i[0]:"bottom",a=Array.isArray(i)?i[1]:i;t.dataset.vcPosition=o;const{top:l,left:r}=getOffset(e),c=l+s[o];let d=r+s[a];const{vw:u}=getViewportDimensions();if(d+t.clientWidth>u){const e=window.innerWidth-document.body.clientWidth;d=u-t.clientWidth-e}else d<0&&(d=0);Object.assign(t.style,{left:`${d}px`,top:`${c}px`})},show=e=>{if(e.context.isShowInInputMode)return;if(!e.context.currentType)return void e.context.mainElement.click();setContext(e,"cleanupHandlers",[]),setContext(e,"isShowInInputMode",!0),e.inputMode&&restoreTabbing(e.context.mainElement),setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput),e.context.mainElement.removeAttribute("data-vc-calendar-hidden");const t=()=>{setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput)};window.addEventListener("resize",t),e.context.cleanupHandlers.push(()=>window.removeEventListener("resize",t));const n=t=>{"Escape"===t.key&&hide(e)};document.addEventListener("keydown",n),e.context.cleanupHandlers.push(()=>document.removeEventListener("keydown",n));const i=t=>{t.target===e.context.inputElement||e.context.mainElement.contains(t.target)||hide(e)};document.addEventListener("click",i,{capture:!0}),e.context.cleanupHandlers.push(()=>document.removeEventListener("click",i,{capture:!0})),e.onShow&&e.onShow(e)},labels={application:"Calendar",navigation:"Calendar Navigation",arrowNext:{month:"Next month",year:"Next list of years"},arrowPrev:{month:"Previous month",year:"Previous list of years"},month:"Select month, current selected month:",months:"List of months",year:"Select year, current selected year:",years:"List of years",week:"Days of the week",weekNumber:"Numbers of weeks in a year",dates:"Dates in the current month",selectingTime:"Selecting a time ",inputHour:"Hours",inputMinute:"Minutes",rangeHour:"Slider for selecting hours",rangeMinute:"Slider for selecting minutes",btnKeeping:"Switch AM/PM, current position:"},styles={calendar:"vc",controls:"vc-controls",grid:"vc-grid",column:"vc-column",header:"vc-header",headerContent:"vc-header__content",month:"vc-month",year:"vc-year",arrowPrev:"vc-arrow vc-arrow_prev",arrowNext:"vc-arrow vc-arrow_next",wrapper:"vc-wrapper",content:"vc-content",months:"vc-months",monthsMonth:"vc-months__month",years:"vc-years",yearsYear:"vc-years__year",week:"vc-week",weekDay:"vc-week__day",weekNumbers:"vc-week-numbers",weekNumbersTitle:"vc-week-numbers__title",weekNumbersContent:"vc-week-numbers__content",weekNumber:"vc-week-number",dates:"vc-dates",datesRow:"vc-dates__row",date:"vc-date",dateBtn:"vc-date__btn",datePopup:"vc-date__popup",dateRangeTooltip:"vc-date-range-tooltip",time:"vc-time",timeContent:"vc-time__content",timeHour:"vc-time__hour",timeMinute:"vc-time__minute",timeKeeping:"vc-time__keeping",timeRanges:"vc-time__ranges",timeRange:"vc-time__range"};class OptionsCalendar{constructor(){__publicField(this,"type","default"),__publicField(this,"inputMode",!1),__publicField(this,"openOnFocus",!0),__publicField(this,"positionToInput","left"),__publicField(this,"firstWeekday",1),__publicField(this,"monthsToSwitch",1),__publicField(this,"themeAttrDetect","html[data-theme]"),__publicField(this,"locale","en"),__publicField(this,"dateToday","today"),__publicField(this,"dateMin","1970-01-01"),__publicField(this,"dateMax","2470-12-31"),__publicField(this,"displayDateMin"),__publicField(this,"displayDateMax"),__publicField(this,"displayDatesOutside",!0),__publicField(this,"displayDisabledDates",!1),__publicField(this,"displayMonthsCount"),__publicField(this,"disableDates",[]),__publicField(this,"disableAllDates",!1),__publicField(this,"disableDatesPast",!1),__publicField(this,"disableDatesGaps",!1),__publicField(this,"disableWeekdays",[]),__publicField(this,"disableToday",!1),__publicField(this,"enableDates",[]),__publicField(this,"enableEdgeDatesOnly",!0),__publicField(this,"enableDateToggle",!0),__publicField(this,"enableWeekNumbers",!1),__publicField(this,"enableMonthChangeOnDayClick",!0),__publicField(this,"enableJumpToSelectedDate",!1),__publicField(this,"selectionDatesMode","single"),__publicField(this,"selectionMonthsMode",!0),__publicField(this,"selectionYearsMode",!0),__publicField(this,"selectionTimeMode",!1),__publicField(this,"selectedDates",[]),__publicField(this,"selectedMonth"),__publicField(this,"selectedYear"),__publicField(this,"selectedHolidays",[]),__publicField(this,"selectedWeekends",[0,6]),__publicField(this,"selectedTime"),__publicField(this,"selectedTheme","system"),__publicField(this,"timeMinHour",0),__publicField(this,"timeMaxHour",23),__publicField(this,"timeMinMinute",0),__publicField(this,"timeMaxMinute",59),__publicField(this,"timeControls","all"),__publicField(this,"timeStepHour",1),__publicField(this,"timeStepMinute",1),__publicField(this,"sanitizerHTML",e=>e),__publicField(this,"onClickDate"),__publicField(this,"onClickWeekDay"),__publicField(this,"onClickWeekNumber"),__publicField(this,"onClickTitle"),__publicField(this,"onClickMonth"),__publicField(this,"onClickYear"),__publicField(this,"onClickArrow"),__publicField(this,"onChangeTime"),__publicField(this,"onChangeToInput"),__publicField(this,"onCreateDateRangeTooltip"),__publicField(this,"onCreateDateEls"),__publicField(this,"onCreateMonthEls"),__publicField(this,"onCreateYearEls"),__publicField(this,"onInit"),__publicField(this,"onUpdate"),__publicField(this,"onDestroy"),__publicField(this,"onShow"),__publicField(this,"onHide"),__publicField(this,"popups",{}),__publicField(this,"labels",__spreadValues({},labels)),__publicField(this,"layouts",{default:"",multiple:"",month:"",year:""}),__publicField(this,"styles",__spreadValues({},styles))}}const _Calendar=class e extends OptionsCalendar{constructor(t,n){var i;super(),__publicField(this,"init",()=>init(this)),__publicField(this,"update",e=>update(this,e)),__publicField(this,"destroy",()=>destroy(this)),__publicField(this,"show",()=>show(this)),__publicField(this,"hide",()=>hide(this)),__publicField(this,"set",(e,t)=>set(this,e,t)),__publicField(this,"context"),this.context=__spreadProps(__spreadValues({},this.context),{locale:{months:{short:[],long:[]},weekdays:{short:[],long:[]}}}),setContext(this,"mainElement","string"==typeof t?null!=(i=e.memoizedElements.get(t))?i:this.queryAndMemoize(t):t),n&&replaceProperties(this,n)}queryAndMemoize(t){const n=document.querySelector(t);if(!n)throw new Error(errorMessages.notFoundSelector(t));return e.memoizedElements.set(t,n),n}};__publicField(_Calendar,"memoizedElements",new Map);let Calendar=_Calendar;const NAME$e="datepicker",DATA_KEY$a="bs.datepicker",EVENT_KEY$a=`.${DATA_KEY$a}`,DATA_API_KEY$5=".data-api",EVENT_CHANGE=`change${EVENT_KEY$a}`,EVENT_SHOW$5=`show${EVENT_KEY$a}`,EVENT_SHOWN$5=`shown${EVENT_KEY$a}`,EVENT_HIDE$5=`hide${EVENT_KEY$a}`,EVENT_HIDDEN$5=`hidden${EVENT_KEY$a}`,EVENT_CLICK_DATA_API$3=`click${EVENT_KEY$a}.data-api`,EVENT_FOCUSIN_DATA_API=`focusin${EVENT_KEY$a}.data-api`,SELECTOR_DATA_TOGGLE$6='[data-bs-toggle="datepicker"]',HIDE_DELAY=100,Default$d={datepickerTheme:null,dateMin:null,dateMax:null,dateFormat:null,displayElement:null,displayMonthsCount:1,firstWeekday:1,inline:!1,locale:"default",positionElement:null,selectedDates:[],selectionMode:"single",placement:"left",vcpOptions:{}},DefaultType$d={datepickerTheme:"(null|string)",dateMin:"(null|string|number|object)",dateMax:"(null|string|number|object)",dateFormat:"(null|object|function)",displayElement:"(null|string|element|boolean)",displayMonthsCount:"number",firstWeekday:"number",inline:"boolean",locale:"string",positionElement:"(null|string|element)",selectedDates:"array",selectionMode:"string",placement:"string",vcpOptions:"object"};class Datepicker extends BaseComponent{constructor(e,t){super(e,t),this._calendar=null,this._isShown=!1,this._initCalendar()}static get Default(){return Default$d}static get DefaultType(){return DefaultType$d}static get NAME(){return NAME$e}toggle(){if(!this._config.inline)return this._isShown?this.hide():this.show()}show(){this._config.inline||!this._calendar||isDisabled(this._element)||this._isShown||EventHandler.trigger(this._element,EVENT_SHOW$5).defaultPrevented||(this._calendar.show(),this._isShown=!0,EventHandler.trigger(this._element,EVENT_SHOWN$5))}hide(){this._config.inline||this._calendar&&this._isShown&&(EventHandler.trigger(this._element,EVENT_HIDE$5).defaultPrevented||(this._calendar.hide(),this._isShown=!1,EventHandler.trigger(this._element,EVENT_HIDDEN$5)))}dispose(){this._themeObserver&&(this._themeObserver.disconnect(),this._themeObserver=null),this._calendar&&this._calendar.destroy(),this._calendar=null,super.dispose()}getSelectedDates(){const e=this._calendar?.context?.selectedDates;return e?[...e]:[]}setSelectedDates(e){this._calendar&&this._calendar.set({selectedDates:e})}_initCalendar(){this._isInput="INPUT"===this._element.tagName,this._isInline=this._config.inline,this._isInline&&!this._isInput&&(this._boundInput=this._element.querySelector('input[type="hidden"], input[name]')),this._positionElement=this._resolvePositionElement(),this._displayElement=this._resolveDisplayElement();const e=this._buildCalendarOptions();this._calendar=new Calendar(this._positionElement,e),this._calendar.init(),this._setupThemeObserver(),this._isInput&&this._element.value&&this._parseInputValue(),this._updateDisplayWithSelectedDates()}_updateDisplayWithSelectedDates(){const{selectedDates:e}=this._config;if(!e||0===e.length)return;const t=this._formatDateForInput(e);this._isInput&&(this._element.value=t),this._boundInput&&(this._boundInput.value=e.join(",")),this._displayElement&&(this._displayElement.textContent=t)}_resolvePositionElement(){let{positionElement:e}=this._config;if("string"==typeof e&&(e=document.querySelector(e)),!e&&this._isInput&&!this._isInline){const t=this._element.closest(".form-adorn");t&&(e=t)}return e||this._element}_resolveDisplayElement(){const{displayElement:e}=this._config;return"string"==typeof e?document.querySelector(e):!0===e||null===e&&!this._isInput&&!this._isInline?this._element.querySelector("[data-bs-datepicker-display]")||this._element:e}_getThemeAncestor(){return this._element.closest("[data-bs-theme]")}_getEffectiveTheme(){const{datepickerTheme:e}=this._config;if(e)return e;const t=this._getThemeAncestor();return t?.getAttribute("data-bs-theme")||null}_syncThemeAttribute(e){if(!e)return;const t=this._getEffectiveTheme();t?e.setAttribute("data-bs-theme",t):e.removeAttribute("data-bs-theme")}_setupThemeObserver(){const e=this._getThemeAncestor();e&&!this._config.datepickerTheme&&(this._themeObserver=new MutationObserver(()=>{this._syncThemeAttribute(this._calendar?.context?.mainElement)}),this._themeObserver.observe(e,{attributes:!0,attributeFilter:["data-bs-theme"]}))}_buildCalendarOptions(){const e=this._getEffectiveTheme(),t=e&&"auto"!==e?e:"system",n={...this._config.vcpOptions,inputMode:!this._isInline,positionToInput:this._config.placement,firstWeekday:this._config.firstWeekday,locale:this._config.locale,selectionDatesMode:this._config.selectionMode,selectedDates:this._config.selectedDates,displayMonthsCount:this._config.displayMonthsCount,type:this._config.displayMonthsCount>1?"multiple":"default",selectedTheme:t,themeAttrDetect:"[data-bs-theme]",onClickDate:(e,t)=>this._handleDateClick(e,t),onInit:e=>{this._syncThemeAttribute(e.context.mainElement)},onShow:()=>{this._isShown=!0,this._syncThemeAttribute(this._calendar.context.mainElement)},onHide:()=>{this._isShown=!1}};if(this._config.selectedDates.length>0){const e=this._parseDate(this._config.selectedDates[0]);n.selectedMonth=e.getMonth(),n.selectedYear=e.getFullYear()}return this._config.dateMin&&(n.dateMin=this._config.dateMin),this._config.dateMax&&(n.dateMax=this._config.dateMax),n}_handleDateClick(e,t){const n=[...e.context.selectedDates];if(n.length>0){const e=this._formatDateForInput(n);this._isInput&&(this._element.value=e),this._boundInput&&(this._boundInput.value=n.join(",")),this._displayElement&&(this._displayElement.textContent=e)}EventHandler.trigger(this._element,EVENT_CHANGE,{dates:n,event:t}),this._maybeHideAfterSelection(n)}_maybeHideAfterSelection(e){this._isInline||("single"===this._config.selectionMode&&e.length>0||"multiple-ranged"===this._config.selectionMode&&e.length>=2)&&setTimeout(()=>this.hide(),100)}_parseDate(e){const[t,n,i]=e.split("-");return new Date(t,n-1,i)}_formatDate(e){const t=this._parseDate(e),n="default"===this._config.locale?void 0:this._config.locale,{dateFormat:i}=this._config;return"function"==typeof i?i(t,n):i&&"object"==typeof i?new Intl.DateTimeFormat(n,i).format(t):t.toLocaleDateString(n)}_formatDateForInput(e){if(0===e.length)return"";if(1===e.length)return this._formatDate(e[0]);const t="multiple-ranged"===this._config.selectionMode?" – ":", ";return e.map(e=>this._formatDate(e)).join(t)}_parseInputValue(){const e=this._element.value.trim();if(!e)return;const t=new Date(e);if(!Number.isNaN(t.getTime())){const e=`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`;this._calendar.set({selectedDates:[e]})}}}EventHandler.on(document,EVENT_CLICK_DATA_API$3,SELECTOR_DATA_TOGGLE$6,function(e){"INPUT"!==this.tagName&&"true"!==this.dataset.bsInline&&(e.preventDefault(),Datepicker.getOrCreateInstance(this).toggle())}),EventHandler.on(document,EVENT_FOCUSIN_DATA_API,SELECTOR_DATA_TOGGLE$6,function(){"INPUT"===this.tagName&&Datepicker.getOrCreateInstance(this).show()}),EventHandler.on(document,`DOMContentLoaded${EVENT_KEY$a}.data-api`,()=>{for(const e of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE$6}[data-bs-inline="true"]`))Datepicker.getOrCreateInstance(e)});const NAME$d="dialog",DATA_KEY$9="bs.dialog",EVENT_KEY$9=`.${DATA_KEY$9}`,DATA_API_KEY$4=".data-api",EVENT_SHOW$4=`show${EVENT_KEY$9}`,EVENT_SHOWN$4=`shown${EVENT_KEY$9}`,EVENT_HIDE$4=`hide${EVENT_KEY$9}`,EVENT_HIDDEN$4=`hidden${EVENT_KEY$9}`,EVENT_HIDE_PREVENTED$1=`hidePrevented${EVENT_KEY$9}`,EVENT_CANCEL=`cancel${EVENT_KEY$9}`,EVENT_CLICK_DATA_API$2=`click${EVENT_KEY$9}.data-api`,CLASS_NAME_STATIC="dialog-static",CLASS_NAME_OPEN="dialog-open",CLASS_NAME_NONMODAL="dialog-nonmodal",SELECTOR_DATA_TOGGLE$5='[data-bs-toggle="dialog"]',SELECTOR_OPEN_MODAL_DIALOG="dialog.dialog[open]:not(.dialog-nonmodal)",Default$c={backdrop:!0,keyboard:!0,modal:!0},DefaultType$c={backdrop:"(boolean|string)",keyboard:"boolean",modal:"boolean"};class Dialog extends BaseComponent{constructor(e,t){super(e,t),this._isTransitioning=!1,this._addEventListeners()}static get Default(){return Default$c}static get DefaultType(){return DefaultType$c}static get NAME(){return NAME$d}toggle(e){return this._element.open?this.hide():this.show(e)}show(e){this._element.open||this._isTransitioning||EventHandler.trigger(this._element,EVENT_SHOW$4,{relatedTarget:e}).defaultPrevented||(this._isTransitioning=!0,this._config.modal?(this._element.showModal(),document.body.classList.add("dialog-open")):(this._element.classList.add("dialog-nonmodal"),this._element.show()),this._queueCallback(()=>{this._isTransitioning=!1,EventHandler.trigger(this._element,EVENT_SHOWN$4,{relatedTarget:e})},this._element,this._isAnimated()))}hide(){this._element.open&&!this._isTransitioning&&(EventHandler.trigger(this._element,EVENT_HIDE$4).defaultPrevented||(this._isTransitioning=!0,this._queueCallback(()=>this._hideDialog(),this._element,this._isAnimated())))}dispose(){EventHandler.off(this._element,EVENT_KEY$9),super.dispose()}handleUpdate(){}_hideDialog(){this._element.close(),this._element.classList.remove("dialog-nonmodal"),this._isTransitioning=!1,document.querySelector(SELECTOR_OPEN_MODAL_DIALOG)||document.body.classList.remove("dialog-open"),EventHandler.trigger(this._element,EVENT_HIDDEN$4)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED$1).defaultPrevented||(this._element.classList.add("dialog-static"),this._queueCallback(()=>{this._element.classList.remove("dialog-static")},this._element))}_addEventListeners(){EventHandler.on(this._element,"cancel",e=>{e.preventDefault(),this._config.keyboard?(EventHandler.trigger(this._element,EVENT_CANCEL),this.hide()):this._triggerBackdropTransition()}),EventHandler.on(this._element,"keydown",e=>{"Escape"!==e.key||this._config.modal||(e.preventDefault(),this._config.keyboard&&(EventHandler.trigger(this._element,EVENT_CANCEL),this.hide()))}),EventHandler.on(this._element,"click",e=>{e.target===this._element&&this._config.modal&&("static"!==this._config.backdrop?this.hide():this._triggerBackdropTransition())})}}EventHandler.on(document,EVENT_CLICK_DATA_API$2,SELECTOR_DATA_TOGGLE$5,function(e){const t=SelectorEngine.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),EventHandler.one(t,EVENT_SHOW$4,e=>{e.defaultPrevented||EventHandler.one(t,EVENT_HIDDEN$4,()=>{isVisible(this)&&this.focus()})});const n=Manipulator.getDataAttributes(this),i=this.closest("dialog[open]");if(i&&i!==t){Dialog.getOrCreateInstance(t,n).show(this);const e=Dialog.getInstance(i);return void(e&&e.hide())}Dialog.getOrCreateInstance(t,n).toggle(this)}),enableDismissTrigger(Dialog);const NAME$c="navoverflow",DATA_KEY$8="bs.navoverflow",EVENT_KEY$8=`.${DATA_KEY$8}`,EVENT_UPDATE=`update${EVENT_KEY$8}`,EVENT_OVERFLOW=`overflow${EVENT_KEY$8}`,CLASS_NAME_OVERFLOW="nav-overflow",CLASS_NAME_OVERFLOW_MENU="nav-overflow-menu",CLASS_NAME_HIDDEN="d-none",SELECTOR_NAV_ITEM=".nav-item",SELECTOR_NAV_LINK=".nav-link",SELECTOR_OVERFLOW_TOGGLE=".nav-overflow-toggle",SELECTOR_OVERFLOW_MENU=".nav-overflow-menu",CLASS_NAME_KEEP="nav-overflow-keep",Default$b={moreText:"More",moreIcon:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"><path d="M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/></svg>',threshold:0},DefaultType$b={moreText:"string",moreIcon:"string",threshold:"number"};class NavOverflow extends BaseComponent{constructor(e,t){super(e,t),this._items=[],this._overflowItems=[],this._overflowMenu=null,this._overflowToggle=null,this._resizeObserver=null,this._isInitialized=!1,this._init()}static get Default(){return Default$b}static get DefaultType(){return DefaultType$b}static get NAME(){return NAME$c}update(){this._calculateOverflow(),EventHandler.trigger(this._element,EVENT_UPDATE)}dispose(){this._resizeObserver&&this._resizeObserver.disconnect(),this._restoreItems(),this._overflowToggle&&this._overflowToggle.parentElement&&this._overflowToggle.parentElement.remove(),super.dispose()}_init(){this._element.classList.add("nav-overflow"),this._items=[...SelectorEngine.find(".nav-item",this._element)];for(const[e,t]of this._items.entries())t.dataset.bsNavOrder=e;this._createOverflowMenu(),this._setupResizeObserver(),this._calculateOverflow(),this._isInitialized=!0}_createOverflowMenu(){if(this._overflowToggle=SelectorEngine.findOne(".nav-overflow-toggle",this._element),this._overflowToggle)return void(this._overflowMenu=SelectorEngine.findOne(".nav-overflow-menu",this._element));const e=document.createElement("li");e.className="nav-item nav-overflow-item",e.innerHTML=`\n      <button class="nav-link nav-overflow-toggle" type="button" data-bs-toggle="menu" data-bs-placement="bottom-end" aria-expanded="false">\n        <span class="nav-overflow-icon">${this._config.moreIcon}</span>\n        <span class="nav-overflow-text">${this._config.moreText}</span>\n      </button>\n      <div class="nav-overflow-menu menu"></div>\n    `,this._element.append(e),this._overflowToggle=e.querySelector(".nav-overflow-toggle"),this._overflowMenu=e.querySelector(".nav-overflow-menu")}_setupResizeObserver(){"undefined"!=typeof ResizeObserver?(this._resizeObserver=new ResizeObserver(()=>{this._calculateOverflow()}),this._resizeObserver.observe(this._element)):EventHandler.on(window,"resize",()=>this._calculateOverflow())}_calculateOverflow(){this._restoreItems();const e=this._element.offsetWidth,t=this._overflowToggle?.closest(".nav-item");let n=0;const i=[],s=e-(t?.offsetWidth||0)-10;for(const e of this._items)n+=e.offsetWidth,e.classList.contains(CLASS_NAME_KEEP)||n>s&&i.push(e);if(this._items.length-i.length<this._config.threshold&&this._items.length>this._config.threshold){const e=this._items.slice(this._config.threshold).filter(e=>!e.classList.contains(CLASS_NAME_KEEP));i.length=0,i.push(...e)}this._moveToOverflow(i),t&&(i.length>0?t.classList.remove("d-none"):t.classList.add("d-none")),i.length>0&&EventHandler.trigger(this._element,EVENT_OVERFLOW,{overflowCount:i.length,visibleCount:this._items.length-i.length})}_moveToOverflow(e){if(this._overflowMenu){this._overflowMenu.innerHTML="",this._overflowItems=[];for(const t of e){const e=SelectorEngine.findOne(".nav-link",t);if(!e)continue;const n=e.cloneNode(!0);n.className="menu-item",e.classList.contains("active")&&n.classList.add("active"),(e.classList.contains("disabled")||e.hasAttribute("disabled"))&&n.classList.add("disabled"),this._overflowMenu.append(n),t.classList.add("d-none"),t.dataset.bsNavOverflow="true",this._overflowItems.push(t)}}}_restoreItems(){for(const e of this._items)e.classList.remove("d-none"),delete e.dataset.bsNavOverflow;this._overflowMenu&&(this._overflowMenu.innerHTML=""),this._overflowItems=[]}}EventHandler.on(document,"DOMContentLoaded",()=>{for(const e of SelectorEngine.find('[data-bs-toggle="nav-overflow"]'))NavOverflow.getOrCreateInstance(e)});const NAME$b="backdrop",CLASS_NAME_FADE$3="fade",CLASS_NAME_SHOW$4="show",EVENT_MOUSEDOWN=`mousedown.bs.${NAME$b}`,Default$a={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},DefaultType$a={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Backdrop extends Config{constructor(e){super(),this._config=this._getConfig(e),this._isAppended=!1,this._element=null}static get Default(){return Default$a}static get DefaultType(){return DefaultType$a}static get NAME(){return NAME$b}show(e){if(!this._config.isVisible)return void execute(e);this._append();const t=this._getElement();this._config.isAnimated&&reflow(t),t.classList.add("show"),this._emulateAnimation(()=>{execute(e)})}hide(e){this._config.isVisible?(this._getElement().classList.remove("show"),this._emulateAnimation(()=>{this.dispose(),execute(e)})):execute(e)}dispose(){this._isAppended&&(EventHandler.off(this._element,EVENT_MOUSEDOWN),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const e=document.createElement("div");e.className=this._config.className,this._config.isAnimated&&e.classList.add("fade"),this._element=e}return this._element}_configAfterMerge(e){return e.rootElement=getElement(e.rootElement),e}_append(){if(this._isAppended)return;const e=this._getElement();this._config.rootElement.append(e),EventHandler.on(e,EVENT_MOUSEDOWN,()=>{execute(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(e){executeAfterTransition(e,this._getElement(),this._config.isAnimated)}}const NAME$a="focustrap",DATA_KEY$7="bs.focustrap",EVENT_KEY$7=`.${DATA_KEY$7}`,EVENT_FOCUSIN$3=`focusin${EVENT_KEY$7}`,EVENT_KEYDOWN_TAB=`keydown.tab${EVENT_KEY$7}`,TAB_KEY="Tab",TAB_NAV_FORWARD="forward",TAB_NAV_BACKWARD="backward",Default$9={autofocus:!0,trapElement:null},DefaultType$9={autofocus:"boolean",trapElement:"element"};class FocusTrap extends Config{constructor(e){super(),this._config=this._getConfig(e),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return Default$9}static get DefaultType(){return DefaultType$9}static get NAME(){return NAME$a}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),EventHandler.off(document,EVENT_KEY$7),EventHandler.on(document,EVENT_FOCUSIN$3,e=>this._handleFocusin(e)),EventHandler.on(document,EVENT_KEYDOWN_TAB,e=>this._handleKeydown(e)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,EventHandler.off(document,EVENT_KEY$7))}_handleFocusin(e){const{trapElement:t}=this._config;if(e.target===document||e.target===t||t.contains(e.target))return;const n=SelectorEngine.focusableChildren(t);0===n.length?t.focus():"backward"===this._lastTabNavDirection?n[n.length-1].focus():n[0].focus()}_handleKeydown(e){"Tab"===e.key&&(this._lastTabNavDirection=e.shiftKey?"backward":"forward")}}const SELECTOR_FIXED_CONTENT=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",SELECTOR_STICKY_CONTENT=".sticky-top",PROPERTY_PADDING="padding-right",PROPERTY_MARGIN="margin-right";class ScrollBarHelper{constructor(){this._element=document.body}getWidth(){const e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}hide(){const e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,"padding-right",t=>t+e),this._setElementAttributes(SELECTOR_FIXED_CONTENT,"padding-right",t=>t+e),this._setElementAttributes(".sticky-top","margin-right",t=>t-e)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"padding-right"),this._resetElementAttributes(SELECTOR_FIXED_CONTENT,"padding-right"),this._resetElementAttributes(".sticky-top","margin-right")}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(e,t,n){const i=this.getWidth();this._applyManipulationCallback(e,e=>{if(e!==this._element&&window.innerWidth>e.clientWidth+i)return;this._saveInitialAttribute(e,t);const s=window.getComputedStyle(e).getPropertyValue(t);e.style.setProperty(t,`${n(Number.parseFloat(s))}px`)})}_saveInitialAttribute(e,t){const n=e.style.getPropertyValue(t);n&&Manipulator.setDataAttribute(e,t,n)}_resetElementAttributes(e,t){this._applyManipulationCallback(e,e=>{const n=Manipulator.getDataAttribute(e,t);null!==n?(Manipulator.removeDataAttribute(e,t),e.style.setProperty(t,n)):e.style.removeProperty(t)})}_applyManipulationCallback(e,t){if(isElement$1(e))t(e);else for(const n of SelectorEngine.find(e,this._element))t(n)}}const NAME$9="offcanvas",DATA_KEY$6="bs.offcanvas",EVENT_KEY$6=`.${DATA_KEY$6}`,DATA_API_KEY$3=".data-api",EVENT_LOAD_DATA_API$2=`load${EVENT_KEY$6}.data-api`,ESCAPE_KEY="Escape",CLASS_NAME_SHOW$3="show",CLASS_NAME_SHOWING$1="showing",CLASS_NAME_HIDING="hiding",CLASS_NAME_BACKDROP="offcanvas-backdrop",OPEN_SELECTOR=".offcanvas.show",EVENT_SHOW$3=`show${EVENT_KEY$6}`,EVENT_SHOWN$3=`shown${EVENT_KEY$6}`,EVENT_HIDE$3=`hide${EVENT_KEY$6}`,EVENT_HIDE_PREVENTED=`hidePrevented${EVENT_KEY$6}`,EVENT_HIDDEN$3=`hidden${EVENT_KEY$6}`,EVENT_RESIZE=`resize${EVENT_KEY$6}`,EVENT_CLICK_DATA_API$1=`click${EVENT_KEY$6}.data-api`,EVENT_KEYDOWN_DISMISS=`keydown.dismiss${EVENT_KEY$6}`,SELECTOR_DATA_TOGGLE$4='[data-bs-toggle="offcanvas"]',Default$8={backdrop:!0,keyboard:!0,scroll:!1},DefaultType$8={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Offcanvas extends BaseComponent{constructor(e,t){super(e,t),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Default$8}static get DefaultType(){return DefaultType$8}static get NAME(){return NAME$9}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){this._isShown||EventHandler.trigger(this._element,EVENT_SHOW$3,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new ScrollBarHelper).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add("showing"),this._queueCallback(()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add("show"),this._element.classList.remove("showing"),EventHandler.trigger(this._element,EVENT_SHOWN$3,{relatedTarget:e})},this._element,!0))}hide(){this._isShown&&(EventHandler.trigger(this._element,EVENT_HIDE$3).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add("hiding"),this._backdrop.hide(),this._queueCallback(()=>{this._element.classList.remove("show","hiding"),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new ScrollBarHelper).reset(),EventHandler.trigger(this._element,EVENT_HIDDEN$3)},this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const e=Boolean(this._config.backdrop);return new Backdrop({className:CLASS_NAME_BACKDROP,isVisible:e,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:e?()=>{"static"!==this._config.backdrop?this.hide():EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED)}:null})}_initializeFocusTrap(){return new FocusTrap({trapElement:this._element})}_addEventListeners(){EventHandler.on(this._element,EVENT_KEYDOWN_DISMISS,e=>{"Escape"===e.key&&(this._config.keyboard?this.hide():EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED))})}}EventHandler.on(document,EVENT_CLICK_DATA_API$1,SELECTOR_DATA_TOGGLE$4,function(e){const t=SelectorEngine.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),isDisabled(this))return;EventHandler.one(t,EVENT_HIDDEN$3,()=>{isVisible(this)&&this.focus()});const n=SelectorEngine.findOne(OPEN_SELECTOR);n&&n!==t&&Offcanvas.getInstance(n).hide(),Offcanvas.getOrCreateInstance(t).toggle(this)}),EventHandler.on(window,EVENT_LOAD_DATA_API$2,()=>{for(const e of SelectorEngine.find(OPEN_SELECTOR))Offcanvas.getOrCreateInstance(e).show()}),EventHandler.on(window,EVENT_RESIZE,()=>{for(const e of SelectorEngine.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(e).position&&Offcanvas.getOrCreateInstance(e).hide()}),enableDismissTrigger(Offcanvas);const NAME$8="strength",DATA_KEY$5="bs.strength",EVENT_KEY$5=`.${DATA_KEY$5}`,DATA_API_KEY$2=".data-api",EVENT_STRENGTH_CHANGE=`strengthChange${EVENT_KEY$5}`,SELECTOR_DATA_STRENGTH="[data-bs-strength]",STRENGTH_LEVELS=["weak","fair","good","strong"],Default$7={input:null,minLength:8,messages:{weak:"Weak",fair:"Fair",good:"Good",strong:"Strong"},weights:{minLength:1,extraLength:1,lowercase:1,uppercase:1,numbers:1,special:1,multipleSpecial:1,longPassword:1},thresholds:[2,4,6],scorer:null},DefaultType$7={input:"(string|element|null)",minLength:"number",messages:"object",weights:"object",thresholds:"array",scorer:"(function|null)"};class Strength extends BaseComponent{constructor(e,t){super(e,t),this._input=this._getInput(),this._segments=SelectorEngine.find(".strength-segment",this._element),this._textElement=SelectorEngine.findOne(".strength-text",this._element.parentElement),this._currentStrength=null,this._input&&(this._addEventListeners(),this._evaluate())}static get Default(){return Default$7}static get DefaultType(){return DefaultType$7}static get NAME(){return NAME$8}getStrength(){return this._currentStrength}evaluate(){this._evaluate()}_getInput(){if(this._config.input)return"string"==typeof this._config.input?SelectorEngine.findOne(this._config.input):this._config.input;const e=this._element.parentElement;return SelectorEngine.findOne('input[type="password"]',e)}_addEventListeners(){EventHandler.on(this._input,"input",()=>this._evaluate()),EventHandler.on(this._input,"change",()=>this._evaluate())}_evaluate(){const e=this._input.value,t=this._calculateScore(e),n=this._scoreToStrength(t);n!==this._currentStrength&&(this._currentStrength=n,this._updateUI(n,t),EventHandler.trigger(this._element,EVENT_STRENGTH_CHANGE,{strength:n,score:t,password:e.length>0?"***":""}))}_calculateScore(e){if(!e)return 0;if("function"==typeof this._config.scorer)return this._config.scorer(e);const{weights:t}=this._config;let n=0;return e.length>=this._config.minLength&&(n+=t.minLength),e.length>=this._config.minLength+4&&(n+=t.extraLength),/[a-z]/.test(e)&&(n+=t.lowercase),/[A-Z]/.test(e)&&(n+=t.uppercase),/\d/.test(e)&&(n+=t.numbers),/[!@#$%^&*(),.?":{}|<>]/.test(e)&&(n+=t.special),/[!@#$%^&*(),.?":{}|<>].*[!@#$%^&*(),.?":{}|<>]/.test(e)&&(n+=t.multipleSpecial),e.length>=16&&(n+=t.longPassword),n}_scoreToStrength(e){if(0===e)return null;const[t,n,i]=this._config.thresholds;return e<=t?"weak":e<=n?"fair":e<=i?"good":"strong"}_updateUI(e){e?this._element.dataset.bsStrength=e:delete this._element.dataset.bsStrength;const t=e?STRENGTH_LEVELS.indexOf(e):-1;for(const[e,n]of this._segments.entries())e<=t?n.classList.add("active"):n.classList.remove("active");if(this._textElement)if(e&&this._config.messages[e]){this._textElement.textContent=this._config.messages[e],this._textElement.dataset.bsStrength=e;const t={weak:"danger",fair:"warning",good:"info",strong:"success"};this._textElement.style.setProperty("--strength-color",`var(--${t[e]}-text)`)}else this._textElement.textContent="",delete this._textElement.dataset.bsStrength}}EventHandler.on(document,`DOMContentLoaded${EVENT_KEY$5}.data-api`,()=>{for(const e of SelectorEngine.find("[data-bs-strength]"))Strength.getOrCreateInstance(e)});const NAME$7="otpInput",DATA_KEY$4="bs.otp-input",EVENT_KEY$4=`.${DATA_KEY$4}`,DATA_API_KEY$1=".data-api",EVENT_COMPLETE=`complete${EVENT_KEY$4}`,EVENT_INPUT=`input${EVENT_KEY$4}`,SELECTOR_DATA_OTP="[data-bs-otp]",SELECTOR_INPUT="input",Default$6={length:6,mask:!1},DefaultType$6={length:"number",mask:"boolean"};class OtpInput extends BaseComponent{constructor(e,t){super(e,t),this._inputs=SelectorEngine.find("input",this._element),this._setupInputs(),this._addEventListeners()}static get Default(){return Default$6}static get DefaultType(){return DefaultType$6}static get NAME(){return NAME$7}getValue(){return this._inputs.map(e=>e.value).join("")}setValue(e){const t=String(e).split("");for(const[e,n]of this._inputs.entries())n.value=t[e]||"";this._checkComplete()}clear(){for(const e of this._inputs)e.value="";this._inputs[0]?.focus()}focus(){const e=this._inputs.find(e=>!e.value);e?e.focus():this._inputs.at(-1)?.focus()}_setupInputs(){for(const e of this._inputs)e.setAttribute("maxlength","1"),e.setAttribute("inputmode","numeric"),e.setAttribute("pattern","\\d*"),e===this._inputs[0]?e.setAttribute("autocomplete","one-time-code"):e.setAttribute("autocomplete","off"),this._config.mask&&e.setAttribute("type","password")}_addEventListeners(){for(const[e,t]of this._inputs.entries())EventHandler.on(t,"input",t=>this._handleInput(t,e)),EventHandler.on(t,"keydown",t=>this._handleKeydown(t,e)),EventHandler.on(t,"paste",e=>this._handlePaste(e)),EventHandler.on(t,"focus",e=>this._handleFocus(e))}_handleInput(e,t){const n=e.target;/^\d*$/.test(n.value)||(n.value=n.value.replace(/\D/g,""));const{value:i}=n;if(i.length>1){const e=i.split("");n.value=e[0]||"";for(let n=1;n<e.length&&t+n<this._inputs.length;n++)this._inputs[t+n].value=e[n];const s=Math.min(t+e.length,this._inputs.length-1);this._inputs[s].focus()}else i&&t<this._inputs.length-1&&this._inputs[t+1].focus();EventHandler.trigger(this._element,EVENT_INPUT,{value:this.getValue(),index:t}),this._checkComplete()}_handleKeydown(e,t){const{key:n}=e;switch(n){case"Backspace":!this._inputs[t].value&&t>0&&(e.preventDefault(),this._inputs[t-1].value="",this._inputs[t-1].focus());break;case"Delete":e.preventDefault();for(let e=t;e<this._inputs.length-1;e++)this._inputs[e].value=this._inputs[e+1].value;this._inputs.at(-1).value="";break;case"ArrowLeft":t>0&&(e.preventDefault(),this._inputs[t-1].focus());break;case"ArrowRight":t<this._inputs.length-1&&(e.preventDefault(),this._inputs[t+1].focus())}}_handlePaste(e){e.preventDefault();const t=(e.clipboardData||window.clipboardData).getData("text").replace(/\D/g,"").slice(0,this._inputs.length);if(t){this.setValue(t);const e=Math.min(t.length,this._inputs.length)-1;this._inputs[e].focus()}}_handleFocus(e){e.target.select()}_checkComplete(){const e=this.getValue();e.length===this._inputs.length&&this._inputs.every(e=>""!==e.value)&&EventHandler.trigger(this._element,EVENT_COMPLETE,{value:e})}}EventHandler.on(document,`DOMContentLoaded${EVENT_KEY$4}.data-api`,()=>{for(const e of SelectorEngine.find("[data-bs-otp]"))OtpInput.getOrCreateInstance(e)});const ARIA_ATTRIBUTE_PATTERN=/^aria-[\w-]*$/i,DefaultAllowlist={"*":["class","dir","id","lang","role",ARIA_ATTRIBUTE_PATTERN],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},uriAttributes=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),SAFE_URL_PATTERN=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,allowedAttribute=(e,t)=>{const n=e.nodeName.toLowerCase();return t.includes(n)?!uriAttributes.has(n)||Boolean(SAFE_URL_PATTERN.test(e.nodeValue)):t.filter(e=>e instanceof RegExp).some(e=>e.test(n))};function sanitizeHtml(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const i=(new window.DOMParser).parseFromString(e,"text/html"),s=[].concat(...i.body.querySelectorAll("*"));for(const e of s){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const i=[].concat(...e.attributes),s=[].concat(t["*"]||[],t[n]||[]);for(const t of i)allowedAttribute(t,s)||e.removeAttribute(t.nodeName)}return i.body.innerHTML}const NAME$6="TemplateFactory",Default$5={allowList:DefaultAllowlist,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},DefaultType$5={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},DefaultContentType={entry:"(string|element|function|null)",selector:"(string|element)"};class TemplateFactory extends Config{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Default$5}static get DefaultType(){return DefaultType$5}static get NAME(){return NAME$6}getContent(){return Object.values(this._config.content).map(e=>this._resolvePossibleFunction(e)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},DefaultContentType)}_setContent(e,t,n){const i=SelectorEngine.findOne(n,e);i&&((t=this._resolvePossibleFunction(t))?isElement$1(t)?this._putElementInTemplate(getElement(t),i):this._config.html?i.innerHTML=this._maybeSanitize(t):i.textContent=t:i.remove())}_maybeSanitize(e){return this._config.sanitize?sanitizeHtml(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return execute(e,[void 0,this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const NAME$5="tooltip",DISALLOWED_ATTRIBUTES=new Set(["sanitize","allowList","sanitizeFn"]),CLASS_NAME_FADE$2="fade",CLASS_NAME_MODAL="modal",CLASS_NAME_SHOW$2="show",SELECTOR_TOOLTIP_INNER=".tooltip-inner",SELECTOR_MODAL=".modal",SELECTOR_DATA_TOGGLE$3='[data-bs-toggle="tooltip"]',EVENT_MODAL_HIDE="hide.bs.modal",TRIGGER_HOVER="hover",TRIGGER_FOCUS="focus",TRIGGER_CLICK="click",TRIGGER_MANUAL="manual",EVENT_HIDE$2="hide",EVENT_HIDDEN$2="hidden",EVENT_SHOW$2="show",EVENT_SHOWN$2="shown",EVENT_INSERTED="inserted",EVENT_CLICK$3="click",EVENT_FOCUSIN$2="focusin",EVENT_FOCUSOUT$1="focusout",EVENT_MOUSEENTER$1="mouseenter",EVENT_MOUSELEAVE="mouseleave",AttachmentMap={AUTO:"auto",TOP:"top",RIGHT:isRTL$1()?"left":"right",BOTTOM:"bottom",LEFT:isRTL$1()?"right":"left"},Default$4={allowList:DefaultAllowlist,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",floatingConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},DefaultType$4={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",floatingConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Tooltip extends BaseComponent{constructor(e,t){super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._floatingCleanup=null,this._templateFactory=null,this._newContent=null,this._mediaQueryListeners=[],this._responsivePlacements=null,this.tip=null,this._parseResponsivePlacements(),this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Default$4}static get DefaultType(){return DefaultType$4}static get NAME(){return NAME$5}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),EventHandler.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposeFloating(),this._disposeMediaQueryListeners(),super.dispose()}async show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=EventHandler.trigger(this._element,this.constructor.eventName("show")),t=(findShadowRoot(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this._disposeFloating();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),EventHandler.trigger(this._element,this.constructor.eventName("inserted"))),await this._createFloating(n),n.classList.add("show"),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))EventHandler.on(e,"mouseover",noop);this._queueCallback(()=>{EventHandler.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1},this.tip,this._isAnimated())}hide(){if(this._isShown()&&!EventHandler.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove("show"),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))EventHandler.off(e,"mouseover",noop);this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this._isHovered=null,this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposeFloating(),this._element.removeAttribute("aria-describedby"),EventHandler.trigger(this._element,this.constructor.eventName("hidden")))},this.tip,this._isAnimated())}}update(){this._floatingCleanup&&this.tip&&this._updateFloatingPosition()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();t.classList.remove("fade","show"),t.classList.add(`bs-${this.constructor.NAME}-auto`);const n=getUID(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add("fade"),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposeFloating(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new TemplateFactory({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[SELECTOR_TOOLTIP_INNER]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains("fade")}_isShown(){return this.tip&&this.tip.classList.contains("show")}_getPlacement(e){if(this._responsivePlacements){const e=getResponsivePlacement(this._responsivePlacements,"top");return AttachmentMap[e.toUpperCase()]||e}const t=execute(this._config.placement,[this,e,this._element]);return AttachmentMap[t.toUpperCase()]||t}_parseResponsivePlacements(){"string"==typeof this._config.placement?(this._responsivePlacements=parseResponsivePlacement(this._config.placement,"top"),this._responsivePlacements&&this._setupMediaQueryListeners()):this._responsivePlacements=null}_setupMediaQueryListeners(){this._disposeMediaQueryListeners(),this._mediaQueryListeners=createBreakpointListeners(()=>{this._isShown()&&this._updateFloatingPosition()})}_disposeMediaQueryListeners(){disposeBreakpointListeners(this._mediaQueryListeners),this._mediaQueryListeners=[]}async _createFloating(e){const t=this._getPlacement(e),n=e.querySelector(`.${this.constructor.NAME}-arrow`);await this._updateFloatingPosition(e,t,n),this._floatingCleanup=autoUpdate(this._element,e,()=>this._updateFloatingPosition(e,null,n))}async _updateFloatingPosition(e=this.tip,t=null,n=null){if(!e)return;t||(t=this._getPlacement(e)),n||(n=e.querySelector(`.${this.constructor.NAME}-arrow`));const i=this._getFloatingMiddleware(n),s=this._getFloatingConfig(t,i),{x:o,y:a,placement:l,middlewareData:r}=await computePosition(this._element,e,s);if(Object.assign(e.style,{position:"absolute",left:`${o}px`,top:`${a}px`}),n&&(n.style.position="absolute"),Manipulator.setDataAttribute(e,"placement",l),n&&r.arrow){const{x:e,y:t}=r.arrow,i=l.startsWith("top")||l.startsWith("bottom");Object.assign(n.style,{left:i&&null!==e?`${e}px`:"",top:i||null===t?"":`${t}px`,right:"",bottom:""})}}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?({placement:t,rects:n})=>e({placement:t,reference:n.reference,floating:n.floating},this._element):e}_resolvePossibleFunction(e){return execute(e,[this._element,this._element])}_getFloatingMiddleware(e){const t=this._getOffset(),n=[offset("function"==typeof t?t:{mainAxis:t[1]||0,crossAxis:t[0]||0}),flip({fallbackPlacements:this._config.fallbackPlacements}),shift({boundary:"clippingParents"===this._config.boundary?"clippingAncestors":this._config.boundary})];return e&&n.push(arrow({element:e})),n}_getFloatingConfig(e,t){const n={placement:e,middleware:t};return{...n,...execute(this._config.floatingConfig,[void 0,n])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)EventHandler.on(this._element,this.constructor.eventName("click"),this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger.click=!(t._isShown()&&t._activeTrigger.click),t.toggle()});else if("manual"!==t){const e="hover"===t?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n="hover"===t?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");EventHandler.on(this._element,e,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?"focus":"hover"]=!0,t._enter()}),EventHandler.on(this._element,n,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?"focus":"hover"]=t._element.contains(e.relatedTarget),t._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},EventHandler.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=Manipulator.getDataAttributes(this._element);for(const e of Object.keys(t))DISALLOWED_ATTRIBUTES.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:getElement(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposeFloating(){this._floatingCleanup&&(this._floatingCleanup(),this._floatingCleanup=null),this.tip&&(this.tip.remove(),this.tip=null)}}const initTooltip=e=>{const t=e.target.closest(SELECTOR_DATA_TOGGLE$3);if(!t)return;const n=Tooltip.getOrCreateInstance(t);"focusin"===e.type&&(n._activeTrigger.focus=!0,n._enter())};EventHandler.on(document,"focusin",SELECTOR_DATA_TOGGLE$3,initTooltip),EventHandler.on(document,"mouseenter",SELECTOR_DATA_TOGGLE$3,initTooltip);const NAME$4="popover",SELECTOR_TITLE=".popover-header",SELECTOR_CONTENT=".popover-body",SELECTOR_DATA_TOGGLE$2='[data-bs-toggle="popover"]',EVENT_CLICK$2="click",EVENT_FOCUSIN$1="focusin",EVENT_MOUSEENTER="mouseenter",Default$3={...Tooltip.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},DefaultType$3={...Tooltip.DefaultType,content:"(null|string|element|function)"};class Popover extends Tooltip{static get Default(){return Default$3}static get DefaultType(){return DefaultType$3}static get NAME(){return NAME$4}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[SELECTOR_TITLE]:this._getTitle(),[SELECTOR_CONTENT]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}}const initPopover=e=>{const t=e.target.closest(SELECTOR_DATA_TOGGLE$2);if(!t)return;"click"===e.type&&e.preventDefault();const n=Popover.getOrCreateInstance(t);"click"===e.type?n.toggle():"focusin"===e.type&&(n._activeTrigger.focus=!0,n._enter())};EventHandler.on(document,"click",SELECTOR_DATA_TOGGLE$2,initPopover),EventHandler.on(document,"focusin",SELECTOR_DATA_TOGGLE$2,initPopover),EventHandler.on(document,"mouseenter",SELECTOR_DATA_TOGGLE$2,initPopover);const NAME$3="scrollspy",DATA_KEY$3="bs.scrollspy",EVENT_KEY$3=`.${DATA_KEY$3}`,DATA_API_KEY=".data-api",EVENT_ACTIVATE=`activate${EVENT_KEY$3}`,EVENT_CLICK$1=`click${EVENT_KEY$3}`,EVENT_LOAD_DATA_API$1=`load${EVENT_KEY$3}.data-api`,CLASS_NAME_MENU_ITEM="menu-item",CLASS_NAME_ACTIVE$1="active",SELECTOR_DATA_SPY='[data-bs-spy="scroll"]',SELECTOR_TARGET_LINKS="[href]",SELECTOR_NAV_LIST_GROUP=".nav, .list-group",SELECTOR_NAV_LINKS=".nav-link",SELECTOR_NAV_ITEMS=".nav-item",SELECTOR_LIST_ITEMS=".list-group-item",SELECTOR_LINK_ITEMS=".nav-link, .nav-item > .nav-link, .list-group-item",SELECTOR_MENU_TOGGLE$1='[data-bs-toggle="menu"]',Default$2={rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},DefaultType$2={rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class ScrollSpy extends BaseComponent{constructor(e,t){super(e,t),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return Default$2}static get DefaultType(){return DefaultType$2}static get NAME(){return NAME$3}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const e of this._observableSections.values())this._observer.observe(e)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(e){return e.target=getElement(e.target)||document.body,"string"==typeof e.threshold&&(e.threshold=e.threshold.split(",").map(e=>Number.parseFloat(e))),e}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(EventHandler.off(this._config.target,EVENT_CLICK$1),EventHandler.on(this._config.target,EVENT_CLICK$1,"[href]",e=>{const t=this._observableSections.get(e.target.hash);if(t){e.preventDefault();const n=this._rootElement||window,i=t.offsetTop-this._element.offsetTop;if(n.scrollTo)return void n.scrollTo({top:i,behavior:"smooth"});n.scrollTop=i}}))}_getNewObserver(){const e={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(e=>this._observerCallback(e),e)}_observerCallback(e){const t=e=>this._targetLinks.get(`#${e.target.id}`),n=e=>{this._previousScrollData.visibleEntryTop=e.target.offsetTop,this._process(t(e))},i=(this._rootElement||document.documentElement).scrollTop,s=i>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=i;for(const o of e){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(t(o));continue}const e=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&e){if(n(o),!i)return}else s||e||n(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const e=SelectorEngine.find("[href]",this._config.target);for(const t of e){if(!t.hash||isDisabled(t))continue;const e=SelectorEngine.findOne(decodeURI(t.hash),this._element);isVisible(e)&&(this._targetLinks.set(decodeURI(t.hash),t),this._observableSections.set(t.hash,e))}}_process(e){this._activeTarget!==e&&(this._clearActiveClass(this._config.target),this._activeTarget=e,e.classList.add("active"),this._activateParents(e),EventHandler.trigger(this._element,EVENT_ACTIVATE,{relatedTarget:e}))}_activateParents(e){if(e.classList.contains("menu-item")){const t=e.closest(".menu")?.previousElementSibling;return void(t?.matches(SELECTOR_MENU_TOGGLE$1)&&t.classList.add("active"))}for(const t of SelectorEngine.parents(e,".nav, .list-group"))for(const e of SelectorEngine.prev(t,SELECTOR_LINK_ITEMS))e.classList.add("active")}_clearActiveClass(e){e.classList.remove("active");const t=SelectorEngine.find("[href].active",e);for(const e of t)e.classList.remove("active")}}EventHandler.on(window,EVENT_LOAD_DATA_API$1,()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_SPY))ScrollSpy.getOrCreateInstance(e)});const NAME$2="tab",DATA_KEY$2="bs.tab",EVENT_KEY$2=".bs.tab",EVENT_HIDE$1="hide.bs.tab",EVENT_HIDDEN$1="hidden.bs.tab",EVENT_SHOW$1="show.bs.tab",EVENT_SHOWN$1="shown.bs.tab",EVENT_CLICK_DATA_API="click.bs.tab",EVENT_KEYDOWN="keydown.bs.tab",EVENT_LOAD_DATA_API="load.bs.tab",ARROW_LEFT_KEY="ArrowLeft",ARROW_RIGHT_KEY="ArrowRight",ARROW_UP_KEY="ArrowUp",ARROW_DOWN_KEY="ArrowDown",HOME_KEY="Home",END_KEY="End",CLASS_NAME_ACTIVE="active",CLASS_NAME_FADE$1="fade",CLASS_NAME_SHOW$1="show",SELECTOR_MENU_TOGGLE='[data-bs-toggle="menu"]',SELECTOR_MENU=".menu",NOT_SELECTOR_MENU_TOGGLE=`:not(${SELECTOR_MENU_TOGGLE})`,SELECTOR_TAB_PANEL='.list-group, .nav, [role="tablist"]',SELECTOR_OUTER=".nav-item, .list-group-item",SELECTOR_INNER=`.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role="tab"]${NOT_SELECTOR_MENU_TOGGLE}`,SELECTOR_DATA_TOGGLE$1='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',SELECTOR_INNER_ELEM=`${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE$1}`,SELECTOR_DATA_TOGGLE_ACTIVE='.active[data-bs-toggle="tab"], .active[data-bs-toggle="pill"], .active[data-bs-toggle="list"]';class Tab extends BaseComponent{constructor(e){super(e),this._parent=this._element.closest(SELECTOR_TAB_PANEL),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),EventHandler.on(this._element,EVENT_KEYDOWN,e=>this._keydown(e)))}static get NAME(){return"tab"}show(){const e=this._element;if(this._elemIsActive(e))return;const t=this._getActiveElem(),n=t?EventHandler.trigger(t,EVENT_HIDE$1,{relatedTarget:e}):null;EventHandler.trigger(e,EVENT_SHOW$1,{relatedTarget:t}).defaultPrevented||n&&n.defaultPrevented||(this._deactivate(t,e),this._activate(e,t))}_activate(e,t){e&&(e.classList.add("active"),this._activate(SelectorEngine.getElementFromSelector(e)),this._queueCallback(()=>{"tab"===e.getAttribute("role")?(e.removeAttribute("tabindex"),e.setAttribute("aria-selected",!0),this._toggleMenu(e,!0),EventHandler.trigger(e,EVENT_SHOWN$1,{relatedTarget:t})):e.classList.add("show")},e,e.classList.contains("fade")))}_deactivate(e,t){e&&(e.classList.remove("active"),e.blur(),this._deactivate(SelectorEngine.getElementFromSelector(e)),this._queueCallback(()=>{"tab"===e.getAttribute("role")?(e.setAttribute("aria-selected",!1),e.setAttribute("tabindex","-1"),this._toggleMenu(e,!1),EventHandler.trigger(e,EVENT_HIDDEN$1,{relatedTarget:t})):e.classList.remove("show")},e,e.classList.contains("fade")))}_keydown(e){if(![ARROW_LEFT_KEY,ARROW_RIGHT_KEY,ARROW_UP_KEY,ARROW_DOWN_KEY,HOME_KEY,END_KEY].includes(e.key))return;e.stopPropagation(),e.preventDefault();const t=this._getChildren().filter(e=>!isDisabled(e));let n;if([HOME_KEY,END_KEY].includes(e.key))n=t[e.key===HOME_KEY?0:t.length-1];else{const i=[ARROW_RIGHT_KEY,ARROW_DOWN_KEY].includes(e.key);n=getNextActiveElement(t,e.target,i,!0)}n&&(n.focus({preventScroll:!0}),Tab.getOrCreateInstance(n).show())}_getChildren(){return SelectorEngine.find(SELECTOR_INNER_ELEM,this._parent)}_getActiveElem(){return this._getChildren().find(e=>this._elemIsActive(e))||null}_setInitialAttributes(e,t){this._setAttributeIfNotExists(e,"role","tablist");for(const e of t)this._setInitialAttributesOnChild(e)}_setInitialAttributesOnChild(e){e=this._getInnerElement(e);const t=this._elemIsActive(e),n=this._getOuterElement(e);e.setAttribute("aria-selected",t),n!==e&&this._setAttributeIfNotExists(n,"role","presentation"),t||e.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(e,"role","tab"),this._setInitialAttributesOnTargetPanel(e)}_setInitialAttributesOnTargetPanel(e){const t=SelectorEngine.getElementFromSelector(e);t&&(this._setAttributeIfNotExists(t,"role","tabpanel"),e.id&&this._setAttributeIfNotExists(t,"aria-labelledby",`${e.id}`))}_toggleMenu(e,t){const n=this._getOuterElement(e),i=SelectorEngine.findOne(SELECTOR_MENU_TOGGLE,n);if(!i)return;const s=SelectorEngine.findOne(".menu",n);i.classList.toggle("active",t),s&&s.classList.toggle("show",t),i.setAttribute("aria-expanded",t)}_setAttributeIfNotExists(e,t,n){e.hasAttribute(t)||e.setAttribute(t,n)}_elemIsActive(e){return e.classList.contains("active")}_getInnerElement(e){return e.matches(SELECTOR_INNER_ELEM)?e:SelectorEngine.findOne(SELECTOR_INNER_ELEM,e)}_getOuterElement(e){return e.closest(SELECTOR_OUTER)||e}}EventHandler.on(document,"click.bs.tab",SELECTOR_DATA_TOGGLE$1,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault(),isDisabled(this)||Tab.getOrCreateInstance(this).show()}),EventHandler.on(window,"load.bs.tab",()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE))Tab.getOrCreateInstance(e)});const NAME$1="toast",DATA_KEY$1="bs.toast",EVENT_KEY$1=".bs.toast",EVENT_MOUSEOVER="mouseover.bs.toast",EVENT_MOUSEOUT="mouseout.bs.toast",EVENT_FOCUSIN="focusin.bs.toast",EVENT_FOCUSOUT="focusout.bs.toast",EVENT_HIDE="hide.bs.toast",EVENT_HIDDEN="hidden.bs.toast",EVENT_SHOW="show.bs.toast",EVENT_SHOWN="shown.bs.toast",CLASS_NAME_FADE="fade",CLASS_NAME_HIDE="hide",CLASS_NAME_SHOW="show",CLASS_NAME_SHOWING="showing",DefaultType$1={animation:"boolean",autohide:"boolean",delay:"number"},Default$1={animation:!0,autohide:!0,delay:5e3};class Toast extends BaseComponent{constructor(e,t){super(e,t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Default$1}static get DefaultType(){return DefaultType$1}static get NAME(){return NAME$1}show(){EventHandler.trigger(this._element,EVENT_SHOW).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove("hide"),reflow(this._element),this._element.classList.add("show","showing"),this._queueCallback(()=>{this._element.classList.remove("showing"),EventHandler.trigger(this._element,EVENT_SHOWN),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this.isShown()&&(EventHandler.trigger(this._element,EVENT_HIDE).defaultPrevented||(this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.add("hide"),this._element.classList.remove("showing","show"),EventHandler.trigger(this._element,EVENT_HIDDEN)},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove("show"),super.dispose()}isShown(){return this._element.classList.contains("show")}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)return void this._clearTimeout();const n=e.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}_setListeners(){EventHandler.on(this._element,EVENT_MOUSEOVER,e=>this._onInteraction(e,!0)),EventHandler.on(this._element,EVENT_MOUSEOUT,e=>this._onInteraction(e,!1)),EventHandler.on(this._element,EVENT_FOCUSIN,e=>this._onInteraction(e,!0)),EventHandler.on(this._element,EVENT_FOCUSOUT,e=>this._onInteraction(e,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}}enableDismissTrigger(Toast);const NAME="toggler",DATA_KEY="bs.toggler",EVENT_KEY=`.${DATA_KEY}`,EVENT_TOGGLE=`toggle${EVENT_KEY}`,EVENT_TOGGLED=`toggled${EVENT_KEY}`,EVENT_CLICK="click",SELECTOR_DATA_TOGGLE='[data-bs-toggle="toggler"]',DefaultType={attribute:"string",value:"(string|number|boolean)"},Default={attribute:"class",value:null};class Toggler extends BaseComponent{static get Default(){return Default}static get DefaultType(){return DefaultType}static get NAME(){return NAME}toggle(){EventHandler.trigger(this._element,EVENT_TOGGLE).defaultPrevented||(this._execute(),EventHandler.trigger(this._element,EVENT_TOGGLED))}_execute(){const{attribute:e,value:t}=this._config;"id"!==e&&("class"!==e?this._element.getAttribute(e)!==String(t)?this._element.setAttribute(e,t):this._element.removeAttribute(e):this._element.classList.toggle(t))}}eventActionOnPlugin(Toggler,"click",SELECTOR_DATA_TOGGLE,"toggle");export{Alert,Button,Carousel,Collapse,Combobox,Datepicker,Dialog,Menu,NavOverflow,Offcanvas,OtpInput,Popover,ScrollSpy,Strength,Tab,Toast,Toggler,Tooltip};
 //# sourceMappingURL=bootstrap.bundle.min.js.map
\ No newline at end of file
index 60001591add3ea9044b951b2d16c50f02e8bf105..40484add37a5b362445577e9a4f534828e3e6d5d 100644 (file)
@@ -1 +1 @@
-{"version":3,"names":["elementMap","Map","Data","set","element","key","instance","has","instanceMap","get","size","console","error","Array","from","keys","remove","delete","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","bootstrapHandler","fn","handler","event","hydrateObj","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","selector","domElements","querySelectorAll","target","this","parentNode","domElement","findHandler","events","callable","delegationSelector","Object","values","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","replace","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","length","trigger","args","evt","Event","bubbles","cancelable","dispatchEvent","obj","meta","value","defineProperty","configurable","normalizeData","Number","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","getAttribute","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","window","CSS","escape","match","id","toType","object","prototype","getUID","prefix","Math","floor","random","document","getElementById","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","isElement","nodeType","getElement","querySelector","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","isDisabled","Node","ELEMENT_NODE","classList","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","isRTL","dir","execute","possibleCallback","defaultValue","executeAfterTransition","callback","transitionElement","waitForTransition","emulatedDuration","called","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","Config","Default","DefaultType","NAME","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","VERSION","BaseComponent","super","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","eventName","name","getSelector","hrefAttribute","trim","map","sel","join","SelectorEngine","concat","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","preventDefault","eventActionOnPlugin","Plugin","onEvent","stringSelector","eventAction","data","instances","targets","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","defaultPrevented","_destroyElement","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","button","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM_IMG","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","KEY_TO_DIRECTION","ARROW_LEFT_KEY$2","ARROW_RIGHT_KEY$2","interval","keyboard","pause","ride","touch","wrap","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","visibilityState","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","endCallBack","clearTimeout","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","_orderToDirection","isCycling","directionalClassName","orderClassName","completeCallBack","_isAnimated","clearInterval","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","style","scrollSize","complete","getBoundingClientRect","selected","triggerArray","isOpen","__defProp","__defProps","defineProperties","__getOwnPropDescs","getOwnPropertyDescriptors","__getOwnPropSymbols","getOwnPropertySymbols","__hasOwnProp","hasOwnProperty","__propIsEnum","propertyIsEnumerable","__defNormalProp","e","t","n","enumerable","writable","__spreadValues","__spreadProps","__publicField","errorMessages","notFoundSelector","notInit","notLocale","incorrectTime","incorrectMonthsCount","setContext","context","destroy","a","o","l","isInit","inputMode","mainElement","parentElement","removeChild","inputElement","replaceWith","originalElement","onDestroy","skipOpenOnFocus","WeakSet","shouldSkipOpenOnFocus","setSkipOpenOnFocus","clearSkipOpenOnFocus","PREV_TABINDEX_ATTR","isFocusable","tabIndex","storePrevTabIndex","restorePrevTabIndex","disableTabbing","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","FILTER_ACCEPT","FILTER_SKIP","nextNode","currentNode","restoreTabbing","forEach","isShowInInputMode","currentType","vcCalendarHidden","cleanupHandlers","openOnFocus","focus","onHide","getOffset","top","bottom","left","right","scrollY","clientTop","scrollX","clientLeft","getViewportDimensions","vw","clientWidth","innerWidth","vh","clientHeight","innerHeight","getWindowScrollPosition","scrollLeft","scrollTop","calculateAvailableSpace","s","i","r","getAvailablePosition","canShow","parentPositions","height","c","width","d","u","m","p","h","condition","position","assign","handleDay","modifier","html","createElement","className","styles","datePopup","vcDatePopup","innerHTML","sanitizerHTML","ariaExpanded","ariaLabel","textContent","appendChild","requestAnimationFrame","offsetWidth","createDatePopup","popups","getDate","Date","getDateString","getFullYear","String","getMonth","padStart","parseDates","reduce","toISOString","substring","getTime","setDate","updateAttribute","setDateModifier","displayDateMin","displayDateMax","disableDates","selectionMonthsMode","selectionYearsMode","disableToday","dateToday","selectedWeekends","selectedHolidays","selectedDates","selectionDatesMode","enableEdgeDatesOnly","getLocaleString","toLocaleString","getWeekNumber","getDay","ceil","year","week","addWeekNumberForDate","firstWeekday","vcDateWeekNumber","setDaysAsDisabled","disableWeekdays","disableAllDates","enableDates","sort","createDate","locale","date","vcDate","vcDateMonth","vcDateWeekDay","role","displayDatesOutside","dateBtn","dateStyle","timeZone","vcDateBtn","innerText","enableWeekNumbers","addDate","onCreateDateEls","createDatesFromCurrentMonth","createDatesFromNextMonth","createDatesFromPrevMonth","createWeekNumbers","weekNumbersTitle","vcWeekNumbers","weekNumbersContent","weekNumber","cloneNode","vcWeekNumber","vcWeekYear","createDates","selectedYear","selectedMonth","vcDatesDisabled","setMonth","datesRow","v","g","layoutDefault","header","labels","navigation","headerContent","wrapper","content","layoutMonths","layoutMultiple","controls","grid","column","layoutYears","ArrowNext","arrowNext","ArrowPrev","arrowPrev","ControlTime","selectionTimeMode","time","selectingTime","DateRangeTooltip","onCreateDateRangeTooltip","dateRangeTooltip","Dates","dates","Month","month","Months","months","Week","WeekNumbers","weekNumbers","Year","Years","years","components","getComponent","parseLayout","parseMultipleLayout","displayMonthsCount","fill","createLayouts","default","multiple","layouts","calendar","vc","vcType","application","vcGrid","vcColumn","setVisibilityArrows","visibility","handleDefaultType","monthsToSwitch","dateMin","dateMax","setFullYear","handleYearType","displayYear","visibilityArrows","visibilityHandler","long","label","visibilityTitle","setYearModifier","aria","selectedProperty","getColumnID","currentValue","columnID","findIndex","createMonthEl","monthsMonth","vcMonthsMonth","ariaDisabled","createMonths","vcYear","vcMonth","short","onCreateMonthEls","TimeInput","TimeRange","handleActions","hour","minute","selectedHours","selectedMinutes","selectedKeeping","onChangeTime","onChangeToInput","transformTime24","AM","PM","handleClickKeepingTime","btnKeeping","transformTime12","updateInputAndRange","updateKeepingTime$1","handleInput$1","updateInputAndTime","updateKeepingTime","handleRange","handleMouseOver","handleMouseOut","handleTime","timeMaxHour","timeMinHour","timeMaxMinute","timeMinMinute","createTime","timeControls","timeContent","timeHour","timeMinute","timeKeeping","timeRanges","timeRange","timeStepHour","timeStepMinute","createWeek","weekdays","titleShort","titleLong","isWeekend","onClickWeekDay","weekDay","vcWeekDay","vcWeekDayOff","createYearEl","yearsYear","vcYearsYear","createYears","onCreateYearEls","trackChangesHTMLElement","MutationObserver","attributeName","observe","haveListener","check","setTheme","vcTheme","trackChangesThemeInSystemSettings","selectedTheme","addListener","detectTheme","themeAttrDetect","handleTheme","matchMedia","media","capitalizeFirstLetter","getLocaleWeekday","weekday","getLocaleMonth","getLocale","create","handleArrowKeys","localName","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","handleMonth","handleClickArrow","vcArrow","onClickArrow","resolveToggle","canToggleSelection","enableDateToggle","handleSelectDate","createDateRangeTooltip","vcDateRangeTooltip","state","self","lastDateEl","isHovering","rangeMin","rangeMax","tooltipEl","timeoutId","addHoverEffect","vcDateHover","removeHoverEffect","handleHoverDatesEvent","handleHoverSelectedDatesRangeEvent","optimizedHoverHandler","optimizedHandleHoverDatesEvent","optimizedHandleHoverSelectedDatesRangeEvent","handleCancelSelectionDates","handleMouseLeave","updateDisabledDates","disableDatesPast","handleSelectDateRange","disableDatesGaps","reset","updateDateModifier","handleClickDate","single","onClickDate","enableMonthChangeOnDayClick","current","typeClick","getValue","handleMultipleYearSelection","handleMultipleMonthSelection","handleItemClick","onClickYear","onClickMonth","handleClickType","onClickTitle","handleClickMonthOrYear","handleClickWeekNumber","onClickWeekNumber","handleClickWeekDay","handleClick","initMonthsCount","getLocalDate","getTimezoneOffset","resolveDate","initRange","displayDisabledDates","initSelectedDates","displayClosestValidDate","setInitialContext","initSelectedMonthYear","enableJumpToSelectedDate","initTime","selectedTime","initAllVariables","createToInput","vcInput","body","onInit","canOpenOnFocus","handleInput","inputModeInit","shiftKey","init","update","onUpdate","replaceProperties","isArray","findBestPickerPosition","setPosition","center","vcPosition","click","positionToInput","capture","onShow","inputHour","inputMinute","rangeHour","rangeMinute","OptionsCalendar","_Calendar","memoizedElements","queryAndMemoize","Calendar","EVENT_CHANGE","EVENT_FOCUSIN_DATA_API","HIDE_DELAY","datepickerTheme","dateFormat","displayElement","inline","positionElement","selectionMode","placement","vcpOptions","Datepicker","_calendar","_initCalendar","_themeObserver","disconnect","getSelectedDates","setSelectedDates","_isInput","_isInline","_boundInput","_positionElement","_resolvePositionElement","_displayElement","_resolveDisplayElement","calendarOptions","_buildCalendarOptions","_setupThemeObserver","_parseInputValue","_updateDisplayWithSelectedDates","formattedDate","_formatDateForInput","_getThemeAncestor","_getEffectiveTheme","_syncThemeAttribute","theme","attributeFilter","vcpTheme","_handleDateClick","firstDate","_parseDate","_maybeHideAfterSelection","dateStr","day","_formatDate","undefined","Intl","DateTimeFormat","format","toLocaleDateString","separator","isNaN","formatted","bsInline","EVENT_HIDE_PREVENTED","EVENT_CANCEL","CLASS_NAME_STATIC","CLASS_NAME_OPEN","CLASS_NAME_NONMODAL","SELECTOR_OPEN_MODAL_DIALOG","backdrop","modal","Dialog","open","showModal","_hideDialog","handleUpdate","_triggerBackdropTransition","showEvent","currentDialog","currentInstance","round","createCoords","x","y","oppositeSideMap","oppositeAlignmentMap","start","end","clamp","evaluate","param","getSide","getAlignment","getOppositeAxis","axis","getAxisLength","yAxisSides","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","mainAlignmentSide","reference","floating","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","lrPlacement","rlPlacement","tbPlacement","btPlacement","getSideList","side","isStart","getOppositeAxisPlacements","flipAlignment","expandPaddingObject","padding","getPaddingObject","rectToClientRect","rect","computeCoordsFromPlacement","_ref","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","computePosition","async","strategy","middleware","platform","validMiddleware","getElementRects","statefulPlacement","middlewareData","resetCount","nextX","nextY","initialPlacement","elements","detectOverflow","options","_await$platform$isEle","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","getClippingRect","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","arrow","arrowDimensions","getDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","offset","shouldAddOffset","alignmentOffset","centerOffset","flip","_middlewareData$arrow","_middlewareData$flip","mainAxis","checkMainAxis","crossAxis","checkCrossAxis","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","initialSideAxis","isBasePlacement","hasFallbackAxisSideDirection","placements","overflow","overflows","overflowsData","sides","every","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","resetPlacement","b","_overflowsData$filter2","currentSideAxis","acc","originSides","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","enabled","hasWindow","getNodeName","node","isNode","nodeName","getWindow","_node$ownerDocument","ownerDocument","defaultView","isHTMLElement","HTMLElement","isShadowRoot","invalidOverflowDisplayValues","isOverflowElement","overflowX","overflowY","display","tableElements","isTableElement","topLayerSelectors","isTopLayer","some","_e","transformProperties","willChangeValues","containValues","isContainingBlock","elementOrCss","webkit","isWebKit","css","containerType","backdropFilter","willChange","contain","getContainingBlock","getParentNode","isLastTraversableNode","supports","lastTraversableNodeNames","getNodeScroll","result","assignedSlot","host","getNearestOverflowAncestor","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","visualViewport","getPrototypeOf","getCssDimensions","getComputedStyle$1","hasOffset","shouldFallback","$","unwrapElement","isFinite","noOffsets","getVisualOffsets","offsetLeft","offsetTop","shouldAddVisualOffsets","isFixed","floatingOffsetParent","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","paddingLeft","paddingTop","getWindowScrollBarX","leftScroll","getHTMLOffset","scroll","htmlRect","topLayer","offsets","isOffsetParentAnElement","offsetRect","htmlOffset","getDocumentRect","scrollWidth","scrollHeight","SCROLLBAR_MAX","getViewportRect","visualViewportBased","windowScrollbarX","doc","bodyStyles","bodyMarginInline","compatMode","marginLeft","marginRight","clippingStableScrollbarWidth","absoluteOrFixed","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","getClippingElementAncestors","cache","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","clippingAncestors","_c","firstClippingAncestor","clippingRect","accRect","getRectRelativeToOffsetParent","setLeftRTLScrollbarOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","svgOffsetParent","getOffsetParentFn","getDimensionsFn","floatingDimensions","rectsAreEqual","observeMove","onMove","io","cleanup","_io","refresh","skip","threshold","elementRectForRootMargin","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","IntersectionObserver","autoUpdate","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","animationFrame","referenceEl","ancestors","passive","cleanupIo","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset$1","shift$1","flip$1","arrow$1","mergedOptions","platformWithCache","computePosition$1","BREAKPOINTS","sm","md","lg","xl","parseResponsivePlacement","placementString","defaultPlacement","parts","xs","part","breakpoint","getResponsivePlacement","responsivePlacements","viewportWidth","activePlacement","breakpointOrder","createBreakpointListeners","listeners","minWidth","mql","disposeBreakpointListeners","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","ENTER_KEY","SPACE_KEY","RIGHT_MOUSE_BUTTON","SUBMENU_CLOSE_DELAY","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","SELECTOR_SUBMENU","SELECTOR_SUBMENU_TOGGLE","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","DEFAULT_PLACEMENT","SUBMENU_PLACEMENT","resolveLogicalPlacement","triangleSign","p1","p2","p3","autoClose","container","floatingConfig","submenuTrigger","submenuDelay","Dropdown","_floatingCleanup","_mediaQueryListeners","_responsivePlacements","_parent","_isSubmenu","_openSubmenus","_submenuCloseTimeouts","_hoverIntentData","_menu","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","_moveMenuToContainer","_createFloating","_completeHide","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","_updateFloatingPosition","referenceElement","_getPlacement","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","_setupMediaQueryListeners","_getOffset","offsetConfig","offsetValue","_getFallbackPlacements","defaultConfig","_getContainer","append","isConnected","finalPlacement","margin","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","_isMovingTowardSubmenu","_scheduleSubmenuClose","stopPropagation","_closeSubmenu","_createSubmenuFloating","nestedSubmenus","nested","nestedWrapper","currentSubmenuWrapper","siblingSubmenus","siblingMenu","siblingWrapper","updatePosition","clear","clientY","timestamp","now","submenuRect","currentPos","lastPos","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","_selectMenuItem","currentMenu","_handleSubmenuKeydown","isRtl","enterKey","exitKey","isSubmenuTrigger","firstItem","parentSubmenuWrapper","parentTrigger","clearMenus","openToggles","composedPath","isMenuTarget","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","isLeftOrRightEvent","isHomeOrEndEvent","isEnterOrSpaceEvent","getToggleButton","EVENT_UPDATE","EVENT_OVERFLOW","CLASS_NAME_OVERFLOW","CLASS_NAME_OVERFLOW_MENU","CLASS_NAME_HIDDEN","SELECTOR_NAV_ITEM","SELECTOR_NAV_LINK","SELECTOR_OVERFLOW_TOGGLE","SELECTOR_OVERFLOW_MENU","CLASS_NAME_KEEP","moreText","moreIcon","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_isInitialized","_init","_calculateOverflow","_restoreItems","item","bsNavOrder","_createOverflowMenu","_setupResizeObserver","overflowItem","navWidth","usedWidth","itemsToOverflow","overflowThreshold","toMove","_moveToOverflow","overflowCount","visibleCount","link","dropdownItem","clonedLink","bsNavOverflow","EVENT_MOUSEDOWN","clickCallback","rootElement","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","autofocus","trapElement","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","_disableOverFlow","_setElementAttributes","calculatedValue","_resetElementAttributes","isOverflowing","_saveInitialAttribute","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","CLASS_NAME_SHOWING","CLASS_NAME_HIDING","CLASS_NAME_BACKDROP","OPEN_SELECTOR","EVENT_RESIZE","EVENT_KEYDOWN_DISMISS","Offcanvas","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","blur","completeCallback","alreadyOpen","EVENT_STRENGTH_CHANGE","SELECTOR_DATA_STRENGTH","STRENGTH_LEVELS","input","minLength","messages","weak","fair","good","strong","weights","extraLength","lowercase","uppercase","numbers","special","multipleSpecial","longPassword","thresholds","scorer","Strength","_input","_getInput","_segments","_textElement","_currentStrength","_evaluate","getStrength","password","score","_calculateScore","strength","_scoreToStrength","_updateUI","bsStrength","strengthIndex","segment","colorMap","EVENT_COMPLETE","EVENT_INPUT","SELECTOR_DATA_OTP","SELECTOR_INPUT","mask","OtpInput","_inputs","_setupInputs","setValue","chars","_checkComplete","emptyInput","at","_handleInput","_handlePaste","_handleFocus","digits","clipboardData","getData","lastIndex","select","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","area","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","li","ol","pre","small","span","sub","sup","ul","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","nodeValue","attributeRegex","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","extraClass","sanitize","sanitizeFn","template","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","_maybeSanitize","text","_setContent","arg","templateElement","_putElementInTemplate","DISALLOWED_ATTRIBUTES","CLASS_NAME_MODAL","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","_leave","_enter","_hideModalHandler","_isWithContent","isInTheDom","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","arrowX","arrowY","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","tooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","popover","EVENT_ACTIVATE","CLASS_NAME_DROPDOWN_ITEM","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","smoothScroll","ScrollSpy","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","observableSection","hash","scrollTo","behavior","_observerCallback","targetElement","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","listGroup","activeNodes","spy","CLASS_DROPDOWN","SELECTOR_DROPDOWN_MENU","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleDropDown","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","EVENT_TOGGLE","EVENT_TOGGLED","Toggler","_execute"],"sources":["../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/index.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/vanilla-calendar-pro/index.mjs","../../js/src/datepicker.js","../../js/src/dialog.js","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../js/src/util/floating-ui.js","../../js/src/dropdown.js","../../js/src/nav-overflow.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/util/scrollbar.js","../../js/src/offcanvas.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/toggler.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const evt = hydrateObj(new Event(event, { bubbles: true, cancelable: true }), args)\n    element.dispatchEvent(evt)\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n  for (const [key, value] of Object.entries(meta)) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n  if (selector && window.CSS && window.CSS.escape) {\n    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n    selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n  }\n\n  return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  if (isElement(object)) {\n    return object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(parseSelector(object))\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsie appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n  return typeof possibleCallback === 'function' ? possibleCallback.call(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getNextActiveElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  parseSelector,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const [property, expectedTypes] of Object.entries(configTypes)) {\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '6.0.0-alpha1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  // Private\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\n}\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children).filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  },\n\n  getSelectorFromElement(element) {\n    const selector = getSelector(element)\n\n    if (selector) {\n      return SelectorEngine.findOne(selector) ? selector : null\n    }\n\n    return null\n  },\n\n  getElementFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.findOne(selector) : null\n  },\n\n  getMultipleElementsFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.find(selector) : []\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nconst eventActionOnPlugin = (Plugin, onEvent, stringSelector, method, callback = null) => {\n  eventAction(`${onEvent}.${Plugin.NAME}`, stringSelector, data => {\n    const instances = data.targets.filter(Boolean).map(element => Plugin.getOrCreateInstance(element))\n    if (typeof callback === 'function') {\n      callback({ ...data, instances })\n    }\n\n    for (const instance of instances) {\n      instance[method]()\n    }\n  })\n}\n\nconst eventAction = (onEvent, stringSelector, callback) => {\n  const selector = `${stringSelector}:not(.disabled):not(:disabled)`\n  EventHandler.on(document, onEvent, selector, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    const selector = SelectorEngine.getSelectorFromElement(this)\n    const targets = selector ? SelectorEngine.find(selector) : [this]\n\n    callback({ targets, event })\n  })\n}\n\nexport {\n  enableDismissTrigger,\n  eventActionOnPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    this._deltaX = event.touches && event.touches.length > 1 ?\n      0 :\n      event.touches[0].clientX - this._deltaX\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n\n    if (absDeltaX <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltaX / this._deltaX\n\n    this._deltaX = 0\n\n    if (!direction) {\n      return\n    }\n\n    execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getNextActiveElement,\n  isRTL,\n  isVisible,\n  reflow,\n  triggerTransitionEnd\n} from './util/index.js'\nimport Swipe from './util/swipe.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover',\n  ride: false,\n  touch: true,\n  wrap: true\n}\n\nconst DefaultType = {\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)',\n  ride: '(boolean|string)',\n  touch: 'boolean',\n  wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._interval = null\n    this._activeElement = null\n    this._isSliding = false\n    this.touchTimeout = null\n    this._swipeHelper = null\n\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._addEventListeners()\n\n    if (this._config.ride === CLASS_NAME_CAROUSEL) {\n      this.cycle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause() {\n    if (this._isSliding) {\n      triggerTransitionEnd(this._element)\n    }\n\n    this._clearInterval()\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._updateInterval()\n\n    this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n  }\n\n  _maybeEnableCycle() {\n    if (!this._config.ride) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n      return\n    }\n\n    this.cycle()\n  }\n\n  to(index) {\n    const items = this._getItems()\n    if (index > items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    const activeIndex = this._getItemIndex(this._getActive())\n    if (activeIndex === index) {\n      return\n    }\n\n    const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n    this._slide(order, items[index])\n  }\n\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.defaultInterval = config.interval\n    return config\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    if (this._config.touch && Swipe.isSupported()) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n      EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n    }\n\n    const endCallBack = () => {\n      if (this._config.pause !== 'hover') {\n        return\n      }\n\n      // If it's a touch-enabled device, mouseenter/leave are fired as\n      // part of the mouse compatibility events on first tap - the carousel\n      // would stop cycling until user tapped out of it;\n      // here, we listen for touchend, explicitly pause the carousel\n      // (as if it's the second time we tap on it, mouseenter compat event\n      // is NOT fired) and after a timeout (to allow for mouse compatibility\n      // events to fire) we explicitly restart cycling\n\n      this.pause()\n      if (this.touchTimeout) {\n        clearTimeout(this.touchTimeout)\n      }\n\n      this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n    }\n\n    const swipeConfig = {\n      leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n      rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n      endCallback: endCallBack\n    }\n\n    this._swipeHelper = new Swipe(this._element, swipeConfig)\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(this._directionToOrder(direction))\n    }\n  }\n\n  _getItemIndex(element) {\n    return this._getItems().indexOf(element)\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n    activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n    activeIndicator.removeAttribute('aria-current')\n\n    const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n    if (newActiveIndicator) {\n      newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n      newActiveIndicator.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || this._getActive()\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    this._config.interval = elementInterval || this._config.defaultInterval\n  }\n\n  _slide(order, element = null) {\n    if (this._isSliding) {\n      return\n    }\n\n    const activeElement = this._getActive()\n    const isNext = order === ORDER_NEXT\n    const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n    if (nextElement === activeElement) {\n      return\n    }\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n\n    const triggerEvent = eventName => {\n      return EventHandler.trigger(this._element, eventName, {\n        relatedTarget: nextElement,\n        direction: this._orderToDirection(order),\n        from: this._getItemIndex(activeElement),\n        to: nextElementIndex\n      })\n    }\n\n    const slideEvent = triggerEvent(EVENT_SLIDE)\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      return\n    }\n\n    const isCycling = Boolean(this._interval)\n    this.pause()\n\n    this._isSliding = true\n\n    this._setActiveIndicatorElement(nextElementIndex)\n    this._activeElement = nextElement\n\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n    nextElement.classList.add(orderClassName)\n\n    reflow(nextElement)\n\n    activeElement.classList.add(directionalClassName)\n    nextElement.classList.add(directionalClassName)\n\n    const completeCallBack = () => {\n      nextElement.classList.remove(directionalClassName, orderClassName)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n      this._isSliding = false\n\n      triggerEvent(EVENT_SLID)\n    }\n\n    this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_SLIDE)\n  }\n\n  _getActive() {\n    return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  carousel.prev()\n  carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement,\n  reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = SelectorEngine.getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = SelectorEngine.getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  // Private\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = SelectorEngine.getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\nexport default Collapse\n","/*! name: vanilla-calendar-pro v3.1.0 | url: https://github.com/uvarov-frontend/vanilla-calendar-pro */\nvar __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__spreadValues=(e,t)=>{for(var n in t||(t={}))__hasOwnProp.call(t,n)&&__defNormalProp(e,n,t[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(t))__propIsEnum.call(t,n)&&__defNormalProp(e,n,t[n]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__publicField=(e,t,n)=>(__defNormalProp(e,\"symbol\"!=typeof t?t+\"\":t,n),n);const errorMessages={notFoundSelector:e=>`${e} is not found, check the first argument passed to new Calendar.`,notInit:'The calendar has not been initialized, please initialize it using the \"init()\" method first.',notLocale:\"You specified an incorrect language label or did not specify the required number of values ​​for «locale.weekdays» or «locale.months».\",incorrectTime:\"The value of the time property can be: false, 12 or 24.\",incorrectMonthsCount:\"For the «multiple» calendar type, the «displayMonthsCount» parameter can have a value from 2 to 12, and for all others it cannot be greater than 1.\"},setContext=(e,t,n)=>{e.context[t]=n},destroy=e=>{var t,n,a,o,l;if(!e.context.isInit)throw new Error(errorMessages.notInit);e.inputMode?(null==(t=e.context.mainElement.parentElement)||t.removeChild(e.context.mainElement),null==(a=null==(n=e.context.inputElement)?void 0:n.replaceWith)||a.call(n,e.context.originalElement),setContext(e,\"inputElement\",void 0)):null==(l=(o=e.context.mainElement).replaceWith)||l.call(o,e.context.originalElement),setContext(e,\"mainElement\",e.context.originalElement),e.onDestroy&&e.onDestroy(e)},skipOpenOnFocus=new WeakSet,shouldSkipOpenOnFocus=e=>skipOpenOnFocus.has(e),setSkipOpenOnFocus=e=>{skipOpenOnFocus.add(e)},clearSkipOpenOnFocus=e=>{skipOpenOnFocus.delete(e)},PREV_TABINDEX_ATTR=\"data-vc-prev-tabindex\",isFocusable=e=>e.tabIndex>=0&&!e.hasAttribute(\"disabled\")&&\"true\"!==e.getAttribute(\"aria-disabled\"),storePrevTabIndex=e=>{if(e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(\"tabindex\");e.setAttribute(PREV_TABINDEX_ATTR,null!=t?t:\"\")},restorePrevTabIndex=e=>{if(!e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(PREV_TABINDEX_ATTR);\"\"===t||null===t?e.removeAttribute(\"tabindex\"):e.setAttribute(\"tabindex\",t),e.removeAttribute(PREV_TABINDEX_ATTR)},disableTabbing=e=>{isFocusable(e)&&(storePrevTabIndex(e),e.tabIndex=-1);const t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>isFocusable(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;t.nextNode();){const e=t.currentNode;storePrevTabIndex(e),e.tabIndex=-1}},restoreTabbing=e=>{restorePrevTabIndex(e),e.querySelectorAll(`[${PREV_TABINDEX_ATTR}]`).forEach(restorePrevTabIndex)},hide=e=>{if(e.context.isShowInInputMode&&e.context.currentType){if(e.context.mainElement.dataset.vcCalendarHidden=\"\",setContext(e,\"isShowInInputMode\",!1),e.inputMode&&disableTabbing(e.context.mainElement),e.context.cleanupHandlers[0]&&(e.context.cleanupHandlers.forEach((e=>e())),setContext(e,\"cleanupHandlers\",[])),e.inputMode&&e.context.inputElement&&e.context.mainElement.contains(document.activeElement)){(\"function\"==typeof e.openOnFocus||!0===e.openOnFocus)&&setSkipOpenOnFocus(e),e.context.inputElement.focus()}e.onHide&&e.onHide(e)}};function getOffset(e){if(!e||!e.getBoundingClientRect)return{top:0,bottom:0,left:0,right:0};const t=e.getBoundingClientRect(),n=document.documentElement;return{bottom:t.bottom,right:t.right,top:t.top+window.scrollY-n.clientTop,left:t.left+window.scrollX-n.clientLeft}}function getViewportDimensions(){return{vw:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),vh:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}}function getWindowScrollPosition(){return{left:window.scrollX||document.documentElement.scrollLeft||0,top:window.scrollY||document.documentElement.scrollTop||0}}function calculateAvailableSpace(e){const{top:t,left:n}=getWindowScrollPosition(),{top:a,left:o}=getOffset(e),{vh:l,vw:s}=getViewportDimensions(),i=a-t,r=o-n;return{top:i,bottom:l-(i+e.clientHeight),left:r,right:s-(r+e.clientWidth)}}function getAvailablePosition(e,t,n=5){const a={top:!0,bottom:!0,left:!0,right:!0},o=[];if(!t||!e)return{canShow:a,parentPositions:o};const{bottom:l,top:s}=calculateAvailableSpace(e),{top:i,left:r}=getOffset(e),{height:c,width:d}=t.getBoundingClientRect(),{vh:u,vw:m}=getViewportDimensions(),p=m/2,h=u/2;return[{condition:i<h,position:\"top\"},{condition:i>h,position:\"bottom\"},{condition:r<p,position:\"left\"},{condition:r>p,position:\"right\"}].forEach((({condition:e,position:t})=>{e&&o.push(t)})),Object.assign(a,{top:c<=s-n,bottom:c<=l-n,left:d<=r,right:d<=m-r}),{canShow:a,parentPositions:o}}const handleDay=(e,t,n,a)=>{var o;const l=a.querySelector(`[data-vc-date=\"${t}\"]`),s=null==l?void 0:l.querySelector(\"[data-vc-date-btn]\");if(!l||!s)return;if((null==n?void 0:n.modifier)&&s.classList.add(...n.modifier.trim().split(\" \")),!(null==n?void 0:n.html))return;const i=document.createElement(\"div\");i.className=e.styles.datePopup,i.dataset.vcDatePopup=\"\",i.innerHTML=e.sanitizerHTML(n.html),s.ariaExpanded=\"true\",s.ariaLabel=`${s.ariaLabel}, ${null==(o=null==i?void 0:i.textContent)?void 0:o.replace(/^\\s+|\\s+(?=\\s)|\\s+$/g,\"\").replace(/&nbsp;/g,\" \")}`,l.appendChild(i),requestAnimationFrame((()=>{if(!i)return;const{canShow:e}=getAvailablePosition(l,i),t=e.bottom?l.offsetHeight:-i.offsetHeight,n=e.left&&!e.right?l.offsetWidth-i.offsetWidth/2:!e.left&&e.right?i.offsetWidth/2:0;Object.assign(i.style,{left:`${n}px`,top:`${t}px`})}))},createDatePopup=(e,t)=>{var n;e.popups&&(null==(n=Object.entries(e.popups))||n.forEach((([n,a])=>handleDay(e,n,a,t))))},getDate=e=>new Date(`${e}T00:00:00`),getDateString=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,\"0\")}-${String(e.getDate()).padStart(2,\"0\")}`,parseDates=e=>e.reduce(((e,t)=>{if(t instanceof Date||\"number\"==typeof t){const n=t instanceof Date?t:new Date(t);e.push(n.toISOString().substring(0,10))}else t.match(/^(\\d{4}-\\d{2}-\\d{2})$/g)?e.push(t):t.replace(/(\\d{4}-\\d{2}-\\d{2}).*?(\\d{4}-\\d{2}-\\d{2})/g,((t,n,a)=>{const o=getDate(n),l=getDate(a),s=new Date(o.getTime());for(;s<=l;s.setDate(s.getDate()+1))e.push(getDateString(s));return t}));return e}),[]),updateAttribute=(e,t,n,a=\"\")=>{t?e.setAttribute(n,a):e.getAttribute(n)===a&&e.removeAttribute(n)},setDateModifier=(e,t,n,a,o,l,s)=>{var i,r,c,d;const u=getDate(e.context.displayDateMin)>getDate(l)||getDate(e.context.displayDateMax)<getDate(l)||(null==(i=e.context.disableDates)?void 0:i.includes(l))||!e.selectionMonthsMode&&\"current\"!==s||!e.selectionYearsMode&&getDate(l).getFullYear()!==t;updateAttribute(n,u,\"data-vc-date-disabled\"),a&&updateAttribute(a,u,\"aria-disabled\",\"true\"),a&&updateAttribute(a,u,\"tabindex\",\"-1\"),updateAttribute(n,!e.disableToday&&e.context.dateToday===l,\"data-vc-date-today\"),updateAttribute(n,!e.disableToday&&e.context.dateToday===l,\"aria-current\",\"date\"),updateAttribute(n,null==(r=e.selectedWeekends)?void 0:r.includes(o),\"data-vc-date-weekend\");const m=(null==(c=e.selectedHolidays)?void 0:c[0])?parseDates(e.selectedHolidays):[];if(updateAttribute(n,m.includes(l),\"data-vc-date-holiday\"),(null==(d=e.context.selectedDates)?void 0:d.includes(l))?(n.setAttribute(\"data-vc-date-selected\",\"\"),a&&a.setAttribute(\"aria-selected\",\"true\"),e.context.selectedDates.length>1&&\"multiple-ranged\"===e.selectionDatesMode&&(e.context.selectedDates[0]===l&&e.context.selectedDates[e.context.selectedDates.length-1]===l?n.setAttribute(\"data-vc-date-selected\",\"first-and-last\"):e.context.selectedDates[0]===l?n.setAttribute(\"data-vc-date-selected\",\"first\"):e.context.selectedDates[e.context.selectedDates.length-1]===l&&n.setAttribute(\"data-vc-date-selected\",\"last\"),e.context.selectedDates[0]!==l&&e.context.selectedDates[e.context.selectedDates.length-1]!==l&&n.setAttribute(\"data-vc-date-selected\",\"middle\"))):n.hasAttribute(\"data-vc-date-selected\")&&(n.removeAttribute(\"data-vc-date-selected\"),a&&a.removeAttribute(\"aria-selected\")),!e.context.disableDates.includes(l)&&e.enableEdgeDatesOnly&&e.context.selectedDates.length>1&&\"multiple-ranged\"===e.selectionDatesMode){const t=getDate(e.context.selectedDates[0]),a=getDate(e.context.selectedDates[e.context.selectedDates.length-1]),o=getDate(l);updateAttribute(n,o>t&&o<a,\"data-vc-date-selected\",\"middle\")}},getLocaleString=(e,t,n)=>new Date(`${e}T00:00:00.000Z`).toLocaleString(t,n),getWeekNumber=(e,t)=>{const n=getDate(e),a=(n.getDay()-t+7)%7;n.setDate(n.getDate()+4-a);const o=new Date(n.getFullYear(),0,1),l=Math.ceil(((+n-+o)/864e5+1)/7);return{year:n.getFullYear(),week:l}},addWeekNumberForDate=(e,t,n)=>{const a=getWeekNumber(n,e.firstWeekday);a&&(t.dataset.vcDateWeekNumber=String(a.week))},setDaysAsDisabled=(e,t,n)=>{var a,o,l,s,i;const r=null==(a=e.disableWeekdays)?void 0:a.includes(n),c=e.disableAllDates&&!!(null==(o=e.context.enableDates)?void 0:o[0]);!r&&!c||(null==(l=e.context.enableDates)?void 0:l.includes(t))||(null==(s=e.context.disableDates)?void 0:s.includes(t))||(e.context.disableDates.push(t),null==(i=e.context.disableDates)||i.sort(((e,t)=>+new Date(e)-+new Date(t))))},createDate=(e,t,n,a,o,l)=>{const s=getDate(o).getDay(),i=\"string\"==typeof e.locale&&e.locale.length?e.locale:\"en\",r=document.createElement(\"div\");let c;r.className=e.styles.date,r.dataset.vcDate=o,r.dataset.vcDateMonth=l,r.dataset.vcDateWeekDay=String(s),r.role=\"gridcell\",(\"current\"===l||e.displayDatesOutside)&&(c=document.createElement(\"button\"),c.className=e.styles.dateBtn,c.type=\"button\",c.ariaLabel=getLocaleString(o,i,{dateStyle:\"long\",timeZone:\"UTC\"}),c.dataset.vcDateBtn=\"\",c.innerText=String(a),r.appendChild(c)),e.enableWeekNumbers&&addWeekNumberForDate(e,r,o),setDaysAsDisabled(e,o,s),setDateModifier(e,t,r,c,s,o,l),n.addDate(r),e.onCreateDateEls&&e.onCreateDateEls(e,r)},createDatesFromCurrentMonth=(e,t,n,a,o)=>{for(let l=1;l<=n;l++){const n=new Date(a,o,l);createDate(e,a,t,l,getDateString(n),\"current\")}},createDatesFromNextMonth=(e,t,n,a,o)=>{const l=o+1===12?a+1:a,s=o+1===12?\"01\":o+2<10?`0${o+2}`:o+2;for(let o=1;o<=n;o++){const n=o<10?`0${o}`:String(o);createDate(e,a,t,o,`${l}-${s}-${n}`,\"next\")}},createDatesFromPrevMonth=(e,t,n,a,o)=>{let l=new Date(n,a,0).getDate()-(o-1);const s=0===a?n-1:n,i=0===a?12:a<10?`0${a}`:a;for(let a=o;a>0;a--,l++){createDate(e,n,t,l,`${s}-${i}-${l}`,\"prev\")}},createWeekNumbers=(e,t,n,a,o)=>{if(!e.enableWeekNumbers)return;a.textContent=\"\";const l=document.createElement(\"b\");l.className=e.styles.weekNumbersTitle,l.innerText=\"#\",l.dataset.vcWeekNumbers=\"title\",a.appendChild(l);const s=document.createElement(\"div\");s.className=e.styles.weekNumbersContent,s.dataset.vcWeekNumbers=\"content\",a.appendChild(s);const i=document.createElement(\"button\");i.type=\"button\",i.className=e.styles.weekNumber;const r=o.querySelectorAll(\"[data-vc-date]\"),c=Math.ceil((t+n)/7);for(let t=0;t<c;t++){const n=r[0===t?6:7*t].dataset.vcDate,a=getWeekNumber(n,e.firstWeekday);if(!a)return;const o=i.cloneNode(!0);o.innerText=String(a.week),o.dataset.vcWeekNumber=String(a.week),o.dataset.vcWeekYear=String(a.year),o.role=\"rowheader\",o.ariaLabel=`${a.week}`,s.appendChild(o)}},createDates=e=>{const t=new Date(e.context.selectedYear,e.context.selectedMonth,1),n=e.context.mainElement.querySelectorAll('[data-vc=\"dates\"]'),a=e.context.mainElement.querySelectorAll('[data-vc-week=\"numbers\"]');n.forEach(((n,o)=>{e.selectionDatesMode||(n.dataset.vcDatesDisabled=\"\"),n.textContent=\"\";const l=new Date(t);l.setMonth(l.getMonth()+o);const s=l.getMonth(),i=l.getFullYear(),r=(new Date(i,s,1).getDay()-e.firstWeekday+7)%7,c=new Date(i,s+1,0).getDate(),d=r+c,u=Math.ceil(d/7),m=7*u-d,p=[];for(let t=0;t<u;t++){const t=document.createElement(\"div\");t.className=e.styles.datesRow,t.setAttribute(\"data-vc-dates\",\"row\"),t.setAttribute(\"role\",\"row\"),p.push(t)}let h=0,v=0;const g={addDate:e=>{p[h].appendChild(e),v++,v>=7&&(h++,v=0)}};createDatesFromPrevMonth(e,g,i,s,r),createDatesFromCurrentMonth(e,g,c,i,s),createDatesFromNextMonth(e,g,m,i,s);for(const e of p)n.appendChild(e);createDatePopup(e,n),createWeekNumbers(e,r,c,a[o],n)}))},layoutDefault=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [month] />\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n    <#ArrowNext [month] />\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <#WeekNumbers />\\n    <div class=\"${e.styles.content}\" data-vc=\"content\" role=\"grid\">\\n      <#Week />\\n      <#Dates />\\n      <#DateRangeTooltip />\\n    </div>\\n  </div>\\n  <#ControlTime />\\n`,layoutMonths=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <div class=\"${e.styles.content}\" data-vc=\"content\">\\n      <#Months />\\n    </div>\\n  </div>\\n`,layoutMultiple=e=>`\\n  <div class=\"${e.styles.controls}\" data-vc=\"controls\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [month] />\\n    <#ArrowNext [month] />\\n  </div>\\n  <div class=\"${e.styles.grid}\" data-vc=\"grid\">\\n    <#Multiple>\\n      <div class=\"${e.styles.column}\" data-vc=\"column\" role=\"region\">\\n        <div class=\"${e.styles.header}\" data-vc=\"header\">\\n          <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n            <#Month />\\n            <#Year />\\n          </div>\\n        </div>\\n        <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n          <#WeekNumbers />\\n          <div class=\"${e.styles.content}\" data-vc=\"content\" role=\"grid\">\\n            <#Week />\\n            <#Dates />\\n          </div>\\n        </div>\\n      </div>\\n    <#/Multiple>\\n    <#DateRangeTooltip />\\n  </div>\\n  <#ControlTime />\\n`,layoutYears=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [year] />\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n    <#ArrowNext [year] />\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <div class=\"${e.styles.content}\" data-vc=\"content\">\\n      <#Years />\\n    </div>\\n  </div>\\n`,ArrowNext=(e,t)=>`<button type=\"button\" class=\"${e.styles.arrowNext}\" data-vc-arrow=\"next\" aria-label=\"${e.labels.arrowNext[t]}\"></button>`,ArrowPrev=(e,t)=>`<button type=\"button\" class=\"${e.styles.arrowPrev}\" data-vc-arrow=\"prev\" aria-label=\"${e.labels.arrowPrev[t]}\"></button>`,ControlTime=e=>e.selectionTimeMode?`<div class=\"${e.styles.time}\" data-vc=\"time\" role=\"group\" aria-label=\"${e.labels.selectingTime}\"></div>`:\"\",DateRangeTooltip=e=>e.onCreateDateRangeTooltip?`<div class=\"${e.styles.dateRangeTooltip}\" data-vc-date-range-tooltip=\"hidden\"></div>`:\"\",Dates=e=>`<div class=\"${e.styles.dates}\" data-vc=\"dates\" aria-live=\"assertive\" aria-label=\"${e.labels.dates}\" ${\"multiple\"===e.type?\"aria-multiselectable\":\"\"}></div>`,Month=e=>`<button type=\"button\" class=\"${e.styles.month}\" data-vc=\"month\"></button>`,Months=e=>`<div class=\"${e.styles.months}\" data-vc=\"months\" role=\"grid\" aria-live=\"assertive\" aria-label=\"${e.labels.months}\"></div>`,Week=e=>`<div class=\"${e.styles.week}\" data-vc=\"week\" role=\"row\" aria-label=\"${e.labels.week}\"></div>`,WeekNumbers=e=>e.enableWeekNumbers?`<div class=\"${e.styles.weekNumbers}\" data-vc-week=\"numbers\" role=\"row\" aria-label=\"${e.labels.weekNumber}\"></div>`:\"\",Year=e=>`<button type=\"button\" class=\"${e.styles.year}\" data-vc=\"year\"></button>`,Years=e=>`<div class=\"${e.styles.years}\" data-vc=\"years\" role=\"grid\" aria-live=\"assertive\" aria-label=\"${e.labels.years}\"></div>`,components={ArrowNext:ArrowNext,ArrowPrev:ArrowPrev,ControlTime:ControlTime,Dates:Dates,DateRangeTooltip:DateRangeTooltip,Month:Month,Months:Months,Week:Week,WeekNumbers:WeekNumbers,Year:Year,Years:Years},getComponent=e=>components[e],parseLayout=(e,t)=>t.replace(/[\\n\\t]/g,\"\").replace(/<#(?!\\/?Multiple)(.*?)>/g,((t,n)=>{const a=(n.match(/\\[(.*?)\\]/)||[])[1],o=n.replace(/[/\\s\\n\\t]|\\[(.*?)\\]/g,\"\"),l=getComponent(o),s=l?l(e,null!=a?a:null):\"\";return e.sanitizerHTML(s)})).replace(/[\\n\\t]/g,\"\"),parseMultipleLayout=(e,t)=>t.replace(new RegExp(\"<#Multiple>(.*?)<#\\\\/Multiple>\",\"gs\"),((t,n)=>{const a=Array(e.context.displayMonthsCount).fill(n).join(\"\");return e.sanitizerHTML(a)})).replace(/[\\n\\t]/g,\"\"),createLayouts=(e,t)=>{const n={default:layoutDefault,month:layoutMonths,year:layoutYears,multiple:layoutMultiple};if(Object.keys(n).forEach((t=>{const a=t;e.layouts[a].length||(e.layouts[a]=n[a](e))})),e.context.mainElement.className=e.styles.calendar,e.context.mainElement.dataset.vc=\"calendar\",e.context.mainElement.dataset.vcType=e.context.currentType,e.context.mainElement.role=\"application\",e.context.mainElement.tabIndex=0,e.context.mainElement.ariaLabel=e.labels.application,\"multiple\"!==e.context.currentType){if(\"multiple\"===e.type&&t){const n=e.context.mainElement.querySelector('[data-vc=\"controls\"]'),a=e.context.mainElement.querySelector('[data-vc=\"grid\"]'),o=t.closest('[data-vc=\"column\"]');return n&&n.remove(),a&&(a.dataset.vcGrid=\"hidden\"),o&&(o.dataset.vcColumn=e.context.currentType),void(o&&(o.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))))}e.context.mainElement.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))}else e.context.mainElement.innerHTML=e.sanitizerHTML(parseMultipleLayout(e,parseLayout(e,e.layouts[e.context.currentType])))},setVisibilityArrows=(e,t,n,a)=>{e.style.visibility=n?\"hidden\":\"\",t.style.visibility=a?\"hidden\":\"\"},handleDefaultType=(e,t,n)=>{const a=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1))),o=new Date(a.getTime()),l=new Date(a.getTime());o.setMonth(o.getMonth()-e.monthsToSwitch),l.setMonth(l.getMonth()+e.monthsToSwitch);const s=getDate(e.context.dateMin),i=getDate(e.context.dateMax);e.selectionYearsMode||(s.setFullYear(a.getFullYear()),i.setFullYear(a.getFullYear()));const r=!e.selectionMonthsMode||o.getFullYear()<s.getFullYear()||o.getFullYear()===s.getFullYear()&&o.getMonth()<s.getMonth(),c=!e.selectionMonthsMode||l.getFullYear()>i.getFullYear()||l.getFullYear()===i.getFullYear()&&l.getMonth()>i.getMonth()-(e.context.displayMonthsCount-1);setVisibilityArrows(t,n,r,c)},handleYearType=(e,t,n)=>{const a=getDate(e.context.dateMin),o=getDate(e.context.dateMax),l=!!(a.getFullYear()&&e.context.displayYear-7<=a.getFullYear()),s=!!(o.getFullYear()&&e.context.displayYear+7>=o.getFullYear());setVisibilityArrows(t,n,l,s)},visibilityArrows=e=>{if(\"month\"===e.context.currentType)return;const t=e.context.mainElement.querySelector('[data-vc-arrow=\"prev\"]'),n=e.context.mainElement.querySelector('[data-vc-arrow=\"next\"]');if(!t||!n)return;({default:()=>handleDefaultType(e,t,n),year:()=>handleYearType(e,t,n)})[\"multiple\"===e.context.currentType?\"default\":e.context.currentType]()},visibilityHandler=(e,t,n,a,o)=>{const l=new Date(a.setFullYear(e.context.selectedYear,e.context.selectedMonth+n)).getFullYear(),s=new Date(a.setMonth(e.context.selectedMonth+n)).getMonth(),i=e.context.locale.months.long[s],r=t.closest('[data-vc=\"column\"]');r&&(r.ariaLabel=`${i} ${l}`);const c={month:{id:s,label:i},year:{id:l,label:l}};t.innerText=String(c[o].label),t.dataset[`vc${o.charAt(0).toUpperCase()+o.slice(1)}`]=String(c[o].id),t.ariaLabel=`${e.labels[o]} ${c[o].label}`;const d={month:e.selectionMonthsMode,year:e.selectionYearsMode},u=!1===d[o]||\"only-arrows\"===d[o];u&&(t.tabIndex=-1),t.disabled=u},visibilityTitle=e=>{const t=e.context.mainElement.querySelectorAll('[data-vc=\"month\"]'),n=e.context.mainElement.querySelectorAll('[data-vc=\"year\"]'),a=new Date(e.context.selectedYear,e.context.selectedMonth,1);[t,n].forEach((t=>null==t?void 0:t.forEach(((t,n)=>visibilityHandler(e,t,n,a,t.dataset.vc)))))},setYearModifier=(e,t,n,a,o)=>{var l;const s={month:\"[data-vc-months-month]\",year:\"[data-vc-years-year]\"},i={month:{selected:\"data-vc-months-month-selected\",aria:\"aria-selected\",value:\"vcMonthsMonth\",selectedProperty:\"selectedMonth\"},year:{selected:\"data-vc-years-year-selected\",aria:\"aria-selected\",value:\"vcYearsYear\",selectedProperty:\"selectedYear\"}};o&&(null==(l=e.context.mainElement.querySelectorAll(s[n]))||l.forEach((e=>{e.removeAttribute(i[n].selected),e.removeAttribute(i[n].aria)})),setContext(e,i[n].selectedProperty,Number(t.dataset[i[n].value])),visibilityTitle(e),\"year\"===n&&visibilityArrows(e)),a&&(t.setAttribute(i[n].selected,\"\"),t.setAttribute(i[n].aria,\"true\"))},getColumnID=(e,t)=>{var n;if(\"multiple\"!==e.type)return{currentValue:null,columnID:0};const a=e.context.mainElement.querySelectorAll('[data-vc=\"column\"]'),o=Array.from(a).findIndex((e=>e.closest(`[data-vc-column=\"${t}\"]`)));return{currentValue:o>=0?Number(null==(n=a[o].querySelector(`[data-vc=\"${t}\"]`))?void 0:n.getAttribute(`data-vc-${t}`)):null,columnID:Math.max(o,0)}},createMonthEl=(e,t,n,a,o,l,s)=>{const i=t.cloneNode(!1);return i.className=e.styles.monthsMonth,i.innerText=a,i.ariaLabel=o,i.role=\"gridcell\",i.dataset.vcMonthsMonth=`${s}`,l&&(i.ariaDisabled=\"true\"),l&&(i.tabIndex=-1),i.disabled=l,setYearModifier(e,i,\"month\",n===s,!1),i},createMonths=(e,t)=>{var n,a;const o=null==(n=null==t?void 0:t.closest('[data-vc=\"header\"]'))?void 0:n.querySelector('[data-vc=\"year\"]'),l=o?Number(o.dataset.vcYear):e.context.selectedYear,s=(null==t?void 0:t.dataset.vcMonth)?Number(t.dataset.vcMonth):e.context.selectedMonth;setContext(e,\"currentType\",\"month\"),createLayouts(e,t),visibilityTitle(e);const i=e.context.mainElement.querySelector('[data-vc=\"months\"]');if(!e.selectionMonthsMode||!i)return;const r=e.monthsToSwitch>1?e.context.locale.months.long.map(((t,n)=>s-e.monthsToSwitch*n)).concat(e.context.locale.months.long.map(((t,n)=>s+e.monthsToSwitch*n))).filter((e=>e>=0&&e<=12)):Array.from(Array(12).keys()),c=document.createElement(\"button\");c.type=\"button\";for(let t=0;t<12;t++){const n=getDate(e.context.dateMin),a=getDate(e.context.dateMax),o=e.context.displayMonthsCount-1,{columnID:d}=getColumnID(e,\"month\"),u=l<=n.getFullYear()&&t<n.getMonth()+d||l>=a.getFullYear()&&t>a.getMonth()-o+d||l>a.getFullYear()||t!==s&&!r.includes(t),m=createMonthEl(e,c,s,e.context.locale.months.short[t],e.context.locale.months.long[t],u,t);i.appendChild(m),e.onCreateMonthEls&&e.onCreateMonthEls(e,m)}null==(a=e.context.mainElement.querySelector(\"[data-vc-months-month]:not([disabled])\"))||a.focus()},TimeInput=(e,t,n,a,o)=>`\\n  <label class=\"${t}\" data-vc-time-input=\"${e}\">\\n    <input type=\"text\" name=\"${e}\" maxlength=\"2\" aria-label=\"${n[`input${e.charAt(0).toUpperCase()+e.slice(1)}`]}\" value=\"${a}\" ${o?\"disabled\":\"\"}>\\n  </label>\\n`,TimeRange=(e,t,n,a,o,l,s)=>`\\n  <label class=\"${t}\" data-vc-time-range=\"${e}\">\\n    <input type=\"range\" name=\"${e}\" min=\"${a}\" max=\"${o}\" step=\"${l}\" aria-label=\"${n[`range${e.charAt(0).toUpperCase()+e.slice(1)}`]}\" value=\"${s}\">\\n  </label>\\n`,handleActions=(e,t,n,a)=>{({hour:()=>setContext(e,\"selectedHours\",n),minute:()=>setContext(e,\"selectedMinutes\",n)})[a](),setContext(e,\"selectedTime\",`${e.context.selectedHours}:${e.context.selectedMinutes}${e.context.selectedKeeping?` ${e.context.selectedKeeping}`:\"\"}`),e.onChangeTime&&e.onChangeTime(e,t,!1),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t)},transformTime24=(e,t)=>{var n;return(null==(n={0:{AM:\"00\",PM:\"12\"},1:{AM:\"01\",PM:\"13\"},2:{AM:\"02\",PM:\"14\"},3:{AM:\"03\",PM:\"15\"},4:{AM:\"04\",PM:\"16\"},5:{AM:\"05\",PM:\"17\"},6:{AM:\"06\",PM:\"18\"},7:{AM:\"07\",PM:\"19\"},8:{AM:\"08\",PM:\"20\"},9:{AM:\"09\",PM:\"21\"},10:{AM:\"10\",PM:\"22\"},11:{AM:\"11\",PM:\"23\"},12:{AM:\"00\",PM:\"12\"}}[Number(e)])?void 0:n[t])||String(e)},handleClickKeepingTime=(e,t,n,a,o)=>{const l=l=>{const s=\"AM\"===e.context.selectedKeeping?\"PM\":\"AM\",i=transformTime24(e.context.selectedHours,s);Number(i)<=a&&Number(i)>=o?(setContext(e,\"selectedKeeping\",s),n.value=i,handleActions(e,l,e.context.selectedHours,\"hour\"),t.ariaLabel=`${e.labels.btnKeeping} ${e.context.selectedKeeping}`,t.innerText=e.context.selectedKeeping):e.onChangeTime&&e.onChangeTime(e,l,!0)};return t.addEventListener(\"click\",l),()=>{t.removeEventListener(\"click\",l)}},transformTime12=e=>({0:\"12\",13:\"01\",14:\"02\",15:\"03\",16:\"04\",17:\"05\",18:\"06\",19:\"07\",20:\"08\",21:\"09\",22:\"10\",23:\"11\"}[Number(e)]||String(e)),updateInputAndRange=(e,t,n,a)=>{e.value=n,t.value=a},updateKeepingTime$1=(e,t,n)=>{t&&n&&(setContext(e,\"selectedKeeping\",n),t.innerText=n)},handleInput$1=(e,t,n,a,o,l,s)=>{const i={hour:(i,r,c)=>{if(!e.selectionTimeMode)return;({12:()=>{if(!e.context.selectedKeeping)return;const d=Number(transformTime24(r,e.context.selectedKeeping));if(!(d<=l&&d>=s))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,transformTime12(r),transformTime24(r,e.context.selectedKeeping)),i>12&&updateKeepingTime$1(e,a,\"PM\"),handleActions(e,c,transformTime12(r),o)},24:()=>{if(!(i<=l&&i>=s))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,r,r),handleActions(e,c,r,o)}})[e.selectionTimeMode]()},minute:(a,i,r)=>{if(!(a<=l&&a>=s))return n.value=e.context.selectedMinutes,void(e.onChangeTime&&e.onChangeTime(e,r,!0));n.value=i,t.value=i,handleActions(e,r,i,o)}},r=e=>{const t=Number(n.value),a=n.value.padStart(2,\"0\");i[o]&&i[o](t,a,e)};return n.addEventListener(\"change\",r),()=>{n.removeEventListener(\"change\",r)}},updateInputAndTime=(e,t,n,a,o)=>{t.value=o,handleActions(e,n,o,a)},updateKeepingTime=(e,t,n)=>{t&&(setContext(e,\"selectedKeeping\",n),t.innerText=n)},handleRange=(e,t,n,a,o)=>{const l=l=>{const s=Number(t.value),i=t.value.padStart(2,\"0\"),r=\"hour\"===o,c=24===e.selectionTimeMode,d=s>0&&s<12;r&&!c&&updateKeepingTime(e,a,0===s||d?\"AM\":\"PM\"),updateInputAndTime(e,n,l,o,!r||c||d?i:transformTime12(t.value))};return t.addEventListener(\"input\",l),()=>{t.removeEventListener(\"input\",l)}},handleMouseOver=e=>e.setAttribute(\"data-vc-input-focus\",\"\"),handleMouseOut=e=>e.removeAttribute(\"data-vc-input-focus\"),handleTime=(e,t)=>{const n=t.querySelector('[data-vc-time-range=\"hour\"] input[name=\"hour\"]'),a=t.querySelector('[data-vc-time-range=\"minute\"] input[name=\"minute\"]'),o=t.querySelector('[data-vc-time-input=\"hour\"] input[name=\"hour\"]'),l=t.querySelector('[data-vc-time-input=\"minute\"] input[name=\"minute\"]'),s=t.querySelector('[data-vc-time=\"keeping\"]');if(!(n&&a&&o&&l))return;const i=e=>{e.target===n&&handleMouseOver(o),e.target===a&&handleMouseOver(l)},r=e=>{e.target===n&&handleMouseOut(o),e.target===a&&handleMouseOut(l)};return t.addEventListener(\"mouseover\",i),t.addEventListener(\"mouseout\",r),handleInput$1(e,n,o,s,\"hour\",e.timeMaxHour,e.timeMinHour),handleInput$1(e,a,l,s,\"minute\",e.timeMaxMinute,e.timeMinMinute),handleRange(e,n,o,s,\"hour\"),handleRange(e,a,l,s,\"minute\"),s&&handleClickKeepingTime(e,s,n,e.timeMaxHour,e.timeMinHour),()=>{t.removeEventListener(\"mouseover\",i),t.removeEventListener(\"mouseout\",r)}},createTime=e=>{const t=e.context.mainElement.querySelector('[data-vc=\"time\"]');if(!e.selectionTimeMode||!t)return;const[n,a]=[e.timeMinHour,e.timeMaxHour],[o,l]=[e.timeMinMinute,e.timeMaxMinute],s=e.context.selectedKeeping?transformTime24(e.context.selectedHours,e.context.selectedKeeping):e.context.selectedHours,i=\"range\"===e.timeControls;var r;t.innerHTML=e.sanitizerHTML(`\\n    <div class=\"${e.styles.timeContent}\" data-vc-time=\"content\">\\n      ${TimeInput(\"hour\",e.styles.timeHour,e.labels,e.context.selectedHours,i)}\\n      ${TimeInput(\"minute\",e.styles.timeMinute,e.labels,e.context.selectedMinutes,i)}\\n      ${12===e.selectionTimeMode?(r=e.context.selectedKeeping,`<button type=\"button\" class=\"${e.styles.timeKeeping}\" aria-label=\"${e.labels.btnKeeping} ${r}\" data-vc-time=\"keeping\" ${i?\"disabled\":\"\"}>${r}</button>`):\"\"}\\n    </div>\\n    <div class=\"${e.styles.timeRanges}\" data-vc-time=\"ranges\">\\n      ${TimeRange(\"hour\",e.styles.timeRange,e.labels,n,a,e.timeStepHour,s)}\\n      ${TimeRange(\"minute\",e.styles.timeRange,e.labels,o,l,e.timeStepMinute,e.context.selectedMinutes)}\\n    </div>\\n  `),handleTime(e,t)},createWeek=e=>{const t=e.selectedWeekends?[...e.selectedWeekends]:[],n=[...e.context.locale.weekdays.long].reduce(((n,a,o)=>[...n,{id:o,titleShort:e.context.locale.weekdays.short[o],titleLong:a,isWeekend:t.includes(o)}]),[]),a=[...n.slice(e.firstWeekday),...n.slice(0,e.firstWeekday)];e.context.mainElement.querySelectorAll('[data-vc=\"week\"]').forEach((t=>{const n=e.onClickWeekDay?document.createElement(\"button\"):document.createElement(\"b\");e.onClickWeekDay&&(n.type=\"button\"),a.forEach((a=>{const o=n.cloneNode(!0);o.innerText=a.titleShort,o.className=e.styles.weekDay,o.role=\"columnheader\",o.ariaLabel=a.titleLong,o.dataset.vcWeekDay=String(a.id),a.isWeekend&&(o.dataset.vcWeekDayOff=\"\"),t.appendChild(o)}))}))},createYearEl=(e,t,n,a,o)=>{const l=t.cloneNode(!1);return l.className=e.styles.yearsYear,l.innerText=String(o),l.ariaLabel=String(o),l.role=\"gridcell\",l.dataset.vcYearsYear=`${o}`,a&&(l.ariaDisabled=\"true\"),a&&(l.tabIndex=-1),l.disabled=a,setYearModifier(e,l,\"year\",n===o,!1),l},createYears=(e,t)=>{var n;const a=(null==t?void 0:t.dataset.vcYear)?Number(t.dataset.vcYear):e.context.selectedYear;setContext(e,\"currentType\",\"year\"),createLayouts(e,t),visibilityTitle(e),visibilityArrows(e);const o=e.context.mainElement.querySelector('[data-vc=\"years\"]');if(!e.selectionYearsMode||!o)return;const l=\"multiple\"!==e.type||e.context.selectedYear===a?0:1,s=document.createElement(\"button\");s.type=\"button\";for(let t=e.context.displayYear-7;t<e.context.displayYear+8;t++){const n=t<getDate(e.context.dateMin).getFullYear()+l||t>getDate(e.context.dateMax).getFullYear(),i=createYearEl(e,s,a,n,t);o.appendChild(i),e.onCreateYearEls&&e.onCreateYearEls(e,i)}null==(n=e.context.mainElement.querySelector(\"[data-vc-years-year]:not([disabled])\"))||n.focus()},trackChangesHTMLElement=(e,t,n)=>{new MutationObserver((e=>{for(let a=0;a<e.length;a++){if(e[a].attributeName===t){n();break}}})).observe(e,{attributes:!0})},haveListener={value:!1,set:()=>haveListener.value=!0,check:()=>haveListener.value},setTheme=(e,t)=>e.dataset.vcTheme=t,trackChangesThemeInSystemSettings=(e,t)=>{if(setTheme(e.context.mainElement,t.matches?\"dark\":\"light\"),\"system\"!==e.selectedTheme||haveListener.check())return;const n=e=>{const t=document.querySelectorAll('[data-vc=\"calendar\"]');null==t||t.forEach((t=>setTheme(t,e.matches?\"dark\":\"light\")))};t.addEventListener?t.addEventListener(\"change\",n):t.addListener(n),haveListener.set()},detectTheme=(e,t)=>{const n=e.themeAttrDetect.length?document.querySelector(e.themeAttrDetect):null,a=e.themeAttrDetect.replace(/^.*\\[(.+)\\]/g,((e,t)=>t));if(!n||\"system\"===n.getAttribute(a))return void trackChangesThemeInSystemSettings(e,t);const o=n.getAttribute(a);o?(setTheme(e.context.mainElement,o),trackChangesHTMLElement(n,a,(()=>{const t=n.getAttribute(a);t&&setTheme(e.context.mainElement,t)}))):trackChangesThemeInSystemSettings(e,t)},handleTheme=e=>{\"not all\"!==window.matchMedia(\"(prefers-color-scheme)\").media?\"system\"===e.selectedTheme?detectTheme(e,window.matchMedia(\"(prefers-color-scheme: dark)\")):setTheme(e.context.mainElement,e.selectedTheme):setTheme(e.context.mainElement,\"light\")},capitalizeFirstLetter=e=>e.charAt(0).toUpperCase()+e.slice(1).replace(/\\./,\"\"),getLocaleWeekday=(e,t,n)=>{const a=new Date(`1978-01-0${t+1}T00:00:00.000Z`),o=a.toLocaleString(n,{weekday:\"short\",timeZone:\"UTC\"}),l=a.toLocaleString(n,{weekday:\"long\",timeZone:\"UTC\"});e.context.locale.weekdays.short.push(capitalizeFirstLetter(o)),e.context.locale.weekdays.long.push(capitalizeFirstLetter(l))},getLocaleMonth=(e,t,n)=>{const a=new Date(`1978-${String(t+1).padStart(2,\"0\")}-01T00:00:00.000Z`),o=a.toLocaleString(n,{month:\"short\",timeZone:\"UTC\"}),l=a.toLocaleString(n,{month:\"long\",timeZone:\"UTC\"});e.context.locale.months.short.push(capitalizeFirstLetter(o)),e.context.locale.months.long.push(capitalizeFirstLetter(l))},getLocale=e=>{var t,n,a,o,l,s,i,r;if(!(e.context.locale.weekdays.short[6]&&e.context.locale.weekdays.long[6]&&e.context.locale.months.short[11]&&e.context.locale.months.long[11]))if(\"string\"==typeof e.locale){if(\"string\"==typeof e.locale&&!e.locale.length)throw new Error(errorMessages.notLocale);Array.from({length:7},((t,n)=>getLocaleWeekday(e,n,e.locale))),Array.from({length:12},((t,n)=>getLocaleMonth(e,n,e.locale)))}else{if(!((null==(n=null==(t=e.locale)?void 0:t.weekdays)?void 0:n.short[6])&&(null==(o=null==(a=e.locale)?void 0:a.weekdays)?void 0:o.long[6])&&(null==(s=null==(l=e.locale)?void 0:l.months)?void 0:s.short[11])&&(null==(r=null==(i=e.locale)?void 0:i.months)?void 0:r.long[11])))throw new Error(errorMessages.notLocale);setContext(e,\"locale\",__spreadValues({},e.locale))}},create=e=>{const t={default:()=>{createWeek(e),createDates(e)},multiple:()=>{createWeek(e),createDates(e)},month:()=>createMonths(e),year:()=>createYears(e)};handleTheme(e),getLocale(e),createLayouts(e),visibilityTitle(e),visibilityArrows(e),createTime(e),t[e.context.currentType]()},handleArrowKeys=e=>{const t=t=>{var n;const a=t.target;if(![\"ArrowUp\",\"ArrowDown\",\"ArrowLeft\",\"ArrowRight\"].includes(t.key)||\"button\"!==a.localName)return;const o=Array.from(e.context.mainElement.querySelectorAll('[data-vc=\"calendar\"] button')),l=o.indexOf(a);if(-1===l)return;const s=(i=o[l]).hasAttribute(\"data-vc-date-btn\")?7:i.hasAttribute(\"data-vc-months-month\")?4:i.hasAttribute(\"data-vc-years-year\")?5:1;var i;const r=(0,{ArrowUp:()=>Math.max(0,l-s),ArrowDown:()=>Math.min(o.length-1,l+s),ArrowLeft:()=>Math.max(0,l-1),ArrowRight:()=>Math.min(o.length-1,l+1)}[t.key])();null==(n=o[r])||n.focus()};return e.context.mainElement.addEventListener(\"keydown\",t),()=>e.context.mainElement.removeEventListener(\"keydown\",t)},handleMonth=(e,t)=>{const n=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1)));({prev:()=>n.setMonth(n.getMonth()-e.monthsToSwitch),next:()=>n.setMonth(n.getMonth()+e.monthsToSwitch)})[t](),setContext(e,\"selectedMonth\",n.getMonth()),setContext(e,\"selectedYear\",n.getFullYear()),visibilityTitle(e),visibilityArrows(e),createDates(e)},handleClickArrow=(e,t)=>{const n=t.target.closest(\"[data-vc-arrow]\");if(n){if([\"default\",\"multiple\"].includes(e.context.currentType))handleMonth(e,n.dataset.vcArrow);else if(\"year\"===e.context.currentType&&void 0!==e.context.displayYear){const a={prev:-15,next:15}[n.dataset.vcArrow];setContext(e,\"displayYear\",e.context.displayYear+a),createYears(e,t.target)}e.onClickArrow&&e.onClickArrow(e,t)}},resolveToggle=(e,t)=>void 0===t||(\"function\"==typeof t?t(e):t),canToggleSelection=e=>resolveToggle(e,e.enableDateToggle),handleSelectDate=(e,t,n)=>{const a=t.dataset.vcDate,o=t.closest(\"[data-vc-date][data-vc-date-selected]\"),l=canToggleSelection(e);if(o&&!l)return;const s=o?e.context.selectedDates.filter((e=>e!==a)):n?[...e.context.selectedDates,a]:[a];setContext(e,\"selectedDates\",s)},createDateRangeTooltip=(e,t,n)=>{if(!t)return;if(!n)return t.dataset.vcDateRangeTooltip=\"hidden\",void(t.textContent=\"\");const a=e.context.mainElement.getBoundingClientRect(),o=n.getBoundingClientRect();t.style.left=o.left-a.left+o.width/2+\"px\",t.style.top=o.bottom-a.top-o.height+\"px\",t.dataset.vcDateRangeTooltip=\"visible\",t.innerHTML=e.sanitizerHTML(e.onCreateDateRangeTooltip(e,n,t,o,a))},state={self:null,lastDateEl:null,isHovering:!1,rangeMin:void 0,rangeMax:void 0,tooltipEl:null,timeoutId:null},addHoverEffect=(e,t,n)=>{var a,o,l;if(!(null==(o=null==(a=state.self)?void 0:a.context)?void 0:o.selectedDates[0]))return;const s=getDateString(e);(null==(l=state.self.context.disableDates)?void 0:l.includes(s))||(state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${s}\"]`).forEach((e=>e.dataset.vcDateHover=\"\")),t.forEach((e=>e.dataset.vcDateHover=\"first\")),n.forEach((e=>{\"first\"===e.dataset.vcDateHover?e.dataset.vcDateHover=\"first-and-last\":e.dataset.vcDateHover=\"last\"})))},removeHoverEffect=()=>{var e,t;if(!(null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.mainElement))return;state.self.context.mainElement.querySelectorAll(\"[data-vc-date-hover]\").forEach((e=>e.removeAttribute(\"data-vc-date-hover\")))},handleHoverDatesEvent=e=>{var t,n;if(!e||!(null==(n=null==(t=state.self)?void 0:t.context)?void 0:n.selectedDates[0]))return;if(!e.closest('[data-vc=\"dates\"]'))return state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),void removeHoverEffect();const a=e.closest(\"[data-vc-date]\");if(!a||state.lastDateEl===a)return;state.lastDateEl=a,createDateRangeTooltip(state.self,state.tooltipEl,a),removeHoverEffect();const o=a.dataset.vcDate,l=getDate(state.self.context.selectedDates[0]),s=getDate(o),i=state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${state.self.context.selectedDates[0]}\"]`),r=state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${o}\"]`),[c,d]=l<s?[i,r]:[r,i],[u,m]=l<s?[l,s]:[s,l];for(let e=new Date(u);e<=m;e.setDate(e.getDate()+1))addHoverEffect(e,c,d)},handleHoverSelectedDatesRangeEvent=e=>{const t=null==e?void 0:e.closest(\"[data-vc-date-selected]\");if(!t&&state.lastDateEl)return state.lastDateEl=null,void createDateRangeTooltip(state.self,state.tooltipEl,null);t&&state.lastDateEl!==t&&(state.lastDateEl=t,createDateRangeTooltip(state.self,state.tooltipEl,t))},optimizedHoverHandler=e=>t=>{const n=t.target;state.isHovering||(state.isHovering=!0,requestAnimationFrame((()=>{e(n),state.isHovering=!1})))},optimizedHandleHoverDatesEvent=optimizedHoverHandler(handleHoverDatesEvent),optimizedHandleHoverSelectedDatesRangeEvent=optimizedHoverHandler(handleHoverSelectedDatesRangeEvent),handleCancelSelectionDates=e=>{state.self&&\"Escape\"===e.key&&(state.lastDateEl=null,setContext(state.self,\"selectedDates\",[]),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect())},handleMouseLeave=()=>{null!==state.timeoutId&&clearTimeout(state.timeoutId),state.timeoutId=setTimeout((()=>{state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect()}),50)},updateDisabledDates=()=>{var e,t,n,a;if(!(null==(n=null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.selectedDates)?void 0:n[0])||!(null==(a=state.self.context.disableDates)?void 0:a[0]))return;const o=getDate(state.self.context.selectedDates[0]),[l,s]=state.self.context.disableDates.map((e=>getDate(e))).reduce((([e,t],n)=>[o>=n?n:e,o<n&&null===t?n:t]),[null,null]);l&&setContext(state.self,\"displayDateMin\",getDateString(new Date(l.setDate(l.getDate()+1)))),s&&setContext(state.self,\"displayDateMax\",getDateString(new Date(s.setDate(s.getDate()-1))));state.self.disableDatesPast&&!state.self.disableAllDates&&getDate(state.self.context.displayDateMin)<getDate(state.self.context.dateToday)&&setContext(state.self,\"displayDateMin\",state.self.context.dateToday)},handleSelectDateRange=(e,t)=>{state.self=e,state.lastDateEl=t,removeHoverEffect(),e.disableDatesGaps&&(state.rangeMin=state.rangeMin?state.rangeMin:e.context.displayDateMin,state.rangeMax=state.rangeMax?state.rangeMax:e.context.displayDateMax),e.onCreateDateRangeTooltip&&(state.tooltipEl=e.context.mainElement.querySelector(\"[data-vc-date-range-tooltip]\"));const n=null==t?void 0:t.dataset.vcDate;if(n){const t=1===e.context.selectedDates.length&&e.context.selectedDates[0].includes(n),a=t&&!canToggleSelection(e)?[n,n]:t&&canToggleSelection(e)?[]:e.context.selectedDates.length>1?[n]:[...e.context.selectedDates,n];setContext(e,\"selectedDates\",a),e.context.selectedDates.length>1&&e.context.selectedDates.sort(((e,t)=>+new Date(e)-+new Date(t)))}({set:()=>(e.disableDatesGaps&&updateDisabledDates(),createDateRangeTooltip(state.self,state.tooltipEl,t),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),state.self.context.mainElement.addEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.addEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.addEventListener(\"keydown\",handleCancelSelectionDates),()=>{state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates)}),reset:()=>{const[n,a]=[e.context.selectedDates[0],e.context.selectedDates[e.context.selectedDates.length-1]],o=e.context.selectedDates[0]!==e.context.selectedDates[e.context.selectedDates.length-1],l=parseDates([`${n}:${a}`]).filter((t=>!e.context.disableDates.includes(t))),s=o?e.enableEdgeDatesOnly?[n,a]:l:[e.context.selectedDates[0],e.context.selectedDates[0]];if(setContext(e,\"selectedDates\",s),e.disableDatesGaps&&(setContext(e,\"displayDateMin\",state.rangeMin),setContext(e,\"displayDateMax\",state.rangeMax)),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),e.onCreateDateRangeTooltip)return e.context.selectedDates[0]||(state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,null)),e.context.selectedDates[0]&&(state.self.context.mainElement.addEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.addEventListener(\"mouseleave\",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,t)),()=>{state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave)}}})[1===e.context.selectedDates.length?\"set\":\"reset\"]()},updateDateModifier=e=>{e.context.mainElement.querySelectorAll(\"[data-vc-date]\").forEach((t=>{const n=t.querySelector(\"[data-vc-date-btn]\"),a=t.dataset.vcDate,o=getDate(a).getDay();setDateModifier(e,e.context.selectedYear,t,n,o,a,\"current\")}))},handleClickDate=(e,t)=>{var n;const a=t.target,o=a.closest(\"[data-vc-date-btn]\");if(!e.selectionDatesMode||![\"single\",\"multiple\",\"multiple-ranged\"].includes(e.selectionDatesMode)||!o)return;const l=o.closest(\"[data-vc-date]\");({single:()=>handleSelectDate(e,l,!1),multiple:()=>handleSelectDate(e,l,!0),\"multiple-ranged\":()=>handleSelectDateRange(e,l)})[e.selectionDatesMode](),null==(n=e.context.selectedDates)||n.sort(((e,t)=>+new Date(e)-+new Date(t))),e.onClickDate&&e.onClickDate(e,t),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t);const s=a.closest('[data-vc-date-month=\"prev\"]'),i=a.closest('[data-vc-date-month=\"next\"]');({prev:()=>e.enableMonthChangeOnDayClick?handleMonth(e,\"prev\"):updateDateModifier(e),next:()=>e.enableMonthChangeOnDayClick?handleMonth(e,\"next\"):updateDateModifier(e),current:()=>updateDateModifier(e)})[s?\"prev\":i?\"next\":\"current\"]()},typeClick=[\"month\",\"year\"],getValue=(e,t,n)=>{const{currentValue:a,columnID:o}=getColumnID(e,t);return\"month\"===e.context.currentType&&o>=0?n-o:\"year\"===e.context.currentType&&e.context.selectedYear!==a?n-1:n},handleMultipleYearSelection=(e,t)=>{const n=getValue(e,\"year\",Number(t.dataset.vcYearsYear)),a=getDate(e.context.dateMin),o=getDate(e.context.dateMax),l=e.context.displayMonthsCount-1,{columnID:s}=getColumnID(e,\"year\"),i=e.context.selectedMonth<a.getMonth()&&n<=a.getFullYear(),r=e.context.selectedMonth>o.getMonth()-l+s&&n>=o.getFullYear(),c=n<a.getFullYear(),d=n>o.getFullYear(),u=i||c?a.getFullYear():r||d?o.getFullYear():n,m=i||c?a.getMonth():r||d?o.getMonth()-l+s:e.context.selectedMonth;setContext(e,\"selectedYear\",u),setContext(e,\"selectedMonth\",m)},handleMultipleMonthSelection=(e,t)=>{const n=t.closest('[data-vc-column=\"month\"]').querySelector('[data-vc=\"year\"]'),a=getValue(e,\"month\",Number(t.dataset.vcMonthsMonth)),o=Number(n.dataset.vcYear),l=getDate(e.context.dateMin),s=getDate(e.context.dateMax),i=a<l.getMonth()&&o<=l.getFullYear(),r=a>s.getMonth()&&o>=s.getFullYear();setContext(e,\"selectedYear\",o),setContext(e,\"selectedMonth\",i?l.getMonth():r?s.getMonth():a)},handleItemClick=(e,t,n,a)=>{var o;({year:()=>{if(\"multiple\"===e.type)return handleMultipleYearSelection(e,a);setContext(e,\"selectedYear\",Number(a.dataset.vcYearsYear))},month:()=>{if(\"multiple\"===e.type)return handleMultipleMonthSelection(e,a);setContext(e,\"selectedMonth\",Number(a.dataset.vcMonthsMonth))}})[n]();({year:()=>{var n;return null==(n=e.onClickYear)?void 0:n.call(e,e,t)},month:()=>{var n;return null==(n=e.onClickMonth)?void 0:n.call(e,e,t)}})[n](),e.context.currentType!==e.type?(setContext(e,\"currentType\",e.type),create(e),null==(o=e.context.mainElement.querySelector(`[data-vc=\"${n}\"]`))||o.focus()):setYearModifier(e,a,n,!0,!0)},handleClickType=(e,t,n)=>{var a;const o=t.target,l=o.closest(`[data-vc=\"${n}\"]`),s={year:()=>createYears(e,o),month:()=>createMonths(e,o)};if(l&&e.onClickTitle&&e.onClickTitle(e,t),l&&e.context.currentType!==n)return s[n]();const i=o.closest(`[data-vc-${n}s-${n}]`);if(i)return handleItemClick(e,t,n,i);const r=o.closest('[data-vc=\"grid\"]'),c=o.closest('[data-vc=\"column\"]');(e.context.currentType===n&&l||\"multiple\"===e.type&&e.context.currentType===n&&r&&!c)&&(setContext(e,\"currentType\",e.type),create(e),null==(a=e.context.mainElement.querySelector(`[data-vc=\"${n}\"]`))||a.focus())},handleClickMonthOrYear=(e,t)=>{const n={month:e.selectionMonthsMode,year:e.selectionYearsMode};typeClick.forEach((a=>{n[a]&&t.target&&handleClickType(e,t,a)}))},handleClickWeekNumber=(e,t)=>{if(!e.enableWeekNumbers||!e.onClickWeekNumber)return;const n=t.target.closest(\"[data-vc-week-number]\"),a=e.context.mainElement.querySelectorAll(\"[data-vc-date-week-number]\");if(!n||!a[0])return;const o=Number(n.innerText),l=Number(n.dataset.vcWeekYear),s=Array.from(a).filter((e=>Number(e.dataset.vcDateWeekNumber)===o));e.onClickWeekNumber(e,o,l,s,t)},handleClickWeekDay=(e,t)=>{if(!e.onClickWeekDay)return;const n=t.target.closest(\"[data-vc-week-day]\"),a=t.target.closest('[data-vc=\"column\"]'),o=a?a.querySelectorAll(\"[data-vc-date-week-day]\"):e.context.mainElement.querySelectorAll(\"[data-vc-date-week-day]\");if(!n||!o[0])return;const l=Number(n.dataset.vcWeekDay),s=Array.from(o).filter((e=>Number(e.dataset.vcDateWeekDay)===l));e.onClickWeekDay(e,l,s,t)},handleClick=e=>{const t=t=>{handleClickArrow(e,t),handleClickWeekDay(e,t),handleClickWeekNumber(e,t),handleClickDate(e,t),handleClickMonthOrYear(e,t)};return e.context.mainElement.addEventListener(\"click\",t),()=>e.context.mainElement.removeEventListener(\"click\",t)},initMonthsCount=e=>{if(\"multiple\"===e.type&&(e.displayMonthsCount<=1||e.displayMonthsCount>12))throw new Error(errorMessages.incorrectMonthsCount);if(\"multiple\"!==e.type&&e.displayMonthsCount>1)throw new Error(errorMessages.incorrectMonthsCount);setContext(e,\"displayMonthsCount\",e.displayMonthsCount?e.displayMonthsCount:\"multiple\"===e.type?2:1)},getLocalDate=()=>{const e=new Date;return new Date(e.getTime()-6e4*e.getTimezoneOffset()).toISOString().substring(0,10)},resolveDate=(e,t)=>\"today\"===e?getLocalDate():e instanceof Date||\"number\"==typeof e||\"string\"==typeof e?parseDates([e])[0]:t,initRange=e=>{var t,n,a;const o=resolveDate(e.dateMin,e.dateMin),l=resolveDate(e.dateMax,e.dateMax),s=resolveDate(e.displayDateMin,o),i=resolveDate(e.displayDateMax,l);setContext(e,\"dateToday\",resolveDate(e.dateToday,e.dateToday)),setContext(e,\"displayDateMin\",s?getDate(o)>=getDate(s)?o:s:o),setContext(e,\"displayDateMax\",i?getDate(l)<=getDate(i)?l:i:l);const r=e.disableDatesPast&&!e.disableAllDates&&getDate(s)<getDate(e.context.dateToday);setContext(e,\"displayDateMin\",r||e.disableAllDates?e.context.dateToday:s),setContext(e,\"displayDateMax\",e.disableAllDates?e.context.dateToday:i),setContext(e,\"disableDates\",e.disableDates[0]&&!e.disableAllDates?parseDates(e.disableDates):e.disableAllDates?[e.context.displayDateMin]:[]),e.context.disableDates.length>1&&e.context.disableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),setContext(e,\"enableDates\",e.enableDates[0]?parseDates(e.enableDates):[]),(null==(t=e.context.enableDates)?void 0:t[0])&&(null==(n=e.context.disableDates)?void 0:n[0])&&setContext(e,\"disableDates\",e.context.disableDates.filter((t=>!e.context.enableDates.includes(t)))),e.context.enableDates.length>1&&e.context.enableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),(null==(a=e.context.enableDates)?void 0:a[0])&&e.disableAllDates&&(setContext(e,\"displayDateMin\",e.context.enableDates[0]),setContext(e,\"displayDateMax\",e.context.enableDates[e.context.enableDates.length-1])),setContext(e,\"dateMin\",e.displayDisabledDates?o:e.context.displayDateMin),setContext(e,\"dateMax\",e.displayDisabledDates?l:e.context.displayDateMax)},initSelectedDates=e=>{var t;setContext(e,\"selectedDates\",(null==(t=e.selectedDates)?void 0:t[0])?parseDates(e.selectedDates):[])},displayClosestValidDate=e=>{const t=t=>{const n=new Date(t);setInitialContext(e,n.getMonth(),n.getFullYear())};if(e.displayDateMin&&\"today\"!==e.displayDateMin&&(n=e.displayDateMin,a=new Date,new Date(n).getTime()>a.getTime())){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMin;return t(getDate(resolveDate(n,e.displayDateMin))),!0}var n,a;if(e.displayDateMax&&\"today\"!==e.displayDateMax&&((e,t)=>new Date(e).getTime()<t.getTime())(e.displayDateMax,new Date)){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMax;return t(getDate(resolveDate(n,e.displayDateMax))),!0}return!1},setInitialContext=(e,t,n)=>{setContext(e,\"selectedMonth\",t),setContext(e,\"selectedYear\",n),setContext(e,\"displayYear\",n)},initSelectedMonthYear=e=>{var t;if(e.enableJumpToSelectedDate&&(null==(t=e.selectedDates)?void 0:t[0])&&void 0===e.selectedMonth&&void 0===e.selectedYear){const t=getDate(parseDates(e.selectedDates)[0]);return void setInitialContext(e,t.getMonth(),t.getFullYear())}if(displayClosestValidDate(e))return;const n=void 0!==e.selectedMonth&&Number(e.selectedMonth)>=0&&Number(e.selectedMonth)<12,a=void 0!==e.selectedYear&&Number(e.selectedYear)>=0&&Number(e.selectedYear)<=9999;setInitialContext(e,n?Number(e.selectedMonth):getDate(e.context.dateToday).getMonth(),a?Number(e.selectedYear):getDate(e.context.dateToday).getFullYear())},initTime=e=>{var t,n,a;if(!e.selectionTimeMode)return;if(![12,24].includes(e.selectionTimeMode))throw new Error(errorMessages.incorrectTime);const o=12===e.selectionTimeMode,l=o?/^(0[1-9]|1[0-2]):([0-5][0-9]) ?(AM|PM)?$/i:/^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/;let[s,i,r]=null!=(a=null==(n=null==(t=e.selectedTime)?void 0:t.match(l))?void 0:n.slice(1))?a:[];s?o&&!r&&(r=\"AM\"):(s=o?transformTime12(String(e.timeMinHour)):String(e.timeMinHour),i=String(e.timeMinMinute),r=o?Number(transformTime12(String(e.timeMinHour)))>=12?\"PM\":\"AM\":null),setContext(e,\"selectedHours\",s.padStart(2,\"0\")),setContext(e,\"selectedMinutes\",i.padStart(2,\"0\")),setContext(e,\"selectedKeeping\",r),setContext(e,\"selectedTime\",`${e.context.selectedHours}:${e.context.selectedMinutes}${r?` ${r}`:\"\"}`)},initAllVariables=e=>{setContext(e,\"currentType\",e.type),initMonthsCount(e),initRange(e),initSelectedMonthYear(e),initSelectedDates(e),initTime(e)},reset=(e,{year:t,month:n,dates:a,time:o,locale:l},s=!0)=>{var i;const r={year:e.selectedYear,month:e.selectedMonth,dates:e.selectedDates,time:e.selectedTime};if(e.selectedYear=t?r.year:e.context.selectedYear,e.selectedMonth=n?r.month:e.context.selectedMonth,e.selectedTime=o?r.time:e.context.selectedTime,e.selectedDates=\"only-first\"===a&&(null==(i=e.context.selectedDates)?void 0:i[0])?[e.context.selectedDates[0]]:!0===a?r.dates:e.context.selectedDates,l){setContext(e,\"locale\",{months:{short:[],long:[]},weekdays:{short:[],long:[]}})}initAllVariables(e),s&&create(e),e.selectedYear=r.year,e.selectedMonth=r.month,e.selectedDates=r.dates,e.selectedTime=r.time,\"multiple-ranged\"===e.selectionDatesMode&&a&&handleSelectDateRange(e,null)},createToInput=e=>{const t=document.createElement(\"div\");return t.className=e.styles.calendar,t.dataset.vc=\"calendar\",t.dataset.vcInput=\"\",t.dataset.vcCalendarHidden=\"\",setContext(e,\"inputModeInit\",!0),setContext(e,\"isShowInInputMode\",!1),setContext(e,\"mainElement\",t),document.body.appendChild(e.context.mainElement),reset(e,{year:!0,month:!0,dates:!0,time:!0,locale:!0}),setTimeout((()=>show(e))),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e)},canOpenOnFocus=e=>resolveToggle(e,e.openOnFocus),handleInput=e=>{setContext(e,\"inputElement\",e.context.mainElement);const t=()=>{e.context.inputModeInit?setTimeout((()=>show(e))):createToInput(e)};e.context.inputElement.addEventListener(\"click\",t);const n=\"function\"==typeof e.openOnFocus||!0===e.openOnFocus,a=()=>{shouldSkipOpenOnFocus(e)?clearSkipOpenOnFocus(e):canOpenOnFocus(e)&&t()};n&&e.context.inputElement.addEventListener(\"focus\",a);const o=t=>{const n=\"Tab\"===t.key&&!t.shiftKey,a=[\"ArrowUp\",\"ArrowDown\",\"ArrowLeft\",\"ArrowRight\"].includes(t.key);(n||a)&&(t=>{var n;if(!e.context.isShowInInputMode)return!1;if(document.activeElement!==e.context.inputElement)return!1;const a=e=>e.tabIndex>=0&&!e.hasAttribute(\"disabled\")&&\"true\"!==e.getAttribute(\"aria-disabled\"),o=null!=(n=document.createTreeWalker(e.context.mainElement,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>a(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}).nextNode())?n:a(e.context.mainElement)?e.context.mainElement:null;!o||o.tabIndex<0||(t.preventDefault(),o.focus())})(t)};return e.context.inputElement.addEventListener(\"keydown\",o),()=>{e.context.inputElement.removeEventListener(\"click\",t),n&&e.context.inputElement.removeEventListener(\"focus\",a),e.context.inputElement.removeEventListener(\"keydown\",o)}},init=e=>(setContext(e,\"originalElement\",e.context.mainElement.cloneNode(!0)),setContext(e,\"isInit\",!0),e.inputMode?handleInput(e):(initAllVariables(e),create(e),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e))),update=(e,t)=>{if(!e.context.isInit)throw new Error(errorMessages.notInit);reset(e,__spreadValues(__spreadValues({},{year:!0,month:!0,dates:!0,time:!0,locale:!0}),t),!(e.inputMode&&!e.context.inputModeInit)),e.onUpdate&&e.onUpdate(e)},replaceProperties=(e,t)=>{const n=Object.keys(t);for(let a=0;a<n.length;a++){const o=n[a];\"object\"!=typeof e[o]||\"object\"!=typeof t[o]||t[o]instanceof Date||Array.isArray(t[o])?void 0!==t[o]&&(e[o]=t[o]):replaceProperties(e[o],t[o])}},set=(e,t,n)=>{replaceProperties(e,t),e.context.isInit&&update(e,n)};function findBestPickerPosition(e,t){const n=\"left\";if(!t||!e)return n;const{canShow:a,parentPositions:o}=getAvailablePosition(e,t),l=a.left&&a.right;return(l&&a.bottom?\"center\":l&&a.top?[\"top\",\"center\"]:Array.isArray(o)?[\"bottom\"===o[0]?\"top\":\"bottom\",...o.slice(1)]:o)||n}const setPosition=(e,t,n)=>{if(!e)return;const a=\"auto\"===n?findBestPickerPosition(e,t):n,o={top:-t.offsetHeight,bottom:e.offsetHeight,left:0,center:e.offsetWidth/2-t.offsetWidth/2,right:e.offsetWidth-t.offsetWidth},l=Array.isArray(a)?a[0]:\"bottom\",s=Array.isArray(a)?a[1]:a;t.dataset.vcPosition=l;const{top:i,left:r}=getOffset(e),c=i+o[l];let d=r+o[s];const{vw:u}=getViewportDimensions();if(d+t.clientWidth>u){const e=window.innerWidth-document.body.clientWidth;d=u-t.clientWidth-e}else d<0&&(d=0);Object.assign(t.style,{left:`${d}px`,top:`${c}px`})},show=e=>{if(e.context.isShowInInputMode)return;if(!e.context.currentType)return void e.context.mainElement.click();setContext(e,\"cleanupHandlers\",[]),setContext(e,\"isShowInInputMode\",!0),e.inputMode&&restoreTabbing(e.context.mainElement),setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput),e.context.mainElement.removeAttribute(\"data-vc-calendar-hidden\");const t=()=>{setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput)};window.addEventListener(\"resize\",t),e.context.cleanupHandlers.push((()=>window.removeEventListener(\"resize\",t)));const n=t=>{\"Escape\"===t.key&&hide(e)};document.addEventListener(\"keydown\",n),e.context.cleanupHandlers.push((()=>document.removeEventListener(\"keydown\",n)));const a=t=>{t.target===e.context.inputElement||e.context.mainElement.contains(t.target)||hide(e)};document.addEventListener(\"click\",a,{capture:!0}),e.context.cleanupHandlers.push((()=>document.removeEventListener(\"click\",a,{capture:!0}))),e.onShow&&e.onShow(e)},labels={application:\"Calendar\",navigation:\"Calendar Navigation\",arrowNext:{month:\"Next month\",year:\"Next list of years\"},arrowPrev:{month:\"Previous month\",year:\"Previous list of years\"},month:\"Select month, current selected month:\",months:\"List of months\",year:\"Select year, current selected year:\",years:\"List of years\",week:\"Days of the week\",weekNumber:\"Numbers of weeks in a year\",dates:\"Dates in the current month\",selectingTime:\"Selecting a time \",inputHour:\"Hours\",inputMinute:\"Minutes\",rangeHour:\"Slider for selecting hours\",rangeMinute:\"Slider for selecting minutes\",btnKeeping:\"Switch AM/PM, current position:\"},styles={calendar:\"vc\",controls:\"vc-controls\",grid:\"vc-grid\",column:\"vc-column\",header:\"vc-header\",headerContent:\"vc-header__content\",month:\"vc-month\",year:\"vc-year\",arrowPrev:\"vc-arrow vc-arrow_prev\",arrowNext:\"vc-arrow vc-arrow_next\",wrapper:\"vc-wrapper\",content:\"vc-content\",months:\"vc-months\",monthsMonth:\"vc-months__month\",years:\"vc-years\",yearsYear:\"vc-years__year\",week:\"vc-week\",weekDay:\"vc-week__day\",weekNumbers:\"vc-week-numbers\",weekNumbersTitle:\"vc-week-numbers__title\",weekNumbersContent:\"vc-week-numbers__content\",weekNumber:\"vc-week-number\",dates:\"vc-dates\",datesRow:\"vc-dates__row\",date:\"vc-date\",dateBtn:\"vc-date__btn\",datePopup:\"vc-date__popup\",dateRangeTooltip:\"vc-date-range-tooltip\",time:\"vc-time\",timeContent:\"vc-time__content\",timeHour:\"vc-time__hour\",timeMinute:\"vc-time__minute\",timeKeeping:\"vc-time__keeping\",timeRanges:\"vc-time__ranges\",timeRange:\"vc-time__range\"};class OptionsCalendar{constructor(){__publicField(this,\"type\",\"default\"),__publicField(this,\"inputMode\",!1),__publicField(this,\"openOnFocus\",!0),__publicField(this,\"positionToInput\",\"left\"),__publicField(this,\"firstWeekday\",1),__publicField(this,\"monthsToSwitch\",1),__publicField(this,\"themeAttrDetect\",\"html[data-theme]\"),__publicField(this,\"locale\",\"en\"),__publicField(this,\"dateToday\",\"today\"),__publicField(this,\"dateMin\",\"1970-01-01\"),__publicField(this,\"dateMax\",\"2470-12-31\"),__publicField(this,\"displayDateMin\"),__publicField(this,\"displayDateMax\"),__publicField(this,\"displayDatesOutside\",!0),__publicField(this,\"displayDisabledDates\",!1),__publicField(this,\"displayMonthsCount\"),__publicField(this,\"disableDates\",[]),__publicField(this,\"disableAllDates\",!1),__publicField(this,\"disableDatesPast\",!1),__publicField(this,\"disableDatesGaps\",!1),__publicField(this,\"disableWeekdays\",[]),__publicField(this,\"disableToday\",!1),__publicField(this,\"enableDates\",[]),__publicField(this,\"enableEdgeDatesOnly\",!0),__publicField(this,\"enableDateToggle\",!0),__publicField(this,\"enableWeekNumbers\",!1),__publicField(this,\"enableMonthChangeOnDayClick\",!0),__publicField(this,\"enableJumpToSelectedDate\",!1),__publicField(this,\"selectionDatesMode\",\"single\"),__publicField(this,\"selectionMonthsMode\",!0),__publicField(this,\"selectionYearsMode\",!0),__publicField(this,\"selectionTimeMode\",!1),__publicField(this,\"selectedDates\",[]),__publicField(this,\"selectedMonth\"),__publicField(this,\"selectedYear\"),__publicField(this,\"selectedHolidays\",[]),__publicField(this,\"selectedWeekends\",[0,6]),__publicField(this,\"selectedTime\"),__publicField(this,\"selectedTheme\",\"system\"),__publicField(this,\"timeMinHour\",0),__publicField(this,\"timeMaxHour\",23),__publicField(this,\"timeMinMinute\",0),__publicField(this,\"timeMaxMinute\",59),__publicField(this,\"timeControls\",\"all\"),__publicField(this,\"timeStepHour\",1),__publicField(this,\"timeStepMinute\",1),__publicField(this,\"sanitizerHTML\",(e=>e)),__publicField(this,\"onClickDate\"),__publicField(this,\"onClickWeekDay\"),__publicField(this,\"onClickWeekNumber\"),__publicField(this,\"onClickTitle\"),__publicField(this,\"onClickMonth\"),__publicField(this,\"onClickYear\"),__publicField(this,\"onClickArrow\"),__publicField(this,\"onChangeTime\"),__publicField(this,\"onChangeToInput\"),__publicField(this,\"onCreateDateRangeTooltip\"),__publicField(this,\"onCreateDateEls\"),__publicField(this,\"onCreateMonthEls\"),__publicField(this,\"onCreateYearEls\"),__publicField(this,\"onInit\"),__publicField(this,\"onUpdate\"),__publicField(this,\"onDestroy\"),__publicField(this,\"onShow\"),__publicField(this,\"onHide\"),__publicField(this,\"popups\",{}),__publicField(this,\"labels\",__spreadValues({},labels)),__publicField(this,\"layouts\",{default:\"\",multiple:\"\",month:\"\",year:\"\"}),__publicField(this,\"styles\",__spreadValues({},styles))}}const _Calendar=class e extends OptionsCalendar{constructor(t,n){var a;super(),__publicField(this,\"init\",(()=>init(this))),__publicField(this,\"update\",(e=>update(this,e))),__publicField(this,\"destroy\",(()=>destroy(this))),__publicField(this,\"show\",(()=>show(this))),__publicField(this,\"hide\",(()=>hide(this))),__publicField(this,\"set\",((e,t)=>set(this,e,t))),__publicField(this,\"context\"),this.context=__spreadProps(__spreadValues({},this.context),{locale:{months:{short:[],long:[]},weekdays:{short:[],long:[]}}}),setContext(this,\"mainElement\",\"string\"==typeof t?null!=(a=e.memoizedElements.get(t))?a:this.queryAndMemoize(t):t),n&&replaceProperties(this,n)}queryAndMemoize(t){const n=document.querySelector(t);if(!n)throw new Error(errorMessages.notFoundSelector(t));return e.memoizedElements.set(t,n),n}};__publicField(_Calendar,\"memoizedElements\",new Map);let Calendar=_Calendar;export{Calendar};","/**\n * --------------------------------------------------------------------------\n * Bootstrap datepicker.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { Calendar } from 'vanilla-calendar-pro'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'datepicker'\nconst DATA_KEY = 'bs.datepicker'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"datepicker\"]'\n\nconst HIDE_DELAY = 100 // ms delay before hiding after selection\n\nconst Default = {\n  datepickerTheme: null, // 'light', 'dark', 'auto' - explicit theme for datepicker popover only\n  dateMin: null,\n  dateMax: null,\n  dateFormat: null, // Intl.DateTimeFormat options, or function(date, locale) => string\n  displayElement: null, // Element to show formatted date (defaults to element for buttons)\n  displayMonthsCount: 1, // Number of months to display side-by-side\n  firstWeekday: 1, // Monday\n  inline: false, // Render calendar inline (no popup)\n  locale: 'default',\n  positionElement: null, // Element to position calendar relative to (defaults to input)\n  selectedDates: [],\n  selectionMode: 'single', // 'single', 'multiple', 'multiple-ranged'\n  placement: 'left', // 'left', 'center', 'right', 'auto'\n  vcpOptions: {} // Pass-through for any VCP option\n}\n\nconst DefaultType = {\n  datepickerTheme: '(null|string)',\n  dateMin: '(null|string|number|object)',\n  dateMax: '(null|string|number|object)',\n  dateFormat: '(null|object|function)',\n  displayElement: '(null|string|element|boolean)',\n  displayMonthsCount: 'number',\n  firstWeekday: 'number',\n  inline: 'boolean',\n  locale: 'string',\n  positionElement: '(null|string|element)',\n  selectedDates: 'array',\n  selectionMode: 'string',\n  placement: 'string',\n  vcpOptions: 'object'\n}\n\n/**\n * Class definition\n */\n\nclass Datepicker extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._calendar = null\n    this._isShown = false\n\n    this._initCalendar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    return this._isShown ? this.hide() : this.show()\n  }\n\n  show() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || isDisabled(this._element) || this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.show()\n    this._isShown = true\n\n    EventHandler.trigger(this._element, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || !this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.hide()\n    this._isShown = false\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._themeObserver) {\n      this._themeObserver.disconnect()\n      this._themeObserver = null\n    }\n\n    if (this._calendar) {\n      this._calendar.destroy()\n    }\n\n    this._calendar = null\n    super.dispose()\n  }\n\n  getSelectedDates() {\n    const dates = this._calendar?.context?.selectedDates\n    return dates ? [...dates] : []\n  }\n\n  setSelectedDates(dates) {\n    if (this._calendar) {\n      this._calendar.set({ selectedDates: dates })\n    }\n  }\n\n  // Private\n  _initCalendar() {\n    this._isInput = this._element.tagName === 'INPUT'\n    this._isInline = this._config.inline\n\n    // For inline mode, look for a hidden input child to bind to\n    if (this._isInline && !this._isInput) {\n      this._boundInput = this._element.querySelector('input[type=\"hidden\"], input[name]')\n    }\n\n    this._positionElement = this._resolvePositionElement()\n    this._displayElement = this._resolveDisplayElement()\n\n    const calendarOptions = this._buildCalendarOptions()\n\n    // Create calendar on the position element (for correct popup positioning)\n    // but value updates still go to this._element (the input)\n    this._calendar = new Calendar(this._positionElement, calendarOptions)\n    this._calendar.init()\n\n    // Watch for theme changes on ancestor elements (for live theme switching)\n    this._setupThemeObserver()\n\n    // Set initial value if input has a value\n    if (this._isInput && this._element.value) {\n      this._parseInputValue()\n    }\n\n    // Populate input/display with preselected dates\n    this._updateDisplayWithSelectedDates()\n  }\n\n  _updateDisplayWithSelectedDates() {\n    const { selectedDates } = this._config\n    if (!selectedDates || selectedDates.length === 0) {\n      return\n    }\n\n    const formattedDate = this._formatDateForInput(selectedDates)\n\n    if (this._isInput) {\n      this._element.value = formattedDate\n    }\n\n    if (this._boundInput) {\n      this._boundInput.value = selectedDates.join(',')\n    }\n\n    if (this._displayElement) {\n      this._displayElement.textContent = formattedDate\n    }\n  }\n\n  _resolvePositionElement() {\n    let { positionElement } = this._config\n\n    if (typeof positionElement === 'string') {\n      positionElement = document.querySelector(positionElement)\n    }\n\n    // Use input's parent if in form-adorn\n    if (!positionElement && this._isInput && !this._isInline) {\n      const parent = this._element.closest('.form-adorn')\n      if (parent) {\n        positionElement = parent\n      }\n    }\n\n    return positionElement || this._element\n  }\n\n  _resolveDisplayElement() {\n    const { displayElement } = this._config\n\n    if (typeof displayElement === 'string') {\n      return document.querySelector(displayElement)\n    }\n\n    // For buttons/non-inputs (not inline), look for a [data-bs-datepicker-display] child\n    if (displayElement === true || (displayElement === null && !this._isInput && !this._isInline)) {\n      const displayChild = this._element.querySelector('[data-bs-datepicker-display]')\n      return displayChild || this._element\n    }\n\n    return displayElement\n  }\n\n  _getThemeAncestor() {\n    return this._element.closest('[data-bs-theme]')\n  }\n\n  _getEffectiveTheme() {\n    // Priority: explicit datepickerTheme config > inherited from ancestor > none\n    const { datepickerTheme } = this._config\n    if (datepickerTheme) {\n      return datepickerTheme\n    }\n\n    const ancestor = this._getThemeAncestor()\n    return ancestor?.getAttribute('data-bs-theme') || null\n  }\n\n  _syncThemeAttribute(element) {\n    if (!element) {\n      return\n    }\n\n    const theme = this._getEffectiveTheme()\n\n    if (theme) {\n      // Copy theme to popover (needed because VCP appends to body, breaking CSS inheritance)\n      element.setAttribute('data-bs-theme', theme)\n    } else {\n      // No theme - remove attribute to allow natural inheritance\n      element.removeAttribute('data-bs-theme')\n    }\n  }\n\n  _setupThemeObserver() {\n    // Watch for theme changes on ancestor elements\n    const ancestor = this._getThemeAncestor()\n    if (!ancestor || this._config.datepickerTheme) {\n      // No ancestor to watch, or explicit datepickerTheme overrides\n      return\n    }\n\n    this._themeObserver = new MutationObserver(() => {\n      this._syncThemeAttribute(this._calendar?.context?.mainElement)\n    })\n\n    this._themeObserver.observe(ancestor, {\n      attributes: true,\n      attributeFilter: ['data-bs-theme']\n    })\n  }\n\n  _buildCalendarOptions() {\n    // Get theme for VCP - use 'system' for auto-detection if no explicit theme\n    const theme = this._getEffectiveTheme()\n    // VCP uses 'system' for auto, Bootstrap uses 'auto'\n    const vcpTheme = !theme || theme === 'auto' ? 'system' : theme\n\n    const calendarOptions = {\n      ...this._config.vcpOptions,\n      inputMode: !this._isInline,\n      positionToInput: this._config.placement,\n      firstWeekday: this._config.firstWeekday,\n      locale: this._config.locale,\n      selectionDatesMode: this._config.selectionMode,\n      selectedDates: this._config.selectedDates,\n      displayMonthsCount: this._config.displayMonthsCount,\n      type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',\n      selectedTheme: vcpTheme,\n      themeAttrDetect: '[data-bs-theme]',\n      onClickDate: (self, event) => this._handleDateClick(self, event),\n      onInit: self => {\n        this._syncThemeAttribute(self.context.mainElement)\n      },\n      onShow: () => {\n        this._isShown = true\n        this._syncThemeAttribute(this._calendar.context.mainElement)\n      },\n      onHide: () => {\n        this._isShown = false\n      }\n    }\n\n    // Navigate to the month of the first selected date\n    if (this._config.selectedDates.length > 0) {\n      const firstDate = this._parseDate(this._config.selectedDates[0])\n      calendarOptions.selectedMonth = firstDate.getMonth()\n      calendarOptions.selectedYear = firstDate.getFullYear()\n    }\n\n    if (this._config.dateMin) {\n      calendarOptions.dateMin = this._config.dateMin\n    }\n\n    if (this._config.dateMax) {\n      calendarOptions.dateMax = this._config.dateMax\n    }\n\n    return calendarOptions\n  }\n\n  _handleDateClick(self, event) {\n    const selectedDates = [...self.context.selectedDates]\n\n    if (selectedDates.length > 0) {\n      const formattedDate = this._formatDateForInput(selectedDates)\n\n      if (this._isInput) {\n        this._element.value = formattedDate\n      }\n\n      if (this._boundInput) {\n        this._boundInput.value = selectedDates.join(',')\n      }\n\n      if (this._displayElement) {\n        this._displayElement.textContent = formattedDate\n      }\n    }\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      dates: selectedDates,\n      event\n    })\n\n    this._maybeHideAfterSelection(selectedDates)\n  }\n\n  _maybeHideAfterSelection(selectedDates) {\n    if (this._isInline) {\n      return\n    }\n\n    const shouldHide =\n      (this._config.selectionMode === 'single' && selectedDates.length > 0) ||\n      (this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2)\n\n    if (shouldHide) {\n      setTimeout(() => this.hide(), HIDE_DELAY)\n    }\n  }\n\n  _parseDate(dateStr) {\n    const [year, month, day] = dateStr.split('-')\n    return new Date(year, month - 1, day)\n  }\n\n  _formatDate(dateStr) {\n    const date = this._parseDate(dateStr)\n    const locale = this._config.locale === 'default' ? undefined : this._config.locale\n    const { dateFormat } = this._config\n\n    // Custom function formatter\n    if (typeof dateFormat === 'function') {\n      return dateFormat(date, locale)\n    }\n\n    // Intl.DateTimeFormat options object\n    if (dateFormat && typeof dateFormat === 'object') {\n      return new Intl.DateTimeFormat(locale, dateFormat).format(date)\n    }\n\n    // Default: locale-aware formatting\n    return date.toLocaleDateString(locale)\n  }\n\n  _formatDateForInput(dates) {\n    if (dates.length === 0) {\n      return ''\n    }\n\n    if (dates.length === 1) {\n      return this._formatDate(dates[0])\n    }\n\n    // For date ranges, use en-dash; for multiple dates, use comma\n    const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', '\n    return dates.map(d => this._formatDate(d)).join(separator)\n  }\n\n  _parseInputValue() {\n    // Try to parse the input value as a date\n    const value = this._element.value.trim()\n    if (!value) {\n      return\n    }\n\n    const date = new Date(value)\n    if (!Number.isNaN(date.getTime())) {\n      const year = date.getFullYear()\n      const month = String(date.getMonth() + 1).padStart(2, '0')\n      const day = String(date.getDate()).padStart(2, '0')\n      const formatted = `${year}-${month}-${day}`\n      this._calendar.set({ selectedDates: [formatted] })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // Only handle if not an input (inputs use focus)\n  // Skip inline datepickers (they're always visible)\n  if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true') {\n    return\n  }\n\n  event.preventDefault()\n  Datepicker.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE, function () {\n  // Handle focus for input elements\n  if (this.tagName !== 'INPUT') {\n    return\n  }\n\n  Datepicker.getOrCreateInstance(this).show()\n})\n\n// Auto-initialize inline datepickers on DOMContentLoaded\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE}[data-bs-inline=\"true\"]`)) {\n    Datepicker.getOrCreateInstance(element)\n  }\n})\n\nexport default Datepicker\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dialog'\nconst DATA_KEY = 'bs.dialog'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_STATIC = 'dialog-static'\nconst CLASS_NAME_OPEN = 'dialog-open'\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\nconst SELECTOR_OPEN_MODAL_DIALOG = 'dialog.dialog[open]:not(.dialog-nonmodal)'\n\nconst Default = {\n  backdrop: true, // true (click dismisses) or 'static' (click does nothing) - only applies to modal dialogs\n  keyboard: true,\n  modal: true // true uses showModal(), false uses show() for non-modal dialogs\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  modal: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Dialog extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._element.open ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n\n    if (this._config.modal) {\n      // Modal dialog: use showModal() for focus trapping, backdrop, and top layer\n      this._element.showModal()\n      // Prevent body scroll for modal dialogs\n      document.body.classList.add(CLASS_NAME_OPEN)\n    } else {\n      // Non-modal dialog: use show() - no backdrop, no focus trap, no top layer\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n      this._element.show()\n    }\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }, this._element, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n\n    this._queueCallback(() => this._hideDialog(), this._element, this._isAnimated())\n  }\n\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n    super.dispose()\n  }\n\n  handleUpdate() {\n    // Provided for API consistency with Modal.\n    // Native dialogs handle their own positioning.\n  }\n\n  // Private\n  _hideDialog() {\n    this._element.close()\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n    this._isTransitioning = false\n\n    // Only restore body scroll if no other modal dialogs are open\n    if (!document.querySelector(SELECTOR_OPEN_MODAL_DIALOG)) {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n    }\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains('fade')\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      this._element.classList.remove(CLASS_NAME_STATIC)\n    }, this._element)\n  }\n\n  _addEventListeners() {\n    // Handle native cancel event (Escape key) - only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      // Prevent native close behavior - we'll handle it\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_CANCEL)\n      this.hide()\n    })\n\n    // Handle Escape key for non-modal dialogs (native cancel doesn't fire for show())\n    EventHandler.on(this._element, 'keydown', event => {\n      if (event.key !== 'Escape' || this._config.modal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_CANCEL)\n      this.hide()\n    })\n\n    // Handle backdrop clicks (only applies to modal dialogs)\n    // Native <dialog> fires click on the dialog element when backdrop is clicked\n    EventHandler.on(this._element, 'click', event => {\n      // Only handle clicks directly on the dialog (backdrop area)\n      // Non-modal dialogs don't have a backdrop\n      if (event.target !== this._element || !this._config.modal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      // Default: click backdrop to dismiss\n      this.hide()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  // Get config from trigger's data attributes\n  const config = Manipulator.getDataAttributes(this)\n\n  // Check if trigger is inside an open dialog\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Open new dialog first (its backdrop appears over current)\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    newDialog.show(this)\n\n    // Close the current dialog (no backdrop flash since new one is already open)\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      currentInstance.hide()\n    }\n\n    return\n  }\n\n  const data = Dialog.getOrCreateInstance(target, config)\n  data.toggle(this)\n})\n\nenableDismissTrigger(Dialog)\n\nexport default Dialog\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n  return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rlPlacement : lrPlacement;\n      return isStart ? lrPlacement : rlPlacement;\n    case 'left':\n    case 'right':\n      return isStart ? tbPlacement : btPlacement;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n          if (!ignoreCrossAxisOverflow ||\n          // We leave the current main axis only if every placement on that axis\n          // overflows the main axis.\n          overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n            // Try next placement and re-run the lifecycle.\n            return {\n              data: {\n                index: nextIndex,\n                overflows: overflowsData\n              },\n              reset: {\n                placement: nextPlacement\n              }\n            };\n          }\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = originSides.has(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = originSides.has(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n  return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n  return topLayerSelectors.some(selector => {\n    try {\n      return element.matches(selector);\n    } catch (_e) {\n      return false;\n    }\n  });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n  const webkit = isWebKit();\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n  return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle$1(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  const windowScrollbarX = getWindowScrollBarX(html);\n  // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n  // visual width of the <html> but this is not considered in the size\n  // of `html.clientWidth`.\n  if (windowScrollbarX <= 0) {\n    const doc = html.ownerDocument;\n    const body = doc.body;\n    const bodyStyles = getComputedStyle(body);\n    const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n    const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n    if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n      width -= clippingStableScrollbarWidth;\n    }\n  } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n    // If the <body> scrollbar is on the left, the width needs to be extended\n    // by the scrollbar amount so there isn't extra space on the right.\n    width += windowScrollbarX;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n\n  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n  // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n  function setLeftRTLScrollbarOffset() {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      setLeftRTLScrollbarOffset();\n    }\n  }\n  if (isFixed && !isOffsetParentAnElement && documentElement) {\n    setLeftRTLScrollbarOffset();\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        // It's possible that even though the ratio is reported as 1, the\n        // element is not actually fully within the IntersectionObserver's root\n        // area anymore. This can happen under performance constraints. This may\n        // be a bug in the browser's IntersectionObserver implementation. To\n        // work around this, we compare the element's bounding rect now with\n        // what it was at the time we created the IntersectionObserver. If they\n        // are not equal then the element moved, so we refresh.\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/floating-ui.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isRTL } from './index.js'\n\n/**\n * Breakpoints for responsive placement (matches SCSS $breakpoints)\n */\nexport const BREAKPOINTS = {\n  sm: 576,\n  md: 768,\n  lg: 1024,\n  xl: 1280,\n  '2xl': 1536\n}\n\n/**\n * Default placement with RTL support\n */\nexport const getDefaultPlacement = (fallback = 'bottom') => {\n  if (fallback.includes('-start') || fallback.includes('-end')) {\n    const [side, alignment] = fallback.split('-')\n    const flippedAlignment = alignment === 'start' ? 'end' : 'start'\n    return isRTL() ? `${side}-${flippedAlignment}` : fallback\n  }\n\n  return fallback\n}\n\n/**\n * Parse a placement string that may contain responsive prefixes\n * Example: \"bottom-start md:top-end lg:right\" returns { xs: 'bottom-start', md: 'top-end', lg: 'right' }\n *\n * @param {string} placementString - The placement string to parse\n * @param {string} defaultPlacement - The default placement to use for xs/base\n * @returns {object|null} - Object with breakpoint keys and placement values, or null if not responsive\n */\nexport const parseResponsivePlacement = (placementString, defaultPlacement = 'bottom') => {\n  // Check if placement contains responsive prefixes (e.g., \"bottom-start md:top-end\")\n  if (!placementString || !placementString.includes(':')) {\n    return null\n  }\n\n  // Parse the placement string into breakpoint-keyed object\n  const parts = placementString.split(/\\s+/)\n  const placements = { xs: defaultPlacement } // Default fallback\n\n  for (const part of parts) {\n    if (part.includes(':')) {\n      // Responsive placement like \"md:top-end\"\n      const [breakpoint, placement] = part.split(':')\n      if (BREAKPOINTS[breakpoint] !== undefined) {\n        placements[breakpoint] = placement\n      }\n    } else {\n      // Base placement (no prefix = xs/default)\n      placements.xs = part\n    }\n  }\n\n  return placements\n}\n\n/**\n * Get the active placement for the current viewport width\n *\n * @param {object} responsivePlacements - Object with breakpoint keys and placement values\n * @param {string} defaultPlacement - Fallback placement\n * @returns {string} - The active placement for current viewport\n */\nexport const getResponsivePlacement = (responsivePlacements, defaultPlacement = 'bottom') => {\n  if (!responsivePlacements) {\n    return defaultPlacement\n  }\n\n  // Get current viewport width\n  const viewportWidth = window.innerWidth\n\n  // Find the largest breakpoint that matches\n  let activePlacement = responsivePlacements.xs || defaultPlacement\n\n  // Check breakpoints in order (sm, md, lg, xl, 2xl)\n  const breakpointOrder = ['sm', 'md', 'lg', 'xl', '2xl']\n\n  for (const breakpoint of breakpointOrder) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    if (viewportWidth >= minWidth && responsivePlacements[breakpoint]) {\n      activePlacement = responsivePlacements[breakpoint]\n    }\n  }\n\n  return activePlacement\n}\n\n/**\n * Create media query listeners for responsive placement changes\n *\n * @param {Function} callback - Callback to run when breakpoint changes\n * @returns {Array} - Array of { mql, handler } objects for cleanup\n */\nexport const createBreakpointListeners = callback => {\n  const listeners = []\n\n  for (const breakpoint of Object.keys(BREAKPOINTS)) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    const mql = window.matchMedia(`(min-width: ${minWidth}px)`)\n\n    mql.addEventListener('change', callback)\n    listeners.push({ mql, handler: callback })\n  }\n\n  return listeners\n}\n\n/**\n * Clean up media query listeners\n *\n * @param {Array} listeners - Array of { mql, handler } objects\n */\nexport const disposeBreakpointListeners = listeners => {\n  for (const { mql, handler } of listeners) {\n    mql.removeEventListener('change', handler)\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\nconst RIGHT_MOUSE_BUTTON = 2\n\n// Hover intent delay (ms) - grace period before closing submenu\nconst SUBMENU_CLOSE_DELAY = 100\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_SUBMENU = '.dropdown-submenu'\nconst SELECTOR_SUBMENU_TOGGLE = '.dropdown-submenu > .dropdown-item'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-item:not(.disabled):not(:disabled)'\n\n// Default logical placement (uses start/end which get resolved to left/right based on RTL)\nconst DEFAULT_PLACEMENT = 'bottom-start'\nconst SUBMENU_PLACEMENT = 'end-start'\n\n// Resolve logical placement (start/end) to physical (left/right) based on RTL\nconst resolveLogicalPlacement = placement => {\n  if (isRTL()) {\n    // RTL: start → right, end → left\n    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left')\n  }\n\n  // LTR: start → left, end → right\n  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right')\n}\n\n// Helper for barycentric coordinate calculation (point in triangle check)\nconst triangleSign = (p1, p2, p3) =>\n  ((p1.x - p3.x) * (p2.y - p3.y)) - ((p2.x - p3.x) * (p1.y - p3.y))\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  container: false,\n  display: 'dynamic',\n  offset: [0, 2],\n  floatingConfig: null,\n  placement: DEFAULT_PLACEMENT,\n  reference: 'toggle',\n  strategy: 'absolute',\n  // Submenu options\n  submenuTrigger: 'both', // 'click', 'hover', or 'both'\n  submenuDelay: SUBMENU_CLOSE_DELAY\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  display: 'string',\n  offset: '(array|string|function)',\n  floatingConfig: '(null|object|function)',\n  placement: 'string',\n  reference: '(string|element|object)',\n  strategy: 'string',\n  submenuTrigger: 'string',\n  submenuDelay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s dropdowns require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    this._floatingCleanup = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n    this._parent = this._element.parentNode // dropdown wrapper\n    this._isSubmenu = this._parent.classList.contains('dropdown-submenu')\n    this._openSubmenus = new Map() // Map of submenu element -> cleanup function\n    this._submenuCloseTimeouts = new Map() // Map of submenu element -> timeout ID\n    this._hoverIntentData = null // For safe triangle calculation\n\n    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n    this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n\n    // Store original menu parent for container option\n    this._menuOriginalParent = this._menu?.parentNode\n\n    // Parse responsive placements on init\n    this._parseResponsivePlacements()\n\n    // Set up submenu event listeners\n    this._setupSubmenuListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    // Move menu to container if specified (to escape overflow clipping)\n    this._moveMenuToContainer()\n\n    this._createFloating()\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', 'true')\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    this._parent.classList.add(CLASS_NAME_SHOW)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n    this._disposeMediaQueryListeners()\n    this._closeAllSubmenus()\n    this._clearAllSubmenuTimeouts()\n    super.dispose()\n  }\n\n  update() {\n    if (this._floatingCleanup) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Private\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    // Close all open submenus first\n    this._closeAllSubmenus()\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._disposeFloating()\n\n    // Restore menu to original parent if it was moved\n    this._restoreMenuToOriginalParent()\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._parent.classList.remove(CLASS_NAME_SHOW)\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'placement')\n    Manipulator.removeDataAttribute(this._menu, 'display')\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      // Floating UI virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createFloating() {\n    if (this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'display', 'static')\n      return\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    // Initial position update\n    this._updateFloatingPosition(referenceElement)\n\n    // Set up auto-update for scroll/resize\n    this._floatingCleanup = autoUpdate(\n      referenceElement,\n      this._menu,\n      () => this._updateFloatingPosition(referenceElement)\n    )\n  }\n\n  async _updateFloatingPosition(referenceElement = null) {\n    if (!this._menu) {\n      return\n    }\n\n    if (!referenceElement) {\n      if (this._config.reference === 'parent') {\n        referenceElement = this._parent\n      } else if (isElement(this._config.reference)) {\n        referenceElement = getElement(this._config.reference)\n      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference\n      } else {\n        referenceElement = this._element\n      }\n    }\n\n    const placement = this._getPlacement()\n    const middleware = this._getFloatingMiddleware()\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    await this._applyFloatingPosition(\n      referenceElement,\n      this._menu,\n      floatingConfig.placement,\n      floatingConfig.middleware,\n      floatingConfig.strategy\n    )\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    // If we have responsive placements, find the appropriate one for current viewport\n    const placement = this._responsivePlacements ?\n      getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) :\n      this._config.placement\n\n    // Resolve logical placements (start/end) to physical (left/right) based on RTL\n    return resolveLogicalPlacement(placement)\n  }\n\n  _parseResponsivePlacements() {\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT)\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  _getOffset() {\n    const { offset: offsetConfig } = this._config\n\n    if (typeof offsetConfig === 'string') {\n      return offsetConfig.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offsetConfig === 'function') {\n      // Floating UI passes different args, adapt the interface for offset function callbacks\n      return ({ placement, rects }) => {\n        const result = offsetConfig({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offsetConfig\n  }\n\n  _getFloatingMiddleware() {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      // Offset middleware - handles distance from reference\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      // Flip middleware - handles fallback placements\n      flip({\n        fallbackPlacements: this._getFallbackPlacements()\n      }),\n      // Shift middleware - prevents overflow\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    return middleware\n  }\n\n  _getFallbackPlacements() {\n    // Get appropriate fallback placements based on current placement\n    // Fallbacks should preserve alignment (start/end) when possible\n    const placement = this._getPlacement()\n\n    // Handle all possible Floating UI placements\n    const fallbackMap = {\n      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\n      'bottom-start': ['top-start', 'bottom-end', 'top-end'],\n      'bottom-end': ['top-end', 'bottom-start', 'top-start'],\n      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],\n      'top-start': ['bottom-start', 'top-end', 'bottom-end'],\n      'top-end': ['bottom-end', 'top-start', 'bottom-start'],\n      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],\n      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],\n      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],\n      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],\n      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],\n      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']\n    }\n\n    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left']\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware,\n      strategy: this._config.strategy\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n  }\n\n  _getContainer() {\n    const { container } = this._config\n    if (container === false) {\n      return null\n    }\n\n    return container === true ? document.body : getElement(container)\n  }\n\n  _moveMenuToContainer() {\n    const container = this._getContainer()\n    if (!container || !this._menu) {\n      return\n    }\n\n    // Only move if not already in the container\n    if (this._menu.parentNode !== container) {\n      container.append(this._menu)\n    }\n  }\n\n  _restoreMenuToOriginalParent() {\n    if (!this._menuOriginalParent || !this._menu) {\n      return\n    }\n\n    // Only restore if menu was moved\n    if (this._menu.parentNode !== this._menuOriginalParent) {\n      this._menuOriginalParent.append(this._menu)\n    }\n  }\n\n  // Shared helper for positioning any floating element\n  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {\n    if (!floating.isConnected) {\n      return null\n    }\n\n    const { x, y, placement: finalPlacement } = await computePosition(\n      reference,\n      floating,\n      { placement, middleware, strategy }\n    )\n\n    if (!floating.isConnected) {\n      return null\n    }\n\n    Object.assign(floating.style, {\n      position: strategy,\n      left: `${x}px`,\n      top: `${y}px`,\n      margin: '0'\n    })\n\n    Manipulator.setDataAttribute(floating, 'placement', finalPlacement)\n    return finalPlacement\n  }\n\n  // -------------------------------------------------------------------------\n  // Submenu handling\n  // -------------------------------------------------------------------------\n\n  _setupSubmenuListeners() {\n    // Set up hover listeners for submenu triggers\n    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerEnter(event)\n      })\n\n      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {\n        this._onSubmenuLeave(event)\n      })\n\n      // Track mouse movement for safe triangle calculation\n      EventHandler.on(this._menu, 'mousemove', event => {\n        this._trackMousePosition(event)\n      })\n    }\n\n    // Set up click listener for submenu triggers\n    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerClick(event)\n      })\n    }\n  }\n\n  _onSubmenuTriggerEnter(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    // Cancel any pending close timeout for this submenu\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    // Close other open submenus at the same level\n    this._closeSiblingSubmenus(submenuWrapper)\n\n    // Open this submenu\n    this._openSubmenu(trigger, submenu, submenuWrapper)\n  }\n\n  _onSubmenuLeave(event) {\n    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu || !this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    // Check if we're moving toward the submenu (safe triangle)\n    if (this._isMovingTowardSubmenu(event, submenu)) {\n      return\n    }\n\n    // Schedule submenu close with delay\n    this._scheduleSubmenuClose(submenu, submenuWrapper)\n  }\n\n  _onSubmenuTriggerClick(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    // Toggle submenu\n    if (this._openSubmenus.has(submenu)) {\n      this._closeSubmenu(submenu, submenuWrapper)\n    } else {\n      this._closeSiblingSubmenus(submenuWrapper)\n      this._openSubmenu(trigger, submenu, submenuWrapper)\n    }\n  }\n\n  _openSubmenu(trigger, submenu, submenuWrapper) {\n    if (this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    // Set ARIA attributes\n    trigger.setAttribute('aria-expanded', 'true')\n    trigger.setAttribute('aria-haspopup', 'true')\n\n    // Position and show submenu\n    submenu.classList.add(CLASS_NAME_SHOW)\n    submenuWrapper.classList.add(CLASS_NAME_SHOW)\n\n    // Set up Floating UI positioning for submenu\n    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper)\n    this._openSubmenus.set(submenu, cleanup)\n\n    // Set up mouseenter on submenu to cancel close timeout\n    EventHandler.on(submenu, 'mouseenter', () => {\n      this._cancelSubmenuCloseTimeout(submenu)\n    })\n  }\n\n  _closeSubmenu(submenu, submenuWrapper) {\n    if (!this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    // Close any nested submenus first\n    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, submenu)\n    for (const nested of nestedSubmenus) {\n      const nestedWrapper = nested.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(nested, nestedWrapper)\n    }\n\n    // Get the trigger\n    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper)\n\n    // Clean up Floating UI\n    const cleanup = this._openSubmenus.get(submenu)\n    if (cleanup) {\n      cleanup()\n    }\n\n    this._openSubmenus.delete(submenu)\n\n    // Remove event listeners\n    EventHandler.off(submenu, 'mouseenter')\n\n    // Update ARIA and visibility\n    if (trigger) {\n      trigger.setAttribute('aria-expanded', 'false')\n    }\n\n    submenu.classList.remove(CLASS_NAME_SHOW)\n    submenuWrapper.classList.remove(CLASS_NAME_SHOW)\n\n    // Clear inline styles\n    submenu.style.position = ''\n    submenu.style.left = ''\n    submenu.style.top = ''\n    submenu.style.margin = ''\n  }\n\n  _closeAllSubmenus() {\n    for (const [submenu] of this._openSubmenus) {\n      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(submenu, submenuWrapper)\n    }\n  }\n\n  _closeSiblingSubmenus(currentSubmenuWrapper) {\n    // Find all sibling submenu wrappers and close their menus\n    const parent = currentSubmenuWrapper.parentNode\n    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, parent)\n\n    for (const siblingMenu of siblingSubmenus) {\n      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU)\n      if (siblingWrapper !== currentSubmenuWrapper) {\n        this._closeSubmenu(siblingMenu, siblingWrapper)\n      }\n    }\n  }\n\n  _createSubmenuFloating(trigger, submenu, submenuWrapper) {\n    const referenceElement = submenuWrapper\n    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT)\n    const middleware = [\n      offset({ mainAxis: 0, crossAxis: -4 }),\n      flip({\n        fallbackPlacements: [\n          resolveLogicalPlacement('start-start'),\n          resolveLogicalPlacement('end-end'),\n          resolveLogicalPlacement('start-end')\n        ]\n      }),\n      shift({ padding: 8 })\n    ]\n\n    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware)\n\n    updatePosition()\n    return autoUpdate(referenceElement, submenu, updatePosition)\n  }\n\n  _scheduleSubmenuClose(submenu, submenuWrapper) {\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    const timeoutId = setTimeout(() => {\n      this._closeSubmenu(submenu, submenuWrapper)\n      this._submenuCloseTimeouts.delete(submenu)\n    }, this._config.submenuDelay)\n\n    this._submenuCloseTimeouts.set(submenu, timeoutId)\n  }\n\n  _cancelSubmenuCloseTimeout(submenu) {\n    const timeoutId = this._submenuCloseTimeouts.get(submenu)\n    if (timeoutId) {\n      clearTimeout(timeoutId)\n      this._submenuCloseTimeouts.delete(submenu)\n    }\n  }\n\n  _clearAllSubmenuTimeouts() {\n    for (const timeoutId of this._submenuCloseTimeouts.values()) {\n      clearTimeout(timeoutId)\n    }\n\n    this._submenuCloseTimeouts.clear()\n  }\n\n  // -------------------------------------------------------------------------\n  // Hover intent / Safe triangle\n  // -------------------------------------------------------------------------\n\n  _trackMousePosition(event) {\n    this._hoverIntentData = {\n      x: event.clientX,\n      y: event.clientY,\n      timestamp: Date.now()\n    }\n  }\n\n  _isMovingTowardSubmenu(event, submenu) {\n    if (!this._hoverIntentData) {\n      return false\n    }\n\n    const submenuRect = submenu.getBoundingClientRect()\n    const currentPos = { x: event.clientX, y: event.clientY }\n    const lastPos = { x: this._hoverIntentData.x, y: this._hoverIntentData.y }\n\n    // Create a triangle from current position to submenu edges\n    // The triangle represents the \"safe zone\" for diagonal movement\n    const isRtl = isRTL()\n\n    // Determine which edge of the submenu to target based on direction\n    const targetX = isRtl ? submenuRect.right : submenuRect.left\n    const topCorner = { x: targetX, y: submenuRect.top }\n    const bottomCorner = { x: targetX, y: submenuRect.bottom }\n\n    // Check if cursor is moving toward the submenu\n    // by checking if the current position is within the safe triangle\n    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner)\n  }\n\n  _pointInTriangle(point, v1, v2, v3) {\n    // Barycentric coordinate method to check if point is inside triangle\n    const d1 = triangleSign(point, v1, v2)\n    const d2 = triangleSign(point, v2, v3)\n    const d3 = triangleSign(point, v3, v1)\n\n    const hasNeg = (d1 < 0) || (d2 < 0) || (d3 < 0)\n    const hasPos = (d1 > 0) || (d2 > 0) || (d3 > 0)\n\n    return !(hasNeg && hasPos)\n  }\n\n  // -------------------------------------------------------------------------\n  // Keyboard navigation\n  // -------------------------------------------------------------------------\n\n  _selectMenuItem({ key, target }) {\n    // Get items only from the current menu level (not nested submenus)\n    // If target is inside a menu, use that menu; otherwise use the main menu\n    const currentMenu = target.closest(SELECTOR_MENU) || this._menu\n    const items = SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n      .filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  _handleSubmenuKeydown(event) {\n    const { key, target } = event\n    const isRtl = isRTL()\n\n    // Determine the \"enter submenu\" and \"exit submenu\" keys based on RTL\n    const enterKey = isRtl ? ARROW_LEFT_KEY : ARROW_RIGHT_KEY\n    const exitKey = isRtl ? ARROW_RIGHT_KEY : ARROW_LEFT_KEY\n\n    // Check if target is a submenu trigger\n    const submenuWrapper = target.closest(SELECTOR_SUBMENU)\n    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    // Handle Enter/Space on submenu trigger\n    if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        // Focus first item in submenu\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    // Handle Right arrow (or Left in RTL) - enter submenu\n    if (key === enterKey && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        // Focus first item in submenu\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    // Handle Left arrow (or Right in RTL) - exit submenu\n    if (key === exitKey) {\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper) {\n        event.preventDefault()\n        event.stopPropagation()\n\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        this._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return true\n      }\n    }\n\n    // Handle Home/End keys\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const items = SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n        .filter(element => isVisible(element))\n\n      if (items.length) {\n        const targetItem = key === HOME_KEY ? items[0] : items[items.length - 1]\n        targetItem.focus()\n      }\n\n      return true\n    }\n\n    return false\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n    for (const toggle of openToggles) {\n      const context = Dropdown.getInstance(toggle)\n      if (!context || context._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(context._menu)\n      if (\n        composedPath.includes(context._element) ||\n        (context._config.autoClose === 'inside' && !isMenuTarget) ||\n        (context._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n      if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: context._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      context._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    // If not a relevant key => not a dropdown command\n    const isInput = /input|textarea/i.test(event.target.tagName)\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n    const isLeftOrRightEvent = [ARROW_LEFT_KEY, ARROW_RIGHT_KEY].includes(event.key)\n    const isHomeOrEndEvent = [HOME_KEY, END_KEY].includes(event.key)\n    const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key)\n\n    // Allow Enter/Space only on submenu triggers\n    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent &&\n        !(isEnterOrSpaceEvent && isSubmenuTrigger)) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    if (!getToggleButton) {\n      return\n    }\n\n    const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n    // Handle submenu navigation first\n    if ((isLeftOrRightEvent || isHomeOrEndEvent || (isEnterOrSpaceEvent && isSubmenuTrigger)) && instance._handleSubmenuKeydown(event)) {\n      return\n    }\n\n    // Handle Up/Down navigation\n    if (isUpOrDownEvent) {\n      event.preventDefault()\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    // Handle Escape\n    if (isEscapeEvent && instance._isShown()) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      // If in a submenu, close just that submenu\n      const currentMenu = event.target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        instance._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return\n      }\n\n      // Otherwise close the whole dropdown\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Dropdown.getOrCreateInstance(this).toggle()\n})\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap nav-overflow.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'navoverflow'\nconst DATA_KEY = 'bs.navoverflow'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_UPDATE = `update${EVENT_KEY}`\nconst EVENT_OVERFLOW = `overflow${EVENT_KEY}`\n\nconst CLASS_NAME_OVERFLOW = 'nav-overflow'\nconst CLASS_NAME_OVERFLOW_MENU = 'nav-overflow-menu'\nconst CLASS_NAME_HIDDEN = 'd-none'\n\nconst SELECTOR_NAV_ITEM = '.nav-item'\nconst SELECTOR_NAV_LINK = '.nav-link'\nconst SELECTOR_OVERFLOW_TOGGLE = '.nav-overflow-toggle'\nconst SELECTOR_OVERFLOW_MENU = '.nav-overflow-menu'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  moreText: 'More',\n  moreIcon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\"><path d=\"M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3\"/></svg>',\n  threshold: 0 // Minimum items to keep visible before showing overflow\n}\n\nconst DefaultType = {\n  moreText: 'string',\n  moreIcon: 'string',\n  threshold: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass NavOverflow extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._items = []\n    this._overflowItems = []\n    this._overflowMenu = null\n    this._overflowToggle = null\n    this._resizeObserver = null\n    this._isInitialized = false\n\n    this._init()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._calculateOverflow()\n    EventHandler.trigger(this._element, EVENT_UPDATE)\n  }\n\n  dispose() {\n    if (this._resizeObserver) {\n      this._resizeObserver.disconnect()\n    }\n\n    // Move items back to original positions\n    this._restoreItems()\n\n    // Remove overflow menu\n    if (this._overflowToggle && this._overflowToggle.parentElement) {\n      this._overflowToggle.parentElement.remove()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _init() {\n    // Add overflow class to nav\n    this._element.classList.add(CLASS_NAME_OVERFLOW)\n\n    // Get all nav items\n    this._items = [...SelectorEngine.find(SELECTOR_NAV_ITEM, this._element)]\n\n    // Store original order data\n    for (const [index, item] of this._items.entries()) {\n      item.dataset.bsNavOrder = index\n    }\n\n    // Create overflow dropdown if it doesn't exist\n    this._createOverflowMenu()\n\n    // Setup resize observer\n    this._setupResizeObserver()\n\n    // Initial calculation\n    this._calculateOverflow()\n\n    this._isInitialized = true\n  }\n\n  _createOverflowMenu() {\n    // Check if overflow menu already exists\n    this._overflowToggle = SelectorEngine.findOne(SELECTOR_OVERFLOW_TOGGLE, this._element)\n\n    if (this._overflowToggle) {\n      this._overflowMenu = SelectorEngine.findOne(SELECTOR_OVERFLOW_MENU, this._element)\n      return\n    }\n\n    // Create the overflow dropdown item\n    const overflowItem = document.createElement('li')\n    overflowItem.className = 'nav-item nav-overflow-item dropdown'\n    overflowItem.innerHTML = `\n      <button class=\"nav-link nav-overflow-toggle dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" data-bs-container=\"body\" data-bs-strategy=\"fixed\" aria-expanded=\"false\">\n        <span class=\"nav-overflow-icon\">${this._config.moreIcon}</span>\n        <span class=\"nav-overflow-text\">${this._config.moreText}</span>\n      </button>\n      <ul class=\"${CLASS_NAME_OVERFLOW_MENU} dropdown-menu dropdown-menu-end\"></ul>\n    `\n\n    this._element.append(overflowItem)\n    this._overflowToggle = overflowItem.querySelector(SELECTOR_OVERFLOW_TOGGLE)\n    this._overflowMenu = overflowItem.querySelector(SELECTOR_OVERFLOW_MENU)\n  }\n\n  _setupResizeObserver() {\n    if (typeof ResizeObserver === 'undefined') {\n      // Fallback for older browsers\n      EventHandler.on(window, 'resize', () => this._calculateOverflow())\n      return\n    }\n\n    this._resizeObserver = new ResizeObserver(() => {\n      this._calculateOverflow()\n    })\n\n    this._resizeObserver.observe(this._element)\n  }\n\n  _calculateOverflow() {\n    // First, restore all items to measure properly\n    this._restoreItems()\n\n    const navWidth = this._element.offsetWidth\n    const overflowItem = this._overflowToggle?.closest('.nav-item')\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      const itemWidth = item.offsetWidth\n      usedWidth += itemWidth\n\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      if (usedWidth > overflowThreshold) {\n        itemsToOverflow.push(item)\n      }\n    }\n\n    // Check if we need threshold minimum visible\n    const visibleCount = this._items.length - itemsToOverflow.length\n    if (visibleCount < this._config.threshold && this._items.length > this._config.threshold) {\n      // Add more items to overflow until we reach threshold (but not keep items)\n      const toMove = this._items.slice(this._config.threshold).filter(item => !item.classList.contains(CLASS_NAME_KEEP))\n      itemsToOverflow.length = 0\n      itemsToOverflow.push(...toMove)\n    }\n\n    // Move items to overflow menu\n    this._moveToOverflow(itemsToOverflow)\n\n    // Show/hide overflow toggle\n    if (overflowItem) {\n      if (itemsToOverflow.length > 0) {\n        overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n      } else {\n        overflowItem.classList.add(CLASS_NAME_HIDDEN)\n      }\n    }\n\n    // Trigger overflow event if items changed\n    if (itemsToOverflow.length > 0) {\n      EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n        overflowCount: itemsToOverflow.length,\n        visibleCount: this._items.length - itemsToOverflow.length\n      })\n    }\n  }\n\n  _moveToOverflow(items) {\n    if (!this._overflowMenu) {\n      return\n    }\n\n    // Clear existing overflow items\n    this._overflowMenu.innerHTML = ''\n    this._overflowItems = []\n\n    for (const item of items) {\n      // Clone the nav link as a dropdown item\n      const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item)\n      if (!link) {\n        continue\n      }\n\n      const dropdownItem = document.createElement('li')\n      const clonedLink = link.cloneNode(true)\n      clonedLink.className = 'dropdown-item'\n\n      // Preserve active state\n      if (link.classList.contains('active')) {\n        clonedLink.classList.add('active')\n      }\n\n      // Preserve disabled state\n      if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {\n        clonedLink.classList.add('disabled')\n      }\n\n      dropdownItem.append(clonedLink)\n      this._overflowMenu.append(dropdownItem)\n\n      // Hide original item\n      item.classList.add(CLASS_NAME_HIDDEN)\n      item.dataset.bsNavOverflow = 'true'\n\n      this._overflowItems.push(item)\n    }\n  }\n\n  _restoreItems() {\n    for (const item of this._items) {\n      item.classList.remove(CLASS_NAME_HIDDEN)\n      delete item.dataset.bsNavOverflow\n    }\n\n    if (this._overflowMenu) {\n      this._overflowMenu.innerHTML = ''\n    }\n\n    this._overflowItems = []\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const element of SelectorEngine.find('[data-bs-toggle=\"nav-overflow\"]')) {\n    NavOverflow.getOrCreateInstance(element)\n  }\n})\n\nexport default NavOverflow\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport {\n  execute, executeAfterTransition, getElement, reflow\n} from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n  className: 'modal-backdrop',\n  clickCallback: null,\n  isAnimated: false,\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n  className: 'string',\n  clickCallback: '(function|null)',\n  isAnimated: 'boolean',\n  isVisible: 'boolean',\n  rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    const element = this._getElement()\n    if (this._config.isAnimated) {\n      reflow(element)\n    }\n\n    element.classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  // Private\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = this._config.className\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _configAfterMerge(config) {\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    const element = this._getElement()\n    this._config.rootElement.append(element)\n\n    EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n  autofocus: true,\n  trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n  autofocus: 'boolean',\n  trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isActive = false\n    this._lastTabNavDirection = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  activate() {\n    if (this._isActive) {\n      return\n    }\n\n    if (this._config.autofocus) {\n      this._config.trapElement.focus()\n    }\n\n    EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n    this._isActive = true\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return\n    }\n\n    this._isActive = false\n    EventHandler.off(document, EVENT_KEY)\n  }\n\n  // Private\n  _handleFocusin(event) {\n    const { trapElement } = this._config\n\n    if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n      return\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement)\n\n    if (elements.length === 0) {\n      trapElement.focus()\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus()\n    } else {\n      elements[0].focus()\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n  }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  // Public\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n\n  // Private\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProperty, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProperty)\n      const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n      element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _saveInitialAttribute(element, styleProperty) {\n    const actualValue = element.style.getPropertyValue(styleProperty)\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProperty, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProperty) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProperty)\n      // We only want to remove the property if the value is `null`; the value can also be zero\n      if (value === null) {\n        element.style.removeProperty(styleProperty)\n        return\n      }\n\n      Manipulator.removeDataAttribute(element, styleProperty)\n      element.style.setProperty(styleProperty, value)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n      return\n    }\n\n    for (const sel of SelectorEngine.find(selector, this._element)) {\n      callBack(sel)\n    }\n  }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n  isDisabled,\n  isVisible\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n    }\n\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    const completeCallBack = () => {\n      if (!this._config.scroll || this._config.backdrop) {\n        this._focustrap.activate()\n      }\n\n      this._element.classList.add(CLASS_NAME_SHOW)\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._focustrap.deactivate()\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.add(CLASS_NAME_HIDING)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  // Private\n  _initializeBackDrop() {\n    const clickCallback = () => {\n      if (this._config.backdrop === 'static') {\n        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n        return\n      }\n\n      this.hide()\n    }\n\n    // 'static' option will be translated to true, and booleans will keep their value\n    const isVisible = Boolean(this._config.backdrop)\n\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: isVisible ? clickCallback : null\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (event.key !== ESCAPE_KEY) {\n        return\n      }\n\n      if (this._config.keyboard) {\n        this.hide()\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (alreadyOpen && alreadyOpen !== target) {\n    Offcanvas.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n    Offcanvas.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Offcanvas.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap strength.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'strength'\nconst DATA_KEY = 'bs.strength'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_STRENGTH_CHANGE = `strengthChange${EVENT_KEY}`\n\nconst SELECTOR_DATA_STRENGTH = '[data-bs-strength]'\n\nconst STRENGTH_LEVELS = ['weak', 'fair', 'good', 'strong']\n\nconst Default = {\n  input: null, // Selector or element for password input\n  minLength: 8,\n  messages: {\n    weak: 'Weak',\n    fair: 'Fair',\n    good: 'Good',\n    strong: 'Strong'\n  },\n  weights: {\n    minLength: 1,\n    extraLength: 1,\n    lowercase: 1,\n    uppercase: 1,\n    numbers: 1,\n    special: 1,\n    multipleSpecial: 1,\n    longPassword: 1\n  },\n  thresholds: [2, 4, 6], // weak ≤2, fair ≤4, good ≤6, strong >6\n  scorer: null // Custom scoring function (password) => number\n}\n\nconst DefaultType = {\n  input: '(string|element|null)',\n  minLength: 'number',\n  messages: 'object',\n  weights: 'object',\n  thresholds: 'array',\n  scorer: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Strength extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = this._getInput()\n    this._segments = SelectorEngine.find('.strength-segment', this._element)\n    this._textElement = SelectorEngine.findOne('.strength-text', this._element.parentElement)\n    this._currentStrength = null\n\n    if (this._input) {\n      this._addEventListeners()\n      // Check initial value\n      this._evaluate()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getStrength() {\n    return this._currentStrength\n  }\n\n  evaluate() {\n    this._evaluate()\n  }\n\n  // Private\n  _getInput() {\n    if (this._config.input) {\n      return typeof this._config.input === 'string' ?\n        SelectorEngine.findOne(this._config.input) :\n        this._config.input\n    }\n\n    // Look for preceding password input\n    const parent = this._element.parentElement\n    return SelectorEngine.findOne('input[type=\"password\"]', parent)\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, 'input', () => this._evaluate())\n    EventHandler.on(this._input, 'change', () => this._evaluate())\n  }\n\n  _evaluate() {\n    const password = this._input.value\n    const score = this._calculateScore(password)\n    const strength = this._scoreToStrength(score)\n\n    if (strength !== this._currentStrength) {\n      this._currentStrength = strength\n      this._updateUI(strength, score)\n\n      EventHandler.trigger(this._element, EVENT_STRENGTH_CHANGE, {\n        strength,\n        score,\n        password: password.length > 0 ? '***' : '' // Don't expose actual password\n      })\n    }\n  }\n\n  _calculateScore(password) {\n    if (!password) {\n      return 0\n    }\n\n    // Use custom scorer if provided\n    if (typeof this._config.scorer === 'function') {\n      return this._config.scorer(password)\n    }\n\n    const { weights } = this._config\n    let score = 0\n\n    // Length scoring\n    if (password.length >= this._config.minLength) {\n      score += weights.minLength\n    }\n\n    if (password.length >= this._config.minLength + 4) {\n      score += weights.extraLength\n    }\n\n    // Character variety\n    if (/[a-z]/.test(password)) {\n      score += weights.lowercase\n    }\n\n    if (/[A-Z]/.test(password)) {\n      score += weights.uppercase\n    }\n\n    if (/\\d/.test(password)) {\n      score += weights.numbers\n    }\n\n    // Special characters\n    if (/[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.special\n    }\n\n    // Extra points for more special chars or length\n    if (/[!@#$%^&*(),.?\":{}|<>].*[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.multipleSpecial\n    }\n\n    if (password.length >= 16) {\n      score += weights.longPassword\n    }\n\n    return score\n  }\n\n  _scoreToStrength(score) {\n    if (score === 0) {\n      return null\n    }\n\n    const [weak, fair, good] = this._config.thresholds\n\n    if (score <= weak) {\n      return 'weak'\n    }\n\n    if (score <= fair) {\n      return 'fair'\n    }\n\n    if (score <= good) {\n      return 'good'\n    }\n\n    return 'strong'\n  }\n\n  _updateUI(strength) {\n    // Update data attribute on element\n    if (strength) {\n      this._element.dataset.bsStrength = strength\n    } else {\n      delete this._element.dataset.bsStrength\n    }\n\n    // Update segmented meter\n    const strengthIndex = strength ? STRENGTH_LEVELS.indexOf(strength) : -1\n\n    for (const [index, segment] of this._segments.entries()) {\n      if (index <= strengthIndex) {\n        segment.classList.add('active')\n      } else {\n        segment.classList.remove('active')\n      }\n    }\n\n    // Update text feedback\n    if (this._textElement) {\n      if (strength && this._config.messages[strength]) {\n        this._textElement.textContent = this._config.messages[strength]\n        this._textElement.dataset.bsStrength = strength\n\n        // Also set the color via inheriting from parent or using CSS variable\n        const colorMap = {\n          weak: 'danger',\n          fair: 'warning',\n          good: 'info',\n          strong: 'success'\n        }\n        this._textElement.style.setProperty('--strength-color', `var(--${colorMap[strength]}-text)`)\n      } else {\n        this._textElement.textContent = ''\n        delete this._textElement.dataset.bsStrength\n      }\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_STRENGTH)) {\n    Strength.getOrCreateInstance(element)\n  }\n})\n\nexport default Strength\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap otp-input.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'otpInput'\nconst DATA_KEY = 'bs.otp-input'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\nconst Default = {\n  length: 6,\n  mask: false\n}\n\nconst DefaultType = {\n  length: 'number',\n  mask: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._inputs = SelectorEngine.find(SELECTOR_INPUT, this._element)\n    this._setupInputs()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getValue() {\n    return this._inputs.map(input => input.value).join('')\n  }\n\n  setValue(value) {\n    const chars = String(value).split('')\n    for (const [index, input] of this._inputs.entries()) {\n      input.value = chars[index] || ''\n    }\n\n    this._checkComplete()\n  }\n\n  clear() {\n    for (const input of this._inputs) {\n      input.value = ''\n    }\n\n    this._inputs[0]?.focus()\n  }\n\n  focus() {\n    // Focus first empty input, or last input if all filled\n    const emptyInput = this._inputs.find(input => !input.value)\n    if (emptyInput) {\n      emptyInput.focus()\n    } else {\n      this._inputs.at(-1)?.focus()\n    }\n  }\n\n  // Private\n  _setupInputs() {\n    for (const input of this._inputs) {\n      // Set attributes for proper OTP handling\n      input.setAttribute('maxlength', '1')\n      input.setAttribute('inputmode', 'numeric')\n      input.setAttribute('pattern', '\\\\d*')\n\n      // First input gets autocomplete for browser OTP autofill\n      if (input === this._inputs[0]) {\n        input.setAttribute('autocomplete', 'one-time-code')\n      } else {\n        input.setAttribute('autocomplete', 'off')\n      }\n\n      // Mask input if configured\n      if (this._config.mask) {\n        input.setAttribute('type', 'password')\n      }\n    }\n  }\n\n  _addEventListeners() {\n    for (const [index, input] of this._inputs.entries()) {\n      EventHandler.on(input, 'input', event => this._handleInput(event, index))\n      EventHandler.on(input, 'keydown', event => this._handleKeydown(event, index))\n      EventHandler.on(input, 'paste', event => this._handlePaste(event))\n      EventHandler.on(input, 'focus', event => this._handleFocus(event))\n    }\n  }\n\n  _handleInput(event, index) {\n    const input = event.target\n\n    // Only allow digits\n    if (!/^\\d*$/.test(input.value)) {\n      input.value = input.value.replace(/\\D/g, '')\n    }\n\n    const { value } = input\n\n    // Handle multi-character input (some browsers/autofill)\n    if (value.length > 1) {\n      // Distribute characters across inputs\n      const chars = value.split('')\n      input.value = chars[0] || ''\n\n      for (let i = 1; i < chars.length && index + i < this._inputs.length; i++) {\n        this._inputs[index + i].value = chars[i]\n      }\n\n      // Focus appropriate input\n      const nextIndex = Math.min(index + chars.length, this._inputs.length - 1)\n      this._inputs[nextIndex].focus()\n    } else if (value && index < this._inputs.length - 1) {\n      // Auto-advance to next input\n      this._inputs[index + 1].focus()\n    }\n\n    EventHandler.trigger(this._element, EVENT_INPUT, {\n      value: this.getValue(),\n      index\n    })\n\n    this._checkComplete()\n  }\n\n  _handleKeydown(event, index) {\n    const { key } = event\n\n    switch (key) {\n      case 'Backspace': {\n        if (!this._inputs[index].value && index > 0) {\n          // Move to previous input and clear it\n          event.preventDefault()\n          this._inputs[index - 1].value = ''\n          this._inputs[index - 1].focus()\n        }\n\n        break\n      }\n\n      case 'Delete': {\n        // Clear current and shift remaining values left\n        event.preventDefault()\n        for (let i = index; i < this._inputs.length - 1; i++) {\n          this._inputs[i].value = this._inputs[i + 1].value\n        }\n\n        this._inputs.at(-1).value = ''\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (index > 0) {\n          event.preventDefault()\n          this._inputs[index - 1].focus()\n        }\n\n        break\n      }\n\n      case 'ArrowRight': {\n        if (index < this._inputs.length - 1) {\n          event.preventDefault()\n          this._inputs[index + 1].focus()\n        }\n\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handlePaste(event) {\n    event.preventDefault()\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    const digits = pastedData.replace(/\\D/g, '').slice(0, this._inputs.length)\n\n    if (digits) {\n      this.setValue(digits)\n\n      // Focus last filled input or last input\n      const lastIndex = Math.min(digits.length, this._inputs.length) - 1\n      this._inputs[lastIndex].focus()\n    }\n  }\n\n  _handleFocus(event) {\n    // Select the content on focus for easy replacement\n    event.target.select()\n  }\n\n  _checkComplete() {\n    const value = this.getValue()\n    const isComplete = value.length === this._inputs.length &&\n      this._inputs.every(input => input.value !== '')\n\n    if (isComplete) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  dd: [],\n  div: [],\n  dl: [],\n  dt: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n      continue\n    }\n\n    const attributeList = [].concat(...element.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [undefined, this])\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  arrow,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport {\n  execute, findShadowRoot, getElement, getUID, isRTL, noop\n} from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tooltip\"]'\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 6],\n  placement: 'top',\n  floatingConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  floatingConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._floatingCleanup = null\n    this._templateFactory = null\n    this._newContent = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n\n    // Protected\n    this.tip = null\n\n    this._parseResponsivePlacements()\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposeFloating()\n    this._disposeMediaQueryListeners()\n    super.dispose()\n  }\n\n  async show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    this._disposeFloating()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    const { container } = this._config\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    await this._createFloating(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposeFloating()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._floatingCleanup && this.tip) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle())\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposeFloating()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement(tip) {\n    // If we have responsive placements, get the one for current viewport\n    if (this._responsivePlacements) {\n      const placement = getResponsivePlacement(this._responsivePlacements, 'top')\n      return AttachmentMap[placement.toUpperCase()] || placement\n    }\n\n    // Execute placement (can be a function)\n    const placement = execute(this._config.placement, [this, tip, this._element])\n    return AttachmentMap[placement.toUpperCase()] || placement\n  }\n\n  _parseResponsivePlacements() {\n    // Only parse if placement is a string (not a function)\n    if (typeof this._config.placement !== 'string') {\n      this._responsivePlacements = null\n      return\n    }\n\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, 'top')\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  async _createFloating(tip) {\n    const placement = this._getPlacement(tip)\n    const arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n\n    // Initial position update\n    await this._updateFloatingPosition(tip, placement, arrowElement)\n\n    // Set up auto-update for scroll/resize\n    this._floatingCleanup = autoUpdate(\n      this._element,\n      tip,\n      () => this._updateFloatingPosition(tip, null, arrowElement)\n    )\n  }\n\n  async _updateFloatingPosition(tip = this.tip, placement = null, arrowElement = null) {\n    if (!tip) {\n      return\n    }\n\n    if (!placement) {\n      placement = this._getPlacement(tip)\n    }\n\n    if (!arrowElement) {\n      arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n    }\n\n    const middleware = this._getFloatingMiddleware(arrowElement)\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    const { x, y, placement: finalPlacement, middlewareData } = await computePosition(\n      this._element,\n      tip,\n      floatingConfig\n    )\n\n    // Apply position to tooltip\n    Object.assign(tip.style, {\n      position: 'absolute',\n      left: `${x}px`,\n      top: `${y}px`\n    })\n\n    // Ensure arrow is absolutely positioned within tooltip\n    if (arrowElement) {\n      arrowElement.style.position = 'absolute'\n    }\n\n    // Set placement attribute for CSS arrow styling\n    Manipulator.setDataAttribute(tip, 'placement', finalPlacement)\n\n    // Position arrow along the edge (center it) if present\n    // The CSS handles which edge to place it on via data-bs-placement\n    if (arrowElement && middlewareData.arrow) {\n      const { x: arrowX, y: arrowY } = middlewareData.arrow\n      const isVertical = finalPlacement.startsWith('top') || finalPlacement.startsWith('bottom')\n\n      // Only set the cross-axis position (centering along the edge)\n      // The main-axis position (which edge) is handled by CSS\n      Object.assign(arrowElement.style, {\n        left: isVertical && arrowX !== null ? `${arrowX}px` : '',\n        top: !isVertical && arrowY !== null ? `${arrowY}px` : '',\n        // Reset the other axis to let CSS handle it\n        right: '',\n        bottom: ''\n      })\n    }\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      // Floating UI passes different args, adapt the interface for offset function callbacks\n      return ({ placement, rects }) => {\n        const result = offset({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this._element, this._element])\n  }\n\n  _getFloatingMiddleware(arrowElement) {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      // Offset middleware - handles distance from reference\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      // Flip middleware - handles fallback placements\n      flip({\n        fallbackPlacements: this._config.fallbackPlacements\n      }),\n      // Shift middleware - prevents overflow\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    // Arrow middleware - positions the arrow element\n    if (arrowElement) {\n      middleware.push(arrow({ element: arrowElement }))\n    }\n\n    return middleware\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK])\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const [key, value] of Object.entries(this._config)) {\n      if (this.constructor.Default[key] !== value) {\n        config[key] = value\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n}\n\n/**\n * Data API implementation - auto-initialize tooltips\n */\n\nconst initTooltip = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Get or create instance and trigger the appropriate action\n  const tooltip = Tooltip.getOrCreateInstance(target)\n\n  // For focus events, manually trigger enter to show\n  if (event.type === 'focusin') {\n    tooltip._activeTrigger.focus = true\n    tooltip._enter()\n  }\n}\n\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initTooltip)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initTooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"popover\"]'\n\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_MOUSEENTER = 'mouseenter'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return this._getTitle() || this._getContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n}\n\n/**\n * Data API implementation - auto-initialize popovers\n */\n\nconst initPopover = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Prevent default for click events to avoid navigation\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Get or create instance\n  const popover = Popover.getOrCreateInstance(target)\n\n  // Trigger the appropriate action based on event type\n  if (event.type === 'click') {\n    popover.toggle()\n  } else if (event.type === 'focusin') {\n    popover._activeTrigger.focus = true\n    popover._enter()\n  }\n}\n\n// Support click (default), hover, and focus triggers\nEventHandler.on(document, EVENT_CLICK, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initPopover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n  rootMargin: '0px 0px -25%',\n  smoothScroll: false,\n  target: null,\n  threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n  rootMargin: 'string',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n    this._activeTarget = null\n    this._observer = null\n    this._previousScrollData = {\n      visibleEntryTop: 0,\n      parentScrollTop: 0\n    }\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    } else {\n      this._observer = this._getNewObserver()\n    }\n\n    for (const section of this._observableSections.values()) {\n      this._observer.observe(section)\n    }\n  }\n\n  dispose() {\n    this._observer.disconnect()\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.target = getElement(config.target) || document.body\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // unregister any previous listeners\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const observableSection = this._observableSections.get(event.target.hash)\n      if (observableSection) {\n        event.preventDefault()\n        const root = this._rootElement || window\n        const height = observableSection.offsetTop - this._element.offsetTop\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'smooth' })\n          return\n        }\n\n        // Chrome 60 doesn't support `scrollTo`\n        root.scrollTop = height\n      }\n    })\n  }\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin\n    }\n\n    return new IntersectionObserver(entries => this._observerCallback(entries), options)\n  }\n\n  // The logic of selection\n  _observerCallback(entries) {\n    const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n    const activate = entry => {\n      this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n      this._process(targetElement(entry))\n    }\n\n    const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n    const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n    this._previousScrollData.parentScrollTop = parentScrollTop\n\n    for (const entry of entries) {\n      if (!entry.isIntersecting) {\n        this._activeTarget = null\n        this._clearActiveClass(targetElement(entry))\n\n        continue\n      }\n\n      const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n      // if we are scrolling down, pick the bigger offsetTop\n      if (userScrollsDown && entryIsLowerThanPrevious) {\n        activate(entry)\n        // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n        if (!parentScrollTop) {\n          return\n        }\n\n        continue\n      }\n\n      // if we are scrolling up, pick the smallest offsetTop\n      if (!userScrollsDown && !entryIsLowerThanPrevious) {\n        activate(entry)\n      }\n    }\n  }\n\n  _initializeTargetsAndObservables() {\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n    for (const anchor of targetLinks) {\n      // ensure that the anchor has an id and is not disabled\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element)\n\n      // ensure that the observableSection exists & is visible\n      if (isVisible(observableSection)) {\n        this._targetLinks.set(decodeURI(anchor.hash), anchor)\n        this._observableSections.set(anchor.hash, observableSection)\n      }\n    }\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate dropdown parents\n    if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n        .classList.add(CLASS_NAME_ACTIVE)\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_TAB_PANEL}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleDropDown(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleDropDown(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n\n    const children = this._getChildren().filter(element => !isDisabled(element))\n    let nextActiveElement\n\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n    }\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n    }\n  }\n\n  _toggleDropDown(element, open) {\n    const outerElem = this._getOuterElement(element)\n    if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n      return\n    }\n\n    const toggle = (selector, className) => {\n      const element = SelectorEngine.findOne(selector, outerElem)\n      if (element) {\n        element.classList.toggle(className, open)\n      }\n    }\n\n    toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n    toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n    outerElem.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toggler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { eventActionOnPlugin } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toggler'\nconst DATA_KEY = 'bs.toggler'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_TOGGLE = `toggle${EVENT_KEY}`\nconst EVENT_TOGGLED = `toggled${EVENT_KEY}`\nconst EVENT_CLICK = 'click'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"toggler\"]'\n\nconst DefaultType = {\n  attribute: 'string',\n  value: '(string|number|boolean)'\n}\n\nconst Default = {\n  attribute: 'class',\n  value: null\n}\n\n/**\n * Class definition\n */\n\nclass Toggler extends BaseComponent {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    const toggleEvent = EventHandler.trigger(this._element, EVENT_TOGGLE)\n\n    if (toggleEvent.defaultPrevented) {\n      return\n    }\n\n    this._execute()\n\n    EventHandler.trigger(this._element, EVENT_TOGGLED)\n  }\n\n  // Private\n  _execute() {\n    const { attribute, value } = this._config\n\n    if (attribute === 'id') {\n      return // You have to be kidding\n    }\n\n    if (attribute === 'class') {\n      this._element.classList.toggle(value)\n      return\n    }\n\n    // Compare as strings since getAttribute() always returns a string\n    if (this._element.getAttribute(attribute) === String(value)) {\n      this._element.removeAttribute(attribute)\n      return\n    }\n\n    this._element.setAttribute(attribute, value)\n  }\n}\n\n/**\n * Data API implementation\n */\n\neventActionOnPlugin(Toggler, EVENT_CLICK, SELECTOR_DATA_TOGGLE, 'toggle')\n\nexport default Toggler\n"],"mappings":"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","ignoreList":[]}
\ No newline at end of file
+{"version":3,"names":["elementMap","Map","Data","set","element","key","instance","has","instanceMap","get","size","console","error","Array","from","keys","remove","delete","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","bootstrapHandler","fn","handler","event","hydrateObj","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","selector","domElements","querySelectorAll","target","this","parentNode","domElement","findHandler","events","callable","delegationSelector","Object","values","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","replace","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","length","trigger","args","evt","Event","bubbles","cancelable","dispatchEvent","obj","meta","value","defineProperty","configurable","normalizeData","Number","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","getAttribute","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","window","CSS","escape","match","id","toType","object","prototype","getUID","prefix","Math","floor","random","document","getElementById","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","isElement","nodeType","getElement","querySelector","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","isDisabled","Node","ELEMENT_NODE","classList","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","isRTL","dir","execute","possibleCallback","defaultValue","executeAfterTransition","callback","transitionElement","waitForTransition","emulatedDuration","called","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","Config","Default","DefaultType","NAME","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","VERSION","BaseComponent","super","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","eventName","name","getSelector","hrefAttribute","trim","map","sel","join","SelectorEngine","concat","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","preventDefault","eventActionOnPlugin","Plugin","onEvent","stringSelector","eventAction","data","instances","targets","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","defaultPrevented","_destroyElement","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","button","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM_IMG","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","KEY_TO_DIRECTION","ARROW_LEFT_KEY$2","ARROW_RIGHT_KEY$2","interval","keyboard","pause","ride","touch","wrap","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","visibilityState","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","endCallBack","clearTimeout","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","_orderToDirection","isCycling","directionalClassName","orderClassName","completeCallBack","_isAnimated","clearInterval","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","style","scrollSize","complete","getBoundingClientRect","selected","triggerArray","isOpen","round","createCoords","v","x","y","oppositeSideMap","left","right","bottom","top","oppositeAlignmentMap","start","end","clamp","evaluate","param","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","yAxisSides","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","mainAlignmentSide","reference","floating","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","lrPlacement","rlPlacement","tbPlacement","btPlacement","getSideList","side","isStart","getOppositeAxisPlacements","flipAlignment","expandPaddingObject","padding","getPaddingObject","rectToClientRect","rect","width","height","computeCoordsFromPlacement","_ref","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","computePosition","async","strategy","middleware","platform","validMiddleware","getElementRects","statefulPlacement","middlewareData","resetCount","i","nextX","nextY","reset","initialPlacement","elements","detectOverflow","state","options","_await$platform$isEle","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","getClippingRect","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","arrow","arrowDimensions","getDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","offset","shouldAddOffset","alignmentOffset","centerOffset","flip","_middlewareData$arrow","_middlewareData$flip","mainAxis","checkMainAxis","crossAxis","checkCrossAxis","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","initialSideAxis","isBasePlacement","hasFallbackAxisSideDirection","placements","overflow","overflows","overflowsData","sides","every","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","d","resetPlacement","sort","a","b","_overflowsData$filter2","currentSideAxis","reduce","acc","originSides","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","enabled","hasWindow","getNodeName","node","isNode","nodeName","getWindow","_node$ownerDocument","ownerDocument","defaultView","isHTMLElement","HTMLElement","isShadowRoot","invalidOverflowDisplayValues","isOverflowElement","overflowX","overflowY","display","tableElements","isTableElement","topLayerSelectors","isTopLayer","some","_e","transformProperties","willChangeValues","containValues","isContainingBlock","elementOrCss","webkit","isWebKit","css","containerType","backdropFilter","willChange","contain","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","supports","lastTraversableNodeNames","getNodeScroll","scrollLeft","scrollTop","scrollX","scrollY","result","assignedSlot","host","getNearestOverflowAncestor","body","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","visualViewport","getPrototypeOf","getCssDimensions","getComputedStyle$1","hasOffset","offsetWidth","shouldFallback","$","unwrapElement","isFinite","noOffsets","getVisualOffsets","offsetLeft","offsetTop","shouldAddVisualOffsets","isFixed","floatingOffsetParent","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","getWindowScrollBarX","leftScroll","getHTMLOffset","scroll","htmlRect","topLayer","offsets","isOffsetParentAnElement","offsetRect","htmlOffset","getDocumentRect","html","scrollWidth","clientWidth","scrollHeight","clientHeight","SCROLLBAR_MAX","getViewportRect","visualViewportBased","windowScrollbarX","doc","bodyStyles","bodyMarginInline","compatMode","marginLeft","marginRight","clippingStableScrollbarWidth","absoluteOrFixed","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","position","getClippingElementAncestors","cache","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","clippingAncestors","_c","firstClippingAncestor","clippingRect","accRect","getRectRelativeToOffsetParent","setLeftRTLScrollbarOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","svgOffsetParent","getOffsetParentFn","getDimensionsFn","floatingDimensions","rectsAreEqual","observeMove","onMove","timeoutId","io","cleanup","_io","disconnect","refresh","skip","threshold","elementRectForRootMargin","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","IntersectionObserver","observe","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","animationFrame","referenceEl","ancestors","forEach","passive","cleanupIo","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","requestAnimationFrame","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset$1","shift$1","flip$1","arrow$1","mergedOptions","platformWithCache","computePosition$1","BREAKPOINTS","sm","md","lg","xl","parseResponsivePlacement","placementString","defaultPlacement","parts","xs","part","breakpoint","undefined","getResponsivePlacement","responsivePlacements","viewportWidth","innerWidth","activePlacement","breakpointOrder","createBreakpointListeners","listeners","minWidth","mql","matchMedia","disposeBreakpointListeners","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","ENTER_KEY","SPACE_KEY","RIGHT_MOUSE_BUTTON","SUBMENU_CLOSE_DELAY","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_MENU","SELECTOR_SUBMENU","SELECTOR_SUBMENU_TOGGLE","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","DEFAULT_PLACEMENT","SUBMENU_PLACEMENT","resolveLogicalPlacement","triangleSign","p1","p2","p3","autoClose","container","floatingConfig","menu","submenuTrigger","submenuDelay","Menu","static","_floatingCleanup","_mediaQueryListeners","_responsivePlacements","_parent","_isSubmenu","_openSubmenus","_submenuCloseTimeouts","_hoverIntentData","_menu","_findMenu","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","_moveMenuToContainer","_createFloating","focus","focusVisible","_openInstances","_completeHide","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","_updateFloatingPosition","referenceElement","_getPlacement","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","_setupMediaQueryListeners","_getOffset","offsetConfig","offsetValue","_getFallbackPlacements","defaultConfig","_getContainer","append","isConnected","finalPlacement","assign","margin","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","_isMovingTowardSubmenu","_scheduleSubmenuClose","stopPropagation","_closeSubmenu","_createSubmenuFloating","nestedSubmenus","nested","nestedWrapper","currentSubmenuWrapper","siblingSubmenus","siblingMenu","siblingWrapper","updatePosition","clear","clientY","timestamp","Date","now","submenuRect","currentPos","lastPos","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","_selectMenuItem","currentMenu","_handleSubmenuKeydown","isRtl","enterKey","exitKey","isSubmenuTrigger","firstItem","parentSubmenuWrapper","parentTrigger","clearMenus","composedPath","isMenuTarget","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","isLeftOrRightEvent","isHomeOrEndEvent","isEnterOrSpaceEvent","getToggleButton","EVENT_CHANGE","CLASS_NAME_SELECTED","CLASS_NAME_PLACEHOLDER","SELECTOR_MENU_ITEM","SELECTOR_VALUE","SELECTOR_SEARCH_INPUT","SELECTOR_NO_RESULTS","multiple","placeholder","search","searchNormalize","Combobox","_toggle","_valueDisplay","_searchInput","_noResults","_hiddenInput","_menuInstance","_createHiddenInput","_createMenuInstance","_syncInitialSelection","_filterItems","createElement","insertBefore","_getSelectedItems","_updateToggleText","_updateHiddenInput","_showPlaceholder","item","_selectItem","_handleToggleKeydown","_handleMenuKeydown","_getVisibleItems","previouslySelected","bsValue","selectedItems","textContent","label","query","normalizedQuery","_normalizeText","visibleCount","text","normalize","jQueryInterface","each","__defProp","__defProps","defineProperties","__getOwnPropDescs","getOwnPropertyDescriptors","__getOwnPropSymbols","getOwnPropertySymbols","__hasOwnProp","hasOwnProperty","__propIsEnum","propertyIsEnumerable","__defNormalProp","e","t","n","enumerable","writable","__spreadValues","__spreadProps","__publicField","errorMessages","notFoundSelector","notInit","notLocale","incorrectTime","incorrectMonthsCount","setContext","context","destroy","o","l","isInit","inputMode","mainElement","parentElement","removeChild","inputElement","replaceWith","originalElement","onDestroy","skipOpenOnFocus","WeakSet","shouldSkipOpenOnFocus","setSkipOpenOnFocus","clearSkipOpenOnFocus","PREV_TABINDEX_ATTR","isFocusable","tabIndex","storePrevTabIndex","restorePrevTabIndex","disableTabbing","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","FILTER_ACCEPT","FILTER_SKIP","nextNode","restoreTabbing","isShowInInputMode","currentType","vcCalendarHidden","cleanupHandlers","openOnFocus","onHide","getOffset","getViewportDimensions","vw","vh","innerHeight","getWindowScrollPosition","calculateAvailableSpace","s","r","getAvailablePosition","canShow","parentPositions","c","u","m","p","h","condition","handleDay","modifier","className","styles","datePopup","vcDatePopup","innerHTML","sanitizerHTML","ariaExpanded","ariaLabel","appendChild","createDatePopup","popups","getDate","getDateString","getFullYear","String","getMonth","padStart","parseDates","toISOString","substring","getTime","setDate","updateAttribute","setDateModifier","displayDateMin","displayDateMax","disableDates","selectionMonthsMode","selectionYearsMode","disableToday","dateToday","selectedWeekends","selectedHolidays","selectedDates","selectionDatesMode","enableEdgeDatesOnly","getLocaleString","toLocaleString","getWeekNumber","getDay","ceil","year","week","addWeekNumberForDate","firstWeekday","vcDateWeekNumber","setDaysAsDisabled","disableWeekdays","disableAllDates","enableDates","createDate","locale","date","vcDate","vcDateMonth","vcDateWeekDay","role","displayDatesOutside","dateBtn","dateStyle","timeZone","vcDateBtn","innerText","enableWeekNumbers","addDate","onCreateDateEls","createDatesFromCurrentMonth","createDatesFromNextMonth","createDatesFromPrevMonth","createWeekNumbers","weekNumbersTitle","vcWeekNumbers","weekNumbersContent","weekNumber","cloneNode","vcWeekNumber","vcWeekYear","createDates","selectedYear","selectedMonth","vcDatesDisabled","setMonth","datesRow","g","layoutDefault","header","labels","navigation","headerContent","wrapper","content","layoutMonths","layoutMultiple","controls","grid","column","layoutYears","ArrowNext","arrowNext","ArrowPrev","arrowPrev","ControlTime","selectionTimeMode","time","selectingTime","DateRangeTooltip","onCreateDateRangeTooltip","dateRangeTooltip","Dates","dates","Month","month","Months","months","Week","WeekNumbers","weekNumbers","Year","Years","years","components","getComponent","parseLayout","parseMultipleLayout","displayMonthsCount","fill","createLayouts","default","layouts","calendar","vc","vcType","application","vcGrid","vcColumn","setVisibilityArrows","visibility","handleDefaultType","monthsToSwitch","dateMin","dateMax","setFullYear","handleYearType","displayYear","visibilityArrows","visibilityHandler","long","visibilityTitle","setYearModifier","aria","selectedProperty","getColumnID","currentValue","columnID","findIndex","createMonthEl","monthsMonth","vcMonthsMonth","ariaDisabled","createMonths","vcYear","vcMonth","short","onCreateMonthEls","TimeInput","TimeRange","handleActions","hour","minute","selectedHours","selectedMinutes","selectedKeeping","onChangeTime","onChangeToInput","transformTime24","AM","PM","handleClickKeepingTime","btnKeeping","transformTime12","updateInputAndRange","updateKeepingTime$1","handleInput$1","updateInputAndTime","updateKeepingTime","handleRange","handleMouseOver","handleMouseOut","handleTime","timeMaxHour","timeMinHour","timeMaxMinute","timeMinMinute","createTime","timeControls","timeContent","timeHour","timeMinute","timeKeeping","timeRanges","timeRange","timeStepHour","timeStepMinute","createWeek","weekdays","titleShort","titleLong","isWeekend","onClickWeekDay","weekDay","vcWeekDay","vcWeekDayOff","createYearEl","yearsYear","vcYearsYear","createYears","onCreateYearEls","trackChangesHTMLElement","MutationObserver","attributeName","haveListener","check","setTheme","vcTheme","trackChangesThemeInSystemSettings","selectedTheme","addListener","detectTheme","themeAttrDetect","handleTheme","media","capitalizeFirstLetter","getLocaleWeekday","weekday","getLocaleMonth","getLocale","create","handleArrowKeys","localName","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","handleMonth","handleClickArrow","vcArrow","onClickArrow","resolveToggle","canToggleSelection","enableDateToggle","handleSelectDate","createDateRangeTooltip","vcDateRangeTooltip","self","lastDateEl","isHovering","rangeMin","rangeMax","tooltipEl","addHoverEffect","vcDateHover","removeHoverEffect","handleHoverDatesEvent","handleHoverSelectedDatesRangeEvent","optimizedHoverHandler","optimizedHandleHoverDatesEvent","optimizedHandleHoverSelectedDatesRangeEvent","handleCancelSelectionDates","handleMouseLeave","updateDisabledDates","disableDatesPast","handleSelectDateRange","disableDatesGaps","updateDateModifier","handleClickDate","single","onClickDate","enableMonthChangeOnDayClick","current","typeClick","getValue","handleMultipleYearSelection","handleMultipleMonthSelection","handleItemClick","onClickYear","onClickMonth","handleClickType","onClickTitle","handleClickMonthOrYear","handleClickWeekNumber","onClickWeekNumber","handleClickWeekDay","handleClick","initMonthsCount","getLocalDate","getTimezoneOffset","resolveDate","initRange","displayDisabledDates","initSelectedDates","displayClosestValidDate","setInitialContext","initSelectedMonthYear","enableJumpToSelectedDate","initTime","selectedTime","initAllVariables","createToInput","vcInput","onInit","canOpenOnFocus","handleInput","inputModeInit","shiftKey","init","onUpdate","replaceProperties","isArray","findBestPickerPosition","setPosition","vcPosition","click","positionToInput","capture","onShow","inputHour","inputMinute","rangeHour","rangeMinute","OptionsCalendar","_Calendar","memoizedElements","queryAndMemoize","Calendar","EVENT_FOCUSIN_DATA_API","HIDE_DELAY","datepickerTheme","dateFormat","displayElement","inline","positionElement","selectionMode","vcpOptions","Datepicker","_calendar","_initCalendar","_themeObserver","getSelectedDates","setSelectedDates","_isInput","_isInline","_boundInput","_positionElement","_resolvePositionElement","_displayElement","_resolveDisplayElement","calendarOptions","_buildCalendarOptions","_setupThemeObserver","_parseInputValue","_updateDisplayWithSelectedDates","formattedDate","_formatDateForInput","_getThemeAncestor","_getEffectiveTheme","_syncThemeAttribute","theme","attributeFilter","vcpTheme","_handleDateClick","firstDate","_parseDate","_maybeHideAfterSelection","dateStr","day","_formatDate","Intl","DateTimeFormat","format","toLocaleDateString","separator","isNaN","formatted","bsInline","EVENT_HIDE_PREVENTED","EVENT_CANCEL","CLASS_NAME_STATIC","CLASS_NAME_OPEN","CLASS_NAME_NONMODAL","SELECTOR_OPEN_MODAL_DIALOG","backdrop","modal","Dialog","open","showModal","_hideDialog","handleUpdate","_triggerBackdropTransition","showEvent","currentDialog","currentInstance","EVENT_UPDATE","EVENT_OVERFLOW","CLASS_NAME_OVERFLOW","CLASS_NAME_OVERFLOW_MENU","CLASS_NAME_HIDDEN","SELECTOR_NAV_ITEM","SELECTOR_NAV_LINK","SELECTOR_OVERFLOW_TOGGLE","SELECTOR_OVERFLOW_MENU","CLASS_NAME_KEEP","moreText","moreIcon","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_isInitialized","_init","_calculateOverflow","_restoreItems","bsNavOrder","_createOverflowMenu","_setupResizeObserver","overflowItem","navWidth","usedWidth","itemsToOverflow","overflowThreshold","toMove","_moveToOverflow","overflowCount","link","clonedLink","bsNavOverflow","EVENT_MOUSEDOWN","clickCallback","rootElement","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","autofocus","trapElement","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","_disableOverFlow","_setElementAttributes","calculatedValue","_resetElementAttributes","isOverflowing","_saveInitialAttribute","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","CLASS_NAME_SHOWING","CLASS_NAME_HIDING","CLASS_NAME_BACKDROP","OPEN_SELECTOR","EVENT_RESIZE","EVENT_KEYDOWN_DISMISS","Offcanvas","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","blur","completeCallback","alreadyOpen","EVENT_STRENGTH_CHANGE","SELECTOR_DATA_STRENGTH","STRENGTH_LEVELS","input","minLength","messages","weak","fair","good","strong","weights","extraLength","lowercase","uppercase","numbers","special","multipleSpecial","longPassword","thresholds","scorer","Strength","_input","_getInput","_segments","_textElement","_currentStrength","_evaluate","getStrength","password","score","_calculateScore","strength","_scoreToStrength","_updateUI","bsStrength","strengthIndex","segment","colorMap","EVENT_COMPLETE","EVENT_INPUT","SELECTOR_DATA_OTP","SELECTOR_INPUT","mask","OtpInput","_inputs","_setupInputs","setValue","chars","_checkComplete","emptyInput","at","_handleInput","_handlePaste","_handleFocus","digits","clipboardData","getData","lastIndex","select","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","area","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","li","ol","pre","small","span","sub","sup","ul","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","nodeValue","attributeRegex","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","extraClass","sanitize","sanitizeFn","template","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","_maybeSanitize","_setContent","arg","templateElement","_putElementInTemplate","DISALLOWED_ATTRIBUTES","CLASS_NAME_MODAL","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","_leave","_enter","_hideModalHandler","_isWithContent","isInTheDom","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","arrowX","arrowY","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","tooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","popover","EVENT_ACTIVATE","CLASS_NAME_MENU_ITEM","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_MENU_TOGGLE","smoothScroll","ScrollSpy","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","observableSection","hash","scrollTo","behavior","_observerCallback","targetElement","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","menuToggle","listGroup","activeNodes","spy","NOT_SELECTOR_MENU_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleMenu","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","EVENT_TOGGLE","EVENT_TOGGLED","Toggler","_execute"],"sources":["../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/index.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../js/src/util/floating-ui.js","../../js/src/menu.js","../../js/src/combobox.js","../../node_modules/vanilla-calendar-pro/index.mjs","../../js/src/datepicker.js","../../js/src/dialog.js","../../js/src/nav-overflow.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/util/scrollbar.js","../../js/src/offcanvas.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/toggler.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const evt = hydrateObj(new Event(event, { bubbles: true, cancelable: true }), args)\n    element.dispatchEvent(evt)\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n  for (const [key, value] of Object.entries(meta)) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n  if (selector && window.CSS && window.CSS.escape) {\n    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n    selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n  }\n\n  return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  if (isElement(object)) {\n    return object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(parseSelector(object))\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsie appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n  return typeof possibleCallback === 'function' ? possibleCallback.call(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getNextActiveElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  parseSelector,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const [property, expectedTypes] of Object.entries(configTypes)) {\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '6.0.0-alpha1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  // Private\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\n}\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children).filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  },\n\n  getSelectorFromElement(element) {\n    const selector = getSelector(element)\n\n    if (selector) {\n      return SelectorEngine.findOne(selector) ? selector : null\n    }\n\n    return null\n  },\n\n  getElementFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.findOne(selector) : null\n  },\n\n  getMultipleElementsFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.find(selector) : []\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nconst eventActionOnPlugin = (Plugin, onEvent, stringSelector, method, callback = null) => {\n  eventAction(`${onEvent}.${Plugin.NAME}`, stringSelector, data => {\n    const instances = data.targets.filter(Boolean).map(element => Plugin.getOrCreateInstance(element))\n    if (typeof callback === 'function') {\n      callback({ ...data, instances })\n    }\n\n    for (const instance of instances) {\n      instance[method]()\n    }\n  })\n}\n\nconst eventAction = (onEvent, stringSelector, callback) => {\n  const selector = `${stringSelector}:not(.disabled):not(:disabled)`\n  EventHandler.on(document, onEvent, selector, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    const selector = SelectorEngine.getSelectorFromElement(this)\n    const targets = selector ? SelectorEngine.find(selector) : [this]\n\n    callback({ targets, event })\n  })\n}\n\nexport {\n  enableDismissTrigger,\n  eventActionOnPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    this._deltaX = event.touches && event.touches.length > 1 ?\n      0 :\n      event.touches[0].clientX - this._deltaX\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n\n    if (absDeltaX <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltaX / this._deltaX\n\n    this._deltaX = 0\n\n    if (!direction) {\n      return\n    }\n\n    execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getNextActiveElement,\n  isRTL,\n  isVisible,\n  reflow,\n  triggerTransitionEnd\n} from './util/index.js'\nimport Swipe from './util/swipe.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover',\n  ride: false,\n  touch: true,\n  wrap: true\n}\n\nconst DefaultType = {\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)',\n  ride: '(boolean|string)',\n  touch: 'boolean',\n  wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._interval = null\n    this._activeElement = null\n    this._isSliding = false\n    this.touchTimeout = null\n    this._swipeHelper = null\n\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._addEventListeners()\n\n    if (this._config.ride === CLASS_NAME_CAROUSEL) {\n      this.cycle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause() {\n    if (this._isSliding) {\n      triggerTransitionEnd(this._element)\n    }\n\n    this._clearInterval()\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._updateInterval()\n\n    this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n  }\n\n  _maybeEnableCycle() {\n    if (!this._config.ride) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n      return\n    }\n\n    this.cycle()\n  }\n\n  to(index) {\n    const items = this._getItems()\n    if (index > items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    const activeIndex = this._getItemIndex(this._getActive())\n    if (activeIndex === index) {\n      return\n    }\n\n    const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n    this._slide(order, items[index])\n  }\n\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.defaultInterval = config.interval\n    return config\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    if (this._config.touch && Swipe.isSupported()) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n      EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n    }\n\n    const endCallBack = () => {\n      if (this._config.pause !== 'hover') {\n        return\n      }\n\n      // If it's a touch-enabled device, mouseenter/leave are fired as\n      // part of the mouse compatibility events on first tap - the carousel\n      // would stop cycling until user tapped out of it;\n      // here, we listen for touchend, explicitly pause the carousel\n      // (as if it's the second time we tap on it, mouseenter compat event\n      // is NOT fired) and after a timeout (to allow for mouse compatibility\n      // events to fire) we explicitly restart cycling\n\n      this.pause()\n      if (this.touchTimeout) {\n        clearTimeout(this.touchTimeout)\n      }\n\n      this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n    }\n\n    const swipeConfig = {\n      leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n      rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n      endCallback: endCallBack\n    }\n\n    this._swipeHelper = new Swipe(this._element, swipeConfig)\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(this._directionToOrder(direction))\n    }\n  }\n\n  _getItemIndex(element) {\n    return this._getItems().indexOf(element)\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n    activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n    activeIndicator.removeAttribute('aria-current')\n\n    const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n    if (newActiveIndicator) {\n      newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n      newActiveIndicator.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || this._getActive()\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    this._config.interval = elementInterval || this._config.defaultInterval\n  }\n\n  _slide(order, element = null) {\n    if (this._isSliding) {\n      return\n    }\n\n    const activeElement = this._getActive()\n    const isNext = order === ORDER_NEXT\n    const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n    if (nextElement === activeElement) {\n      return\n    }\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n\n    const triggerEvent = eventName => {\n      return EventHandler.trigger(this._element, eventName, {\n        relatedTarget: nextElement,\n        direction: this._orderToDirection(order),\n        from: this._getItemIndex(activeElement),\n        to: nextElementIndex\n      })\n    }\n\n    const slideEvent = triggerEvent(EVENT_SLIDE)\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      return\n    }\n\n    const isCycling = Boolean(this._interval)\n    this.pause()\n\n    this._isSliding = true\n\n    this._setActiveIndicatorElement(nextElementIndex)\n    this._activeElement = nextElement\n\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n    nextElement.classList.add(orderClassName)\n\n    reflow(nextElement)\n\n    activeElement.classList.add(directionalClassName)\n    nextElement.classList.add(directionalClassName)\n\n    const completeCallBack = () => {\n      nextElement.classList.remove(directionalClassName, orderClassName)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n      this._isSliding = false\n\n      triggerEvent(EVENT_SLID)\n    }\n\n    this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_SLIDE)\n  }\n\n  _getActive() {\n    return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  carousel.prev()\n  carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement,\n  reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = SelectorEngine.getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = SelectorEngine.getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  // Private\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = SelectorEngine.getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\nexport default Collapse\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n  return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rlPlacement : lrPlacement;\n      return isStart ? lrPlacement : rlPlacement;\n    case 'left':\n    case 'right':\n      return isStart ? tbPlacement : btPlacement;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n          if (!ignoreCrossAxisOverflow ||\n          // We leave the current main axis only if every placement on that axis\n          // overflows the main axis.\n          overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n            // Try next placement and re-run the lifecycle.\n            return {\n              data: {\n                index: nextIndex,\n                overflows: overflowsData\n              },\n              reset: {\n                placement: nextPlacement\n              }\n            };\n          }\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = originSides.has(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = originSides.has(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n  return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n  return topLayerSelectors.some(selector => {\n    try {\n      return element.matches(selector);\n    } catch (_e) {\n      return false;\n    }\n  });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n  const webkit = isWebKit();\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n  return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle$1(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  const windowScrollbarX = getWindowScrollBarX(html);\n  // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n  // visual width of the <html> but this is not considered in the size\n  // of `html.clientWidth`.\n  if (windowScrollbarX <= 0) {\n    const doc = html.ownerDocument;\n    const body = doc.body;\n    const bodyStyles = getComputedStyle(body);\n    const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n    const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n    if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n      width -= clippingStableScrollbarWidth;\n    }\n  } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n    // If the <body> scrollbar is on the left, the width needs to be extended\n    // by the scrollbar amount so there isn't extra space on the right.\n    width += windowScrollbarX;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n\n  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n  // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n  function setLeftRTLScrollbarOffset() {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      setLeftRTLScrollbarOffset();\n    }\n  }\n  if (isFixed && !isOffsetParentAnElement && documentElement) {\n    setLeftRTLScrollbarOffset();\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        // It's possible that even though the ratio is reported as 1, the\n        // element is not actually fully within the IntersectionObserver's root\n        // area anymore. This can happen under performance constraints. This may\n        // be a bug in the browser's IntersectionObserver implementation. To\n        // work around this, we compare the element's bounding rect now with\n        // what it was at the time we created the IntersectionObserver. If they\n        // are not equal then the element moved, so we refresh.\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/floating-ui.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isRTL } from './index.js'\n\n/**\n * Breakpoints for responsive placement (matches SCSS $breakpoints)\n */\nexport const BREAKPOINTS = {\n  sm: 576,\n  md: 768,\n  lg: 1024,\n  xl: 1280,\n  '2xl': 1536\n}\n\n/**\n * Default placement with RTL support\n */\nexport const getDefaultPlacement = (fallback = 'bottom') => {\n  if (fallback.includes('-start') || fallback.includes('-end')) {\n    const [side, alignment] = fallback.split('-')\n    const flippedAlignment = alignment === 'start' ? 'end' : 'start'\n    return isRTL() ? `${side}-${flippedAlignment}` : fallback\n  }\n\n  return fallback\n}\n\n/**\n * Parse a placement string that may contain responsive prefixes\n * Example: \"bottom-start md:top-end lg:right\" returns { xs: 'bottom-start', md: 'top-end', lg: 'right' }\n *\n * @param {string} placementString - The placement string to parse\n * @param {string} defaultPlacement - The default placement to use for xs/base\n * @returns {object|null} - Object with breakpoint keys and placement values, or null if not responsive\n */\nexport const parseResponsivePlacement = (placementString, defaultPlacement = 'bottom') => {\n  // Check if placement contains responsive prefixes (e.g., \"bottom-start md:top-end\")\n  if (!placementString || !placementString.includes(':')) {\n    return null\n  }\n\n  // Parse the placement string into breakpoint-keyed object\n  const parts = placementString.split(/\\s+/)\n  const placements = { xs: defaultPlacement } // Default fallback\n\n  for (const part of parts) {\n    if (part.includes(':')) {\n      // Responsive placement like \"md:top-end\"\n      const [breakpoint, placement] = part.split(':')\n      if (BREAKPOINTS[breakpoint] !== undefined) {\n        placements[breakpoint] = placement\n      }\n    } else {\n      // Base placement (no prefix = xs/default)\n      placements.xs = part\n    }\n  }\n\n  return placements\n}\n\n/**\n * Get the active placement for the current viewport width\n *\n * @param {object} responsivePlacements - Object with breakpoint keys and placement values\n * @param {string} defaultPlacement - Fallback placement\n * @returns {string} - The active placement for current viewport\n */\nexport const getResponsivePlacement = (responsivePlacements, defaultPlacement = 'bottom') => {\n  if (!responsivePlacements) {\n    return defaultPlacement\n  }\n\n  // Get current viewport width\n  const viewportWidth = window.innerWidth\n\n  // Find the largest breakpoint that matches\n  let activePlacement = responsivePlacements.xs || defaultPlacement\n\n  // Check breakpoints in order (sm, md, lg, xl, 2xl)\n  const breakpointOrder = ['sm', 'md', 'lg', 'xl', '2xl']\n\n  for (const breakpoint of breakpointOrder) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    if (viewportWidth >= minWidth && responsivePlacements[breakpoint]) {\n      activePlacement = responsivePlacements[breakpoint]\n    }\n  }\n\n  return activePlacement\n}\n\n/**\n * Create media query listeners for responsive placement changes\n *\n * @param {Function} callback - Callback to run when breakpoint changes\n * @returns {Array} - Array of { mql, handler } objects for cleanup\n */\nexport const createBreakpointListeners = callback => {\n  const listeners = []\n\n  for (const breakpoint of Object.keys(BREAKPOINTS)) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    const mql = window.matchMedia(`(min-width: ${minWidth}px)`)\n\n    mql.addEventListener('change', callback)\n    listeners.push({ mql, handler: callback })\n  }\n\n  return listeners\n}\n\n/**\n * Clean up media query listeners\n *\n * @param {Array} listeners - Array of { mql, handler } objects\n */\nexport const disposeBreakpointListeners = listeners => {\n  for (const { mql, handler } of listeners) {\n    mql.removeEventListener('change', handler)\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap menu.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'menu'\nconst DATA_KEY = 'bs.menu'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\nconst RIGHT_MOUSE_BUTTON = 2\n\nconst SUBMENU_CLOSE_DELAY = 100\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"menu\"]:not(.disabled):not(:disabled)'\n\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_SUBMENU = '.submenu'\nconst SELECTOR_SUBMENU_TOGGLE = '.submenu > .menu-item'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item:not(.disabled):not(:disabled)'\n\nconst DEFAULT_PLACEMENT = 'bottom-start'\nconst SUBMENU_PLACEMENT = 'end-start'\n\nconst resolveLogicalPlacement = placement => {\n  if (isRTL()) {\n    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left')\n  }\n\n  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right')\n}\n\nconst triangleSign = (p1, p2, p3) =>\n  ((p1.x - p3.x) * (p2.y - p3.y)) - ((p2.x - p3.x) * (p1.y - p3.y))\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  container: false,\n  display: 'dynamic',\n  offset: [0, 2],\n  floatingConfig: null,\n  menu: null,\n  placement: DEFAULT_PLACEMENT,\n  reference: 'toggle',\n  strategy: 'absolute',\n  submenuTrigger: 'both',\n  submenuDelay: SUBMENU_CLOSE_DELAY\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  display: 'string',\n  offset: '(array|string|function)',\n  floatingConfig: '(null|object|function)',\n  menu: '(null|element)',\n  placement: 'string',\n  reference: '(string|element|object)',\n  strategy: 'string',\n  submenuTrigger: 'string',\n  submenuDelay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Menu extends BaseComponent {\n  static _openInstances = new Set()\n\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s menus require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    this._floatingCleanup = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n    this._parent = this._element.parentNode\n    this._isSubmenu = this._parent.classList?.contains('submenu')\n    this._openSubmenus = new Map()\n    this._submenuCloseTimeouts = new Map()\n    this._hoverIntentData = null\n\n    this._menu = this._config.menu || this._findMenu()\n\n    this._menuOriginalParent = this._menu?.parentNode\n\n    this._parseResponsivePlacements()\n    this._setupSubmenuListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._moveMenuToContainer()\n    this._createFloating()\n\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus({ focusVisible: false })\n    this._element.setAttribute('aria-expanded', 'true')\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.add(CLASS_NAME_SHOW)\n    }\n\n    Menu._openInstances.add(this)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n    this._disposeMediaQueryListeners()\n    this._closeAllSubmenus()\n    this._clearAllSubmenuTimeouts()\n    Menu._openInstances.delete(this)\n    super.dispose()\n  }\n\n  update() {\n    if (this._floatingCleanup) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Private\n  _findMenu() {\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n  }\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._closeAllSubmenus()\n\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'placement')\n    Manipulator.removeDataAttribute(this._menu, 'display')\n    Menu._openInstances.delete(this)\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createFloating() {\n    if (this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'display', 'static')\n      return\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    this._updateFloatingPosition(referenceElement)\n\n    this._floatingCleanup = autoUpdate(\n      referenceElement,\n      this._menu,\n      () => this._updateFloatingPosition(referenceElement)\n    )\n  }\n\n  async _updateFloatingPosition(referenceElement = null) {\n    if (!this._menu) {\n      return\n    }\n\n    if (!referenceElement) {\n      if (this._config.reference === 'parent') {\n        referenceElement = this._parent\n      } else if (isElement(this._config.reference)) {\n        referenceElement = getElement(this._config.reference)\n      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference\n      } else {\n        referenceElement = this._element\n      }\n    }\n\n    const placement = this._getPlacement()\n    const middleware = this._getFloatingMiddleware()\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    await this._applyFloatingPosition(\n      referenceElement,\n      this._menu,\n      floatingConfig.placement,\n      floatingConfig.middleware,\n      floatingConfig.strategy\n    )\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    const placement = this._responsivePlacements ?\n      getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) :\n      this._config.placement\n\n    return resolveLogicalPlacement(placement)\n  }\n\n  _parseResponsivePlacements() {\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT)\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  _getOffset() {\n    const { offset: offsetConfig } = this._config\n\n    if (typeof offsetConfig === 'string') {\n      return offsetConfig.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offsetConfig === 'function') {\n      return ({ placement, rects }) => {\n        const result = offsetConfig({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offsetConfig\n  }\n\n  _getFloatingMiddleware() {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      flip({\n        fallbackPlacements: this._getFallbackPlacements()\n      }),\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    return middleware\n  }\n\n  _getFallbackPlacements() {\n    const placement = this._getPlacement()\n\n    const fallbackMap = {\n      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\n      'bottom-start': ['top-start', 'bottom-end', 'top-end'],\n      'bottom-end': ['top-end', 'bottom-start', 'top-start'],\n      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],\n      'top-start': ['bottom-start', 'top-end', 'bottom-end'],\n      'top-end': ['bottom-end', 'top-start', 'bottom-start'],\n      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],\n      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],\n      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],\n      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],\n      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],\n      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']\n    }\n\n    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left']\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware,\n      strategy: this._config.strategy\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n  }\n\n  _getContainer() {\n    const { container } = this._config\n    if (container === false) {\n      return null\n    }\n\n    return container === true ? document.body : getElement(container)\n  }\n\n  _moveMenuToContainer() {\n    const container = this._getContainer()\n    if (!container || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== container) {\n      container.append(this._menu)\n    }\n  }\n\n  _restoreMenuToOriginalParent() {\n    if (!this._menuOriginalParent || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== this._menuOriginalParent) {\n      this._menuOriginalParent.append(this._menu)\n    }\n  }\n\n  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {\n    if (!floating.isConnected) {\n      return null\n    }\n\n    const { x, y, placement: finalPlacement } = await computePosition(\n      reference,\n      floating,\n      { placement, middleware, strategy }\n    )\n\n    if (!floating.isConnected) {\n      return null\n    }\n\n    Object.assign(floating.style, {\n      position: strategy,\n      left: `${x}px`,\n      top: `${y}px`,\n      margin: '0'\n    })\n\n    Manipulator.setDataAttribute(floating, 'placement', finalPlacement)\n    return finalPlacement\n  }\n\n  // -------------------------------------------------------------------------\n  // Submenu handling\n  // -------------------------------------------------------------------------\n\n  _setupSubmenuListeners() {\n    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerEnter(event)\n      })\n\n      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {\n        this._onSubmenuLeave(event)\n      })\n\n      EventHandler.on(this._menu, 'mousemove', event => {\n        this._trackMousePosition(event)\n      })\n    }\n\n    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerClick(event)\n      })\n    }\n  }\n\n  _onSubmenuTriggerEnter(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    this._cancelSubmenuCloseTimeout(submenu)\n    this._closeSiblingSubmenus(submenuWrapper)\n    this._openSubmenu(trigger, submenu, submenuWrapper)\n  }\n\n  _onSubmenuLeave(event) {\n    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu || !this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    if (this._isMovingTowardSubmenu(event, submenu)) {\n      return\n    }\n\n    this._scheduleSubmenuClose(submenu, submenuWrapper)\n  }\n\n  _onSubmenuTriggerClick(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    if (this._openSubmenus.has(submenu)) {\n      this._closeSubmenu(submenu, submenuWrapper)\n    } else {\n      this._closeSiblingSubmenus(submenuWrapper)\n      this._openSubmenu(trigger, submenu, submenuWrapper)\n    }\n  }\n\n  _openSubmenu(trigger, submenu, submenuWrapper) {\n    if (this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    trigger.setAttribute('aria-expanded', 'true')\n    trigger.setAttribute('aria-haspopup', 'true')\n\n    submenu.classList.add(CLASS_NAME_SHOW)\n    submenuWrapper.classList.add(CLASS_NAME_SHOW)\n\n    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper)\n    this._openSubmenus.set(submenu, cleanup)\n\n    EventHandler.on(submenu, 'mouseenter', () => {\n      this._cancelSubmenuCloseTimeout(submenu)\n    })\n  }\n\n  _closeSubmenu(submenu, submenuWrapper) {\n    if (!this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, submenu)\n    for (const nested of nestedSubmenus) {\n      const nestedWrapper = nested.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(nested, nestedWrapper)\n    }\n\n    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper)\n\n    const cleanup = this._openSubmenus.get(submenu)\n    if (cleanup) {\n      cleanup()\n    }\n\n    this._openSubmenus.delete(submenu)\n    EventHandler.off(submenu, 'mouseenter')\n\n    if (trigger) {\n      trigger.setAttribute('aria-expanded', 'false')\n    }\n\n    submenu.classList.remove(CLASS_NAME_SHOW)\n    submenuWrapper.classList.remove(CLASS_NAME_SHOW)\n\n    submenu.style.position = ''\n    submenu.style.left = ''\n    submenu.style.top = ''\n    submenu.style.margin = ''\n  }\n\n  _closeAllSubmenus() {\n    for (const [submenu] of this._openSubmenus) {\n      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(submenu, submenuWrapper)\n    }\n  }\n\n  _closeSiblingSubmenus(currentSubmenuWrapper) {\n    const parent = currentSubmenuWrapper.parentNode\n    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, parent)\n\n    for (const siblingMenu of siblingSubmenus) {\n      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU)\n      if (siblingWrapper !== currentSubmenuWrapper) {\n        this._closeSubmenu(siblingMenu, siblingWrapper)\n      }\n    }\n  }\n\n  _createSubmenuFloating(trigger, submenu, submenuWrapper) {\n    const referenceElement = submenuWrapper\n    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT)\n    const middleware = [\n      offset({ mainAxis: 0, crossAxis: -4 }),\n      flip({\n        fallbackPlacements: [\n          resolveLogicalPlacement('start-start'),\n          resolveLogicalPlacement('end-end'),\n          resolveLogicalPlacement('start-end')\n        ]\n      }),\n      shift({ padding: 8 })\n    ]\n\n    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware)\n\n    updatePosition()\n    return autoUpdate(referenceElement, submenu, updatePosition)\n  }\n\n  _scheduleSubmenuClose(submenu, submenuWrapper) {\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    const timeoutId = setTimeout(() => {\n      this._closeSubmenu(submenu, submenuWrapper)\n      this._submenuCloseTimeouts.delete(submenu)\n    }, this._config.submenuDelay)\n\n    this._submenuCloseTimeouts.set(submenu, timeoutId)\n  }\n\n  _cancelSubmenuCloseTimeout(submenu) {\n    const timeoutId = this._submenuCloseTimeouts.get(submenu)\n    if (timeoutId) {\n      clearTimeout(timeoutId)\n      this._submenuCloseTimeouts.delete(submenu)\n    }\n  }\n\n  _clearAllSubmenuTimeouts() {\n    for (const timeoutId of this._submenuCloseTimeouts.values()) {\n      clearTimeout(timeoutId)\n    }\n\n    this._submenuCloseTimeouts.clear()\n  }\n\n  // -------------------------------------------------------------------------\n  // Hover intent / Safe triangle\n  // -------------------------------------------------------------------------\n\n  _trackMousePosition(event) {\n    this._hoverIntentData = {\n      x: event.clientX,\n      y: event.clientY,\n      timestamp: Date.now()\n    }\n  }\n\n  _isMovingTowardSubmenu(event, submenu) {\n    if (!this._hoverIntentData) {\n      return false\n    }\n\n    const submenuRect = submenu.getBoundingClientRect()\n    const currentPos = { x: event.clientX, y: event.clientY }\n    const lastPos = { x: this._hoverIntentData.x, y: this._hoverIntentData.y }\n\n    const isRtl = isRTL()\n    const targetX = isRtl ? submenuRect.right : submenuRect.left\n    const topCorner = { x: targetX, y: submenuRect.top }\n    const bottomCorner = { x: targetX, y: submenuRect.bottom }\n\n    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner)\n  }\n\n  _pointInTriangle(point, v1, v2, v3) {\n    const d1 = triangleSign(point, v1, v2)\n    const d2 = triangleSign(point, v2, v3)\n    const d3 = triangleSign(point, v3, v1)\n\n    const hasNeg = (d1 < 0) || (d2 < 0) || (d3 < 0)\n    const hasPos = (d1 > 0) || (d2 > 0) || (d3 > 0)\n\n    return !(hasNeg && hasPos)\n  }\n\n  // -------------------------------------------------------------------------\n  // Keyboard navigation\n  // -------------------------------------------------------------------------\n\n  _selectMenuItem({ key, target }) {\n    const currentMenu = target.closest(SELECTOR_MENU) || this._menu\n    const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n      .filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  _handleSubmenuKeydown(event) {\n    const { key, target } = event\n    const isRtl = isRTL()\n\n    const enterKey = isRtl ? ARROW_LEFT_KEY : ARROW_RIGHT_KEY\n    const exitKey = isRtl ? ARROW_RIGHT_KEY : ARROW_LEFT_KEY\n\n    const submenuWrapper = target.closest(SELECTOR_SUBMENU)\n    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === enterKey && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === exitKey) {\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper) {\n        event.preventDefault()\n        event.stopPropagation()\n\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        this._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return true\n      }\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n        .filter(element => isVisible(element))\n\n      if (items.length) {\n        const targetItem = key === HOME_KEY ? items[0] : items[items.length - 1]\n        targetItem.focus()\n      }\n\n      return true\n    }\n\n    return false\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    for (const instance of Menu._openInstances) {\n      if (instance._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(instance._menu)\n      if (\n        composedPath.includes(instance._element) ||\n        (instance._config.autoClose === 'inside' && !isMenuTarget) ||\n        (instance._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      if (instance._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: instance._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      instance._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    const isInput = /input|textarea/i.test(event.target.tagName)\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n    const isLeftOrRightEvent = [ARROW_LEFT_KEY, ARROW_RIGHT_KEY].includes(event.key)\n    const isHomeOrEndEvent = [HOME_KEY, END_KEY].includes(event.key)\n    const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key)\n\n    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent &&\n        !(isEnterOrSpaceEvent && isSubmenuTrigger)) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    if (!getToggleButton) {\n      return\n    }\n\n    const instance = Menu.getOrCreateInstance(getToggleButton)\n\n    if ((isLeftOrRightEvent || isHomeOrEndEvent || (isEnterOrSpaceEvent && isSubmenuTrigger)) && instance._handleSubmenuKeydown(event)) {\n      return\n    }\n\n    if (isUpOrDownEvent) {\n      event.preventDefault()\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (isEscapeEvent && instance._isShown()) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = event.target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        instance._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return\n      }\n\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Menu.getOrCreateInstance(this).toggle()\n})\n\nexport default Menu\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap combobox.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Menu from './menu.js'\nimport { getNextActiveElement, isDisabled, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'combobox'\nconst DATA_KEY = 'bs.combobox'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SELECTED = 'selected'\nconst CLASS_NAME_PLACEHOLDER = 'combobox-placeholder'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"combobox\"]'\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_MENU_ITEM = '.menu-item[data-bs-value]'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item[data-bs-value]:not(.disabled):not(:disabled)'\nconst SELECTOR_VALUE = '.combobox-value'\nconst SELECTOR_SEARCH_INPUT = '.combobox-search-input'\nconst SELECTOR_NO_RESULTS = '.combobox-no-results'\n\nconst Default = {\n  boundary: 'clippingParents',\n  multiple: false,\n  name: null,\n  offset: [0, 2],\n  placeholder: '',\n  placement: 'bottom-start',\n  search: false,\n  searchNormalize: false\n}\n\nconst DefaultType = {\n  boundary: '(string|element)',\n  multiple: 'boolean',\n  name: '(string|null)',\n  offset: '(array|string|function)',\n  placeholder: 'string',\n  placement: 'string',\n  search: 'boolean',\n  searchNormalize: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Combobox extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._toggle = this._element\n    this._menu = SelectorEngine.next(this._toggle, SELECTOR_MENU)[0]\n    this._valueDisplay = SelectorEngine.findOne(SELECTOR_VALUE, this._toggle)\n    this._searchInput = SelectorEngine.findOne(SELECTOR_SEARCH_INPUT, this._menu)\n    this._noResults = SelectorEngine.findOne(SELECTOR_NO_RESULTS, this._menu)\n    this._hiddenInput = null\n    this._menuInstance = null\n\n    this._createHiddenInput()\n    this._createMenuInstance()\n    this._syncInitialSelection()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._toggle) || this._isShown()) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._toggle, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.show()\n\n    if (this._searchInput) {\n      this._searchInput.value = ''\n      this._filterItems('')\n      requestAnimationFrame(() => this._searchInput.focus())\n    }\n\n    EventHandler.trigger(this._toggle, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._toggle, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.hide()\n    EventHandler.trigger(this._toggle, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._menuInstance) {\n      this._menuInstance.dispose()\n      this._menuInstance = null\n    }\n\n    if (this._hiddenInput) {\n      this._hiddenInput.remove()\n      this._hiddenInput = null\n    }\n\n    EventHandler.off(this._menu, EVENT_KEY)\n    EventHandler.off(this._toggle, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _createHiddenInput() {\n    const { name } = this._config\n    if (!name) {\n      return\n    }\n\n    this._hiddenInput = document.createElement('input')\n    this._hiddenInput.type = 'hidden'\n    this._hiddenInput.name = name\n    this._hiddenInput.value = ''\n    this._toggle.parentNode.insertBefore(this._hiddenInput, this._toggle)\n  }\n\n  _createMenuInstance() {\n    this._menuInstance = new Menu(this._toggle, {\n      menu: this._menu,\n      autoClose: this._config.multiple ? 'outside' : true,\n      boundary: this._config.boundary,\n      offset: this._config.offset,\n      placement: this._config.placement\n    })\n  }\n\n  _syncInitialSelection() {\n    const selectedItems = this._getSelectedItems()\n    if (selectedItems.length > 0) {\n      this._updateToggleText()\n      this._updateHiddenInput()\n    } else {\n      this._showPlaceholder()\n    }\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._menu, 'click', SELECTOR_MENU_ITEM, event => {\n      const item = event.target.closest(SELECTOR_MENU_ITEM)\n      if (!item || isDisabled(item)) {\n        return\n      }\n\n      event.preventDefault()\n      event.stopPropagation()\n      this._selectItem(item)\n    })\n\n    EventHandler.on(this._toggle, 'keydown', event => {\n      this._handleToggleKeydown(event)\n    })\n\n    EventHandler.on(this._menu, 'keydown', event => {\n      this._handleMenuKeydown(event)\n    })\n\n    if (this._searchInput) {\n      EventHandler.on(this._searchInput, 'input', () => {\n        this._filterItems(this._searchInput.value)\n      })\n\n      EventHandler.on(this._searchInput, 'keydown', event => {\n        if (event.key === ARROW_DOWN_KEY) {\n          event.preventDefault()\n          const items = this._getVisibleItems()\n          if (items.length > 0) {\n            items[0].focus()\n          }\n        }\n\n        if (event.key === ESCAPE_KEY) {\n          this.hide()\n          this._toggle.focus()\n        }\n      })\n    }\n  }\n\n  _selectItem(item) {\n    if (this._config.multiple) {\n      item.classList.toggle(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', item.classList.contains(CLASS_NAME_SELECTED))\n    } else {\n      const previouslySelected = SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n      for (const prev of previouslySelected) {\n        prev.classList.remove(CLASS_NAME_SELECTED)\n        prev.setAttribute('aria-selected', 'false')\n      }\n\n      item.classList.add(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', 'true')\n    }\n\n    this._updateToggleText()\n    this._updateHiddenInput()\n\n    const value = this._config.multiple ?\n      this._getSelectedItems().map(el => el.dataset.bsValue) :\n      item.dataset.bsValue\n\n    EventHandler.trigger(this._toggle, EVENT_CHANGE, {\n      value,\n      item\n    })\n\n    if (!this._config.multiple) {\n      this.hide()\n      this._toggle.focus()\n    }\n  }\n\n  _updateToggleText() {\n    const selectedItems = this._getSelectedItems()\n\n    if (selectedItems.length === 0) {\n      this._showPlaceholder()\n      return\n    }\n\n    this._valueDisplay.classList.remove(CLASS_NAME_PLACEHOLDER)\n\n    if (this._config.multiple && selectedItems.length > 1) {\n      this._valueDisplay.textContent = `${selectedItems.length} selected`\n    } else {\n      const item = selectedItems[0]\n      const label = SelectorEngine.findOne('.menu-item-content > span:first-child', item)\n      this._valueDisplay.textContent = label ? label.textContent : item.textContent.trim()\n    }\n  }\n\n  _showPlaceholder() {\n    const { placeholder } = this._config\n    if (placeholder) {\n      this._valueDisplay.textContent = placeholder\n      this._valueDisplay.classList.add(CLASS_NAME_PLACEHOLDER)\n    }\n  }\n\n  _updateHiddenInput() {\n    if (!this._hiddenInput) {\n      return\n    }\n\n    const selectedItems = this._getSelectedItems()\n    const values = selectedItems.map(el => el.dataset.bsValue)\n    this._hiddenInput.value = this._config.multiple ? values.join(',') : (values[0] || '')\n  }\n\n  _getSelectedItems() {\n    return SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n  }\n\n  _getVisibleItems() {\n    return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu)\n      .filter(item => isVisible(item))\n  }\n\n  _filterItems(query) {\n    const normalizedQuery = this._normalizeText(query.toLowerCase().trim())\n    const items = SelectorEngine.find(SELECTOR_MENU_ITEM, this._menu)\n    let visibleCount = 0\n\n    for (const item of items) {\n      const text = this._normalizeText(item.textContent.toLowerCase().trim())\n      const matches = !normalizedQuery || text.includes(normalizedQuery)\n      item.style.display = matches ? '' : 'none'\n      if (matches) {\n        visibleCount++\n      }\n    }\n\n    if (this._noResults) {\n      this._noResults.classList.toggle('d-none', visibleCount > 0)\n    }\n  }\n\n  _normalizeText(text) {\n    if (this._config.searchNormalize) {\n      return text.normalize('NFD').replace(/[\\u0300-\\u036F]/g, '')\n    }\n\n    return text\n  }\n\n  _handleToggleKeydown(event) {\n    const { key } = event\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      if (!this._isShown()) {\n        this.show()\n      }\n\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const target = key === ARROW_DOWN_KEY ? items[0] : items[items.length - 1]\n        target.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !this._isShown()) {\n      event.preventDefault()\n      this.show()\n    }\n  }\n\n  _handleMenuKeydown(event) {\n    const { key, target } = event\n\n    if (key === ESCAPE_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n      this._toggle.focus()\n      return\n    }\n\n    if (key === TAB_KEY) {\n      this.hide()\n      return\n    }\n\n    const isInput = target.matches('input')\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n      }\n\n      return\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const targetItem = key === HOME_KEY ? items[0] : items[items.length - 1]\n        targetItem.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !isInput) {\n      event.preventDefault()\n      const item = target.closest(SELECTOR_MENU_ITEM)\n      if (item && !isDisabled(item)) {\n        this._selectItem(item)\n      }\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Combobox.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Combobox.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const toggle of SelectorEngine.find(SELECTOR_DATA_TOGGLE)) {\n    Combobox.getOrCreateInstance(toggle)\n  }\n})\n\nexport default Combobox\n","/*! name: vanilla-calendar-pro v3.1.0 | url: https://github.com/uvarov-frontend/vanilla-calendar-pro */\nvar __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__spreadValues=(e,t)=>{for(var n in t||(t={}))__hasOwnProp.call(t,n)&&__defNormalProp(e,n,t[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(t))__propIsEnum.call(t,n)&&__defNormalProp(e,n,t[n]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__publicField=(e,t,n)=>(__defNormalProp(e,\"symbol\"!=typeof t?t+\"\":t,n),n);const errorMessages={notFoundSelector:e=>`${e} is not found, check the first argument passed to new Calendar.`,notInit:'The calendar has not been initialized, please initialize it using the \"init()\" method first.',notLocale:\"You specified an incorrect language label or did not specify the required number of values ​​for «locale.weekdays» or «locale.months».\",incorrectTime:\"The value of the time property can be: false, 12 or 24.\",incorrectMonthsCount:\"For the «multiple» calendar type, the «displayMonthsCount» parameter can have a value from 2 to 12, and for all others it cannot be greater than 1.\"},setContext=(e,t,n)=>{e.context[t]=n},destroy=e=>{var t,n,a,o,l;if(!e.context.isInit)throw new Error(errorMessages.notInit);e.inputMode?(null==(t=e.context.mainElement.parentElement)||t.removeChild(e.context.mainElement),null==(a=null==(n=e.context.inputElement)?void 0:n.replaceWith)||a.call(n,e.context.originalElement),setContext(e,\"inputElement\",void 0)):null==(l=(o=e.context.mainElement).replaceWith)||l.call(o,e.context.originalElement),setContext(e,\"mainElement\",e.context.originalElement),e.onDestroy&&e.onDestroy(e)},skipOpenOnFocus=new WeakSet,shouldSkipOpenOnFocus=e=>skipOpenOnFocus.has(e),setSkipOpenOnFocus=e=>{skipOpenOnFocus.add(e)},clearSkipOpenOnFocus=e=>{skipOpenOnFocus.delete(e)},PREV_TABINDEX_ATTR=\"data-vc-prev-tabindex\",isFocusable=e=>e.tabIndex>=0&&!e.hasAttribute(\"disabled\")&&\"true\"!==e.getAttribute(\"aria-disabled\"),storePrevTabIndex=e=>{if(e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(\"tabindex\");e.setAttribute(PREV_TABINDEX_ATTR,null!=t?t:\"\")},restorePrevTabIndex=e=>{if(!e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(PREV_TABINDEX_ATTR);\"\"===t||null===t?e.removeAttribute(\"tabindex\"):e.setAttribute(\"tabindex\",t),e.removeAttribute(PREV_TABINDEX_ATTR)},disableTabbing=e=>{isFocusable(e)&&(storePrevTabIndex(e),e.tabIndex=-1);const t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>isFocusable(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;t.nextNode();){const e=t.currentNode;storePrevTabIndex(e),e.tabIndex=-1}},restoreTabbing=e=>{restorePrevTabIndex(e),e.querySelectorAll(`[${PREV_TABINDEX_ATTR}]`).forEach(restorePrevTabIndex)},hide=e=>{if(e.context.isShowInInputMode&&e.context.currentType){if(e.context.mainElement.dataset.vcCalendarHidden=\"\",setContext(e,\"isShowInInputMode\",!1),e.inputMode&&disableTabbing(e.context.mainElement),e.context.cleanupHandlers[0]&&(e.context.cleanupHandlers.forEach((e=>e())),setContext(e,\"cleanupHandlers\",[])),e.inputMode&&e.context.inputElement&&e.context.mainElement.contains(document.activeElement)){(\"function\"==typeof e.openOnFocus||!0===e.openOnFocus)&&setSkipOpenOnFocus(e),e.context.inputElement.focus()}e.onHide&&e.onHide(e)}};function getOffset(e){if(!e||!e.getBoundingClientRect)return{top:0,bottom:0,left:0,right:0};const t=e.getBoundingClientRect(),n=document.documentElement;return{bottom:t.bottom,right:t.right,top:t.top+window.scrollY-n.clientTop,left:t.left+window.scrollX-n.clientLeft}}function getViewportDimensions(){return{vw:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),vh:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}}function getWindowScrollPosition(){return{left:window.scrollX||document.documentElement.scrollLeft||0,top:window.scrollY||document.documentElement.scrollTop||0}}function calculateAvailableSpace(e){const{top:t,left:n}=getWindowScrollPosition(),{top:a,left:o}=getOffset(e),{vh:l,vw:s}=getViewportDimensions(),i=a-t,r=o-n;return{top:i,bottom:l-(i+e.clientHeight),left:r,right:s-(r+e.clientWidth)}}function getAvailablePosition(e,t,n=5){const a={top:!0,bottom:!0,left:!0,right:!0},o=[];if(!t||!e)return{canShow:a,parentPositions:o};const{bottom:l,top:s}=calculateAvailableSpace(e),{top:i,left:r}=getOffset(e),{height:c,width:d}=t.getBoundingClientRect(),{vh:u,vw:m}=getViewportDimensions(),p=m/2,h=u/2;return[{condition:i<h,position:\"top\"},{condition:i>h,position:\"bottom\"},{condition:r<p,position:\"left\"},{condition:r>p,position:\"right\"}].forEach((({condition:e,position:t})=>{e&&o.push(t)})),Object.assign(a,{top:c<=s-n,bottom:c<=l-n,left:d<=r,right:d<=m-r}),{canShow:a,parentPositions:o}}const handleDay=(e,t,n,a)=>{var o;const l=a.querySelector(`[data-vc-date=\"${t}\"]`),s=null==l?void 0:l.querySelector(\"[data-vc-date-btn]\");if(!l||!s)return;if((null==n?void 0:n.modifier)&&s.classList.add(...n.modifier.trim().split(\" \")),!(null==n?void 0:n.html))return;const i=document.createElement(\"div\");i.className=e.styles.datePopup,i.dataset.vcDatePopup=\"\",i.innerHTML=e.sanitizerHTML(n.html),s.ariaExpanded=\"true\",s.ariaLabel=`${s.ariaLabel}, ${null==(o=null==i?void 0:i.textContent)?void 0:o.replace(/^\\s+|\\s+(?=\\s)|\\s+$/g,\"\").replace(/&nbsp;/g,\" \")}`,l.appendChild(i),requestAnimationFrame((()=>{if(!i)return;const{canShow:e}=getAvailablePosition(l,i),t=e.bottom?l.offsetHeight:-i.offsetHeight,n=e.left&&!e.right?l.offsetWidth-i.offsetWidth/2:!e.left&&e.right?i.offsetWidth/2:0;Object.assign(i.style,{left:`${n}px`,top:`${t}px`})}))},createDatePopup=(e,t)=>{var n;e.popups&&(null==(n=Object.entries(e.popups))||n.forEach((([n,a])=>handleDay(e,n,a,t))))},getDate=e=>new Date(`${e}T00:00:00`),getDateString=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,\"0\")}-${String(e.getDate()).padStart(2,\"0\")}`,parseDates=e=>e.reduce(((e,t)=>{if(t instanceof Date||\"number\"==typeof t){const n=t instanceof Date?t:new Date(t);e.push(n.toISOString().substring(0,10))}else t.match(/^(\\d{4}-\\d{2}-\\d{2})$/g)?e.push(t):t.replace(/(\\d{4}-\\d{2}-\\d{2}).*?(\\d{4}-\\d{2}-\\d{2})/g,((t,n,a)=>{const o=getDate(n),l=getDate(a),s=new Date(o.getTime());for(;s<=l;s.setDate(s.getDate()+1))e.push(getDateString(s));return t}));return e}),[]),updateAttribute=(e,t,n,a=\"\")=>{t?e.setAttribute(n,a):e.getAttribute(n)===a&&e.removeAttribute(n)},setDateModifier=(e,t,n,a,o,l,s)=>{var i,r,c,d;const u=getDate(e.context.displayDateMin)>getDate(l)||getDate(e.context.displayDateMax)<getDate(l)||(null==(i=e.context.disableDates)?void 0:i.includes(l))||!e.selectionMonthsMode&&\"current\"!==s||!e.selectionYearsMode&&getDate(l).getFullYear()!==t;updateAttribute(n,u,\"data-vc-date-disabled\"),a&&updateAttribute(a,u,\"aria-disabled\",\"true\"),a&&updateAttribute(a,u,\"tabindex\",\"-1\"),updateAttribute(n,!e.disableToday&&e.context.dateToday===l,\"data-vc-date-today\"),updateAttribute(n,!e.disableToday&&e.context.dateToday===l,\"aria-current\",\"date\"),updateAttribute(n,null==(r=e.selectedWeekends)?void 0:r.includes(o),\"data-vc-date-weekend\");const m=(null==(c=e.selectedHolidays)?void 0:c[0])?parseDates(e.selectedHolidays):[];if(updateAttribute(n,m.includes(l),\"data-vc-date-holiday\"),(null==(d=e.context.selectedDates)?void 0:d.includes(l))?(n.setAttribute(\"data-vc-date-selected\",\"\"),a&&a.setAttribute(\"aria-selected\",\"true\"),e.context.selectedDates.length>1&&\"multiple-ranged\"===e.selectionDatesMode&&(e.context.selectedDates[0]===l&&e.context.selectedDates[e.context.selectedDates.length-1]===l?n.setAttribute(\"data-vc-date-selected\",\"first-and-last\"):e.context.selectedDates[0]===l?n.setAttribute(\"data-vc-date-selected\",\"first\"):e.context.selectedDates[e.context.selectedDates.length-1]===l&&n.setAttribute(\"data-vc-date-selected\",\"last\"),e.context.selectedDates[0]!==l&&e.context.selectedDates[e.context.selectedDates.length-1]!==l&&n.setAttribute(\"data-vc-date-selected\",\"middle\"))):n.hasAttribute(\"data-vc-date-selected\")&&(n.removeAttribute(\"data-vc-date-selected\"),a&&a.removeAttribute(\"aria-selected\")),!e.context.disableDates.includes(l)&&e.enableEdgeDatesOnly&&e.context.selectedDates.length>1&&\"multiple-ranged\"===e.selectionDatesMode){const t=getDate(e.context.selectedDates[0]),a=getDate(e.context.selectedDates[e.context.selectedDates.length-1]),o=getDate(l);updateAttribute(n,o>t&&o<a,\"data-vc-date-selected\",\"middle\")}},getLocaleString=(e,t,n)=>new Date(`${e}T00:00:00.000Z`).toLocaleString(t,n),getWeekNumber=(e,t)=>{const n=getDate(e),a=(n.getDay()-t+7)%7;n.setDate(n.getDate()+4-a);const o=new Date(n.getFullYear(),0,1),l=Math.ceil(((+n-+o)/864e5+1)/7);return{year:n.getFullYear(),week:l}},addWeekNumberForDate=(e,t,n)=>{const a=getWeekNumber(n,e.firstWeekday);a&&(t.dataset.vcDateWeekNumber=String(a.week))},setDaysAsDisabled=(e,t,n)=>{var a,o,l,s,i;const r=null==(a=e.disableWeekdays)?void 0:a.includes(n),c=e.disableAllDates&&!!(null==(o=e.context.enableDates)?void 0:o[0]);!r&&!c||(null==(l=e.context.enableDates)?void 0:l.includes(t))||(null==(s=e.context.disableDates)?void 0:s.includes(t))||(e.context.disableDates.push(t),null==(i=e.context.disableDates)||i.sort(((e,t)=>+new Date(e)-+new Date(t))))},createDate=(e,t,n,a,o,l)=>{const s=getDate(o).getDay(),i=\"string\"==typeof e.locale&&e.locale.length?e.locale:\"en\",r=document.createElement(\"div\");let c;r.className=e.styles.date,r.dataset.vcDate=o,r.dataset.vcDateMonth=l,r.dataset.vcDateWeekDay=String(s),r.role=\"gridcell\",(\"current\"===l||e.displayDatesOutside)&&(c=document.createElement(\"button\"),c.className=e.styles.dateBtn,c.type=\"button\",c.ariaLabel=getLocaleString(o,i,{dateStyle:\"long\",timeZone:\"UTC\"}),c.dataset.vcDateBtn=\"\",c.innerText=String(a),r.appendChild(c)),e.enableWeekNumbers&&addWeekNumberForDate(e,r,o),setDaysAsDisabled(e,o,s),setDateModifier(e,t,r,c,s,o,l),n.addDate(r),e.onCreateDateEls&&e.onCreateDateEls(e,r)},createDatesFromCurrentMonth=(e,t,n,a,o)=>{for(let l=1;l<=n;l++){const n=new Date(a,o,l);createDate(e,a,t,l,getDateString(n),\"current\")}},createDatesFromNextMonth=(e,t,n,a,o)=>{const l=o+1===12?a+1:a,s=o+1===12?\"01\":o+2<10?`0${o+2}`:o+2;for(let o=1;o<=n;o++){const n=o<10?`0${o}`:String(o);createDate(e,a,t,o,`${l}-${s}-${n}`,\"next\")}},createDatesFromPrevMonth=(e,t,n,a,o)=>{let l=new Date(n,a,0).getDate()-(o-1);const s=0===a?n-1:n,i=0===a?12:a<10?`0${a}`:a;for(let a=o;a>0;a--,l++){createDate(e,n,t,l,`${s}-${i}-${l}`,\"prev\")}},createWeekNumbers=(e,t,n,a,o)=>{if(!e.enableWeekNumbers)return;a.textContent=\"\";const l=document.createElement(\"b\");l.className=e.styles.weekNumbersTitle,l.innerText=\"#\",l.dataset.vcWeekNumbers=\"title\",a.appendChild(l);const s=document.createElement(\"div\");s.className=e.styles.weekNumbersContent,s.dataset.vcWeekNumbers=\"content\",a.appendChild(s);const i=document.createElement(\"button\");i.type=\"button\",i.className=e.styles.weekNumber;const r=o.querySelectorAll(\"[data-vc-date]\"),c=Math.ceil((t+n)/7);for(let t=0;t<c;t++){const n=r[0===t?6:7*t].dataset.vcDate,a=getWeekNumber(n,e.firstWeekday);if(!a)return;const o=i.cloneNode(!0);o.innerText=String(a.week),o.dataset.vcWeekNumber=String(a.week),o.dataset.vcWeekYear=String(a.year),o.role=\"rowheader\",o.ariaLabel=`${a.week}`,s.appendChild(o)}},createDates=e=>{const t=new Date(e.context.selectedYear,e.context.selectedMonth,1),n=e.context.mainElement.querySelectorAll('[data-vc=\"dates\"]'),a=e.context.mainElement.querySelectorAll('[data-vc-week=\"numbers\"]');n.forEach(((n,o)=>{e.selectionDatesMode||(n.dataset.vcDatesDisabled=\"\"),n.textContent=\"\";const l=new Date(t);l.setMonth(l.getMonth()+o);const s=l.getMonth(),i=l.getFullYear(),r=(new Date(i,s,1).getDay()-e.firstWeekday+7)%7,c=new Date(i,s+1,0).getDate(),d=r+c,u=Math.ceil(d/7),m=7*u-d,p=[];for(let t=0;t<u;t++){const t=document.createElement(\"div\");t.className=e.styles.datesRow,t.setAttribute(\"data-vc-dates\",\"row\"),t.setAttribute(\"role\",\"row\"),p.push(t)}let h=0,v=0;const g={addDate:e=>{p[h].appendChild(e),v++,v>=7&&(h++,v=0)}};createDatesFromPrevMonth(e,g,i,s,r),createDatesFromCurrentMonth(e,g,c,i,s),createDatesFromNextMonth(e,g,m,i,s);for(const e of p)n.appendChild(e);createDatePopup(e,n),createWeekNumbers(e,r,c,a[o],n)}))},layoutDefault=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [month] />\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n    <#ArrowNext [month] />\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <#WeekNumbers />\\n    <div class=\"${e.styles.content}\" data-vc=\"content\" role=\"grid\">\\n      <#Week />\\n      <#Dates />\\n      <#DateRangeTooltip />\\n    </div>\\n  </div>\\n  <#ControlTime />\\n`,layoutMonths=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <div class=\"${e.styles.content}\" data-vc=\"content\">\\n      <#Months />\\n    </div>\\n  </div>\\n`,layoutMultiple=e=>`\\n  <div class=\"${e.styles.controls}\" data-vc=\"controls\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [month] />\\n    <#ArrowNext [month] />\\n  </div>\\n  <div class=\"${e.styles.grid}\" data-vc=\"grid\">\\n    <#Multiple>\\n      <div class=\"${e.styles.column}\" data-vc=\"column\" role=\"region\">\\n        <div class=\"${e.styles.header}\" data-vc=\"header\">\\n          <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n            <#Month />\\n            <#Year />\\n          </div>\\n        </div>\\n        <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n          <#WeekNumbers />\\n          <div class=\"${e.styles.content}\" data-vc=\"content\" role=\"grid\">\\n            <#Week />\\n            <#Dates />\\n          </div>\\n        </div>\\n      </div>\\n    <#/Multiple>\\n    <#DateRangeTooltip />\\n  </div>\\n  <#ControlTime />\\n`,layoutYears=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [year] />\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n    <#ArrowNext [year] />\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <div class=\"${e.styles.content}\" data-vc=\"content\">\\n      <#Years />\\n    </div>\\n  </div>\\n`,ArrowNext=(e,t)=>`<button type=\"button\" class=\"${e.styles.arrowNext}\" data-vc-arrow=\"next\" aria-label=\"${e.labels.arrowNext[t]}\"></button>`,ArrowPrev=(e,t)=>`<button type=\"button\" class=\"${e.styles.arrowPrev}\" data-vc-arrow=\"prev\" aria-label=\"${e.labels.arrowPrev[t]}\"></button>`,ControlTime=e=>e.selectionTimeMode?`<div class=\"${e.styles.time}\" data-vc=\"time\" role=\"group\" aria-label=\"${e.labels.selectingTime}\"></div>`:\"\",DateRangeTooltip=e=>e.onCreateDateRangeTooltip?`<div class=\"${e.styles.dateRangeTooltip}\" data-vc-date-range-tooltip=\"hidden\"></div>`:\"\",Dates=e=>`<div class=\"${e.styles.dates}\" data-vc=\"dates\" aria-live=\"assertive\" aria-label=\"${e.labels.dates}\" ${\"multiple\"===e.type?\"aria-multiselectable\":\"\"}></div>`,Month=e=>`<button type=\"button\" class=\"${e.styles.month}\" data-vc=\"month\"></button>`,Months=e=>`<div class=\"${e.styles.months}\" data-vc=\"months\" role=\"grid\" aria-live=\"assertive\" aria-label=\"${e.labels.months}\"></div>`,Week=e=>`<div class=\"${e.styles.week}\" data-vc=\"week\" role=\"row\" aria-label=\"${e.labels.week}\"></div>`,WeekNumbers=e=>e.enableWeekNumbers?`<div class=\"${e.styles.weekNumbers}\" data-vc-week=\"numbers\" role=\"row\" aria-label=\"${e.labels.weekNumber}\"></div>`:\"\",Year=e=>`<button type=\"button\" class=\"${e.styles.year}\" data-vc=\"year\"></button>`,Years=e=>`<div class=\"${e.styles.years}\" data-vc=\"years\" role=\"grid\" aria-live=\"assertive\" aria-label=\"${e.labels.years}\"></div>`,components={ArrowNext:ArrowNext,ArrowPrev:ArrowPrev,ControlTime:ControlTime,Dates:Dates,DateRangeTooltip:DateRangeTooltip,Month:Month,Months:Months,Week:Week,WeekNumbers:WeekNumbers,Year:Year,Years:Years},getComponent=e=>components[e],parseLayout=(e,t)=>t.replace(/[\\n\\t]/g,\"\").replace(/<#(?!\\/?Multiple)(.*?)>/g,((t,n)=>{const a=(n.match(/\\[(.*?)\\]/)||[])[1],o=n.replace(/[/\\s\\n\\t]|\\[(.*?)\\]/g,\"\"),l=getComponent(o),s=l?l(e,null!=a?a:null):\"\";return e.sanitizerHTML(s)})).replace(/[\\n\\t]/g,\"\"),parseMultipleLayout=(e,t)=>t.replace(new RegExp(\"<#Multiple>(.*?)<#\\\\/Multiple>\",\"gs\"),((t,n)=>{const a=Array(e.context.displayMonthsCount).fill(n).join(\"\");return e.sanitizerHTML(a)})).replace(/[\\n\\t]/g,\"\"),createLayouts=(e,t)=>{const n={default:layoutDefault,month:layoutMonths,year:layoutYears,multiple:layoutMultiple};if(Object.keys(n).forEach((t=>{const a=t;e.layouts[a].length||(e.layouts[a]=n[a](e))})),e.context.mainElement.className=e.styles.calendar,e.context.mainElement.dataset.vc=\"calendar\",e.context.mainElement.dataset.vcType=e.context.currentType,e.context.mainElement.role=\"application\",e.context.mainElement.tabIndex=0,e.context.mainElement.ariaLabel=e.labels.application,\"multiple\"!==e.context.currentType){if(\"multiple\"===e.type&&t){const n=e.context.mainElement.querySelector('[data-vc=\"controls\"]'),a=e.context.mainElement.querySelector('[data-vc=\"grid\"]'),o=t.closest('[data-vc=\"column\"]');return n&&n.remove(),a&&(a.dataset.vcGrid=\"hidden\"),o&&(o.dataset.vcColumn=e.context.currentType),void(o&&(o.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))))}e.context.mainElement.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))}else e.context.mainElement.innerHTML=e.sanitizerHTML(parseMultipleLayout(e,parseLayout(e,e.layouts[e.context.currentType])))},setVisibilityArrows=(e,t,n,a)=>{e.style.visibility=n?\"hidden\":\"\",t.style.visibility=a?\"hidden\":\"\"},handleDefaultType=(e,t,n)=>{const a=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1))),o=new Date(a.getTime()),l=new Date(a.getTime());o.setMonth(o.getMonth()-e.monthsToSwitch),l.setMonth(l.getMonth()+e.monthsToSwitch);const s=getDate(e.context.dateMin),i=getDate(e.context.dateMax);e.selectionYearsMode||(s.setFullYear(a.getFullYear()),i.setFullYear(a.getFullYear()));const r=!e.selectionMonthsMode||o.getFullYear()<s.getFullYear()||o.getFullYear()===s.getFullYear()&&o.getMonth()<s.getMonth(),c=!e.selectionMonthsMode||l.getFullYear()>i.getFullYear()||l.getFullYear()===i.getFullYear()&&l.getMonth()>i.getMonth()-(e.context.displayMonthsCount-1);setVisibilityArrows(t,n,r,c)},handleYearType=(e,t,n)=>{const a=getDate(e.context.dateMin),o=getDate(e.context.dateMax),l=!!(a.getFullYear()&&e.context.displayYear-7<=a.getFullYear()),s=!!(o.getFullYear()&&e.context.displayYear+7>=o.getFullYear());setVisibilityArrows(t,n,l,s)},visibilityArrows=e=>{if(\"month\"===e.context.currentType)return;const t=e.context.mainElement.querySelector('[data-vc-arrow=\"prev\"]'),n=e.context.mainElement.querySelector('[data-vc-arrow=\"next\"]');if(!t||!n)return;({default:()=>handleDefaultType(e,t,n),year:()=>handleYearType(e,t,n)})[\"multiple\"===e.context.currentType?\"default\":e.context.currentType]()},visibilityHandler=(e,t,n,a,o)=>{const l=new Date(a.setFullYear(e.context.selectedYear,e.context.selectedMonth+n)).getFullYear(),s=new Date(a.setMonth(e.context.selectedMonth+n)).getMonth(),i=e.context.locale.months.long[s],r=t.closest('[data-vc=\"column\"]');r&&(r.ariaLabel=`${i} ${l}`);const c={month:{id:s,label:i},year:{id:l,label:l}};t.innerText=String(c[o].label),t.dataset[`vc${o.charAt(0).toUpperCase()+o.slice(1)}`]=String(c[o].id),t.ariaLabel=`${e.labels[o]} ${c[o].label}`;const d={month:e.selectionMonthsMode,year:e.selectionYearsMode},u=!1===d[o]||\"only-arrows\"===d[o];u&&(t.tabIndex=-1),t.disabled=u},visibilityTitle=e=>{const t=e.context.mainElement.querySelectorAll('[data-vc=\"month\"]'),n=e.context.mainElement.querySelectorAll('[data-vc=\"year\"]'),a=new Date(e.context.selectedYear,e.context.selectedMonth,1);[t,n].forEach((t=>null==t?void 0:t.forEach(((t,n)=>visibilityHandler(e,t,n,a,t.dataset.vc)))))},setYearModifier=(e,t,n,a,o)=>{var l;const s={month:\"[data-vc-months-month]\",year:\"[data-vc-years-year]\"},i={month:{selected:\"data-vc-months-month-selected\",aria:\"aria-selected\",value:\"vcMonthsMonth\",selectedProperty:\"selectedMonth\"},year:{selected:\"data-vc-years-year-selected\",aria:\"aria-selected\",value:\"vcYearsYear\",selectedProperty:\"selectedYear\"}};o&&(null==(l=e.context.mainElement.querySelectorAll(s[n]))||l.forEach((e=>{e.removeAttribute(i[n].selected),e.removeAttribute(i[n].aria)})),setContext(e,i[n].selectedProperty,Number(t.dataset[i[n].value])),visibilityTitle(e),\"year\"===n&&visibilityArrows(e)),a&&(t.setAttribute(i[n].selected,\"\"),t.setAttribute(i[n].aria,\"true\"))},getColumnID=(e,t)=>{var n;if(\"multiple\"!==e.type)return{currentValue:null,columnID:0};const a=e.context.mainElement.querySelectorAll('[data-vc=\"column\"]'),o=Array.from(a).findIndex((e=>e.closest(`[data-vc-column=\"${t}\"]`)));return{currentValue:o>=0?Number(null==(n=a[o].querySelector(`[data-vc=\"${t}\"]`))?void 0:n.getAttribute(`data-vc-${t}`)):null,columnID:Math.max(o,0)}},createMonthEl=(e,t,n,a,o,l,s)=>{const i=t.cloneNode(!1);return i.className=e.styles.monthsMonth,i.innerText=a,i.ariaLabel=o,i.role=\"gridcell\",i.dataset.vcMonthsMonth=`${s}`,l&&(i.ariaDisabled=\"true\"),l&&(i.tabIndex=-1),i.disabled=l,setYearModifier(e,i,\"month\",n===s,!1),i},createMonths=(e,t)=>{var n,a;const o=null==(n=null==t?void 0:t.closest('[data-vc=\"header\"]'))?void 0:n.querySelector('[data-vc=\"year\"]'),l=o?Number(o.dataset.vcYear):e.context.selectedYear,s=(null==t?void 0:t.dataset.vcMonth)?Number(t.dataset.vcMonth):e.context.selectedMonth;setContext(e,\"currentType\",\"month\"),createLayouts(e,t),visibilityTitle(e);const i=e.context.mainElement.querySelector('[data-vc=\"months\"]');if(!e.selectionMonthsMode||!i)return;const r=e.monthsToSwitch>1?e.context.locale.months.long.map(((t,n)=>s-e.monthsToSwitch*n)).concat(e.context.locale.months.long.map(((t,n)=>s+e.monthsToSwitch*n))).filter((e=>e>=0&&e<=12)):Array.from(Array(12).keys()),c=document.createElement(\"button\");c.type=\"button\";for(let t=0;t<12;t++){const n=getDate(e.context.dateMin),a=getDate(e.context.dateMax),o=e.context.displayMonthsCount-1,{columnID:d}=getColumnID(e,\"month\"),u=l<=n.getFullYear()&&t<n.getMonth()+d||l>=a.getFullYear()&&t>a.getMonth()-o+d||l>a.getFullYear()||t!==s&&!r.includes(t),m=createMonthEl(e,c,s,e.context.locale.months.short[t],e.context.locale.months.long[t],u,t);i.appendChild(m),e.onCreateMonthEls&&e.onCreateMonthEls(e,m)}null==(a=e.context.mainElement.querySelector(\"[data-vc-months-month]:not([disabled])\"))||a.focus()},TimeInput=(e,t,n,a,o)=>`\\n  <label class=\"${t}\" data-vc-time-input=\"${e}\">\\n    <input type=\"text\" name=\"${e}\" maxlength=\"2\" aria-label=\"${n[`input${e.charAt(0).toUpperCase()+e.slice(1)}`]}\" value=\"${a}\" ${o?\"disabled\":\"\"}>\\n  </label>\\n`,TimeRange=(e,t,n,a,o,l,s)=>`\\n  <label class=\"${t}\" data-vc-time-range=\"${e}\">\\n    <input type=\"range\" name=\"${e}\" min=\"${a}\" max=\"${o}\" step=\"${l}\" aria-label=\"${n[`range${e.charAt(0).toUpperCase()+e.slice(1)}`]}\" value=\"${s}\">\\n  </label>\\n`,handleActions=(e,t,n,a)=>{({hour:()=>setContext(e,\"selectedHours\",n),minute:()=>setContext(e,\"selectedMinutes\",n)})[a](),setContext(e,\"selectedTime\",`${e.context.selectedHours}:${e.context.selectedMinutes}${e.context.selectedKeeping?` ${e.context.selectedKeeping}`:\"\"}`),e.onChangeTime&&e.onChangeTime(e,t,!1),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t)},transformTime24=(e,t)=>{var n;return(null==(n={0:{AM:\"00\",PM:\"12\"},1:{AM:\"01\",PM:\"13\"},2:{AM:\"02\",PM:\"14\"},3:{AM:\"03\",PM:\"15\"},4:{AM:\"04\",PM:\"16\"},5:{AM:\"05\",PM:\"17\"},6:{AM:\"06\",PM:\"18\"},7:{AM:\"07\",PM:\"19\"},8:{AM:\"08\",PM:\"20\"},9:{AM:\"09\",PM:\"21\"},10:{AM:\"10\",PM:\"22\"},11:{AM:\"11\",PM:\"23\"},12:{AM:\"00\",PM:\"12\"}}[Number(e)])?void 0:n[t])||String(e)},handleClickKeepingTime=(e,t,n,a,o)=>{const l=l=>{const s=\"AM\"===e.context.selectedKeeping?\"PM\":\"AM\",i=transformTime24(e.context.selectedHours,s);Number(i)<=a&&Number(i)>=o?(setContext(e,\"selectedKeeping\",s),n.value=i,handleActions(e,l,e.context.selectedHours,\"hour\"),t.ariaLabel=`${e.labels.btnKeeping} ${e.context.selectedKeeping}`,t.innerText=e.context.selectedKeeping):e.onChangeTime&&e.onChangeTime(e,l,!0)};return t.addEventListener(\"click\",l),()=>{t.removeEventListener(\"click\",l)}},transformTime12=e=>({0:\"12\",13:\"01\",14:\"02\",15:\"03\",16:\"04\",17:\"05\",18:\"06\",19:\"07\",20:\"08\",21:\"09\",22:\"10\",23:\"11\"}[Number(e)]||String(e)),updateInputAndRange=(e,t,n,a)=>{e.value=n,t.value=a},updateKeepingTime$1=(e,t,n)=>{t&&n&&(setContext(e,\"selectedKeeping\",n),t.innerText=n)},handleInput$1=(e,t,n,a,o,l,s)=>{const i={hour:(i,r,c)=>{if(!e.selectionTimeMode)return;({12:()=>{if(!e.context.selectedKeeping)return;const d=Number(transformTime24(r,e.context.selectedKeeping));if(!(d<=l&&d>=s))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,transformTime12(r),transformTime24(r,e.context.selectedKeeping)),i>12&&updateKeepingTime$1(e,a,\"PM\"),handleActions(e,c,transformTime12(r),o)},24:()=>{if(!(i<=l&&i>=s))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,r,r),handleActions(e,c,r,o)}})[e.selectionTimeMode]()},minute:(a,i,r)=>{if(!(a<=l&&a>=s))return n.value=e.context.selectedMinutes,void(e.onChangeTime&&e.onChangeTime(e,r,!0));n.value=i,t.value=i,handleActions(e,r,i,o)}},r=e=>{const t=Number(n.value),a=n.value.padStart(2,\"0\");i[o]&&i[o](t,a,e)};return n.addEventListener(\"change\",r),()=>{n.removeEventListener(\"change\",r)}},updateInputAndTime=(e,t,n,a,o)=>{t.value=o,handleActions(e,n,o,a)},updateKeepingTime=(e,t,n)=>{t&&(setContext(e,\"selectedKeeping\",n),t.innerText=n)},handleRange=(e,t,n,a,o)=>{const l=l=>{const s=Number(t.value),i=t.value.padStart(2,\"0\"),r=\"hour\"===o,c=24===e.selectionTimeMode,d=s>0&&s<12;r&&!c&&updateKeepingTime(e,a,0===s||d?\"AM\":\"PM\"),updateInputAndTime(e,n,l,o,!r||c||d?i:transformTime12(t.value))};return t.addEventListener(\"input\",l),()=>{t.removeEventListener(\"input\",l)}},handleMouseOver=e=>e.setAttribute(\"data-vc-input-focus\",\"\"),handleMouseOut=e=>e.removeAttribute(\"data-vc-input-focus\"),handleTime=(e,t)=>{const n=t.querySelector('[data-vc-time-range=\"hour\"] input[name=\"hour\"]'),a=t.querySelector('[data-vc-time-range=\"minute\"] input[name=\"minute\"]'),o=t.querySelector('[data-vc-time-input=\"hour\"] input[name=\"hour\"]'),l=t.querySelector('[data-vc-time-input=\"minute\"] input[name=\"minute\"]'),s=t.querySelector('[data-vc-time=\"keeping\"]');if(!(n&&a&&o&&l))return;const i=e=>{e.target===n&&handleMouseOver(o),e.target===a&&handleMouseOver(l)},r=e=>{e.target===n&&handleMouseOut(o),e.target===a&&handleMouseOut(l)};return t.addEventListener(\"mouseover\",i),t.addEventListener(\"mouseout\",r),handleInput$1(e,n,o,s,\"hour\",e.timeMaxHour,e.timeMinHour),handleInput$1(e,a,l,s,\"minute\",e.timeMaxMinute,e.timeMinMinute),handleRange(e,n,o,s,\"hour\"),handleRange(e,a,l,s,\"minute\"),s&&handleClickKeepingTime(e,s,n,e.timeMaxHour,e.timeMinHour),()=>{t.removeEventListener(\"mouseover\",i),t.removeEventListener(\"mouseout\",r)}},createTime=e=>{const t=e.context.mainElement.querySelector('[data-vc=\"time\"]');if(!e.selectionTimeMode||!t)return;const[n,a]=[e.timeMinHour,e.timeMaxHour],[o,l]=[e.timeMinMinute,e.timeMaxMinute],s=e.context.selectedKeeping?transformTime24(e.context.selectedHours,e.context.selectedKeeping):e.context.selectedHours,i=\"range\"===e.timeControls;var r;t.innerHTML=e.sanitizerHTML(`\\n    <div class=\"${e.styles.timeContent}\" data-vc-time=\"content\">\\n      ${TimeInput(\"hour\",e.styles.timeHour,e.labels,e.context.selectedHours,i)}\\n      ${TimeInput(\"minute\",e.styles.timeMinute,e.labels,e.context.selectedMinutes,i)}\\n      ${12===e.selectionTimeMode?(r=e.context.selectedKeeping,`<button type=\"button\" class=\"${e.styles.timeKeeping}\" aria-label=\"${e.labels.btnKeeping} ${r}\" data-vc-time=\"keeping\" ${i?\"disabled\":\"\"}>${r}</button>`):\"\"}\\n    </div>\\n    <div class=\"${e.styles.timeRanges}\" data-vc-time=\"ranges\">\\n      ${TimeRange(\"hour\",e.styles.timeRange,e.labels,n,a,e.timeStepHour,s)}\\n      ${TimeRange(\"minute\",e.styles.timeRange,e.labels,o,l,e.timeStepMinute,e.context.selectedMinutes)}\\n    </div>\\n  `),handleTime(e,t)},createWeek=e=>{const t=e.selectedWeekends?[...e.selectedWeekends]:[],n=[...e.context.locale.weekdays.long].reduce(((n,a,o)=>[...n,{id:o,titleShort:e.context.locale.weekdays.short[o],titleLong:a,isWeekend:t.includes(o)}]),[]),a=[...n.slice(e.firstWeekday),...n.slice(0,e.firstWeekday)];e.context.mainElement.querySelectorAll('[data-vc=\"week\"]').forEach((t=>{const n=e.onClickWeekDay?document.createElement(\"button\"):document.createElement(\"b\");e.onClickWeekDay&&(n.type=\"button\"),a.forEach((a=>{const o=n.cloneNode(!0);o.innerText=a.titleShort,o.className=e.styles.weekDay,o.role=\"columnheader\",o.ariaLabel=a.titleLong,o.dataset.vcWeekDay=String(a.id),a.isWeekend&&(o.dataset.vcWeekDayOff=\"\"),t.appendChild(o)}))}))},createYearEl=(e,t,n,a,o)=>{const l=t.cloneNode(!1);return l.className=e.styles.yearsYear,l.innerText=String(o),l.ariaLabel=String(o),l.role=\"gridcell\",l.dataset.vcYearsYear=`${o}`,a&&(l.ariaDisabled=\"true\"),a&&(l.tabIndex=-1),l.disabled=a,setYearModifier(e,l,\"year\",n===o,!1),l},createYears=(e,t)=>{var n;const a=(null==t?void 0:t.dataset.vcYear)?Number(t.dataset.vcYear):e.context.selectedYear;setContext(e,\"currentType\",\"year\"),createLayouts(e,t),visibilityTitle(e),visibilityArrows(e);const o=e.context.mainElement.querySelector('[data-vc=\"years\"]');if(!e.selectionYearsMode||!o)return;const l=\"multiple\"!==e.type||e.context.selectedYear===a?0:1,s=document.createElement(\"button\");s.type=\"button\";for(let t=e.context.displayYear-7;t<e.context.displayYear+8;t++){const n=t<getDate(e.context.dateMin).getFullYear()+l||t>getDate(e.context.dateMax).getFullYear(),i=createYearEl(e,s,a,n,t);o.appendChild(i),e.onCreateYearEls&&e.onCreateYearEls(e,i)}null==(n=e.context.mainElement.querySelector(\"[data-vc-years-year]:not([disabled])\"))||n.focus()},trackChangesHTMLElement=(e,t,n)=>{new MutationObserver((e=>{for(let a=0;a<e.length;a++){if(e[a].attributeName===t){n();break}}})).observe(e,{attributes:!0})},haveListener={value:!1,set:()=>haveListener.value=!0,check:()=>haveListener.value},setTheme=(e,t)=>e.dataset.vcTheme=t,trackChangesThemeInSystemSettings=(e,t)=>{if(setTheme(e.context.mainElement,t.matches?\"dark\":\"light\"),\"system\"!==e.selectedTheme||haveListener.check())return;const n=e=>{const t=document.querySelectorAll('[data-vc=\"calendar\"]');null==t||t.forEach((t=>setTheme(t,e.matches?\"dark\":\"light\")))};t.addEventListener?t.addEventListener(\"change\",n):t.addListener(n),haveListener.set()},detectTheme=(e,t)=>{const n=e.themeAttrDetect.length?document.querySelector(e.themeAttrDetect):null,a=e.themeAttrDetect.replace(/^.*\\[(.+)\\]/g,((e,t)=>t));if(!n||\"system\"===n.getAttribute(a))return void trackChangesThemeInSystemSettings(e,t);const o=n.getAttribute(a);o?(setTheme(e.context.mainElement,o),trackChangesHTMLElement(n,a,(()=>{const t=n.getAttribute(a);t&&setTheme(e.context.mainElement,t)}))):trackChangesThemeInSystemSettings(e,t)},handleTheme=e=>{\"not all\"!==window.matchMedia(\"(prefers-color-scheme)\").media?\"system\"===e.selectedTheme?detectTheme(e,window.matchMedia(\"(prefers-color-scheme: dark)\")):setTheme(e.context.mainElement,e.selectedTheme):setTheme(e.context.mainElement,\"light\")},capitalizeFirstLetter=e=>e.charAt(0).toUpperCase()+e.slice(1).replace(/\\./,\"\"),getLocaleWeekday=(e,t,n)=>{const a=new Date(`1978-01-0${t+1}T00:00:00.000Z`),o=a.toLocaleString(n,{weekday:\"short\",timeZone:\"UTC\"}),l=a.toLocaleString(n,{weekday:\"long\",timeZone:\"UTC\"});e.context.locale.weekdays.short.push(capitalizeFirstLetter(o)),e.context.locale.weekdays.long.push(capitalizeFirstLetter(l))},getLocaleMonth=(e,t,n)=>{const a=new Date(`1978-${String(t+1).padStart(2,\"0\")}-01T00:00:00.000Z`),o=a.toLocaleString(n,{month:\"short\",timeZone:\"UTC\"}),l=a.toLocaleString(n,{month:\"long\",timeZone:\"UTC\"});e.context.locale.months.short.push(capitalizeFirstLetter(o)),e.context.locale.months.long.push(capitalizeFirstLetter(l))},getLocale=e=>{var t,n,a,o,l,s,i,r;if(!(e.context.locale.weekdays.short[6]&&e.context.locale.weekdays.long[6]&&e.context.locale.months.short[11]&&e.context.locale.months.long[11]))if(\"string\"==typeof e.locale){if(\"string\"==typeof e.locale&&!e.locale.length)throw new Error(errorMessages.notLocale);Array.from({length:7},((t,n)=>getLocaleWeekday(e,n,e.locale))),Array.from({length:12},((t,n)=>getLocaleMonth(e,n,e.locale)))}else{if(!((null==(n=null==(t=e.locale)?void 0:t.weekdays)?void 0:n.short[6])&&(null==(o=null==(a=e.locale)?void 0:a.weekdays)?void 0:o.long[6])&&(null==(s=null==(l=e.locale)?void 0:l.months)?void 0:s.short[11])&&(null==(r=null==(i=e.locale)?void 0:i.months)?void 0:r.long[11])))throw new Error(errorMessages.notLocale);setContext(e,\"locale\",__spreadValues({},e.locale))}},create=e=>{const t={default:()=>{createWeek(e),createDates(e)},multiple:()=>{createWeek(e),createDates(e)},month:()=>createMonths(e),year:()=>createYears(e)};handleTheme(e),getLocale(e),createLayouts(e),visibilityTitle(e),visibilityArrows(e),createTime(e),t[e.context.currentType]()},handleArrowKeys=e=>{const t=t=>{var n;const a=t.target;if(![\"ArrowUp\",\"ArrowDown\",\"ArrowLeft\",\"ArrowRight\"].includes(t.key)||\"button\"!==a.localName)return;const o=Array.from(e.context.mainElement.querySelectorAll('[data-vc=\"calendar\"] button')),l=o.indexOf(a);if(-1===l)return;const s=(i=o[l]).hasAttribute(\"data-vc-date-btn\")?7:i.hasAttribute(\"data-vc-months-month\")?4:i.hasAttribute(\"data-vc-years-year\")?5:1;var i;const r=(0,{ArrowUp:()=>Math.max(0,l-s),ArrowDown:()=>Math.min(o.length-1,l+s),ArrowLeft:()=>Math.max(0,l-1),ArrowRight:()=>Math.min(o.length-1,l+1)}[t.key])();null==(n=o[r])||n.focus()};return e.context.mainElement.addEventListener(\"keydown\",t),()=>e.context.mainElement.removeEventListener(\"keydown\",t)},handleMonth=(e,t)=>{const n=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1)));({prev:()=>n.setMonth(n.getMonth()-e.monthsToSwitch),next:()=>n.setMonth(n.getMonth()+e.monthsToSwitch)})[t](),setContext(e,\"selectedMonth\",n.getMonth()),setContext(e,\"selectedYear\",n.getFullYear()),visibilityTitle(e),visibilityArrows(e),createDates(e)},handleClickArrow=(e,t)=>{const n=t.target.closest(\"[data-vc-arrow]\");if(n){if([\"default\",\"multiple\"].includes(e.context.currentType))handleMonth(e,n.dataset.vcArrow);else if(\"year\"===e.context.currentType&&void 0!==e.context.displayYear){const a={prev:-15,next:15}[n.dataset.vcArrow];setContext(e,\"displayYear\",e.context.displayYear+a),createYears(e,t.target)}e.onClickArrow&&e.onClickArrow(e,t)}},resolveToggle=(e,t)=>void 0===t||(\"function\"==typeof t?t(e):t),canToggleSelection=e=>resolveToggle(e,e.enableDateToggle),handleSelectDate=(e,t,n)=>{const a=t.dataset.vcDate,o=t.closest(\"[data-vc-date][data-vc-date-selected]\"),l=canToggleSelection(e);if(o&&!l)return;const s=o?e.context.selectedDates.filter((e=>e!==a)):n?[...e.context.selectedDates,a]:[a];setContext(e,\"selectedDates\",s)},createDateRangeTooltip=(e,t,n)=>{if(!t)return;if(!n)return t.dataset.vcDateRangeTooltip=\"hidden\",void(t.textContent=\"\");const a=e.context.mainElement.getBoundingClientRect(),o=n.getBoundingClientRect();t.style.left=o.left-a.left+o.width/2+\"px\",t.style.top=o.bottom-a.top-o.height+\"px\",t.dataset.vcDateRangeTooltip=\"visible\",t.innerHTML=e.sanitizerHTML(e.onCreateDateRangeTooltip(e,n,t,o,a))},state={self:null,lastDateEl:null,isHovering:!1,rangeMin:void 0,rangeMax:void 0,tooltipEl:null,timeoutId:null},addHoverEffect=(e,t,n)=>{var a,o,l;if(!(null==(o=null==(a=state.self)?void 0:a.context)?void 0:o.selectedDates[0]))return;const s=getDateString(e);(null==(l=state.self.context.disableDates)?void 0:l.includes(s))||(state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${s}\"]`).forEach((e=>e.dataset.vcDateHover=\"\")),t.forEach((e=>e.dataset.vcDateHover=\"first\")),n.forEach((e=>{\"first\"===e.dataset.vcDateHover?e.dataset.vcDateHover=\"first-and-last\":e.dataset.vcDateHover=\"last\"})))},removeHoverEffect=()=>{var e,t;if(!(null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.mainElement))return;state.self.context.mainElement.querySelectorAll(\"[data-vc-date-hover]\").forEach((e=>e.removeAttribute(\"data-vc-date-hover\")))},handleHoverDatesEvent=e=>{var t,n;if(!e||!(null==(n=null==(t=state.self)?void 0:t.context)?void 0:n.selectedDates[0]))return;if(!e.closest('[data-vc=\"dates\"]'))return state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),void removeHoverEffect();const a=e.closest(\"[data-vc-date]\");if(!a||state.lastDateEl===a)return;state.lastDateEl=a,createDateRangeTooltip(state.self,state.tooltipEl,a),removeHoverEffect();const o=a.dataset.vcDate,l=getDate(state.self.context.selectedDates[0]),s=getDate(o),i=state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${state.self.context.selectedDates[0]}\"]`),r=state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${o}\"]`),[c,d]=l<s?[i,r]:[r,i],[u,m]=l<s?[l,s]:[s,l];for(let e=new Date(u);e<=m;e.setDate(e.getDate()+1))addHoverEffect(e,c,d)},handleHoverSelectedDatesRangeEvent=e=>{const t=null==e?void 0:e.closest(\"[data-vc-date-selected]\");if(!t&&state.lastDateEl)return state.lastDateEl=null,void createDateRangeTooltip(state.self,state.tooltipEl,null);t&&state.lastDateEl!==t&&(state.lastDateEl=t,createDateRangeTooltip(state.self,state.tooltipEl,t))},optimizedHoverHandler=e=>t=>{const n=t.target;state.isHovering||(state.isHovering=!0,requestAnimationFrame((()=>{e(n),state.isHovering=!1})))},optimizedHandleHoverDatesEvent=optimizedHoverHandler(handleHoverDatesEvent),optimizedHandleHoverSelectedDatesRangeEvent=optimizedHoverHandler(handleHoverSelectedDatesRangeEvent),handleCancelSelectionDates=e=>{state.self&&\"Escape\"===e.key&&(state.lastDateEl=null,setContext(state.self,\"selectedDates\",[]),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect())},handleMouseLeave=()=>{null!==state.timeoutId&&clearTimeout(state.timeoutId),state.timeoutId=setTimeout((()=>{state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect()}),50)},updateDisabledDates=()=>{var e,t,n,a;if(!(null==(n=null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.selectedDates)?void 0:n[0])||!(null==(a=state.self.context.disableDates)?void 0:a[0]))return;const o=getDate(state.self.context.selectedDates[0]),[l,s]=state.self.context.disableDates.map((e=>getDate(e))).reduce((([e,t],n)=>[o>=n?n:e,o<n&&null===t?n:t]),[null,null]);l&&setContext(state.self,\"displayDateMin\",getDateString(new Date(l.setDate(l.getDate()+1)))),s&&setContext(state.self,\"displayDateMax\",getDateString(new Date(s.setDate(s.getDate()-1))));state.self.disableDatesPast&&!state.self.disableAllDates&&getDate(state.self.context.displayDateMin)<getDate(state.self.context.dateToday)&&setContext(state.self,\"displayDateMin\",state.self.context.dateToday)},handleSelectDateRange=(e,t)=>{state.self=e,state.lastDateEl=t,removeHoverEffect(),e.disableDatesGaps&&(state.rangeMin=state.rangeMin?state.rangeMin:e.context.displayDateMin,state.rangeMax=state.rangeMax?state.rangeMax:e.context.displayDateMax),e.onCreateDateRangeTooltip&&(state.tooltipEl=e.context.mainElement.querySelector(\"[data-vc-date-range-tooltip]\"));const n=null==t?void 0:t.dataset.vcDate;if(n){const t=1===e.context.selectedDates.length&&e.context.selectedDates[0].includes(n),a=t&&!canToggleSelection(e)?[n,n]:t&&canToggleSelection(e)?[]:e.context.selectedDates.length>1?[n]:[...e.context.selectedDates,n];setContext(e,\"selectedDates\",a),e.context.selectedDates.length>1&&e.context.selectedDates.sort(((e,t)=>+new Date(e)-+new Date(t)))}({set:()=>(e.disableDatesGaps&&updateDisabledDates(),createDateRangeTooltip(state.self,state.tooltipEl,t),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),state.self.context.mainElement.addEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.addEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.addEventListener(\"keydown\",handleCancelSelectionDates),()=>{state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates)}),reset:()=>{const[n,a]=[e.context.selectedDates[0],e.context.selectedDates[e.context.selectedDates.length-1]],o=e.context.selectedDates[0]!==e.context.selectedDates[e.context.selectedDates.length-1],l=parseDates([`${n}:${a}`]).filter((t=>!e.context.disableDates.includes(t))),s=o?e.enableEdgeDatesOnly?[n,a]:l:[e.context.selectedDates[0],e.context.selectedDates[0]];if(setContext(e,\"selectedDates\",s),e.disableDatesGaps&&(setContext(e,\"displayDateMin\",state.rangeMin),setContext(e,\"displayDateMax\",state.rangeMax)),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),e.onCreateDateRangeTooltip)return e.context.selectedDates[0]||(state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,null)),e.context.selectedDates[0]&&(state.self.context.mainElement.addEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.addEventListener(\"mouseleave\",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,t)),()=>{state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave)}}})[1===e.context.selectedDates.length?\"set\":\"reset\"]()},updateDateModifier=e=>{e.context.mainElement.querySelectorAll(\"[data-vc-date]\").forEach((t=>{const n=t.querySelector(\"[data-vc-date-btn]\"),a=t.dataset.vcDate,o=getDate(a).getDay();setDateModifier(e,e.context.selectedYear,t,n,o,a,\"current\")}))},handleClickDate=(e,t)=>{var n;const a=t.target,o=a.closest(\"[data-vc-date-btn]\");if(!e.selectionDatesMode||![\"single\",\"multiple\",\"multiple-ranged\"].includes(e.selectionDatesMode)||!o)return;const l=o.closest(\"[data-vc-date]\");({single:()=>handleSelectDate(e,l,!1),multiple:()=>handleSelectDate(e,l,!0),\"multiple-ranged\":()=>handleSelectDateRange(e,l)})[e.selectionDatesMode](),null==(n=e.context.selectedDates)||n.sort(((e,t)=>+new Date(e)-+new Date(t))),e.onClickDate&&e.onClickDate(e,t),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t);const s=a.closest('[data-vc-date-month=\"prev\"]'),i=a.closest('[data-vc-date-month=\"next\"]');({prev:()=>e.enableMonthChangeOnDayClick?handleMonth(e,\"prev\"):updateDateModifier(e),next:()=>e.enableMonthChangeOnDayClick?handleMonth(e,\"next\"):updateDateModifier(e),current:()=>updateDateModifier(e)})[s?\"prev\":i?\"next\":\"current\"]()},typeClick=[\"month\",\"year\"],getValue=(e,t,n)=>{const{currentValue:a,columnID:o}=getColumnID(e,t);return\"month\"===e.context.currentType&&o>=0?n-o:\"year\"===e.context.currentType&&e.context.selectedYear!==a?n-1:n},handleMultipleYearSelection=(e,t)=>{const n=getValue(e,\"year\",Number(t.dataset.vcYearsYear)),a=getDate(e.context.dateMin),o=getDate(e.context.dateMax),l=e.context.displayMonthsCount-1,{columnID:s}=getColumnID(e,\"year\"),i=e.context.selectedMonth<a.getMonth()&&n<=a.getFullYear(),r=e.context.selectedMonth>o.getMonth()-l+s&&n>=o.getFullYear(),c=n<a.getFullYear(),d=n>o.getFullYear(),u=i||c?a.getFullYear():r||d?o.getFullYear():n,m=i||c?a.getMonth():r||d?o.getMonth()-l+s:e.context.selectedMonth;setContext(e,\"selectedYear\",u),setContext(e,\"selectedMonth\",m)},handleMultipleMonthSelection=(e,t)=>{const n=t.closest('[data-vc-column=\"month\"]').querySelector('[data-vc=\"year\"]'),a=getValue(e,\"month\",Number(t.dataset.vcMonthsMonth)),o=Number(n.dataset.vcYear),l=getDate(e.context.dateMin),s=getDate(e.context.dateMax),i=a<l.getMonth()&&o<=l.getFullYear(),r=a>s.getMonth()&&o>=s.getFullYear();setContext(e,\"selectedYear\",o),setContext(e,\"selectedMonth\",i?l.getMonth():r?s.getMonth():a)},handleItemClick=(e,t,n,a)=>{var o;({year:()=>{if(\"multiple\"===e.type)return handleMultipleYearSelection(e,a);setContext(e,\"selectedYear\",Number(a.dataset.vcYearsYear))},month:()=>{if(\"multiple\"===e.type)return handleMultipleMonthSelection(e,a);setContext(e,\"selectedMonth\",Number(a.dataset.vcMonthsMonth))}})[n]();({year:()=>{var n;return null==(n=e.onClickYear)?void 0:n.call(e,e,t)},month:()=>{var n;return null==(n=e.onClickMonth)?void 0:n.call(e,e,t)}})[n](),e.context.currentType!==e.type?(setContext(e,\"currentType\",e.type),create(e),null==(o=e.context.mainElement.querySelector(`[data-vc=\"${n}\"]`))||o.focus()):setYearModifier(e,a,n,!0,!0)},handleClickType=(e,t,n)=>{var a;const o=t.target,l=o.closest(`[data-vc=\"${n}\"]`),s={year:()=>createYears(e,o),month:()=>createMonths(e,o)};if(l&&e.onClickTitle&&e.onClickTitle(e,t),l&&e.context.currentType!==n)return s[n]();const i=o.closest(`[data-vc-${n}s-${n}]`);if(i)return handleItemClick(e,t,n,i);const r=o.closest('[data-vc=\"grid\"]'),c=o.closest('[data-vc=\"column\"]');(e.context.currentType===n&&l||\"multiple\"===e.type&&e.context.currentType===n&&r&&!c)&&(setContext(e,\"currentType\",e.type),create(e),null==(a=e.context.mainElement.querySelector(`[data-vc=\"${n}\"]`))||a.focus())},handleClickMonthOrYear=(e,t)=>{const n={month:e.selectionMonthsMode,year:e.selectionYearsMode};typeClick.forEach((a=>{n[a]&&t.target&&handleClickType(e,t,a)}))},handleClickWeekNumber=(e,t)=>{if(!e.enableWeekNumbers||!e.onClickWeekNumber)return;const n=t.target.closest(\"[data-vc-week-number]\"),a=e.context.mainElement.querySelectorAll(\"[data-vc-date-week-number]\");if(!n||!a[0])return;const o=Number(n.innerText),l=Number(n.dataset.vcWeekYear),s=Array.from(a).filter((e=>Number(e.dataset.vcDateWeekNumber)===o));e.onClickWeekNumber(e,o,l,s,t)},handleClickWeekDay=(e,t)=>{if(!e.onClickWeekDay)return;const n=t.target.closest(\"[data-vc-week-day]\"),a=t.target.closest('[data-vc=\"column\"]'),o=a?a.querySelectorAll(\"[data-vc-date-week-day]\"):e.context.mainElement.querySelectorAll(\"[data-vc-date-week-day]\");if(!n||!o[0])return;const l=Number(n.dataset.vcWeekDay),s=Array.from(o).filter((e=>Number(e.dataset.vcDateWeekDay)===l));e.onClickWeekDay(e,l,s,t)},handleClick=e=>{const t=t=>{handleClickArrow(e,t),handleClickWeekDay(e,t),handleClickWeekNumber(e,t),handleClickDate(e,t),handleClickMonthOrYear(e,t)};return e.context.mainElement.addEventListener(\"click\",t),()=>e.context.mainElement.removeEventListener(\"click\",t)},initMonthsCount=e=>{if(\"multiple\"===e.type&&(e.displayMonthsCount<=1||e.displayMonthsCount>12))throw new Error(errorMessages.incorrectMonthsCount);if(\"multiple\"!==e.type&&e.displayMonthsCount>1)throw new Error(errorMessages.incorrectMonthsCount);setContext(e,\"displayMonthsCount\",e.displayMonthsCount?e.displayMonthsCount:\"multiple\"===e.type?2:1)},getLocalDate=()=>{const e=new Date;return new Date(e.getTime()-6e4*e.getTimezoneOffset()).toISOString().substring(0,10)},resolveDate=(e,t)=>\"today\"===e?getLocalDate():e instanceof Date||\"number\"==typeof e||\"string\"==typeof e?parseDates([e])[0]:t,initRange=e=>{var t,n,a;const o=resolveDate(e.dateMin,e.dateMin),l=resolveDate(e.dateMax,e.dateMax),s=resolveDate(e.displayDateMin,o),i=resolveDate(e.displayDateMax,l);setContext(e,\"dateToday\",resolveDate(e.dateToday,e.dateToday)),setContext(e,\"displayDateMin\",s?getDate(o)>=getDate(s)?o:s:o),setContext(e,\"displayDateMax\",i?getDate(l)<=getDate(i)?l:i:l);const r=e.disableDatesPast&&!e.disableAllDates&&getDate(s)<getDate(e.context.dateToday);setContext(e,\"displayDateMin\",r||e.disableAllDates?e.context.dateToday:s),setContext(e,\"displayDateMax\",e.disableAllDates?e.context.dateToday:i),setContext(e,\"disableDates\",e.disableDates[0]&&!e.disableAllDates?parseDates(e.disableDates):e.disableAllDates?[e.context.displayDateMin]:[]),e.context.disableDates.length>1&&e.context.disableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),setContext(e,\"enableDates\",e.enableDates[0]?parseDates(e.enableDates):[]),(null==(t=e.context.enableDates)?void 0:t[0])&&(null==(n=e.context.disableDates)?void 0:n[0])&&setContext(e,\"disableDates\",e.context.disableDates.filter((t=>!e.context.enableDates.includes(t)))),e.context.enableDates.length>1&&e.context.enableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),(null==(a=e.context.enableDates)?void 0:a[0])&&e.disableAllDates&&(setContext(e,\"displayDateMin\",e.context.enableDates[0]),setContext(e,\"displayDateMax\",e.context.enableDates[e.context.enableDates.length-1])),setContext(e,\"dateMin\",e.displayDisabledDates?o:e.context.displayDateMin),setContext(e,\"dateMax\",e.displayDisabledDates?l:e.context.displayDateMax)},initSelectedDates=e=>{var t;setContext(e,\"selectedDates\",(null==(t=e.selectedDates)?void 0:t[0])?parseDates(e.selectedDates):[])},displayClosestValidDate=e=>{const t=t=>{const n=new Date(t);setInitialContext(e,n.getMonth(),n.getFullYear())};if(e.displayDateMin&&\"today\"!==e.displayDateMin&&(n=e.displayDateMin,a=new Date,new Date(n).getTime()>a.getTime())){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMin;return t(getDate(resolveDate(n,e.displayDateMin))),!0}var n,a;if(e.displayDateMax&&\"today\"!==e.displayDateMax&&((e,t)=>new Date(e).getTime()<t.getTime())(e.displayDateMax,new Date)){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMax;return t(getDate(resolveDate(n,e.displayDateMax))),!0}return!1},setInitialContext=(e,t,n)=>{setContext(e,\"selectedMonth\",t),setContext(e,\"selectedYear\",n),setContext(e,\"displayYear\",n)},initSelectedMonthYear=e=>{var t;if(e.enableJumpToSelectedDate&&(null==(t=e.selectedDates)?void 0:t[0])&&void 0===e.selectedMonth&&void 0===e.selectedYear){const t=getDate(parseDates(e.selectedDates)[0]);return void setInitialContext(e,t.getMonth(),t.getFullYear())}if(displayClosestValidDate(e))return;const n=void 0!==e.selectedMonth&&Number(e.selectedMonth)>=0&&Number(e.selectedMonth)<12,a=void 0!==e.selectedYear&&Number(e.selectedYear)>=0&&Number(e.selectedYear)<=9999;setInitialContext(e,n?Number(e.selectedMonth):getDate(e.context.dateToday).getMonth(),a?Number(e.selectedYear):getDate(e.context.dateToday).getFullYear())},initTime=e=>{var t,n,a;if(!e.selectionTimeMode)return;if(![12,24].includes(e.selectionTimeMode))throw new Error(errorMessages.incorrectTime);const o=12===e.selectionTimeMode,l=o?/^(0[1-9]|1[0-2]):([0-5][0-9]) ?(AM|PM)?$/i:/^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/;let[s,i,r]=null!=(a=null==(n=null==(t=e.selectedTime)?void 0:t.match(l))?void 0:n.slice(1))?a:[];s?o&&!r&&(r=\"AM\"):(s=o?transformTime12(String(e.timeMinHour)):String(e.timeMinHour),i=String(e.timeMinMinute),r=o?Number(transformTime12(String(e.timeMinHour)))>=12?\"PM\":\"AM\":null),setContext(e,\"selectedHours\",s.padStart(2,\"0\")),setContext(e,\"selectedMinutes\",i.padStart(2,\"0\")),setContext(e,\"selectedKeeping\",r),setContext(e,\"selectedTime\",`${e.context.selectedHours}:${e.context.selectedMinutes}${r?` ${r}`:\"\"}`)},initAllVariables=e=>{setContext(e,\"currentType\",e.type),initMonthsCount(e),initRange(e),initSelectedMonthYear(e),initSelectedDates(e),initTime(e)},reset=(e,{year:t,month:n,dates:a,time:o,locale:l},s=!0)=>{var i;const r={year:e.selectedYear,month:e.selectedMonth,dates:e.selectedDates,time:e.selectedTime};if(e.selectedYear=t?r.year:e.context.selectedYear,e.selectedMonth=n?r.month:e.context.selectedMonth,e.selectedTime=o?r.time:e.context.selectedTime,e.selectedDates=\"only-first\"===a&&(null==(i=e.context.selectedDates)?void 0:i[0])?[e.context.selectedDates[0]]:!0===a?r.dates:e.context.selectedDates,l){setContext(e,\"locale\",{months:{short:[],long:[]},weekdays:{short:[],long:[]}})}initAllVariables(e),s&&create(e),e.selectedYear=r.year,e.selectedMonth=r.month,e.selectedDates=r.dates,e.selectedTime=r.time,\"multiple-ranged\"===e.selectionDatesMode&&a&&handleSelectDateRange(e,null)},createToInput=e=>{const t=document.createElement(\"div\");return t.className=e.styles.calendar,t.dataset.vc=\"calendar\",t.dataset.vcInput=\"\",t.dataset.vcCalendarHidden=\"\",setContext(e,\"inputModeInit\",!0),setContext(e,\"isShowInInputMode\",!1),setContext(e,\"mainElement\",t),document.body.appendChild(e.context.mainElement),reset(e,{year:!0,month:!0,dates:!0,time:!0,locale:!0}),setTimeout((()=>show(e))),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e)},canOpenOnFocus=e=>resolveToggle(e,e.openOnFocus),handleInput=e=>{setContext(e,\"inputElement\",e.context.mainElement);const t=()=>{e.context.inputModeInit?setTimeout((()=>show(e))):createToInput(e)};e.context.inputElement.addEventListener(\"click\",t);const n=\"function\"==typeof e.openOnFocus||!0===e.openOnFocus,a=()=>{shouldSkipOpenOnFocus(e)?clearSkipOpenOnFocus(e):canOpenOnFocus(e)&&t()};n&&e.context.inputElement.addEventListener(\"focus\",a);const o=t=>{const n=\"Tab\"===t.key&&!t.shiftKey,a=[\"ArrowUp\",\"ArrowDown\",\"ArrowLeft\",\"ArrowRight\"].includes(t.key);(n||a)&&(t=>{var n;if(!e.context.isShowInInputMode)return!1;if(document.activeElement!==e.context.inputElement)return!1;const a=e=>e.tabIndex>=0&&!e.hasAttribute(\"disabled\")&&\"true\"!==e.getAttribute(\"aria-disabled\"),o=null!=(n=document.createTreeWalker(e.context.mainElement,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>a(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}).nextNode())?n:a(e.context.mainElement)?e.context.mainElement:null;!o||o.tabIndex<0||(t.preventDefault(),o.focus())})(t)};return e.context.inputElement.addEventListener(\"keydown\",o),()=>{e.context.inputElement.removeEventListener(\"click\",t),n&&e.context.inputElement.removeEventListener(\"focus\",a),e.context.inputElement.removeEventListener(\"keydown\",o)}},init=e=>(setContext(e,\"originalElement\",e.context.mainElement.cloneNode(!0)),setContext(e,\"isInit\",!0),e.inputMode?handleInput(e):(initAllVariables(e),create(e),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e))),update=(e,t)=>{if(!e.context.isInit)throw new Error(errorMessages.notInit);reset(e,__spreadValues(__spreadValues({},{year:!0,month:!0,dates:!0,time:!0,locale:!0}),t),!(e.inputMode&&!e.context.inputModeInit)),e.onUpdate&&e.onUpdate(e)},replaceProperties=(e,t)=>{const n=Object.keys(t);for(let a=0;a<n.length;a++){const o=n[a];\"object\"!=typeof e[o]||\"object\"!=typeof t[o]||t[o]instanceof Date||Array.isArray(t[o])?void 0!==t[o]&&(e[o]=t[o]):replaceProperties(e[o],t[o])}},set=(e,t,n)=>{replaceProperties(e,t),e.context.isInit&&update(e,n)};function findBestPickerPosition(e,t){const n=\"left\";if(!t||!e)return n;const{canShow:a,parentPositions:o}=getAvailablePosition(e,t),l=a.left&&a.right;return(l&&a.bottom?\"center\":l&&a.top?[\"top\",\"center\"]:Array.isArray(o)?[\"bottom\"===o[0]?\"top\":\"bottom\",...o.slice(1)]:o)||n}const setPosition=(e,t,n)=>{if(!e)return;const a=\"auto\"===n?findBestPickerPosition(e,t):n,o={top:-t.offsetHeight,bottom:e.offsetHeight,left:0,center:e.offsetWidth/2-t.offsetWidth/2,right:e.offsetWidth-t.offsetWidth},l=Array.isArray(a)?a[0]:\"bottom\",s=Array.isArray(a)?a[1]:a;t.dataset.vcPosition=l;const{top:i,left:r}=getOffset(e),c=i+o[l];let d=r+o[s];const{vw:u}=getViewportDimensions();if(d+t.clientWidth>u){const e=window.innerWidth-document.body.clientWidth;d=u-t.clientWidth-e}else d<0&&(d=0);Object.assign(t.style,{left:`${d}px`,top:`${c}px`})},show=e=>{if(e.context.isShowInInputMode)return;if(!e.context.currentType)return void e.context.mainElement.click();setContext(e,\"cleanupHandlers\",[]),setContext(e,\"isShowInInputMode\",!0),e.inputMode&&restoreTabbing(e.context.mainElement),setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput),e.context.mainElement.removeAttribute(\"data-vc-calendar-hidden\");const t=()=>{setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput)};window.addEventListener(\"resize\",t),e.context.cleanupHandlers.push((()=>window.removeEventListener(\"resize\",t)));const n=t=>{\"Escape\"===t.key&&hide(e)};document.addEventListener(\"keydown\",n),e.context.cleanupHandlers.push((()=>document.removeEventListener(\"keydown\",n)));const a=t=>{t.target===e.context.inputElement||e.context.mainElement.contains(t.target)||hide(e)};document.addEventListener(\"click\",a,{capture:!0}),e.context.cleanupHandlers.push((()=>document.removeEventListener(\"click\",a,{capture:!0}))),e.onShow&&e.onShow(e)},labels={application:\"Calendar\",navigation:\"Calendar Navigation\",arrowNext:{month:\"Next month\",year:\"Next list of years\"},arrowPrev:{month:\"Previous month\",year:\"Previous list of years\"},month:\"Select month, current selected month:\",months:\"List of months\",year:\"Select year, current selected year:\",years:\"List of years\",week:\"Days of the week\",weekNumber:\"Numbers of weeks in a year\",dates:\"Dates in the current month\",selectingTime:\"Selecting a time \",inputHour:\"Hours\",inputMinute:\"Minutes\",rangeHour:\"Slider for selecting hours\",rangeMinute:\"Slider for selecting minutes\",btnKeeping:\"Switch AM/PM, current position:\"},styles={calendar:\"vc\",controls:\"vc-controls\",grid:\"vc-grid\",column:\"vc-column\",header:\"vc-header\",headerContent:\"vc-header__content\",month:\"vc-month\",year:\"vc-year\",arrowPrev:\"vc-arrow vc-arrow_prev\",arrowNext:\"vc-arrow vc-arrow_next\",wrapper:\"vc-wrapper\",content:\"vc-content\",months:\"vc-months\",monthsMonth:\"vc-months__month\",years:\"vc-years\",yearsYear:\"vc-years__year\",week:\"vc-week\",weekDay:\"vc-week__day\",weekNumbers:\"vc-week-numbers\",weekNumbersTitle:\"vc-week-numbers__title\",weekNumbersContent:\"vc-week-numbers__content\",weekNumber:\"vc-week-number\",dates:\"vc-dates\",datesRow:\"vc-dates__row\",date:\"vc-date\",dateBtn:\"vc-date__btn\",datePopup:\"vc-date__popup\",dateRangeTooltip:\"vc-date-range-tooltip\",time:\"vc-time\",timeContent:\"vc-time__content\",timeHour:\"vc-time__hour\",timeMinute:\"vc-time__minute\",timeKeeping:\"vc-time__keeping\",timeRanges:\"vc-time__ranges\",timeRange:\"vc-time__range\"};class OptionsCalendar{constructor(){__publicField(this,\"type\",\"default\"),__publicField(this,\"inputMode\",!1),__publicField(this,\"openOnFocus\",!0),__publicField(this,\"positionToInput\",\"left\"),__publicField(this,\"firstWeekday\",1),__publicField(this,\"monthsToSwitch\",1),__publicField(this,\"themeAttrDetect\",\"html[data-theme]\"),__publicField(this,\"locale\",\"en\"),__publicField(this,\"dateToday\",\"today\"),__publicField(this,\"dateMin\",\"1970-01-01\"),__publicField(this,\"dateMax\",\"2470-12-31\"),__publicField(this,\"displayDateMin\"),__publicField(this,\"displayDateMax\"),__publicField(this,\"displayDatesOutside\",!0),__publicField(this,\"displayDisabledDates\",!1),__publicField(this,\"displayMonthsCount\"),__publicField(this,\"disableDates\",[]),__publicField(this,\"disableAllDates\",!1),__publicField(this,\"disableDatesPast\",!1),__publicField(this,\"disableDatesGaps\",!1),__publicField(this,\"disableWeekdays\",[]),__publicField(this,\"disableToday\",!1),__publicField(this,\"enableDates\",[]),__publicField(this,\"enableEdgeDatesOnly\",!0),__publicField(this,\"enableDateToggle\",!0),__publicField(this,\"enableWeekNumbers\",!1),__publicField(this,\"enableMonthChangeOnDayClick\",!0),__publicField(this,\"enableJumpToSelectedDate\",!1),__publicField(this,\"selectionDatesMode\",\"single\"),__publicField(this,\"selectionMonthsMode\",!0),__publicField(this,\"selectionYearsMode\",!0),__publicField(this,\"selectionTimeMode\",!1),__publicField(this,\"selectedDates\",[]),__publicField(this,\"selectedMonth\"),__publicField(this,\"selectedYear\"),__publicField(this,\"selectedHolidays\",[]),__publicField(this,\"selectedWeekends\",[0,6]),__publicField(this,\"selectedTime\"),__publicField(this,\"selectedTheme\",\"system\"),__publicField(this,\"timeMinHour\",0),__publicField(this,\"timeMaxHour\",23),__publicField(this,\"timeMinMinute\",0),__publicField(this,\"timeMaxMinute\",59),__publicField(this,\"timeControls\",\"all\"),__publicField(this,\"timeStepHour\",1),__publicField(this,\"timeStepMinute\",1),__publicField(this,\"sanitizerHTML\",(e=>e)),__publicField(this,\"onClickDate\"),__publicField(this,\"onClickWeekDay\"),__publicField(this,\"onClickWeekNumber\"),__publicField(this,\"onClickTitle\"),__publicField(this,\"onClickMonth\"),__publicField(this,\"onClickYear\"),__publicField(this,\"onClickArrow\"),__publicField(this,\"onChangeTime\"),__publicField(this,\"onChangeToInput\"),__publicField(this,\"onCreateDateRangeTooltip\"),__publicField(this,\"onCreateDateEls\"),__publicField(this,\"onCreateMonthEls\"),__publicField(this,\"onCreateYearEls\"),__publicField(this,\"onInit\"),__publicField(this,\"onUpdate\"),__publicField(this,\"onDestroy\"),__publicField(this,\"onShow\"),__publicField(this,\"onHide\"),__publicField(this,\"popups\",{}),__publicField(this,\"labels\",__spreadValues({},labels)),__publicField(this,\"layouts\",{default:\"\",multiple:\"\",month:\"\",year:\"\"}),__publicField(this,\"styles\",__spreadValues({},styles))}}const _Calendar=class e extends OptionsCalendar{constructor(t,n){var a;super(),__publicField(this,\"init\",(()=>init(this))),__publicField(this,\"update\",(e=>update(this,e))),__publicField(this,\"destroy\",(()=>destroy(this))),__publicField(this,\"show\",(()=>show(this))),__publicField(this,\"hide\",(()=>hide(this))),__publicField(this,\"set\",((e,t)=>set(this,e,t))),__publicField(this,\"context\"),this.context=__spreadProps(__spreadValues({},this.context),{locale:{months:{short:[],long:[]},weekdays:{short:[],long:[]}}}),setContext(this,\"mainElement\",\"string\"==typeof t?null!=(a=e.memoizedElements.get(t))?a:this.queryAndMemoize(t):t),n&&replaceProperties(this,n)}queryAndMemoize(t){const n=document.querySelector(t);if(!n)throw new Error(errorMessages.notFoundSelector(t));return e.memoizedElements.set(t,n),n}};__publicField(_Calendar,\"memoizedElements\",new Map);let Calendar=_Calendar;export{Calendar};","/**\n * --------------------------------------------------------------------------\n * Bootstrap datepicker.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { Calendar } from 'vanilla-calendar-pro'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'datepicker'\nconst DATA_KEY = 'bs.datepicker'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"datepicker\"]'\n\nconst HIDE_DELAY = 100 // ms delay before hiding after selection\n\nconst Default = {\n  datepickerTheme: null, // 'light', 'dark', 'auto' - explicit theme for datepicker popover only\n  dateMin: null,\n  dateMax: null,\n  dateFormat: null, // Intl.DateTimeFormat options, or function(date, locale) => string\n  displayElement: null, // Element to show formatted date (defaults to element for buttons)\n  displayMonthsCount: 1, // Number of months to display side-by-side\n  firstWeekday: 1, // Monday\n  inline: false, // Render calendar inline (no popup)\n  locale: 'default',\n  positionElement: null, // Element to position calendar relative to (defaults to input)\n  selectedDates: [],\n  selectionMode: 'single', // 'single', 'multiple', 'multiple-ranged'\n  placement: 'left', // 'left', 'center', 'right', 'auto'\n  vcpOptions: {} // Pass-through for any VCP option\n}\n\nconst DefaultType = {\n  datepickerTheme: '(null|string)',\n  dateMin: '(null|string|number|object)',\n  dateMax: '(null|string|number|object)',\n  dateFormat: '(null|object|function)',\n  displayElement: '(null|string|element|boolean)',\n  displayMonthsCount: 'number',\n  firstWeekday: 'number',\n  inline: 'boolean',\n  locale: 'string',\n  positionElement: '(null|string|element)',\n  selectedDates: 'array',\n  selectionMode: 'string',\n  placement: 'string',\n  vcpOptions: 'object'\n}\n\n/**\n * Class definition\n */\n\nclass Datepicker extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._calendar = null\n    this._isShown = false\n\n    this._initCalendar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    return this._isShown ? this.hide() : this.show()\n  }\n\n  show() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || isDisabled(this._element) || this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.show()\n    this._isShown = true\n\n    EventHandler.trigger(this._element, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || !this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.hide()\n    this._isShown = false\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._themeObserver) {\n      this._themeObserver.disconnect()\n      this._themeObserver = null\n    }\n\n    if (this._calendar) {\n      this._calendar.destroy()\n    }\n\n    this._calendar = null\n    super.dispose()\n  }\n\n  getSelectedDates() {\n    const dates = this._calendar?.context?.selectedDates\n    return dates ? [...dates] : []\n  }\n\n  setSelectedDates(dates) {\n    if (this._calendar) {\n      this._calendar.set({ selectedDates: dates })\n    }\n  }\n\n  // Private\n  _initCalendar() {\n    this._isInput = this._element.tagName === 'INPUT'\n    this._isInline = this._config.inline\n\n    // For inline mode, look for a hidden input child to bind to\n    if (this._isInline && !this._isInput) {\n      this._boundInput = this._element.querySelector('input[type=\"hidden\"], input[name]')\n    }\n\n    this._positionElement = this._resolvePositionElement()\n    this._displayElement = this._resolveDisplayElement()\n\n    const calendarOptions = this._buildCalendarOptions()\n\n    // Create calendar on the position element (for correct popup positioning)\n    // but value updates still go to this._element (the input)\n    this._calendar = new Calendar(this._positionElement, calendarOptions)\n    this._calendar.init()\n\n    // Watch for theme changes on ancestor elements (for live theme switching)\n    this._setupThemeObserver()\n\n    // Set initial value if input has a value\n    if (this._isInput && this._element.value) {\n      this._parseInputValue()\n    }\n\n    // Populate input/display with preselected dates\n    this._updateDisplayWithSelectedDates()\n  }\n\n  _updateDisplayWithSelectedDates() {\n    const { selectedDates } = this._config\n    if (!selectedDates || selectedDates.length === 0) {\n      return\n    }\n\n    const formattedDate = this._formatDateForInput(selectedDates)\n\n    if (this._isInput) {\n      this._element.value = formattedDate\n    }\n\n    if (this._boundInput) {\n      this._boundInput.value = selectedDates.join(',')\n    }\n\n    if (this._displayElement) {\n      this._displayElement.textContent = formattedDate\n    }\n  }\n\n  _resolvePositionElement() {\n    let { positionElement } = this._config\n\n    if (typeof positionElement === 'string') {\n      positionElement = document.querySelector(positionElement)\n    }\n\n    // Use input's parent if in form-adorn\n    if (!positionElement && this._isInput && !this._isInline) {\n      const parent = this._element.closest('.form-adorn')\n      if (parent) {\n        positionElement = parent\n      }\n    }\n\n    return positionElement || this._element\n  }\n\n  _resolveDisplayElement() {\n    const { displayElement } = this._config\n\n    if (typeof displayElement === 'string') {\n      return document.querySelector(displayElement)\n    }\n\n    // For buttons/non-inputs (not inline), look for a [data-bs-datepicker-display] child\n    if (displayElement === true || (displayElement === null && !this._isInput && !this._isInline)) {\n      const displayChild = this._element.querySelector('[data-bs-datepicker-display]')\n      return displayChild || this._element\n    }\n\n    return displayElement\n  }\n\n  _getThemeAncestor() {\n    return this._element.closest('[data-bs-theme]')\n  }\n\n  _getEffectiveTheme() {\n    // Priority: explicit datepickerTheme config > inherited from ancestor > none\n    const { datepickerTheme } = this._config\n    if (datepickerTheme) {\n      return datepickerTheme\n    }\n\n    const ancestor = this._getThemeAncestor()\n    return ancestor?.getAttribute('data-bs-theme') || null\n  }\n\n  _syncThemeAttribute(element) {\n    if (!element) {\n      return\n    }\n\n    const theme = this._getEffectiveTheme()\n\n    if (theme) {\n      // Copy theme to popover (needed because VCP appends to body, breaking CSS inheritance)\n      element.setAttribute('data-bs-theme', theme)\n    } else {\n      // No theme - remove attribute to allow natural inheritance\n      element.removeAttribute('data-bs-theme')\n    }\n  }\n\n  _setupThemeObserver() {\n    // Watch for theme changes on ancestor elements\n    const ancestor = this._getThemeAncestor()\n    if (!ancestor || this._config.datepickerTheme) {\n      // No ancestor to watch, or explicit datepickerTheme overrides\n      return\n    }\n\n    this._themeObserver = new MutationObserver(() => {\n      this._syncThemeAttribute(this._calendar?.context?.mainElement)\n    })\n\n    this._themeObserver.observe(ancestor, {\n      attributes: true,\n      attributeFilter: ['data-bs-theme']\n    })\n  }\n\n  _buildCalendarOptions() {\n    // Get theme for VCP - use 'system' for auto-detection if no explicit theme\n    const theme = this._getEffectiveTheme()\n    // VCP uses 'system' for auto, Bootstrap uses 'auto'\n    const vcpTheme = !theme || theme === 'auto' ? 'system' : theme\n\n    const calendarOptions = {\n      ...this._config.vcpOptions,\n      inputMode: !this._isInline,\n      positionToInput: this._config.placement,\n      firstWeekday: this._config.firstWeekday,\n      locale: this._config.locale,\n      selectionDatesMode: this._config.selectionMode,\n      selectedDates: this._config.selectedDates,\n      displayMonthsCount: this._config.displayMonthsCount,\n      type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',\n      selectedTheme: vcpTheme,\n      themeAttrDetect: '[data-bs-theme]',\n      onClickDate: (self, event) => this._handleDateClick(self, event),\n      onInit: self => {\n        this._syncThemeAttribute(self.context.mainElement)\n      },\n      onShow: () => {\n        this._isShown = true\n        this._syncThemeAttribute(this._calendar.context.mainElement)\n      },\n      onHide: () => {\n        this._isShown = false\n      }\n    }\n\n    // Navigate to the month of the first selected date\n    if (this._config.selectedDates.length > 0) {\n      const firstDate = this._parseDate(this._config.selectedDates[0])\n      calendarOptions.selectedMonth = firstDate.getMonth()\n      calendarOptions.selectedYear = firstDate.getFullYear()\n    }\n\n    if (this._config.dateMin) {\n      calendarOptions.dateMin = this._config.dateMin\n    }\n\n    if (this._config.dateMax) {\n      calendarOptions.dateMax = this._config.dateMax\n    }\n\n    return calendarOptions\n  }\n\n  _handleDateClick(self, event) {\n    const selectedDates = [...self.context.selectedDates]\n\n    if (selectedDates.length > 0) {\n      const formattedDate = this._formatDateForInput(selectedDates)\n\n      if (this._isInput) {\n        this._element.value = formattedDate\n      }\n\n      if (this._boundInput) {\n        this._boundInput.value = selectedDates.join(',')\n      }\n\n      if (this._displayElement) {\n        this._displayElement.textContent = formattedDate\n      }\n    }\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      dates: selectedDates,\n      event\n    })\n\n    this._maybeHideAfterSelection(selectedDates)\n  }\n\n  _maybeHideAfterSelection(selectedDates) {\n    if (this._isInline) {\n      return\n    }\n\n    const shouldHide =\n      (this._config.selectionMode === 'single' && selectedDates.length > 0) ||\n      (this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2)\n\n    if (shouldHide) {\n      setTimeout(() => this.hide(), HIDE_DELAY)\n    }\n  }\n\n  _parseDate(dateStr) {\n    const [year, month, day] = dateStr.split('-')\n    return new Date(year, month - 1, day)\n  }\n\n  _formatDate(dateStr) {\n    const date = this._parseDate(dateStr)\n    const locale = this._config.locale === 'default' ? undefined : this._config.locale\n    const { dateFormat } = this._config\n\n    // Custom function formatter\n    if (typeof dateFormat === 'function') {\n      return dateFormat(date, locale)\n    }\n\n    // Intl.DateTimeFormat options object\n    if (dateFormat && typeof dateFormat === 'object') {\n      return new Intl.DateTimeFormat(locale, dateFormat).format(date)\n    }\n\n    // Default: locale-aware formatting\n    return date.toLocaleDateString(locale)\n  }\n\n  _formatDateForInput(dates) {\n    if (dates.length === 0) {\n      return ''\n    }\n\n    if (dates.length === 1) {\n      return this._formatDate(dates[0])\n    }\n\n    // For date ranges, use en-dash; for multiple dates, use comma\n    const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', '\n    return dates.map(d => this._formatDate(d)).join(separator)\n  }\n\n  _parseInputValue() {\n    // Try to parse the input value as a date\n    const value = this._element.value.trim()\n    if (!value) {\n      return\n    }\n\n    const date = new Date(value)\n    if (!Number.isNaN(date.getTime())) {\n      const year = date.getFullYear()\n      const month = String(date.getMonth() + 1).padStart(2, '0')\n      const day = String(date.getDate()).padStart(2, '0')\n      const formatted = `${year}-${month}-${day}`\n      this._calendar.set({ selectedDates: [formatted] })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // Only handle if not an input (inputs use focus)\n  // Skip inline datepickers (they're always visible)\n  if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true') {\n    return\n  }\n\n  event.preventDefault()\n  Datepicker.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE, function () {\n  // Handle focus for input elements\n  if (this.tagName !== 'INPUT') {\n    return\n  }\n\n  Datepicker.getOrCreateInstance(this).show()\n})\n\n// Auto-initialize inline datepickers on DOMContentLoaded\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE}[data-bs-inline=\"true\"]`)) {\n    Datepicker.getOrCreateInstance(element)\n  }\n})\n\nexport default Datepicker\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dialog'\nconst DATA_KEY = 'bs.dialog'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_STATIC = 'dialog-static'\nconst CLASS_NAME_OPEN = 'dialog-open'\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\nconst SELECTOR_OPEN_MODAL_DIALOG = 'dialog.dialog[open]:not(.dialog-nonmodal)'\n\nconst Default = {\n  backdrop: true, // true (click dismisses) or 'static' (click does nothing) - only applies to modal dialogs\n  keyboard: true,\n  modal: true // true uses showModal(), false uses show() for non-modal dialogs\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  modal: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Dialog extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._element.open ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n\n    if (this._config.modal) {\n      // Modal dialog: use showModal() for focus trapping, backdrop, and top layer\n      this._element.showModal()\n      // Prevent body scroll for modal dialogs\n      document.body.classList.add(CLASS_NAME_OPEN)\n    } else {\n      // Non-modal dialog: use show() - no backdrop, no focus trap, no top layer\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n      this._element.show()\n    }\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }, this._element, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n\n    this._queueCallback(() => this._hideDialog(), this._element, this._isAnimated())\n  }\n\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n    super.dispose()\n  }\n\n  handleUpdate() {\n    // Provided for API consistency with Modal.\n    // Native dialogs handle their own positioning.\n  }\n\n  // Private\n  _hideDialog() {\n    this._element.close()\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n    this._isTransitioning = false\n\n    // Only restore body scroll if no other modal dialogs are open\n    if (!document.querySelector(SELECTOR_OPEN_MODAL_DIALOG)) {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n    }\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains('fade')\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      this._element.classList.remove(CLASS_NAME_STATIC)\n    }, this._element)\n  }\n\n  _addEventListeners() {\n    // Handle native cancel event (Escape key) - only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      // Prevent native close behavior - we'll handle it\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_CANCEL)\n      this.hide()\n    })\n\n    // Handle Escape key for non-modal dialogs (native cancel doesn't fire for show())\n    EventHandler.on(this._element, 'keydown', event => {\n      if (event.key !== 'Escape' || this._config.modal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_CANCEL)\n      this.hide()\n    })\n\n    // Handle backdrop clicks (only applies to modal dialogs)\n    // Native <dialog> fires click on the dialog element when backdrop is clicked\n    EventHandler.on(this._element, 'click', event => {\n      // Only handle clicks directly on the dialog (backdrop area)\n      // Non-modal dialogs don't have a backdrop\n      if (event.target !== this._element || !this._config.modal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      // Default: click backdrop to dismiss\n      this.hide()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  // Get config from trigger's data attributes\n  const config = Manipulator.getDataAttributes(this)\n\n  // Check if trigger is inside an open dialog\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Open new dialog first (its backdrop appears over current)\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    newDialog.show(this)\n\n    // Close the current dialog (no backdrop flash since new one is already open)\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      currentInstance.hide()\n    }\n\n    return\n  }\n\n  const data = Dialog.getOrCreateInstance(target, config)\n  data.toggle(this)\n})\n\nenableDismissTrigger(Dialog)\n\nexport default Dialog\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap nav-overflow.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'navoverflow'\nconst DATA_KEY = 'bs.navoverflow'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_UPDATE = `update${EVENT_KEY}`\nconst EVENT_OVERFLOW = `overflow${EVENT_KEY}`\n\nconst CLASS_NAME_OVERFLOW = 'nav-overflow'\nconst CLASS_NAME_OVERFLOW_MENU = 'nav-overflow-menu'\nconst CLASS_NAME_HIDDEN = 'd-none'\n\nconst SELECTOR_NAV_ITEM = '.nav-item'\nconst SELECTOR_NAV_LINK = '.nav-link'\nconst SELECTOR_OVERFLOW_TOGGLE = '.nav-overflow-toggle'\nconst SELECTOR_OVERFLOW_MENU = '.nav-overflow-menu'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  moreText: 'More',\n  moreIcon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\"><path d=\"M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3\"/></svg>',\n  threshold: 0 // Minimum items to keep visible before showing overflow\n}\n\nconst DefaultType = {\n  moreText: 'string',\n  moreIcon: 'string',\n  threshold: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass NavOverflow extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._items = []\n    this._overflowItems = []\n    this._overflowMenu = null\n    this._overflowToggle = null\n    this._resizeObserver = null\n    this._isInitialized = false\n\n    this._init()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._calculateOverflow()\n    EventHandler.trigger(this._element, EVENT_UPDATE)\n  }\n\n  dispose() {\n    if (this._resizeObserver) {\n      this._resizeObserver.disconnect()\n    }\n\n    // Move items back to original positions\n    this._restoreItems()\n\n    // Remove overflow menu\n    if (this._overflowToggle && this._overflowToggle.parentElement) {\n      this._overflowToggle.parentElement.remove()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _init() {\n    // Add overflow class to nav\n    this._element.classList.add(CLASS_NAME_OVERFLOW)\n\n    // Get all nav items\n    this._items = [...SelectorEngine.find(SELECTOR_NAV_ITEM, this._element)]\n\n    // Store original order data\n    for (const [index, item] of this._items.entries()) {\n      item.dataset.bsNavOrder = index\n    }\n\n    // Create overflow menu if it doesn't exist\n    this._createOverflowMenu()\n\n    // Setup resize observer\n    this._setupResizeObserver()\n\n    // Initial calculation\n    this._calculateOverflow()\n\n    this._isInitialized = true\n  }\n\n  _createOverflowMenu() {\n    // Check if overflow menu already exists\n    this._overflowToggle = SelectorEngine.findOne(SELECTOR_OVERFLOW_TOGGLE, this._element)\n\n    if (this._overflowToggle) {\n      this._overflowMenu = SelectorEngine.findOne(SELECTOR_OVERFLOW_MENU, this._element)\n      return\n    }\n\n    const overflowItem = document.createElement('li')\n    overflowItem.className = 'nav-item nav-overflow-item'\n    overflowItem.innerHTML = `\n      <button class=\"nav-link nav-overflow-toggle\" type=\"button\" data-bs-toggle=\"menu\" data-bs-placement=\"bottom-end\" aria-expanded=\"false\">\n        <span class=\"nav-overflow-icon\">${this._config.moreIcon}</span>\n        <span class=\"nav-overflow-text\">${this._config.moreText}</span>\n      </button>\n      <div class=\"${CLASS_NAME_OVERFLOW_MENU} menu\"></div>\n    `\n\n    this._element.append(overflowItem)\n    this._overflowToggle = overflowItem.querySelector(SELECTOR_OVERFLOW_TOGGLE)\n    this._overflowMenu = overflowItem.querySelector(SELECTOR_OVERFLOW_MENU)\n  }\n\n  _setupResizeObserver() {\n    if (typeof ResizeObserver === 'undefined') {\n      // Fallback for older browsers\n      EventHandler.on(window, 'resize', () => this._calculateOverflow())\n      return\n    }\n\n    this._resizeObserver = new ResizeObserver(() => {\n      this._calculateOverflow()\n    })\n\n    this._resizeObserver.observe(this._element)\n  }\n\n  _calculateOverflow() {\n    // First, restore all items to measure properly\n    this._restoreItems()\n\n    const navWidth = this._element.offsetWidth\n    const overflowItem = this._overflowToggle?.closest('.nav-item')\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      const itemWidth = item.offsetWidth\n      usedWidth += itemWidth\n\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      if (usedWidth > overflowThreshold) {\n        itemsToOverflow.push(item)\n      }\n    }\n\n    // Check if we need threshold minimum visible\n    const visibleCount = this._items.length - itemsToOverflow.length\n    if (visibleCount < this._config.threshold && this._items.length > this._config.threshold) {\n      // Add more items to overflow until we reach threshold (but not keep items)\n      const toMove = this._items.slice(this._config.threshold).filter(item => !item.classList.contains(CLASS_NAME_KEEP))\n      itemsToOverflow.length = 0\n      itemsToOverflow.push(...toMove)\n    }\n\n    // Move items to overflow menu\n    this._moveToOverflow(itemsToOverflow)\n\n    // Show/hide overflow toggle\n    if (overflowItem) {\n      if (itemsToOverflow.length > 0) {\n        overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n      } else {\n        overflowItem.classList.add(CLASS_NAME_HIDDEN)\n      }\n    }\n\n    // Trigger overflow event if items changed\n    if (itemsToOverflow.length > 0) {\n      EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n        overflowCount: itemsToOverflow.length,\n        visibleCount: this._items.length - itemsToOverflow.length\n      })\n    }\n  }\n\n  _moveToOverflow(items) {\n    if (!this._overflowMenu) {\n      return\n    }\n\n    // Clear existing overflow items\n    this._overflowMenu.innerHTML = ''\n    this._overflowItems = []\n\n    for (const item of items) {\n      const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item)\n      if (!link) {\n        continue\n      }\n\n      const clonedLink = link.cloneNode(true)\n      clonedLink.className = 'menu-item'\n\n      if (link.classList.contains('active')) {\n        clonedLink.classList.add('active')\n      }\n\n      if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {\n        clonedLink.classList.add('disabled')\n      }\n\n      this._overflowMenu.append(clonedLink)\n\n      // Hide original item\n      item.classList.add(CLASS_NAME_HIDDEN)\n      item.dataset.bsNavOverflow = 'true'\n\n      this._overflowItems.push(item)\n    }\n  }\n\n  _restoreItems() {\n    for (const item of this._items) {\n      item.classList.remove(CLASS_NAME_HIDDEN)\n      delete item.dataset.bsNavOverflow\n    }\n\n    if (this._overflowMenu) {\n      this._overflowMenu.innerHTML = ''\n    }\n\n    this._overflowItems = []\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const element of SelectorEngine.find('[data-bs-toggle=\"nav-overflow\"]')) {\n    NavOverflow.getOrCreateInstance(element)\n  }\n})\n\nexport default NavOverflow\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport {\n  execute, executeAfterTransition, getElement, reflow\n} from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n  className: 'modal-backdrop',\n  clickCallback: null,\n  isAnimated: false,\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n  className: 'string',\n  clickCallback: '(function|null)',\n  isAnimated: 'boolean',\n  isVisible: 'boolean',\n  rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    const element = this._getElement()\n    if (this._config.isAnimated) {\n      reflow(element)\n    }\n\n    element.classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  // Private\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = this._config.className\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _configAfterMerge(config) {\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    const element = this._getElement()\n    this._config.rootElement.append(element)\n\n    EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n  autofocus: true,\n  trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n  autofocus: 'boolean',\n  trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isActive = false\n    this._lastTabNavDirection = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  activate() {\n    if (this._isActive) {\n      return\n    }\n\n    if (this._config.autofocus) {\n      this._config.trapElement.focus()\n    }\n\n    EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n    this._isActive = true\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return\n    }\n\n    this._isActive = false\n    EventHandler.off(document, EVENT_KEY)\n  }\n\n  // Private\n  _handleFocusin(event) {\n    const { trapElement } = this._config\n\n    if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n      return\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement)\n\n    if (elements.length === 0) {\n      trapElement.focus()\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus()\n    } else {\n      elements[0].focus()\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n  }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  // Public\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n\n  // Private\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProperty, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProperty)\n      const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n      element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _saveInitialAttribute(element, styleProperty) {\n    const actualValue = element.style.getPropertyValue(styleProperty)\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProperty, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProperty) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProperty)\n      // We only want to remove the property if the value is `null`; the value can also be zero\n      if (value === null) {\n        element.style.removeProperty(styleProperty)\n        return\n      }\n\n      Manipulator.removeDataAttribute(element, styleProperty)\n      element.style.setProperty(styleProperty, value)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n      return\n    }\n\n    for (const sel of SelectorEngine.find(selector, this._element)) {\n      callBack(sel)\n    }\n  }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n  isDisabled,\n  isVisible\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n    }\n\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    const completeCallBack = () => {\n      if (!this._config.scroll || this._config.backdrop) {\n        this._focustrap.activate()\n      }\n\n      this._element.classList.add(CLASS_NAME_SHOW)\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._focustrap.deactivate()\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.add(CLASS_NAME_HIDING)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  // Private\n  _initializeBackDrop() {\n    const clickCallback = () => {\n      if (this._config.backdrop === 'static') {\n        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n        return\n      }\n\n      this.hide()\n    }\n\n    // 'static' option will be translated to true, and booleans will keep their value\n    const isVisible = Boolean(this._config.backdrop)\n\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: isVisible ? clickCallback : null\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (event.key !== ESCAPE_KEY) {\n        return\n      }\n\n      if (this._config.keyboard) {\n        this.hide()\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (alreadyOpen && alreadyOpen !== target) {\n    Offcanvas.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n    Offcanvas.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Offcanvas.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap strength.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'strength'\nconst DATA_KEY = 'bs.strength'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_STRENGTH_CHANGE = `strengthChange${EVENT_KEY}`\n\nconst SELECTOR_DATA_STRENGTH = '[data-bs-strength]'\n\nconst STRENGTH_LEVELS = ['weak', 'fair', 'good', 'strong']\n\nconst Default = {\n  input: null, // Selector or element for password input\n  minLength: 8,\n  messages: {\n    weak: 'Weak',\n    fair: 'Fair',\n    good: 'Good',\n    strong: 'Strong'\n  },\n  weights: {\n    minLength: 1,\n    extraLength: 1,\n    lowercase: 1,\n    uppercase: 1,\n    numbers: 1,\n    special: 1,\n    multipleSpecial: 1,\n    longPassword: 1\n  },\n  thresholds: [2, 4, 6], // weak ≤2, fair ≤4, good ≤6, strong >6\n  scorer: null // Custom scoring function (password) => number\n}\n\nconst DefaultType = {\n  input: '(string|element|null)',\n  minLength: 'number',\n  messages: 'object',\n  weights: 'object',\n  thresholds: 'array',\n  scorer: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Strength extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = this._getInput()\n    this._segments = SelectorEngine.find('.strength-segment', this._element)\n    this._textElement = SelectorEngine.findOne('.strength-text', this._element.parentElement)\n    this._currentStrength = null\n\n    if (this._input) {\n      this._addEventListeners()\n      // Check initial value\n      this._evaluate()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getStrength() {\n    return this._currentStrength\n  }\n\n  evaluate() {\n    this._evaluate()\n  }\n\n  // Private\n  _getInput() {\n    if (this._config.input) {\n      return typeof this._config.input === 'string' ?\n        SelectorEngine.findOne(this._config.input) :\n        this._config.input\n    }\n\n    // Look for preceding password input\n    const parent = this._element.parentElement\n    return SelectorEngine.findOne('input[type=\"password\"]', parent)\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, 'input', () => this._evaluate())\n    EventHandler.on(this._input, 'change', () => this._evaluate())\n  }\n\n  _evaluate() {\n    const password = this._input.value\n    const score = this._calculateScore(password)\n    const strength = this._scoreToStrength(score)\n\n    if (strength !== this._currentStrength) {\n      this._currentStrength = strength\n      this._updateUI(strength, score)\n\n      EventHandler.trigger(this._element, EVENT_STRENGTH_CHANGE, {\n        strength,\n        score,\n        password: password.length > 0 ? '***' : '' // Don't expose actual password\n      })\n    }\n  }\n\n  _calculateScore(password) {\n    if (!password) {\n      return 0\n    }\n\n    // Use custom scorer if provided\n    if (typeof this._config.scorer === 'function') {\n      return this._config.scorer(password)\n    }\n\n    const { weights } = this._config\n    let score = 0\n\n    // Length scoring\n    if (password.length >= this._config.minLength) {\n      score += weights.minLength\n    }\n\n    if (password.length >= this._config.minLength + 4) {\n      score += weights.extraLength\n    }\n\n    // Character variety\n    if (/[a-z]/.test(password)) {\n      score += weights.lowercase\n    }\n\n    if (/[A-Z]/.test(password)) {\n      score += weights.uppercase\n    }\n\n    if (/\\d/.test(password)) {\n      score += weights.numbers\n    }\n\n    // Special characters\n    if (/[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.special\n    }\n\n    // Extra points for more special chars or length\n    if (/[!@#$%^&*(),.?\":{}|<>].*[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.multipleSpecial\n    }\n\n    if (password.length >= 16) {\n      score += weights.longPassword\n    }\n\n    return score\n  }\n\n  _scoreToStrength(score) {\n    if (score === 0) {\n      return null\n    }\n\n    const [weak, fair, good] = this._config.thresholds\n\n    if (score <= weak) {\n      return 'weak'\n    }\n\n    if (score <= fair) {\n      return 'fair'\n    }\n\n    if (score <= good) {\n      return 'good'\n    }\n\n    return 'strong'\n  }\n\n  _updateUI(strength) {\n    // Update data attribute on element\n    if (strength) {\n      this._element.dataset.bsStrength = strength\n    } else {\n      delete this._element.dataset.bsStrength\n    }\n\n    // Update segmented meter\n    const strengthIndex = strength ? STRENGTH_LEVELS.indexOf(strength) : -1\n\n    for (const [index, segment] of this._segments.entries()) {\n      if (index <= strengthIndex) {\n        segment.classList.add('active')\n      } else {\n        segment.classList.remove('active')\n      }\n    }\n\n    // Update text feedback\n    if (this._textElement) {\n      if (strength && this._config.messages[strength]) {\n        this._textElement.textContent = this._config.messages[strength]\n        this._textElement.dataset.bsStrength = strength\n\n        // Also set the color via inheriting from parent or using CSS variable\n        const colorMap = {\n          weak: 'danger',\n          fair: 'warning',\n          good: 'info',\n          strong: 'success'\n        }\n        this._textElement.style.setProperty('--strength-color', `var(--${colorMap[strength]}-text)`)\n      } else {\n        this._textElement.textContent = ''\n        delete this._textElement.dataset.bsStrength\n      }\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_STRENGTH)) {\n    Strength.getOrCreateInstance(element)\n  }\n})\n\nexport default Strength\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap otp-input.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'otpInput'\nconst DATA_KEY = 'bs.otp-input'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\nconst Default = {\n  length: 6,\n  mask: false\n}\n\nconst DefaultType = {\n  length: 'number',\n  mask: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._inputs = SelectorEngine.find(SELECTOR_INPUT, this._element)\n    this._setupInputs()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getValue() {\n    return this._inputs.map(input => input.value).join('')\n  }\n\n  setValue(value) {\n    const chars = String(value).split('')\n    for (const [index, input] of this._inputs.entries()) {\n      input.value = chars[index] || ''\n    }\n\n    this._checkComplete()\n  }\n\n  clear() {\n    for (const input of this._inputs) {\n      input.value = ''\n    }\n\n    this._inputs[0]?.focus()\n  }\n\n  focus() {\n    // Focus first empty input, or last input if all filled\n    const emptyInput = this._inputs.find(input => !input.value)\n    if (emptyInput) {\n      emptyInput.focus()\n    } else {\n      this._inputs.at(-1)?.focus()\n    }\n  }\n\n  // Private\n  _setupInputs() {\n    for (const input of this._inputs) {\n      // Set attributes for proper OTP handling\n      input.setAttribute('maxlength', '1')\n      input.setAttribute('inputmode', 'numeric')\n      input.setAttribute('pattern', '\\\\d*')\n\n      // First input gets autocomplete for browser OTP autofill\n      if (input === this._inputs[0]) {\n        input.setAttribute('autocomplete', 'one-time-code')\n      } else {\n        input.setAttribute('autocomplete', 'off')\n      }\n\n      // Mask input if configured\n      if (this._config.mask) {\n        input.setAttribute('type', 'password')\n      }\n    }\n  }\n\n  _addEventListeners() {\n    for (const [index, input] of this._inputs.entries()) {\n      EventHandler.on(input, 'input', event => this._handleInput(event, index))\n      EventHandler.on(input, 'keydown', event => this._handleKeydown(event, index))\n      EventHandler.on(input, 'paste', event => this._handlePaste(event))\n      EventHandler.on(input, 'focus', event => this._handleFocus(event))\n    }\n  }\n\n  _handleInput(event, index) {\n    const input = event.target\n\n    // Only allow digits\n    if (!/^\\d*$/.test(input.value)) {\n      input.value = input.value.replace(/\\D/g, '')\n    }\n\n    const { value } = input\n\n    // Handle multi-character input (some browsers/autofill)\n    if (value.length > 1) {\n      // Distribute characters across inputs\n      const chars = value.split('')\n      input.value = chars[0] || ''\n\n      for (let i = 1; i < chars.length && index + i < this._inputs.length; i++) {\n        this._inputs[index + i].value = chars[i]\n      }\n\n      // Focus appropriate input\n      const nextIndex = Math.min(index + chars.length, this._inputs.length - 1)\n      this._inputs[nextIndex].focus()\n    } else if (value && index < this._inputs.length - 1) {\n      // Auto-advance to next input\n      this._inputs[index + 1].focus()\n    }\n\n    EventHandler.trigger(this._element, EVENT_INPUT, {\n      value: this.getValue(),\n      index\n    })\n\n    this._checkComplete()\n  }\n\n  _handleKeydown(event, index) {\n    const { key } = event\n\n    switch (key) {\n      case 'Backspace': {\n        if (!this._inputs[index].value && index > 0) {\n          // Move to previous input and clear it\n          event.preventDefault()\n          this._inputs[index - 1].value = ''\n          this._inputs[index - 1].focus()\n        }\n\n        break\n      }\n\n      case 'Delete': {\n        // Clear current and shift remaining values left\n        event.preventDefault()\n        for (let i = index; i < this._inputs.length - 1; i++) {\n          this._inputs[i].value = this._inputs[i + 1].value\n        }\n\n        this._inputs.at(-1).value = ''\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (index > 0) {\n          event.preventDefault()\n          this._inputs[index - 1].focus()\n        }\n\n        break\n      }\n\n      case 'ArrowRight': {\n        if (index < this._inputs.length - 1) {\n          event.preventDefault()\n          this._inputs[index + 1].focus()\n        }\n\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handlePaste(event) {\n    event.preventDefault()\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    const digits = pastedData.replace(/\\D/g, '').slice(0, this._inputs.length)\n\n    if (digits) {\n      this.setValue(digits)\n\n      // Focus last filled input or last input\n      const lastIndex = Math.min(digits.length, this._inputs.length) - 1\n      this._inputs[lastIndex].focus()\n    }\n  }\n\n  _handleFocus(event) {\n    // Select the content on focus for easy replacement\n    event.target.select()\n  }\n\n  _checkComplete() {\n    const value = this.getValue()\n    const isComplete = value.length === this._inputs.length &&\n      this._inputs.every(input => input.value !== '')\n\n    if (isComplete) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  dd: [],\n  div: [],\n  dl: [],\n  dt: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n      continue\n    }\n\n    const attributeList = [].concat(...element.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [undefined, this])\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  arrow,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport {\n  execute, findShadowRoot, getElement, getUID, isRTL, noop\n} from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tooltip\"]'\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 6],\n  placement: 'top',\n  floatingConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  floatingConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._floatingCleanup = null\n    this._templateFactory = null\n    this._newContent = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n\n    // Protected\n    this.tip = null\n\n    this._parseResponsivePlacements()\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposeFloating()\n    this._disposeMediaQueryListeners()\n    super.dispose()\n  }\n\n  async show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    this._disposeFloating()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    const { container } = this._config\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    await this._createFloating(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposeFloating()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._floatingCleanup && this.tip) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle())\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposeFloating()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement(tip) {\n    // If we have responsive placements, get the one for current viewport\n    if (this._responsivePlacements) {\n      const placement = getResponsivePlacement(this._responsivePlacements, 'top')\n      return AttachmentMap[placement.toUpperCase()] || placement\n    }\n\n    // Execute placement (can be a function)\n    const placement = execute(this._config.placement, [this, tip, this._element])\n    return AttachmentMap[placement.toUpperCase()] || placement\n  }\n\n  _parseResponsivePlacements() {\n    // Only parse if placement is a string (not a function)\n    if (typeof this._config.placement !== 'string') {\n      this._responsivePlacements = null\n      return\n    }\n\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, 'top')\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  async _createFloating(tip) {\n    const placement = this._getPlacement(tip)\n    const arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n\n    // Initial position update\n    await this._updateFloatingPosition(tip, placement, arrowElement)\n\n    // Set up auto-update for scroll/resize\n    this._floatingCleanup = autoUpdate(\n      this._element,\n      tip,\n      () => this._updateFloatingPosition(tip, null, arrowElement)\n    )\n  }\n\n  async _updateFloatingPosition(tip = this.tip, placement = null, arrowElement = null) {\n    if (!tip) {\n      return\n    }\n\n    if (!placement) {\n      placement = this._getPlacement(tip)\n    }\n\n    if (!arrowElement) {\n      arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n    }\n\n    const middleware = this._getFloatingMiddleware(arrowElement)\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    const { x, y, placement: finalPlacement, middlewareData } = await computePosition(\n      this._element,\n      tip,\n      floatingConfig\n    )\n\n    // Apply position to tooltip\n    Object.assign(tip.style, {\n      position: 'absolute',\n      left: `${x}px`,\n      top: `${y}px`\n    })\n\n    // Ensure arrow is absolutely positioned within tooltip\n    if (arrowElement) {\n      arrowElement.style.position = 'absolute'\n    }\n\n    // Set placement attribute for CSS arrow styling\n    Manipulator.setDataAttribute(tip, 'placement', finalPlacement)\n\n    // Position arrow along the edge (center it) if present\n    // The CSS handles which edge to place it on via data-bs-placement\n    if (arrowElement && middlewareData.arrow) {\n      const { x: arrowX, y: arrowY } = middlewareData.arrow\n      const isVertical = finalPlacement.startsWith('top') || finalPlacement.startsWith('bottom')\n\n      // Only set the cross-axis position (centering along the edge)\n      // The main-axis position (which edge) is handled by CSS\n      Object.assign(arrowElement.style, {\n        left: isVertical && arrowX !== null ? `${arrowX}px` : '',\n        top: !isVertical && arrowY !== null ? `${arrowY}px` : '',\n        // Reset the other axis to let CSS handle it\n        right: '',\n        bottom: ''\n      })\n    }\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      // Floating UI passes different args, adapt the interface for offset function callbacks\n      return ({ placement, rects }) => {\n        const result = offset({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this._element, this._element])\n  }\n\n  _getFloatingMiddleware(arrowElement) {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      // Offset middleware - handles distance from reference\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      // Flip middleware - handles fallback placements\n      flip({\n        fallbackPlacements: this._config.fallbackPlacements\n      }),\n      // Shift middleware - prevents overflow\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    // Arrow middleware - positions the arrow element\n    if (arrowElement) {\n      middleware.push(arrow({ element: arrowElement }))\n    }\n\n    return middleware\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK])\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const [key, value] of Object.entries(this._config)) {\n      if (this.constructor.Default[key] !== value) {\n        config[key] = value\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n}\n\n/**\n * Data API implementation - auto-initialize tooltips\n */\n\nconst initTooltip = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Get or create instance and trigger the appropriate action\n  const tooltip = Tooltip.getOrCreateInstance(target)\n\n  // For focus events, manually trigger enter to show\n  if (event.type === 'focusin') {\n    tooltip._activeTrigger.focus = true\n    tooltip._enter()\n  }\n}\n\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initTooltip)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initTooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"popover\"]'\n\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_MOUSEENTER = 'mouseenter'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return this._getTitle() || this._getContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n}\n\n/**\n * Data API implementation - auto-initialize popovers\n */\n\nconst initPopover = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Prevent default for click events to avoid navigation\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Get or create instance\n  const popover = Popover.getOrCreateInstance(target)\n\n  // Trigger the appropriate action based on event type\n  if (event.type === 'click') {\n    popover.toggle()\n  } else if (event.type === 'focusin') {\n    popover._activeTrigger.focus = true\n    popover._enter()\n  }\n}\n\n// Support click (default), hover, and focus triggers\nEventHandler.on(document, EVENT_CLICK, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initPopover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_MENU_ITEM = 'menu-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\n\nconst Default = {\n  rootMargin: '0px 0px -25%',\n  smoothScroll: false,\n  target: null,\n  threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n  rootMargin: 'string',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n    this._activeTarget = null\n    this._observer = null\n    this._previousScrollData = {\n      visibleEntryTop: 0,\n      parentScrollTop: 0\n    }\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    } else {\n      this._observer = this._getNewObserver()\n    }\n\n    for (const section of this._observableSections.values()) {\n      this._observer.observe(section)\n    }\n  }\n\n  dispose() {\n    this._observer.disconnect()\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.target = getElement(config.target) || document.body\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // unregister any previous listeners\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const observableSection = this._observableSections.get(event.target.hash)\n      if (observableSection) {\n        event.preventDefault()\n        const root = this._rootElement || window\n        const height = observableSection.offsetTop - this._element.offsetTop\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'smooth' })\n          return\n        }\n\n        // Chrome 60 doesn't support `scrollTo`\n        root.scrollTop = height\n      }\n    })\n  }\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin\n    }\n\n    return new IntersectionObserver(entries => this._observerCallback(entries), options)\n  }\n\n  // The logic of selection\n  _observerCallback(entries) {\n    const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n    const activate = entry => {\n      this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n      this._process(targetElement(entry))\n    }\n\n    const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n    const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n    this._previousScrollData.parentScrollTop = parentScrollTop\n\n    for (const entry of entries) {\n      if (!entry.isIntersecting) {\n        this._activeTarget = null\n        this._clearActiveClass(targetElement(entry))\n\n        continue\n      }\n\n      const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n      // if we are scrolling down, pick the bigger offsetTop\n      if (userScrollsDown && entryIsLowerThanPrevious) {\n        activate(entry)\n        // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n        if (!parentScrollTop) {\n          return\n        }\n\n        continue\n      }\n\n      // if we are scrolling up, pick the smallest offsetTop\n      if (!userScrollsDown && !entryIsLowerThanPrevious) {\n        activate(entry)\n      }\n    }\n  }\n\n  _initializeTargetsAndObservables() {\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n    for (const anchor of targetLinks) {\n      // ensure that the anchor has an id and is not disabled\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element)\n\n      // ensure that the observableSection exists & is visible\n      if (isVisible(observableSection)) {\n        this._targetLinks.set(decodeURI(anchor.hash), anchor)\n        this._observableSections.set(anchor.hash, observableSection)\n      }\n    }\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate menu parents\n    if (target.classList.contains(CLASS_NAME_MENU_ITEM)) {\n      const menuToggle = target.closest('.menu')?.previousElementSibling\n      if (menuToggle?.matches(SELECTOR_MENU_TOGGLE)) {\n        menuToggle.classList.add(CLASS_NAME_ACTIVE)\n      }\n\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\nconst SELECTOR_MENU = '.menu'\nconst NOT_SELECTOR_MENU_TOGGLE = `:not(${SELECTOR_MENU_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_MENU_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_TAB_PANEL}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleMenu(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleMenu(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n\n    const children = this._getChildren().filter(element => !isDisabled(element))\n    let nextActiveElement\n\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n    }\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n    }\n  }\n\n  _toggleMenu(element, open) {\n    const outerElem = this._getOuterElement(element)\n    const menuToggle = SelectorEngine.findOne(SELECTOR_MENU_TOGGLE, outerElem)\n    if (!menuToggle) {\n      return\n    }\n\n    const menu = SelectorEngine.findOne(SELECTOR_MENU, outerElem)\n\n    menuToggle.classList.toggle(CLASS_NAME_ACTIVE, open)\n    if (menu) {\n      menu.classList.toggle(CLASS_NAME_SHOW, open)\n    }\n\n    menuToggle.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toggler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { eventActionOnPlugin } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toggler'\nconst DATA_KEY = 'bs.toggler'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_TOGGLE = `toggle${EVENT_KEY}`\nconst EVENT_TOGGLED = `toggled${EVENT_KEY}`\nconst EVENT_CLICK = 'click'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"toggler\"]'\n\nconst DefaultType = {\n  attribute: 'string',\n  value: '(string|number|boolean)'\n}\n\nconst Default = {\n  attribute: 'class',\n  value: null\n}\n\n/**\n * Class definition\n */\n\nclass Toggler extends BaseComponent {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    const toggleEvent = EventHandler.trigger(this._element, EVENT_TOGGLE)\n\n    if (toggleEvent.defaultPrevented) {\n      return\n    }\n\n    this._execute()\n\n    EventHandler.trigger(this._element, EVENT_TOGGLED)\n  }\n\n  // Private\n  _execute() {\n    const { attribute, value } = this._config\n\n    if (attribute === 'id') {\n      return // You have to be kidding\n    }\n\n    if (attribute === 'class') {\n      this._element.classList.toggle(value)\n      return\n    }\n\n    // Compare as strings since getAttribute() always returns a string\n    if (this._element.getAttribute(attribute) === String(value)) {\n      this._element.removeAttribute(attribute)\n      return\n    }\n\n    this._element.setAttribute(attribute, value)\n  }\n}\n\n/**\n * Data API implementation\n */\n\neventActionOnPlugin(Toggler, EVENT_CLICK, SELECTOR_DATA_TOGGLE, 'toggle')\n\nexport default Toggler\n"],"mappings":"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","ignoreList":[]}
\ No newline at end of file
index fce844b543f55433022f03c5ae6f11f20516a16e..714e92e704ce557a97053655900c3c90d1f0d01e 100644 (file)
@@ -3,8 +3,8 @@
   * Copyright 2011-2026 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   */
-import { Calendar } from 'vanilla-calendar-pro';
 import { computePosition, autoUpdate, offset, flip, shift, arrow } from '@floating-ui/dom';
+import { Calendar } from 'vanilla-calendar-pro';
 
 /**
  * --------------------------------------------------------------------------
@@ -791,13 +791,13 @@ const eventAction = (onEvent, stringSelector, callback) => {
  * Constants
  */
 
-const NAME$k = 'alert';
-const DATA_KEY$f = 'bs.alert';
-const EVENT_KEY$g = `.${DATA_KEY$f}`;
-const EVENT_CLOSE = `close${EVENT_KEY$g}`;
-const EVENT_CLOSED = `closed${EVENT_KEY$g}`;
+const NAME$l = 'alert';
+const DATA_KEY$g = 'bs.alert';
+const EVENT_KEY$h = `.${DATA_KEY$g}`;
+const EVENT_CLOSE = `close${EVENT_KEY$h}`;
+const EVENT_CLOSED = `closed${EVENT_KEY$h}`;
 const CLASS_NAME_FADE$4 = 'fade';
-const CLASS_NAME_SHOW$7 = 'show';
+const CLASS_NAME_SHOW$8 = 'show';
 
 /**
  * Class definition
@@ -806,7 +806,7 @@ const CLASS_NAME_SHOW$7 = 'show';
 class Alert extends BaseComponent {
   // Getters
   static get NAME() {
-    return NAME$k;
+    return NAME$l;
   }
 
   // Public
@@ -815,7 +815,7 @@ class Alert extends BaseComponent {
     if (closeEvent.defaultPrevented) {
       return;
     }
-    this._element.classList.remove(CLASS_NAME_SHOW$7);
+    this._element.classList.remove(CLASS_NAME_SHOW$8);
     const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$4);
     this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
   }
@@ -846,13 +846,13 @@ enableDismissTrigger(Alert, 'close');
  * Constants
  */
 
-const NAME$j = 'button';
-const DATA_KEY$e = 'bs.button';
-const EVENT_KEY$f = `.${DATA_KEY$e}`;
-const DATA_API_KEY$9 = '.data-api';
+const NAME$k = 'button';
+const DATA_KEY$f = 'bs.button';
+const EVENT_KEY$g = `.${DATA_KEY$f}`;
+const DATA_API_KEY$a = '.data-api';
 const CLASS_NAME_ACTIVE$3 = 'active';
-const SELECTOR_DATA_TOGGLE$9 = '[data-bs-toggle="button"]';
-const EVENT_CLICK_DATA_API$7 = `click${EVENT_KEY$f}${DATA_API_KEY$9}`;
+const SELECTOR_DATA_TOGGLE$a = '[data-bs-toggle="button"]';
+const EVENT_CLICK_DATA_API$8 = `click${EVENT_KEY$g}${DATA_API_KEY$a}`;
 
 /**
  * Class definition
@@ -861,7 +861,7 @@ const EVENT_CLICK_DATA_API$7 = `click${EVENT_KEY$f}${DATA_API_KEY$9}`;
 class Button extends BaseComponent {
   // Getters
   static get NAME() {
-    return NAME$j;
+    return NAME$k;
   }
 
   // Public
@@ -875,9 +875,9 @@ class Button extends BaseComponent {
  * Data API implementation
  */
 
-EventHandler.on(document, EVENT_CLICK_DATA_API$7, SELECTOR_DATA_TOGGLE$9, event => {
+EventHandler.on(document, EVENT_CLICK_DATA_API$8, SELECTOR_DATA_TOGGLE$a, event => {
   event.preventDefault();
-  const button = event.target.closest(SELECTOR_DATA_TOGGLE$9);
+  const button = event.target.closest(SELECTOR_DATA_TOGGLE$a);
   const data = Button.getOrCreateInstance(button);
   data.toggle();
 });
@@ -894,23 +894,23 @@ EventHandler.on(document, EVENT_CLICK_DATA_API$7, SELECTOR_DATA_TOGGLE$9, event
  * Constants
  */
 
-const NAME$i = 'swipe';
-const EVENT_KEY$e = '.bs.swipe';
-const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$e}`;
-const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$e}`;
-const EVENT_TOUCHEND = `touchend${EVENT_KEY$e}`;
-const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$e}`;
-const EVENT_POINTERUP = `pointerup${EVENT_KEY$e}`;
+const NAME$j = 'swipe';
+const EVENT_KEY$f = '.bs.swipe';
+const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$f}`;
+const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$f}`;
+const EVENT_TOUCHEND = `touchend${EVENT_KEY$f}`;
+const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$f}`;
+const EVENT_POINTERUP = `pointerup${EVENT_KEY$f}`;
 const POINTER_TYPE_TOUCH = 'touch';
 const POINTER_TYPE_PEN = 'pen';
 const CLASS_NAME_POINTER_EVENT = 'pointer-event';
 const SWIPE_THRESHOLD = 40;
-const Default$h = {
+const Default$i = {
   endCallback: null,
   leftCallback: null,
   rightCallback: null
 };
-const DefaultType$h = {
+const DefaultType$i = {
   endCallback: '(function|null)',
   leftCallback: '(function|null)',
   rightCallback: '(function|null)'
@@ -935,18 +935,18 @@ class Swipe extends Config {
 
   // Getters
   static get Default() {
-    return Default$h;
+    return Default$i;
   }
   static get DefaultType() {
-    return DefaultType$h;
+    return DefaultType$i;
   }
   static get NAME() {
-    return NAME$i;
+    return NAME$j;
   }
 
   // Public
   dispose() {
-    EventHandler.off(this._element, EVENT_KEY$e);
+    EventHandler.off(this._element, EVENT_KEY$f);
   }
 
   // Private
@@ -1014,10 +1014,10 @@ class Swipe extends Config {
  * Constants
  */
 
-const NAME$h = 'carousel';
-const DATA_KEY$d = 'bs.carousel';
-const EVENT_KEY$d = `.${DATA_KEY$d}`;
-const DATA_API_KEY$8 = '.data-api';
+const NAME$i = 'carousel';
+const DATA_KEY$e = 'bs.carousel';
+const EVENT_KEY$e = `.${DATA_KEY$e}`;
+const DATA_API_KEY$9 = '.data-api';
 const ARROW_LEFT_KEY$2 = 'ArrowLeft';
 const ARROW_RIGHT_KEY$2 = 'ArrowRight';
 const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
@@ -1026,14 +1026,14 @@ const ORDER_NEXT = 'next';
 const ORDER_PREV = 'prev';
 const DIRECTION_LEFT = 'left';
 const DIRECTION_RIGHT = 'right';
-const EVENT_SLIDE = `slide${EVENT_KEY$d}`;
-const EVENT_SLID = `slid${EVENT_KEY$d}`;
-const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$d}`;
-const EVENT_MOUSEENTER$2 = `mouseenter${EVENT_KEY$d}`;
-const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$d}`;
-const EVENT_DRAG_START = `dragstart${EVENT_KEY$d}`;
-const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$d}${DATA_API_KEY$8}`;
-const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$d}${DATA_API_KEY$8}`;
+const EVENT_SLIDE = `slide${EVENT_KEY$e}`;
+const EVENT_SLID = `slid${EVENT_KEY$e}`;
+const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$e}`;
+const EVENT_MOUSEENTER$2 = `mouseenter${EVENT_KEY$e}`;
+const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$e}`;
+const EVENT_DRAG_START = `dragstart${EVENT_KEY$e}`;
+const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$e}${DATA_API_KEY$9}`;
+const EVENT_CLICK_DATA_API$7 = `click${EVENT_KEY$e}${DATA_API_KEY$9}`;
 const CLASS_NAME_CAROUSEL = 'carousel';
 const CLASS_NAME_ACTIVE$2 = 'active';
 const CLASS_NAME_SLIDE = 'slide';
@@ -1052,7 +1052,7 @@ const KEY_TO_DIRECTION = {
   [ARROW_LEFT_KEY$2]: DIRECTION_RIGHT,
   [ARROW_RIGHT_KEY$2]: DIRECTION_LEFT
 };
-const Default$g = {
+const Default$h = {
   interval: 5000,
   keyboard: true,
   pause: 'hover',
@@ -1060,7 +1060,7 @@ const Default$g = {
   touch: true,
   wrap: true
 };
-const DefaultType$g = {
+const DefaultType$h = {
   interval: 'number',
   keyboard: 'boolean',
   pause: '(string|boolean)',
@@ -1090,13 +1090,13 @@ class Carousel extends BaseComponent {
 
   // Getters
   static get Default() {
-    return Default$g;
+    return Default$h;
   }
   static get DefaultType() {
-    return DefaultType$g;
+    return DefaultType$h;
   }
   static get NAME() {
-    return NAME$h;
+    return NAME$i;
   }
 
   // Public
@@ -1321,7 +1321,7 @@ class Carousel extends BaseComponent {
  * Data API implementation
  */
 
-EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_SLIDE, function (event) {
+EventHandler.on(document, EVENT_CLICK_DATA_API$7, SELECTOR_DATA_SLIDE, function (event) {
   const target = SelectorEngine.getElementFromSelector(this);
   if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
     return;
@@ -1361,16 +1361,16 @@ EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {
  * Constants
  */
 
-const NAME$g = 'collapse';
-const DATA_KEY$c = 'bs.collapse';
-const EVENT_KEY$c = `.${DATA_KEY$c}`;
-const DATA_API_KEY$7 = '.data-api';
-const EVENT_SHOW$7 = `show${EVENT_KEY$c}`;
-const EVENT_SHOWN$7 = `shown${EVENT_KEY$c}`;
-const EVENT_HIDE$7 = `hide${EVENT_KEY$c}`;
-const EVENT_HIDDEN$7 = `hidden${EVENT_KEY$c}`;
-const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$c}${DATA_API_KEY$7}`;
-const CLASS_NAME_SHOW$6 = 'show';
+const NAME$h = 'collapse';
+const DATA_KEY$d = 'bs.collapse';
+const EVENT_KEY$d = `.${DATA_KEY$d}`;
+const DATA_API_KEY$8 = '.data-api';
+const EVENT_SHOW$8 = `show${EVENT_KEY$d}`;
+const EVENT_SHOWN$8 = `shown${EVENT_KEY$d}`;
+const EVENT_HIDE$8 = `hide${EVENT_KEY$d}`;
+const EVENT_HIDDEN$8 = `hidden${EVENT_KEY$d}`;
+const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$d}${DATA_API_KEY$8}`;
+const CLASS_NAME_SHOW$7 = 'show';
 const CLASS_NAME_COLLAPSE = 'collapse';
 const CLASS_NAME_COLLAPSING = 'collapsing';
 const CLASS_NAME_COLLAPSED = 'collapsed';
@@ -1379,12 +1379,12 @@ const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
 const WIDTH = 'width';
 const HEIGHT = 'height';
 const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
-const SELECTOR_DATA_TOGGLE$8 = '[data-bs-toggle="collapse"]';
-const Default$f = {
+const SELECTOR_DATA_TOGGLE$9 = '[data-bs-toggle="collapse"]';
+const Default$g = {
   parent: null,
   toggle: true
 };
-const DefaultType$f = {
+const DefaultType$g = {
   parent: '(null|element)',
   toggle: 'boolean'
 };
@@ -1398,7 +1398,7 @@ class Collapse extends BaseComponent {
     super(element, config);
     this._isTransitioning = false;
     this._triggerArray = [];
-    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$8);
+    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$9);
     for (const elem of toggleList) {
       const selector = SelectorEngine.getSelectorFromElement(elem);
       const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);
@@ -1417,13 +1417,13 @@ class Collapse extends BaseComponent {
 
   // Getters
   static get Default() {
-    return Default$f;
+    return Default$g;
   }
   static get DefaultType() {
-    return DefaultType$f;
+    return DefaultType$g;
   }
   static get NAME() {
-    return NAME$g;
+    return NAME$h;
   }
 
   // Public
@@ -1449,7 +1449,7 @@ class Collapse extends BaseComponent {
     if (activeChildren.length && activeChildren[0]._isTransitioning) {
       return;
     }
-    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$7);
+    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$8);
     if (startEvent.defaultPrevented) {
       return;
     }
@@ -1465,9 +1465,9 @@ class Collapse extends BaseComponent {
     const complete = () => {
       this._isTransitioning = false;
       this._element.classList.remove(CLASS_NAME_COLLAPSING);
-      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$6);
+      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
       this._element.style[dimension] = '';
-      EventHandler.trigger(this._element, EVENT_SHOWN$7);
+      EventHandler.trigger(this._element, EVENT_SHOWN$8);
     };
     const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
     const scrollSize = `scroll${capitalizedDimension}`;
@@ -1478,7 +1478,7 @@ class Collapse extends BaseComponent {
     if (this._isTransitioning || !this._isShown()) {
       return;
     }
-    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$7);
+    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$8);
     if (startEvent.defaultPrevented) {
       return;
     }
@@ -1486,7 +1486,7 @@ class Collapse extends BaseComponent {
     this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
     reflow(this._element);
     this._element.classList.add(CLASS_NAME_COLLAPSING);
-    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$6);
+    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
     for (const trigger of this._triggerArray) {
       const element = SelectorEngine.getElementFromSelector(trigger);
       if (element && !this._isShown(element)) {
@@ -1498,7 +1498,7 @@ class Collapse extends BaseComponent {
       this._isTransitioning = false;
       this._element.classList.remove(CLASS_NAME_COLLAPSING);
       this._element.classList.add(CLASS_NAME_COLLAPSE);
-      EventHandler.trigger(this._element, EVENT_HIDDEN$7);
+      EventHandler.trigger(this._element, EVENT_HIDDEN$8);
     };
     this._element.style[dimension] = '';
     this._queueCallback(complete, this._element, true);
@@ -1506,7 +1506,7 @@ class Collapse extends BaseComponent {
 
   // Private
   _isShown(element = this._element) {
-    return element.classList.contains(CLASS_NAME_SHOW$6);
+    return element.classList.contains(CLASS_NAME_SHOW$7);
   }
   _configAfterMerge(config) {
     config.toggle = Boolean(config.toggle); // Coerce string values
@@ -1520,7 +1520,7 @@ class Collapse extends BaseComponent {
     if (!this._config.parent) {
       return;
     }
-    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$8);
+    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$9);
     for (const element of children) {
       const selected = SelectorEngine.getElementFromSelector(element);
       if (selected) {
@@ -1548,7 +1548,7 @@ class Collapse extends BaseComponent {
  * Data API implementation
  */
 
-EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$8, function (event) {
+EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$9, function (event) {
   // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
   if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {
     event.preventDefault();
@@ -1562,779 +1562,889 @@ EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$8, functi
 
 /**
  * --------------------------------------------------------------------------
- * Bootstrap datepicker.js
+ * Bootstrap util/floating-ui.js
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  * --------------------------------------------------------------------------
  */
 
 
 /**
- * Constants
+ * Breakpoints for responsive placement (matches SCSS $breakpoints)
  */
-
-const NAME$f = 'datepicker';
-const DATA_KEY$b = 'bs.datepicker';
-const EVENT_KEY$b = `.${DATA_KEY$b}`;
-const DATA_API_KEY$6 = '.data-api';
-const EVENT_CHANGE = `change${EVENT_KEY$b}`;
-const EVENT_SHOW$6 = `show${EVENT_KEY$b}`;
-const EVENT_SHOWN$6 = `shown${EVENT_KEY$b}`;
-const EVENT_HIDE$6 = `hide${EVENT_KEY$b}`;
-const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$b}`;
-const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$b}${DATA_API_KEY$6}`;
-const EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY$b}${DATA_API_KEY$6}`;
-const SELECTOR_DATA_TOGGLE$7 = '[data-bs-toggle="datepicker"]';
-const HIDE_DELAY = 100; // ms delay before hiding after selection
-
-const Default$e = {
-  datepickerTheme: null,
-  // 'light', 'dark', 'auto' - explicit theme for datepicker popover only
-  dateMin: null,
-  dateMax: null,
-  dateFormat: null,
-  // Intl.DateTimeFormat options, or function(date, locale) => string
-  displayElement: null,
-  // Element to show formatted date (defaults to element for buttons)
-  displayMonthsCount: 1,
-  // Number of months to display side-by-side
-  firstWeekday: 1,
-  // Monday
-  inline: false,
-  // Render calendar inline (no popup)
-  locale: 'default',
-  positionElement: null,
-  // Element to position calendar relative to (defaults to input)
-  selectedDates: [],
-  selectionMode: 'single',
-  // 'single', 'multiple', 'multiple-ranged'
-  placement: 'left',
-  // 'left', 'center', 'right', 'auto'
-  vcpOptions: {} // Pass-through for any VCP option
-};
-const DefaultType$e = {
-  datepickerTheme: '(null|string)',
-  dateMin: '(null|string|number|object)',
-  dateMax: '(null|string|number|object)',
-  dateFormat: '(null|object|function)',
-  displayElement: '(null|string|element|boolean)',
-  displayMonthsCount: 'number',
-  firstWeekday: 'number',
-  inline: 'boolean',
-  locale: 'string',
-  positionElement: '(null|string|element)',
-  selectedDates: 'array',
-  selectionMode: 'string',
-  placement: 'string',
-  vcpOptions: 'object'
+const BREAKPOINTS = {
+  sm: 576,
+  md: 768,
+  lg: 1024,
+  xl: 1280,
+  '2xl': 1536
 };
 
 /**
- * Class definition
+ * Parse a placement string that may contain responsive prefixes
+ * Example: "bottom-start md:top-end lg:right" returns { xs: 'bottom-start', md: 'top-end', lg: 'right' }
+ *
+ * @param {string} placementString - The placement string to parse
+ * @param {string} defaultPlacement - The default placement to use for xs/base
+ * @returns {object|null} - Object with breakpoint keys and placement values, or null if not responsive
  */
-
-class Datepicker extends BaseComponent {
-  constructor(element, config) {
-    super(element, config);
-    this._calendar = null;
-    this._isShown = false;
-    this._initCalendar();
+const parseResponsivePlacement = (placementString, defaultPlacement = 'bottom') => {
+  // Check if placement contains responsive prefixes (e.g., "bottom-start md:top-end")
+  if (!placementString || !placementString.includes(':')) {
+    return null;
   }
 
-  // Getters
-  static get Default() {
-    return Default$e;
-  }
-  static get DefaultType() {
-    return DefaultType$e;
-  }
-  static get NAME() {
-    return NAME$f;
-  }
+  // Parse the placement string into breakpoint-keyed object
+  const parts = placementString.split(/\s+/);
+  const placements = {
+    xs: defaultPlacement
+  }; // Default fallback
 
-  // Public
-  toggle() {
-    if (this._config.inline) {
-      return; // Inline calendars are always visible
-    }
-    return this._isShown ? this.hide() : this.show();
-  }
-  show() {
-    if (this._config.inline) {
-      return; // Inline calendars are always visible
-    }
-    if (!this._calendar || isDisabled(this._element) || this._isShown) {
-      return;
-    }
-    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);
-    if (showEvent.defaultPrevented) {
-      return;
-    }
-    this._calendar.show();
-    this._isShown = true;
-    EventHandler.trigger(this._element, EVENT_SHOWN$6);
-  }
-  hide() {
-    if (this._config.inline) {
-      return; // Inline calendars are always visible
-    }
-    if (!this._calendar || !this._isShown) {
-      return;
-    }
-    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);
-    if (hideEvent.defaultPrevented) {
-      return;
-    }
-    this._calendar.hide();
-    this._isShown = false;
-    EventHandler.trigger(this._element, EVENT_HIDDEN$6);
-  }
-  dispose() {
-    if (this._themeObserver) {
-      this._themeObserver.disconnect();
-      this._themeObserver = null;
-    }
-    if (this._calendar) {
-      this._calendar.destroy();
-    }
-    this._calendar = null;
-    super.dispose();
-  }
-  getSelectedDates() {
-    const dates = this._calendar?.context?.selectedDates;
-    return dates ? [...dates] : [];
-  }
-  setSelectedDates(dates) {
-    if (this._calendar) {
-      this._calendar.set({
-        selectedDates: dates
-      });
+  for (const part of parts) {
+    if (part.includes(':')) {
+      // Responsive placement like "md:top-end"
+      const [breakpoint, placement] = part.split(':');
+      if (BREAKPOINTS[breakpoint] !== undefined) {
+        placements[breakpoint] = placement;
+      }
+    } else {
+      // Base placement (no prefix = xs/default)
+      placements.xs = part;
     }
   }
+  return placements;
+};
 
-  // Private
-  _initCalendar() {
-    this._isInput = this._element.tagName === 'INPUT';
-    this._isInline = this._config.inline;
-
-    // For inline mode, look for a hidden input child to bind to
-    if (this._isInline && !this._isInput) {
-      this._boundInput = this._element.querySelector('input[type="hidden"], input[name]');
-    }
-    this._positionElement = this._resolvePositionElement();
-    this._displayElement = this._resolveDisplayElement();
-    const calendarOptions = this._buildCalendarOptions();
+/**
+ * Get the active placement for the current viewport width
+ *
+ * @param {object} responsivePlacements - Object with breakpoint keys and placement values
+ * @param {string} defaultPlacement - Fallback placement
+ * @returns {string} - The active placement for current viewport
+ */
+const getResponsivePlacement = (responsivePlacements, defaultPlacement = 'bottom') => {
+  if (!responsivePlacements) {
+    return defaultPlacement;
+  }
 
-    // Create calendar on the position element (for correct popup positioning)
-    // but value updates still go to this._element (the input)
-    this._calendar = new Calendar(this._positionElement, calendarOptions);
-    this._calendar.init();
+  // Get current viewport width
+  const viewportWidth = window.innerWidth;
 
-    // Watch for theme changes on ancestor elements (for live theme switching)
-    this._setupThemeObserver();
+  // Find the largest breakpoint that matches
+  let activePlacement = responsivePlacements.xs || defaultPlacement;
 
-    // Set initial value if input has a value
-    if (this._isInput && this._element.value) {
-      this._parseInputValue();
+  // Check breakpoints in order (sm, md, lg, xl, 2xl)
+  const breakpointOrder = ['sm', 'md', 'lg', 'xl', '2xl'];
+  for (const breakpoint of breakpointOrder) {
+    const minWidth = BREAKPOINTS[breakpoint];
+    if (viewportWidth >= minWidth && responsivePlacements[breakpoint]) {
+      activePlacement = responsivePlacements[breakpoint];
     }
-
-    // Populate input/display with preselected dates
-    this._updateDisplayWithSelectedDates();
   }
-  _updateDisplayWithSelectedDates() {
-    const {
-      selectedDates
-    } = this._config;
-    if (!selectedDates || selectedDates.length === 0) {
-      return;
-    }
-    const formattedDate = this._formatDateForInput(selectedDates);
-    if (this._isInput) {
-      this._element.value = formattedDate;
-    }
-    if (this._boundInput) {
-      this._boundInput.value = selectedDates.join(',');
-    }
-    if (this._displayElement) {
-      this._displayElement.textContent = formattedDate;
-    }
+  return activePlacement;
+};
+
+/**
+ * Create media query listeners for responsive placement changes
+ *
+ * @param {Function} callback - Callback to run when breakpoint changes
+ * @returns {Array} - Array of { mql, handler } objects for cleanup
+ */
+const createBreakpointListeners = callback => {
+  const listeners = [];
+  for (const breakpoint of Object.keys(BREAKPOINTS)) {
+    const minWidth = BREAKPOINTS[breakpoint];
+    const mql = window.matchMedia(`(min-width: ${minWidth}px)`);
+    mql.addEventListener('change', callback);
+    listeners.push({
+      mql,
+      handler: callback
+    });
   }
-  _resolvePositionElement() {
-    let {
-      positionElement
-    } = this._config;
-    if (typeof positionElement === 'string') {
-      positionElement = document.querySelector(positionElement);
-    }
+  return listeners;
+};
 
-    // Use input's parent if in form-adorn
-    if (!positionElement && this._isInput && !this._isInline) {
-      const parent = this._element.closest('.form-adorn');
-      if (parent) {
-        positionElement = parent;
-      }
-    }
-    return positionElement || this._element;
+/**
+ * Clean up media query listeners
+ *
+ * @param {Array} listeners - Array of { mql, handler } objects
+ */
+const disposeBreakpointListeners = listeners => {
+  for (const {
+    mql,
+    handler
+  } of listeners) {
+    mql.removeEventListener('change', handler);
   }
-  _resolveDisplayElement() {
-    const {
-      displayElement
-    } = this._config;
-    if (typeof displayElement === 'string') {
-      return document.querySelector(displayElement);
-    }
+};
 
-    // For buttons/non-inputs (not inline), look for a [data-bs-datepicker-display] child
-    if (displayElement === true || displayElement === null && !this._isInput && !this._isInline) {
-      const displayChild = this._element.querySelector('[data-bs-datepicker-display]');
-      return displayChild || this._element;
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap menu.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+
+/**
+ * Constants
+ */
+
+const NAME$g = 'menu';
+const DATA_KEY$c = 'bs.menu';
+const EVENT_KEY$c = `.${DATA_KEY$c}`;
+const DATA_API_KEY$7 = '.data-api';
+const ESCAPE_KEY$2 = 'Escape';
+const TAB_KEY$2 = 'Tab';
+const ARROW_UP_KEY$2 = 'ArrowUp';
+const ARROW_DOWN_KEY$2 = 'ArrowDown';
+const ARROW_LEFT_KEY$1 = 'ArrowLeft';
+const ARROW_RIGHT_KEY$1 = 'ArrowRight';
+const HOME_KEY$2 = 'Home';
+const END_KEY$2 = 'End';
+const ENTER_KEY$1 = 'Enter';
+const SPACE_KEY$1 = ' ';
+const RIGHT_MOUSE_BUTTON = 2;
+const SUBMENU_CLOSE_DELAY = 100;
+const EVENT_HIDE$7 = `hide${EVENT_KEY$c}`;
+const EVENT_HIDDEN$7 = `hidden${EVENT_KEY$c}`;
+const EVENT_SHOW$7 = `show${EVENT_KEY$c}`;
+const EVENT_SHOWN$7 = `shown${EVENT_KEY$c}`;
+const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$c}${DATA_API_KEY$7}`;
+const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$c}${DATA_API_KEY$7}`;
+const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$c}${DATA_API_KEY$7}`;
+const CLASS_NAME_SHOW$6 = 'show';
+const SELECTOR_DATA_TOGGLE$8 = '[data-bs-toggle="menu"]:not(.disabled):not(:disabled)';
+const SELECTOR_MENU$2 = '.menu';
+const SELECTOR_SUBMENU = '.submenu';
+const SELECTOR_SUBMENU_TOGGLE = '.submenu > .menu-item';
+const SELECTOR_NAVBAR_NAV = '.navbar-nav';
+const SELECTOR_VISIBLE_ITEMS$1 = '.menu-item:not(.disabled):not(:disabled)';
+const DEFAULT_PLACEMENT = 'bottom-start';
+const SUBMENU_PLACEMENT = 'end-start';
+const resolveLogicalPlacement = placement => {
+  if (isRTL()) {
+    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left');
+  }
+  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right');
+};
+const triangleSign = (p1, p2, p3) => (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);
+const Default$f = {
+  autoClose: true,
+  boundary: 'clippingParents',
+  container: false,
+  display: 'dynamic',
+  offset: [0, 2],
+  floatingConfig: null,
+  menu: null,
+  placement: DEFAULT_PLACEMENT,
+  reference: 'toggle',
+  strategy: 'absolute',
+  submenuTrigger: 'both',
+  submenuDelay: SUBMENU_CLOSE_DELAY
+};
+const DefaultType$f = {
+  autoClose: '(boolean|string)',
+  boundary: '(string|element)',
+  container: '(string|element|boolean)',
+  display: 'string',
+  offset: '(array|string|function)',
+  floatingConfig: '(null|object|function)',
+  menu: '(null|element)',
+  placement: 'string',
+  reference: '(string|element|object)',
+  strategy: 'string',
+  submenuTrigger: 'string',
+  submenuDelay: 'number'
+};
+
+/**
+ * Class definition
+ */
+
+class Menu extends BaseComponent {
+  static _openInstances = (() => new Set())();
+  constructor(element, config) {
+    if (typeof computePosition === 'undefined') {
+      throw new TypeError('Bootstrap\'s menus require Floating UI (https://floating-ui.com)');
     }
-    return displayElement;
+    super(element, config);
+    this._floatingCleanup = null;
+    this._mediaQueryListeners = [];
+    this._responsivePlacements = null;
+    this._parent = this._element.parentNode;
+    this._isSubmenu = this._parent.classList?.contains('submenu');
+    this._openSubmenus = new Map();
+    this._submenuCloseTimeouts = new Map();
+    this._hoverIntentData = null;
+    this._menu = this._config.menu || this._findMenu();
+    this._menuOriginalParent = this._menu?.parentNode;
+    this._parseResponsivePlacements();
+    this._setupSubmenuListeners();
   }
-  _getThemeAncestor() {
-    return this._element.closest('[data-bs-theme]');
+
+  // Getters
+  static get Default() {
+    return Default$f;
   }
-  _getEffectiveTheme() {
-    // Priority: explicit datepickerTheme config > inherited from ancestor > none
-    const {
-      datepickerTheme
-    } = this._config;
-    if (datepickerTheme) {
-      return datepickerTheme;
-    }
-    const ancestor = this._getThemeAncestor();
-    return ancestor?.getAttribute('data-bs-theme') || null;
+  static get DefaultType() {
+    return DefaultType$f;
   }
-  _syncThemeAttribute(element) {
-    if (!element) {
+  static get NAME() {
+    return NAME$g;
+  }
+
+  // Public
+  toggle() {
+    return this._isShown() ? this.hide() : this.show();
+  }
+  show() {
+    if (isDisabled(this._element) || this._isShown()) {
       return;
     }
-    const theme = this._getEffectiveTheme();
-    if (theme) {
-      // Copy theme to popover (needed because VCP appends to body, breaking CSS inheritance)
-      element.setAttribute('data-bs-theme', theme);
-    } else {
-      // No theme - remove attribute to allow natural inheritance
-      element.removeAttribute('data-bs-theme');
-    }
-  }
-  _setupThemeObserver() {
-    // Watch for theme changes on ancestor elements
-    const ancestor = this._getThemeAncestor();
-    if (!ancestor || this._config.datepickerTheme) {
-      // No ancestor to watch, or explicit datepickerTheme overrides
+    const relatedTarget = {
+      relatedTarget: this._element
+    };
+    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$7, relatedTarget);
+    if (showEvent.defaultPrevented) {
       return;
     }
-    this._themeObserver = new MutationObserver(() => {
-      this._syncThemeAttribute(this._calendar?.context?.mainElement);
-    });
-    this._themeObserver.observe(ancestor, {
-      attributes: true,
-      attributeFilter: ['data-bs-theme']
-    });
-  }
-  _buildCalendarOptions() {
-    // Get theme for VCP - use 'system' for auto-detection if no explicit theme
-    const theme = this._getEffectiveTheme();
-    // VCP uses 'system' for auto, Bootstrap uses 'auto'
-    const vcpTheme = !theme || theme === 'auto' ? 'system' : theme;
-    const calendarOptions = {
-      ...this._config.vcpOptions,
-      inputMode: !this._isInline,
-      positionToInput: this._config.placement,
-      firstWeekday: this._config.firstWeekday,
-      locale: this._config.locale,
-      selectionDatesMode: this._config.selectionMode,
-      selectedDates: this._config.selectedDates,
-      displayMonthsCount: this._config.displayMonthsCount,
-      type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',
-      selectedTheme: vcpTheme,
-      themeAttrDetect: '[data-bs-theme]',
-      onClickDate: (self, event) => this._handleDateClick(self, event),
-      onInit: self => {
-        this._syncThemeAttribute(self.context.mainElement);
-      },
-      onShow: () => {
-        this._isShown = true;
-        this._syncThemeAttribute(this._calendar.context.mainElement);
-      },
-      onHide: () => {
-        this._isShown = false;
+    this._moveMenuToContainer();
+    this._createFloating();
+    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {
+      for (const element of [].concat(...document.body.children)) {
+        EventHandler.on(element, 'mouseover', noop);
       }
-    };
-
-    // Navigate to the month of the first selected date
-    if (this._config.selectedDates.length > 0) {
-      const firstDate = this._parseDate(this._config.selectedDates[0]);
-      calendarOptions.selectedMonth = firstDate.getMonth();
-      calendarOptions.selectedYear = firstDate.getFullYear();
     }
-    if (this._config.dateMin) {
-      calendarOptions.dateMin = this._config.dateMin;
+    this._element.focus({
+      focusVisible: false
+    });
+    this._element.setAttribute('aria-expanded', 'true');
+    this._menu.classList.add(CLASS_NAME_SHOW$6);
+    this._element.classList.add(CLASS_NAME_SHOW$6);
+    if (this._parent) {
+      this._parent.classList.add(CLASS_NAME_SHOW$6);
     }
-    if (this._config.dateMax) {
-      calendarOptions.dateMax = this._config.dateMax;
+    Menu._openInstances.add(this);
+    EventHandler.trigger(this._element, EVENT_SHOWN$7, relatedTarget);
+  }
+  hide() {
+    if (isDisabled(this._element) || !this._isShown()) {
+      return;
     }
-    return calendarOptions;
+    const relatedTarget = {
+      relatedTarget: this._element
+    };
+    this._completeHide(relatedTarget);
   }
-  _handleDateClick(self, event) {
-    const selectedDates = [...self.context.selectedDates];
-    if (selectedDates.length > 0) {
-      const formattedDate = this._formatDateForInput(selectedDates);
-      if (this._isInput) {
-        this._element.value = formattedDate;
-      }
-      if (this._boundInput) {
-        this._boundInput.value = selectedDates.join(',');
-      }
-      if (this._displayElement) {
-        this._displayElement.textContent = formattedDate;
+  dispose() {
+    this._disposeFloating();
+    this._restoreMenuToOriginalParent();
+    this._disposeMediaQueryListeners();
+    this._closeAllSubmenus();
+    this._clearAllSubmenuTimeouts();
+    Menu._openInstances.delete(this);
+    super.dispose();
+  }
+  update() {
+    if (this._floatingCleanup) {
+      this._updateFloatingPosition();
+    }
+  }
+
+  // Private
+  _findMenu() {
+    return SelectorEngine.next(this._element, SELECTOR_MENU$2)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU$2)[0] || SelectorEngine.findOne(SELECTOR_MENU$2, this._parent);
+  }
+  _completeHide(relatedTarget) {
+    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$7, relatedTarget);
+    if (hideEvent.defaultPrevented) {
+      return;
+    }
+    this._closeAllSubmenus();
+    if ('ontouchstart' in document.documentElement) {
+      for (const element of [].concat(...document.body.children)) {
+        EventHandler.off(element, 'mouseover', noop);
       }
     }
-    EventHandler.trigger(this._element, EVENT_CHANGE, {
-      dates: selectedDates,
-      event
-    });
-    this._maybeHideAfterSelection(selectedDates);
+    this._disposeFloating();
+    this._restoreMenuToOriginalParent();
+    this._menu.classList.remove(CLASS_NAME_SHOW$6);
+    this._element.classList.remove(CLASS_NAME_SHOW$6);
+    if (this._parent) {
+      this._parent.classList.remove(CLASS_NAME_SHOW$6);
+    }
+    this._element.setAttribute('aria-expanded', 'false');
+    Manipulator.removeDataAttribute(this._menu, 'placement');
+    Manipulator.removeDataAttribute(this._menu, 'display');
+    Menu._openInstances.delete(this);
+    EventHandler.trigger(this._element, EVENT_HIDDEN$7, relatedTarget);
   }
-  _maybeHideAfterSelection(selectedDates) {
-    if (this._isInline) {
+  _getConfig(config) {
+    config = super._getConfig(config);
+    if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {
+      throw new TypeError(`${NAME$g.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
+    }
+    return config;
+  }
+  _createFloating() {
+    if (this._config.display === 'static') {
+      Manipulator.setDataAttribute(this._menu, 'display', 'static');
       return;
     }
-    const shouldHide = this._config.selectionMode === 'single' && selectedDates.length > 0 || this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2;
-    if (shouldHide) {
-      setTimeout(() => this.hide(), HIDE_DELAY);
+    let referenceElement = this._element;
+    if (this._config.reference === 'parent') {
+      referenceElement = this._parent;
+    } else if (isElement(this._config.reference)) {
+      referenceElement = getElement(this._config.reference);
+    } else if (typeof this._config.reference === 'object') {
+      referenceElement = this._config.reference;
     }
+    this._updateFloatingPosition(referenceElement);
+    this._floatingCleanup = autoUpdate(referenceElement, this._menu, () => this._updateFloatingPosition(referenceElement));
   }
-  _parseDate(dateStr) {
-    const [year, month, day] = dateStr.split('-');
-    return new Date(year, month - 1, day);
-  }
-  _formatDate(dateStr) {
-    const date = this._parseDate(dateStr);
-    const locale = this._config.locale === 'default' ? undefined : this._config.locale;
-    const {
-      dateFormat
-    } = this._config;
-
-    // Custom function formatter
-    if (typeof dateFormat === 'function') {
-      return dateFormat(date, locale);
+  async _updateFloatingPosition(referenceElement = null) {
+    if (!this._menu) {
+      return;
     }
-
-    // Intl.DateTimeFormat options object
-    if (dateFormat && typeof dateFormat === 'object') {
-      return new Intl.DateTimeFormat(locale, dateFormat).format(date);
+    if (!referenceElement) {
+      if (this._config.reference === 'parent') {
+        referenceElement = this._parent;
+      } else if (isElement(this._config.reference)) {
+        referenceElement = getElement(this._config.reference);
+      } else if (typeof this._config.reference === 'object') {
+        referenceElement = this._config.reference;
+      } else {
+        referenceElement = this._element;
+      }
     }
-
-    // Default: locale-aware formatting
-    return date.toLocaleDateString(locale);
+    const placement = this._getPlacement();
+    const middleware = this._getFloatingMiddleware();
+    const floatingConfig = this._getFloatingConfig(placement, middleware);
+    await this._applyFloatingPosition(referenceElement, this._menu, floatingConfig.placement, floatingConfig.middleware, floatingConfig.strategy);
   }
-  _formatDateForInput(dates) {
-    if (dates.length === 0) {
-      return '';
-    }
-    if (dates.length === 1) {
-      return this._formatDate(dates[0]);
+  _isShown() {
+    return this._menu.classList.contains(CLASS_NAME_SHOW$6);
+  }
+  _getPlacement() {
+    const placement = this._responsivePlacements ? getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) : this._config.placement;
+    return resolveLogicalPlacement(placement);
+  }
+  _parseResponsivePlacements() {
+    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT);
+    if (this._responsivePlacements) {
+      this._setupMediaQueryListeners();
     }
-
-    // For date ranges, use en-dash; for multiple dates, use comma
-    const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', ';
-    return dates.map(d => this._formatDate(d)).join(separator);
   }
-  _parseInputValue() {
-    // Try to parse the input value as a date
-    const value = this._element.value.trim();
-    if (!value) {
-      return;
+  _setupMediaQueryListeners() {
+    this._disposeMediaQueryListeners();
+    this._mediaQueryListeners = createBreakpointListeners(() => {
+      if (this._isShown()) {
+        this._updateFloatingPosition();
+      }
+    });
+  }
+  _disposeMediaQueryListeners() {
+    disposeBreakpointListeners(this._mediaQueryListeners);
+    this._mediaQueryListeners = [];
+  }
+  _getOffset() {
+    const {
+      offset: offsetConfig
+    } = this._config;
+    if (typeof offsetConfig === 'string') {
+      return offsetConfig.split(',').map(value => Number.parseInt(value, 10));
     }
-    const date = new Date(value);
-    if (!Number.isNaN(date.getTime())) {
-      const year = date.getFullYear();
-      const month = String(date.getMonth() + 1).padStart(2, '0');
-      const day = String(date.getDate()).padStart(2, '0');
-      const formatted = `${year}-${month}-${day}`;
-      this._calendar.set({
-        selectedDates: [formatted]
-      });
+    if (typeof offsetConfig === 'function') {
+      return ({
+        placement,
+        rects
+      }) => {
+        const result = offsetConfig({
+          placement,
+          reference: rects.reference,
+          floating: rects.floating
+        }, this._element);
+        return result;
+      };
     }
+    return offsetConfig;
   }
-}
-
-/**
- * Data API implementation
- */
-
-EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$7, function (event) {
-  // Only handle if not an input (inputs use focus)
-  // Skip inline datepickers (they're always visible)
-  if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true') {
-    return;
+  _getFloatingMiddleware() {
+    const offsetValue = this._getOffset();
+    const middleware = [offset(typeof offsetValue === 'function' ? offsetValue : {
+      mainAxis: offsetValue[1] || 0,
+      crossAxis: offsetValue[0] || 0
+    }), flip({
+      fallbackPlacements: this._getFallbackPlacements()
+    }), shift({
+      boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary
+    })];
+    return middleware;
   }
-  event.preventDefault();
-  Datepicker.getOrCreateInstance(this).toggle();
-});
-EventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE$7, function () {
-  // Handle focus for input elements
-  if (this.tagName !== 'INPUT') {
-    return;
+  _getFallbackPlacements() {
+    const placement = this._getPlacement();
+    const fallbackMap = {
+      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],
+      'bottom-start': ['top-start', 'bottom-end', 'top-end'],
+      'bottom-end': ['top-end', 'bottom-start', 'top-start'],
+      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],
+      'top-start': ['bottom-start', 'top-end', 'bottom-end'],
+      'top-end': ['bottom-end', 'top-start', 'bottom-start'],
+      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],
+      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],
+      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],
+      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],
+      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],
+      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']
+    };
+    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left'];
   }
-  Datepicker.getOrCreateInstance(this).show();
-});
-
-// Auto-initialize inline datepickers on DOMContentLoaded
-EventHandler.on(document, `DOMContentLoaded${EVENT_KEY$b}${DATA_API_KEY$6}`, () => {
-  for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE$7}[data-bs-inline="true"]`)) {
-    Datepicker.getOrCreateInstance(element);
+  _getFloatingConfig(placement, middleware) {
+    const defaultConfig = {
+      placement,
+      middleware,
+      strategy: this._config.strategy
+    };
+    return {
+      ...defaultConfig,
+      ...execute(this._config.floatingConfig, [undefined, defaultConfig])
+    };
   }
-});
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap dialog.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Constants
- */
-
-const NAME$e = 'dialog';
-const DATA_KEY$a = 'bs.dialog';
-const EVENT_KEY$a = `.${DATA_KEY$a}`;
-const DATA_API_KEY$5 = '.data-api';
-const EVENT_SHOW$5 = `show${EVENT_KEY$a}`;
-const EVENT_SHOWN$5 = `shown${EVENT_KEY$a}`;
-const EVENT_HIDE$5 = `hide${EVENT_KEY$a}`;
-const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$a}`;
-const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$a}`;
-const EVENT_CANCEL = `cancel${EVENT_KEY$a}`;
-const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$a}${DATA_API_KEY$5}`;
-const CLASS_NAME_STATIC = 'dialog-static';
-const CLASS_NAME_OPEN = 'dialog-open';
-const CLASS_NAME_NONMODAL = 'dialog-nonmodal';
-const SELECTOR_DATA_TOGGLE$6 = '[data-bs-toggle="dialog"]';
-const SELECTOR_OPEN_MODAL_DIALOG = 'dialog.dialog[open]:not(.dialog-nonmodal)';
-const Default$d = {
-  backdrop: true,
-  // true (click dismisses) or 'static' (click does nothing) - only applies to modal dialogs
-  keyboard: true,
-  modal: true // true uses showModal(), false uses show() for non-modal dialogs
-};
-const DefaultType$d = {
-  backdrop: '(boolean|string)',
-  keyboard: 'boolean',
-  modal: 'boolean'
-};
-
-/**
- * Class definition
- */
-
-class Dialog extends BaseComponent {
-  constructor(element, config) {
-    super(element, config);
-    this._isTransitioning = false;
-    this._addEventListeners();
+  _disposeFloating() {
+    if (this._floatingCleanup) {
+      this._floatingCleanup();
+      this._floatingCleanup = null;
+    }
+  }
+  _getContainer() {
+    const {
+      container
+    } = this._config;
+    if (container === false) {
+      return null;
+    }
+    return container === true ? document.body : getElement(container);
   }
-
-  // Getters
-  static get Default() {
-    return Default$d;
+  _moveMenuToContainer() {
+    const container = this._getContainer();
+    if (!container || !this._menu) {
+      return;
+    }
+    if (this._menu.parentNode !== container) {
+      container.append(this._menu);
+    }
   }
-  static get DefaultType() {
-    return DefaultType$d;
+  _restoreMenuToOriginalParent() {
+    if (!this._menuOriginalParent || !this._menu) {
+      return;
+    }
+    if (this._menu.parentNode !== this._menuOriginalParent) {
+      this._menuOriginalParent.append(this._menu);
+    }
   }
-  static get NAME() {
-    return NAME$e;
+  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {
+    if (!floating.isConnected) {
+      return null;
+    }
+    const {
+      x,
+      y,
+      placement: finalPlacement
+    } = await computePosition(reference, floating, {
+      placement,
+      middleware,
+      strategy
+    });
+    if (!floating.isConnected) {
+      return null;
+    }
+    Object.assign(floating.style, {
+      position: strategy,
+      left: `${x}px`,
+      top: `${y}px`,
+      margin: '0'
+    });
+    Manipulator.setDataAttribute(floating, 'placement', finalPlacement);
+    return finalPlacement;
   }
 
-  // Public
-  toggle(relatedTarget) {
-    return this._element.open ? this.hide() : this.show(relatedTarget);
+  // -------------------------------------------------------------------------
+  // Submenu handling
+  // -------------------------------------------------------------------------
+
+  _setupSubmenuListeners() {
+    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {
+      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {
+        this._onSubmenuTriggerEnter(event);
+      });
+      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {
+        this._onSubmenuLeave(event);
+      });
+      EventHandler.on(this._menu, 'mousemove', event => {
+        this._trackMousePosition(event);
+      });
+    }
+    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {
+      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {
+        this._onSubmenuTriggerClick(event);
+      });
+    }
   }
-  show(relatedTarget) {
-    if (this._element.open || this._isTransitioning) {
+  _onSubmenuTriggerEnter(event) {
+    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE);
+    if (!trigger) {
       return;
     }
-    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, {
-      relatedTarget
-    });
-    if (showEvent.defaultPrevented) {
+    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU);
+    const submenu = SelectorEngine.findOne(SELECTOR_MENU$2, submenuWrapper);
+    if (!submenu) {
       return;
     }
-    this._isTransitioning = true;
-    if (this._config.modal) {
-      // Modal dialog: use showModal() for focus trapping, backdrop, and top layer
-      this._element.showModal();
-      // Prevent body scroll for modal dialogs
-      document.body.classList.add(CLASS_NAME_OPEN);
+    this._cancelSubmenuCloseTimeout(submenu);
+    this._closeSiblingSubmenus(submenuWrapper);
+    this._openSubmenu(trigger, submenu, submenuWrapper);
+  }
+  _onSubmenuLeave(event) {
+    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU);
+    const submenu = SelectorEngine.findOne(SELECTOR_MENU$2, submenuWrapper);
+    if (!submenu || !this._openSubmenus.has(submenu)) {
+      return;
+    }
+    if (this._isMovingTowardSubmenu(event, submenu)) {
+      return;
+    }
+    this._scheduleSubmenuClose(submenu, submenuWrapper);
+  }
+  _onSubmenuTriggerClick(event) {
+    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE);
+    if (!trigger) {
+      return;
+    }
+    event.preventDefault();
+    event.stopPropagation();
+    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU);
+    const submenu = SelectorEngine.findOne(SELECTOR_MENU$2, submenuWrapper);
+    if (!submenu) {
+      return;
+    }
+    if (this._openSubmenus.has(submenu)) {
+      this._closeSubmenu(submenu, submenuWrapper);
     } else {
-      // Non-modal dialog: use show() - no backdrop, no focus trap, no top layer
-      this._element.classList.add(CLASS_NAME_NONMODAL);
-      this._element.show();
+      this._closeSiblingSubmenus(submenuWrapper);
+      this._openSubmenu(trigger, submenu, submenuWrapper);
     }
-    this._queueCallback(() => {
-      this._isTransitioning = false;
-      EventHandler.trigger(this._element, EVENT_SHOWN$5, {
-        relatedTarget
-      });
-    }, this._element, this._isAnimated());
   }
-  hide() {
-    if (!this._element.open || this._isTransitioning) {
+  _openSubmenu(trigger, submenu, submenuWrapper) {
+    if (this._openSubmenus.has(submenu)) {
       return;
     }
-    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5);
-    if (hideEvent.defaultPrevented) {
+    trigger.setAttribute('aria-expanded', 'true');
+    trigger.setAttribute('aria-haspopup', 'true');
+    submenu.classList.add(CLASS_NAME_SHOW$6);
+    submenuWrapper.classList.add(CLASS_NAME_SHOW$6);
+    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper);
+    this._openSubmenus.set(submenu, cleanup);
+    EventHandler.on(submenu, 'mouseenter', () => {
+      this._cancelSubmenuCloseTimeout(submenu);
+    });
+  }
+  _closeSubmenu(submenu, submenuWrapper) {
+    if (!this._openSubmenus.has(submenu)) {
       return;
     }
-    this._isTransitioning = true;
-    this._queueCallback(() => this._hideDialog(), this._element, this._isAnimated());
+    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU$2}.${CLASS_NAME_SHOW$6}`, submenu);
+    for (const nested of nestedSubmenus) {
+      const nestedWrapper = nested.closest(SELECTOR_SUBMENU);
+      this._closeSubmenu(nested, nestedWrapper);
+    }
+    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper);
+    const cleanup = this._openSubmenus.get(submenu);
+    if (cleanup) {
+      cleanup();
+    }
+    this._openSubmenus.delete(submenu);
+    EventHandler.off(submenu, 'mouseenter');
+    if (trigger) {
+      trigger.setAttribute('aria-expanded', 'false');
+    }
+    submenu.classList.remove(CLASS_NAME_SHOW$6);
+    submenuWrapper.classList.remove(CLASS_NAME_SHOW$6);
+    submenu.style.position = '';
+    submenu.style.left = '';
+    submenu.style.top = '';
+    submenu.style.margin = '';
   }
-  dispose() {
-    EventHandler.off(this._element, EVENT_KEY$a);
-    super.dispose();
+  _closeAllSubmenus() {
+    for (const [submenu] of this._openSubmenus) {
+      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU);
+      this._closeSubmenu(submenu, submenuWrapper);
+    }
   }
-  handleUpdate() {
-    // Provided for API consistency with Modal.
-    // Native dialogs handle their own positioning.
+  _closeSiblingSubmenus(currentSubmenuWrapper) {
+    const parent = currentSubmenuWrapper.parentNode;
+    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU$2}.${CLASS_NAME_SHOW$6}`, parent);
+    for (const siblingMenu of siblingSubmenus) {
+      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU);
+      if (siblingWrapper !== currentSubmenuWrapper) {
+        this._closeSubmenu(siblingMenu, siblingWrapper);
+      }
+    }
+  }
+  _createSubmenuFloating(trigger, submenu, submenuWrapper) {
+    const referenceElement = submenuWrapper;
+    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT);
+    const middleware = [offset({
+      mainAxis: 0,
+      crossAxis: -4
+    }), flip({
+      fallbackPlacements: [resolveLogicalPlacement('start-start'), resolveLogicalPlacement('end-end'), resolveLogicalPlacement('start-end')]
+    }), shift({
+      padding: 8
+    })];
+    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware);
+    updatePosition();
+    return autoUpdate(referenceElement, submenu, updatePosition);
+  }
+  _scheduleSubmenuClose(submenu, submenuWrapper) {
+    this._cancelSubmenuCloseTimeout(submenu);
+    const timeoutId = setTimeout(() => {
+      this._closeSubmenu(submenu, submenuWrapper);
+      this._submenuCloseTimeouts.delete(submenu);
+    }, this._config.submenuDelay);
+    this._submenuCloseTimeouts.set(submenu, timeoutId);
+  }
+  _cancelSubmenuCloseTimeout(submenu) {
+    const timeoutId = this._submenuCloseTimeouts.get(submenu);
+    if (timeoutId) {
+      clearTimeout(timeoutId);
+      this._submenuCloseTimeouts.delete(submenu);
+    }
+  }
+  _clearAllSubmenuTimeouts() {
+    for (const timeoutId of this._submenuCloseTimeouts.values()) {
+      clearTimeout(timeoutId);
+    }
+    this._submenuCloseTimeouts.clear();
   }
 
-  // Private
-  _hideDialog() {
-    this._element.close();
-    this._element.classList.remove(CLASS_NAME_NONMODAL);
-    this._isTransitioning = false;
+  // -------------------------------------------------------------------------
+  // Hover intent / Safe triangle
+  // -------------------------------------------------------------------------
 
-    // Only restore body scroll if no other modal dialogs are open
-    if (!document.querySelector(SELECTOR_OPEN_MODAL_DIALOG)) {
-      document.body.classList.remove(CLASS_NAME_OPEN);
+  _trackMousePosition(event) {
+    this._hoverIntentData = {
+      x: event.clientX,
+      y: event.clientY,
+      timestamp: Date.now()
+    };
+  }
+  _isMovingTowardSubmenu(event, submenu) {
+    if (!this._hoverIntentData) {
+      return false;
     }
-    EventHandler.trigger(this._element, EVENT_HIDDEN$5);
+    const submenuRect = submenu.getBoundingClientRect();
+    const currentPos = {
+      x: event.clientX,
+      y: event.clientY
+    };
+    const lastPos = {
+      x: this._hoverIntentData.x,
+      y: this._hoverIntentData.y
+    };
+    const isRtl = isRTL();
+    const targetX = isRtl ? submenuRect.right : submenuRect.left;
+    const topCorner = {
+      x: targetX,
+      y: submenuRect.top
+    };
+    const bottomCorner = {
+      x: targetX,
+      y: submenuRect.bottom
+    };
+    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner);
   }
-  _isAnimated() {
-    return this._element.classList.contains('fade');
+  _pointInTriangle(point, v1, v2, v3) {
+    const d1 = triangleSign(point, v1, v2);
+    const d2 = triangleSign(point, v2, v3);
+    const d3 = triangleSign(point, v3, v1);
+    const hasNeg = d1 < 0 || d2 < 0 || d3 < 0;
+    const hasPos = d1 > 0 || d2 > 0 || d3 > 0;
+    return !(hasNeg && hasPos);
   }
-  _triggerBackdropTransition() {
-    const hidePreventedEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);
-    if (hidePreventedEvent.defaultPrevented) {
+
+  // -------------------------------------------------------------------------
+  // Keyboard navigation
+  // -------------------------------------------------------------------------
+
+  _selectMenuItem({
+    key,
+    target
+  }) {
+    const currentMenu = target.closest(SELECTOR_MENU$2) || this._menu;
+    const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS$1}`, currentMenu).filter(element => isVisible(element));
+    if (!items.length) {
       return;
     }
-    this._element.classList.add(CLASS_NAME_STATIC);
-    this._queueCallback(() => {
-      this._element.classList.remove(CLASS_NAME_STATIC);
-    }, this._element);
+    getNextActiveElement(items, target, key === ARROW_DOWN_KEY$2, !items.includes(target)).focus();
   }
-  _addEventListeners() {
-    // Handle native cancel event (Escape key) - only fires for modal dialogs
-    EventHandler.on(this._element, 'cancel', event => {
-      // Prevent native close behavior - we'll handle it
+  _handleSubmenuKeydown(event) {
+    const {
+      key,
+      target
+    } = event;
+    const isRtl = isRTL();
+    const enterKey = isRtl ? ARROW_LEFT_KEY$1 : ARROW_RIGHT_KEY$1;
+    const exitKey = isRtl ? ARROW_RIGHT_KEY$1 : ARROW_LEFT_KEY$1;
+    const submenuWrapper = target.closest(SELECTOR_SUBMENU);
+    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE);
+    if ((key === ENTER_KEY$1 || key === SPACE_KEY$1) && isSubmenuTrigger) {
       event.preventDefault();
-      if (!this._config.keyboard) {
-        this._triggerBackdropTransition();
-        return;
-      }
-      EventHandler.trigger(this._element, EVENT_CANCEL);
-      this.hide();
-    });
-
-    // Handle Escape key for non-modal dialogs (native cancel doesn't fire for show())
-    EventHandler.on(this._element, 'keydown', event => {
-      if (event.key !== 'Escape' || this._config.modal) {
-        return;
+      event.stopPropagation();
+      const submenu = SelectorEngine.findOne(SELECTOR_MENU$2, submenuWrapper);
+      if (submenu) {
+        this._closeSiblingSubmenus(submenuWrapper);
+        this._openSubmenu(target, submenu, submenuWrapper);
+        requestAnimationFrame(() => {
+          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS$1, submenu);
+          if (firstItem) {
+            firstItem.focus();
+          }
+        });
       }
+      return true;
+    }
+    if (key === enterKey && isSubmenuTrigger) {
       event.preventDefault();
-      if (!this._config.keyboard) {
-        return;
+      event.stopPropagation();
+      const submenu = SelectorEngine.findOne(SELECTOR_MENU$2, submenuWrapper);
+      if (submenu) {
+        this._closeSiblingSubmenus(submenuWrapper);
+        this._openSubmenu(target, submenu, submenuWrapper);
+        requestAnimationFrame(() => {
+          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS$1, submenu);
+          if (firstItem) {
+            firstItem.focus();
+          }
+        });
       }
-      EventHandler.trigger(this._element, EVENT_CANCEL);
-      this.hide();
-    });
-
-    // Handle backdrop clicks (only applies to modal dialogs)
-    // Native <dialog> fires click on the dialog element when backdrop is clicked
-    EventHandler.on(this._element, 'click', event => {
-      // Only handle clicks directly on the dialog (backdrop area)
-      // Non-modal dialogs don't have a backdrop
-      if (event.target !== this._element || !this._config.modal) {
-        return;
+      return true;
+    }
+    if (key === exitKey) {
+      const currentMenu = target.closest(SELECTOR_MENU$2);
+      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU);
+      if (parentSubmenuWrapper) {
+        event.preventDefault();
+        event.stopPropagation();
+        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper);
+        this._closeSubmenu(currentMenu, parentSubmenuWrapper);
+        if (parentTrigger) {
+          parentTrigger.focus();
+        }
+        return true;
       }
-      if (this._config.backdrop === 'static') {
-        this._triggerBackdropTransition();
-        return;
+    }
+    if (key === HOME_KEY$2 || key === END_KEY$2) {
+      event.preventDefault();
+      event.stopPropagation();
+      const currentMenu = target.closest(SELECTOR_MENU$2);
+      const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS$1}`, currentMenu).filter(element => isVisible(element));
+      if (items.length) {
+        const targetItem = key === HOME_KEY$2 ? items[0] : items[items.length - 1];
+        targetItem.focus();
       }
-
-      // Default: click backdrop to dismiss
-      this.hide();
-    });
-  }
-}
-
-/**
- * Data API implementation
- */
-
-EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$6, function (event) {
-  const target = SelectorEngine.getElementFromSelector(this);
-  if (['A', 'AREA'].includes(this.tagName)) {
-    event.preventDefault();
+      return true;
+    }
+    return false;
   }
-  EventHandler.one(target, EVENT_SHOW$5, showEvent => {
-    if (showEvent.defaultPrevented) {
+  static clearMenus(event) {
+    if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$2) {
       return;
     }
-    EventHandler.one(target, EVENT_HIDDEN$5, () => {
-      if (isVisible(this)) {
-        this.focus();
+    for (const instance of Menu._openInstances) {
+      if (instance._config.autoClose === false) {
+        continue;
       }
-    });
-  });
-
-  // Get config from trigger's data attributes
-  const config = Manipulator.getDataAttributes(this);
-
-  // Check if trigger is inside an open dialog
-  const currentDialog = this.closest('dialog[open]');
-  const shouldSwap = currentDialog && currentDialog !== target;
-  if (shouldSwap) {
-    // Open new dialog first (its backdrop appears over current)
-    const newDialog = Dialog.getOrCreateInstance(target, config);
-    newDialog.show(this);
-
-    // Close the current dialog (no backdrop flash since new one is already open)
-    const currentInstance = Dialog.getInstance(currentDialog);
-    if (currentInstance) {
-      currentInstance.hide();
-    }
-    return;
-  }
-  const data = Dialog.getOrCreateInstance(target, config);
-  data.toggle(this);
-});
-enableDismissTrigger(Dialog);
-
-/**
- * --------------------------------------------------------------------------
- * Bootstrap util/floating-ui.js
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- * --------------------------------------------------------------------------
- */
-
-
-/**
- * Breakpoints for responsive placement (matches SCSS $breakpoints)
- */
-const BREAKPOINTS = {
-  sm: 576,
-  md: 768,
-  lg: 1024,
-  xl: 1280,
-  '2xl': 1536
-};
-
-/**
- * Parse a placement string that may contain responsive prefixes
- * Example: "bottom-start md:top-end lg:right" returns { xs: 'bottom-start', md: 'top-end', lg: 'right' }
- *
- * @param {string} placementString - The placement string to parse
- * @param {string} defaultPlacement - The default placement to use for xs/base
- * @returns {object|null} - Object with breakpoint keys and placement values, or null if not responsive
- */
-const parseResponsivePlacement = (placementString, defaultPlacement = 'bottom') => {
-  // Check if placement contains responsive prefixes (e.g., "bottom-start md:top-end")
-  if (!placementString || !placementString.includes(':')) {
-    return null;
-  }
-
-  // Parse the placement string into breakpoint-keyed object
-  const parts = placementString.split(/\s+/);
-  const placements = {
-    xs: defaultPlacement
-  }; // Default fallback
-
-  for (const part of parts) {
-    if (part.includes(':')) {
-      // Responsive placement like "md:top-end"
-      const [breakpoint, placement] = part.split(':');
-      if (BREAKPOINTS[breakpoint] !== undefined) {
-        placements[breakpoint] = placement;
+      const composedPath = event.composedPath();
+      const isMenuTarget = composedPath.includes(instance._menu);
+      if (composedPath.includes(instance._element) || instance._config.autoClose === 'inside' && !isMenuTarget || instance._config.autoClose === 'outside' && isMenuTarget) {
+        continue;
       }
-    } else {
-      // Base placement (no prefix = xs/default)
-      placements.xs = part;
+      if (instance._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$2 || /input|select|option|textarea|form/i.test(event.target.tagName))) {
+        continue;
+      }
+      const relatedTarget = {
+        relatedTarget: instance._element
+      };
+      if (event.type === 'click') {
+        relatedTarget.clickEvent = event;
+      }
+      instance._completeHide(relatedTarget);
     }
   }
-  return placements;
-};
-
-/**
- * Get the active placement for the current viewport width
- *
- * @param {object} responsivePlacements - Object with breakpoint keys and placement values
- * @param {string} defaultPlacement - Fallback placement
- * @returns {string} - The active placement for current viewport
- */
-const getResponsivePlacement = (responsivePlacements, defaultPlacement = 'bottom') => {
-  if (!responsivePlacements) {
-    return defaultPlacement;
-  }
-
-  // Get current viewport width
-  const viewportWidth = window.innerWidth;
-
-  // Find the largest breakpoint that matches
-  let activePlacement = responsivePlacements.xs || defaultPlacement;
-
-  // Check breakpoints in order (sm, md, lg, xl, 2xl)
-  const breakpointOrder = ['sm', 'md', 'lg', 'xl', '2xl'];
-  for (const breakpoint of breakpointOrder) {
-    const minWidth = BREAKPOINTS[breakpoint];
-    if (viewportWidth >= minWidth && responsivePlacements[breakpoint]) {
-      activePlacement = responsivePlacements[breakpoint];
+  static dataApiKeydownHandler(event) {
+    const isInput = /input|textarea/i.test(event.target.tagName);
+    const isEscapeEvent = event.key === ESCAPE_KEY$2;
+    const isUpOrDownEvent = [ARROW_UP_KEY$2, ARROW_DOWN_KEY$2].includes(event.key);
+    const isLeftOrRightEvent = [ARROW_LEFT_KEY$1, ARROW_RIGHT_KEY$1].includes(event.key);
+    const isHomeOrEndEvent = [HOME_KEY$2, END_KEY$2].includes(event.key);
+    const isEnterOrSpaceEvent = [ENTER_KEY$1, SPACE_KEY$1].includes(event.key);
+    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE);
+    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent && !(isEnterOrSpaceEvent && isSubmenuTrigger)) {
+      return;
+    }
+    if (isInput && !isEscapeEvent) {
+      return;
+    }
+    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$8) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$8)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$8)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$8, event.delegateTarget.parentNode);
+    if (!getToggleButton) {
+      return;
+    }
+    const instance = Menu.getOrCreateInstance(getToggleButton);
+    if ((isLeftOrRightEvent || isHomeOrEndEvent || isEnterOrSpaceEvent && isSubmenuTrigger) && instance._handleSubmenuKeydown(event)) {
+      return;
+    }
+    if (isUpOrDownEvent) {
+      event.preventDefault();
+      event.stopPropagation();
+      instance.show();
+      instance._selectMenuItem(event);
+      return;
+    }
+    if (isEscapeEvent && instance._isShown()) {
+      event.preventDefault();
+      event.stopPropagation();
+      const currentMenu = event.target.closest(SELECTOR_MENU$2);
+      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU);
+      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {
+        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper);
+        instance._closeSubmenu(currentMenu, parentSubmenuWrapper);
+        if (parentTrigger) {
+          parentTrigger.focus();
+        }
+        return;
+      }
+      instance.hide();
+      getToggleButton.focus();
     }
   }
-  return activePlacement;
-};
+}
 
 /**
- * Create media query listeners for responsive placement changes
- *
- * @param {Function} callback - Callback to run when breakpoint changes
- * @returns {Array} - Array of { mql, handler } objects for cleanup
+ * Data API implementation
  */
-const createBreakpointListeners = callback => {
-  const listeners = [];
-  for (const breakpoint of Object.keys(BREAKPOINTS)) {
-    const minWidth = BREAKPOINTS[breakpoint];
-    const mql = window.matchMedia(`(min-width: ${minWidth}px)`);
-    mql.addEventListener('change', callback);
-    listeners.push({
-      mql,
-      handler: callback
-    });
-  }
-  return listeners;
-};
 
-/**
- * Clean up media query listeners
- *
- * @param {Array} listeners - Array of { mql, handler } objects
- */
-const disposeBreakpointListeners = listeners => {
-  for (const {
-    mql,
-    handler
-  } of listeners) {
-    mql.removeEventListener('change', handler);
-  }
-};
+EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$8, Menu.dataApiKeydownHandler);
+EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU$2, Menu.dataApiKeydownHandler);
+EventHandler.on(document, EVENT_CLICK_DATA_API$5, Menu.clearMenus);
+EventHandler.on(document, EVENT_KEYUP_DATA_API, Menu.clearMenus);
+EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$8, function (event) {
+  event.preventDefault();
+  Menu.getOrCreateInstance(this).toggle();
+});
 
 /**
  * --------------------------------------------------------------------------
- * Bootstrap dropdown.js
+ * Bootstrap combobox.js
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  * --------------------------------------------------------------------------
  */
@@ -2344,127 +2454,84 @@ const disposeBreakpointListeners = listeners => {
  * Constants
  */
 
-const NAME$d = 'dropdown';
-const DATA_KEY$9 = 'bs.dropdown';
-const EVENT_KEY$9 = `.${DATA_KEY$9}`;
-const DATA_API_KEY$4 = '.data-api';
+const NAME$f = 'combobox';
+const DATA_KEY$b = 'bs.combobox';
+const EVENT_KEY$b = `.${DATA_KEY$b}`;
+const DATA_API_KEY$6 = '.data-api';
 const ESCAPE_KEY$1 = 'Escape';
 const TAB_KEY$1 = 'Tab';
 const ARROW_UP_KEY$1 = 'ArrowUp';
 const ARROW_DOWN_KEY$1 = 'ArrowDown';
-const ARROW_LEFT_KEY$1 = 'ArrowLeft';
-const ARROW_RIGHT_KEY$1 = 'ArrowRight';
 const HOME_KEY$1 = 'Home';
 const END_KEY$1 = 'End';
 const ENTER_KEY = 'Enter';
 const SPACE_KEY = ' ';
-const RIGHT_MOUSE_BUTTON = 2;
-
-// Hover intent delay (ms) - grace period before closing submenu
-const SUBMENU_CLOSE_DELAY = 100;
-const EVENT_HIDE$4 = `hide${EVENT_KEY$9}`;
-const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$9}`;
-const EVENT_SHOW$4 = `show${EVENT_KEY$9}`;
-const EVENT_SHOWN$4 = `shown${EVENT_KEY$9}`;
-const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$9}${DATA_API_KEY$4}`;
-const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$9}${DATA_API_KEY$4}`;
-const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$9}${DATA_API_KEY$4}`;
+const EVENT_CHANGE$1 = `change${EVENT_KEY$b}`;
+const EVENT_SHOW$6 = `show${EVENT_KEY$b}`;
+const EVENT_SHOWN$6 = `shown${EVENT_KEY$b}`;
+const EVENT_HIDE$6 = `hide${EVENT_KEY$b}`;
+const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$b}`;
+const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$b}${DATA_API_KEY$6}`;
 const CLASS_NAME_SHOW$5 = 'show';
-const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)';
-const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$5}.${CLASS_NAME_SHOW$5}`;
-const SELECTOR_MENU = '.dropdown-menu';
-const SELECTOR_SUBMENU = '.dropdown-submenu';
-const SELECTOR_SUBMENU_TOGGLE = '.dropdown-submenu > .dropdown-item';
-const SELECTOR_NAVBAR_NAV = '.navbar-nav';
-const SELECTOR_VISIBLE_ITEMS = '.dropdown-item:not(.disabled):not(:disabled)';
-
-// Default logical placement (uses start/end which get resolved to left/right based on RTL)
-const DEFAULT_PLACEMENT = 'bottom-start';
-const SUBMENU_PLACEMENT = 'end-start';
-
-// Resolve logical placement (start/end) to physical (left/right) based on RTL
-const resolveLogicalPlacement = placement => {
-  if (isRTL()) {
-    // RTL: start → right, end → left
-    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left');
-  }
-
-  // LTR: start → left, end → right
-  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right');
-};
-
-// Helper for barycentric coordinate calculation (point in triangle check)
-const triangleSign = (p1, p2, p3) => (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);
-const Default$c = {
-  autoClose: true,
+const CLASS_NAME_SELECTED = 'selected';
+const CLASS_NAME_PLACEHOLDER = 'combobox-placeholder';
+const SELECTOR_DATA_TOGGLE$7 = '[data-bs-toggle="combobox"]';
+const SELECTOR_MENU$1 = '.menu';
+const SELECTOR_MENU_ITEM = '.menu-item[data-bs-value]';
+const SELECTOR_VISIBLE_ITEMS = '.menu-item[data-bs-value]:not(.disabled):not(:disabled)';
+const SELECTOR_VALUE = '.combobox-value';
+const SELECTOR_SEARCH_INPUT = '.combobox-search-input';
+const SELECTOR_NO_RESULTS = '.combobox-no-results';
+const Default$e = {
   boundary: 'clippingParents',
-  container: false,
-  display: 'dynamic',
+  multiple: false,
+  name: null,
   offset: [0, 2],
-  floatingConfig: null,
-  placement: DEFAULT_PLACEMENT,
-  reference: 'toggle',
-  strategy: 'absolute',
-  // Submenu options
-  submenuTrigger: 'both',
-  // 'click', 'hover', or 'both'
-  submenuDelay: SUBMENU_CLOSE_DELAY
+  placeholder: '',
+  placement: 'bottom-start',
+  search: false,
+  searchNormalize: false
 };
-const DefaultType$c = {
-  autoClose: '(boolean|string)',
+const DefaultType$e = {
   boundary: '(string|element)',
-  container: '(string|element|boolean)',
-  display: 'string',
+  multiple: 'boolean',
+  name: '(string|null)',
   offset: '(array|string|function)',
-  floatingConfig: '(null|object|function)',
+  placeholder: 'string',
   placement: 'string',
-  reference: '(string|element|object)',
-  strategy: 'string',
-  submenuTrigger: 'string',
-  submenuDelay: 'number'
+  search: 'boolean',
+  searchNormalize: 'boolean'
 };
 
 /**
  * Class definition
  */
 
-class Dropdown extends BaseComponent {
+class Combobox extends BaseComponent {
   constructor(element, config) {
-    if (typeof computePosition === 'undefined') {
-      throw new TypeError('Bootstrap\'s dropdowns require Floating UI (https://floating-ui.com)');
-    }
     super(element, config);
-    this._floatingCleanup = null;
-    this._mediaQueryListeners = [];
-    this._responsivePlacements = null;
-    this._parent = this._element.parentNode; // dropdown wrapper
-    this._isSubmenu = this._parent.classList.contains('dropdown-submenu');
-    this._openSubmenus = new Map(); // Map of submenu element -> cleanup function
-    this._submenuCloseTimeouts = new Map(); // Map of submenu element -> timeout ID
-    this._hoverIntentData = null; // For safe triangle calculation
-
-    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
-    this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);
-
-    // Store original menu parent for container option
-    this._menuOriginalParent = this._menu?.parentNode;
-
-    // Parse responsive placements on init
-    this._parseResponsivePlacements();
-
-    // Set up submenu event listeners
-    this._setupSubmenuListeners();
+    this._toggle = this._element;
+    this._menu = SelectorEngine.next(this._toggle, SELECTOR_MENU$1)[0];
+    this._valueDisplay = SelectorEngine.findOne(SELECTOR_VALUE, this._toggle);
+    this._searchInput = SelectorEngine.findOne(SELECTOR_SEARCH_INPUT, this._menu);
+    this._noResults = SelectorEngine.findOne(SELECTOR_NO_RESULTS, this._menu);
+    this._hiddenInput = null;
+    this._menuInstance = null;
+    this._createHiddenInput();
+    this._createMenuInstance();
+    this._syncInitialSelection();
+    this._addEventListeners();
   }
 
   // Getters
   static get Default() {
-    return Default$c;
+    return Default$e;
   }
   static get DefaultType() {
-    return DefaultType$c;
+    return DefaultType$e;
   }
   static get NAME() {
-    return NAME$d;
+    return NAME$f;
   }
 
   // Public
@@ -2472,746 +2539,903 @@ class Dropdown extends BaseComponent {
     return this._isShown() ? this.hide() : this.show();
   }
   show() {
-    if (isDisabled(this._element) || this._isShown()) {
+    if (isDisabled(this._toggle) || this._isShown()) {
       return;
     }
-    const relatedTarget = {
-      relatedTarget: this._element
-    };
-    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, relatedTarget);
+    const showEvent = EventHandler.trigger(this._toggle, EVENT_SHOW$6);
     if (showEvent.defaultPrevented) {
       return;
     }
-
-    // Move menu to container if specified (to escape overflow clipping)
-    this._moveMenuToContainer();
-    this._createFloating();
-
-    // If this is a touch-enabled device we add extra
-    // empty mouseover listeners to the body's immediate children;
-    // only needed because of broken event delegation on iOS
-    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
-    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {
-      for (const element of [].concat(...document.body.children)) {
-        EventHandler.on(element, 'mouseover', noop);
-      }
+    this._menuInstance.show();
+    if (this._searchInput) {
+      this._searchInput.value = '';
+      this._filterItems('');
+      requestAnimationFrame(() => this._searchInput.focus());
     }
-    this._element.focus();
-    this._element.setAttribute('aria-expanded', 'true');
-    this._menu.classList.add(CLASS_NAME_SHOW$5);
-    this._element.classList.add(CLASS_NAME_SHOW$5);
-    this._parent.classList.add(CLASS_NAME_SHOW$5);
-    EventHandler.trigger(this._element, EVENT_SHOWN$4, relatedTarget);
+    EventHandler.trigger(this._toggle, EVENT_SHOWN$6);
   }
   hide() {
-    if (isDisabled(this._element) || !this._isShown()) {
+    if (!this._isShown()) {
       return;
     }
-    const relatedTarget = {
-      relatedTarget: this._element
-    };
-    this._completeHide(relatedTarget);
+    const hideEvent = EventHandler.trigger(this._toggle, EVENT_HIDE$6);
+    if (hideEvent.defaultPrevented) {
+      return;
+    }
+    this._menuInstance.hide();
+    EventHandler.trigger(this._toggle, EVENT_HIDDEN$6);
   }
   dispose() {
-    this._disposeFloating();
-    this._restoreMenuToOriginalParent();
-    this._disposeMediaQueryListeners();
-    this._closeAllSubmenus();
-    this._clearAllSubmenuTimeouts();
-    super.dispose();
-  }
-  update() {
-    if (this._floatingCleanup) {
-      this._updateFloatingPosition();
+    if (this._menuInstance) {
+      this._menuInstance.dispose();
+      this._menuInstance = null;
     }
+    if (this._hiddenInput) {
+      this._hiddenInput.remove();
+      this._hiddenInput = null;
+    }
+    EventHandler.off(this._menu, EVENT_KEY$b);
+    EventHandler.off(this._toggle, EVENT_KEY$b);
+    super.dispose();
   }
 
   // Private
-  _completeHide(relatedTarget) {
-    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4, relatedTarget);
-    if (hideEvent.defaultPrevented) {
+  _isShown() {
+    return this._menu.classList.contains(CLASS_NAME_SHOW$5);
+  }
+  _createHiddenInput() {
+    const {
+      name
+    } = this._config;
+    if (!name) {
       return;
     }
-
-    // Close all open submenus first
-    this._closeAllSubmenus();
-
-    // If this is a touch-enabled device we remove the extra
-    // empty mouseover listeners we added for iOS support
-    if ('ontouchstart' in document.documentElement) {
-      for (const element of [].concat(...document.body.children)) {
-        EventHandler.off(element, 'mouseover', noop);
+    this._hiddenInput = document.createElement('input');
+    this._hiddenInput.type = 'hidden';
+    this._hiddenInput.name = name;
+    this._hiddenInput.value = '';
+    this._toggle.parentNode.insertBefore(this._hiddenInput, this._toggle);
+  }
+  _createMenuInstance() {
+    this._menuInstance = new Menu(this._toggle, {
+      menu: this._menu,
+      autoClose: this._config.multiple ? 'outside' : true,
+      boundary: this._config.boundary,
+      offset: this._config.offset,
+      placement: this._config.placement
+    });
+  }
+  _syncInitialSelection() {
+    const selectedItems = this._getSelectedItems();
+    if (selectedItems.length > 0) {
+      this._updateToggleText();
+      this._updateHiddenInput();
+    } else {
+      this._showPlaceholder();
+    }
+  }
+  _addEventListeners() {
+    EventHandler.on(this._menu, 'click', SELECTOR_MENU_ITEM, event => {
+      const item = event.target.closest(SELECTOR_MENU_ITEM);
+      if (!item || isDisabled(item)) {
+        return;
       }
+      event.preventDefault();
+      event.stopPropagation();
+      this._selectItem(item);
+    });
+    EventHandler.on(this._toggle, 'keydown', event => {
+      this._handleToggleKeydown(event);
+    });
+    EventHandler.on(this._menu, 'keydown', event => {
+      this._handleMenuKeydown(event);
+    });
+    if (this._searchInput) {
+      EventHandler.on(this._searchInput, 'input', () => {
+        this._filterItems(this._searchInput.value);
+      });
+      EventHandler.on(this._searchInput, 'keydown', event => {
+        if (event.key === ARROW_DOWN_KEY$1) {
+          event.preventDefault();
+          const items = this._getVisibleItems();
+          if (items.length > 0) {
+            items[0].focus();
+          }
+        }
+        if (event.key === ESCAPE_KEY$1) {
+          this.hide();
+          this._toggle.focus();
+        }
+      });
     }
-    this._disposeFloating();
-
-    // Restore menu to original parent if it was moved
-    this._restoreMenuToOriginalParent();
-    this._menu.classList.remove(CLASS_NAME_SHOW$5);
-    this._element.classList.remove(CLASS_NAME_SHOW$5);
-    this._parent.classList.remove(CLASS_NAME_SHOW$5);
-    this._element.setAttribute('aria-expanded', 'false');
-    Manipulator.removeDataAttribute(this._menu, 'placement');
-    Manipulator.removeDataAttribute(this._menu, 'display');
-    EventHandler.trigger(this._element, EVENT_HIDDEN$4, relatedTarget);
   }
-  _getConfig(config) {
-    config = super._getConfig(config);
-    if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {
-      // Floating UI virtual elements require a getBoundingClientRect method
-      throw new TypeError(`${NAME$d.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
+  _selectItem(item) {
+    if (this._config.multiple) {
+      item.classList.toggle(CLASS_NAME_SELECTED);
+      item.setAttribute('aria-selected', item.classList.contains(CLASS_NAME_SELECTED));
+    } else {
+      const previouslySelected = SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu);
+      for (const prev of previouslySelected) {
+        prev.classList.remove(CLASS_NAME_SELECTED);
+        prev.setAttribute('aria-selected', 'false');
+      }
+      item.classList.add(CLASS_NAME_SELECTED);
+      item.setAttribute('aria-selected', 'true');
+    }
+    this._updateToggleText();
+    this._updateHiddenInput();
+    const value = this._config.multiple ? this._getSelectedItems().map(el => el.dataset.bsValue) : item.dataset.bsValue;
+    EventHandler.trigger(this._toggle, EVENT_CHANGE$1, {
+      value,
+      item
+    });
+    if (!this._config.multiple) {
+      this.hide();
+      this._toggle.focus();
+    }
+  }
+  _updateToggleText() {
+    const selectedItems = this._getSelectedItems();
+    if (selectedItems.length === 0) {
+      this._showPlaceholder();
+      return;
+    }
+    this._valueDisplay.classList.remove(CLASS_NAME_PLACEHOLDER);
+    if (this._config.multiple && selectedItems.length > 1) {
+      this._valueDisplay.textContent = `${selectedItems.length} selected`;
+    } else {
+      const item = selectedItems[0];
+      const label = SelectorEngine.findOne('.menu-item-content > span:first-child', item);
+      this._valueDisplay.textContent = label ? label.textContent : item.textContent.trim();
+    }
+  }
+  _showPlaceholder() {
+    const {
+      placeholder
+    } = this._config;
+    if (placeholder) {
+      this._valueDisplay.textContent = placeholder;
+      this._valueDisplay.classList.add(CLASS_NAME_PLACEHOLDER);
+    }
+  }
+  _updateHiddenInput() {
+    if (!this._hiddenInput) {
+      return;
+    }
+    const selectedItems = this._getSelectedItems();
+    const values = selectedItems.map(el => el.dataset.bsValue);
+    this._hiddenInput.value = this._config.multiple ? values.join(',') : values[0] || '';
+  }
+  _getSelectedItems() {
+    return SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu);
+  }
+  _getVisibleItems() {
+    return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(item => isVisible(item));
+  }
+  _filterItems(query) {
+    const normalizedQuery = this._normalizeText(query.toLowerCase().trim());
+    const items = SelectorEngine.find(SELECTOR_MENU_ITEM, this._menu);
+    let visibleCount = 0;
+    for (const item of items) {
+      const text = this._normalizeText(item.textContent.toLowerCase().trim());
+      const matches = !normalizedQuery || text.includes(normalizedQuery);
+      item.style.display = matches ? '' : 'none';
+      if (matches) {
+        visibleCount++;
+      }
+    }
+    if (this._noResults) {
+      this._noResults.classList.toggle('d-none', visibleCount > 0);
+    }
+  }
+  _normalizeText(text) {
+    if (this._config.searchNormalize) {
+      return text.normalize('NFD').replace(/[\u0300-\u036F]/g, '');
+    }
+    return text;
+  }
+  _handleToggleKeydown(event) {
+    const {
+      key
+    } = event;
+    if (key === ARROW_DOWN_KEY$1 || key === ARROW_UP_KEY$1) {
+      event.preventDefault();
+      if (!this._isShown()) {
+        this.show();
+      }
+      const items = this._getVisibleItems();
+      if (items.length > 0) {
+        const target = key === ARROW_DOWN_KEY$1 ? items[0] : items[items.length - 1];
+        target.focus();
+      }
+      return;
+    }
+    if ((key === ENTER_KEY || key === SPACE_KEY) && !this._isShown()) {
+      event.preventDefault();
+      this.show();
+    }
+  }
+  _handleMenuKeydown(event) {
+    const {
+      key,
+      target
+    } = event;
+    if (key === ESCAPE_KEY$1) {
+      event.preventDefault();
+      event.stopPropagation();
+      this.hide();
+      this._toggle.focus();
+      return;
     }
-    return config;
-  }
-  _createFloating() {
-    if (this._config.display === 'static') {
-      Manipulator.setDataAttribute(this._menu, 'display', 'static');
+    if (key === TAB_KEY$1) {
+      this.hide();
       return;
     }
-    let referenceElement = this._element;
-    if (this._config.reference === 'parent') {
-      referenceElement = this._parent;
-    } else if (isElement(this._config.reference)) {
-      referenceElement = getElement(this._config.reference);
-    } else if (typeof this._config.reference === 'object') {
-      referenceElement = this._config.reference;
+    const isInput = target.matches('input');
+    if (key === ARROW_DOWN_KEY$1 || key === ARROW_UP_KEY$1) {
+      event.preventDefault();
+      const items = this._getVisibleItems();
+      if (items.length > 0) {
+        getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();
+      }
+      return;
     }
-
-    // Initial position update
-    this._updateFloatingPosition(referenceElement);
-
-    // Set up auto-update for scroll/resize
-    this._floatingCleanup = autoUpdate(referenceElement, this._menu, () => this._updateFloatingPosition(referenceElement));
-  }
-  async _updateFloatingPosition(referenceElement = null) {
-    if (!this._menu) {
+    if (key === HOME_KEY$1 || key === END_KEY$1) {
+      event.preventDefault();
+      const items = this._getVisibleItems();
+      if (items.length > 0) {
+        const targetItem = key === HOME_KEY$1 ? items[0] : items[items.length - 1];
+        targetItem.focus();
+      }
       return;
     }
-    if (!referenceElement) {
-      if (this._config.reference === 'parent') {
-        referenceElement = this._parent;
-      } else if (isElement(this._config.reference)) {
-        referenceElement = getElement(this._config.reference);
-      } else if (typeof this._config.reference === 'object') {
-        referenceElement = this._config.reference;
-      } else {
-        referenceElement = this._element;
+    if ((key === ENTER_KEY || key === SPACE_KEY) && !isInput) {
+      event.preventDefault();
+      const item = target.closest(SELECTOR_MENU_ITEM);
+      if (item && !isDisabled(item)) {
+        this._selectItem(item);
       }
     }
-    const placement = this._getPlacement();
-    const middleware = this._getFloatingMiddleware();
-    const floatingConfig = this._getFloatingConfig(placement, middleware);
-    await this._applyFloatingPosition(referenceElement, this._menu, floatingConfig.placement, floatingConfig.middleware, floatingConfig.strategy);
   }
-  _isShown() {
-    return this._menu.classList.contains(CLASS_NAME_SHOW$5);
-  }
-  _getPlacement() {
-    // If we have responsive placements, find the appropriate one for current viewport
-    const placement = this._responsivePlacements ? getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) : this._config.placement;
 
-    // Resolve logical placements (start/end) to physical (left/right) based on RTL
-    return resolveLogicalPlacement(placement);
-  }
-  _parseResponsivePlacements() {
-    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT);
-    if (this._responsivePlacements) {
-      this._setupMediaQueryListeners();
-    }
-  }
-  _setupMediaQueryListeners() {
-    this._disposeMediaQueryListeners();
-    this._mediaQueryListeners = createBreakpointListeners(() => {
-      if (this._isShown()) {
-        this._updateFloatingPosition();
+  // Static
+  static jQueryInterface(config) {
+    return this.each(function () {
+      const data = Combobox.getOrCreateInstance(this, config);
+      if (typeof config !== 'string') {
+        return;
       }
+      if (typeof data[config] === 'undefined') {
+        throw new TypeError(`No method named "${config}"`);
+      }
+      data[config]();
     });
   }
-  _disposeMediaQueryListeners() {
-    disposeBreakpointListeners(this._mediaQueryListeners);
-    this._mediaQueryListeners = [];
-  }
-  _getOffset() {
-    const {
-      offset: offsetConfig
-    } = this._config;
-    if (typeof offsetConfig === 'string') {
-      return offsetConfig.split(',').map(value => Number.parseInt(value, 10));
-    }
-    if (typeof offsetConfig === 'function') {
-      // Floating UI passes different args, adapt the interface for offset function callbacks
-      return ({
-        placement,
-        rects
-      }) => {
-        const result = offsetConfig({
-          placement,
-          reference: rects.reference,
-          floating: rects.floating
-        }, this._element);
-        return result;
-      };
-    }
-    return offsetConfig;
+}
+
+/**
+ * Data API implementation
+ */
+
+EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$7, function (event) {
+  event.preventDefault();
+  Combobox.getOrCreateInstance(this).toggle();
+});
+EventHandler.on(document, 'DOMContentLoaded', () => {
+  for (const toggle of SelectorEngine.find(SELECTOR_DATA_TOGGLE$7)) {
+    Combobox.getOrCreateInstance(toggle);
   }
-  _getFloatingMiddleware() {
-    const offsetValue = this._getOffset();
-    const middleware = [
-    // Offset middleware - handles distance from reference
-    offset(typeof offsetValue === 'function' ? offsetValue : {
-      mainAxis: offsetValue[1] || 0,
-      crossAxis: offsetValue[0] || 0
-    }),
-    // Flip middleware - handles fallback placements
-    flip({
-      fallbackPlacements: this._getFallbackPlacements()
-    }),
-    // Shift middleware - prevents overflow
-    shift({
-      boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary
-    })];
-    return middleware;
+});
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap datepicker.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+
+/**
+ * Constants
+ */
+
+const NAME$e = 'datepicker';
+const DATA_KEY$a = 'bs.datepicker';
+const EVENT_KEY$a = `.${DATA_KEY$a}`;
+const DATA_API_KEY$5 = '.data-api';
+const EVENT_CHANGE = `change${EVENT_KEY$a}`;
+const EVENT_SHOW$5 = `show${EVENT_KEY$a}`;
+const EVENT_SHOWN$5 = `shown${EVENT_KEY$a}`;
+const EVENT_HIDE$5 = `hide${EVENT_KEY$a}`;
+const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$a}`;
+const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$a}${DATA_API_KEY$5}`;
+const EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY$a}${DATA_API_KEY$5}`;
+const SELECTOR_DATA_TOGGLE$6 = '[data-bs-toggle="datepicker"]';
+const HIDE_DELAY = 100; // ms delay before hiding after selection
+
+const Default$d = {
+  datepickerTheme: null,
+  // 'light', 'dark', 'auto' - explicit theme for datepicker popover only
+  dateMin: null,
+  dateMax: null,
+  dateFormat: null,
+  // Intl.DateTimeFormat options, or function(date, locale) => string
+  displayElement: null,
+  // Element to show formatted date (defaults to element for buttons)
+  displayMonthsCount: 1,
+  // Number of months to display side-by-side
+  firstWeekday: 1,
+  // Monday
+  inline: false,
+  // Render calendar inline (no popup)
+  locale: 'default',
+  positionElement: null,
+  // Element to position calendar relative to (defaults to input)
+  selectedDates: [],
+  selectionMode: 'single',
+  // 'single', 'multiple', 'multiple-ranged'
+  placement: 'left',
+  // 'left', 'center', 'right', 'auto'
+  vcpOptions: {} // Pass-through for any VCP option
+};
+const DefaultType$d = {
+  datepickerTheme: '(null|string)',
+  dateMin: '(null|string|number|object)',
+  dateMax: '(null|string|number|object)',
+  dateFormat: '(null|object|function)',
+  displayElement: '(null|string|element|boolean)',
+  displayMonthsCount: 'number',
+  firstWeekday: 'number',
+  inline: 'boolean',
+  locale: 'string',
+  positionElement: '(null|string|element)',
+  selectedDates: 'array',
+  selectionMode: 'string',
+  placement: 'string',
+  vcpOptions: 'object'
+};
+
+/**
+ * Class definition
+ */
+
+class Datepicker extends BaseComponent {
+  constructor(element, config) {
+    super(element, config);
+    this._calendar = null;
+    this._isShown = false;
+    this._initCalendar();
   }
-  _getFallbackPlacements() {
-    // Get appropriate fallback placements based on current placement
-    // Fallbacks should preserve alignment (start/end) when possible
-    const placement = this._getPlacement();
 
-    // Handle all possible Floating UI placements
-    const fallbackMap = {
-      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],
-      'bottom-start': ['top-start', 'bottom-end', 'top-end'],
-      'bottom-end': ['top-end', 'bottom-start', 'top-start'],
-      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],
-      'top-start': ['bottom-start', 'top-end', 'bottom-end'],
-      'top-end': ['bottom-end', 'top-start', 'bottom-start'],
-      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],
-      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],
-      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],
-      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],
-      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],
-      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']
-    };
-    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left'];
+  // Getters
+  static get Default() {
+    return Default$d;
   }
-  _getFloatingConfig(placement, middleware) {
-    const defaultConfig = {
-      placement,
-      middleware,
-      strategy: this._config.strategy
-    };
-    return {
-      ...defaultConfig,
-      ...execute(this._config.floatingConfig, [undefined, defaultConfig])
-    };
+  static get DefaultType() {
+    return DefaultType$d;
   }
-  _disposeFloating() {
-    if (this._floatingCleanup) {
-      this._floatingCleanup();
-      this._floatingCleanup = null;
-    }
+  static get NAME() {
+    return NAME$e;
   }
-  _getContainer() {
-    const {
-      container
-    } = this._config;
-    if (container === false) {
-      return null;
+
+  // Public
+  toggle() {
+    if (this._config.inline) {
+      return; // Inline calendars are always visible
     }
-    return container === true ? document.body : getElement(container);
+    return this._isShown ? this.hide() : this.show();
   }
-  _moveMenuToContainer() {
-    const container = this._getContainer();
-    if (!container || !this._menu) {
+  show() {
+    if (this._config.inline) {
+      return; // Inline calendars are always visible
+    }
+    if (!this._calendar || isDisabled(this._element) || this._isShown) {
       return;
     }
-
-    // Only move if not already in the container
-    if (this._menu.parentNode !== container) {
-      container.append(this._menu);
+    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5);
+    if (showEvent.defaultPrevented) {
+      return;
     }
+    this._calendar.show();
+    this._isShown = true;
+    EventHandler.trigger(this._element, EVENT_SHOWN$5);
   }
-  _restoreMenuToOriginalParent() {
-    if (!this._menuOriginalParent || !this._menu) {
+  hide() {
+    if (this._config.inline) {
+      return; // Inline calendars are always visible
+    }
+    if (!this._calendar || !this._isShown) {
       return;
     }
-
-    // Only restore if menu was moved
-    if (this._menu.parentNode !== this._menuOriginalParent) {
-      this._menuOriginalParent.append(this._menu);
+    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5);
+    if (hideEvent.defaultPrevented) {
+      return;
     }
+    this._calendar.hide();
+    this._isShown = false;
+    EventHandler.trigger(this._element, EVENT_HIDDEN$5);
   }
-
-  // Shared helper for positioning any floating element
-  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {
-    if (!floating.isConnected) {
-      return null;
+  dispose() {
+    if (this._themeObserver) {
+      this._themeObserver.disconnect();
+      this._themeObserver = null;
     }
-    const {
-      x,
-      y,
-      placement: finalPlacement
-    } = await computePosition(reference, floating, {
-      placement,
-      middleware,
-      strategy
-    });
-    if (!floating.isConnected) {
-      return null;
+    if (this._calendar) {
+      this._calendar.destroy();
     }
-    Object.assign(floating.style, {
-      position: strategy,
-      left: `${x}px`,
-      top: `${y}px`,
-      margin: '0'
-    });
-    Manipulator.setDataAttribute(floating, 'placement', finalPlacement);
-    return finalPlacement;
+    this._calendar = null;
+    super.dispose();
   }
-
-  // -------------------------------------------------------------------------
-  // Submenu handling
-  // -------------------------------------------------------------------------
-
-  _setupSubmenuListeners() {
-    // Set up hover listeners for submenu triggers
-    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {
-      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {
-        this._onSubmenuTriggerEnter(event);
-      });
-      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {
-        this._onSubmenuLeave(event);
+  getSelectedDates() {
+    const dates = this._calendar?.context?.selectedDates;
+    return dates ? [...dates] : [];
+  }
+  setSelectedDates(dates) {
+    if (this._calendar) {
+      this._calendar.set({
+        selectedDates: dates
       });
+    }
+  }
 
-      // Track mouse movement for safe triangle calculation
-      EventHandler.on(this._menu, 'mousemove', event => {
-        this._trackMousePosition(event);
-      });
+  // Private
+  _initCalendar() {
+    this._isInput = this._element.tagName === 'INPUT';
+    this._isInline = this._config.inline;
+
+    // For inline mode, look for a hidden input child to bind to
+    if (this._isInline && !this._isInput) {
+      this._boundInput = this._element.querySelector('input[type="hidden"], input[name]');
     }
+    this._positionElement = this._resolvePositionElement();
+    this._displayElement = this._resolveDisplayElement();
+    const calendarOptions = this._buildCalendarOptions();
 
-    // Set up click listener for submenu triggers
-    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {
-      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {
-        this._onSubmenuTriggerClick(event);
-      });
+    // Create calendar on the position element (for correct popup positioning)
+    // but value updates still go to this._element (the input)
+    this._calendar = new Calendar(this._positionElement, calendarOptions);
+    this._calendar.init();
+
+    // Watch for theme changes on ancestor elements (for live theme switching)
+    this._setupThemeObserver();
+
+    // Set initial value if input has a value
+    if (this._isInput && this._element.value) {
+      this._parseInputValue();
     }
+
+    // Populate input/display with preselected dates
+    this._updateDisplayWithSelectedDates();
   }
-  _onSubmenuTriggerEnter(event) {
-    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE);
-    if (!trigger) {
+  _updateDisplayWithSelectedDates() {
+    const {
+      selectedDates
+    } = this._config;
+    if (!selectedDates || selectedDates.length === 0) {
       return;
     }
-    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU);
-    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper);
-    if (!submenu) {
-      return;
+    const formattedDate = this._formatDateForInput(selectedDates);
+    if (this._isInput) {
+      this._element.value = formattedDate;
+    }
+    if (this._boundInput) {
+      this._boundInput.value = selectedDates.join(',');
+    }
+    if (this._displayElement) {
+      this._displayElement.textContent = formattedDate;
     }
-
-    // Cancel any pending close timeout for this submenu
-    this._cancelSubmenuCloseTimeout(submenu);
-
-    // Close other open submenus at the same level
-    this._closeSiblingSubmenus(submenuWrapper);
-
-    // Open this submenu
-    this._openSubmenu(trigger, submenu, submenuWrapper);
   }
-  _onSubmenuLeave(event) {
-    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU);
-    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper);
-    if (!submenu || !this._openSubmenus.has(submenu)) {
-      return;
+  _resolvePositionElement() {
+    let {
+      positionElement
+    } = this._config;
+    if (typeof positionElement === 'string') {
+      positionElement = document.querySelector(positionElement);
     }
 
-    // Check if we're moving toward the submenu (safe triangle)
-    if (this._isMovingTowardSubmenu(event, submenu)) {
-      return;
+    // Use input's parent if in form-adorn
+    if (!positionElement && this._isInput && !this._isInline) {
+      const parent = this._element.closest('.form-adorn');
+      if (parent) {
+        positionElement = parent;
+      }
+    }
+    return positionElement || this._element;
+  }
+  _resolveDisplayElement() {
+    const {
+      displayElement
+    } = this._config;
+    if (typeof displayElement === 'string') {
+      return document.querySelector(displayElement);
     }
 
-    // Schedule submenu close with delay
-    this._scheduleSubmenuClose(submenu, submenuWrapper);
+    // For buttons/non-inputs (not inline), look for a [data-bs-datepicker-display] child
+    if (displayElement === true || displayElement === null && !this._isInput && !this._isInline) {
+      const displayChild = this._element.querySelector('[data-bs-datepicker-display]');
+      return displayChild || this._element;
+    }
+    return displayElement;
   }
-  _onSubmenuTriggerClick(event) {
-    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE);
-    if (!trigger) {
+  _getThemeAncestor() {
+    return this._element.closest('[data-bs-theme]');
+  }
+  _getEffectiveTheme() {
+    // Priority: explicit datepickerTheme config > inherited from ancestor > none
+    const {
+      datepickerTheme
+    } = this._config;
+    if (datepickerTheme) {
+      return datepickerTheme;
+    }
+    const ancestor = this._getThemeAncestor();
+    return ancestor?.getAttribute('data-bs-theme') || null;
+  }
+  _syncThemeAttribute(element) {
+    if (!element) {
       return;
     }
-    event.preventDefault();
-    event.stopPropagation();
-    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU);
-    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper);
-    if (!submenu) {
+    const theme = this._getEffectiveTheme();
+    if (theme) {
+      // Copy theme to popover (needed because VCP appends to body, breaking CSS inheritance)
+      element.setAttribute('data-bs-theme', theme);
+    } else {
+      // No theme - remove attribute to allow natural inheritance
+      element.removeAttribute('data-bs-theme');
+    }
+  }
+  _setupThemeObserver() {
+    // Watch for theme changes on ancestor elements
+    const ancestor = this._getThemeAncestor();
+    if (!ancestor || this._config.datepickerTheme) {
+      // No ancestor to watch, or explicit datepickerTheme overrides
       return;
     }
+    this._themeObserver = new MutationObserver(() => {
+      this._syncThemeAttribute(this._calendar?.context?.mainElement);
+    });
+    this._themeObserver.observe(ancestor, {
+      attributes: true,
+      attributeFilter: ['data-bs-theme']
+    });
+  }
+  _buildCalendarOptions() {
+    // Get theme for VCP - use 'system' for auto-detection if no explicit theme
+    const theme = this._getEffectiveTheme();
+    // VCP uses 'system' for auto, Bootstrap uses 'auto'
+    const vcpTheme = !theme || theme === 'auto' ? 'system' : theme;
+    const calendarOptions = {
+      ...this._config.vcpOptions,
+      inputMode: !this._isInline,
+      positionToInput: this._config.placement,
+      firstWeekday: this._config.firstWeekday,
+      locale: this._config.locale,
+      selectionDatesMode: this._config.selectionMode,
+      selectedDates: this._config.selectedDates,
+      displayMonthsCount: this._config.displayMonthsCount,
+      type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',
+      selectedTheme: vcpTheme,
+      themeAttrDetect: '[data-bs-theme]',
+      onClickDate: (self, event) => this._handleDateClick(self, event),
+      onInit: self => {
+        this._syncThemeAttribute(self.context.mainElement);
+      },
+      onShow: () => {
+        this._isShown = true;
+        this._syncThemeAttribute(this._calendar.context.mainElement);
+      },
+      onHide: () => {
+        this._isShown = false;
+      }
+    };
 
-    // Toggle submenu
-    if (this._openSubmenus.has(submenu)) {
-      this._closeSubmenu(submenu, submenuWrapper);
-    } else {
-      this._closeSiblingSubmenus(submenuWrapper);
-      this._openSubmenu(trigger, submenu, submenuWrapper);
+    // Navigate to the month of the first selected date
+    if (this._config.selectedDates.length > 0) {
+      const firstDate = this._parseDate(this._config.selectedDates[0]);
+      calendarOptions.selectedMonth = firstDate.getMonth();
+      calendarOptions.selectedYear = firstDate.getFullYear();
+    }
+    if (this._config.dateMin) {
+      calendarOptions.dateMin = this._config.dateMin;
     }
+    if (this._config.dateMax) {
+      calendarOptions.dateMax = this._config.dateMax;
+    }
+    return calendarOptions;
   }
-  _openSubmenu(trigger, submenu, submenuWrapper) {
-    if (this._openSubmenus.has(submenu)) {
-      return;
+  _handleDateClick(self, event) {
+    const selectedDates = [...self.context.selectedDates];
+    if (selectedDates.length > 0) {
+      const formattedDate = this._formatDateForInput(selectedDates);
+      if (this._isInput) {
+        this._element.value = formattedDate;
+      }
+      if (this._boundInput) {
+        this._boundInput.value = selectedDates.join(',');
+      }
+      if (this._displayElement) {
+        this._displayElement.textContent = formattedDate;
+      }
     }
-
-    // Set ARIA attributes
-    trigger.setAttribute('aria-expanded', 'true');
-    trigger.setAttribute('aria-haspopup', 'true');
-
-    // Position and show submenu
-    submenu.classList.add(CLASS_NAME_SHOW$5);
-    submenuWrapper.classList.add(CLASS_NAME_SHOW$5);
-
-    // Set up Floating UI positioning for submenu
-    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper);
-    this._openSubmenus.set(submenu, cleanup);
-
-    // Set up mouseenter on submenu to cancel close timeout
-    EventHandler.on(submenu, 'mouseenter', () => {
-      this._cancelSubmenuCloseTimeout(submenu);
+    EventHandler.trigger(this._element, EVENT_CHANGE, {
+      dates: selectedDates,
+      event
     });
+    this._maybeHideAfterSelection(selectedDates);
   }
-  _closeSubmenu(submenu, submenuWrapper) {
-    if (!this._openSubmenus.has(submenu)) {
+  _maybeHideAfterSelection(selectedDates) {
+    if (this._isInline) {
       return;
     }
-
-    // Close any nested submenus first
-    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW$5}`, submenu);
-    for (const nested of nestedSubmenus) {
-      const nestedWrapper = nested.closest(SELECTOR_SUBMENU);
-      this._closeSubmenu(nested, nestedWrapper);
+    const shouldHide = this._config.selectionMode === 'single' && selectedDates.length > 0 || this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2;
+    if (shouldHide) {
+      setTimeout(() => this.hide(), HIDE_DELAY);
     }
+  }
+  _parseDate(dateStr) {
+    const [year, month, day] = dateStr.split('-');
+    return new Date(year, month - 1, day);
+  }
+  _formatDate(dateStr) {
+    const date = this._parseDate(dateStr);
+    const locale = this._config.locale === 'default' ? undefined : this._config.locale;
+    const {
+      dateFormat
+    } = this._config;
 
-    // Get the trigger
-    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper);
-
-    // Clean up Floating UI
-    const cleanup = this._openSubmenus.get(submenu);
-    if (cleanup) {
-      cleanup();
+    // Custom function formatter
+    if (typeof dateFormat === 'function') {
+      return dateFormat(date, locale);
     }
-    this._openSubmenus.delete(submenu);
-
-    // Remove event listeners
-    EventHandler.off(submenu, 'mouseenter');
 
-    // Update ARIA and visibility
-    if (trigger) {
-      trigger.setAttribute('aria-expanded', 'false');
+    // Intl.DateTimeFormat options object
+    if (dateFormat && typeof dateFormat === 'object') {
+      return new Intl.DateTimeFormat(locale, dateFormat).format(date);
     }
-    submenu.classList.remove(CLASS_NAME_SHOW$5);
-    submenuWrapper.classList.remove(CLASS_NAME_SHOW$5);
 
-    // Clear inline styles
-    submenu.style.position = '';
-    submenu.style.left = '';
-    submenu.style.top = '';
-    submenu.style.margin = '';
+    // Default: locale-aware formatting
+    return date.toLocaleDateString(locale);
   }
-  _closeAllSubmenus() {
-    for (const [submenu] of this._openSubmenus) {
-      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU);
-      this._closeSubmenu(submenu, submenuWrapper);
+  _formatDateForInput(dates) {
+    if (dates.length === 0) {
+      return '';
     }
-  }
-  _closeSiblingSubmenus(currentSubmenuWrapper) {
-    // Find all sibling submenu wrappers and close their menus
-    const parent = currentSubmenuWrapper.parentNode;
-    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW$5}`, parent);
-    for (const siblingMenu of siblingSubmenus) {
-      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU);
-      if (siblingWrapper !== currentSubmenuWrapper) {
-        this._closeSubmenu(siblingMenu, siblingWrapper);
-      }
+    if (dates.length === 1) {
+      return this._formatDate(dates[0]);
     }
+
+    // For date ranges, use en-dash; for multiple dates, use comma
+    const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', ';
+    return dates.map(d => this._formatDate(d)).join(separator);
   }
-  _createSubmenuFloating(trigger, submenu, submenuWrapper) {
-    const referenceElement = submenuWrapper;
-    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT);
-    const middleware = [offset({
-      mainAxis: 0,
-      crossAxis: -4
-    }), flip({
-      fallbackPlacements: [resolveLogicalPlacement('start-start'), resolveLogicalPlacement('end-end'), resolveLogicalPlacement('start-end')]
-    }), shift({
-      padding: 8
-    })];
-    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware);
-    updatePosition();
-    return autoUpdate(referenceElement, submenu, updatePosition);
-  }
-  _scheduleSubmenuClose(submenu, submenuWrapper) {
-    this._cancelSubmenuCloseTimeout(submenu);
-    const timeoutId = setTimeout(() => {
-      this._closeSubmenu(submenu, submenuWrapper);
-      this._submenuCloseTimeouts.delete(submenu);
-    }, this._config.submenuDelay);
-    this._submenuCloseTimeouts.set(submenu, timeoutId);
-  }
-  _cancelSubmenuCloseTimeout(submenu) {
-    const timeoutId = this._submenuCloseTimeouts.get(submenu);
-    if (timeoutId) {
-      clearTimeout(timeoutId);
-      this._submenuCloseTimeouts.delete(submenu);
+  _parseInputValue() {
+    // Try to parse the input value as a date
+    const value = this._element.value.trim();
+    if (!value) {
+      return;
     }
-  }
-  _clearAllSubmenuTimeouts() {
-    for (const timeoutId of this._submenuCloseTimeouts.values()) {
-      clearTimeout(timeoutId);
+    const date = new Date(value);
+    if (!Number.isNaN(date.getTime())) {
+      const year = date.getFullYear();
+      const month = String(date.getMonth() + 1).padStart(2, '0');
+      const day = String(date.getDate()).padStart(2, '0');
+      const formatted = `${year}-${month}-${day}`;
+      this._calendar.set({
+        selectedDates: [formatted]
+      });
     }
-    this._submenuCloseTimeouts.clear();
-  }
-
-  // -------------------------------------------------------------------------
-  // Hover intent / Safe triangle
-  // -------------------------------------------------------------------------
-
-  _trackMousePosition(event) {
-    this._hoverIntentData = {
-      x: event.clientX,
-      y: event.clientY,
-      timestamp: Date.now()
-    };
   }
-  _isMovingTowardSubmenu(event, submenu) {
-    if (!this._hoverIntentData) {
-      return false;
-    }
-    const submenuRect = submenu.getBoundingClientRect();
-    const currentPos = {
-      x: event.clientX,
-      y: event.clientY
-    };
-    const lastPos = {
-      x: this._hoverIntentData.x,
-      y: this._hoverIntentData.y
-    };
-
-    // Create a triangle from current position to submenu edges
-    // The triangle represents the "safe zone" for diagonal movement
-    const isRtl = isRTL();
+}
 
-    // Determine which edge of the submenu to target based on direction
-    const targetX = isRtl ? submenuRect.right : submenuRect.left;
-    const topCorner = {
-      x: targetX,
-      y: submenuRect.top
-    };
-    const bottomCorner = {
-      x: targetX,
-      y: submenuRect.bottom
-    };
+/**
+ * Data API implementation
+ */
 
-    // Check if cursor is moving toward the submenu
-    // by checking if the current position is within the safe triangle
-    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner);
+EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$6, function (event) {
+  // Only handle if not an input (inputs use focus)
+  // Skip inline datepickers (they're always visible)
+  if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true') {
+    return;
   }
-  _pointInTriangle(point, v1, v2, v3) {
-    // Barycentric coordinate method to check if point is inside triangle
-    const d1 = triangleSign(point, v1, v2);
-    const d2 = triangleSign(point, v2, v3);
-    const d3 = triangleSign(point, v3, v1);
-    const hasNeg = d1 < 0 || d2 < 0 || d3 < 0;
-    const hasPos = d1 > 0 || d2 > 0 || d3 > 0;
-    return !(hasNeg && hasPos);
+  event.preventDefault();
+  Datepicker.getOrCreateInstance(this).toggle();
+});
+EventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE$6, function () {
+  // Handle focus for input elements
+  if (this.tagName !== 'INPUT') {
+    return;
   }
+  Datepicker.getOrCreateInstance(this).show();
+});
 
-  // -------------------------------------------------------------------------
-  // Keyboard navigation
-  // -------------------------------------------------------------------------
+// Auto-initialize inline datepickers on DOMContentLoaded
+EventHandler.on(document, `DOMContentLoaded${EVENT_KEY$a}${DATA_API_KEY$5}`, () => {
+  for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE$6}[data-bs-inline="true"]`)) {
+    Datepicker.getOrCreateInstance(element);
+  }
+});
 
-  _selectMenuItem({
-    key,
-    target
-  }) {
-    // Get items only from the current menu level (not nested submenus)
-    // If target is inside a menu, use that menu; otherwise use the main menu
-    const currentMenu = target.closest(SELECTOR_MENU) || this._menu;
-    const items = SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu).filter(element => isVisible(element));
-    if (!items.length) {
-      return;
-    }
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap dialog.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
 
-    // if target isn't included in items (e.g. when expanding the dropdown)
-    // allow cycling to get the last item in case key equals ARROW_UP_KEY
-    getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();
-  }
-  _handleSubmenuKeydown(event) {
-    const {
-      key,
-      target
-    } = event;
-    const isRtl = isRTL();
 
-    // Determine the "enter submenu" and "exit submenu" keys based on RTL
-    const enterKey = isRtl ? ARROW_LEFT_KEY$1 : ARROW_RIGHT_KEY$1;
-    const exitKey = isRtl ? ARROW_RIGHT_KEY$1 : ARROW_LEFT_KEY$1;
+/**
+ * Constants
+ */
 
-    // Check if target is a submenu trigger
-    const submenuWrapper = target.closest(SELECTOR_SUBMENU);
-    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE);
+const NAME$d = 'dialog';
+const DATA_KEY$9 = 'bs.dialog';
+const EVENT_KEY$9 = `.${DATA_KEY$9}`;
+const DATA_API_KEY$4 = '.data-api';
+const EVENT_SHOW$4 = `show${EVENT_KEY$9}`;
+const EVENT_SHOWN$4 = `shown${EVENT_KEY$9}`;
+const EVENT_HIDE$4 = `hide${EVENT_KEY$9}`;
+const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$9}`;
+const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$9}`;
+const EVENT_CANCEL = `cancel${EVENT_KEY$9}`;
+const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$9}${DATA_API_KEY$4}`;
+const CLASS_NAME_STATIC = 'dialog-static';
+const CLASS_NAME_OPEN = 'dialog-open';
+const CLASS_NAME_NONMODAL = 'dialog-nonmodal';
+const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="dialog"]';
+const SELECTOR_OPEN_MODAL_DIALOG = 'dialog.dialog[open]:not(.dialog-nonmodal)';
+const Default$c = {
+  backdrop: true,
+  // true (click dismisses) or 'static' (click does nothing) - only applies to modal dialogs
+  keyboard: true,
+  modal: true // true uses showModal(), false uses show() for non-modal dialogs
+};
+const DefaultType$c = {
+  backdrop: '(boolean|string)',
+  keyboard: 'boolean',
+  modal: 'boolean'
+};
 
-    // Handle Enter/Space on submenu trigger
-    if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {
-      event.preventDefault();
-      event.stopPropagation();
-      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper);
-      if (submenu) {
-        this._closeSiblingSubmenus(submenuWrapper);
-        this._openSubmenu(target, submenu, submenuWrapper);
-        // Focus first item in submenu
-        requestAnimationFrame(() => {
-          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu);
-          if (firstItem) {
-            firstItem.focus();
-          }
-        });
-      }
-      return true;
-    }
+/**
+ * Class definition
+ */
 
-    // Handle Right arrow (or Left in RTL) - enter submenu
-    if (key === enterKey && isSubmenuTrigger) {
-      event.preventDefault();
-      event.stopPropagation();
-      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper);
-      if (submenu) {
-        this._closeSiblingSubmenus(submenuWrapper);
-        this._openSubmenu(target, submenu, submenuWrapper);
-        // Focus first item in submenu
-        requestAnimationFrame(() => {
-          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu);
-          if (firstItem) {
-            firstItem.focus();
-          }
-        });
-      }
-      return true;
-    }
+class Dialog extends BaseComponent {
+  constructor(element, config) {
+    super(element, config);
+    this._isTransitioning = false;
+    this._addEventListeners();
+  }
 
-    // Handle Left arrow (or Right in RTL) - exit submenu
-    if (key === exitKey) {
-      const currentMenu = target.closest(SELECTOR_MENU);
-      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU);
-      if (parentSubmenuWrapper) {
-        event.preventDefault();
-        event.stopPropagation();
-        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper);
-        this._closeSubmenu(currentMenu, parentSubmenuWrapper);
-        if (parentTrigger) {
-          parentTrigger.focus();
-        }
-        return true;
-      }
-    }
+  // Getters
+  static get Default() {
+    return Default$c;
+  }
+  static get DefaultType() {
+    return DefaultType$c;
+  }
+  static get NAME() {
+    return NAME$d;
+  }
 
-    // Handle Home/End keys
-    if (key === HOME_KEY$1 || key === END_KEY$1) {
-      event.preventDefault();
-      event.stopPropagation();
-      const currentMenu = target.closest(SELECTOR_MENU);
-      const items = SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu).filter(element => isVisible(element));
-      if (items.length) {
-        const targetItem = key === HOME_KEY$1 ? items[0] : items[items.length - 1];
-        targetItem.focus();
-      }
-      return true;
-    }
-    return false;
+  // Public
+  toggle(relatedTarget) {
+    return this._element.open ? this.hide() : this.show(relatedTarget);
   }
-  static clearMenus(event) {
-    if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {
+  show(relatedTarget) {
+    if (this._element.open || this._isTransitioning) {
       return;
     }
-    const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);
-    for (const toggle of openToggles) {
-      const context = Dropdown.getInstance(toggle);
-      if (!context || context._config.autoClose === false) {
-        continue;
-      }
-      const composedPath = event.composedPath();
-      const isMenuTarget = composedPath.includes(context._menu);
-      if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {
-        continue;
-      }
-
-      // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
-      if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {
-        continue;
-      }
-      const relatedTarget = {
-        relatedTarget: context._element
-      };
-      if (event.type === 'click') {
-        relatedTarget.clickEvent = event;
-      }
-      context._completeHide(relatedTarget);
+    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {
+      relatedTarget
+    });
+    if (showEvent.defaultPrevented) {
+      return;
+    }
+    this._isTransitioning = true;
+    if (this._config.modal) {
+      // Modal dialog: use showModal() for focus trapping, backdrop, and top layer
+      this._element.showModal();
+      // Prevent body scroll for modal dialogs
+      document.body.classList.add(CLASS_NAME_OPEN);
+    } else {
+      // Non-modal dialog: use show() - no backdrop, no focus trap, no top layer
+      this._element.classList.add(CLASS_NAME_NONMODAL);
+      this._element.show();
     }
+    this._queueCallback(() => {
+      this._isTransitioning = false;
+      EventHandler.trigger(this._element, EVENT_SHOWN$4, {
+        relatedTarget
+      });
+    }, this._element, this._isAnimated());
   }
-  static dataApiKeydownHandler(event) {
-    // If not a relevant key => not a dropdown command
-    const isInput = /input|textarea/i.test(event.target.tagName);
-    const isEscapeEvent = event.key === ESCAPE_KEY$1;
-    const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);
-    const isLeftOrRightEvent = [ARROW_LEFT_KEY$1, ARROW_RIGHT_KEY$1].includes(event.key);
-    const isHomeOrEndEvent = [HOME_KEY$1, END_KEY$1].includes(event.key);
-    const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key);
-
-    // Allow Enter/Space only on submenu triggers
-    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE);
-    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent && !(isEnterOrSpaceEvent && isSubmenuTrigger)) {
+  hide() {
+    if (!this._element.open || this._isTransitioning) {
       return;
     }
-    if (isInput && !isEscapeEvent) {
+    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);
+    if (hideEvent.defaultPrevented) {
       return;
     }
+    this._isTransitioning = true;
+    this._queueCallback(() => this._hideDialog(), this._element, this._isAnimated());
+  }
+  dispose() {
+    EventHandler.off(this._element, EVENT_KEY$9);
+    super.dispose();
+  }
+  handleUpdate() {
+    // Provided for API consistency with Modal.
+    // Native dialogs handle their own positioning.
+  }
 
-    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
-    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$5) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$5)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$5)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$5, event.delegateTarget.parentNode);
-    if (!getToggleButton) {
-      return;
-    }
-    const instance = Dropdown.getOrCreateInstance(getToggleButton);
+  // Private
+  _hideDialog() {
+    this._element.close();
+    this._element.classList.remove(CLASS_NAME_NONMODAL);
+    this._isTransitioning = false;
 
-    // Handle submenu navigation first
-    if ((isLeftOrRightEvent || isHomeOrEndEvent || isEnterOrSpaceEvent && isSubmenuTrigger) && instance._handleSubmenuKeydown(event)) {
-      return;
+    // Only restore body scroll if no other modal dialogs are open
+    if (!document.querySelector(SELECTOR_OPEN_MODAL_DIALOG)) {
+      document.body.classList.remove(CLASS_NAME_OPEN);
     }
-
-    // Handle Up/Down navigation
-    if (isUpOrDownEvent) {
-      event.preventDefault();
-      event.stopPropagation();
-      instance.show();
-      instance._selectMenuItem(event);
+    EventHandler.trigger(this._element, EVENT_HIDDEN$4);
+  }
+  _isAnimated() {
+    return this._element.classList.contains('fade');
+  }
+  _triggerBackdropTransition() {
+    const hidePreventedEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);
+    if (hidePreventedEvent.defaultPrevented) {
       return;
     }
+    this._element.classList.add(CLASS_NAME_STATIC);
+    this._queueCallback(() => {
+      this._element.classList.remove(CLASS_NAME_STATIC);
+    }, this._element);
+  }
+  _addEventListeners() {
+    // Handle native cancel event (Escape key) - only fires for modal dialogs
+    EventHandler.on(this._element, 'cancel', event => {
+      // Prevent native close behavior - we'll handle it
+      event.preventDefault();
+      if (!this._config.keyboard) {
+        this._triggerBackdropTransition();
+        return;
+      }
+      EventHandler.trigger(this._element, EVENT_CANCEL);
+      this.hide();
+    });
 
-    // Handle Escape
-    if (isEscapeEvent && instance._isShown()) {
+    // Handle Escape key for non-modal dialogs (native cancel doesn't fire for show())
+    EventHandler.on(this._element, 'keydown', event => {
+      if (event.key !== 'Escape' || this._config.modal) {
+        return;
+      }
       event.preventDefault();
-      event.stopPropagation();
+      if (!this._config.keyboard) {
+        return;
+      }
+      EventHandler.trigger(this._element, EVENT_CANCEL);
+      this.hide();
+    });
 
-      // If in a submenu, close just that submenu
-      const currentMenu = event.target.closest(SELECTOR_MENU);
-      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU);
-      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {
-        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper);
-        instance._closeSubmenu(currentMenu, parentSubmenuWrapper);
-        if (parentTrigger) {
-          parentTrigger.focus();
-        }
+    // Handle backdrop clicks (only applies to modal dialogs)
+    // Native <dialog> fires click on the dialog element when backdrop is clicked
+    EventHandler.on(this._element, 'click', event => {
+      // Only handle clicks directly on the dialog (backdrop area)
+      // Non-modal dialogs don't have a backdrop
+      if (event.target !== this._element || !this._config.modal) {
+        return;
+      }
+      if (this._config.backdrop === 'static') {
+        this._triggerBackdropTransition();
         return;
       }
 
-      // Otherwise close the whole dropdown
-      instance.hide();
-      getToggleButton.focus();
-    }
+      // Default: click backdrop to dismiss
+      this.hide();
+    });
   }
 }
 
@@ -3219,14 +3443,44 @@ class Dropdown extends BaseComponent {
  * Data API implementation
  */
 
-EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$5, Dropdown.dataApiKeydownHandler);
-EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
-EventHandler.on(document, EVENT_CLICK_DATA_API$2, Dropdown.clearMenus);
-EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
 EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$5, function (event) {
-  event.preventDefault();
-  Dropdown.getOrCreateInstance(this).toggle();
+  const target = SelectorEngine.getElementFromSelector(this);
+  if (['A', 'AREA'].includes(this.tagName)) {
+    event.preventDefault();
+  }
+  EventHandler.one(target, EVENT_SHOW$4, showEvent => {
+    if (showEvent.defaultPrevented) {
+      return;
+    }
+    EventHandler.one(target, EVENT_HIDDEN$4, () => {
+      if (isVisible(this)) {
+        this.focus();
+      }
+    });
+  });
+
+  // Get config from trigger's data attributes
+  const config = Manipulator.getDataAttributes(this);
+
+  // Check if trigger is inside an open dialog
+  const currentDialog = this.closest('dialog[open]');
+  const shouldSwap = currentDialog && currentDialog !== target;
+  if (shouldSwap) {
+    // Open new dialog first (its backdrop appears over current)
+    const newDialog = Dialog.getOrCreateInstance(target, config);
+    newDialog.show(this);
+
+    // Close the current dialog (no backdrop flash since new one is already open)
+    const currentInstance = Dialog.getInstance(currentDialog);
+    if (currentInstance) {
+      currentInstance.hide();
+    }
+    return;
+  }
+  const data = Dialog.getOrCreateInstance(target, config);
+  data.toggle(this);
 });
+enableDismissTrigger(Dialog);
 
 /**
  * --------------------------------------------------------------------------
@@ -3324,7 +3578,7 @@ class NavOverflow extends BaseComponent {
       item.dataset.bsNavOrder = index;
     }
 
-    // Create overflow dropdown if it doesn't exist
+    // Create overflow menu if it doesn't exist
     this._createOverflowMenu();
 
     // Setup resize observer
@@ -3341,16 +3595,14 @@ class NavOverflow extends BaseComponent {
       this._overflowMenu = SelectorEngine.findOne(SELECTOR_OVERFLOW_MENU, this._element);
       return;
     }
-
-    // Create the overflow dropdown item
     const overflowItem = document.createElement('li');
-    overflowItem.className = 'nav-item nav-overflow-item dropdown';
+    overflowItem.className = 'nav-item nav-overflow-item';
     overflowItem.innerHTML = `
-      <button class="nav-link nav-overflow-toggle dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-container="body" data-bs-strategy="fixed" aria-expanded="false">
+      <button class="nav-link nav-overflow-toggle" type="button" data-bs-toggle="menu" data-bs-placement="bottom-end" aria-expanded="false">
         <span class="nav-overflow-icon">${this._config.moreIcon}</span>
         <span class="nav-overflow-text">${this._config.moreText}</span>
       </button>
-      <ul class="${CLASS_NAME_OVERFLOW_MENU} dropdown-menu dropdown-menu-end"></ul>
+      <div class="${CLASS_NAME_OVERFLOW_MENU} menu"></div>
     `;
     this._element.append(overflowItem);
     this._overflowToggle = overflowItem.querySelector(SELECTOR_OVERFLOW_TOGGLE);
@@ -3429,26 +3681,19 @@ class NavOverflow extends BaseComponent {
     this._overflowMenu.innerHTML = '';
     this._overflowItems = [];
     for (const item of items) {
-      // Clone the nav link as a dropdown item
       const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item);
       if (!link) {
         continue;
       }
-      const dropdownItem = document.createElement('li');
       const clonedLink = link.cloneNode(true);
-      clonedLink.className = 'dropdown-item';
-
-      // Preserve active state
+      clonedLink.className = 'menu-item';
       if (link.classList.contains('active')) {
         clonedLink.classList.add('active');
       }
-
-      // Preserve disabled state
       if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {
         clonedLink.classList.add('disabled');
       }
-      dropdownItem.append(clonedLink);
-      this._overflowMenu.append(dropdownItem);
+      this._overflowMenu.append(clonedLink);
 
       // Hide original item
       item.classList.add(CLASS_NAME_HIDDEN);
@@ -5420,7 +5665,7 @@ const DATA_API_KEY = '.data-api';
 const EVENT_ACTIVATE = `activate${EVENT_KEY$3}`;
 const EVENT_CLICK$1 = `click${EVENT_KEY$3}`;
 const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$3}${DATA_API_KEY}`;
-const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
+const CLASS_NAME_MENU_ITEM = 'menu-item';
 const CLASS_NAME_ACTIVE$1 = 'active';
 const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
 const SELECTOR_TARGET_LINKS = '[href]';
@@ -5429,8 +5674,7 @@ const SELECTOR_NAV_LINKS = '.nav-link';
 const SELECTOR_NAV_ITEMS = '.nav-item';
 const SELECTOR_LIST_ITEMS = '.list-group-item';
 const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;
-const SELECTOR_DROPDOWN = '.dropdown';
-const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';
+const SELECTOR_MENU_TOGGLE$1 = '[data-bs-toggle="menu"]';
 const Default$2 = {
   rootMargin: '0px 0px -25%',
   smoothScroll: false,
@@ -5601,9 +5845,12 @@ class ScrollSpy extends BaseComponent {
     });
   }
   _activateParents(target) {
-    // Activate dropdown parents
-    if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
-      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);
+    // Activate menu parents
+    if (target.classList.contains(CLASS_NAME_MENU_ITEM)) {
+      const menuToggle = target.closest('.menu')?.previousElementSibling;
+      if (menuToggle?.matches(SELECTOR_MENU_TOGGLE$1)) {
+        menuToggle.classList.add(CLASS_NAME_ACTIVE$1);
+      }
       return;
     }
     for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {
@@ -5664,13 +5911,12 @@ const END_KEY = 'End';
 const CLASS_NAME_ACTIVE = 'active';
 const CLASS_NAME_FADE$1 = 'fade';
 const CLASS_NAME_SHOW$1 = 'show';
-const CLASS_DROPDOWN = 'dropdown';
-const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
-const SELECTOR_DROPDOWN_MENU = '.dropdown-menu';
-const NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;
+const SELECTOR_MENU_TOGGLE = '[data-bs-toggle="menu"]';
+const SELECTOR_MENU = '.menu';
+const NOT_SELECTOR_MENU_TOGGLE = `:not(${SELECTOR_MENU_TOGGLE})`;
 const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]';
 const SELECTOR_OUTER = '.nav-item, .list-group-item';
-const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;
+const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role="tab"]${NOT_SELECTOR_MENU_TOGGLE}`;
 const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; // TODO: could only be `tab` in v6
 const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE$1}`;
 const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`;
@@ -5737,7 +5983,7 @@ class Tab extends BaseComponent {
       }
       element.removeAttribute('tabindex');
       element.setAttribute('aria-selected', true);
-      this._toggleDropDown(element, true);
+      this._toggleMenu(element, true);
       EventHandler.trigger(element, EVENT_SHOWN$1, {
         relatedTarget: relatedElem
       });
@@ -5759,7 +6005,7 @@ class Tab extends BaseComponent {
       }
       element.setAttribute('aria-selected', false);
       element.setAttribute('tabindex', '-1');
-      this._toggleDropDown(element, false);
+      this._toggleMenu(element, false);
       EventHandler.trigger(element, EVENT_HIDDEN$1, {
         relatedTarget: relatedElem
       });
@@ -5826,20 +6072,18 @@ class Tab extends BaseComponent {
       this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`);
     }
   }
-  _toggleDropDown(element, open) {
+  _toggleMenu(element, open) {
     const outerElem = this._getOuterElement(element);
-    if (!outerElem.classList.contains(CLASS_DROPDOWN)) {
+    const menuToggle = SelectorEngine.findOne(SELECTOR_MENU_TOGGLE, outerElem);
+    if (!menuToggle) {
       return;
     }
-    const toggle = (selector, className) => {
-      const element = SelectorEngine.findOne(selector, outerElem);
-      if (element) {
-        element.classList.toggle(className, open);
-      }
-    };
-    toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);
-    toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);
-    outerElem.setAttribute('aria-expanded', open);
+    const menu = SelectorEngine.findOne(SELECTOR_MENU, outerElem);
+    menuToggle.classList.toggle(CLASS_NAME_ACTIVE, open);
+    if (menu) {
+      menu.classList.toggle(CLASS_NAME_SHOW$1, open);
+    }
+    menuToggle.setAttribute('aria-expanded', open);
   }
   _setAttributeIfNotExists(element, attribute, value) {
     if (!element.hasAttribute(attribute)) {
@@ -6131,5 +6375,5 @@ class Toggler extends BaseComponent {
 
 eventActionOnPlugin(Toggler, EVENT_CLICK, SELECTOR_DATA_TOGGLE, 'toggle');
 
-export { Alert, Button, Carousel, Collapse, Datepicker, Dialog, Dropdown, NavOverflow, Offcanvas, OtpInput, Popover, ScrollSpy, Strength, Tab, Toast, Toggler, Tooltip };
+export { Alert, Button, Carousel, Collapse, Combobox, Datepicker, Dialog, Menu, NavOverflow, Offcanvas, OtpInput, Popover, ScrollSpy, Strength, Tab, Toast, Toggler, Tooltip };
 //# sourceMappingURL=bootstrap.js.map
index 16d14433c6d0e45e2f2b846b0fb68d9a1f333b97..a2a5b036e1298c34de1aa7346e3d9bd39dcc8daa 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"bootstrap.js","sources":["../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/index.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/datepicker.js","../../js/src/dialog.js","../../js/src/util/floating-ui.js","../../js/src/dropdown.js","../../js/src/nav-overflow.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/util/scrollbar.js","../../js/src/offcanvas.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/toggler.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const evt = hydrateObj(new Event(event, { bubbles: true, cancelable: true }), args)\n    element.dispatchEvent(evt)\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n  for (const [key, value] of Object.entries(meta)) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n  if (selector && window.CSS && window.CSS.escape) {\n    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n    selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n  }\n\n  return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  if (isElement(object)) {\n    return object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(parseSelector(object))\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsie appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n  return typeof possibleCallback === 'function' ? possibleCallback.call(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getNextActiveElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  parseSelector,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const [property, expectedTypes] of Object.entries(configTypes)) {\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '6.0.0-alpha1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  // Private\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\n}\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children).filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  },\n\n  getSelectorFromElement(element) {\n    const selector = getSelector(element)\n\n    if (selector) {\n      return SelectorEngine.findOne(selector) ? selector : null\n    }\n\n    return null\n  },\n\n  getElementFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.findOne(selector) : null\n  },\n\n  getMultipleElementsFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.find(selector) : []\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nconst eventActionOnPlugin = (Plugin, onEvent, stringSelector, method, callback = null) => {\n  eventAction(`${onEvent}.${Plugin.NAME}`, stringSelector, data => {\n    const instances = data.targets.filter(Boolean).map(element => Plugin.getOrCreateInstance(element))\n    if (typeof callback === 'function') {\n      callback({ ...data, instances })\n    }\n\n    for (const instance of instances) {\n      instance[method]()\n    }\n  })\n}\n\nconst eventAction = (onEvent, stringSelector, callback) => {\n  const selector = `${stringSelector}:not(.disabled):not(:disabled)`\n  EventHandler.on(document, onEvent, selector, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    const selector = SelectorEngine.getSelectorFromElement(this)\n    const targets = selector ? SelectorEngine.find(selector) : [this]\n\n    callback({ targets, event })\n  })\n}\n\nexport {\n  enableDismissTrigger,\n  eventActionOnPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    this._deltaX = event.touches && event.touches.length > 1 ?\n      0 :\n      event.touches[0].clientX - this._deltaX\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n\n    if (absDeltaX <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltaX / this._deltaX\n\n    this._deltaX = 0\n\n    if (!direction) {\n      return\n    }\n\n    execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getNextActiveElement,\n  isRTL,\n  isVisible,\n  reflow,\n  triggerTransitionEnd\n} from './util/index.js'\nimport Swipe from './util/swipe.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover',\n  ride: false,\n  touch: true,\n  wrap: true\n}\n\nconst DefaultType = {\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)',\n  ride: '(boolean|string)',\n  touch: 'boolean',\n  wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._interval = null\n    this._activeElement = null\n    this._isSliding = false\n    this.touchTimeout = null\n    this._swipeHelper = null\n\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._addEventListeners()\n\n    if (this._config.ride === CLASS_NAME_CAROUSEL) {\n      this.cycle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause() {\n    if (this._isSliding) {\n      triggerTransitionEnd(this._element)\n    }\n\n    this._clearInterval()\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._updateInterval()\n\n    this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n  }\n\n  _maybeEnableCycle() {\n    if (!this._config.ride) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n      return\n    }\n\n    this.cycle()\n  }\n\n  to(index) {\n    const items = this._getItems()\n    if (index > items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    const activeIndex = this._getItemIndex(this._getActive())\n    if (activeIndex === index) {\n      return\n    }\n\n    const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n    this._slide(order, items[index])\n  }\n\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.defaultInterval = config.interval\n    return config\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    if (this._config.touch && Swipe.isSupported()) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n      EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n    }\n\n    const endCallBack = () => {\n      if (this._config.pause !== 'hover') {\n        return\n      }\n\n      // If it's a touch-enabled device, mouseenter/leave are fired as\n      // part of the mouse compatibility events on first tap - the carousel\n      // would stop cycling until user tapped out of it;\n      // here, we listen for touchend, explicitly pause the carousel\n      // (as if it's the second time we tap on it, mouseenter compat event\n      // is NOT fired) and after a timeout (to allow for mouse compatibility\n      // events to fire) we explicitly restart cycling\n\n      this.pause()\n      if (this.touchTimeout) {\n        clearTimeout(this.touchTimeout)\n      }\n\n      this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n    }\n\n    const swipeConfig = {\n      leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n      rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n      endCallback: endCallBack\n    }\n\n    this._swipeHelper = new Swipe(this._element, swipeConfig)\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(this._directionToOrder(direction))\n    }\n  }\n\n  _getItemIndex(element) {\n    return this._getItems().indexOf(element)\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n    activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n    activeIndicator.removeAttribute('aria-current')\n\n    const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n    if (newActiveIndicator) {\n      newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n      newActiveIndicator.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || this._getActive()\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    this._config.interval = elementInterval || this._config.defaultInterval\n  }\n\n  _slide(order, element = null) {\n    if (this._isSliding) {\n      return\n    }\n\n    const activeElement = this._getActive()\n    const isNext = order === ORDER_NEXT\n    const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n    if (nextElement === activeElement) {\n      return\n    }\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n\n    const triggerEvent = eventName => {\n      return EventHandler.trigger(this._element, eventName, {\n        relatedTarget: nextElement,\n        direction: this._orderToDirection(order),\n        from: this._getItemIndex(activeElement),\n        to: nextElementIndex\n      })\n    }\n\n    const slideEvent = triggerEvent(EVENT_SLIDE)\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      return\n    }\n\n    const isCycling = Boolean(this._interval)\n    this.pause()\n\n    this._isSliding = true\n\n    this._setActiveIndicatorElement(nextElementIndex)\n    this._activeElement = nextElement\n\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n    nextElement.classList.add(orderClassName)\n\n    reflow(nextElement)\n\n    activeElement.classList.add(directionalClassName)\n    nextElement.classList.add(directionalClassName)\n\n    const completeCallBack = () => {\n      nextElement.classList.remove(directionalClassName, orderClassName)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n      this._isSliding = false\n\n      triggerEvent(EVENT_SLID)\n    }\n\n    this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_SLIDE)\n  }\n\n  _getActive() {\n    return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  carousel.prev()\n  carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement,\n  reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = SelectorEngine.getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = SelectorEngine.getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  // Private\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = SelectorEngine.getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap datepicker.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { Calendar } from 'vanilla-calendar-pro'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'datepicker'\nconst DATA_KEY = 'bs.datepicker'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"datepicker\"]'\n\nconst HIDE_DELAY = 100 // ms delay before hiding after selection\n\nconst Default = {\n  datepickerTheme: null, // 'light', 'dark', 'auto' - explicit theme for datepicker popover only\n  dateMin: null,\n  dateMax: null,\n  dateFormat: null, // Intl.DateTimeFormat options, or function(date, locale) => string\n  displayElement: null, // Element to show formatted date (defaults to element for buttons)\n  displayMonthsCount: 1, // Number of months to display side-by-side\n  firstWeekday: 1, // Monday\n  inline: false, // Render calendar inline (no popup)\n  locale: 'default',\n  positionElement: null, // Element to position calendar relative to (defaults to input)\n  selectedDates: [],\n  selectionMode: 'single', // 'single', 'multiple', 'multiple-ranged'\n  placement: 'left', // 'left', 'center', 'right', 'auto'\n  vcpOptions: {} // Pass-through for any VCP option\n}\n\nconst DefaultType = {\n  datepickerTheme: '(null|string)',\n  dateMin: '(null|string|number|object)',\n  dateMax: '(null|string|number|object)',\n  dateFormat: '(null|object|function)',\n  displayElement: '(null|string|element|boolean)',\n  displayMonthsCount: 'number',\n  firstWeekday: 'number',\n  inline: 'boolean',\n  locale: 'string',\n  positionElement: '(null|string|element)',\n  selectedDates: 'array',\n  selectionMode: 'string',\n  placement: 'string',\n  vcpOptions: 'object'\n}\n\n/**\n * Class definition\n */\n\nclass Datepicker extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._calendar = null\n    this._isShown = false\n\n    this._initCalendar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    return this._isShown ? this.hide() : this.show()\n  }\n\n  show() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || isDisabled(this._element) || this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.show()\n    this._isShown = true\n\n    EventHandler.trigger(this._element, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || !this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.hide()\n    this._isShown = false\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._themeObserver) {\n      this._themeObserver.disconnect()\n      this._themeObserver = null\n    }\n\n    if (this._calendar) {\n      this._calendar.destroy()\n    }\n\n    this._calendar = null\n    super.dispose()\n  }\n\n  getSelectedDates() {\n    const dates = this._calendar?.context?.selectedDates\n    return dates ? [...dates] : []\n  }\n\n  setSelectedDates(dates) {\n    if (this._calendar) {\n      this._calendar.set({ selectedDates: dates })\n    }\n  }\n\n  // Private\n  _initCalendar() {\n    this._isInput = this._element.tagName === 'INPUT'\n    this._isInline = this._config.inline\n\n    // For inline mode, look for a hidden input child to bind to\n    if (this._isInline && !this._isInput) {\n      this._boundInput = this._element.querySelector('input[type=\"hidden\"], input[name]')\n    }\n\n    this._positionElement = this._resolvePositionElement()\n    this._displayElement = this._resolveDisplayElement()\n\n    const calendarOptions = this._buildCalendarOptions()\n\n    // Create calendar on the position element (for correct popup positioning)\n    // but value updates still go to this._element (the input)\n    this._calendar = new Calendar(this._positionElement, calendarOptions)\n    this._calendar.init()\n\n    // Watch for theme changes on ancestor elements (for live theme switching)\n    this._setupThemeObserver()\n\n    // Set initial value if input has a value\n    if (this._isInput && this._element.value) {\n      this._parseInputValue()\n    }\n\n    // Populate input/display with preselected dates\n    this._updateDisplayWithSelectedDates()\n  }\n\n  _updateDisplayWithSelectedDates() {\n    const { selectedDates } = this._config\n    if (!selectedDates || selectedDates.length === 0) {\n      return\n    }\n\n    const formattedDate = this._formatDateForInput(selectedDates)\n\n    if (this._isInput) {\n      this._element.value = formattedDate\n    }\n\n    if (this._boundInput) {\n      this._boundInput.value = selectedDates.join(',')\n    }\n\n    if (this._displayElement) {\n      this._displayElement.textContent = formattedDate\n    }\n  }\n\n  _resolvePositionElement() {\n    let { positionElement } = this._config\n\n    if (typeof positionElement === 'string') {\n      positionElement = document.querySelector(positionElement)\n    }\n\n    // Use input's parent if in form-adorn\n    if (!positionElement && this._isInput && !this._isInline) {\n      const parent = this._element.closest('.form-adorn')\n      if (parent) {\n        positionElement = parent\n      }\n    }\n\n    return positionElement || this._element\n  }\n\n  _resolveDisplayElement() {\n    const { displayElement } = this._config\n\n    if (typeof displayElement === 'string') {\n      return document.querySelector(displayElement)\n    }\n\n    // For buttons/non-inputs (not inline), look for a [data-bs-datepicker-display] child\n    if (displayElement === true || (displayElement === null && !this._isInput && !this._isInline)) {\n      const displayChild = this._element.querySelector('[data-bs-datepicker-display]')\n      return displayChild || this._element\n    }\n\n    return displayElement\n  }\n\n  _getThemeAncestor() {\n    return this._element.closest('[data-bs-theme]')\n  }\n\n  _getEffectiveTheme() {\n    // Priority: explicit datepickerTheme config > inherited from ancestor > none\n    const { datepickerTheme } = this._config\n    if (datepickerTheme) {\n      return datepickerTheme\n    }\n\n    const ancestor = this._getThemeAncestor()\n    return ancestor?.getAttribute('data-bs-theme') || null\n  }\n\n  _syncThemeAttribute(element) {\n    if (!element) {\n      return\n    }\n\n    const theme = this._getEffectiveTheme()\n\n    if (theme) {\n      // Copy theme to popover (needed because VCP appends to body, breaking CSS inheritance)\n      element.setAttribute('data-bs-theme', theme)\n    } else {\n      // No theme - remove attribute to allow natural inheritance\n      element.removeAttribute('data-bs-theme')\n    }\n  }\n\n  _setupThemeObserver() {\n    // Watch for theme changes on ancestor elements\n    const ancestor = this._getThemeAncestor()\n    if (!ancestor || this._config.datepickerTheme) {\n      // No ancestor to watch, or explicit datepickerTheme overrides\n      return\n    }\n\n    this._themeObserver = new MutationObserver(() => {\n      this._syncThemeAttribute(this._calendar?.context?.mainElement)\n    })\n\n    this._themeObserver.observe(ancestor, {\n      attributes: true,\n      attributeFilter: ['data-bs-theme']\n    })\n  }\n\n  _buildCalendarOptions() {\n    // Get theme for VCP - use 'system' for auto-detection if no explicit theme\n    const theme = this._getEffectiveTheme()\n    // VCP uses 'system' for auto, Bootstrap uses 'auto'\n    const vcpTheme = !theme || theme === 'auto' ? 'system' : theme\n\n    const calendarOptions = {\n      ...this._config.vcpOptions,\n      inputMode: !this._isInline,\n      positionToInput: this._config.placement,\n      firstWeekday: this._config.firstWeekday,\n      locale: this._config.locale,\n      selectionDatesMode: this._config.selectionMode,\n      selectedDates: this._config.selectedDates,\n      displayMonthsCount: this._config.displayMonthsCount,\n      type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',\n      selectedTheme: vcpTheme,\n      themeAttrDetect: '[data-bs-theme]',\n      onClickDate: (self, event) => this._handleDateClick(self, event),\n      onInit: self => {\n        this._syncThemeAttribute(self.context.mainElement)\n      },\n      onShow: () => {\n        this._isShown = true\n        this._syncThemeAttribute(this._calendar.context.mainElement)\n      },\n      onHide: () => {\n        this._isShown = false\n      }\n    }\n\n    // Navigate to the month of the first selected date\n    if (this._config.selectedDates.length > 0) {\n      const firstDate = this._parseDate(this._config.selectedDates[0])\n      calendarOptions.selectedMonth = firstDate.getMonth()\n      calendarOptions.selectedYear = firstDate.getFullYear()\n    }\n\n    if (this._config.dateMin) {\n      calendarOptions.dateMin = this._config.dateMin\n    }\n\n    if (this._config.dateMax) {\n      calendarOptions.dateMax = this._config.dateMax\n    }\n\n    return calendarOptions\n  }\n\n  _handleDateClick(self, event) {\n    const selectedDates = [...self.context.selectedDates]\n\n    if (selectedDates.length > 0) {\n      const formattedDate = this._formatDateForInput(selectedDates)\n\n      if (this._isInput) {\n        this._element.value = formattedDate\n      }\n\n      if (this._boundInput) {\n        this._boundInput.value = selectedDates.join(',')\n      }\n\n      if (this._displayElement) {\n        this._displayElement.textContent = formattedDate\n      }\n    }\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      dates: selectedDates,\n      event\n    })\n\n    this._maybeHideAfterSelection(selectedDates)\n  }\n\n  _maybeHideAfterSelection(selectedDates) {\n    if (this._isInline) {\n      return\n    }\n\n    const shouldHide =\n      (this._config.selectionMode === 'single' && selectedDates.length > 0) ||\n      (this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2)\n\n    if (shouldHide) {\n      setTimeout(() => this.hide(), HIDE_DELAY)\n    }\n  }\n\n  _parseDate(dateStr) {\n    const [year, month, day] = dateStr.split('-')\n    return new Date(year, month - 1, day)\n  }\n\n  _formatDate(dateStr) {\n    const date = this._parseDate(dateStr)\n    const locale = this._config.locale === 'default' ? undefined : this._config.locale\n    const { dateFormat } = this._config\n\n    // Custom function formatter\n    if (typeof dateFormat === 'function') {\n      return dateFormat(date, locale)\n    }\n\n    // Intl.DateTimeFormat options object\n    if (dateFormat && typeof dateFormat === 'object') {\n      return new Intl.DateTimeFormat(locale, dateFormat).format(date)\n    }\n\n    // Default: locale-aware formatting\n    return date.toLocaleDateString(locale)\n  }\n\n  _formatDateForInput(dates) {\n    if (dates.length === 0) {\n      return ''\n    }\n\n    if (dates.length === 1) {\n      return this._formatDate(dates[0])\n    }\n\n    // For date ranges, use en-dash; for multiple dates, use comma\n    const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', '\n    return dates.map(d => this._formatDate(d)).join(separator)\n  }\n\n  _parseInputValue() {\n    // Try to parse the input value as a date\n    const value = this._element.value.trim()\n    if (!value) {\n      return\n    }\n\n    const date = new Date(value)\n    if (!Number.isNaN(date.getTime())) {\n      const year = date.getFullYear()\n      const month = String(date.getMonth() + 1).padStart(2, '0')\n      const day = String(date.getDate()).padStart(2, '0')\n      const formatted = `${year}-${month}-${day}`\n      this._calendar.set({ selectedDates: [formatted] })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // Only handle if not an input (inputs use focus)\n  // Skip inline datepickers (they're always visible)\n  if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true') {\n    return\n  }\n\n  event.preventDefault()\n  Datepicker.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE, function () {\n  // Handle focus for input elements\n  if (this.tagName !== 'INPUT') {\n    return\n  }\n\n  Datepicker.getOrCreateInstance(this).show()\n})\n\n// Auto-initialize inline datepickers on DOMContentLoaded\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE}[data-bs-inline=\"true\"]`)) {\n    Datepicker.getOrCreateInstance(element)\n  }\n})\n\nexport default Datepicker\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dialog'\nconst DATA_KEY = 'bs.dialog'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_STATIC = 'dialog-static'\nconst CLASS_NAME_OPEN = 'dialog-open'\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\nconst SELECTOR_OPEN_MODAL_DIALOG = 'dialog.dialog[open]:not(.dialog-nonmodal)'\n\nconst Default = {\n  backdrop: true, // true (click dismisses) or 'static' (click does nothing) - only applies to modal dialogs\n  keyboard: true,\n  modal: true // true uses showModal(), false uses show() for non-modal dialogs\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  modal: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Dialog extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._element.open ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n\n    if (this._config.modal) {\n      // Modal dialog: use showModal() for focus trapping, backdrop, and top layer\n      this._element.showModal()\n      // Prevent body scroll for modal dialogs\n      document.body.classList.add(CLASS_NAME_OPEN)\n    } else {\n      // Non-modal dialog: use show() - no backdrop, no focus trap, no top layer\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n      this._element.show()\n    }\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }, this._element, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n\n    this._queueCallback(() => this._hideDialog(), this._element, this._isAnimated())\n  }\n\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n    super.dispose()\n  }\n\n  handleUpdate() {\n    // Provided for API consistency with Modal.\n    // Native dialogs handle their own positioning.\n  }\n\n  // Private\n  _hideDialog() {\n    this._element.close()\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n    this._isTransitioning = false\n\n    // Only restore body scroll if no other modal dialogs are open\n    if (!document.querySelector(SELECTOR_OPEN_MODAL_DIALOG)) {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n    }\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains('fade')\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      this._element.classList.remove(CLASS_NAME_STATIC)\n    }, this._element)\n  }\n\n  _addEventListeners() {\n    // Handle native cancel event (Escape key) - only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      // Prevent native close behavior - we'll handle it\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_CANCEL)\n      this.hide()\n    })\n\n    // Handle Escape key for non-modal dialogs (native cancel doesn't fire for show())\n    EventHandler.on(this._element, 'keydown', event => {\n      if (event.key !== 'Escape' || this._config.modal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_CANCEL)\n      this.hide()\n    })\n\n    // Handle backdrop clicks (only applies to modal dialogs)\n    // Native <dialog> fires click on the dialog element when backdrop is clicked\n    EventHandler.on(this._element, 'click', event => {\n      // Only handle clicks directly on the dialog (backdrop area)\n      // Non-modal dialogs don't have a backdrop\n      if (event.target !== this._element || !this._config.modal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      // Default: click backdrop to dismiss\n      this.hide()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  // Get config from trigger's data attributes\n  const config = Manipulator.getDataAttributes(this)\n\n  // Check if trigger is inside an open dialog\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Open new dialog first (its backdrop appears over current)\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    newDialog.show(this)\n\n    // Close the current dialog (no backdrop flash since new one is already open)\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      currentInstance.hide()\n    }\n\n    return\n  }\n\n  const data = Dialog.getOrCreateInstance(target, config)\n  data.toggle(this)\n})\n\nenableDismissTrigger(Dialog)\n\nexport default Dialog\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/floating-ui.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isRTL } from './index.js'\n\n/**\n * Breakpoints for responsive placement (matches SCSS $breakpoints)\n */\nexport const BREAKPOINTS = {\n  sm: 576,\n  md: 768,\n  lg: 1024,\n  xl: 1280,\n  '2xl': 1536\n}\n\n/**\n * Default placement with RTL support\n */\nexport const getDefaultPlacement = (fallback = 'bottom') => {\n  if (fallback.includes('-start') || fallback.includes('-end')) {\n    const [side, alignment] = fallback.split('-')\n    const flippedAlignment = alignment === 'start' ? 'end' : 'start'\n    return isRTL() ? `${side}-${flippedAlignment}` : fallback\n  }\n\n  return fallback\n}\n\n/**\n * Parse a placement string that may contain responsive prefixes\n * Example: \"bottom-start md:top-end lg:right\" returns { xs: 'bottom-start', md: 'top-end', lg: 'right' }\n *\n * @param {string} placementString - The placement string to parse\n * @param {string} defaultPlacement - The default placement to use for xs/base\n * @returns {object|null} - Object with breakpoint keys and placement values, or null if not responsive\n */\nexport const parseResponsivePlacement = (placementString, defaultPlacement = 'bottom') => {\n  // Check if placement contains responsive prefixes (e.g., \"bottom-start md:top-end\")\n  if (!placementString || !placementString.includes(':')) {\n    return null\n  }\n\n  // Parse the placement string into breakpoint-keyed object\n  const parts = placementString.split(/\\s+/)\n  const placements = { xs: defaultPlacement } // Default fallback\n\n  for (const part of parts) {\n    if (part.includes(':')) {\n      // Responsive placement like \"md:top-end\"\n      const [breakpoint, placement] = part.split(':')\n      if (BREAKPOINTS[breakpoint] !== undefined) {\n        placements[breakpoint] = placement\n      }\n    } else {\n      // Base placement (no prefix = xs/default)\n      placements.xs = part\n    }\n  }\n\n  return placements\n}\n\n/**\n * Get the active placement for the current viewport width\n *\n * @param {object} responsivePlacements - Object with breakpoint keys and placement values\n * @param {string} defaultPlacement - Fallback placement\n * @returns {string} - The active placement for current viewport\n */\nexport const getResponsivePlacement = (responsivePlacements, defaultPlacement = 'bottom') => {\n  if (!responsivePlacements) {\n    return defaultPlacement\n  }\n\n  // Get current viewport width\n  const viewportWidth = window.innerWidth\n\n  // Find the largest breakpoint that matches\n  let activePlacement = responsivePlacements.xs || defaultPlacement\n\n  // Check breakpoints in order (sm, md, lg, xl, 2xl)\n  const breakpointOrder = ['sm', 'md', 'lg', 'xl', '2xl']\n\n  for (const breakpoint of breakpointOrder) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    if (viewportWidth >= minWidth && responsivePlacements[breakpoint]) {\n      activePlacement = responsivePlacements[breakpoint]\n    }\n  }\n\n  return activePlacement\n}\n\n/**\n * Create media query listeners for responsive placement changes\n *\n * @param {Function} callback - Callback to run when breakpoint changes\n * @returns {Array} - Array of { mql, handler } objects for cleanup\n */\nexport const createBreakpointListeners = callback => {\n  const listeners = []\n\n  for (const breakpoint of Object.keys(BREAKPOINTS)) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    const mql = window.matchMedia(`(min-width: ${minWidth}px)`)\n\n    mql.addEventListener('change', callback)\n    listeners.push({ mql, handler: callback })\n  }\n\n  return listeners\n}\n\n/**\n * Clean up media query listeners\n *\n * @param {Array} listeners - Array of { mql, handler } objects\n */\nexport const disposeBreakpointListeners = listeners => {\n  for (const { mql, handler } of listeners) {\n    mql.removeEventListener('change', handler)\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\nconst RIGHT_MOUSE_BUTTON = 2\n\n// Hover intent delay (ms) - grace period before closing submenu\nconst SUBMENU_CLOSE_DELAY = 100\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_SUBMENU = '.dropdown-submenu'\nconst SELECTOR_SUBMENU_TOGGLE = '.dropdown-submenu > .dropdown-item'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-item:not(.disabled):not(:disabled)'\n\n// Default logical placement (uses start/end which get resolved to left/right based on RTL)\nconst DEFAULT_PLACEMENT = 'bottom-start'\nconst SUBMENU_PLACEMENT = 'end-start'\n\n// Resolve logical placement (start/end) to physical (left/right) based on RTL\nconst resolveLogicalPlacement = placement => {\n  if (isRTL()) {\n    // RTL: start → right, end → left\n    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left')\n  }\n\n  // LTR: start → left, end → right\n  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right')\n}\n\n// Helper for barycentric coordinate calculation (point in triangle check)\nconst triangleSign = (p1, p2, p3) =>\n  ((p1.x - p3.x) * (p2.y - p3.y)) - ((p2.x - p3.x) * (p1.y - p3.y))\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  container: false,\n  display: 'dynamic',\n  offset: [0, 2],\n  floatingConfig: null,\n  placement: DEFAULT_PLACEMENT,\n  reference: 'toggle',\n  strategy: 'absolute',\n  // Submenu options\n  submenuTrigger: 'both', // 'click', 'hover', or 'both'\n  submenuDelay: SUBMENU_CLOSE_DELAY\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  display: 'string',\n  offset: '(array|string|function)',\n  floatingConfig: '(null|object|function)',\n  placement: 'string',\n  reference: '(string|element|object)',\n  strategy: 'string',\n  submenuTrigger: 'string',\n  submenuDelay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s dropdowns require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    this._floatingCleanup = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n    this._parent = this._element.parentNode // dropdown wrapper\n    this._isSubmenu = this._parent.classList.contains('dropdown-submenu')\n    this._openSubmenus = new Map() // Map of submenu element -> cleanup function\n    this._submenuCloseTimeouts = new Map() // Map of submenu element -> timeout ID\n    this._hoverIntentData = null // For safe triangle calculation\n\n    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n    this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n\n    // Store original menu parent for container option\n    this._menuOriginalParent = this._menu?.parentNode\n\n    // Parse responsive placements on init\n    this._parseResponsivePlacements()\n\n    // Set up submenu event listeners\n    this._setupSubmenuListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    // Move menu to container if specified (to escape overflow clipping)\n    this._moveMenuToContainer()\n\n    this._createFloating()\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', 'true')\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    this._parent.classList.add(CLASS_NAME_SHOW)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n    this._disposeMediaQueryListeners()\n    this._closeAllSubmenus()\n    this._clearAllSubmenuTimeouts()\n    super.dispose()\n  }\n\n  update() {\n    if (this._floatingCleanup) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Private\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    // Close all open submenus first\n    this._closeAllSubmenus()\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._disposeFloating()\n\n    // Restore menu to original parent if it was moved\n    this._restoreMenuToOriginalParent()\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._parent.classList.remove(CLASS_NAME_SHOW)\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'placement')\n    Manipulator.removeDataAttribute(this._menu, 'display')\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      // Floating UI virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createFloating() {\n    if (this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'display', 'static')\n      return\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    // Initial position update\n    this._updateFloatingPosition(referenceElement)\n\n    // Set up auto-update for scroll/resize\n    this._floatingCleanup = autoUpdate(\n      referenceElement,\n      this._menu,\n      () => this._updateFloatingPosition(referenceElement)\n    )\n  }\n\n  async _updateFloatingPosition(referenceElement = null) {\n    if (!this._menu) {\n      return\n    }\n\n    if (!referenceElement) {\n      if (this._config.reference === 'parent') {\n        referenceElement = this._parent\n      } else if (isElement(this._config.reference)) {\n        referenceElement = getElement(this._config.reference)\n      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference\n      } else {\n        referenceElement = this._element\n      }\n    }\n\n    const placement = this._getPlacement()\n    const middleware = this._getFloatingMiddleware()\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    await this._applyFloatingPosition(\n      referenceElement,\n      this._menu,\n      floatingConfig.placement,\n      floatingConfig.middleware,\n      floatingConfig.strategy\n    )\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    // If we have responsive placements, find the appropriate one for current viewport\n    const placement = this._responsivePlacements ?\n      getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) :\n      this._config.placement\n\n    // Resolve logical placements (start/end) to physical (left/right) based on RTL\n    return resolveLogicalPlacement(placement)\n  }\n\n  _parseResponsivePlacements() {\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT)\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  _getOffset() {\n    const { offset: offsetConfig } = this._config\n\n    if (typeof offsetConfig === 'string') {\n      return offsetConfig.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offsetConfig === 'function') {\n      // Floating UI passes different args, adapt the interface for offset function callbacks\n      return ({ placement, rects }) => {\n        const result = offsetConfig({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offsetConfig\n  }\n\n  _getFloatingMiddleware() {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      // Offset middleware - handles distance from reference\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      // Flip middleware - handles fallback placements\n      flip({\n        fallbackPlacements: this._getFallbackPlacements()\n      }),\n      // Shift middleware - prevents overflow\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    return middleware\n  }\n\n  _getFallbackPlacements() {\n    // Get appropriate fallback placements based on current placement\n    // Fallbacks should preserve alignment (start/end) when possible\n    const placement = this._getPlacement()\n\n    // Handle all possible Floating UI placements\n    const fallbackMap = {\n      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\n      'bottom-start': ['top-start', 'bottom-end', 'top-end'],\n      'bottom-end': ['top-end', 'bottom-start', 'top-start'],\n      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],\n      'top-start': ['bottom-start', 'top-end', 'bottom-end'],\n      'top-end': ['bottom-end', 'top-start', 'bottom-start'],\n      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],\n      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],\n      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],\n      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],\n      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],\n      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']\n    }\n\n    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left']\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware,\n      strategy: this._config.strategy\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n  }\n\n  _getContainer() {\n    const { container } = this._config\n    if (container === false) {\n      return null\n    }\n\n    return container === true ? document.body : getElement(container)\n  }\n\n  _moveMenuToContainer() {\n    const container = this._getContainer()\n    if (!container || !this._menu) {\n      return\n    }\n\n    // Only move if not already in the container\n    if (this._menu.parentNode !== container) {\n      container.append(this._menu)\n    }\n  }\n\n  _restoreMenuToOriginalParent() {\n    if (!this._menuOriginalParent || !this._menu) {\n      return\n    }\n\n    // Only restore if menu was moved\n    if (this._menu.parentNode !== this._menuOriginalParent) {\n      this._menuOriginalParent.append(this._menu)\n    }\n  }\n\n  // Shared helper for positioning any floating element\n  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {\n    if (!floating.isConnected) {\n      return null\n    }\n\n    const { x, y, placement: finalPlacement } = await computePosition(\n      reference,\n      floating,\n      { placement, middleware, strategy }\n    )\n\n    if (!floating.isConnected) {\n      return null\n    }\n\n    Object.assign(floating.style, {\n      position: strategy,\n      left: `${x}px`,\n      top: `${y}px`,\n      margin: '0'\n    })\n\n    Manipulator.setDataAttribute(floating, 'placement', finalPlacement)\n    return finalPlacement\n  }\n\n  // -------------------------------------------------------------------------\n  // Submenu handling\n  // -------------------------------------------------------------------------\n\n  _setupSubmenuListeners() {\n    // Set up hover listeners for submenu triggers\n    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerEnter(event)\n      })\n\n      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {\n        this._onSubmenuLeave(event)\n      })\n\n      // Track mouse movement for safe triangle calculation\n      EventHandler.on(this._menu, 'mousemove', event => {\n        this._trackMousePosition(event)\n      })\n    }\n\n    // Set up click listener for submenu triggers\n    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerClick(event)\n      })\n    }\n  }\n\n  _onSubmenuTriggerEnter(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    // Cancel any pending close timeout for this submenu\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    // Close other open submenus at the same level\n    this._closeSiblingSubmenus(submenuWrapper)\n\n    // Open this submenu\n    this._openSubmenu(trigger, submenu, submenuWrapper)\n  }\n\n  _onSubmenuLeave(event) {\n    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu || !this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    // Check if we're moving toward the submenu (safe triangle)\n    if (this._isMovingTowardSubmenu(event, submenu)) {\n      return\n    }\n\n    // Schedule submenu close with delay\n    this._scheduleSubmenuClose(submenu, submenuWrapper)\n  }\n\n  _onSubmenuTriggerClick(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    // Toggle submenu\n    if (this._openSubmenus.has(submenu)) {\n      this._closeSubmenu(submenu, submenuWrapper)\n    } else {\n      this._closeSiblingSubmenus(submenuWrapper)\n      this._openSubmenu(trigger, submenu, submenuWrapper)\n    }\n  }\n\n  _openSubmenu(trigger, submenu, submenuWrapper) {\n    if (this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    // Set ARIA attributes\n    trigger.setAttribute('aria-expanded', 'true')\n    trigger.setAttribute('aria-haspopup', 'true')\n\n    // Position and show submenu\n    submenu.classList.add(CLASS_NAME_SHOW)\n    submenuWrapper.classList.add(CLASS_NAME_SHOW)\n\n    // Set up Floating UI positioning for submenu\n    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper)\n    this._openSubmenus.set(submenu, cleanup)\n\n    // Set up mouseenter on submenu to cancel close timeout\n    EventHandler.on(submenu, 'mouseenter', () => {\n      this._cancelSubmenuCloseTimeout(submenu)\n    })\n  }\n\n  _closeSubmenu(submenu, submenuWrapper) {\n    if (!this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    // Close any nested submenus first\n    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, submenu)\n    for (const nested of nestedSubmenus) {\n      const nestedWrapper = nested.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(nested, nestedWrapper)\n    }\n\n    // Get the trigger\n    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper)\n\n    // Clean up Floating UI\n    const cleanup = this._openSubmenus.get(submenu)\n    if (cleanup) {\n      cleanup()\n    }\n\n    this._openSubmenus.delete(submenu)\n\n    // Remove event listeners\n    EventHandler.off(submenu, 'mouseenter')\n\n    // Update ARIA and visibility\n    if (trigger) {\n      trigger.setAttribute('aria-expanded', 'false')\n    }\n\n    submenu.classList.remove(CLASS_NAME_SHOW)\n    submenuWrapper.classList.remove(CLASS_NAME_SHOW)\n\n    // Clear inline styles\n    submenu.style.position = ''\n    submenu.style.left = ''\n    submenu.style.top = ''\n    submenu.style.margin = ''\n  }\n\n  _closeAllSubmenus() {\n    for (const [submenu] of this._openSubmenus) {\n      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(submenu, submenuWrapper)\n    }\n  }\n\n  _closeSiblingSubmenus(currentSubmenuWrapper) {\n    // Find all sibling submenu wrappers and close their menus\n    const parent = currentSubmenuWrapper.parentNode\n    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, parent)\n\n    for (const siblingMenu of siblingSubmenus) {\n      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU)\n      if (siblingWrapper !== currentSubmenuWrapper) {\n        this._closeSubmenu(siblingMenu, siblingWrapper)\n      }\n    }\n  }\n\n  _createSubmenuFloating(trigger, submenu, submenuWrapper) {\n    const referenceElement = submenuWrapper\n    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT)\n    const middleware = [\n      offset({ mainAxis: 0, crossAxis: -4 }),\n      flip({\n        fallbackPlacements: [\n          resolveLogicalPlacement('start-start'),\n          resolveLogicalPlacement('end-end'),\n          resolveLogicalPlacement('start-end')\n        ]\n      }),\n      shift({ padding: 8 })\n    ]\n\n    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware)\n\n    updatePosition()\n    return autoUpdate(referenceElement, submenu, updatePosition)\n  }\n\n  _scheduleSubmenuClose(submenu, submenuWrapper) {\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    const timeoutId = setTimeout(() => {\n      this._closeSubmenu(submenu, submenuWrapper)\n      this._submenuCloseTimeouts.delete(submenu)\n    }, this._config.submenuDelay)\n\n    this._submenuCloseTimeouts.set(submenu, timeoutId)\n  }\n\n  _cancelSubmenuCloseTimeout(submenu) {\n    const timeoutId = this._submenuCloseTimeouts.get(submenu)\n    if (timeoutId) {\n      clearTimeout(timeoutId)\n      this._submenuCloseTimeouts.delete(submenu)\n    }\n  }\n\n  _clearAllSubmenuTimeouts() {\n    for (const timeoutId of this._submenuCloseTimeouts.values()) {\n      clearTimeout(timeoutId)\n    }\n\n    this._submenuCloseTimeouts.clear()\n  }\n\n  // -------------------------------------------------------------------------\n  // Hover intent / Safe triangle\n  // -------------------------------------------------------------------------\n\n  _trackMousePosition(event) {\n    this._hoverIntentData = {\n      x: event.clientX,\n      y: event.clientY,\n      timestamp: Date.now()\n    }\n  }\n\n  _isMovingTowardSubmenu(event, submenu) {\n    if (!this._hoverIntentData) {\n      return false\n    }\n\n    const submenuRect = submenu.getBoundingClientRect()\n    const currentPos = { x: event.clientX, y: event.clientY }\n    const lastPos = { x: this._hoverIntentData.x, y: this._hoverIntentData.y }\n\n    // Create a triangle from current position to submenu edges\n    // The triangle represents the \"safe zone\" for diagonal movement\n    const isRtl = isRTL()\n\n    // Determine which edge of the submenu to target based on direction\n    const targetX = isRtl ? submenuRect.right : submenuRect.left\n    const topCorner = { x: targetX, y: submenuRect.top }\n    const bottomCorner = { x: targetX, y: submenuRect.bottom }\n\n    // Check if cursor is moving toward the submenu\n    // by checking if the current position is within the safe triangle\n    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner)\n  }\n\n  _pointInTriangle(point, v1, v2, v3) {\n    // Barycentric coordinate method to check if point is inside triangle\n    const d1 = triangleSign(point, v1, v2)\n    const d2 = triangleSign(point, v2, v3)\n    const d3 = triangleSign(point, v3, v1)\n\n    const hasNeg = (d1 < 0) || (d2 < 0) || (d3 < 0)\n    const hasPos = (d1 > 0) || (d2 > 0) || (d3 > 0)\n\n    return !(hasNeg && hasPos)\n  }\n\n  // -------------------------------------------------------------------------\n  // Keyboard navigation\n  // -------------------------------------------------------------------------\n\n  _selectMenuItem({ key, target }) {\n    // Get items only from the current menu level (not nested submenus)\n    // If target is inside a menu, use that menu; otherwise use the main menu\n    const currentMenu = target.closest(SELECTOR_MENU) || this._menu\n    const items = SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n      .filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  _handleSubmenuKeydown(event) {\n    const { key, target } = event\n    const isRtl = isRTL()\n\n    // Determine the \"enter submenu\" and \"exit submenu\" keys based on RTL\n    const enterKey = isRtl ? ARROW_LEFT_KEY : ARROW_RIGHT_KEY\n    const exitKey = isRtl ? ARROW_RIGHT_KEY : ARROW_LEFT_KEY\n\n    // Check if target is a submenu trigger\n    const submenuWrapper = target.closest(SELECTOR_SUBMENU)\n    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    // Handle Enter/Space on submenu trigger\n    if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        // Focus first item in submenu\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    // Handle Right arrow (or Left in RTL) - enter submenu\n    if (key === enterKey && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        // Focus first item in submenu\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    // Handle Left arrow (or Right in RTL) - exit submenu\n    if (key === exitKey) {\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper) {\n        event.preventDefault()\n        event.stopPropagation()\n\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        this._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return true\n      }\n    }\n\n    // Handle Home/End keys\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const items = SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n        .filter(element => isVisible(element))\n\n      if (items.length) {\n        const targetItem = key === HOME_KEY ? items[0] : items[items.length - 1]\n        targetItem.focus()\n      }\n\n      return true\n    }\n\n    return false\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n    for (const toggle of openToggles) {\n      const context = Dropdown.getInstance(toggle)\n      if (!context || context._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(context._menu)\n      if (\n        composedPath.includes(context._element) ||\n        (context._config.autoClose === 'inside' && !isMenuTarget) ||\n        (context._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n      if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: context._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      context._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    // If not a relevant key => not a dropdown command\n    const isInput = /input|textarea/i.test(event.target.tagName)\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n    const isLeftOrRightEvent = [ARROW_LEFT_KEY, ARROW_RIGHT_KEY].includes(event.key)\n    const isHomeOrEndEvent = [HOME_KEY, END_KEY].includes(event.key)\n    const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key)\n\n    // Allow Enter/Space only on submenu triggers\n    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent &&\n        !(isEnterOrSpaceEvent && isSubmenuTrigger)) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    if (!getToggleButton) {\n      return\n    }\n\n    const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n    // Handle submenu navigation first\n    if ((isLeftOrRightEvent || isHomeOrEndEvent || (isEnterOrSpaceEvent && isSubmenuTrigger)) && instance._handleSubmenuKeydown(event)) {\n      return\n    }\n\n    // Handle Up/Down navigation\n    if (isUpOrDownEvent) {\n      event.preventDefault()\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    // Handle Escape\n    if (isEscapeEvent && instance._isShown()) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      // If in a submenu, close just that submenu\n      const currentMenu = event.target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        instance._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return\n      }\n\n      // Otherwise close the whole dropdown\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Dropdown.getOrCreateInstance(this).toggle()\n})\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap nav-overflow.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'navoverflow'\nconst DATA_KEY = 'bs.navoverflow'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_UPDATE = `update${EVENT_KEY}`\nconst EVENT_OVERFLOW = `overflow${EVENT_KEY}`\n\nconst CLASS_NAME_OVERFLOW = 'nav-overflow'\nconst CLASS_NAME_OVERFLOW_MENU = 'nav-overflow-menu'\nconst CLASS_NAME_HIDDEN = 'd-none'\n\nconst SELECTOR_NAV_ITEM = '.nav-item'\nconst SELECTOR_NAV_LINK = '.nav-link'\nconst SELECTOR_OVERFLOW_TOGGLE = '.nav-overflow-toggle'\nconst SELECTOR_OVERFLOW_MENU = '.nav-overflow-menu'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  moreText: 'More',\n  moreIcon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\"><path d=\"M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3\"/></svg>',\n  threshold: 0 // Minimum items to keep visible before showing overflow\n}\n\nconst DefaultType = {\n  moreText: 'string',\n  moreIcon: 'string',\n  threshold: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass NavOverflow extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._items = []\n    this._overflowItems = []\n    this._overflowMenu = null\n    this._overflowToggle = null\n    this._resizeObserver = null\n    this._isInitialized = false\n\n    this._init()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._calculateOverflow()\n    EventHandler.trigger(this._element, EVENT_UPDATE)\n  }\n\n  dispose() {\n    if (this._resizeObserver) {\n      this._resizeObserver.disconnect()\n    }\n\n    // Move items back to original positions\n    this._restoreItems()\n\n    // Remove overflow menu\n    if (this._overflowToggle && this._overflowToggle.parentElement) {\n      this._overflowToggle.parentElement.remove()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _init() {\n    // Add overflow class to nav\n    this._element.classList.add(CLASS_NAME_OVERFLOW)\n\n    // Get all nav items\n    this._items = [...SelectorEngine.find(SELECTOR_NAV_ITEM, this._element)]\n\n    // Store original order data\n    for (const [index, item] of this._items.entries()) {\n      item.dataset.bsNavOrder = index\n    }\n\n    // Create overflow dropdown if it doesn't exist\n    this._createOverflowMenu()\n\n    // Setup resize observer\n    this._setupResizeObserver()\n\n    // Initial calculation\n    this._calculateOverflow()\n\n    this._isInitialized = true\n  }\n\n  _createOverflowMenu() {\n    // Check if overflow menu already exists\n    this._overflowToggle = SelectorEngine.findOne(SELECTOR_OVERFLOW_TOGGLE, this._element)\n\n    if (this._overflowToggle) {\n      this._overflowMenu = SelectorEngine.findOne(SELECTOR_OVERFLOW_MENU, this._element)\n      return\n    }\n\n    // Create the overflow dropdown item\n    const overflowItem = document.createElement('li')\n    overflowItem.className = 'nav-item nav-overflow-item dropdown'\n    overflowItem.innerHTML = `\n      <button class=\"nav-link nav-overflow-toggle dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" data-bs-container=\"body\" data-bs-strategy=\"fixed\" aria-expanded=\"false\">\n        <span class=\"nav-overflow-icon\">${this._config.moreIcon}</span>\n        <span class=\"nav-overflow-text\">${this._config.moreText}</span>\n      </button>\n      <ul class=\"${CLASS_NAME_OVERFLOW_MENU} dropdown-menu dropdown-menu-end\"></ul>\n    `\n\n    this._element.append(overflowItem)\n    this._overflowToggle = overflowItem.querySelector(SELECTOR_OVERFLOW_TOGGLE)\n    this._overflowMenu = overflowItem.querySelector(SELECTOR_OVERFLOW_MENU)\n  }\n\n  _setupResizeObserver() {\n    if (typeof ResizeObserver === 'undefined') {\n      // Fallback for older browsers\n      EventHandler.on(window, 'resize', () => this._calculateOverflow())\n      return\n    }\n\n    this._resizeObserver = new ResizeObserver(() => {\n      this._calculateOverflow()\n    })\n\n    this._resizeObserver.observe(this._element)\n  }\n\n  _calculateOverflow() {\n    // First, restore all items to measure properly\n    this._restoreItems()\n\n    const navWidth = this._element.offsetWidth\n    const overflowItem = this._overflowToggle?.closest('.nav-item')\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      const itemWidth = item.offsetWidth\n      usedWidth += itemWidth\n\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      if (usedWidth > overflowThreshold) {\n        itemsToOverflow.push(item)\n      }\n    }\n\n    // Check if we need threshold minimum visible\n    const visibleCount = this._items.length - itemsToOverflow.length\n    if (visibleCount < this._config.threshold && this._items.length > this._config.threshold) {\n      // Add more items to overflow until we reach threshold (but not keep items)\n      const toMove = this._items.slice(this._config.threshold).filter(item => !item.classList.contains(CLASS_NAME_KEEP))\n      itemsToOverflow.length = 0\n      itemsToOverflow.push(...toMove)\n    }\n\n    // Move items to overflow menu\n    this._moveToOverflow(itemsToOverflow)\n\n    // Show/hide overflow toggle\n    if (overflowItem) {\n      if (itemsToOverflow.length > 0) {\n        overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n      } else {\n        overflowItem.classList.add(CLASS_NAME_HIDDEN)\n      }\n    }\n\n    // Trigger overflow event if items changed\n    if (itemsToOverflow.length > 0) {\n      EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n        overflowCount: itemsToOverflow.length,\n        visibleCount: this._items.length - itemsToOverflow.length\n      })\n    }\n  }\n\n  _moveToOverflow(items) {\n    if (!this._overflowMenu) {\n      return\n    }\n\n    // Clear existing overflow items\n    this._overflowMenu.innerHTML = ''\n    this._overflowItems = []\n\n    for (const item of items) {\n      // Clone the nav link as a dropdown item\n      const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item)\n      if (!link) {\n        continue\n      }\n\n      const dropdownItem = document.createElement('li')\n      const clonedLink = link.cloneNode(true)\n      clonedLink.className = 'dropdown-item'\n\n      // Preserve active state\n      if (link.classList.contains('active')) {\n        clonedLink.classList.add('active')\n      }\n\n      // Preserve disabled state\n      if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {\n        clonedLink.classList.add('disabled')\n      }\n\n      dropdownItem.append(clonedLink)\n      this._overflowMenu.append(dropdownItem)\n\n      // Hide original item\n      item.classList.add(CLASS_NAME_HIDDEN)\n      item.dataset.bsNavOverflow = 'true'\n\n      this._overflowItems.push(item)\n    }\n  }\n\n  _restoreItems() {\n    for (const item of this._items) {\n      item.classList.remove(CLASS_NAME_HIDDEN)\n      delete item.dataset.bsNavOverflow\n    }\n\n    if (this._overflowMenu) {\n      this._overflowMenu.innerHTML = ''\n    }\n\n    this._overflowItems = []\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const element of SelectorEngine.find('[data-bs-toggle=\"nav-overflow\"]')) {\n    NavOverflow.getOrCreateInstance(element)\n  }\n})\n\nexport default NavOverflow\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport {\n  execute, executeAfterTransition, getElement, reflow\n} from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n  className: 'modal-backdrop',\n  clickCallback: null,\n  isAnimated: false,\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n  className: 'string',\n  clickCallback: '(function|null)',\n  isAnimated: 'boolean',\n  isVisible: 'boolean',\n  rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    const element = this._getElement()\n    if (this._config.isAnimated) {\n      reflow(element)\n    }\n\n    element.classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  // Private\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = this._config.className\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _configAfterMerge(config) {\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    const element = this._getElement()\n    this._config.rootElement.append(element)\n\n    EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n  autofocus: true,\n  trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n  autofocus: 'boolean',\n  trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isActive = false\n    this._lastTabNavDirection = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  activate() {\n    if (this._isActive) {\n      return\n    }\n\n    if (this._config.autofocus) {\n      this._config.trapElement.focus()\n    }\n\n    EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n    this._isActive = true\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return\n    }\n\n    this._isActive = false\n    EventHandler.off(document, EVENT_KEY)\n  }\n\n  // Private\n  _handleFocusin(event) {\n    const { trapElement } = this._config\n\n    if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n      return\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement)\n\n    if (elements.length === 0) {\n      trapElement.focus()\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus()\n    } else {\n      elements[0].focus()\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n  }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  // Public\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n\n  // Private\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProperty, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProperty)\n      const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n      element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _saveInitialAttribute(element, styleProperty) {\n    const actualValue = element.style.getPropertyValue(styleProperty)\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProperty, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProperty) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProperty)\n      // We only want to remove the property if the value is `null`; the value can also be zero\n      if (value === null) {\n        element.style.removeProperty(styleProperty)\n        return\n      }\n\n      Manipulator.removeDataAttribute(element, styleProperty)\n      element.style.setProperty(styleProperty, value)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n      return\n    }\n\n    for (const sel of SelectorEngine.find(selector, this._element)) {\n      callBack(sel)\n    }\n  }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n  isDisabled,\n  isVisible\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n    }\n\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    const completeCallBack = () => {\n      if (!this._config.scroll || this._config.backdrop) {\n        this._focustrap.activate()\n      }\n\n      this._element.classList.add(CLASS_NAME_SHOW)\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._focustrap.deactivate()\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.add(CLASS_NAME_HIDING)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  // Private\n  _initializeBackDrop() {\n    const clickCallback = () => {\n      if (this._config.backdrop === 'static') {\n        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n        return\n      }\n\n      this.hide()\n    }\n\n    // 'static' option will be translated to true, and booleans will keep their value\n    const isVisible = Boolean(this._config.backdrop)\n\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: isVisible ? clickCallback : null\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (event.key !== ESCAPE_KEY) {\n        return\n      }\n\n      if (this._config.keyboard) {\n        this.hide()\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (alreadyOpen && alreadyOpen !== target) {\n    Offcanvas.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n    Offcanvas.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Offcanvas.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap strength.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'strength'\nconst DATA_KEY = 'bs.strength'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_STRENGTH_CHANGE = `strengthChange${EVENT_KEY}`\n\nconst SELECTOR_DATA_STRENGTH = '[data-bs-strength]'\n\nconst STRENGTH_LEVELS = ['weak', 'fair', 'good', 'strong']\n\nconst Default = {\n  input: null, // Selector or element for password input\n  minLength: 8,\n  messages: {\n    weak: 'Weak',\n    fair: 'Fair',\n    good: 'Good',\n    strong: 'Strong'\n  },\n  weights: {\n    minLength: 1,\n    extraLength: 1,\n    lowercase: 1,\n    uppercase: 1,\n    numbers: 1,\n    special: 1,\n    multipleSpecial: 1,\n    longPassword: 1\n  },\n  thresholds: [2, 4, 6], // weak ≤2, fair ≤4, good ≤6, strong >6\n  scorer: null // Custom scoring function (password) => number\n}\n\nconst DefaultType = {\n  input: '(string|element|null)',\n  minLength: 'number',\n  messages: 'object',\n  weights: 'object',\n  thresholds: 'array',\n  scorer: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Strength extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = this._getInput()\n    this._segments = SelectorEngine.find('.strength-segment', this._element)\n    this._textElement = SelectorEngine.findOne('.strength-text', this._element.parentElement)\n    this._currentStrength = null\n\n    if (this._input) {\n      this._addEventListeners()\n      // Check initial value\n      this._evaluate()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getStrength() {\n    return this._currentStrength\n  }\n\n  evaluate() {\n    this._evaluate()\n  }\n\n  // Private\n  _getInput() {\n    if (this._config.input) {\n      return typeof this._config.input === 'string' ?\n        SelectorEngine.findOne(this._config.input) :\n        this._config.input\n    }\n\n    // Look for preceding password input\n    const parent = this._element.parentElement\n    return SelectorEngine.findOne('input[type=\"password\"]', parent)\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, 'input', () => this._evaluate())\n    EventHandler.on(this._input, 'change', () => this._evaluate())\n  }\n\n  _evaluate() {\n    const password = this._input.value\n    const score = this._calculateScore(password)\n    const strength = this._scoreToStrength(score)\n\n    if (strength !== this._currentStrength) {\n      this._currentStrength = strength\n      this._updateUI(strength, score)\n\n      EventHandler.trigger(this._element, EVENT_STRENGTH_CHANGE, {\n        strength,\n        score,\n        password: password.length > 0 ? '***' : '' // Don't expose actual password\n      })\n    }\n  }\n\n  _calculateScore(password) {\n    if (!password) {\n      return 0\n    }\n\n    // Use custom scorer if provided\n    if (typeof this._config.scorer === 'function') {\n      return this._config.scorer(password)\n    }\n\n    const { weights } = this._config\n    let score = 0\n\n    // Length scoring\n    if (password.length >= this._config.minLength) {\n      score += weights.minLength\n    }\n\n    if (password.length >= this._config.minLength + 4) {\n      score += weights.extraLength\n    }\n\n    // Character variety\n    if (/[a-z]/.test(password)) {\n      score += weights.lowercase\n    }\n\n    if (/[A-Z]/.test(password)) {\n      score += weights.uppercase\n    }\n\n    if (/\\d/.test(password)) {\n      score += weights.numbers\n    }\n\n    // Special characters\n    if (/[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.special\n    }\n\n    // Extra points for more special chars or length\n    if (/[!@#$%^&*(),.?\":{}|<>].*[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.multipleSpecial\n    }\n\n    if (password.length >= 16) {\n      score += weights.longPassword\n    }\n\n    return score\n  }\n\n  _scoreToStrength(score) {\n    if (score === 0) {\n      return null\n    }\n\n    const [weak, fair, good] = this._config.thresholds\n\n    if (score <= weak) {\n      return 'weak'\n    }\n\n    if (score <= fair) {\n      return 'fair'\n    }\n\n    if (score <= good) {\n      return 'good'\n    }\n\n    return 'strong'\n  }\n\n  _updateUI(strength) {\n    // Update data attribute on element\n    if (strength) {\n      this._element.dataset.bsStrength = strength\n    } else {\n      delete this._element.dataset.bsStrength\n    }\n\n    // Update segmented meter\n    const strengthIndex = strength ? STRENGTH_LEVELS.indexOf(strength) : -1\n\n    for (const [index, segment] of this._segments.entries()) {\n      if (index <= strengthIndex) {\n        segment.classList.add('active')\n      } else {\n        segment.classList.remove('active')\n      }\n    }\n\n    // Update text feedback\n    if (this._textElement) {\n      if (strength && this._config.messages[strength]) {\n        this._textElement.textContent = this._config.messages[strength]\n        this._textElement.dataset.bsStrength = strength\n\n        // Also set the color via inheriting from parent or using CSS variable\n        const colorMap = {\n          weak: 'danger',\n          fair: 'warning',\n          good: 'info',\n          strong: 'success'\n        }\n        this._textElement.style.setProperty('--strength-color', `var(--${colorMap[strength]}-text)`)\n      } else {\n        this._textElement.textContent = ''\n        delete this._textElement.dataset.bsStrength\n      }\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_STRENGTH)) {\n    Strength.getOrCreateInstance(element)\n  }\n})\n\nexport default Strength\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap otp-input.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'otpInput'\nconst DATA_KEY = 'bs.otp-input'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\nconst Default = {\n  length: 6,\n  mask: false\n}\n\nconst DefaultType = {\n  length: 'number',\n  mask: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._inputs = SelectorEngine.find(SELECTOR_INPUT, this._element)\n    this._setupInputs()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getValue() {\n    return this._inputs.map(input => input.value).join('')\n  }\n\n  setValue(value) {\n    const chars = String(value).split('')\n    for (const [index, input] of this._inputs.entries()) {\n      input.value = chars[index] || ''\n    }\n\n    this._checkComplete()\n  }\n\n  clear() {\n    for (const input of this._inputs) {\n      input.value = ''\n    }\n\n    this._inputs[0]?.focus()\n  }\n\n  focus() {\n    // Focus first empty input, or last input if all filled\n    const emptyInput = this._inputs.find(input => !input.value)\n    if (emptyInput) {\n      emptyInput.focus()\n    } else {\n      this._inputs.at(-1)?.focus()\n    }\n  }\n\n  // Private\n  _setupInputs() {\n    for (const input of this._inputs) {\n      // Set attributes for proper OTP handling\n      input.setAttribute('maxlength', '1')\n      input.setAttribute('inputmode', 'numeric')\n      input.setAttribute('pattern', '\\\\d*')\n\n      // First input gets autocomplete for browser OTP autofill\n      if (input === this._inputs[0]) {\n        input.setAttribute('autocomplete', 'one-time-code')\n      } else {\n        input.setAttribute('autocomplete', 'off')\n      }\n\n      // Mask input if configured\n      if (this._config.mask) {\n        input.setAttribute('type', 'password')\n      }\n    }\n  }\n\n  _addEventListeners() {\n    for (const [index, input] of this._inputs.entries()) {\n      EventHandler.on(input, 'input', event => this._handleInput(event, index))\n      EventHandler.on(input, 'keydown', event => this._handleKeydown(event, index))\n      EventHandler.on(input, 'paste', event => this._handlePaste(event))\n      EventHandler.on(input, 'focus', event => this._handleFocus(event))\n    }\n  }\n\n  _handleInput(event, index) {\n    const input = event.target\n\n    // Only allow digits\n    if (!/^\\d*$/.test(input.value)) {\n      input.value = input.value.replace(/\\D/g, '')\n    }\n\n    const { value } = input\n\n    // Handle multi-character input (some browsers/autofill)\n    if (value.length > 1) {\n      // Distribute characters across inputs\n      const chars = value.split('')\n      input.value = chars[0] || ''\n\n      for (let i = 1; i < chars.length && index + i < this._inputs.length; i++) {\n        this._inputs[index + i].value = chars[i]\n      }\n\n      // Focus appropriate input\n      const nextIndex = Math.min(index + chars.length, this._inputs.length - 1)\n      this._inputs[nextIndex].focus()\n    } else if (value && index < this._inputs.length - 1) {\n      // Auto-advance to next input\n      this._inputs[index + 1].focus()\n    }\n\n    EventHandler.trigger(this._element, EVENT_INPUT, {\n      value: this.getValue(),\n      index\n    })\n\n    this._checkComplete()\n  }\n\n  _handleKeydown(event, index) {\n    const { key } = event\n\n    switch (key) {\n      case 'Backspace': {\n        if (!this._inputs[index].value && index > 0) {\n          // Move to previous input and clear it\n          event.preventDefault()\n          this._inputs[index - 1].value = ''\n          this._inputs[index - 1].focus()\n        }\n\n        break\n      }\n\n      case 'Delete': {\n        // Clear current and shift remaining values left\n        event.preventDefault()\n        for (let i = index; i < this._inputs.length - 1; i++) {\n          this._inputs[i].value = this._inputs[i + 1].value\n        }\n\n        this._inputs.at(-1).value = ''\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (index > 0) {\n          event.preventDefault()\n          this._inputs[index - 1].focus()\n        }\n\n        break\n      }\n\n      case 'ArrowRight': {\n        if (index < this._inputs.length - 1) {\n          event.preventDefault()\n          this._inputs[index + 1].focus()\n        }\n\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handlePaste(event) {\n    event.preventDefault()\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    const digits = pastedData.replace(/\\D/g, '').slice(0, this._inputs.length)\n\n    if (digits) {\n      this.setValue(digits)\n\n      // Focus last filled input or last input\n      const lastIndex = Math.min(digits.length, this._inputs.length) - 1\n      this._inputs[lastIndex].focus()\n    }\n  }\n\n  _handleFocus(event) {\n    // Select the content on focus for easy replacement\n    event.target.select()\n  }\n\n  _checkComplete() {\n    const value = this.getValue()\n    const isComplete = value.length === this._inputs.length &&\n      this._inputs.every(input => input.value !== '')\n\n    if (isComplete) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  dd: [],\n  div: [],\n  dl: [],\n  dt: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n      continue\n    }\n\n    const attributeList = [].concat(...element.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [undefined, this])\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  arrow,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport {\n  execute, findShadowRoot, getElement, getUID, isRTL, noop\n} from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tooltip\"]'\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 6],\n  placement: 'top',\n  floatingConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  floatingConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._floatingCleanup = null\n    this._templateFactory = null\n    this._newContent = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n\n    // Protected\n    this.tip = null\n\n    this._parseResponsivePlacements()\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposeFloating()\n    this._disposeMediaQueryListeners()\n    super.dispose()\n  }\n\n  async show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    this._disposeFloating()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    const { container } = this._config\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    await this._createFloating(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposeFloating()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._floatingCleanup && this.tip) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle())\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposeFloating()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement(tip) {\n    // If we have responsive placements, get the one for current viewport\n    if (this._responsivePlacements) {\n      const placement = getResponsivePlacement(this._responsivePlacements, 'top')\n      return AttachmentMap[placement.toUpperCase()] || placement\n    }\n\n    // Execute placement (can be a function)\n    const placement = execute(this._config.placement, [this, tip, this._element])\n    return AttachmentMap[placement.toUpperCase()] || placement\n  }\n\n  _parseResponsivePlacements() {\n    // Only parse if placement is a string (not a function)\n    if (typeof this._config.placement !== 'string') {\n      this._responsivePlacements = null\n      return\n    }\n\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, 'top')\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  async _createFloating(tip) {\n    const placement = this._getPlacement(tip)\n    const arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n\n    // Initial position update\n    await this._updateFloatingPosition(tip, placement, arrowElement)\n\n    // Set up auto-update for scroll/resize\n    this._floatingCleanup = autoUpdate(\n      this._element,\n      tip,\n      () => this._updateFloatingPosition(tip, null, arrowElement)\n    )\n  }\n\n  async _updateFloatingPosition(tip = this.tip, placement = null, arrowElement = null) {\n    if (!tip) {\n      return\n    }\n\n    if (!placement) {\n      placement = this._getPlacement(tip)\n    }\n\n    if (!arrowElement) {\n      arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n    }\n\n    const middleware = this._getFloatingMiddleware(arrowElement)\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    const { x, y, placement: finalPlacement, middlewareData } = await computePosition(\n      this._element,\n      tip,\n      floatingConfig\n    )\n\n    // Apply position to tooltip\n    Object.assign(tip.style, {\n      position: 'absolute',\n      left: `${x}px`,\n      top: `${y}px`\n    })\n\n    // Ensure arrow is absolutely positioned within tooltip\n    if (arrowElement) {\n      arrowElement.style.position = 'absolute'\n    }\n\n    // Set placement attribute for CSS arrow styling\n    Manipulator.setDataAttribute(tip, 'placement', finalPlacement)\n\n    // Position arrow along the edge (center it) if present\n    // The CSS handles which edge to place it on via data-bs-placement\n    if (arrowElement && middlewareData.arrow) {\n      const { x: arrowX, y: arrowY } = middlewareData.arrow\n      const isVertical = finalPlacement.startsWith('top') || finalPlacement.startsWith('bottom')\n\n      // Only set the cross-axis position (centering along the edge)\n      // The main-axis position (which edge) is handled by CSS\n      Object.assign(arrowElement.style, {\n        left: isVertical && arrowX !== null ? `${arrowX}px` : '',\n        top: !isVertical && arrowY !== null ? `${arrowY}px` : '',\n        // Reset the other axis to let CSS handle it\n        right: '',\n        bottom: ''\n      })\n    }\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      // Floating UI passes different args, adapt the interface for offset function callbacks\n      return ({ placement, rects }) => {\n        const result = offset({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this._element, this._element])\n  }\n\n  _getFloatingMiddleware(arrowElement) {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      // Offset middleware - handles distance from reference\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      // Flip middleware - handles fallback placements\n      flip({\n        fallbackPlacements: this._config.fallbackPlacements\n      }),\n      // Shift middleware - prevents overflow\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    // Arrow middleware - positions the arrow element\n    if (arrowElement) {\n      middleware.push(arrow({ element: arrowElement }))\n    }\n\n    return middleware\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK])\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const [key, value] of Object.entries(this._config)) {\n      if (this.constructor.Default[key] !== value) {\n        config[key] = value\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n}\n\n/**\n * Data API implementation - auto-initialize tooltips\n */\n\nconst initTooltip = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Get or create instance and trigger the appropriate action\n  const tooltip = Tooltip.getOrCreateInstance(target)\n\n  // For focus events, manually trigger enter to show\n  if (event.type === 'focusin') {\n    tooltip._activeTrigger.focus = true\n    tooltip._enter()\n  }\n}\n\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initTooltip)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initTooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"popover\"]'\n\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_MOUSEENTER = 'mouseenter'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return this._getTitle() || this._getContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n}\n\n/**\n * Data API implementation - auto-initialize popovers\n */\n\nconst initPopover = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Prevent default for click events to avoid navigation\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Get or create instance\n  const popover = Popover.getOrCreateInstance(target)\n\n  // Trigger the appropriate action based on event type\n  if (event.type === 'click') {\n    popover.toggle()\n  } else if (event.type === 'focusin') {\n    popover._activeTrigger.focus = true\n    popover._enter()\n  }\n}\n\n// Support click (default), hover, and focus triggers\nEventHandler.on(document, EVENT_CLICK, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initPopover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n  rootMargin: '0px 0px -25%',\n  smoothScroll: false,\n  target: null,\n  threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n  rootMargin: 'string',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n    this._activeTarget = null\n    this._observer = null\n    this._previousScrollData = {\n      visibleEntryTop: 0,\n      parentScrollTop: 0\n    }\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    } else {\n      this._observer = this._getNewObserver()\n    }\n\n    for (const section of this._observableSections.values()) {\n      this._observer.observe(section)\n    }\n  }\n\n  dispose() {\n    this._observer.disconnect()\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.target = getElement(config.target) || document.body\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // unregister any previous listeners\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const observableSection = this._observableSections.get(event.target.hash)\n      if (observableSection) {\n        event.preventDefault()\n        const root = this._rootElement || window\n        const height = observableSection.offsetTop - this._element.offsetTop\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'smooth' })\n          return\n        }\n\n        // Chrome 60 doesn't support `scrollTo`\n        root.scrollTop = height\n      }\n    })\n  }\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin\n    }\n\n    return new IntersectionObserver(entries => this._observerCallback(entries), options)\n  }\n\n  // The logic of selection\n  _observerCallback(entries) {\n    const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n    const activate = entry => {\n      this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n      this._process(targetElement(entry))\n    }\n\n    const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n    const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n    this._previousScrollData.parentScrollTop = parentScrollTop\n\n    for (const entry of entries) {\n      if (!entry.isIntersecting) {\n        this._activeTarget = null\n        this._clearActiveClass(targetElement(entry))\n\n        continue\n      }\n\n      const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n      // if we are scrolling down, pick the bigger offsetTop\n      if (userScrollsDown && entryIsLowerThanPrevious) {\n        activate(entry)\n        // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n        if (!parentScrollTop) {\n          return\n        }\n\n        continue\n      }\n\n      // if we are scrolling up, pick the smallest offsetTop\n      if (!userScrollsDown && !entryIsLowerThanPrevious) {\n        activate(entry)\n      }\n    }\n  }\n\n  _initializeTargetsAndObservables() {\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n    for (const anchor of targetLinks) {\n      // ensure that the anchor has an id and is not disabled\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element)\n\n      // ensure that the observableSection exists & is visible\n      if (isVisible(observableSection)) {\n        this._targetLinks.set(decodeURI(anchor.hash), anchor)\n        this._observableSections.set(anchor.hash, observableSection)\n      }\n    }\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate dropdown parents\n    if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n        .classList.add(CLASS_NAME_ACTIVE)\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_TAB_PANEL}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleDropDown(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleDropDown(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n\n    const children = this._getChildren().filter(element => !isDisabled(element))\n    let nextActiveElement\n\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n    }\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n    }\n  }\n\n  _toggleDropDown(element, open) {\n    const outerElem = this._getOuterElement(element)\n    if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n      return\n    }\n\n    const toggle = (selector, className) => {\n      const element = SelectorEngine.findOne(selector, outerElem)\n      if (element) {\n        element.classList.toggle(className, open)\n      }\n    }\n\n    toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n    toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n    outerElem.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toggler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { eventActionOnPlugin } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toggler'\nconst DATA_KEY = 'bs.toggler'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_TOGGLE = `toggle${EVENT_KEY}`\nconst EVENT_TOGGLED = `toggled${EVENT_KEY}`\nconst EVENT_CLICK = 'click'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"toggler\"]'\n\nconst DefaultType = {\n  attribute: 'string',\n  value: '(string|number|boolean)'\n}\n\nconst Default = {\n  attribute: 'class',\n  value: null\n}\n\n/**\n * Class definition\n */\n\nclass Toggler extends BaseComponent {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    const toggleEvent = EventHandler.trigger(this._element, EVENT_TOGGLE)\n\n    if (toggleEvent.defaultPrevented) {\n      return\n    }\n\n    this._execute()\n\n    EventHandler.trigger(this._element, EVENT_TOGGLED)\n  }\n\n  // Private\n  _execute() {\n    const { attribute, value } = this._config\n\n    if (attribute === 'id') {\n      return // You have to be kidding\n    }\n\n    if (attribute === 'class') {\n      this._element.classList.toggle(value)\n      return\n    }\n\n    // Compare as strings since getAttribute() always returns a string\n    if (this._element.getAttribute(attribute) === String(value)) {\n      this._element.removeAttribute(attribute)\n      return\n    }\n\n    this._element.setAttribute(attribute, value)\n  }\n}\n\n/**\n * Data API implementation\n */\n\neventActionOnPlugin(Toggler, EVENT_CLICK, SELECTOR_DATA_TOGGLE, 'toggle')\n\nexport default Toggler\n"],"names":["elementMap","Map","set","element","key","instance","has","instanceMap","get","size","console","error","Array","from","keys","remove","delete","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","bootstrapHandler","fn","handler","event","hydrateObj","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","selector","domElements","querySelectorAll","target","parentNode","domElement","findHandler","events","callable","delegationSelector","Object","values","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","replace","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","length","elementEvent","slice","keyHandlers","trigger","args","evt","Event","bubbles","cancelable","dispatchEvent","obj","meta","value","defineProperty","configurable","normalizeData","Number","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","getAttribute","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","window","CSS","escape","match","id","toType","object","undefined","prototype","getUID","prefix","Math","floor","random","document","getElementById","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","isElement","nodeType","getElement","querySelector","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","isDisabled","Node","ELEMENT_NODE","classList","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","isRTL","dir","execute","possibleCallback","defaultValue","executeAfterTransition","callback","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","Config","Default","DefaultType","NAME","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","VERSION","BaseComponent","_element","_config","Data","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","eventName","name","getSelector","hrefAttribute","trim","map","sel","join","SelectorEngine","concat","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","preventDefault","eventActionOnPlugin","Plugin","onEvent","stringSelector","eventAction","data","instances","targets","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","closeEvent","defaultPrevented","_destroyElement","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","button","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","touches","clientX","_eventIsPointerPenTouch","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM_IMG","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","KEY_TO_DIRECTION","interval","keyboard","pause","ride","touch","wrap","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","visibilityState","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","_addTouchEventListeners","img","endCallBack","clearTimeout","swipeConfig","_directionToOrder","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","_orderToDirection","slideEvent","isCycling","directionalClassName","orderClassName","completeCallBack","_isAnimated","clearInterval","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","startEvent","activeInstance","dimension","_getDimension","style","complete","capitalizedDimension","scrollSize","getBoundingClientRect","selected","triggerArray","isOpen","EVENT_CHANGE","EVENT_FOCUSIN_DATA_API","HIDE_DELAY","datepickerTheme","dateMin","dateMax","dateFormat","displayElement","displayMonthsCount","firstWeekday","inline","locale","positionElement","selectedDates","selectionMode","placement","vcpOptions","Datepicker","_calendar","_initCalendar","showEvent","hideEvent","_themeObserver","disconnect","destroy","getSelectedDates","dates","context","setSelectedDates","_isInput","_isInline","_boundInput","_positionElement","_resolvePositionElement","_displayElement","_resolveDisplayElement","calendarOptions","_buildCalendarOptions","Calendar","init","_setupThemeObserver","_parseInputValue","_updateDisplayWithSelectedDates","formattedDate","_formatDateForInput","textContent","displayChild","_getThemeAncestor","_getEffectiveTheme","_syncThemeAttribute","theme","MutationObserver","mainElement","observe","attributeFilter","vcpTheme","inputMode","positionToInput","selectionDatesMode","selectedTheme","themeAttrDetect","onClickDate","self","_handleDateClick","onInit","onShow","onHide","firstDate","_parseDate","selectedMonth","getMonth","selectedYear","getFullYear","_maybeHideAfterSelection","shouldHide","dateStr","year","month","day","Date","_formatDate","date","Intl","DateTimeFormat","format","toLocaleDateString","separator","d","isNaN","getTime","String","padStart","getDate","formatted","bsInline","EVENT_HIDE_PREVENTED","EVENT_CANCEL","CLASS_NAME_STATIC","CLASS_NAME_OPEN","CLASS_NAME_NONMODAL","SELECTOR_OPEN_MODAL_DIALOG","backdrop","modal","Dialog","open","showModal","body","_hideDialog","handleUpdate","_triggerBackdropTransition","hidePreventedEvent","focus","currentDialog","shouldSwap","newDialog","currentInstance","BREAKPOINTS","sm","md","lg","xl","parseResponsivePlacement","placementString","defaultPlacement","parts","placements","xs","part","breakpoint","getResponsivePlacement","responsivePlacements","viewportWidth","innerWidth","activePlacement","breakpointOrder","minWidth","createBreakpointListeners","listeners","mql","matchMedia","disposeBreakpointListeners","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","ENTER_KEY","SPACE_KEY","RIGHT_MOUSE_BUTTON","SUBMENU_CLOSE_DELAY","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","SELECTOR_SUBMENU","SELECTOR_SUBMENU_TOGGLE","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","DEFAULT_PLACEMENT","SUBMENU_PLACEMENT","resolveLogicalPlacement","triangleSign","p1","p2","p3","x","y","autoClose","boundary","container","display","offset","floatingConfig","reference","strategy","submenuTrigger","submenuDelay","Dropdown","computePosition","_floatingCleanup","_mediaQueryListeners","_responsivePlacements","_parent","_isSubmenu","_openSubmenus","_submenuCloseTimeouts","_hoverIntentData","_menu","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","_moveMenuToContainer","_createFloating","_completeHide","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","update","_updateFloatingPosition","referenceElement","autoUpdate","_getPlacement","middleware","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","_setupMediaQueryListeners","_getOffset","offsetConfig","rects","result","floating","offsetValue","mainAxis","crossAxis","flip","fallbackPlacements","_getFallbackPlacements","shift","fallbackMap","bottom","top","right","left","defaultConfig","_getContainer","append","isConnected","finalPlacement","assign","position","margin","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","_isMovingTowardSubmenu","_scheduleSubmenuClose","stopPropagation","_closeSubmenu","cleanup","_createSubmenuFloating","nestedSubmenus","nested","nestedWrapper","currentSubmenuWrapper","siblingSubmenus","siblingMenu","siblingWrapper","padding","updatePosition","timeoutId","clear","clientY","timestamp","now","submenuRect","currentPos","lastPos","isRtl","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","hasNeg","hasPos","_selectMenuItem","currentMenu","_handleSubmenuKeydown","enterKey","exitKey","isSubmenuTrigger","requestAnimationFrame","firstItem","parentSubmenuWrapper","parentTrigger","targetItem","clearMenus","openToggles","composedPath","isMenuTarget","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","isLeftOrRightEvent","isHomeOrEndEvent","isEnterOrSpaceEvent","getToggleButton","EVENT_UPDATE","EVENT_OVERFLOW","CLASS_NAME_OVERFLOW","CLASS_NAME_OVERFLOW_MENU","CLASS_NAME_HIDDEN","SELECTOR_NAV_ITEM","SELECTOR_NAV_LINK","SELECTOR_OVERFLOW_TOGGLE","SELECTOR_OVERFLOW_MENU","CLASS_NAME_KEEP","moreText","moreIcon","threshold","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_resizeObserver","_isInitialized","_init","_calculateOverflow","_restoreItems","parentElement","item","bsNavOrder","_createOverflowMenu","_setupResizeObserver","overflowItem","createElement","className","innerHTML","ResizeObserver","navWidth","offsetWidth","overflowWidth","usedWidth","itemsToOverflow","overflowThreshold","itemWidth","visibleCount","toMove","_moveToOverflow","overflowCount","link","dropdownItem","clonedLink","cloneNode","bsNavOverflow","EVENT_MOUSEDOWN","clickCallback","rootElement","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","autofocus","trapElement","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","clientWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","reset","_resetElementAttributes","isOverflowing","_saveInitialAttribute","overflow","styleProperty","scrollbarWidth","manipulationCallBack","setProperty","_applyManipulationCallback","actualValue","removeProperty","callBack","CLASS_NAME_SHOWING","CLASS_NAME_HIDING","CLASS_NAME_BACKDROP","OPEN_SELECTOR","EVENT_RESIZE","EVENT_KEYDOWN_DISMISS","scroll","Offcanvas","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","blur","completeCallback","alreadyOpen","EVENT_STRENGTH_CHANGE","SELECTOR_DATA_STRENGTH","STRENGTH_LEVELS","input","minLength","messages","weak","fair","good","strong","weights","extraLength","lowercase","uppercase","numbers","special","multipleSpecial","longPassword","thresholds","scorer","Strength","_input","_getInput","_segments","_textElement","_currentStrength","_evaluate","getStrength","evaluate","password","score","_calculateScore","strength","_scoreToStrength","_updateUI","bsStrength","strengthIndex","segment","colorMap","EVENT_COMPLETE","EVENT_INPUT","SELECTOR_DATA_OTP","SELECTOR_INPUT","mask","OtpInput","_inputs","_setupInputs","getValue","setValue","chars","_checkComplete","emptyInput","at","_handleInput","_handlePaste","_handleFocus","i","nextIndex","pastedData","clipboardData","getData","digits","lastIndex","select","isComplete","every","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","a","area","b","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","li","ol","p","pre","s","small","span","sub","sup","u","ul","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","attributeRegex","some","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","domParser","DOMParser","createdDocument","parseFromString","elementName","attributeList","allowedAttributes","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","_maybeSanitize","text","_setContent","arg","templateElement","_putElementInTemplate","DISALLOWED_ATTRIBUTES","CLASS_NAME_MODAL","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","_leave","_enter","_hideModalHandler","_isWithContent","shadowRoot","isInTheDom","ownerDocument","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","middlewareData","arrow","arrowX","arrowY","isVertical","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","tooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","popover","EVENT_ACTIVATE","CLASS_NAME_DROPDOWN_ITEM","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","rootMargin","smoothScroll","ScrollSpy","_targetLinks","_observableSections","_rootElement","overflowY","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","observableSection","hash","height","offsetTop","scrollTo","behavior","scrollTop","options","IntersectionObserver","_observerCallback","targetElement","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","listGroup","activeNodes","node","spy","CLASS_DROPDOWN","SELECTOR_DROPDOWN_MENU","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","_deactivate","_activate","relatedElem","_toggleDropDown","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","EVENT_TOGGLE","EVENT_TOGGLED","Toggler","toggleEvent","_execute"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"bootstrap.js","sources":["../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/index.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/util/floating-ui.js","../../js/src/menu.js","../../js/src/combobox.js","../../js/src/datepicker.js","../../js/src/dialog.js","../../js/src/nav-overflow.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/util/scrollbar.js","../../js/src/offcanvas.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/toggler.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const evt = hydrateObj(new Event(event, { bubbles: true, cancelable: true }), args)\n    element.dispatchEvent(evt)\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n  for (const [key, value] of Object.entries(meta)) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n  if (selector && window.CSS && window.CSS.escape) {\n    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n    selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n  }\n\n  return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  if (isElement(object)) {\n    return object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(parseSelector(object))\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsie appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n  return typeof possibleCallback === 'function' ? possibleCallback.call(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getNextActiveElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  parseSelector,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const [property, expectedTypes] of Object.entries(configTypes)) {\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '6.0.0-alpha1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  // Private\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\n}\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children).filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  },\n\n  getSelectorFromElement(element) {\n    const selector = getSelector(element)\n\n    if (selector) {\n      return SelectorEngine.findOne(selector) ? selector : null\n    }\n\n    return null\n  },\n\n  getElementFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.findOne(selector) : null\n  },\n\n  getMultipleElementsFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.find(selector) : []\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nconst eventActionOnPlugin = (Plugin, onEvent, stringSelector, method, callback = null) => {\n  eventAction(`${onEvent}.${Plugin.NAME}`, stringSelector, data => {\n    const instances = data.targets.filter(Boolean).map(element => Plugin.getOrCreateInstance(element))\n    if (typeof callback === 'function') {\n      callback({ ...data, instances })\n    }\n\n    for (const instance of instances) {\n      instance[method]()\n    }\n  })\n}\n\nconst eventAction = (onEvent, stringSelector, callback) => {\n  const selector = `${stringSelector}:not(.disabled):not(:disabled)`\n  EventHandler.on(document, onEvent, selector, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    const selector = SelectorEngine.getSelectorFromElement(this)\n    const targets = selector ? SelectorEngine.find(selector) : [this]\n\n    callback({ targets, event })\n  })\n}\n\nexport {\n  enableDismissTrigger,\n  eventActionOnPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    this._deltaX = event.touches && event.touches.length > 1 ?\n      0 :\n      event.touches[0].clientX - this._deltaX\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n\n    if (absDeltaX <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltaX / this._deltaX\n\n    this._deltaX = 0\n\n    if (!direction) {\n      return\n    }\n\n    execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getNextActiveElement,\n  isRTL,\n  isVisible,\n  reflow,\n  triggerTransitionEnd\n} from './util/index.js'\nimport Swipe from './util/swipe.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover',\n  ride: false,\n  touch: true,\n  wrap: true\n}\n\nconst DefaultType = {\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)',\n  ride: '(boolean|string)',\n  touch: 'boolean',\n  wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._interval = null\n    this._activeElement = null\n    this._isSliding = false\n    this.touchTimeout = null\n    this._swipeHelper = null\n\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._addEventListeners()\n\n    if (this._config.ride === CLASS_NAME_CAROUSEL) {\n      this.cycle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause() {\n    if (this._isSliding) {\n      triggerTransitionEnd(this._element)\n    }\n\n    this._clearInterval()\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._updateInterval()\n\n    this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n  }\n\n  _maybeEnableCycle() {\n    if (!this._config.ride) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n      return\n    }\n\n    this.cycle()\n  }\n\n  to(index) {\n    const items = this._getItems()\n    if (index > items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    const activeIndex = this._getItemIndex(this._getActive())\n    if (activeIndex === index) {\n      return\n    }\n\n    const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n    this._slide(order, items[index])\n  }\n\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.defaultInterval = config.interval\n    return config\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    if (this._config.touch && Swipe.isSupported()) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n      EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n    }\n\n    const endCallBack = () => {\n      if (this._config.pause !== 'hover') {\n        return\n      }\n\n      // If it's a touch-enabled device, mouseenter/leave are fired as\n      // part of the mouse compatibility events on first tap - the carousel\n      // would stop cycling until user tapped out of it;\n      // here, we listen for touchend, explicitly pause the carousel\n      // (as if it's the second time we tap on it, mouseenter compat event\n      // is NOT fired) and after a timeout (to allow for mouse compatibility\n      // events to fire) we explicitly restart cycling\n\n      this.pause()\n      if (this.touchTimeout) {\n        clearTimeout(this.touchTimeout)\n      }\n\n      this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n    }\n\n    const swipeConfig = {\n      leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n      rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n      endCallback: endCallBack\n    }\n\n    this._swipeHelper = new Swipe(this._element, swipeConfig)\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(this._directionToOrder(direction))\n    }\n  }\n\n  _getItemIndex(element) {\n    return this._getItems().indexOf(element)\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n    activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n    activeIndicator.removeAttribute('aria-current')\n\n    const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n    if (newActiveIndicator) {\n      newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n      newActiveIndicator.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || this._getActive()\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    this._config.interval = elementInterval || this._config.defaultInterval\n  }\n\n  _slide(order, element = null) {\n    if (this._isSliding) {\n      return\n    }\n\n    const activeElement = this._getActive()\n    const isNext = order === ORDER_NEXT\n    const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n    if (nextElement === activeElement) {\n      return\n    }\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n\n    const triggerEvent = eventName => {\n      return EventHandler.trigger(this._element, eventName, {\n        relatedTarget: nextElement,\n        direction: this._orderToDirection(order),\n        from: this._getItemIndex(activeElement),\n        to: nextElementIndex\n      })\n    }\n\n    const slideEvent = triggerEvent(EVENT_SLIDE)\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      return\n    }\n\n    const isCycling = Boolean(this._interval)\n    this.pause()\n\n    this._isSliding = true\n\n    this._setActiveIndicatorElement(nextElementIndex)\n    this._activeElement = nextElement\n\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n    nextElement.classList.add(orderClassName)\n\n    reflow(nextElement)\n\n    activeElement.classList.add(directionalClassName)\n    nextElement.classList.add(directionalClassName)\n\n    const completeCallBack = () => {\n      nextElement.classList.remove(directionalClassName, orderClassName)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n      this._isSliding = false\n\n      triggerEvent(EVENT_SLID)\n    }\n\n    this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_SLIDE)\n  }\n\n  _getActive() {\n    return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  carousel.prev()\n  carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement,\n  reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = SelectorEngine.getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = SelectorEngine.getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  // Private\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = SelectorEngine.getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/floating-ui.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isRTL } from './index.js'\n\n/**\n * Breakpoints for responsive placement (matches SCSS $breakpoints)\n */\nexport const BREAKPOINTS = {\n  sm: 576,\n  md: 768,\n  lg: 1024,\n  xl: 1280,\n  '2xl': 1536\n}\n\n/**\n * Default placement with RTL support\n */\nexport const getDefaultPlacement = (fallback = 'bottom') => {\n  if (fallback.includes('-start') || fallback.includes('-end')) {\n    const [side, alignment] = fallback.split('-')\n    const flippedAlignment = alignment === 'start' ? 'end' : 'start'\n    return isRTL() ? `${side}-${flippedAlignment}` : fallback\n  }\n\n  return fallback\n}\n\n/**\n * Parse a placement string that may contain responsive prefixes\n * Example: \"bottom-start md:top-end lg:right\" returns { xs: 'bottom-start', md: 'top-end', lg: 'right' }\n *\n * @param {string} placementString - The placement string to parse\n * @param {string} defaultPlacement - The default placement to use for xs/base\n * @returns {object|null} - Object with breakpoint keys and placement values, or null if not responsive\n */\nexport const parseResponsivePlacement = (placementString, defaultPlacement = 'bottom') => {\n  // Check if placement contains responsive prefixes (e.g., \"bottom-start md:top-end\")\n  if (!placementString || !placementString.includes(':')) {\n    return null\n  }\n\n  // Parse the placement string into breakpoint-keyed object\n  const parts = placementString.split(/\\s+/)\n  const placements = { xs: defaultPlacement } // Default fallback\n\n  for (const part of parts) {\n    if (part.includes(':')) {\n      // Responsive placement like \"md:top-end\"\n      const [breakpoint, placement] = part.split(':')\n      if (BREAKPOINTS[breakpoint] !== undefined) {\n        placements[breakpoint] = placement\n      }\n    } else {\n      // Base placement (no prefix = xs/default)\n      placements.xs = part\n    }\n  }\n\n  return placements\n}\n\n/**\n * Get the active placement for the current viewport width\n *\n * @param {object} responsivePlacements - Object with breakpoint keys and placement values\n * @param {string} defaultPlacement - Fallback placement\n * @returns {string} - The active placement for current viewport\n */\nexport const getResponsivePlacement = (responsivePlacements, defaultPlacement = 'bottom') => {\n  if (!responsivePlacements) {\n    return defaultPlacement\n  }\n\n  // Get current viewport width\n  const viewportWidth = window.innerWidth\n\n  // Find the largest breakpoint that matches\n  let activePlacement = responsivePlacements.xs || defaultPlacement\n\n  // Check breakpoints in order (sm, md, lg, xl, 2xl)\n  const breakpointOrder = ['sm', 'md', 'lg', 'xl', '2xl']\n\n  for (const breakpoint of breakpointOrder) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    if (viewportWidth >= minWidth && responsivePlacements[breakpoint]) {\n      activePlacement = responsivePlacements[breakpoint]\n    }\n  }\n\n  return activePlacement\n}\n\n/**\n * Create media query listeners for responsive placement changes\n *\n * @param {Function} callback - Callback to run when breakpoint changes\n * @returns {Array} - Array of { mql, handler } objects for cleanup\n */\nexport const createBreakpointListeners = callback => {\n  const listeners = []\n\n  for (const breakpoint of Object.keys(BREAKPOINTS)) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    const mql = window.matchMedia(`(min-width: ${minWidth}px)`)\n\n    mql.addEventListener('change', callback)\n    listeners.push({ mql, handler: callback })\n  }\n\n  return listeners\n}\n\n/**\n * Clean up media query listeners\n *\n * @param {Array} listeners - Array of { mql, handler } objects\n */\nexport const disposeBreakpointListeners = listeners => {\n  for (const { mql, handler } of listeners) {\n    mql.removeEventListener('change', handler)\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap menu.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'menu'\nconst DATA_KEY = 'bs.menu'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\nconst RIGHT_MOUSE_BUTTON = 2\n\nconst SUBMENU_CLOSE_DELAY = 100\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"menu\"]:not(.disabled):not(:disabled)'\n\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_SUBMENU = '.submenu'\nconst SELECTOR_SUBMENU_TOGGLE = '.submenu > .menu-item'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item:not(.disabled):not(:disabled)'\n\nconst DEFAULT_PLACEMENT = 'bottom-start'\nconst SUBMENU_PLACEMENT = 'end-start'\n\nconst resolveLogicalPlacement = placement => {\n  if (isRTL()) {\n    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left')\n  }\n\n  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right')\n}\n\nconst triangleSign = (p1, p2, p3) =>\n  ((p1.x - p3.x) * (p2.y - p3.y)) - ((p2.x - p3.x) * (p1.y - p3.y))\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  container: false,\n  display: 'dynamic',\n  offset: [0, 2],\n  floatingConfig: null,\n  menu: null,\n  placement: DEFAULT_PLACEMENT,\n  reference: 'toggle',\n  strategy: 'absolute',\n  submenuTrigger: 'both',\n  submenuDelay: SUBMENU_CLOSE_DELAY\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  display: 'string',\n  offset: '(array|string|function)',\n  floatingConfig: '(null|object|function)',\n  menu: '(null|element)',\n  placement: 'string',\n  reference: '(string|element|object)',\n  strategy: 'string',\n  submenuTrigger: 'string',\n  submenuDelay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Menu extends BaseComponent {\n  static _openInstances = new Set()\n\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s menus require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    this._floatingCleanup = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n    this._parent = this._element.parentNode\n    this._isSubmenu = this._parent.classList?.contains('submenu')\n    this._openSubmenus = new Map()\n    this._submenuCloseTimeouts = new Map()\n    this._hoverIntentData = null\n\n    this._menu = this._config.menu || this._findMenu()\n\n    this._menuOriginalParent = this._menu?.parentNode\n\n    this._parseResponsivePlacements()\n    this._setupSubmenuListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._moveMenuToContainer()\n    this._createFloating()\n\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus({ focusVisible: false })\n    this._element.setAttribute('aria-expanded', 'true')\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.add(CLASS_NAME_SHOW)\n    }\n\n    Menu._openInstances.add(this)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n    this._disposeMediaQueryListeners()\n    this._closeAllSubmenus()\n    this._clearAllSubmenuTimeouts()\n    Menu._openInstances.delete(this)\n    super.dispose()\n  }\n\n  update() {\n    if (this._floatingCleanup) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Private\n  _findMenu() {\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n  }\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._closeAllSubmenus()\n\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'placement')\n    Manipulator.removeDataAttribute(this._menu, 'display')\n    Menu._openInstances.delete(this)\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createFloating() {\n    if (this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'display', 'static')\n      return\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    this._updateFloatingPosition(referenceElement)\n\n    this._floatingCleanup = autoUpdate(\n      referenceElement,\n      this._menu,\n      () => this._updateFloatingPosition(referenceElement)\n    )\n  }\n\n  async _updateFloatingPosition(referenceElement = null) {\n    if (!this._menu) {\n      return\n    }\n\n    if (!referenceElement) {\n      if (this._config.reference === 'parent') {\n        referenceElement = this._parent\n      } else if (isElement(this._config.reference)) {\n        referenceElement = getElement(this._config.reference)\n      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference\n      } else {\n        referenceElement = this._element\n      }\n    }\n\n    const placement = this._getPlacement()\n    const middleware = this._getFloatingMiddleware()\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    await this._applyFloatingPosition(\n      referenceElement,\n      this._menu,\n      floatingConfig.placement,\n      floatingConfig.middleware,\n      floatingConfig.strategy\n    )\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    const placement = this._responsivePlacements ?\n      getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) :\n      this._config.placement\n\n    return resolveLogicalPlacement(placement)\n  }\n\n  _parseResponsivePlacements() {\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT)\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  _getOffset() {\n    const { offset: offsetConfig } = this._config\n\n    if (typeof offsetConfig === 'string') {\n      return offsetConfig.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offsetConfig === 'function') {\n      return ({ placement, rects }) => {\n        const result = offsetConfig({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offsetConfig\n  }\n\n  _getFloatingMiddleware() {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      flip({\n        fallbackPlacements: this._getFallbackPlacements()\n      }),\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    return middleware\n  }\n\n  _getFallbackPlacements() {\n    const placement = this._getPlacement()\n\n    const fallbackMap = {\n      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\n      'bottom-start': ['top-start', 'bottom-end', 'top-end'],\n      'bottom-end': ['top-end', 'bottom-start', 'top-start'],\n      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],\n      'top-start': ['bottom-start', 'top-end', 'bottom-end'],\n      'top-end': ['bottom-end', 'top-start', 'bottom-start'],\n      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],\n      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],\n      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],\n      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],\n      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],\n      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']\n    }\n\n    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left']\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware,\n      strategy: this._config.strategy\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n  }\n\n  _getContainer() {\n    const { container } = this._config\n    if (container === false) {\n      return null\n    }\n\n    return container === true ? document.body : getElement(container)\n  }\n\n  _moveMenuToContainer() {\n    const container = this._getContainer()\n    if (!container || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== container) {\n      container.append(this._menu)\n    }\n  }\n\n  _restoreMenuToOriginalParent() {\n    if (!this._menuOriginalParent || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== this._menuOriginalParent) {\n      this._menuOriginalParent.append(this._menu)\n    }\n  }\n\n  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {\n    if (!floating.isConnected) {\n      return null\n    }\n\n    const { x, y, placement: finalPlacement } = await computePosition(\n      reference,\n      floating,\n      { placement, middleware, strategy }\n    )\n\n    if (!floating.isConnected) {\n      return null\n    }\n\n    Object.assign(floating.style, {\n      position: strategy,\n      left: `${x}px`,\n      top: `${y}px`,\n      margin: '0'\n    })\n\n    Manipulator.setDataAttribute(floating, 'placement', finalPlacement)\n    return finalPlacement\n  }\n\n  // -------------------------------------------------------------------------\n  // Submenu handling\n  // -------------------------------------------------------------------------\n\n  _setupSubmenuListeners() {\n    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerEnter(event)\n      })\n\n      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {\n        this._onSubmenuLeave(event)\n      })\n\n      EventHandler.on(this._menu, 'mousemove', event => {\n        this._trackMousePosition(event)\n      })\n    }\n\n    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerClick(event)\n      })\n    }\n  }\n\n  _onSubmenuTriggerEnter(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    this._cancelSubmenuCloseTimeout(submenu)\n    this._closeSiblingSubmenus(submenuWrapper)\n    this._openSubmenu(trigger, submenu, submenuWrapper)\n  }\n\n  _onSubmenuLeave(event) {\n    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu || !this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    if (this._isMovingTowardSubmenu(event, submenu)) {\n      return\n    }\n\n    this._scheduleSubmenuClose(submenu, submenuWrapper)\n  }\n\n  _onSubmenuTriggerClick(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    if (this._openSubmenus.has(submenu)) {\n      this._closeSubmenu(submenu, submenuWrapper)\n    } else {\n      this._closeSiblingSubmenus(submenuWrapper)\n      this._openSubmenu(trigger, submenu, submenuWrapper)\n    }\n  }\n\n  _openSubmenu(trigger, submenu, submenuWrapper) {\n    if (this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    trigger.setAttribute('aria-expanded', 'true')\n    trigger.setAttribute('aria-haspopup', 'true')\n\n    submenu.classList.add(CLASS_NAME_SHOW)\n    submenuWrapper.classList.add(CLASS_NAME_SHOW)\n\n    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper)\n    this._openSubmenus.set(submenu, cleanup)\n\n    EventHandler.on(submenu, 'mouseenter', () => {\n      this._cancelSubmenuCloseTimeout(submenu)\n    })\n  }\n\n  _closeSubmenu(submenu, submenuWrapper) {\n    if (!this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, submenu)\n    for (const nested of nestedSubmenus) {\n      const nestedWrapper = nested.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(nested, nestedWrapper)\n    }\n\n    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper)\n\n    const cleanup = this._openSubmenus.get(submenu)\n    if (cleanup) {\n      cleanup()\n    }\n\n    this._openSubmenus.delete(submenu)\n    EventHandler.off(submenu, 'mouseenter')\n\n    if (trigger) {\n      trigger.setAttribute('aria-expanded', 'false')\n    }\n\n    submenu.classList.remove(CLASS_NAME_SHOW)\n    submenuWrapper.classList.remove(CLASS_NAME_SHOW)\n\n    submenu.style.position = ''\n    submenu.style.left = ''\n    submenu.style.top = ''\n    submenu.style.margin = ''\n  }\n\n  _closeAllSubmenus() {\n    for (const [submenu] of this._openSubmenus) {\n      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(submenu, submenuWrapper)\n    }\n  }\n\n  _closeSiblingSubmenus(currentSubmenuWrapper) {\n    const parent = currentSubmenuWrapper.parentNode\n    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, parent)\n\n    for (const siblingMenu of siblingSubmenus) {\n      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU)\n      if (siblingWrapper !== currentSubmenuWrapper) {\n        this._closeSubmenu(siblingMenu, siblingWrapper)\n      }\n    }\n  }\n\n  _createSubmenuFloating(trigger, submenu, submenuWrapper) {\n    const referenceElement = submenuWrapper\n    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT)\n    const middleware = [\n      offset({ mainAxis: 0, crossAxis: -4 }),\n      flip({\n        fallbackPlacements: [\n          resolveLogicalPlacement('start-start'),\n          resolveLogicalPlacement('end-end'),\n          resolveLogicalPlacement('start-end')\n        ]\n      }),\n      shift({ padding: 8 })\n    ]\n\n    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware)\n\n    updatePosition()\n    return autoUpdate(referenceElement, submenu, updatePosition)\n  }\n\n  _scheduleSubmenuClose(submenu, submenuWrapper) {\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    const timeoutId = setTimeout(() => {\n      this._closeSubmenu(submenu, submenuWrapper)\n      this._submenuCloseTimeouts.delete(submenu)\n    }, this._config.submenuDelay)\n\n    this._submenuCloseTimeouts.set(submenu, timeoutId)\n  }\n\n  _cancelSubmenuCloseTimeout(submenu) {\n    const timeoutId = this._submenuCloseTimeouts.get(submenu)\n    if (timeoutId) {\n      clearTimeout(timeoutId)\n      this._submenuCloseTimeouts.delete(submenu)\n    }\n  }\n\n  _clearAllSubmenuTimeouts() {\n    for (const timeoutId of this._submenuCloseTimeouts.values()) {\n      clearTimeout(timeoutId)\n    }\n\n    this._submenuCloseTimeouts.clear()\n  }\n\n  // -------------------------------------------------------------------------\n  // Hover intent / Safe triangle\n  // -------------------------------------------------------------------------\n\n  _trackMousePosition(event) {\n    this._hoverIntentData = {\n      x: event.clientX,\n      y: event.clientY,\n      timestamp: Date.now()\n    }\n  }\n\n  _isMovingTowardSubmenu(event, submenu) {\n    if (!this._hoverIntentData) {\n      return false\n    }\n\n    const submenuRect = submenu.getBoundingClientRect()\n    const currentPos = { x: event.clientX, y: event.clientY }\n    const lastPos = { x: this._hoverIntentData.x, y: this._hoverIntentData.y }\n\n    const isRtl = isRTL()\n    const targetX = isRtl ? submenuRect.right : submenuRect.left\n    const topCorner = { x: targetX, y: submenuRect.top }\n    const bottomCorner = { x: targetX, y: submenuRect.bottom }\n\n    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner)\n  }\n\n  _pointInTriangle(point, v1, v2, v3) {\n    const d1 = triangleSign(point, v1, v2)\n    const d2 = triangleSign(point, v2, v3)\n    const d3 = triangleSign(point, v3, v1)\n\n    const hasNeg = (d1 < 0) || (d2 < 0) || (d3 < 0)\n    const hasPos = (d1 > 0) || (d2 > 0) || (d3 > 0)\n\n    return !(hasNeg && hasPos)\n  }\n\n  // -------------------------------------------------------------------------\n  // Keyboard navigation\n  // -------------------------------------------------------------------------\n\n  _selectMenuItem({ key, target }) {\n    const currentMenu = target.closest(SELECTOR_MENU) || this._menu\n    const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n      .filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  _handleSubmenuKeydown(event) {\n    const { key, target } = event\n    const isRtl = isRTL()\n\n    const enterKey = isRtl ? ARROW_LEFT_KEY : ARROW_RIGHT_KEY\n    const exitKey = isRtl ? ARROW_RIGHT_KEY : ARROW_LEFT_KEY\n\n    const submenuWrapper = target.closest(SELECTOR_SUBMENU)\n    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === enterKey && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === exitKey) {\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper) {\n        event.preventDefault()\n        event.stopPropagation()\n\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        this._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return true\n      }\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n        .filter(element => isVisible(element))\n\n      if (items.length) {\n        const targetItem = key === HOME_KEY ? items[0] : items[items.length - 1]\n        targetItem.focus()\n      }\n\n      return true\n    }\n\n    return false\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    for (const instance of Menu._openInstances) {\n      if (instance._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(instance._menu)\n      if (\n        composedPath.includes(instance._element) ||\n        (instance._config.autoClose === 'inside' && !isMenuTarget) ||\n        (instance._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      if (instance._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: instance._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      instance._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    const isInput = /input|textarea/i.test(event.target.tagName)\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n    const isLeftOrRightEvent = [ARROW_LEFT_KEY, ARROW_RIGHT_KEY].includes(event.key)\n    const isHomeOrEndEvent = [HOME_KEY, END_KEY].includes(event.key)\n    const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key)\n\n    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent &&\n        !(isEnterOrSpaceEvent && isSubmenuTrigger)) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    if (!getToggleButton) {\n      return\n    }\n\n    const instance = Menu.getOrCreateInstance(getToggleButton)\n\n    if ((isLeftOrRightEvent || isHomeOrEndEvent || (isEnterOrSpaceEvent && isSubmenuTrigger)) && instance._handleSubmenuKeydown(event)) {\n      return\n    }\n\n    if (isUpOrDownEvent) {\n      event.preventDefault()\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (isEscapeEvent && instance._isShown()) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = event.target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        instance._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return\n      }\n\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Menu.getOrCreateInstance(this).toggle()\n})\n\nexport default Menu\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap combobox.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Menu from './menu.js'\nimport { getNextActiveElement, isDisabled, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'combobox'\nconst DATA_KEY = 'bs.combobox'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SELECTED = 'selected'\nconst CLASS_NAME_PLACEHOLDER = 'combobox-placeholder'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"combobox\"]'\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_MENU_ITEM = '.menu-item[data-bs-value]'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item[data-bs-value]:not(.disabled):not(:disabled)'\nconst SELECTOR_VALUE = '.combobox-value'\nconst SELECTOR_SEARCH_INPUT = '.combobox-search-input'\nconst SELECTOR_NO_RESULTS = '.combobox-no-results'\n\nconst Default = {\n  boundary: 'clippingParents',\n  multiple: false,\n  name: null,\n  offset: [0, 2],\n  placeholder: '',\n  placement: 'bottom-start',\n  search: false,\n  searchNormalize: false\n}\n\nconst DefaultType = {\n  boundary: '(string|element)',\n  multiple: 'boolean',\n  name: '(string|null)',\n  offset: '(array|string|function)',\n  placeholder: 'string',\n  placement: 'string',\n  search: 'boolean',\n  searchNormalize: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Combobox extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._toggle = this._element\n    this._menu = SelectorEngine.next(this._toggle, SELECTOR_MENU)[0]\n    this._valueDisplay = SelectorEngine.findOne(SELECTOR_VALUE, this._toggle)\n    this._searchInput = SelectorEngine.findOne(SELECTOR_SEARCH_INPUT, this._menu)\n    this._noResults = SelectorEngine.findOne(SELECTOR_NO_RESULTS, this._menu)\n    this._hiddenInput = null\n    this._menuInstance = null\n\n    this._createHiddenInput()\n    this._createMenuInstance()\n    this._syncInitialSelection()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._toggle) || this._isShown()) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._toggle, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.show()\n\n    if (this._searchInput) {\n      this._searchInput.value = ''\n      this._filterItems('')\n      requestAnimationFrame(() => this._searchInput.focus())\n    }\n\n    EventHandler.trigger(this._toggle, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._toggle, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.hide()\n    EventHandler.trigger(this._toggle, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._menuInstance) {\n      this._menuInstance.dispose()\n      this._menuInstance = null\n    }\n\n    if (this._hiddenInput) {\n      this._hiddenInput.remove()\n      this._hiddenInput = null\n    }\n\n    EventHandler.off(this._menu, EVENT_KEY)\n    EventHandler.off(this._toggle, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _createHiddenInput() {\n    const { name } = this._config\n    if (!name) {\n      return\n    }\n\n    this._hiddenInput = document.createElement('input')\n    this._hiddenInput.type = 'hidden'\n    this._hiddenInput.name = name\n    this._hiddenInput.value = ''\n    this._toggle.parentNode.insertBefore(this._hiddenInput, this._toggle)\n  }\n\n  _createMenuInstance() {\n    this._menuInstance = new Menu(this._toggle, {\n      menu: this._menu,\n      autoClose: this._config.multiple ? 'outside' : true,\n      boundary: this._config.boundary,\n      offset: this._config.offset,\n      placement: this._config.placement\n    })\n  }\n\n  _syncInitialSelection() {\n    const selectedItems = this._getSelectedItems()\n    if (selectedItems.length > 0) {\n      this._updateToggleText()\n      this._updateHiddenInput()\n    } else {\n      this._showPlaceholder()\n    }\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._menu, 'click', SELECTOR_MENU_ITEM, event => {\n      const item = event.target.closest(SELECTOR_MENU_ITEM)\n      if (!item || isDisabled(item)) {\n        return\n      }\n\n      event.preventDefault()\n      event.stopPropagation()\n      this._selectItem(item)\n    })\n\n    EventHandler.on(this._toggle, 'keydown', event => {\n      this._handleToggleKeydown(event)\n    })\n\n    EventHandler.on(this._menu, 'keydown', event => {\n      this._handleMenuKeydown(event)\n    })\n\n    if (this._searchInput) {\n      EventHandler.on(this._searchInput, 'input', () => {\n        this._filterItems(this._searchInput.value)\n      })\n\n      EventHandler.on(this._searchInput, 'keydown', event => {\n        if (event.key === ARROW_DOWN_KEY) {\n          event.preventDefault()\n          const items = this._getVisibleItems()\n          if (items.length > 0) {\n            items[0].focus()\n          }\n        }\n\n        if (event.key === ESCAPE_KEY) {\n          this.hide()\n          this._toggle.focus()\n        }\n      })\n    }\n  }\n\n  _selectItem(item) {\n    if (this._config.multiple) {\n      item.classList.toggle(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', item.classList.contains(CLASS_NAME_SELECTED))\n    } else {\n      const previouslySelected = SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n      for (const prev of previouslySelected) {\n        prev.classList.remove(CLASS_NAME_SELECTED)\n        prev.setAttribute('aria-selected', 'false')\n      }\n\n      item.classList.add(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', 'true')\n    }\n\n    this._updateToggleText()\n    this._updateHiddenInput()\n\n    const value = this._config.multiple ?\n      this._getSelectedItems().map(el => el.dataset.bsValue) :\n      item.dataset.bsValue\n\n    EventHandler.trigger(this._toggle, EVENT_CHANGE, {\n      value,\n      item\n    })\n\n    if (!this._config.multiple) {\n      this.hide()\n      this._toggle.focus()\n    }\n  }\n\n  _updateToggleText() {\n    const selectedItems = this._getSelectedItems()\n\n    if (selectedItems.length === 0) {\n      this._showPlaceholder()\n      return\n    }\n\n    this._valueDisplay.classList.remove(CLASS_NAME_PLACEHOLDER)\n\n    if (this._config.multiple && selectedItems.length > 1) {\n      this._valueDisplay.textContent = `${selectedItems.length} selected`\n    } else {\n      const item = selectedItems[0]\n      const label = SelectorEngine.findOne('.menu-item-content > span:first-child', item)\n      this._valueDisplay.textContent = label ? label.textContent : item.textContent.trim()\n    }\n  }\n\n  _showPlaceholder() {\n    const { placeholder } = this._config\n    if (placeholder) {\n      this._valueDisplay.textContent = placeholder\n      this._valueDisplay.classList.add(CLASS_NAME_PLACEHOLDER)\n    }\n  }\n\n  _updateHiddenInput() {\n    if (!this._hiddenInput) {\n      return\n    }\n\n    const selectedItems = this._getSelectedItems()\n    const values = selectedItems.map(el => el.dataset.bsValue)\n    this._hiddenInput.value = this._config.multiple ? values.join(',') : (values[0] || '')\n  }\n\n  _getSelectedItems() {\n    return SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n  }\n\n  _getVisibleItems() {\n    return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu)\n      .filter(item => isVisible(item))\n  }\n\n  _filterItems(query) {\n    const normalizedQuery = this._normalizeText(query.toLowerCase().trim())\n    const items = SelectorEngine.find(SELECTOR_MENU_ITEM, this._menu)\n    let visibleCount = 0\n\n    for (const item of items) {\n      const text = this._normalizeText(item.textContent.toLowerCase().trim())\n      const matches = !normalizedQuery || text.includes(normalizedQuery)\n      item.style.display = matches ? '' : 'none'\n      if (matches) {\n        visibleCount++\n      }\n    }\n\n    if (this._noResults) {\n      this._noResults.classList.toggle('d-none', visibleCount > 0)\n    }\n  }\n\n  _normalizeText(text) {\n    if (this._config.searchNormalize) {\n      return text.normalize('NFD').replace(/[\\u0300-\\u036F]/g, '')\n    }\n\n    return text\n  }\n\n  _handleToggleKeydown(event) {\n    const { key } = event\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      if (!this._isShown()) {\n        this.show()\n      }\n\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const target = key === ARROW_DOWN_KEY ? items[0] : items[items.length - 1]\n        target.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !this._isShown()) {\n      event.preventDefault()\n      this.show()\n    }\n  }\n\n  _handleMenuKeydown(event) {\n    const { key, target } = event\n\n    if (key === ESCAPE_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n      this._toggle.focus()\n      return\n    }\n\n    if (key === TAB_KEY) {\n      this.hide()\n      return\n    }\n\n    const isInput = target.matches('input')\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n      }\n\n      return\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const targetItem = key === HOME_KEY ? items[0] : items[items.length - 1]\n        targetItem.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !isInput) {\n      event.preventDefault()\n      const item = target.closest(SELECTOR_MENU_ITEM)\n      if (item && !isDisabled(item)) {\n        this._selectItem(item)\n      }\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Combobox.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Combobox.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const toggle of SelectorEngine.find(SELECTOR_DATA_TOGGLE)) {\n    Combobox.getOrCreateInstance(toggle)\n  }\n})\n\nexport default Combobox\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap datepicker.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { Calendar } from 'vanilla-calendar-pro'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'datepicker'\nconst DATA_KEY = 'bs.datepicker'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"datepicker\"]'\n\nconst HIDE_DELAY = 100 // ms delay before hiding after selection\n\nconst Default = {\n  datepickerTheme: null, // 'light', 'dark', 'auto' - explicit theme for datepicker popover only\n  dateMin: null,\n  dateMax: null,\n  dateFormat: null, // Intl.DateTimeFormat options, or function(date, locale) => string\n  displayElement: null, // Element to show formatted date (defaults to element for buttons)\n  displayMonthsCount: 1, // Number of months to display side-by-side\n  firstWeekday: 1, // Monday\n  inline: false, // Render calendar inline (no popup)\n  locale: 'default',\n  positionElement: null, // Element to position calendar relative to (defaults to input)\n  selectedDates: [],\n  selectionMode: 'single', // 'single', 'multiple', 'multiple-ranged'\n  placement: 'left', // 'left', 'center', 'right', 'auto'\n  vcpOptions: {} // Pass-through for any VCP option\n}\n\nconst DefaultType = {\n  datepickerTheme: '(null|string)',\n  dateMin: '(null|string|number|object)',\n  dateMax: '(null|string|number|object)',\n  dateFormat: '(null|object|function)',\n  displayElement: '(null|string|element|boolean)',\n  displayMonthsCount: 'number',\n  firstWeekday: 'number',\n  inline: 'boolean',\n  locale: 'string',\n  positionElement: '(null|string|element)',\n  selectedDates: 'array',\n  selectionMode: 'string',\n  placement: 'string',\n  vcpOptions: 'object'\n}\n\n/**\n * Class definition\n */\n\nclass Datepicker extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._calendar = null\n    this._isShown = false\n\n    this._initCalendar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    return this._isShown ? this.hide() : this.show()\n  }\n\n  show() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || isDisabled(this._element) || this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.show()\n    this._isShown = true\n\n    EventHandler.trigger(this._element, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || !this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.hide()\n    this._isShown = false\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._themeObserver) {\n      this._themeObserver.disconnect()\n      this._themeObserver = null\n    }\n\n    if (this._calendar) {\n      this._calendar.destroy()\n    }\n\n    this._calendar = null\n    super.dispose()\n  }\n\n  getSelectedDates() {\n    const dates = this._calendar?.context?.selectedDates\n    return dates ? [...dates] : []\n  }\n\n  setSelectedDates(dates) {\n    if (this._calendar) {\n      this._calendar.set({ selectedDates: dates })\n    }\n  }\n\n  // Private\n  _initCalendar() {\n    this._isInput = this._element.tagName === 'INPUT'\n    this._isInline = this._config.inline\n\n    // For inline mode, look for a hidden input child to bind to\n    if (this._isInline && !this._isInput) {\n      this._boundInput = this._element.querySelector('input[type=\"hidden\"], input[name]')\n    }\n\n    this._positionElement = this._resolvePositionElement()\n    this._displayElement = this._resolveDisplayElement()\n\n    const calendarOptions = this._buildCalendarOptions()\n\n    // Create calendar on the position element (for correct popup positioning)\n    // but value updates still go to this._element (the input)\n    this._calendar = new Calendar(this._positionElement, calendarOptions)\n    this._calendar.init()\n\n    // Watch for theme changes on ancestor elements (for live theme switching)\n    this._setupThemeObserver()\n\n    // Set initial value if input has a value\n    if (this._isInput && this._element.value) {\n      this._parseInputValue()\n    }\n\n    // Populate input/display with preselected dates\n    this._updateDisplayWithSelectedDates()\n  }\n\n  _updateDisplayWithSelectedDates() {\n    const { selectedDates } = this._config\n    if (!selectedDates || selectedDates.length === 0) {\n      return\n    }\n\n    const formattedDate = this._formatDateForInput(selectedDates)\n\n    if (this._isInput) {\n      this._element.value = formattedDate\n    }\n\n    if (this._boundInput) {\n      this._boundInput.value = selectedDates.join(',')\n    }\n\n    if (this._displayElement) {\n      this._displayElement.textContent = formattedDate\n    }\n  }\n\n  _resolvePositionElement() {\n    let { positionElement } = this._config\n\n    if (typeof positionElement === 'string') {\n      positionElement = document.querySelector(positionElement)\n    }\n\n    // Use input's parent if in form-adorn\n    if (!positionElement && this._isInput && !this._isInline) {\n      const parent = this._element.closest('.form-adorn')\n      if (parent) {\n        positionElement = parent\n      }\n    }\n\n    return positionElement || this._element\n  }\n\n  _resolveDisplayElement() {\n    const { displayElement } = this._config\n\n    if (typeof displayElement === 'string') {\n      return document.querySelector(displayElement)\n    }\n\n    // For buttons/non-inputs (not inline), look for a [data-bs-datepicker-display] child\n    if (displayElement === true || (displayElement === null && !this._isInput && !this._isInline)) {\n      const displayChild = this._element.querySelector('[data-bs-datepicker-display]')\n      return displayChild || this._element\n    }\n\n    return displayElement\n  }\n\n  _getThemeAncestor() {\n    return this._element.closest('[data-bs-theme]')\n  }\n\n  _getEffectiveTheme() {\n    // Priority: explicit datepickerTheme config > inherited from ancestor > none\n    const { datepickerTheme } = this._config\n    if (datepickerTheme) {\n      return datepickerTheme\n    }\n\n    const ancestor = this._getThemeAncestor()\n    return ancestor?.getAttribute('data-bs-theme') || null\n  }\n\n  _syncThemeAttribute(element) {\n    if (!element) {\n      return\n    }\n\n    const theme = this._getEffectiveTheme()\n\n    if (theme) {\n      // Copy theme to popover (needed because VCP appends to body, breaking CSS inheritance)\n      element.setAttribute('data-bs-theme', theme)\n    } else {\n      // No theme - remove attribute to allow natural inheritance\n      element.removeAttribute('data-bs-theme')\n    }\n  }\n\n  _setupThemeObserver() {\n    // Watch for theme changes on ancestor elements\n    const ancestor = this._getThemeAncestor()\n    if (!ancestor || this._config.datepickerTheme) {\n      // No ancestor to watch, or explicit datepickerTheme overrides\n      return\n    }\n\n    this._themeObserver = new MutationObserver(() => {\n      this._syncThemeAttribute(this._calendar?.context?.mainElement)\n    })\n\n    this._themeObserver.observe(ancestor, {\n      attributes: true,\n      attributeFilter: ['data-bs-theme']\n    })\n  }\n\n  _buildCalendarOptions() {\n    // Get theme for VCP - use 'system' for auto-detection if no explicit theme\n    const theme = this._getEffectiveTheme()\n    // VCP uses 'system' for auto, Bootstrap uses 'auto'\n    const vcpTheme = !theme || theme === 'auto' ? 'system' : theme\n\n    const calendarOptions = {\n      ...this._config.vcpOptions,\n      inputMode: !this._isInline,\n      positionToInput: this._config.placement,\n      firstWeekday: this._config.firstWeekday,\n      locale: this._config.locale,\n      selectionDatesMode: this._config.selectionMode,\n      selectedDates: this._config.selectedDates,\n      displayMonthsCount: this._config.displayMonthsCount,\n      type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',\n      selectedTheme: vcpTheme,\n      themeAttrDetect: '[data-bs-theme]',\n      onClickDate: (self, event) => this._handleDateClick(self, event),\n      onInit: self => {\n        this._syncThemeAttribute(self.context.mainElement)\n      },\n      onShow: () => {\n        this._isShown = true\n        this._syncThemeAttribute(this._calendar.context.mainElement)\n      },\n      onHide: () => {\n        this._isShown = false\n      }\n    }\n\n    // Navigate to the month of the first selected date\n    if (this._config.selectedDates.length > 0) {\n      const firstDate = this._parseDate(this._config.selectedDates[0])\n      calendarOptions.selectedMonth = firstDate.getMonth()\n      calendarOptions.selectedYear = firstDate.getFullYear()\n    }\n\n    if (this._config.dateMin) {\n      calendarOptions.dateMin = this._config.dateMin\n    }\n\n    if (this._config.dateMax) {\n      calendarOptions.dateMax = this._config.dateMax\n    }\n\n    return calendarOptions\n  }\n\n  _handleDateClick(self, event) {\n    const selectedDates = [...self.context.selectedDates]\n\n    if (selectedDates.length > 0) {\n      const formattedDate = this._formatDateForInput(selectedDates)\n\n      if (this._isInput) {\n        this._element.value = formattedDate\n      }\n\n      if (this._boundInput) {\n        this._boundInput.value = selectedDates.join(',')\n      }\n\n      if (this._displayElement) {\n        this._displayElement.textContent = formattedDate\n      }\n    }\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      dates: selectedDates,\n      event\n    })\n\n    this._maybeHideAfterSelection(selectedDates)\n  }\n\n  _maybeHideAfterSelection(selectedDates) {\n    if (this._isInline) {\n      return\n    }\n\n    const shouldHide =\n      (this._config.selectionMode === 'single' && selectedDates.length > 0) ||\n      (this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2)\n\n    if (shouldHide) {\n      setTimeout(() => this.hide(), HIDE_DELAY)\n    }\n  }\n\n  _parseDate(dateStr) {\n    const [year, month, day] = dateStr.split('-')\n    return new Date(year, month - 1, day)\n  }\n\n  _formatDate(dateStr) {\n    const date = this._parseDate(dateStr)\n    const locale = this._config.locale === 'default' ? undefined : this._config.locale\n    const { dateFormat } = this._config\n\n    // Custom function formatter\n    if (typeof dateFormat === 'function') {\n      return dateFormat(date, locale)\n    }\n\n    // Intl.DateTimeFormat options object\n    if (dateFormat && typeof dateFormat === 'object') {\n      return new Intl.DateTimeFormat(locale, dateFormat).format(date)\n    }\n\n    // Default: locale-aware formatting\n    return date.toLocaleDateString(locale)\n  }\n\n  _formatDateForInput(dates) {\n    if (dates.length === 0) {\n      return ''\n    }\n\n    if (dates.length === 1) {\n      return this._formatDate(dates[0])\n    }\n\n    // For date ranges, use en-dash; for multiple dates, use comma\n    const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', '\n    return dates.map(d => this._formatDate(d)).join(separator)\n  }\n\n  _parseInputValue() {\n    // Try to parse the input value as a date\n    const value = this._element.value.trim()\n    if (!value) {\n      return\n    }\n\n    const date = new Date(value)\n    if (!Number.isNaN(date.getTime())) {\n      const year = date.getFullYear()\n      const month = String(date.getMonth() + 1).padStart(2, '0')\n      const day = String(date.getDate()).padStart(2, '0')\n      const formatted = `${year}-${month}-${day}`\n      this._calendar.set({ selectedDates: [formatted] })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // Only handle if not an input (inputs use focus)\n  // Skip inline datepickers (they're always visible)\n  if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true') {\n    return\n  }\n\n  event.preventDefault()\n  Datepicker.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE, function () {\n  // Handle focus for input elements\n  if (this.tagName !== 'INPUT') {\n    return\n  }\n\n  Datepicker.getOrCreateInstance(this).show()\n})\n\n// Auto-initialize inline datepickers on DOMContentLoaded\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE}[data-bs-inline=\"true\"]`)) {\n    Datepicker.getOrCreateInstance(element)\n  }\n})\n\nexport default Datepicker\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dialog'\nconst DATA_KEY = 'bs.dialog'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_STATIC = 'dialog-static'\nconst CLASS_NAME_OPEN = 'dialog-open'\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\nconst SELECTOR_OPEN_MODAL_DIALOG = 'dialog.dialog[open]:not(.dialog-nonmodal)'\n\nconst Default = {\n  backdrop: true, // true (click dismisses) or 'static' (click does nothing) - only applies to modal dialogs\n  keyboard: true,\n  modal: true // true uses showModal(), false uses show() for non-modal dialogs\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  modal: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Dialog extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._element.open ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n\n    if (this._config.modal) {\n      // Modal dialog: use showModal() for focus trapping, backdrop, and top layer\n      this._element.showModal()\n      // Prevent body scroll for modal dialogs\n      document.body.classList.add(CLASS_NAME_OPEN)\n    } else {\n      // Non-modal dialog: use show() - no backdrop, no focus trap, no top layer\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n      this._element.show()\n    }\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }, this._element, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n\n    this._queueCallback(() => this._hideDialog(), this._element, this._isAnimated())\n  }\n\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n    super.dispose()\n  }\n\n  handleUpdate() {\n    // Provided for API consistency with Modal.\n    // Native dialogs handle their own positioning.\n  }\n\n  // Private\n  _hideDialog() {\n    this._element.close()\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n    this._isTransitioning = false\n\n    // Only restore body scroll if no other modal dialogs are open\n    if (!document.querySelector(SELECTOR_OPEN_MODAL_DIALOG)) {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n    }\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains('fade')\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      this._element.classList.remove(CLASS_NAME_STATIC)\n    }, this._element)\n  }\n\n  _addEventListeners() {\n    // Handle native cancel event (Escape key) - only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      // Prevent native close behavior - we'll handle it\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_CANCEL)\n      this.hide()\n    })\n\n    // Handle Escape key for non-modal dialogs (native cancel doesn't fire for show())\n    EventHandler.on(this._element, 'keydown', event => {\n      if (event.key !== 'Escape' || this._config.modal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_CANCEL)\n      this.hide()\n    })\n\n    // Handle backdrop clicks (only applies to modal dialogs)\n    // Native <dialog> fires click on the dialog element when backdrop is clicked\n    EventHandler.on(this._element, 'click', event => {\n      // Only handle clicks directly on the dialog (backdrop area)\n      // Non-modal dialogs don't have a backdrop\n      if (event.target !== this._element || !this._config.modal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      // Default: click backdrop to dismiss\n      this.hide()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  // Get config from trigger's data attributes\n  const config = Manipulator.getDataAttributes(this)\n\n  // Check if trigger is inside an open dialog\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Open new dialog first (its backdrop appears over current)\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    newDialog.show(this)\n\n    // Close the current dialog (no backdrop flash since new one is already open)\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      currentInstance.hide()\n    }\n\n    return\n  }\n\n  const data = Dialog.getOrCreateInstance(target, config)\n  data.toggle(this)\n})\n\nenableDismissTrigger(Dialog)\n\nexport default Dialog\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap nav-overflow.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'navoverflow'\nconst DATA_KEY = 'bs.navoverflow'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_UPDATE = `update${EVENT_KEY}`\nconst EVENT_OVERFLOW = `overflow${EVENT_KEY}`\n\nconst CLASS_NAME_OVERFLOW = 'nav-overflow'\nconst CLASS_NAME_OVERFLOW_MENU = 'nav-overflow-menu'\nconst CLASS_NAME_HIDDEN = 'd-none'\n\nconst SELECTOR_NAV_ITEM = '.nav-item'\nconst SELECTOR_NAV_LINK = '.nav-link'\nconst SELECTOR_OVERFLOW_TOGGLE = '.nav-overflow-toggle'\nconst SELECTOR_OVERFLOW_MENU = '.nav-overflow-menu'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  moreText: 'More',\n  moreIcon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\"><path d=\"M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3\"/></svg>',\n  threshold: 0 // Minimum items to keep visible before showing overflow\n}\n\nconst DefaultType = {\n  moreText: 'string',\n  moreIcon: 'string',\n  threshold: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass NavOverflow extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._items = []\n    this._overflowItems = []\n    this._overflowMenu = null\n    this._overflowToggle = null\n    this._resizeObserver = null\n    this._isInitialized = false\n\n    this._init()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._calculateOverflow()\n    EventHandler.trigger(this._element, EVENT_UPDATE)\n  }\n\n  dispose() {\n    if (this._resizeObserver) {\n      this._resizeObserver.disconnect()\n    }\n\n    // Move items back to original positions\n    this._restoreItems()\n\n    // Remove overflow menu\n    if (this._overflowToggle && this._overflowToggle.parentElement) {\n      this._overflowToggle.parentElement.remove()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _init() {\n    // Add overflow class to nav\n    this._element.classList.add(CLASS_NAME_OVERFLOW)\n\n    // Get all nav items\n    this._items = [...SelectorEngine.find(SELECTOR_NAV_ITEM, this._element)]\n\n    // Store original order data\n    for (const [index, item] of this._items.entries()) {\n      item.dataset.bsNavOrder = index\n    }\n\n    // Create overflow menu if it doesn't exist\n    this._createOverflowMenu()\n\n    // Setup resize observer\n    this._setupResizeObserver()\n\n    // Initial calculation\n    this._calculateOverflow()\n\n    this._isInitialized = true\n  }\n\n  _createOverflowMenu() {\n    // Check if overflow menu already exists\n    this._overflowToggle = SelectorEngine.findOne(SELECTOR_OVERFLOW_TOGGLE, this._element)\n\n    if (this._overflowToggle) {\n      this._overflowMenu = SelectorEngine.findOne(SELECTOR_OVERFLOW_MENU, this._element)\n      return\n    }\n\n    const overflowItem = document.createElement('li')\n    overflowItem.className = 'nav-item nav-overflow-item'\n    overflowItem.innerHTML = `\n      <button class=\"nav-link nav-overflow-toggle\" type=\"button\" data-bs-toggle=\"menu\" data-bs-placement=\"bottom-end\" aria-expanded=\"false\">\n        <span class=\"nav-overflow-icon\">${this._config.moreIcon}</span>\n        <span class=\"nav-overflow-text\">${this._config.moreText}</span>\n      </button>\n      <div class=\"${CLASS_NAME_OVERFLOW_MENU} menu\"></div>\n    `\n\n    this._element.append(overflowItem)\n    this._overflowToggle = overflowItem.querySelector(SELECTOR_OVERFLOW_TOGGLE)\n    this._overflowMenu = overflowItem.querySelector(SELECTOR_OVERFLOW_MENU)\n  }\n\n  _setupResizeObserver() {\n    if (typeof ResizeObserver === 'undefined') {\n      // Fallback for older browsers\n      EventHandler.on(window, 'resize', () => this._calculateOverflow())\n      return\n    }\n\n    this._resizeObserver = new ResizeObserver(() => {\n      this._calculateOverflow()\n    })\n\n    this._resizeObserver.observe(this._element)\n  }\n\n  _calculateOverflow() {\n    // First, restore all items to measure properly\n    this._restoreItems()\n\n    const navWidth = this._element.offsetWidth\n    const overflowItem = this._overflowToggle?.closest('.nav-item')\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      const itemWidth = item.offsetWidth\n      usedWidth += itemWidth\n\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      if (usedWidth > overflowThreshold) {\n        itemsToOverflow.push(item)\n      }\n    }\n\n    // Check if we need threshold minimum visible\n    const visibleCount = this._items.length - itemsToOverflow.length\n    if (visibleCount < this._config.threshold && this._items.length > this._config.threshold) {\n      // Add more items to overflow until we reach threshold (but not keep items)\n      const toMove = this._items.slice(this._config.threshold).filter(item => !item.classList.contains(CLASS_NAME_KEEP))\n      itemsToOverflow.length = 0\n      itemsToOverflow.push(...toMove)\n    }\n\n    // Move items to overflow menu\n    this._moveToOverflow(itemsToOverflow)\n\n    // Show/hide overflow toggle\n    if (overflowItem) {\n      if (itemsToOverflow.length > 0) {\n        overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n      } else {\n        overflowItem.classList.add(CLASS_NAME_HIDDEN)\n      }\n    }\n\n    // Trigger overflow event if items changed\n    if (itemsToOverflow.length > 0) {\n      EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n        overflowCount: itemsToOverflow.length,\n        visibleCount: this._items.length - itemsToOverflow.length\n      })\n    }\n  }\n\n  _moveToOverflow(items) {\n    if (!this._overflowMenu) {\n      return\n    }\n\n    // Clear existing overflow items\n    this._overflowMenu.innerHTML = ''\n    this._overflowItems = []\n\n    for (const item of items) {\n      const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item)\n      if (!link) {\n        continue\n      }\n\n      const clonedLink = link.cloneNode(true)\n      clonedLink.className = 'menu-item'\n\n      if (link.classList.contains('active')) {\n        clonedLink.classList.add('active')\n      }\n\n      if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {\n        clonedLink.classList.add('disabled')\n      }\n\n      this._overflowMenu.append(clonedLink)\n\n      // Hide original item\n      item.classList.add(CLASS_NAME_HIDDEN)\n      item.dataset.bsNavOverflow = 'true'\n\n      this._overflowItems.push(item)\n    }\n  }\n\n  _restoreItems() {\n    for (const item of this._items) {\n      item.classList.remove(CLASS_NAME_HIDDEN)\n      delete item.dataset.bsNavOverflow\n    }\n\n    if (this._overflowMenu) {\n      this._overflowMenu.innerHTML = ''\n    }\n\n    this._overflowItems = []\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const element of SelectorEngine.find('[data-bs-toggle=\"nav-overflow\"]')) {\n    NavOverflow.getOrCreateInstance(element)\n  }\n})\n\nexport default NavOverflow\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport {\n  execute, executeAfterTransition, getElement, reflow\n} from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n  className: 'modal-backdrop',\n  clickCallback: null,\n  isAnimated: false,\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n  className: 'string',\n  clickCallback: '(function|null)',\n  isAnimated: 'boolean',\n  isVisible: 'boolean',\n  rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    const element = this._getElement()\n    if (this._config.isAnimated) {\n      reflow(element)\n    }\n\n    element.classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  // Private\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = this._config.className\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _configAfterMerge(config) {\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    const element = this._getElement()\n    this._config.rootElement.append(element)\n\n    EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n  autofocus: true,\n  trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n  autofocus: 'boolean',\n  trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isActive = false\n    this._lastTabNavDirection = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  activate() {\n    if (this._isActive) {\n      return\n    }\n\n    if (this._config.autofocus) {\n      this._config.trapElement.focus()\n    }\n\n    EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n    this._isActive = true\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return\n    }\n\n    this._isActive = false\n    EventHandler.off(document, EVENT_KEY)\n  }\n\n  // Private\n  _handleFocusin(event) {\n    const { trapElement } = this._config\n\n    if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n      return\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement)\n\n    if (elements.length === 0) {\n      trapElement.focus()\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus()\n    } else {\n      elements[0].focus()\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n  }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  // Public\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n\n  // Private\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProperty, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProperty)\n      const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n      element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _saveInitialAttribute(element, styleProperty) {\n    const actualValue = element.style.getPropertyValue(styleProperty)\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProperty, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProperty) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProperty)\n      // We only want to remove the property if the value is `null`; the value can also be zero\n      if (value === null) {\n        element.style.removeProperty(styleProperty)\n        return\n      }\n\n      Manipulator.removeDataAttribute(element, styleProperty)\n      element.style.setProperty(styleProperty, value)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n      return\n    }\n\n    for (const sel of SelectorEngine.find(selector, this._element)) {\n      callBack(sel)\n    }\n  }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n  isDisabled,\n  isVisible\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n    }\n\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    const completeCallBack = () => {\n      if (!this._config.scroll || this._config.backdrop) {\n        this._focustrap.activate()\n      }\n\n      this._element.classList.add(CLASS_NAME_SHOW)\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._focustrap.deactivate()\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.add(CLASS_NAME_HIDING)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  // Private\n  _initializeBackDrop() {\n    const clickCallback = () => {\n      if (this._config.backdrop === 'static') {\n        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n        return\n      }\n\n      this.hide()\n    }\n\n    // 'static' option will be translated to true, and booleans will keep their value\n    const isVisible = Boolean(this._config.backdrop)\n\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: isVisible ? clickCallback : null\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (event.key !== ESCAPE_KEY) {\n        return\n      }\n\n      if (this._config.keyboard) {\n        this.hide()\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (alreadyOpen && alreadyOpen !== target) {\n    Offcanvas.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n    Offcanvas.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Offcanvas.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap strength.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'strength'\nconst DATA_KEY = 'bs.strength'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_STRENGTH_CHANGE = `strengthChange${EVENT_KEY}`\n\nconst SELECTOR_DATA_STRENGTH = '[data-bs-strength]'\n\nconst STRENGTH_LEVELS = ['weak', 'fair', 'good', 'strong']\n\nconst Default = {\n  input: null, // Selector or element for password input\n  minLength: 8,\n  messages: {\n    weak: 'Weak',\n    fair: 'Fair',\n    good: 'Good',\n    strong: 'Strong'\n  },\n  weights: {\n    minLength: 1,\n    extraLength: 1,\n    lowercase: 1,\n    uppercase: 1,\n    numbers: 1,\n    special: 1,\n    multipleSpecial: 1,\n    longPassword: 1\n  },\n  thresholds: [2, 4, 6], // weak ≤2, fair ≤4, good ≤6, strong >6\n  scorer: null // Custom scoring function (password) => number\n}\n\nconst DefaultType = {\n  input: '(string|element|null)',\n  minLength: 'number',\n  messages: 'object',\n  weights: 'object',\n  thresholds: 'array',\n  scorer: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Strength extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = this._getInput()\n    this._segments = SelectorEngine.find('.strength-segment', this._element)\n    this._textElement = SelectorEngine.findOne('.strength-text', this._element.parentElement)\n    this._currentStrength = null\n\n    if (this._input) {\n      this._addEventListeners()\n      // Check initial value\n      this._evaluate()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getStrength() {\n    return this._currentStrength\n  }\n\n  evaluate() {\n    this._evaluate()\n  }\n\n  // Private\n  _getInput() {\n    if (this._config.input) {\n      return typeof this._config.input === 'string' ?\n        SelectorEngine.findOne(this._config.input) :\n        this._config.input\n    }\n\n    // Look for preceding password input\n    const parent = this._element.parentElement\n    return SelectorEngine.findOne('input[type=\"password\"]', parent)\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, 'input', () => this._evaluate())\n    EventHandler.on(this._input, 'change', () => this._evaluate())\n  }\n\n  _evaluate() {\n    const password = this._input.value\n    const score = this._calculateScore(password)\n    const strength = this._scoreToStrength(score)\n\n    if (strength !== this._currentStrength) {\n      this._currentStrength = strength\n      this._updateUI(strength, score)\n\n      EventHandler.trigger(this._element, EVENT_STRENGTH_CHANGE, {\n        strength,\n        score,\n        password: password.length > 0 ? '***' : '' // Don't expose actual password\n      })\n    }\n  }\n\n  _calculateScore(password) {\n    if (!password) {\n      return 0\n    }\n\n    // Use custom scorer if provided\n    if (typeof this._config.scorer === 'function') {\n      return this._config.scorer(password)\n    }\n\n    const { weights } = this._config\n    let score = 0\n\n    // Length scoring\n    if (password.length >= this._config.minLength) {\n      score += weights.minLength\n    }\n\n    if (password.length >= this._config.minLength + 4) {\n      score += weights.extraLength\n    }\n\n    // Character variety\n    if (/[a-z]/.test(password)) {\n      score += weights.lowercase\n    }\n\n    if (/[A-Z]/.test(password)) {\n      score += weights.uppercase\n    }\n\n    if (/\\d/.test(password)) {\n      score += weights.numbers\n    }\n\n    // Special characters\n    if (/[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.special\n    }\n\n    // Extra points for more special chars or length\n    if (/[!@#$%^&*(),.?\":{}|<>].*[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.multipleSpecial\n    }\n\n    if (password.length >= 16) {\n      score += weights.longPassword\n    }\n\n    return score\n  }\n\n  _scoreToStrength(score) {\n    if (score === 0) {\n      return null\n    }\n\n    const [weak, fair, good] = this._config.thresholds\n\n    if (score <= weak) {\n      return 'weak'\n    }\n\n    if (score <= fair) {\n      return 'fair'\n    }\n\n    if (score <= good) {\n      return 'good'\n    }\n\n    return 'strong'\n  }\n\n  _updateUI(strength) {\n    // Update data attribute on element\n    if (strength) {\n      this._element.dataset.bsStrength = strength\n    } else {\n      delete this._element.dataset.bsStrength\n    }\n\n    // Update segmented meter\n    const strengthIndex = strength ? STRENGTH_LEVELS.indexOf(strength) : -1\n\n    for (const [index, segment] of this._segments.entries()) {\n      if (index <= strengthIndex) {\n        segment.classList.add('active')\n      } else {\n        segment.classList.remove('active')\n      }\n    }\n\n    // Update text feedback\n    if (this._textElement) {\n      if (strength && this._config.messages[strength]) {\n        this._textElement.textContent = this._config.messages[strength]\n        this._textElement.dataset.bsStrength = strength\n\n        // Also set the color via inheriting from parent or using CSS variable\n        const colorMap = {\n          weak: 'danger',\n          fair: 'warning',\n          good: 'info',\n          strong: 'success'\n        }\n        this._textElement.style.setProperty('--strength-color', `var(--${colorMap[strength]}-text)`)\n      } else {\n        this._textElement.textContent = ''\n        delete this._textElement.dataset.bsStrength\n      }\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_STRENGTH)) {\n    Strength.getOrCreateInstance(element)\n  }\n})\n\nexport default Strength\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap otp-input.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'otpInput'\nconst DATA_KEY = 'bs.otp-input'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\nconst Default = {\n  length: 6,\n  mask: false\n}\n\nconst DefaultType = {\n  length: 'number',\n  mask: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._inputs = SelectorEngine.find(SELECTOR_INPUT, this._element)\n    this._setupInputs()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getValue() {\n    return this._inputs.map(input => input.value).join('')\n  }\n\n  setValue(value) {\n    const chars = String(value).split('')\n    for (const [index, input] of this._inputs.entries()) {\n      input.value = chars[index] || ''\n    }\n\n    this._checkComplete()\n  }\n\n  clear() {\n    for (const input of this._inputs) {\n      input.value = ''\n    }\n\n    this._inputs[0]?.focus()\n  }\n\n  focus() {\n    // Focus first empty input, or last input if all filled\n    const emptyInput = this._inputs.find(input => !input.value)\n    if (emptyInput) {\n      emptyInput.focus()\n    } else {\n      this._inputs.at(-1)?.focus()\n    }\n  }\n\n  // Private\n  _setupInputs() {\n    for (const input of this._inputs) {\n      // Set attributes for proper OTP handling\n      input.setAttribute('maxlength', '1')\n      input.setAttribute('inputmode', 'numeric')\n      input.setAttribute('pattern', '\\\\d*')\n\n      // First input gets autocomplete for browser OTP autofill\n      if (input === this._inputs[0]) {\n        input.setAttribute('autocomplete', 'one-time-code')\n      } else {\n        input.setAttribute('autocomplete', 'off')\n      }\n\n      // Mask input if configured\n      if (this._config.mask) {\n        input.setAttribute('type', 'password')\n      }\n    }\n  }\n\n  _addEventListeners() {\n    for (const [index, input] of this._inputs.entries()) {\n      EventHandler.on(input, 'input', event => this._handleInput(event, index))\n      EventHandler.on(input, 'keydown', event => this._handleKeydown(event, index))\n      EventHandler.on(input, 'paste', event => this._handlePaste(event))\n      EventHandler.on(input, 'focus', event => this._handleFocus(event))\n    }\n  }\n\n  _handleInput(event, index) {\n    const input = event.target\n\n    // Only allow digits\n    if (!/^\\d*$/.test(input.value)) {\n      input.value = input.value.replace(/\\D/g, '')\n    }\n\n    const { value } = input\n\n    // Handle multi-character input (some browsers/autofill)\n    if (value.length > 1) {\n      // Distribute characters across inputs\n      const chars = value.split('')\n      input.value = chars[0] || ''\n\n      for (let i = 1; i < chars.length && index + i < this._inputs.length; i++) {\n        this._inputs[index + i].value = chars[i]\n      }\n\n      // Focus appropriate input\n      const nextIndex = Math.min(index + chars.length, this._inputs.length - 1)\n      this._inputs[nextIndex].focus()\n    } else if (value && index < this._inputs.length - 1) {\n      // Auto-advance to next input\n      this._inputs[index + 1].focus()\n    }\n\n    EventHandler.trigger(this._element, EVENT_INPUT, {\n      value: this.getValue(),\n      index\n    })\n\n    this._checkComplete()\n  }\n\n  _handleKeydown(event, index) {\n    const { key } = event\n\n    switch (key) {\n      case 'Backspace': {\n        if (!this._inputs[index].value && index > 0) {\n          // Move to previous input and clear it\n          event.preventDefault()\n          this._inputs[index - 1].value = ''\n          this._inputs[index - 1].focus()\n        }\n\n        break\n      }\n\n      case 'Delete': {\n        // Clear current and shift remaining values left\n        event.preventDefault()\n        for (let i = index; i < this._inputs.length - 1; i++) {\n          this._inputs[i].value = this._inputs[i + 1].value\n        }\n\n        this._inputs.at(-1).value = ''\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (index > 0) {\n          event.preventDefault()\n          this._inputs[index - 1].focus()\n        }\n\n        break\n      }\n\n      case 'ArrowRight': {\n        if (index < this._inputs.length - 1) {\n          event.preventDefault()\n          this._inputs[index + 1].focus()\n        }\n\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handlePaste(event) {\n    event.preventDefault()\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    const digits = pastedData.replace(/\\D/g, '').slice(0, this._inputs.length)\n\n    if (digits) {\n      this.setValue(digits)\n\n      // Focus last filled input or last input\n      const lastIndex = Math.min(digits.length, this._inputs.length) - 1\n      this._inputs[lastIndex].focus()\n    }\n  }\n\n  _handleFocus(event) {\n    // Select the content on focus for easy replacement\n    event.target.select()\n  }\n\n  _checkComplete() {\n    const value = this.getValue()\n    const isComplete = value.length === this._inputs.length &&\n      this._inputs.every(input => input.value !== '')\n\n    if (isComplete) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  dd: [],\n  div: [],\n  dl: [],\n  dt: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n      continue\n    }\n\n    const attributeList = [].concat(...element.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [undefined, this])\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  arrow,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport {\n  execute, findShadowRoot, getElement, getUID, isRTL, noop\n} from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tooltip\"]'\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 6],\n  placement: 'top',\n  floatingConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  floatingConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._floatingCleanup = null\n    this._templateFactory = null\n    this._newContent = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n\n    // Protected\n    this.tip = null\n\n    this._parseResponsivePlacements()\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposeFloating()\n    this._disposeMediaQueryListeners()\n    super.dispose()\n  }\n\n  async show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    this._disposeFloating()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    const { container } = this._config\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    await this._createFloating(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposeFloating()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._floatingCleanup && this.tip) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle())\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposeFloating()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement(tip) {\n    // If we have responsive placements, get the one for current viewport\n    if (this._responsivePlacements) {\n      const placement = getResponsivePlacement(this._responsivePlacements, 'top')\n      return AttachmentMap[placement.toUpperCase()] || placement\n    }\n\n    // Execute placement (can be a function)\n    const placement = execute(this._config.placement, [this, tip, this._element])\n    return AttachmentMap[placement.toUpperCase()] || placement\n  }\n\n  _parseResponsivePlacements() {\n    // Only parse if placement is a string (not a function)\n    if (typeof this._config.placement !== 'string') {\n      this._responsivePlacements = null\n      return\n    }\n\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, 'top')\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  async _createFloating(tip) {\n    const placement = this._getPlacement(tip)\n    const arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n\n    // Initial position update\n    await this._updateFloatingPosition(tip, placement, arrowElement)\n\n    // Set up auto-update for scroll/resize\n    this._floatingCleanup = autoUpdate(\n      this._element,\n      tip,\n      () => this._updateFloatingPosition(tip, null, arrowElement)\n    )\n  }\n\n  async _updateFloatingPosition(tip = this.tip, placement = null, arrowElement = null) {\n    if (!tip) {\n      return\n    }\n\n    if (!placement) {\n      placement = this._getPlacement(tip)\n    }\n\n    if (!arrowElement) {\n      arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n    }\n\n    const middleware = this._getFloatingMiddleware(arrowElement)\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    const { x, y, placement: finalPlacement, middlewareData } = await computePosition(\n      this._element,\n      tip,\n      floatingConfig\n    )\n\n    // Apply position to tooltip\n    Object.assign(tip.style, {\n      position: 'absolute',\n      left: `${x}px`,\n      top: `${y}px`\n    })\n\n    // Ensure arrow is absolutely positioned within tooltip\n    if (arrowElement) {\n      arrowElement.style.position = 'absolute'\n    }\n\n    // Set placement attribute for CSS arrow styling\n    Manipulator.setDataAttribute(tip, 'placement', finalPlacement)\n\n    // Position arrow along the edge (center it) if present\n    // The CSS handles which edge to place it on via data-bs-placement\n    if (arrowElement && middlewareData.arrow) {\n      const { x: arrowX, y: arrowY } = middlewareData.arrow\n      const isVertical = finalPlacement.startsWith('top') || finalPlacement.startsWith('bottom')\n\n      // Only set the cross-axis position (centering along the edge)\n      // The main-axis position (which edge) is handled by CSS\n      Object.assign(arrowElement.style, {\n        left: isVertical && arrowX !== null ? `${arrowX}px` : '',\n        top: !isVertical && arrowY !== null ? `${arrowY}px` : '',\n        // Reset the other axis to let CSS handle it\n        right: '',\n        bottom: ''\n      })\n    }\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      // Floating UI passes different args, adapt the interface for offset function callbacks\n      return ({ placement, rects }) => {\n        const result = offset({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this._element, this._element])\n  }\n\n  _getFloatingMiddleware(arrowElement) {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      // Offset middleware - handles distance from reference\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      // Flip middleware - handles fallback placements\n      flip({\n        fallbackPlacements: this._config.fallbackPlacements\n      }),\n      // Shift middleware - prevents overflow\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    // Arrow middleware - positions the arrow element\n    if (arrowElement) {\n      middleware.push(arrow({ element: arrowElement }))\n    }\n\n    return middleware\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK])\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const [key, value] of Object.entries(this._config)) {\n      if (this.constructor.Default[key] !== value) {\n        config[key] = value\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n}\n\n/**\n * Data API implementation - auto-initialize tooltips\n */\n\nconst initTooltip = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Get or create instance and trigger the appropriate action\n  const tooltip = Tooltip.getOrCreateInstance(target)\n\n  // For focus events, manually trigger enter to show\n  if (event.type === 'focusin') {\n    tooltip._activeTrigger.focus = true\n    tooltip._enter()\n  }\n}\n\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initTooltip)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initTooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"popover\"]'\n\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_MOUSEENTER = 'mouseenter'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return this._getTitle() || this._getContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n}\n\n/**\n * Data API implementation - auto-initialize popovers\n */\n\nconst initPopover = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Prevent default for click events to avoid navigation\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Get or create instance\n  const popover = Popover.getOrCreateInstance(target)\n\n  // Trigger the appropriate action based on event type\n  if (event.type === 'click') {\n    popover.toggle()\n  } else if (event.type === 'focusin') {\n    popover._activeTrigger.focus = true\n    popover._enter()\n  }\n}\n\n// Support click (default), hover, and focus triggers\nEventHandler.on(document, EVENT_CLICK, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initPopover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_MENU_ITEM = 'menu-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\n\nconst Default = {\n  rootMargin: '0px 0px -25%',\n  smoothScroll: false,\n  target: null,\n  threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n  rootMargin: 'string',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n    this._activeTarget = null\n    this._observer = null\n    this._previousScrollData = {\n      visibleEntryTop: 0,\n      parentScrollTop: 0\n    }\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    } else {\n      this._observer = this._getNewObserver()\n    }\n\n    for (const section of this._observableSections.values()) {\n      this._observer.observe(section)\n    }\n  }\n\n  dispose() {\n    this._observer.disconnect()\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.target = getElement(config.target) || document.body\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // unregister any previous listeners\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const observableSection = this._observableSections.get(event.target.hash)\n      if (observableSection) {\n        event.preventDefault()\n        const root = this._rootElement || window\n        const height = observableSection.offsetTop - this._element.offsetTop\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'smooth' })\n          return\n        }\n\n        // Chrome 60 doesn't support `scrollTo`\n        root.scrollTop = height\n      }\n    })\n  }\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin\n    }\n\n    return new IntersectionObserver(entries => this._observerCallback(entries), options)\n  }\n\n  // The logic of selection\n  _observerCallback(entries) {\n    const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n    const activate = entry => {\n      this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n      this._process(targetElement(entry))\n    }\n\n    const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n    const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n    this._previousScrollData.parentScrollTop = parentScrollTop\n\n    for (const entry of entries) {\n      if (!entry.isIntersecting) {\n        this._activeTarget = null\n        this._clearActiveClass(targetElement(entry))\n\n        continue\n      }\n\n      const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n      // if we are scrolling down, pick the bigger offsetTop\n      if (userScrollsDown && entryIsLowerThanPrevious) {\n        activate(entry)\n        // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n        if (!parentScrollTop) {\n          return\n        }\n\n        continue\n      }\n\n      // if we are scrolling up, pick the smallest offsetTop\n      if (!userScrollsDown && !entryIsLowerThanPrevious) {\n        activate(entry)\n      }\n    }\n  }\n\n  _initializeTargetsAndObservables() {\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n    for (const anchor of targetLinks) {\n      // ensure that the anchor has an id and is not disabled\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element)\n\n      // ensure that the observableSection exists & is visible\n      if (isVisible(observableSection)) {\n        this._targetLinks.set(decodeURI(anchor.hash), anchor)\n        this._observableSections.set(anchor.hash, observableSection)\n      }\n    }\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate menu parents\n    if (target.classList.contains(CLASS_NAME_MENU_ITEM)) {\n      const menuToggle = target.closest('.menu')?.previousElementSibling\n      if (menuToggle?.matches(SELECTOR_MENU_TOGGLE)) {\n        menuToggle.classList.add(CLASS_NAME_ACTIVE)\n      }\n\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\nconst SELECTOR_MENU = '.menu'\nconst NOT_SELECTOR_MENU_TOGGLE = `:not(${SELECTOR_MENU_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_MENU_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_TAB_PANEL}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleMenu(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleMenu(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n\n    const children = this._getChildren().filter(element => !isDisabled(element))\n    let nextActiveElement\n\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n    }\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n    }\n  }\n\n  _toggleMenu(element, open) {\n    const outerElem = this._getOuterElement(element)\n    const menuToggle = SelectorEngine.findOne(SELECTOR_MENU_TOGGLE, outerElem)\n    if (!menuToggle) {\n      return\n    }\n\n    const menu = SelectorEngine.findOne(SELECTOR_MENU, outerElem)\n\n    menuToggle.classList.toggle(CLASS_NAME_ACTIVE, open)\n    if (menu) {\n      menu.classList.toggle(CLASS_NAME_SHOW, open)\n    }\n\n    menuToggle.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toggler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { eventActionOnPlugin } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toggler'\nconst DATA_KEY = 'bs.toggler'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_TOGGLE = `toggle${EVENT_KEY}`\nconst EVENT_TOGGLED = `toggled${EVENT_KEY}`\nconst EVENT_CLICK = 'click'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"toggler\"]'\n\nconst DefaultType = {\n  attribute: 'string',\n  value: '(string|number|boolean)'\n}\n\nconst Default = {\n  attribute: 'class',\n  value: null\n}\n\n/**\n * Class definition\n */\n\nclass Toggler extends BaseComponent {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    const toggleEvent = EventHandler.trigger(this._element, EVENT_TOGGLE)\n\n    if (toggleEvent.defaultPrevented) {\n      return\n    }\n\n    this._execute()\n\n    EventHandler.trigger(this._element, EVENT_TOGGLED)\n  }\n\n  // Private\n  _execute() {\n    const { attribute, value } = this._config\n\n    if (attribute === 'id') {\n      return // You have to be kidding\n    }\n\n    if (attribute === 'class') {\n      this._element.classList.toggle(value)\n      return\n    }\n\n    // Compare as strings since getAttribute() always returns a string\n    if (this._element.getAttribute(attribute) === String(value)) {\n      this._element.removeAttribute(attribute)\n      return\n    }\n\n    this._element.setAttribute(attribute, value)\n  }\n}\n\n/**\n * Data API implementation\n */\n\neventActionOnPlugin(Toggler, EVENT_CLICK, SELECTOR_DATA_TOGGLE, 'toggle')\n\nexport default Toggler\n"],"names":["elementMap","Map","set","element","key","instance","has","instanceMap","get","size","console","error","Array","from","keys","remove","delete","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","bootstrapHandler","fn","handler","event","hydrateObj","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","selector","domElements","querySelectorAll","target","parentNode","domElement","findHandler","events","callable","delegationSelector","Object","values","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","replace","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","length","elementEvent","slice","keyHandlers","trigger","args","evt","Event","bubbles","cancelable","dispatchEvent","obj","meta","value","defineProperty","configurable","normalizeData","Number","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","getAttribute","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","window","CSS","escape","match","id","toType","object","undefined","prototype","getUID","prefix","Math","floor","random","document","getElementById","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","isElement","nodeType","getElement","querySelector","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","isDisabled","Node","ELEMENT_NODE","classList","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","isRTL","dir","execute","possibleCallback","defaultValue","executeAfterTransition","callback","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","Config","Default","DefaultType","NAME","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","VERSION","BaseComponent","_element","_config","Data","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","eventName","name","getSelector","hrefAttribute","trim","map","sel","join","SelectorEngine","concat","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","preventDefault","eventActionOnPlugin","Plugin","onEvent","stringSelector","eventAction","data","instances","targets","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","closeEvent","defaultPrevented","_destroyElement","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","button","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","touches","clientX","_eventIsPointerPenTouch","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM_IMG","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","KEY_TO_DIRECTION","interval","keyboard","pause","ride","touch","wrap","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","visibilityState","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","_addTouchEventListeners","img","endCallBack","clearTimeout","swipeConfig","_directionToOrder","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","_orderToDirection","slideEvent","isCycling","directionalClassName","orderClassName","completeCallBack","_isAnimated","clearInterval","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","startEvent","activeInstance","dimension","_getDimension","style","complete","capitalizedDimension","scrollSize","getBoundingClientRect","selected","triggerArray","isOpen","BREAKPOINTS","sm","md","lg","xl","parseResponsivePlacement","placementString","defaultPlacement","parts","placements","xs","part","breakpoint","placement","getResponsivePlacement","responsivePlacements","viewportWidth","innerWidth","activePlacement","breakpointOrder","minWidth","createBreakpointListeners","listeners","mql","matchMedia","disposeBreakpointListeners","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","ENTER_KEY","SPACE_KEY","RIGHT_MOUSE_BUTTON","SUBMENU_CLOSE_DELAY","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_MENU","SELECTOR_SUBMENU","SELECTOR_SUBMENU_TOGGLE","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","DEFAULT_PLACEMENT","SUBMENU_PLACEMENT","resolveLogicalPlacement","triangleSign","p1","p2","p3","x","y","autoClose","boundary","container","display","offset","floatingConfig","menu","reference","strategy","submenuTrigger","submenuDelay","Menu","_openInstances","computePosition","_floatingCleanup","_mediaQueryListeners","_responsivePlacements","_parent","_isSubmenu","_openSubmenus","_submenuCloseTimeouts","_hoverIntentData","_menu","_findMenu","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","showEvent","_moveMenuToContainer","_createFloating","body","focus","focusVisible","_completeHide","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","update","_updateFloatingPosition","hideEvent","referenceElement","autoUpdate","_getPlacement","middleware","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","_setupMediaQueryListeners","_getOffset","offsetConfig","rects","result","floating","offsetValue","mainAxis","crossAxis","flip","fallbackPlacements","_getFallbackPlacements","shift","fallbackMap","bottom","top","right","left","defaultConfig","_getContainer","append","isConnected","finalPlacement","assign","position","margin","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","_isMovingTowardSubmenu","_scheduleSubmenuClose","stopPropagation","_closeSubmenu","cleanup","_createSubmenuFloating","nestedSubmenus","nested","nestedWrapper","currentSubmenuWrapper","siblingSubmenus","siblingMenu","siblingWrapper","padding","updatePosition","timeoutId","clear","clientY","timestamp","Date","now","submenuRect","currentPos","lastPos","isRtl","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","hasNeg","hasPos","_selectMenuItem","currentMenu","_handleSubmenuKeydown","enterKey","exitKey","isSubmenuTrigger","requestAnimationFrame","firstItem","parentSubmenuWrapper","parentTrigger","targetItem","clearMenus","composedPath","isMenuTarget","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","isLeftOrRightEvent","isHomeOrEndEvent","isEnterOrSpaceEvent","getToggleButton","EVENT_CHANGE","CLASS_NAME_SELECTED","CLASS_NAME_PLACEHOLDER","SELECTOR_MENU_ITEM","SELECTOR_VALUE","SELECTOR_SEARCH_INPUT","SELECTOR_NO_RESULTS","multiple","placeholder","search","searchNormalize","Combobox","_toggle","_valueDisplay","_searchInput","_noResults","_hiddenInput","_menuInstance","_createHiddenInput","_createMenuInstance","_syncInitialSelection","_filterItems","createElement","insertBefore","selectedItems","_getSelectedItems","_updateToggleText","_updateHiddenInput","_showPlaceholder","item","_selectItem","_handleToggleKeydown","_handleMenuKeydown","_getVisibleItems","previouslySelected","bsValue","textContent","label","query","normalizedQuery","_normalizeText","visibleCount","text","normalize","jQueryInterface","each","EVENT_FOCUSIN_DATA_API","HIDE_DELAY","datepickerTheme","dateMin","dateMax","dateFormat","displayElement","displayMonthsCount","firstWeekday","inline","locale","positionElement","selectedDates","selectionMode","vcpOptions","Datepicker","_calendar","_initCalendar","_themeObserver","disconnect","destroy","getSelectedDates","dates","context","setSelectedDates","_isInput","_isInline","_boundInput","_positionElement","_resolvePositionElement","_displayElement","_resolveDisplayElement","calendarOptions","_buildCalendarOptions","Calendar","init","_setupThemeObserver","_parseInputValue","_updateDisplayWithSelectedDates","formattedDate","_formatDateForInput","displayChild","_getThemeAncestor","_getEffectiveTheme","_syncThemeAttribute","theme","MutationObserver","mainElement","observe","attributeFilter","vcpTheme","inputMode","positionToInput","selectionDatesMode","selectedTheme","themeAttrDetect","onClickDate","self","_handleDateClick","onInit","onShow","onHide","firstDate","_parseDate","selectedMonth","getMonth","selectedYear","getFullYear","_maybeHideAfterSelection","shouldHide","dateStr","year","month","day","_formatDate","date","Intl","DateTimeFormat","format","toLocaleDateString","separator","d","isNaN","getTime","String","padStart","getDate","formatted","bsInline","EVENT_HIDE_PREVENTED","EVENT_CANCEL","CLASS_NAME_STATIC","CLASS_NAME_OPEN","CLASS_NAME_NONMODAL","SELECTOR_OPEN_MODAL_DIALOG","backdrop","modal","Dialog","open","showModal","_hideDialog","handleUpdate","_triggerBackdropTransition","hidePreventedEvent","currentDialog","shouldSwap","newDialog","currentInstance","EVENT_UPDATE","EVENT_OVERFLOW","CLASS_NAME_OVERFLOW","CLASS_NAME_OVERFLOW_MENU","CLASS_NAME_HIDDEN","SELECTOR_NAV_ITEM","SELECTOR_NAV_LINK","SELECTOR_OVERFLOW_TOGGLE","SELECTOR_OVERFLOW_MENU","CLASS_NAME_KEEP","moreText","moreIcon","threshold","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_resizeObserver","_isInitialized","_init","_calculateOverflow","_restoreItems","parentElement","bsNavOrder","_createOverflowMenu","_setupResizeObserver","overflowItem","className","innerHTML","ResizeObserver","navWidth","offsetWidth","overflowWidth","usedWidth","itemsToOverflow","overflowThreshold","itemWidth","toMove","_moveToOverflow","overflowCount","link","clonedLink","cloneNode","bsNavOverflow","EVENT_MOUSEDOWN","clickCallback","rootElement","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","autofocus","trapElement","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","clientWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","reset","_resetElementAttributes","isOverflowing","_saveInitialAttribute","overflow","styleProperty","scrollbarWidth","manipulationCallBack","setProperty","_applyManipulationCallback","actualValue","removeProperty","callBack","CLASS_NAME_SHOWING","CLASS_NAME_HIDING","CLASS_NAME_BACKDROP","OPEN_SELECTOR","EVENT_RESIZE","EVENT_KEYDOWN_DISMISS","scroll","Offcanvas","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","blur","completeCallback","alreadyOpen","EVENT_STRENGTH_CHANGE","SELECTOR_DATA_STRENGTH","STRENGTH_LEVELS","input","minLength","messages","weak","fair","good","strong","weights","extraLength","lowercase","uppercase","numbers","special","multipleSpecial","longPassword","thresholds","scorer","Strength","_input","_getInput","_segments","_textElement","_currentStrength","_evaluate","getStrength","evaluate","password","score","_calculateScore","strength","_scoreToStrength","_updateUI","bsStrength","strengthIndex","segment","colorMap","EVENT_COMPLETE","EVENT_INPUT","SELECTOR_DATA_OTP","SELECTOR_INPUT","mask","OtpInput","_inputs","_setupInputs","getValue","setValue","chars","_checkComplete","emptyInput","at","_handleInput","_handlePaste","_handleFocus","i","nextIndex","pastedData","clipboardData","getData","digits","lastIndex","select","isComplete","every","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","a","area","b","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","li","ol","p","pre","s","small","span","sub","sup","u","ul","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","attributeRegex","some","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","domParser","DOMParser","createdDocument","parseFromString","elementName","attributeList","allowedAttributes","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","_maybeSanitize","_setContent","arg","templateElement","_putElementInTemplate","DISALLOWED_ATTRIBUTES","CLASS_NAME_MODAL","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","_leave","_enter","_hideModalHandler","_isWithContent","shadowRoot","isInTheDom","ownerDocument","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","middlewareData","arrow","arrowX","arrowY","isVertical","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","tooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","popover","EVENT_ACTIVATE","CLASS_NAME_MENU_ITEM","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_MENU_TOGGLE","rootMargin","smoothScroll","ScrollSpy","_targetLinks","_observableSections","_rootElement","overflowY","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","observableSection","hash","height","offsetTop","scrollTo","behavior","scrollTop","options","IntersectionObserver","_observerCallback","targetElement","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","menuToggle","listGroup","activeNodes","node","spy","NOT_SELECTOR_MENU_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","_deactivate","_activate","relatedElem","_toggleMenu","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","EVENT_TOGGLE","EVENT_TOGGLED","Toggler","toggleEvent","_execute"],"mappings":"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"}
\ No newline at end of file
index 85cc3d1e6d64c2cbdcfbb4738f09fc0648b62085..b93688adcefb18d375fbfbebadfdf9296f9a222f 100644 (file)
@@ -3,5 +3,5 @@
   * Copyright 2011-2026 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   */
-import{Calendar}from"vanilla-calendar-pro";import{computePosition,autoUpdate,offset,flip,shift,arrow}from"@floating-ui/dom";const elementMap=new Map,Data={set(e,t,n){elementMap.has(e)||elementMap.set(e,new Map);const i=elementMap.get(e);i.has(t)||0===i.size?i.set(t,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(i.keys())[0]}.`)},get:(e,t)=>elementMap.has(e)&&elementMap.get(e).get(t)||null,remove(e,t){if(!elementMap.has(e))return;const n=elementMap.get(e);n.delete(t),0===n.size&&elementMap.delete(e)}},namespaceRegex=/[^.]*(?=\..*)\.|.*/,stripNameRegex=/\..*/,stripUidRegex=/::\d+$/,eventRegistry={};let uidEvent=1;const customEvents={mouseenter:"mouseover",mouseleave:"mouseout"},nativeEvents=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function makeEventUid(e,t){return t&&`${t}::${uidEvent++}`||e.uidEvent||uidEvent++}function getElementEvents(e){const t=makeEventUid(e);return e.uidEvent=t,eventRegistry[t]=eventRegistry[t]||{},eventRegistry[t]}function bootstrapHandler(e,t){return function n(i){return hydrateObj(i,{delegateTarget:e}),n.oneOff&&EventHandler.off(e,i.type,t),t.apply(e,[i])}}function bootstrapDelegationHandler(e,t,n){return function i(s){const o=e.querySelectorAll(t);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return hydrateObj(s,{delegateTarget:r}),i.oneOff&&EventHandler.off(e,s.type,t,n),n.apply(r,[s])}}function findHandler(e,t,n=null){return Object.values(e).find(e=>e.callable===t&&e.delegationSelector===n)}function normalizeParameters(e,t,n){const i="string"==typeof t,s=i?n:t||n;let o=getTypeEvent(e);return nativeEvents.has(o)||(o=e),[i,s,o]}function addHandler(e,t,n,i,s){if("string"!=typeof t||!e)return;let[o,r,a]=normalizeParameters(t,n,i);if(t in customEvents){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};r=e(r)}const l=getElementEvents(e),c=l[a]||(l[a]={}),_=findHandler(c,r,o?n:null);if(_)return void(_.oneOff=_.oneOff&&s);const E=makeEventUid(r,t.replace(namespaceRegex,"")),h=o?bootstrapDelegationHandler(e,n,r):bootstrapHandler(e,r);h.delegationSelector=o?n:null,h.callable=r,h.oneOff=s,h.uidEvent=E,c[E]=h,e.addEventListener(a,h,o)}function removeHandler(e,t,n,i,s){const o=findHandler(t[n],i,s);o&&(e.removeEventListener(n,o,Boolean(s)),delete t[n][o.uidEvent])}function removeNamespacedHandlers(e,t,n,i){const s=t[n]||{};for(const[o,r]of Object.entries(s))o.includes(i)&&removeHandler(e,t,n,r.callable,r.delegationSelector)}function getTypeEvent(e){return e=e.replace(stripNameRegex,""),customEvents[e]||e}const EventHandler={on(e,t,n,i){addHandler(e,t,n,i,!1)},one(e,t,n,i){addHandler(e,t,n,i,!0)},off(e,t,n,i){if("string"!=typeof t||!e)return;const[s,o,r]=normalizeParameters(t,n,i),a=r!==t,l=getElementEvents(e),c=l[r]||{},_=t.startsWith(".");if(void 0===o){if(_)for(const n of Object.keys(l))removeNamespacedHandlers(e,l,n,t.slice(1));for(const[n,i]of Object.entries(c)){const s=n.replace(stripUidRegex,"");a&&!t.includes(s)||removeHandler(e,l,r,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;removeHandler(e,l,r,o,s?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=hydrateObj(new Event(t,{bubbles:!0,cancelable:!0}),n);return e.dispatchEvent(i),i}};function hydrateObj(e,t={}){for(const[n,i]of Object.entries(t))try{e[n]=i}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>i})}return e}function normalizeData(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function normalizeDataKey(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}const Manipulator={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${normalizeDataKey(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${normalizeDataKey(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter(e=>e.startsWith("bs")&&!e.startsWith("bsConfig"));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1),t[n]=normalizeData(e.dataset[i])}return t},getDataAttribute:(e,t)=>normalizeData(e.getAttribute(`data-bs-${normalizeDataKey(t)}`))},MAX_UID=1e6,MILLISECONDS_MULTIPLIER=1e3,TRANSITION_END="transitionend",parseSelector=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(e,t)=>`#${CSS.escape(t)}`)),e),toType=e=>null==e?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),getUID=e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e},getTransitionDurationFromElement=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const i=Number.parseFloat(t),s=Number.parseFloat(n);return i||s?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0},triggerTransitionEnd=e=>{e.dispatchEvent(new Event(TRANSITION_END))},isElement=e=>!(!e||"object"!=typeof e)&&void 0!==e.nodeType,getElement=e=>isElement(e)?e:"string"==typeof e&&e.length>0?document.querySelector(parseSelector(e)):null,isVisible=e=>{if(!isElement(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t},isDisabled=e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")),findShadowRoot=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?findShadowRoot(e.parentNode):null},noop=()=>{},reflow=e=>{e.offsetHeight},isRTL=()=>"rtl"===document.documentElement.dir,execute=(e,t=[],n=e)=>"function"==typeof e?e.call(...t):n,executeAfterTransition=(e,t,n=!0)=>{if(!n)return void execute(e);const i=getTransitionDurationFromElement(t)+5;let s=!1;const o=({target:n})=>{n===t&&(s=!0,t.removeEventListener(TRANSITION_END,o),execute(e))};t.addEventListener(TRANSITION_END,o),setTimeout(()=>{s||triggerTransitionEnd(t)},i)},getNextActiveElement=(e,t,n,i)=>{const s=e.length;let o=e.indexOf(t);return-1===o?!n&&i?e[s-1]:e[0]:(o+=n?1:-1,i&&(o=(o+s)%s),e[Math.max(0,Math.min(o,s-1))])};class Config{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=isElement(t)?Manipulator.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...isElement(t)?Manipulator.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e,t=this.constructor.DefaultType){for(const[n,i]of Object.entries(t)){const t=e[n],s=isElement(t)?"element":toType(t);if(!new RegExp(i).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${s}" but expected type "${i}".`)}}}const VERSION="6.0.0-alpha1";class BaseComponent extends Config{constructor(e,t){super(),(e=getElement(e))&&(this._element=e,this._config=this._getConfig(t),Data.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Data.remove(this._element,this.constructor.DATA_KEY),EventHandler.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t,n=!0){executeAfterTransition(e,t,n)}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return Data.get(getElement(e),this.DATA_KEY)}static getOrCreateInstance(e,t={}){return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return VERSION}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const getSelector=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map(e=>parseSelector(e)).join(","):null},SelectorEngine={find:(e,t=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(t,e)),findOne:(e,t=document.documentElement)=>Element.prototype.querySelector.call(t,e),children:(e,t)=>[].concat(...e.children).filter(e=>e.matches(t)),parents(e,t){const n=[];let i=e.parentNode.closest(t);for(;i;)n.push(i),i=i.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(e=>`${e}:not([tabindex^="-"])`).join(",");return this.find(t,e).filter(e=>!isDisabled(e)&&isVisible(e))},getSelectorFromElement(e){const t=getSelector(e);return t&&SelectorEngine.findOne(t)?t:null},getElementFromSelector(e){const t=getSelector(e);return t?SelectorEngine.findOne(t):null},getMultipleElementsFromSelector(e){const t=getSelector(e);return t?SelectorEngine.find(t):[]}},enableDismissTrigger=(e,t="hide")=>{const n=`click.dismiss${e.EVENT_KEY}`,i=e.NAME;EventHandler.on(document,n,`[data-bs-dismiss="${i}"]`,function(n){if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),isDisabled(this))return;const s=SelectorEngine.getElementFromSelector(this)||this.closest(`.${i}`);e.getOrCreateInstance(s)[t]()})},eventActionOnPlugin=(e,t,n,i,s=null)=>{eventAction(`${t}.${e.NAME}`,n,t=>{const n=t.targets.filter(Boolean).map(t=>e.getOrCreateInstance(t));"function"==typeof s&&s({...t,instances:n});for(const e of n)e[i]()})},eventAction=(e,t,n)=>{const i=`${t}:not(.disabled):not(:disabled)`;EventHandler.on(document,e,i,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault();const t=SelectorEngine.getSelectorFromElement(this),i=t?SelectorEngine.find(t):[this];n({targets:i,event:e})})},NAME$k="alert",DATA_KEY$f="bs.alert",EVENT_KEY$g=".bs.alert",EVENT_CLOSE="close.bs.alert",EVENT_CLOSED="closed.bs.alert",CLASS_NAME_FADE$4="fade",CLASS_NAME_SHOW$7="show";class Alert extends BaseComponent{static get NAME(){return NAME$k}close(){if(EventHandler.trigger(this._element,EVENT_CLOSE).defaultPrevented)return;this._element.classList.remove("show");const e=this._element.classList.contains("fade");this._queueCallback(()=>this._destroyElement(),this._element,e)}_destroyElement(){this._element.remove(),EventHandler.trigger(this._element,EVENT_CLOSED),this.dispose()}}enableDismissTrigger(Alert,"close");const NAME$j="button",DATA_KEY$e="bs.button",EVENT_KEY$f=`.${DATA_KEY$e}`,DATA_API_KEY$9=".data-api",CLASS_NAME_ACTIVE$3="active",SELECTOR_DATA_TOGGLE$9='[data-bs-toggle="button"]',EVENT_CLICK_DATA_API$7=`click${EVENT_KEY$f}.data-api`;class Button extends BaseComponent{static get NAME(){return NAME$j}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}}EventHandler.on(document,EVENT_CLICK_DATA_API$7,SELECTOR_DATA_TOGGLE$9,e=>{e.preventDefault();const t=e.target.closest(SELECTOR_DATA_TOGGLE$9);Button.getOrCreateInstance(t).toggle()});const NAME$i="swipe",EVENT_KEY$e=".bs.swipe",EVENT_TOUCHSTART="touchstart.bs.swipe",EVENT_TOUCHMOVE="touchmove.bs.swipe",EVENT_TOUCHEND="touchend.bs.swipe",EVENT_POINTERDOWN="pointerdown.bs.swipe",EVENT_POINTERUP="pointerup.bs.swipe",POINTER_TYPE_TOUCH="touch",POINTER_TYPE_PEN="pen",CLASS_NAME_POINTER_EVENT="pointer-event",SWIPE_THRESHOLD=40,Default$h={endCallback:null,leftCallback:null,rightCallback:null},DefaultType$h={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class Swipe extends Config{constructor(e,t){super(),this._element=e,e&&Swipe.isSupported()&&(this._config=this._getConfig(t),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Default$h}static get DefaultType(){return DefaultType$h}static get NAME(){return NAME$i}dispose(){EventHandler.off(this._element,".bs.swipe")}_start(e){this._supportPointerEvents?this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX):this._deltaX=e.touches[0].clientX}_end(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX),this._handleSwipe(),execute(this._config.endCallback)}_move(e){this._deltaX=e.touches&&e.touches.length>1?0:e.touches[0].clientX-this._deltaX}_handleSwipe(){const e=Math.abs(this._deltaX);if(e<=40)return;const t=e/this._deltaX;this._deltaX=0,t&&execute(t>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(EventHandler.on(this._element,EVENT_POINTERDOWN,e=>this._start(e)),EventHandler.on(this._element,EVENT_POINTERUP,e=>this._end(e)),this._element.classList.add("pointer-event")):(EventHandler.on(this._element,EVENT_TOUCHSTART,e=>this._start(e)),EventHandler.on(this._element,EVENT_TOUCHMOVE,e=>this._move(e)),EventHandler.on(this._element,EVENT_TOUCHEND,e=>this._end(e)))}_eventIsPointerPenTouch(e){return this._supportPointerEvents&&("pen"===e.pointerType||"touch"===e.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const NAME$h="carousel",DATA_KEY$d="bs.carousel",EVENT_KEY$d=`.${DATA_KEY$d}`,DATA_API_KEY$8=".data-api",ARROW_LEFT_KEY$2="ArrowLeft",ARROW_RIGHT_KEY$2="ArrowRight",TOUCHEVENT_COMPAT_WAIT=500,ORDER_NEXT="next",ORDER_PREV="prev",DIRECTION_LEFT="left",DIRECTION_RIGHT="right",EVENT_SLIDE=`slide${EVENT_KEY$d}`,EVENT_SLID=`slid${EVENT_KEY$d}`,EVENT_KEYDOWN$1=`keydown${EVENT_KEY$d}`,EVENT_MOUSEENTER$2=`mouseenter${EVENT_KEY$d}`,EVENT_MOUSELEAVE$1=`mouseleave${EVENT_KEY$d}`,EVENT_DRAG_START=`dragstart${EVENT_KEY$d}`,EVENT_LOAD_DATA_API$3=`load${EVENT_KEY$d}.data-api`,EVENT_CLICK_DATA_API$6=`click${EVENT_KEY$d}.data-api`,CLASS_NAME_CAROUSEL="carousel",CLASS_NAME_ACTIVE$2="active",CLASS_NAME_SLIDE="slide",CLASS_NAME_END="carousel-item-end",CLASS_NAME_START="carousel-item-start",CLASS_NAME_NEXT="carousel-item-next",CLASS_NAME_PREV="carousel-item-prev",SELECTOR_ACTIVE=".active",SELECTOR_ITEM=".carousel-item",SELECTOR_ACTIVE_ITEM=".active.carousel-item",SELECTOR_ITEM_IMG=".carousel-item img",SELECTOR_INDICATORS=".carousel-indicators",SELECTOR_DATA_SLIDE="[data-bs-slide], [data-bs-slide-to]",SELECTOR_DATA_RIDE='[data-bs-ride="carousel"]',KEY_TO_DIRECTION={[ARROW_LEFT_KEY$2]:"right",[ARROW_RIGHT_KEY$2]:"left"},Default$g={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},DefaultType$g={interval:"number",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class Carousel extends BaseComponent{constructor(e,t){super(e,t),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=SelectorEngine.findOne(SELECTOR_INDICATORS,this._element),this._addEventListeners(),"carousel"===this._config.ride&&this.cycle()}static get Default(){return Default$g}static get DefaultType(){return DefaultType$g}static get NAME(){return NAME$h}next(){this._slide("next")}nextWhenVisible(){"visible"===document.visibilityState&&isVisible(this._element)&&this.next()}prev(){this._slide("prev")}pause(){this._isSliding&&triggerTransitionEnd(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?EventHandler.one(this._element,EVENT_SLID,()=>this.cycle()):this.cycle())}to(e){const t=this._getItems();if(e>t.length-1||e<0)return;if(this._isSliding)return void EventHandler.one(this._element,EVENT_SLID,()=>this.to(e));const n=this._getItemIndex(this._getActive());if(n===e)return;const i=e>n?"next":"prev";this._slide(i,t[e])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(e){return e.defaultInterval=e.interval,e}_addEventListeners(){this._config.keyboard&&EventHandler.on(this._element,EVENT_KEYDOWN$1,e=>this._keydown(e)),"hover"===this._config.pause&&(EventHandler.on(this._element,EVENT_MOUSEENTER$2,()=>this.pause()),EventHandler.on(this._element,EVENT_MOUSELEAVE$1,()=>this._maybeEnableCycle())),this._config.touch&&Swipe.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const e of SelectorEngine.find(SELECTOR_ITEM_IMG,this._element))EventHandler.on(e,EVENT_DRAG_START,e=>e.preventDefault());const e={leftCallback:()=>this._slide(this._directionToOrder("left")),rightCallback:()=>this._slide(this._directionToOrder("right")),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),500+this._config.interval))}};this._swipeHelper=new Swipe(this._element,e)}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const t=KEY_TO_DIRECTION[e.key];t&&(e.preventDefault(),this._slide(this._directionToOrder(t)))}_getItemIndex(e){return this._getItems().indexOf(e)}_setActiveIndicatorElement(e){if(!this._indicatorsElement)return;const t=SelectorEngine.findOne(".active",this._indicatorsElement);t.classList.remove("active"),t.removeAttribute("aria-current");const n=SelectorEngine.findOne(`[data-bs-slide-to="${e}"]`,this._indicatorsElement);n&&(n.classList.add("active"),n.setAttribute("aria-current","true"))}_updateInterval(){const e=this._activeElement||this._getActive();if(!e)return;const t=Number.parseInt(e.getAttribute("data-bs-interval"),10);this._config.interval=t||this._config.defaultInterval}_slide(e,t=null){if(this._isSliding)return;const n=this._getActive(),i="next"===e,s=t||getNextActiveElement(this._getItems(),n,i,this._config.wrap);if(s===n)return;const o=this._getItemIndex(s),r=t=>EventHandler.trigger(this._element,t,{relatedTarget:s,direction:this._orderToDirection(e),from:this._getItemIndex(n),to:o});if(r(EVENT_SLIDE).defaultPrevented)return;if(!n||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=i?CLASS_NAME_START:CLASS_NAME_END,c=i?CLASS_NAME_NEXT:CLASS_NAME_PREV;s.classList.add(c),reflow(s),n.classList.add(l),s.classList.add(l),this._queueCallback(()=>{s.classList.remove(l,c),s.classList.add("active"),n.classList.remove("active",c,l),this._isSliding=!1,r(EVENT_SLID)},n,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element)}_getItems(){return SelectorEngine.find(SELECTOR_ITEM,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(e){return isRTL()?"left"===e?"prev":"next":"left"===e?"next":"prev"}_orderToDirection(e){return isRTL()?"prev"===e?"left":"right":"prev"===e?"right":"left"}}EventHandler.on(document,EVENT_CLICK_DATA_API$6,SELECTOR_DATA_SLIDE,function(e){const t=SelectorEngine.getElementFromSelector(this);if(!t||!t.classList.contains("carousel"))return;e.preventDefault();const n=Carousel.getOrCreateInstance(t),i=this.getAttribute("data-bs-slide-to");return i?(n.to(i),void n._maybeEnableCycle()):"next"===Manipulator.getDataAttribute(this,"slide")?(n.next(),void n._maybeEnableCycle()):(n.prev(),void n._maybeEnableCycle())}),EventHandler.on(window,EVENT_LOAD_DATA_API$3,()=>{const e=SelectorEngine.find(SELECTOR_DATA_RIDE);for(const t of e)Carousel.getOrCreateInstance(t)});const NAME$g="collapse",DATA_KEY$c="bs.collapse",EVENT_KEY$c=`.${DATA_KEY$c}`,DATA_API_KEY$7=".data-api",EVENT_SHOW$7=`show${EVENT_KEY$c}`,EVENT_SHOWN$7=`shown${EVENT_KEY$c}`,EVENT_HIDE$7=`hide${EVENT_KEY$c}`,EVENT_HIDDEN$7=`hidden${EVENT_KEY$c}`,EVENT_CLICK_DATA_API$5=`click${EVENT_KEY$c}.data-api`,CLASS_NAME_SHOW$6="show",CLASS_NAME_COLLAPSE="collapse",CLASS_NAME_COLLAPSING="collapsing",CLASS_NAME_COLLAPSED="collapsed",CLASS_NAME_DEEPER_CHILDREN=":scope .collapse .collapse",CLASS_NAME_HORIZONTAL="collapse-horizontal",WIDTH="width",HEIGHT="height",SELECTOR_ACTIVES=".collapse.show, .collapse.collapsing",SELECTOR_DATA_TOGGLE$8='[data-bs-toggle="collapse"]',Default$f={parent:null,toggle:!0},DefaultType$f={parent:"(null|element)",toggle:"boolean"};class Collapse extends BaseComponent{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=SelectorEngine.find(SELECTOR_DATA_TOGGLE$8);for(const e of n){const t=SelectorEngine.getSelectorFromElement(e),n=SelectorEngine.find(t).filter(e=>e===this._element);null!==t&&n.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Default$f}static get DefaultType(){return DefaultType$f}static get NAME(){return NAME$g}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(e=>e!==this._element).map(e=>Collapse.getOrCreateInstance(e,{toggle:!1}))),e.length&&e[0]._isTransitioning)return;if(EventHandler.trigger(this._element,EVENT_SHOW$7).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[t]="",EventHandler.trigger(this._element,EVENT_SHOWN$7)},this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(EventHandler.trigger(this._element,EVENT_HIDE$7).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,reflow(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");for(const e of this._triggerArray){const t=SelectorEngine.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0,this._element.style[e]="",this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),EventHandler.trigger(this._element,EVENT_HIDDEN$7)},this._element,!0)}_isShown(e=this._element){return e.classList.contains("show")}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=getElement(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?WIDTH:HEIGHT}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$8);for(const t of e){const e=SelectorEngine.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN,this._config.parent);return SelectorEngine.find(e,this._config.parent).filter(e=>!t.includes(e))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const n of e)n.classList.toggle("collapsed",!t),n.setAttribute("aria-expanded",t)}}EventHandler.on(document,EVENT_CLICK_DATA_API$5,SELECTOR_DATA_TOGGLE$8,function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of SelectorEngine.getMultipleElementsFromSelector(this))Collapse.getOrCreateInstance(e,{toggle:!1}).toggle()});const NAME$f="datepicker",DATA_KEY$b="bs.datepicker",EVENT_KEY$b=`.${DATA_KEY$b}`,DATA_API_KEY$6=".data-api",EVENT_CHANGE=`change${EVENT_KEY$b}`,EVENT_SHOW$6=`show${EVENT_KEY$b}`,EVENT_SHOWN$6=`shown${EVENT_KEY$b}`,EVENT_HIDE$6=`hide${EVENT_KEY$b}`,EVENT_HIDDEN$6=`hidden${EVENT_KEY$b}`,EVENT_CLICK_DATA_API$4=`click${EVENT_KEY$b}.data-api`,EVENT_FOCUSIN_DATA_API=`focusin${EVENT_KEY$b}.data-api`,SELECTOR_DATA_TOGGLE$7='[data-bs-toggle="datepicker"]',HIDE_DELAY=100,Default$e={datepickerTheme:null,dateMin:null,dateMax:null,dateFormat:null,displayElement:null,displayMonthsCount:1,firstWeekday:1,inline:!1,locale:"default",positionElement:null,selectedDates:[],selectionMode:"single",placement:"left",vcpOptions:{}},DefaultType$e={datepickerTheme:"(null|string)",dateMin:"(null|string|number|object)",dateMax:"(null|string|number|object)",dateFormat:"(null|object|function)",displayElement:"(null|string|element|boolean)",displayMonthsCount:"number",firstWeekday:"number",inline:"boolean",locale:"string",positionElement:"(null|string|element)",selectedDates:"array",selectionMode:"string",placement:"string",vcpOptions:"object"};class Datepicker extends BaseComponent{constructor(e,t){super(e,t),this._calendar=null,this._isShown=!1,this._initCalendar()}static get Default(){return Default$e}static get DefaultType(){return DefaultType$e}static get NAME(){return NAME$f}toggle(){if(!this._config.inline)return this._isShown?this.hide():this.show()}show(){this._config.inline||!this._calendar||isDisabled(this._element)||this._isShown||EventHandler.trigger(this._element,EVENT_SHOW$6).defaultPrevented||(this._calendar.show(),this._isShown=!0,EventHandler.trigger(this._element,EVENT_SHOWN$6))}hide(){this._config.inline||this._calendar&&this._isShown&&(EventHandler.trigger(this._element,EVENT_HIDE$6).defaultPrevented||(this._calendar.hide(),this._isShown=!1,EventHandler.trigger(this._element,EVENT_HIDDEN$6)))}dispose(){this._themeObserver&&(this._themeObserver.disconnect(),this._themeObserver=null),this._calendar&&this._calendar.destroy(),this._calendar=null,super.dispose()}getSelectedDates(){const e=this._calendar?.context?.selectedDates;return e?[...e]:[]}setSelectedDates(e){this._calendar&&this._calendar.set({selectedDates:e})}_initCalendar(){this._isInput="INPUT"===this._element.tagName,this._isInline=this._config.inline,this._isInline&&!this._isInput&&(this._boundInput=this._element.querySelector('input[type="hidden"], input[name]')),this._positionElement=this._resolvePositionElement(),this._displayElement=this._resolveDisplayElement();const e=this._buildCalendarOptions();this._calendar=new Calendar(this._positionElement,e),this._calendar.init(),this._setupThemeObserver(),this._isInput&&this._element.value&&this._parseInputValue(),this._updateDisplayWithSelectedDates()}_updateDisplayWithSelectedDates(){const{selectedDates:e}=this._config;if(!e||0===e.length)return;const t=this._formatDateForInput(e);this._isInput&&(this._element.value=t),this._boundInput&&(this._boundInput.value=e.join(",")),this._displayElement&&(this._displayElement.textContent=t)}_resolvePositionElement(){let{positionElement:e}=this._config;if("string"==typeof e&&(e=document.querySelector(e)),!e&&this._isInput&&!this._isInline){const t=this._element.closest(".form-adorn");t&&(e=t)}return e||this._element}_resolveDisplayElement(){const{displayElement:e}=this._config;return"string"==typeof e?document.querySelector(e):!0===e||null===e&&!this._isInput&&!this._isInline?this._element.querySelector("[data-bs-datepicker-display]")||this._element:e}_getThemeAncestor(){return this._element.closest("[data-bs-theme]")}_getEffectiveTheme(){const{datepickerTheme:e}=this._config;if(e)return e;const t=this._getThemeAncestor();return t?.getAttribute("data-bs-theme")||null}_syncThemeAttribute(e){if(!e)return;const t=this._getEffectiveTheme();t?e.setAttribute("data-bs-theme",t):e.removeAttribute("data-bs-theme")}_setupThemeObserver(){const e=this._getThemeAncestor();e&&!this._config.datepickerTheme&&(this._themeObserver=new MutationObserver(()=>{this._syncThemeAttribute(this._calendar?.context?.mainElement)}),this._themeObserver.observe(e,{attributes:!0,attributeFilter:["data-bs-theme"]}))}_buildCalendarOptions(){const e=this._getEffectiveTheme(),t=e&&"auto"!==e?e:"system",n={...this._config.vcpOptions,inputMode:!this._isInline,positionToInput:this._config.placement,firstWeekday:this._config.firstWeekday,locale:this._config.locale,selectionDatesMode:this._config.selectionMode,selectedDates:this._config.selectedDates,displayMonthsCount:this._config.displayMonthsCount,type:this._config.displayMonthsCount>1?"multiple":"default",selectedTheme:t,themeAttrDetect:"[data-bs-theme]",onClickDate:(e,t)=>this._handleDateClick(e,t),onInit:e=>{this._syncThemeAttribute(e.context.mainElement)},onShow:()=>{this._isShown=!0,this._syncThemeAttribute(this._calendar.context.mainElement)},onHide:()=>{this._isShown=!1}};if(this._config.selectedDates.length>0){const e=this._parseDate(this._config.selectedDates[0]);n.selectedMonth=e.getMonth(),n.selectedYear=e.getFullYear()}return this._config.dateMin&&(n.dateMin=this._config.dateMin),this._config.dateMax&&(n.dateMax=this._config.dateMax),n}_handleDateClick(e,t){const n=[...e.context.selectedDates];if(n.length>0){const e=this._formatDateForInput(n);this._isInput&&(this._element.value=e),this._boundInput&&(this._boundInput.value=n.join(",")),this._displayElement&&(this._displayElement.textContent=e)}EventHandler.trigger(this._element,EVENT_CHANGE,{dates:n,event:t}),this._maybeHideAfterSelection(n)}_maybeHideAfterSelection(e){this._isInline||("single"===this._config.selectionMode&&e.length>0||"multiple-ranged"===this._config.selectionMode&&e.length>=2)&&setTimeout(()=>this.hide(),100)}_parseDate(e){const[t,n,i]=e.split("-");return new Date(t,n-1,i)}_formatDate(e){const t=this._parseDate(e),n="default"===this._config.locale?void 0:this._config.locale,{dateFormat:i}=this._config;return"function"==typeof i?i(t,n):i&&"object"==typeof i?new Intl.DateTimeFormat(n,i).format(t):t.toLocaleDateString(n)}_formatDateForInput(e){if(0===e.length)return"";if(1===e.length)return this._formatDate(e[0]);const t="multiple-ranged"===this._config.selectionMode?" – ":", ";return e.map(e=>this._formatDate(e)).join(t)}_parseInputValue(){const e=this._element.value.trim();if(!e)return;const t=new Date(e);if(!Number.isNaN(t.getTime())){const e=`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`;this._calendar.set({selectedDates:[e]})}}}EventHandler.on(document,EVENT_CLICK_DATA_API$4,SELECTOR_DATA_TOGGLE$7,function(e){"INPUT"!==this.tagName&&"true"!==this.dataset.bsInline&&(e.preventDefault(),Datepicker.getOrCreateInstance(this).toggle())}),EventHandler.on(document,EVENT_FOCUSIN_DATA_API,SELECTOR_DATA_TOGGLE$7,function(){"INPUT"===this.tagName&&Datepicker.getOrCreateInstance(this).show()}),EventHandler.on(document,`DOMContentLoaded${EVENT_KEY$b}.data-api`,()=>{for(const e of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE$7}[data-bs-inline="true"]`))Datepicker.getOrCreateInstance(e)});const NAME$e="dialog",DATA_KEY$a="bs.dialog",EVENT_KEY$a=`.${DATA_KEY$a}`,DATA_API_KEY$5=".data-api",EVENT_SHOW$5=`show${EVENT_KEY$a}`,EVENT_SHOWN$5=`shown${EVENT_KEY$a}`,EVENT_HIDE$5=`hide${EVENT_KEY$a}`,EVENT_HIDDEN$5=`hidden${EVENT_KEY$a}`,EVENT_HIDE_PREVENTED$1=`hidePrevented${EVENT_KEY$a}`,EVENT_CANCEL=`cancel${EVENT_KEY$a}`,EVENT_CLICK_DATA_API$3=`click${EVENT_KEY$a}.data-api`,CLASS_NAME_STATIC="dialog-static",CLASS_NAME_OPEN="dialog-open",CLASS_NAME_NONMODAL="dialog-nonmodal",SELECTOR_DATA_TOGGLE$6='[data-bs-toggle="dialog"]',SELECTOR_OPEN_MODAL_DIALOG="dialog.dialog[open]:not(.dialog-nonmodal)",Default$d={backdrop:!0,keyboard:!0,modal:!0},DefaultType$d={backdrop:"(boolean|string)",keyboard:"boolean",modal:"boolean"};class Dialog extends BaseComponent{constructor(e,t){super(e,t),this._isTransitioning=!1,this._addEventListeners()}static get Default(){return Default$d}static get DefaultType(){return DefaultType$d}static get NAME(){return NAME$e}toggle(e){return this._element.open?this.hide():this.show(e)}show(e){this._element.open||this._isTransitioning||EventHandler.trigger(this._element,EVENT_SHOW$5,{relatedTarget:e}).defaultPrevented||(this._isTransitioning=!0,this._config.modal?(this._element.showModal(),document.body.classList.add("dialog-open")):(this._element.classList.add("dialog-nonmodal"),this._element.show()),this._queueCallback(()=>{this._isTransitioning=!1,EventHandler.trigger(this._element,EVENT_SHOWN$5,{relatedTarget:e})},this._element,this._isAnimated()))}hide(){this._element.open&&!this._isTransitioning&&(EventHandler.trigger(this._element,EVENT_HIDE$5).defaultPrevented||(this._isTransitioning=!0,this._queueCallback(()=>this._hideDialog(),this._element,this._isAnimated())))}dispose(){EventHandler.off(this._element,EVENT_KEY$a),super.dispose()}handleUpdate(){}_hideDialog(){this._element.close(),this._element.classList.remove("dialog-nonmodal"),this._isTransitioning=!1,document.querySelector(SELECTOR_OPEN_MODAL_DIALOG)||document.body.classList.remove("dialog-open"),EventHandler.trigger(this._element,EVENT_HIDDEN$5)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED$1).defaultPrevented||(this._element.classList.add("dialog-static"),this._queueCallback(()=>{this._element.classList.remove("dialog-static")},this._element))}_addEventListeners(){EventHandler.on(this._element,"cancel",e=>{e.preventDefault(),this._config.keyboard?(EventHandler.trigger(this._element,EVENT_CANCEL),this.hide()):this._triggerBackdropTransition()}),EventHandler.on(this._element,"keydown",e=>{"Escape"!==e.key||this._config.modal||(e.preventDefault(),this._config.keyboard&&(EventHandler.trigger(this._element,EVENT_CANCEL),this.hide()))}),EventHandler.on(this._element,"click",e=>{e.target===this._element&&this._config.modal&&("static"!==this._config.backdrop?this.hide():this._triggerBackdropTransition())})}}EventHandler.on(document,EVENT_CLICK_DATA_API$3,SELECTOR_DATA_TOGGLE$6,function(e){const t=SelectorEngine.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),EventHandler.one(t,EVENT_SHOW$5,e=>{e.defaultPrevented||EventHandler.one(t,EVENT_HIDDEN$5,()=>{isVisible(this)&&this.focus()})});const n=Manipulator.getDataAttributes(this),i=this.closest("dialog[open]");if(i&&i!==t){Dialog.getOrCreateInstance(t,n).show(this);const e=Dialog.getInstance(i);return void(e&&e.hide())}Dialog.getOrCreateInstance(t,n).toggle(this)}),enableDismissTrigger(Dialog);const BREAKPOINTS={sm:576,md:768,lg:1024,xl:1280,"2xl":1536},parseResponsivePlacement=(e,t="bottom")=>{if(!e||!e.includes(":"))return null;const n=e.split(/\s+/),i={xs:t};for(const e of n)if(e.includes(":")){const[t,n]=e.split(":");void 0!==BREAKPOINTS[t]&&(i[t]=n)}else i.xs=e;return i},getResponsivePlacement=(e,t="bottom")=>{if(!e)return t;const n=window.innerWidth;let i=e.xs||t;const s=["sm","md","lg","xl","2xl"];for(const t of s)n>=BREAKPOINTS[t]&&e[t]&&(i=e[t]);return i},createBreakpointListeners=e=>{const t=[];for(const n of Object.keys(BREAKPOINTS)){const i=BREAKPOINTS[n],s=window.matchMedia(`(min-width: ${i}px)`);s.addEventListener("change",e),t.push({mql:s,handler:e})}return t},disposeBreakpointListeners=e=>{for(const{mql:t,handler:n}of e)t.removeEventListener("change",n)},NAME$d="dropdown",DATA_KEY$9="bs.dropdown",EVENT_KEY$9=`.${DATA_KEY$9}`,DATA_API_KEY$4=".data-api",ESCAPE_KEY$1="Escape",TAB_KEY$1="Tab",ARROW_UP_KEY$1="ArrowUp",ARROW_DOWN_KEY$1="ArrowDown",ARROW_LEFT_KEY$1="ArrowLeft",ARROW_RIGHT_KEY$1="ArrowRight",HOME_KEY$1="Home",END_KEY$1="End",ENTER_KEY="Enter",SPACE_KEY=" ",RIGHT_MOUSE_BUTTON=2,SUBMENU_CLOSE_DELAY=100,EVENT_HIDE$4=`hide${EVENT_KEY$9}`,EVENT_HIDDEN$4=`hidden${EVENT_KEY$9}`,EVENT_SHOW$4=`show${EVENT_KEY$9}`,EVENT_SHOWN$4=`shown${EVENT_KEY$9}`,EVENT_CLICK_DATA_API$2=`click${EVENT_KEY$9}.data-api`,EVENT_KEYDOWN_DATA_API=`keydown${EVENT_KEY$9}.data-api`,EVENT_KEYUP_DATA_API=`keyup${EVENT_KEY$9}.data-api`,CLASS_NAME_SHOW$5="show",SELECTOR_DATA_TOGGLE$5='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',SELECTOR_DATA_TOGGLE_SHOWN=`${SELECTOR_DATA_TOGGLE$5}.show`,SELECTOR_MENU=".dropdown-menu",SELECTOR_SUBMENU=".dropdown-submenu",SELECTOR_SUBMENU_TOGGLE=".dropdown-submenu > .dropdown-item",SELECTOR_NAVBAR_NAV=".navbar-nav",SELECTOR_VISIBLE_ITEMS=".dropdown-item:not(.disabled):not(:disabled)",DEFAULT_PLACEMENT="bottom-start",SUBMENU_PLACEMENT="end-start",resolveLogicalPlacement=e=>isRTL()?e.replace(/^start(?=-|$)/,"right").replace(/^end(?=-|$)/,"left"):e.replace(/^start(?=-|$)/,"left").replace(/^end(?=-|$)/,"right"),triangleSign=(e,t,n)=>(e.x-n.x)*(t.y-n.y)-(t.x-n.x)*(e.y-n.y),Default$c={autoClose:!0,boundary:"clippingParents",container:!1,display:"dynamic",offset:[0,2],floatingConfig:null,placement:"bottom-start",reference:"toggle",strategy:"absolute",submenuTrigger:"both",submenuDelay:100},DefaultType$c={autoClose:"(boolean|string)",boundary:"(string|element)",container:"(string|element|boolean)",display:"string",offset:"(array|string|function)",floatingConfig:"(null|object|function)",placement:"string",reference:"(string|element|object)",strategy:"string",submenuTrigger:"string",submenuDelay:"number"};class Dropdown extends BaseComponent{constructor(e,t){if(void 0===computePosition)throw new TypeError("Bootstrap's dropdowns require Floating UI (https://floating-ui.com)");super(e,t),this._floatingCleanup=null,this._mediaQueryListeners=[],this._responsivePlacements=null,this._parent=this._element.parentNode,this._isSubmenu=this._parent.classList.contains("dropdown-submenu"),this._openSubmenus=new Map,this._submenuCloseTimeouts=new Map,this._hoverIntentData=null,this._menu=SelectorEngine.next(this._element,SELECTOR_MENU)[0]||SelectorEngine.prev(this._element,SELECTOR_MENU)[0]||SelectorEngine.findOne(SELECTOR_MENU,this._parent),this._menuOriginalParent=this._menu?.parentNode,this._parseResponsivePlacements(),this._setupSubmenuListeners()}static get Default(){return Default$c}static get DefaultType(){return DefaultType$c}static get NAME(){return NAME$d}toggle(){return this._isShown()?this.hide():this.show()}show(){if(isDisabled(this._element)||this._isShown())return;const e={relatedTarget:this._element};if(!EventHandler.trigger(this._element,EVENT_SHOW$4,e).defaultPrevented){if(this._moveMenuToContainer(),this._createFloating(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const e of[].concat(...document.body.children))EventHandler.on(e,"mouseover",noop);this._element.focus(),this._element.setAttribute("aria-expanded","true"),this._menu.classList.add("show"),this._element.classList.add("show"),this._parent.classList.add("show"),EventHandler.trigger(this._element,EVENT_SHOWN$4,e)}}hide(){if(isDisabled(this._element)||!this._isShown())return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._disposeFloating(),this._restoreMenuToOriginalParent(),this._disposeMediaQueryListeners(),this._closeAllSubmenus(),this._clearAllSubmenuTimeouts(),super.dispose()}update(){this._floatingCleanup&&this._updateFloatingPosition()}_completeHide(e){if(!EventHandler.trigger(this._element,EVENT_HIDE$4,e).defaultPrevented){if(this._closeAllSubmenus(),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))EventHandler.off(e,"mouseover",noop);this._disposeFloating(),this._restoreMenuToOriginalParent(),this._menu.classList.remove("show"),this._element.classList.remove("show"),this._parent.classList.remove("show"),this._element.setAttribute("aria-expanded","false"),Manipulator.removeDataAttribute(this._menu,"placement"),Manipulator.removeDataAttribute(this._menu,"display"),EventHandler.trigger(this._element,EVENT_HIDDEN$4,e)}}_getConfig(e){if("object"==typeof(e=super._getConfig(e)).reference&&!isElement(e.reference)&&"function"!=typeof e.reference.getBoundingClientRect)throw new TypeError(`${NAME$d.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_createFloating(){if("static"===this._config.display)return void Manipulator.setDataAttribute(this._menu,"display","static");let e=this._element;"parent"===this._config.reference?e=this._parent:isElement(this._config.reference)?e=getElement(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference),this._updateFloatingPosition(e),this._floatingCleanup=autoUpdate(e,this._menu,()=>this._updateFloatingPosition(e))}async _updateFloatingPosition(e=null){if(!this._menu)return;e||(e="parent"===this._config.reference?this._parent:isElement(this._config.reference)?getElement(this._config.reference):"object"==typeof this._config.reference?this._config.reference:this._element);const t=this._getPlacement(),n=this._getFloatingMiddleware(),i=this._getFloatingConfig(t,n);await this._applyFloatingPosition(e,this._menu,i.placement,i.middleware,i.strategy)}_isShown(){return this._menu.classList.contains("show")}_getPlacement(){const e=this._responsivePlacements?getResponsivePlacement(this._responsivePlacements,"bottom-start"):this._config.placement;return resolveLogicalPlacement(e)}_parseResponsivePlacements(){this._responsivePlacements=parseResponsivePlacement(this._config.placement,"bottom-start"),this._responsivePlacements&&this._setupMediaQueryListeners()}_setupMediaQueryListeners(){this._disposeMediaQueryListeners(),this._mediaQueryListeners=createBreakpointListeners(()=>{this._isShown()&&this._updateFloatingPosition()})}_disposeMediaQueryListeners(){disposeBreakpointListeners(this._mediaQueryListeners),this._mediaQueryListeners=[]}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?({placement:t,rects:n})=>e({placement:t,reference:n.reference,floating:n.floating},this._element):e}_getFloatingMiddleware(){const e=this._getOffset();return[offset("function"==typeof e?e:{mainAxis:e[1]||0,crossAxis:e[0]||0}),flip({fallbackPlacements:this._getFallbackPlacements()}),shift({boundary:"clippingParents"===this._config.boundary?"clippingAncestors":this._config.boundary})]}_getFallbackPlacements(){return{bottom:["top","bottom-start","bottom-end","top-start","top-end"],"bottom-start":["top-start","bottom-end","top-end"],"bottom-end":["top-end","bottom-start","top-start"],top:["bottom","top-start","top-end","bottom-start","bottom-end"],"top-start":["bottom-start","top-end","bottom-end"],"top-end":["bottom-end","top-start","bottom-start"],right:["left","right-start","right-end","left-start","left-end"],"right-start":["left-start","right-end","left-end","top-start","bottom-start"],"right-end":["left-end","right-start","left-start","top-end","bottom-end"],left:["right","left-start","left-end","right-start","right-end"],"left-start":["right-start","left-end","right-end","top-start","bottom-start"],"left-end":["right-end","left-start","right-start","top-end","bottom-end"]}[this._getPlacement()]||["top","bottom","right","left"]}_getFloatingConfig(e,t){const n={placement:e,middleware:t,strategy:this._config.strategy};return{...n,...execute(this._config.floatingConfig,[void 0,n])}}_disposeFloating(){this._floatingCleanup&&(this._floatingCleanup(),this._floatingCleanup=null)}_getContainer(){const{container:e}=this._config;return!1===e?null:!0===e?document.body:getElement(e)}_moveMenuToContainer(){const e=this._getContainer();e&&this._menu&&this._menu.parentNode!==e&&e.append(this._menu)}_restoreMenuToOriginalParent(){this._menuOriginalParent&&this._menu&&this._menu.parentNode!==this._menuOriginalParent&&this._menuOriginalParent.append(this._menu)}async _applyFloatingPosition(e,t,n,i,s="absolute"){if(!t.isConnected)return null;const{x:o,y:r,placement:a}=await computePosition(e,t,{placement:n,middleware:i,strategy:s});return t.isConnected?(Object.assign(t.style,{position:s,left:`${o}px`,top:`${r}px`,margin:"0"}),Manipulator.setDataAttribute(t,"placement",a),a):null}_setupSubmenuListeners(){"hover"!==this._config.submenuTrigger&&"both"!==this._config.submenuTrigger||(EventHandler.on(this._menu,"mouseenter",SELECTOR_SUBMENU_TOGGLE,e=>{this._onSubmenuTriggerEnter(e)}),EventHandler.on(this._menu,"mouseleave",SELECTOR_SUBMENU,e=>{this._onSubmenuLeave(e)}),EventHandler.on(this._menu,"mousemove",e=>{this._trackMousePosition(e)})),"click"!==this._config.submenuTrigger&&"both"!==this._config.submenuTrigger||EventHandler.on(this._menu,"click",SELECTOR_SUBMENU_TOGGLE,e=>{this._onSubmenuTriggerClick(e)})}_onSubmenuTriggerEnter(e){const t=e.target.closest(SELECTOR_SUBMENU_TOGGLE);if(!t)return;const n=t.closest(SELECTOR_SUBMENU),i=SelectorEngine.findOne(SELECTOR_MENU,n);i&&(this._cancelSubmenuCloseTimeout(i),this._closeSiblingSubmenus(n),this._openSubmenu(t,i,n))}_onSubmenuLeave(e){const t=e.target.closest(SELECTOR_SUBMENU),n=SelectorEngine.findOne(SELECTOR_MENU,t);n&&this._openSubmenus.has(n)&&(this._isMovingTowardSubmenu(e,n)||this._scheduleSubmenuClose(n,t))}_onSubmenuTriggerClick(e){const t=e.target.closest(SELECTOR_SUBMENU_TOGGLE);if(!t)return;e.preventDefault(),e.stopPropagation();const n=t.closest(SELECTOR_SUBMENU),i=SelectorEngine.findOne(SELECTOR_MENU,n);i&&(this._openSubmenus.has(i)?this._closeSubmenu(i,n):(this._closeSiblingSubmenus(n),this._openSubmenu(t,i,n)))}_openSubmenu(e,t,n){if(this._openSubmenus.has(t))return;e.setAttribute("aria-expanded","true"),e.setAttribute("aria-haspopup","true"),t.classList.add("show"),n.classList.add("show");const i=this._createSubmenuFloating(e,t,n);this._openSubmenus.set(t,i),EventHandler.on(t,"mouseenter",()=>{this._cancelSubmenuCloseTimeout(t)})}_closeSubmenu(e,t){if(!this._openSubmenus.has(e))return;const n=SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.show`,e);for(const e of n){const t=e.closest(SELECTOR_SUBMENU);this._closeSubmenu(e,t)}const i=SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE,t),s=this._openSubmenus.get(e);s&&s(),this._openSubmenus.delete(e),EventHandler.off(e,"mouseenter"),i&&i.setAttribute("aria-expanded","false"),e.classList.remove("show"),t.classList.remove("show"),e.style.position="",e.style.left="",e.style.top="",e.style.margin=""}_closeAllSubmenus(){for(const[e]of this._openSubmenus){const t=e.closest(SELECTOR_SUBMENU);this._closeSubmenu(e,t)}}_closeSiblingSubmenus(e){const t=e.parentNode,n=SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.show`,t);for(const t of n){const n=t.closest(SELECTOR_SUBMENU);n!==e&&this._closeSubmenu(t,n)}}_createSubmenuFloating(e,t,n){const i=n,s=resolveLogicalPlacement("end-start"),o=[offset({mainAxis:0,crossAxis:-4}),flip({fallbackPlacements:[resolveLogicalPlacement("start-start"),resolveLogicalPlacement("end-end"),resolveLogicalPlacement("start-end")]}),shift({padding:8})],r=()=>this._applyFloatingPosition(i,t,s,o);return r(),autoUpdate(i,t,r)}_scheduleSubmenuClose(e,t){this._cancelSubmenuCloseTimeout(e);const n=setTimeout(()=>{this._closeSubmenu(e,t),this._submenuCloseTimeouts.delete(e)},this._config.submenuDelay);this._submenuCloseTimeouts.set(e,n)}_cancelSubmenuCloseTimeout(e){const t=this._submenuCloseTimeouts.get(e);t&&(clearTimeout(t),this._submenuCloseTimeouts.delete(e))}_clearAllSubmenuTimeouts(){for(const e of this._submenuCloseTimeouts.values())clearTimeout(e);this._submenuCloseTimeouts.clear()}_trackMousePosition(e){this._hoverIntentData={x:e.clientX,y:e.clientY,timestamp:Date.now()}}_isMovingTowardSubmenu(e,t){if(!this._hoverIntentData)return!1;const n=t.getBoundingClientRect(),i={x:e.clientX,y:e.clientY},s={x:this._hoverIntentData.x,y:this._hoverIntentData.y},o=isRTL()?n.right:n.left,r={x:o,y:n.top},a={x:o,y:n.bottom};return this._pointInTriangle(i,s,r,a)}_pointInTriangle(e,t,n,i){const s=triangleSign(e,t,n),o=triangleSign(e,n,i),r=triangleSign(e,i,t);return!((s<0||o<0||r<0)&&(s>0||o>0||r>0))}_selectMenuItem({key:e,target:t}){const n=t.closest(SELECTOR_MENU)||this._menu,i=SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`,n).filter(e=>isVisible(e));i.length&&getNextActiveElement(i,t,e===ARROW_DOWN_KEY$1,!i.includes(t)).focus()}_handleSubmenuKeydown(e){const{key:t,target:n}=e,i=isRTL(),s=i?ARROW_LEFT_KEY$1:ARROW_RIGHT_KEY$1,o=i?ARROW_RIGHT_KEY$1:ARROW_LEFT_KEY$1,r=n.closest(SELECTOR_SUBMENU),a=r&&n.matches(SELECTOR_SUBMENU_TOGGLE);if((t===ENTER_KEY||t===SPACE_KEY)&&a){e.preventDefault(),e.stopPropagation();const t=SelectorEngine.findOne(SELECTOR_MENU,r);return t&&(this._closeSiblingSubmenus(r),this._openSubmenu(n,t,r),requestAnimationFrame(()=>{const e=SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS,t);e&&e.focus()})),!0}if(t===s&&a){e.preventDefault(),e.stopPropagation();const t=SelectorEngine.findOne(SELECTOR_MENU,r);return t&&(this._closeSiblingSubmenus(r),this._openSubmenu(n,t,r),requestAnimationFrame(()=>{const e=SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS,t);e&&e.focus()})),!0}if(t===o){const t=n.closest(SELECTOR_MENU),i=t?.closest(SELECTOR_SUBMENU);if(i){e.preventDefault(),e.stopPropagation();const n=SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE,i);return this._closeSubmenu(t,i),n&&n.focus(),!0}}if(t===HOME_KEY$1||t===END_KEY$1){e.preventDefault(),e.stopPropagation();const i=n.closest(SELECTOR_MENU),s=SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`,i).filter(e=>isVisible(e));return s.length&&(t===HOME_KEY$1?s[0]:s[s.length-1]).focus(),!0}return!1}static clearMenus(e){if(2===e.button||"keyup"===e.type&&"Tab"!==e.key)return;const t=SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);for(const n of t){const t=Dropdown.getInstance(n);if(!t||!1===t._config.autoClose)continue;const i=e.composedPath(),s=i.includes(t._menu);if(i.includes(t._element)||"inside"===t._config.autoClose&&!s||"outside"===t._config.autoClose&&s)continue;if(t._menu.contains(e.target)&&("keyup"===e.type&&"Tab"===e.key||/input|select|option|textarea|form/i.test(e.target.tagName)))continue;const o={relatedTarget:t._element};"click"===e.type&&(o.clickEvent=e),t._completeHide(o)}}static dataApiKeydownHandler(e){const t=/input|textarea/i.test(e.target.tagName),n="Escape"===e.key,i=[ARROW_UP_KEY$1,ARROW_DOWN_KEY$1].includes(e.key),s=[ARROW_LEFT_KEY$1,ARROW_RIGHT_KEY$1].includes(e.key),o=[HOME_KEY$1,END_KEY$1].includes(e.key),r=[ENTER_KEY,SPACE_KEY].includes(e.key),a=e.target.matches(SELECTOR_SUBMENU_TOGGLE);if(!(i||n||s||o||r&&a))return;if(t&&!n)return;const l=this.matches(SELECTOR_DATA_TOGGLE$5)?this:SelectorEngine.prev(this,SELECTOR_DATA_TOGGLE$5)[0]||SelectorEngine.next(this,SELECTOR_DATA_TOGGLE$5)[0]||SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$5,e.delegateTarget.parentNode);if(!l)return;const c=Dropdown.getOrCreateInstance(l);if(!(s||o||r&&a)||!c._handleSubmenuKeydown(e)){if(i)return e.preventDefault(),e.stopPropagation(),c.show(),void c._selectMenuItem(e);if(n&&c._isShown()){e.preventDefault(),e.stopPropagation();const t=e.target.closest(SELECTOR_MENU),n=t?.closest(SELECTOR_SUBMENU);if(n&&c._openSubmenus.size>0){const e=SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE,n);return c._closeSubmenu(t,n),void(e&&e.focus())}c.hide(),l.focus()}}}}EventHandler.on(document,EVENT_KEYDOWN_DATA_API,SELECTOR_DATA_TOGGLE$5,Dropdown.dataApiKeydownHandler),EventHandler.on(document,EVENT_KEYDOWN_DATA_API,SELECTOR_MENU,Dropdown.dataApiKeydownHandler),EventHandler.on(document,EVENT_CLICK_DATA_API$2,Dropdown.clearMenus),EventHandler.on(document,EVENT_KEYUP_DATA_API,Dropdown.clearMenus),EventHandler.on(document,EVENT_CLICK_DATA_API$2,SELECTOR_DATA_TOGGLE$5,function(e){e.preventDefault(),Dropdown.getOrCreateInstance(this).toggle()});const NAME$c="navoverflow",DATA_KEY$8="bs.navoverflow",EVENT_KEY$8=`.${DATA_KEY$8}`,EVENT_UPDATE=`update${EVENT_KEY$8}`,EVENT_OVERFLOW=`overflow${EVENT_KEY$8}`,CLASS_NAME_OVERFLOW="nav-overflow",CLASS_NAME_OVERFLOW_MENU="nav-overflow-menu",CLASS_NAME_HIDDEN="d-none",SELECTOR_NAV_ITEM=".nav-item",SELECTOR_NAV_LINK=".nav-link",SELECTOR_OVERFLOW_TOGGLE=".nav-overflow-toggle",SELECTOR_OVERFLOW_MENU=".nav-overflow-menu",CLASS_NAME_KEEP="nav-overflow-keep",Default$b={moreText:"More",moreIcon:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"><path d="M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/></svg>',threshold:0},DefaultType$b={moreText:"string",moreIcon:"string",threshold:"number"};class NavOverflow extends BaseComponent{constructor(e,t){super(e,t),this._items=[],this._overflowItems=[],this._overflowMenu=null,this._overflowToggle=null,this._resizeObserver=null,this._isInitialized=!1,this._init()}static get Default(){return Default$b}static get DefaultType(){return DefaultType$b}static get NAME(){return NAME$c}update(){this._calculateOverflow(),EventHandler.trigger(this._element,EVENT_UPDATE)}dispose(){this._resizeObserver&&this._resizeObserver.disconnect(),this._restoreItems(),this._overflowToggle&&this._overflowToggle.parentElement&&this._overflowToggle.parentElement.remove(),super.dispose()}_init(){this._element.classList.add("nav-overflow"),this._items=[...SelectorEngine.find(".nav-item",this._element)];for(const[e,t]of this._items.entries())t.dataset.bsNavOrder=e;this._createOverflowMenu(),this._setupResizeObserver(),this._calculateOverflow(),this._isInitialized=!0}_createOverflowMenu(){if(this._overflowToggle=SelectorEngine.findOne(".nav-overflow-toggle",this._element),this._overflowToggle)return void(this._overflowMenu=SelectorEngine.findOne(".nav-overflow-menu",this._element));const e=document.createElement("li");e.className="nav-item nav-overflow-item dropdown",e.innerHTML=`\n      <button class="nav-link nav-overflow-toggle dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-container="body" data-bs-strategy="fixed" aria-expanded="false">\n        <span class="nav-overflow-icon">${this._config.moreIcon}</span>\n        <span class="nav-overflow-text">${this._config.moreText}</span>\n      </button>\n      <ul class="nav-overflow-menu dropdown-menu dropdown-menu-end"></ul>\n    `,this._element.append(e),this._overflowToggle=e.querySelector(".nav-overflow-toggle"),this._overflowMenu=e.querySelector(".nav-overflow-menu")}_setupResizeObserver(){"undefined"!=typeof ResizeObserver?(this._resizeObserver=new ResizeObserver(()=>{this._calculateOverflow()}),this._resizeObserver.observe(this._element)):EventHandler.on(window,"resize",()=>this._calculateOverflow())}_calculateOverflow(){this._restoreItems();const e=this._element.offsetWidth,t=this._overflowToggle?.closest(".nav-item");let n=0;const i=[],s=e-(t?.offsetWidth||0)-10;for(const e of this._items)n+=e.offsetWidth,e.classList.contains(CLASS_NAME_KEEP)||n>s&&i.push(e);if(this._items.length-i.length<this._config.threshold&&this._items.length>this._config.threshold){const e=this._items.slice(this._config.threshold).filter(e=>!e.classList.contains(CLASS_NAME_KEEP));i.length=0,i.push(...e)}this._moveToOverflow(i),t&&(i.length>0?t.classList.remove("d-none"):t.classList.add("d-none")),i.length>0&&EventHandler.trigger(this._element,EVENT_OVERFLOW,{overflowCount:i.length,visibleCount:this._items.length-i.length})}_moveToOverflow(e){if(this._overflowMenu){this._overflowMenu.innerHTML="",this._overflowItems=[];for(const t of e){const e=SelectorEngine.findOne(".nav-link",t);if(!e)continue;const n=document.createElement("li"),i=e.cloneNode(!0);i.className="dropdown-item",e.classList.contains("active")&&i.classList.add("active"),(e.classList.contains("disabled")||e.hasAttribute("disabled"))&&i.classList.add("disabled"),n.append(i),this._overflowMenu.append(n),t.classList.add("d-none"),t.dataset.bsNavOverflow="true",this._overflowItems.push(t)}}}_restoreItems(){for(const e of this._items)e.classList.remove("d-none"),delete e.dataset.bsNavOverflow;this._overflowMenu&&(this._overflowMenu.innerHTML=""),this._overflowItems=[]}}EventHandler.on(document,"DOMContentLoaded",()=>{for(const e of SelectorEngine.find('[data-bs-toggle="nav-overflow"]'))NavOverflow.getOrCreateInstance(e)});const NAME$b="backdrop",CLASS_NAME_FADE$3="fade",CLASS_NAME_SHOW$4="show",EVENT_MOUSEDOWN=`mousedown.bs.${NAME$b}`,Default$a={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},DefaultType$a={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Backdrop extends Config{constructor(e){super(),this._config=this._getConfig(e),this._isAppended=!1,this._element=null}static get Default(){return Default$a}static get DefaultType(){return DefaultType$a}static get NAME(){return NAME$b}show(e){if(!this._config.isVisible)return void execute(e);this._append();const t=this._getElement();this._config.isAnimated&&reflow(t),t.classList.add("show"),this._emulateAnimation(()=>{execute(e)})}hide(e){this._config.isVisible?(this._getElement().classList.remove("show"),this._emulateAnimation(()=>{this.dispose(),execute(e)})):execute(e)}dispose(){this._isAppended&&(EventHandler.off(this._element,EVENT_MOUSEDOWN),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const e=document.createElement("div");e.className=this._config.className,this._config.isAnimated&&e.classList.add("fade"),this._element=e}return this._element}_configAfterMerge(e){return e.rootElement=getElement(e.rootElement),e}_append(){if(this._isAppended)return;const e=this._getElement();this._config.rootElement.append(e),EventHandler.on(e,EVENT_MOUSEDOWN,()=>{execute(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(e){executeAfterTransition(e,this._getElement(),this._config.isAnimated)}}const NAME$a="focustrap",DATA_KEY$7="bs.focustrap",EVENT_KEY$7=`.${DATA_KEY$7}`,EVENT_FOCUSIN$3=`focusin${EVENT_KEY$7}`,EVENT_KEYDOWN_TAB=`keydown.tab${EVENT_KEY$7}`,TAB_KEY="Tab",TAB_NAV_FORWARD="forward",TAB_NAV_BACKWARD="backward",Default$9={autofocus:!0,trapElement:null},DefaultType$9={autofocus:"boolean",trapElement:"element"};class FocusTrap extends Config{constructor(e){super(),this._config=this._getConfig(e),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return Default$9}static get DefaultType(){return DefaultType$9}static get NAME(){return NAME$a}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),EventHandler.off(document,EVENT_KEY$7),EventHandler.on(document,EVENT_FOCUSIN$3,e=>this._handleFocusin(e)),EventHandler.on(document,EVENT_KEYDOWN_TAB,e=>this._handleKeydown(e)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,EventHandler.off(document,EVENT_KEY$7))}_handleFocusin(e){const{trapElement:t}=this._config;if(e.target===document||e.target===t||t.contains(e.target))return;const n=SelectorEngine.focusableChildren(t);0===n.length?t.focus():"backward"===this._lastTabNavDirection?n[n.length-1].focus():n[0].focus()}_handleKeydown(e){"Tab"===e.key&&(this._lastTabNavDirection=e.shiftKey?"backward":"forward")}}const SELECTOR_FIXED_CONTENT=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",SELECTOR_STICKY_CONTENT=".sticky-top",PROPERTY_PADDING="padding-right",PROPERTY_MARGIN="margin-right";class ScrollBarHelper{constructor(){this._element=document.body}getWidth(){const e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}hide(){const e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,"padding-right",t=>t+e),this._setElementAttributes(SELECTOR_FIXED_CONTENT,"padding-right",t=>t+e),this._setElementAttributes(".sticky-top","margin-right",t=>t-e)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"padding-right"),this._resetElementAttributes(SELECTOR_FIXED_CONTENT,"padding-right"),this._resetElementAttributes(".sticky-top","margin-right")}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(e,t,n){const i=this.getWidth();this._applyManipulationCallback(e,e=>{if(e!==this._element&&window.innerWidth>e.clientWidth+i)return;this._saveInitialAttribute(e,t);const s=window.getComputedStyle(e).getPropertyValue(t);e.style.setProperty(t,`${n(Number.parseFloat(s))}px`)})}_saveInitialAttribute(e,t){const n=e.style.getPropertyValue(t);n&&Manipulator.setDataAttribute(e,t,n)}_resetElementAttributes(e,t){this._applyManipulationCallback(e,e=>{const n=Manipulator.getDataAttribute(e,t);null!==n?(Manipulator.removeDataAttribute(e,t),e.style.setProperty(t,n)):e.style.removeProperty(t)})}_applyManipulationCallback(e,t){if(isElement(e))t(e);else for(const n of SelectorEngine.find(e,this._element))t(n)}}const NAME$9="offcanvas",DATA_KEY$6="bs.offcanvas",EVENT_KEY$6=`.${DATA_KEY$6}`,DATA_API_KEY$3=".data-api",EVENT_LOAD_DATA_API$2=`load${EVENT_KEY$6}.data-api`,ESCAPE_KEY="Escape",CLASS_NAME_SHOW$3="show",CLASS_NAME_SHOWING$1="showing",CLASS_NAME_HIDING="hiding",CLASS_NAME_BACKDROP="offcanvas-backdrop",OPEN_SELECTOR=".offcanvas.show",EVENT_SHOW$3=`show${EVENT_KEY$6}`,EVENT_SHOWN$3=`shown${EVENT_KEY$6}`,EVENT_HIDE$3=`hide${EVENT_KEY$6}`,EVENT_HIDE_PREVENTED=`hidePrevented${EVENT_KEY$6}`,EVENT_HIDDEN$3=`hidden${EVENT_KEY$6}`,EVENT_RESIZE=`resize${EVENT_KEY$6}`,EVENT_CLICK_DATA_API$1=`click${EVENT_KEY$6}.data-api`,EVENT_KEYDOWN_DISMISS=`keydown.dismiss${EVENT_KEY$6}`,SELECTOR_DATA_TOGGLE$4='[data-bs-toggle="offcanvas"]',Default$8={backdrop:!0,keyboard:!0,scroll:!1},DefaultType$8={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Offcanvas extends BaseComponent{constructor(e,t){super(e,t),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Default$8}static get DefaultType(){return DefaultType$8}static get NAME(){return NAME$9}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){this._isShown||EventHandler.trigger(this._element,EVENT_SHOW$3,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new ScrollBarHelper).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add("showing"),this._queueCallback(()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add("show"),this._element.classList.remove("showing"),EventHandler.trigger(this._element,EVENT_SHOWN$3,{relatedTarget:e})},this._element,!0))}hide(){this._isShown&&(EventHandler.trigger(this._element,EVENT_HIDE$3).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add("hiding"),this._backdrop.hide(),this._queueCallback(()=>{this._element.classList.remove("show","hiding"),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new ScrollBarHelper).reset(),EventHandler.trigger(this._element,EVENT_HIDDEN$3)},this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const e=Boolean(this._config.backdrop);return new Backdrop({className:CLASS_NAME_BACKDROP,isVisible:e,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:e?()=>{"static"!==this._config.backdrop?this.hide():EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED)}:null})}_initializeFocusTrap(){return new FocusTrap({trapElement:this._element})}_addEventListeners(){EventHandler.on(this._element,EVENT_KEYDOWN_DISMISS,e=>{"Escape"===e.key&&(this._config.keyboard?this.hide():EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED))})}}EventHandler.on(document,EVENT_CLICK_DATA_API$1,SELECTOR_DATA_TOGGLE$4,function(e){const t=SelectorEngine.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),isDisabled(this))return;EventHandler.one(t,EVENT_HIDDEN$3,()=>{isVisible(this)&&this.focus()});const n=SelectorEngine.findOne(OPEN_SELECTOR);n&&n!==t&&Offcanvas.getInstance(n).hide(),Offcanvas.getOrCreateInstance(t).toggle(this)}),EventHandler.on(window,EVENT_LOAD_DATA_API$2,()=>{for(const e of SelectorEngine.find(OPEN_SELECTOR))Offcanvas.getOrCreateInstance(e).show()}),EventHandler.on(window,EVENT_RESIZE,()=>{for(const e of SelectorEngine.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(e).position&&Offcanvas.getOrCreateInstance(e).hide()}),enableDismissTrigger(Offcanvas);const NAME$8="strength",DATA_KEY$5="bs.strength",EVENT_KEY$5=`.${DATA_KEY$5}`,DATA_API_KEY$2=".data-api",EVENT_STRENGTH_CHANGE=`strengthChange${EVENT_KEY$5}`,SELECTOR_DATA_STRENGTH="[data-bs-strength]",STRENGTH_LEVELS=["weak","fair","good","strong"],Default$7={input:null,minLength:8,messages:{weak:"Weak",fair:"Fair",good:"Good",strong:"Strong"},weights:{minLength:1,extraLength:1,lowercase:1,uppercase:1,numbers:1,special:1,multipleSpecial:1,longPassword:1},thresholds:[2,4,6],scorer:null},DefaultType$7={input:"(string|element|null)",minLength:"number",messages:"object",weights:"object",thresholds:"array",scorer:"(function|null)"};class Strength extends BaseComponent{constructor(e,t){super(e,t),this._input=this._getInput(),this._segments=SelectorEngine.find(".strength-segment",this._element),this._textElement=SelectorEngine.findOne(".strength-text",this._element.parentElement),this._currentStrength=null,this._input&&(this._addEventListeners(),this._evaluate())}static get Default(){return Default$7}static get DefaultType(){return DefaultType$7}static get NAME(){return NAME$8}getStrength(){return this._currentStrength}evaluate(){this._evaluate()}_getInput(){if(this._config.input)return"string"==typeof this._config.input?SelectorEngine.findOne(this._config.input):this._config.input;const e=this._element.parentElement;return SelectorEngine.findOne('input[type="password"]',e)}_addEventListeners(){EventHandler.on(this._input,"input",()=>this._evaluate()),EventHandler.on(this._input,"change",()=>this._evaluate())}_evaluate(){const e=this._input.value,t=this._calculateScore(e),n=this._scoreToStrength(t);n!==this._currentStrength&&(this._currentStrength=n,this._updateUI(n,t),EventHandler.trigger(this._element,EVENT_STRENGTH_CHANGE,{strength:n,score:t,password:e.length>0?"***":""}))}_calculateScore(e){if(!e)return 0;if("function"==typeof this._config.scorer)return this._config.scorer(e);const{weights:t}=this._config;let n=0;return e.length>=this._config.minLength&&(n+=t.minLength),e.length>=this._config.minLength+4&&(n+=t.extraLength),/[a-z]/.test(e)&&(n+=t.lowercase),/[A-Z]/.test(e)&&(n+=t.uppercase),/\d/.test(e)&&(n+=t.numbers),/[!@#$%^&*(),.?":{}|<>]/.test(e)&&(n+=t.special),/[!@#$%^&*(),.?":{}|<>].*[!@#$%^&*(),.?":{}|<>]/.test(e)&&(n+=t.multipleSpecial),e.length>=16&&(n+=t.longPassword),n}_scoreToStrength(e){if(0===e)return null;const[t,n,i]=this._config.thresholds;return e<=t?"weak":e<=n?"fair":e<=i?"good":"strong"}_updateUI(e){e?this._element.dataset.bsStrength=e:delete this._element.dataset.bsStrength;const t=e?STRENGTH_LEVELS.indexOf(e):-1;for(const[e,n]of this._segments.entries())e<=t?n.classList.add("active"):n.classList.remove("active");if(this._textElement)if(e&&this._config.messages[e]){this._textElement.textContent=this._config.messages[e],this._textElement.dataset.bsStrength=e;const t={weak:"danger",fair:"warning",good:"info",strong:"success"};this._textElement.style.setProperty("--strength-color",`var(--${t[e]}-text)`)}else this._textElement.textContent="",delete this._textElement.dataset.bsStrength}}EventHandler.on(document,`DOMContentLoaded${EVENT_KEY$5}.data-api`,()=>{for(const e of SelectorEngine.find("[data-bs-strength]"))Strength.getOrCreateInstance(e)});const NAME$7="otpInput",DATA_KEY$4="bs.otp-input",EVENT_KEY$4=`.${DATA_KEY$4}`,DATA_API_KEY$1=".data-api",EVENT_COMPLETE=`complete${EVENT_KEY$4}`,EVENT_INPUT=`input${EVENT_KEY$4}`,SELECTOR_DATA_OTP="[data-bs-otp]",SELECTOR_INPUT="input",Default$6={length:6,mask:!1},DefaultType$6={length:"number",mask:"boolean"};class OtpInput extends BaseComponent{constructor(e,t){super(e,t),this._inputs=SelectorEngine.find("input",this._element),this._setupInputs(),this._addEventListeners()}static get Default(){return Default$6}static get DefaultType(){return DefaultType$6}static get NAME(){return NAME$7}getValue(){return this._inputs.map(e=>e.value).join("")}setValue(e){const t=String(e).split("");for(const[e,n]of this._inputs.entries())n.value=t[e]||"";this._checkComplete()}clear(){for(const e of this._inputs)e.value="";this._inputs[0]?.focus()}focus(){const e=this._inputs.find(e=>!e.value);e?e.focus():this._inputs.at(-1)?.focus()}_setupInputs(){for(const e of this._inputs)e.setAttribute("maxlength","1"),e.setAttribute("inputmode","numeric"),e.setAttribute("pattern","\\d*"),e===this._inputs[0]?e.setAttribute("autocomplete","one-time-code"):e.setAttribute("autocomplete","off"),this._config.mask&&e.setAttribute("type","password")}_addEventListeners(){for(const[e,t]of this._inputs.entries())EventHandler.on(t,"input",t=>this._handleInput(t,e)),EventHandler.on(t,"keydown",t=>this._handleKeydown(t,e)),EventHandler.on(t,"paste",e=>this._handlePaste(e)),EventHandler.on(t,"focus",e=>this._handleFocus(e))}_handleInput(e,t){const n=e.target;/^\d*$/.test(n.value)||(n.value=n.value.replace(/\D/g,""));const{value:i}=n;if(i.length>1){const e=i.split("");n.value=e[0]||"";for(let n=1;n<e.length&&t+n<this._inputs.length;n++)this._inputs[t+n].value=e[n];const s=Math.min(t+e.length,this._inputs.length-1);this._inputs[s].focus()}else i&&t<this._inputs.length-1&&this._inputs[t+1].focus();EventHandler.trigger(this._element,EVENT_INPUT,{value:this.getValue(),index:t}),this._checkComplete()}_handleKeydown(e,t){const{key:n}=e;switch(n){case"Backspace":!this._inputs[t].value&&t>0&&(e.preventDefault(),this._inputs[t-1].value="",this._inputs[t-1].focus());break;case"Delete":e.preventDefault();for(let e=t;e<this._inputs.length-1;e++)this._inputs[e].value=this._inputs[e+1].value;this._inputs.at(-1).value="";break;case"ArrowLeft":t>0&&(e.preventDefault(),this._inputs[t-1].focus());break;case"ArrowRight":t<this._inputs.length-1&&(e.preventDefault(),this._inputs[t+1].focus())}}_handlePaste(e){e.preventDefault();const t=(e.clipboardData||window.clipboardData).getData("text").replace(/\D/g,"").slice(0,this._inputs.length);if(t){this.setValue(t);const e=Math.min(t.length,this._inputs.length)-1;this._inputs[e].focus()}}_handleFocus(e){e.target.select()}_checkComplete(){const e=this.getValue();e.length===this._inputs.length&&this._inputs.every(e=>""!==e.value)&&EventHandler.trigger(this._element,EVENT_COMPLETE,{value:e})}}EventHandler.on(document,`DOMContentLoaded${EVENT_KEY$4}.data-api`,()=>{for(const e of SelectorEngine.find("[data-bs-otp]"))OtpInput.getOrCreateInstance(e)});const ARIA_ATTRIBUTE_PATTERN=/^aria-[\w-]*$/i,DefaultAllowlist={"*":["class","dir","id","lang","role",ARIA_ATTRIBUTE_PATTERN],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},uriAttributes=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),SAFE_URL_PATTERN=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,allowedAttribute=(e,t)=>{const n=e.nodeName.toLowerCase();return t.includes(n)?!uriAttributes.has(n)||Boolean(SAFE_URL_PATTERN.test(e.nodeValue)):t.filter(e=>e instanceof RegExp).some(e=>e.test(n))};function sanitizeHtml(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const i=(new window.DOMParser).parseFromString(e,"text/html"),s=[].concat(...i.body.querySelectorAll("*"));for(const e of s){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const i=[].concat(...e.attributes),s=[].concat(t["*"]||[],t[n]||[]);for(const t of i)allowedAttribute(t,s)||e.removeAttribute(t.nodeName)}return i.body.innerHTML}const NAME$6="TemplateFactory",Default$5={allowList:DefaultAllowlist,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},DefaultType$5={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},DefaultContentType={entry:"(string|element|function|null)",selector:"(string|element)"};class TemplateFactory extends Config{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Default$5}static get DefaultType(){return DefaultType$5}static get NAME(){return NAME$6}getContent(){return Object.values(this._config.content).map(e=>this._resolvePossibleFunction(e)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},DefaultContentType)}_setContent(e,t,n){const i=SelectorEngine.findOne(n,e);i&&((t=this._resolvePossibleFunction(t))?isElement(t)?this._putElementInTemplate(getElement(t),i):this._config.html?i.innerHTML=this._maybeSanitize(t):i.textContent=t:i.remove())}_maybeSanitize(e){return this._config.sanitize?sanitizeHtml(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return execute(e,[void 0,this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const NAME$5="tooltip",DISALLOWED_ATTRIBUTES=new Set(["sanitize","allowList","sanitizeFn"]),CLASS_NAME_FADE$2="fade",CLASS_NAME_MODAL="modal",CLASS_NAME_SHOW$2="show",SELECTOR_TOOLTIP_INNER=".tooltip-inner",SELECTOR_MODAL=".modal",SELECTOR_DATA_TOGGLE$3='[data-bs-toggle="tooltip"]',EVENT_MODAL_HIDE="hide.bs.modal",TRIGGER_HOVER="hover",TRIGGER_FOCUS="focus",TRIGGER_CLICK="click",TRIGGER_MANUAL="manual",EVENT_HIDE$2="hide",EVENT_HIDDEN$2="hidden",EVENT_SHOW$2="show",EVENT_SHOWN$2="shown",EVENT_INSERTED="inserted",EVENT_CLICK$3="click",EVENT_FOCUSIN$2="focusin",EVENT_FOCUSOUT$1="focusout",EVENT_MOUSEENTER$1="mouseenter",EVENT_MOUSELEAVE="mouseleave",AttachmentMap={AUTO:"auto",TOP:"top",RIGHT:isRTL()?"left":"right",BOTTOM:"bottom",LEFT:isRTL()?"right":"left"},Default$4={allowList:DefaultAllowlist,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",floatingConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},DefaultType$4={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",floatingConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Tooltip extends BaseComponent{constructor(e,t){if(void 0===computePosition)throw new TypeError("Bootstrap's tooltips require Floating UI (https://floating-ui.com)");super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._floatingCleanup=null,this._templateFactory=null,this._newContent=null,this._mediaQueryListeners=[],this._responsivePlacements=null,this.tip=null,this._parseResponsivePlacements(),this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Default$4}static get DefaultType(){return DefaultType$4}static get NAME(){return NAME$5}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),EventHandler.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposeFloating(),this._disposeMediaQueryListeners(),super.dispose()}async show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=EventHandler.trigger(this._element,this.constructor.eventName("show")),t=(findShadowRoot(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this._disposeFloating();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),EventHandler.trigger(this._element,this.constructor.eventName("inserted"))),await this._createFloating(n),n.classList.add("show"),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))EventHandler.on(e,"mouseover",noop);this._queueCallback(()=>{EventHandler.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1},this.tip,this._isAnimated())}hide(){if(this._isShown()&&!EventHandler.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove("show"),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))EventHandler.off(e,"mouseover",noop);this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this._isHovered=null,this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposeFloating(),this._element.removeAttribute("aria-describedby"),EventHandler.trigger(this._element,this.constructor.eventName("hidden")))},this.tip,this._isAnimated())}}update(){this._floatingCleanup&&this.tip&&this._updateFloatingPosition()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();t.classList.remove("fade","show"),t.classList.add(`bs-${this.constructor.NAME}-auto`);const n=getUID(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add("fade"),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposeFloating(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new TemplateFactory({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[SELECTOR_TOOLTIP_INNER]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains("fade")}_isShown(){return this.tip&&this.tip.classList.contains("show")}_getPlacement(e){if(this._responsivePlacements){const e=getResponsivePlacement(this._responsivePlacements,"top");return AttachmentMap[e.toUpperCase()]||e}const t=execute(this._config.placement,[this,e,this._element]);return AttachmentMap[t.toUpperCase()]||t}_parseResponsivePlacements(){"string"==typeof this._config.placement?(this._responsivePlacements=parseResponsivePlacement(this._config.placement,"top"),this._responsivePlacements&&this._setupMediaQueryListeners()):this._responsivePlacements=null}_setupMediaQueryListeners(){this._disposeMediaQueryListeners(),this._mediaQueryListeners=createBreakpointListeners(()=>{this._isShown()&&this._updateFloatingPosition()})}_disposeMediaQueryListeners(){disposeBreakpointListeners(this._mediaQueryListeners),this._mediaQueryListeners=[]}async _createFloating(e){const t=this._getPlacement(e),n=e.querySelector(`.${this.constructor.NAME}-arrow`);await this._updateFloatingPosition(e,t,n),this._floatingCleanup=autoUpdate(this._element,e,()=>this._updateFloatingPosition(e,null,n))}async _updateFloatingPosition(e=this.tip,t=null,n=null){if(!e)return;t||(t=this._getPlacement(e)),n||(n=e.querySelector(`.${this.constructor.NAME}-arrow`));const i=this._getFloatingMiddleware(n),s=this._getFloatingConfig(t,i),{x:o,y:r,placement:a,middlewareData:l}=await computePosition(this._element,e,s);if(Object.assign(e.style,{position:"absolute",left:`${o}px`,top:`${r}px`}),n&&(n.style.position="absolute"),Manipulator.setDataAttribute(e,"placement",a),n&&l.arrow){const{x:e,y:t}=l.arrow,i=a.startsWith("top")||a.startsWith("bottom");Object.assign(n.style,{left:i&&null!==e?`${e}px`:"",top:i||null===t?"":`${t}px`,right:"",bottom:""})}}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?({placement:t,rects:n})=>e({placement:t,reference:n.reference,floating:n.floating},this._element):e}_resolvePossibleFunction(e){return execute(e,[this._element,this._element])}_getFloatingMiddleware(e){const t=this._getOffset(),n=[offset("function"==typeof t?t:{mainAxis:t[1]||0,crossAxis:t[0]||0}),flip({fallbackPlacements:this._config.fallbackPlacements}),shift({boundary:"clippingParents"===this._config.boundary?"clippingAncestors":this._config.boundary})];return e&&n.push(arrow({element:e})),n}_getFloatingConfig(e,t){const n={placement:e,middleware:t};return{...n,...execute(this._config.floatingConfig,[void 0,n])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)EventHandler.on(this._element,this.constructor.eventName("click"),this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger.click=!(t._isShown()&&t._activeTrigger.click),t.toggle()});else if("manual"!==t){const e="hover"===t?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n="hover"===t?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");EventHandler.on(this._element,e,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?"focus":"hover"]=!0,t._enter()}),EventHandler.on(this._element,n,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?"focus":"hover"]=t._element.contains(e.relatedTarget),t._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},EventHandler.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=Manipulator.getDataAttributes(this._element);for(const e of Object.keys(t))DISALLOWED_ATTRIBUTES.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:getElement(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposeFloating(){this._floatingCleanup&&(this._floatingCleanup(),this._floatingCleanup=null),this.tip&&(this.tip.remove(),this.tip=null)}}const initTooltip=e=>{const t=e.target.closest(SELECTOR_DATA_TOGGLE$3);if(!t)return;const n=Tooltip.getOrCreateInstance(t);"focusin"===e.type&&(n._activeTrigger.focus=!0,n._enter())};EventHandler.on(document,"focusin",SELECTOR_DATA_TOGGLE$3,initTooltip),EventHandler.on(document,"mouseenter",SELECTOR_DATA_TOGGLE$3,initTooltip);const NAME$4="popover",SELECTOR_TITLE=".popover-header",SELECTOR_CONTENT=".popover-body",SELECTOR_DATA_TOGGLE$2='[data-bs-toggle="popover"]',EVENT_CLICK$2="click",EVENT_FOCUSIN$1="focusin",EVENT_MOUSEENTER="mouseenter",Default$3={...Tooltip.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},DefaultType$3={...Tooltip.DefaultType,content:"(null|string|element|function)"};class Popover extends Tooltip{static get Default(){return Default$3}static get DefaultType(){return DefaultType$3}static get NAME(){return NAME$4}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[SELECTOR_TITLE]:this._getTitle(),[SELECTOR_CONTENT]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}}const initPopover=e=>{const t=e.target.closest(SELECTOR_DATA_TOGGLE$2);if(!t)return;"click"===e.type&&e.preventDefault();const n=Popover.getOrCreateInstance(t);"click"===e.type?n.toggle():"focusin"===e.type&&(n._activeTrigger.focus=!0,n._enter())};EventHandler.on(document,"click",SELECTOR_DATA_TOGGLE$2,initPopover),EventHandler.on(document,"focusin",SELECTOR_DATA_TOGGLE$2,initPopover),EventHandler.on(document,"mouseenter",SELECTOR_DATA_TOGGLE$2,initPopover);const NAME$3="scrollspy",DATA_KEY$3="bs.scrollspy",EVENT_KEY$3=`.${DATA_KEY$3}`,DATA_API_KEY=".data-api",EVENT_ACTIVATE=`activate${EVENT_KEY$3}`,EVENT_CLICK$1=`click${EVENT_KEY$3}`,EVENT_LOAD_DATA_API$1=`load${EVENT_KEY$3}.data-api`,CLASS_NAME_DROPDOWN_ITEM="dropdown-item",CLASS_NAME_ACTIVE$1="active",SELECTOR_DATA_SPY='[data-bs-spy="scroll"]',SELECTOR_TARGET_LINKS="[href]",SELECTOR_NAV_LIST_GROUP=".nav, .list-group",SELECTOR_NAV_LINKS=".nav-link",SELECTOR_NAV_ITEMS=".nav-item",SELECTOR_LIST_ITEMS=".list-group-item",SELECTOR_LINK_ITEMS=".nav-link, .nav-item > .nav-link, .list-group-item",SELECTOR_DROPDOWN=".dropdown",SELECTOR_DROPDOWN_TOGGLE$1=".dropdown-toggle",Default$2={rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},DefaultType$2={rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class ScrollSpy extends BaseComponent{constructor(e,t){super(e,t),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return Default$2}static get DefaultType(){return DefaultType$2}static get NAME(){return NAME$3}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const e of this._observableSections.values())this._observer.observe(e)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(e){return e.target=getElement(e.target)||document.body,"string"==typeof e.threshold&&(e.threshold=e.threshold.split(",").map(e=>Number.parseFloat(e))),e}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(EventHandler.off(this._config.target,EVENT_CLICK$1),EventHandler.on(this._config.target,EVENT_CLICK$1,"[href]",e=>{const t=this._observableSections.get(e.target.hash);if(t){e.preventDefault();const n=this._rootElement||window,i=t.offsetTop-this._element.offsetTop;if(n.scrollTo)return void n.scrollTo({top:i,behavior:"smooth"});n.scrollTop=i}}))}_getNewObserver(){const e={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(e=>this._observerCallback(e),e)}_observerCallback(e){const t=e=>this._targetLinks.get(`#${e.target.id}`),n=e=>{this._previousScrollData.visibleEntryTop=e.target.offsetTop,this._process(t(e))},i=(this._rootElement||document.documentElement).scrollTop,s=i>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=i;for(const o of e){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(t(o));continue}const e=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&e){if(n(o),!i)return}else s||e||n(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const e=SelectorEngine.find("[href]",this._config.target);for(const t of e){if(!t.hash||isDisabled(t))continue;const e=SelectorEngine.findOne(decodeURI(t.hash),this._element);isVisible(e)&&(this._targetLinks.set(decodeURI(t.hash),t),this._observableSections.set(t.hash,e))}}_process(e){this._activeTarget!==e&&(this._clearActiveClass(this._config.target),this._activeTarget=e,e.classList.add("active"),this._activateParents(e),EventHandler.trigger(this._element,EVENT_ACTIVATE,{relatedTarget:e}))}_activateParents(e){if(e.classList.contains("dropdown-item"))SelectorEngine.findOne(".dropdown-toggle",e.closest(".dropdown")).classList.add("active");else for(const t of SelectorEngine.parents(e,".nav, .list-group"))for(const e of SelectorEngine.prev(t,SELECTOR_LINK_ITEMS))e.classList.add("active")}_clearActiveClass(e){e.classList.remove("active");const t=SelectorEngine.find("[href].active",e);for(const e of t)e.classList.remove("active")}}EventHandler.on(window,EVENT_LOAD_DATA_API$1,()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_SPY))ScrollSpy.getOrCreateInstance(e)});const NAME$2="tab",DATA_KEY$2="bs.tab",EVENT_KEY$2=".bs.tab",EVENT_HIDE$1="hide.bs.tab",EVENT_HIDDEN$1="hidden.bs.tab",EVENT_SHOW$1="show.bs.tab",EVENT_SHOWN$1="shown.bs.tab",EVENT_CLICK_DATA_API="click.bs.tab",EVENT_KEYDOWN="keydown.bs.tab",EVENT_LOAD_DATA_API="load.bs.tab",ARROW_LEFT_KEY="ArrowLeft",ARROW_RIGHT_KEY="ArrowRight",ARROW_UP_KEY="ArrowUp",ARROW_DOWN_KEY="ArrowDown",HOME_KEY="Home",END_KEY="End",CLASS_NAME_ACTIVE="active",CLASS_NAME_FADE$1="fade",CLASS_NAME_SHOW$1="show",CLASS_DROPDOWN="dropdown",SELECTOR_DROPDOWN_TOGGLE=".dropdown-toggle",SELECTOR_DROPDOWN_MENU=".dropdown-menu",NOT_SELECTOR_DROPDOWN_TOGGLE=":not(.dropdown-toggle)",SELECTOR_TAB_PANEL='.list-group, .nav, [role="tablist"]',SELECTOR_OUTER=".nav-item, .list-group-item",SELECTOR_INNER='.nav-link:not(.dropdown-toggle), .list-group-item:not(.dropdown-toggle), [role="tab"]:not(.dropdown-toggle)',SELECTOR_DATA_TOGGLE$1='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',SELECTOR_INNER_ELEM=`${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE$1}`,SELECTOR_DATA_TOGGLE_ACTIVE='.active[data-bs-toggle="tab"], .active[data-bs-toggle="pill"], .active[data-bs-toggle="list"]';class Tab extends BaseComponent{constructor(e){super(e),this._parent=this._element.closest(SELECTOR_TAB_PANEL),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),EventHandler.on(this._element,EVENT_KEYDOWN,e=>this._keydown(e)))}static get NAME(){return"tab"}show(){const e=this._element;if(this._elemIsActive(e))return;const t=this._getActiveElem(),n=t?EventHandler.trigger(t,EVENT_HIDE$1,{relatedTarget:e}):null;EventHandler.trigger(e,EVENT_SHOW$1,{relatedTarget:t}).defaultPrevented||n&&n.defaultPrevented||(this._deactivate(t,e),this._activate(e,t))}_activate(e,t){e&&(e.classList.add("active"),this._activate(SelectorEngine.getElementFromSelector(e)),this._queueCallback(()=>{"tab"===e.getAttribute("role")?(e.removeAttribute("tabindex"),e.setAttribute("aria-selected",!0),this._toggleDropDown(e,!0),EventHandler.trigger(e,EVENT_SHOWN$1,{relatedTarget:t})):e.classList.add("show")},e,e.classList.contains("fade")))}_deactivate(e,t){e&&(e.classList.remove("active"),e.blur(),this._deactivate(SelectorEngine.getElementFromSelector(e)),this._queueCallback(()=>{"tab"===e.getAttribute("role")?(e.setAttribute("aria-selected",!1),e.setAttribute("tabindex","-1"),this._toggleDropDown(e,!1),EventHandler.trigger(e,EVENT_HIDDEN$1,{relatedTarget:t})):e.classList.remove("show")},e,e.classList.contains("fade")))}_keydown(e){if(![ARROW_LEFT_KEY,ARROW_RIGHT_KEY,ARROW_UP_KEY,ARROW_DOWN_KEY,HOME_KEY,END_KEY].includes(e.key))return;e.stopPropagation(),e.preventDefault();const t=this._getChildren().filter(e=>!isDisabled(e));let n;if([HOME_KEY,END_KEY].includes(e.key))n=t[e.key===HOME_KEY?0:t.length-1];else{const i=[ARROW_RIGHT_KEY,ARROW_DOWN_KEY].includes(e.key);n=getNextActiveElement(t,e.target,i,!0)}n&&(n.focus({preventScroll:!0}),Tab.getOrCreateInstance(n).show())}_getChildren(){return SelectorEngine.find(SELECTOR_INNER_ELEM,this._parent)}_getActiveElem(){return this._getChildren().find(e=>this._elemIsActive(e))||null}_setInitialAttributes(e,t){this._setAttributeIfNotExists(e,"role","tablist");for(const e of t)this._setInitialAttributesOnChild(e)}_setInitialAttributesOnChild(e){e=this._getInnerElement(e);const t=this._elemIsActive(e),n=this._getOuterElement(e);e.setAttribute("aria-selected",t),n!==e&&this._setAttributeIfNotExists(n,"role","presentation"),t||e.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(e,"role","tab"),this._setInitialAttributesOnTargetPanel(e)}_setInitialAttributesOnTargetPanel(e){const t=SelectorEngine.getElementFromSelector(e);t&&(this._setAttributeIfNotExists(t,"role","tabpanel"),e.id&&this._setAttributeIfNotExists(t,"aria-labelledby",`${e.id}`))}_toggleDropDown(e,t){const n=this._getOuterElement(e);if(!n.classList.contains("dropdown"))return;const i=(e,i)=>{const s=SelectorEngine.findOne(e,n);s&&s.classList.toggle(i,t)};i(".dropdown-toggle","active"),i(".dropdown-menu","show"),n.setAttribute("aria-expanded",t)}_setAttributeIfNotExists(e,t,n){e.hasAttribute(t)||e.setAttribute(t,n)}_elemIsActive(e){return e.classList.contains("active")}_getInnerElement(e){return e.matches(SELECTOR_INNER_ELEM)?e:SelectorEngine.findOne(SELECTOR_INNER_ELEM,e)}_getOuterElement(e){return e.closest(SELECTOR_OUTER)||e}}EventHandler.on(document,"click.bs.tab",SELECTOR_DATA_TOGGLE$1,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault(),isDisabled(this)||Tab.getOrCreateInstance(this).show()}),EventHandler.on(window,"load.bs.tab",()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE))Tab.getOrCreateInstance(e)});const NAME$1="toast",DATA_KEY$1="bs.toast",EVENT_KEY$1=".bs.toast",EVENT_MOUSEOVER="mouseover.bs.toast",EVENT_MOUSEOUT="mouseout.bs.toast",EVENT_FOCUSIN="focusin.bs.toast",EVENT_FOCUSOUT="focusout.bs.toast",EVENT_HIDE="hide.bs.toast",EVENT_HIDDEN="hidden.bs.toast",EVENT_SHOW="show.bs.toast",EVENT_SHOWN="shown.bs.toast",CLASS_NAME_FADE="fade",CLASS_NAME_HIDE="hide",CLASS_NAME_SHOW="show",CLASS_NAME_SHOWING="showing",DefaultType$1={animation:"boolean",autohide:"boolean",delay:"number"},Default$1={animation:!0,autohide:!0,delay:5e3};class Toast extends BaseComponent{constructor(e,t){super(e,t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Default$1}static get DefaultType(){return DefaultType$1}static get NAME(){return NAME$1}show(){EventHandler.trigger(this._element,EVENT_SHOW).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove("hide"),reflow(this._element),this._element.classList.add("show","showing"),this._queueCallback(()=>{this._element.classList.remove("showing"),EventHandler.trigger(this._element,EVENT_SHOWN),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this.isShown()&&(EventHandler.trigger(this._element,EVENT_HIDE).defaultPrevented||(this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.add("hide"),this._element.classList.remove("showing","show"),EventHandler.trigger(this._element,EVENT_HIDDEN)},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove("show"),super.dispose()}isShown(){return this._element.classList.contains("show")}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)return void this._clearTimeout();const n=e.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}_setListeners(){EventHandler.on(this._element,EVENT_MOUSEOVER,e=>this._onInteraction(e,!0)),EventHandler.on(this._element,EVENT_MOUSEOUT,e=>this._onInteraction(e,!1)),EventHandler.on(this._element,EVENT_FOCUSIN,e=>this._onInteraction(e,!0)),EventHandler.on(this._element,EVENT_FOCUSOUT,e=>this._onInteraction(e,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}}enableDismissTrigger(Toast);const NAME="toggler",DATA_KEY="bs.toggler",EVENT_KEY=`.${DATA_KEY}`,EVENT_TOGGLE=`toggle${EVENT_KEY}`,EVENT_TOGGLED=`toggled${EVENT_KEY}`,EVENT_CLICK="click",SELECTOR_DATA_TOGGLE='[data-bs-toggle="toggler"]',DefaultType={attribute:"string",value:"(string|number|boolean)"},Default={attribute:"class",value:null};class Toggler extends BaseComponent{static get Default(){return Default}static get DefaultType(){return DefaultType}static get NAME(){return NAME}toggle(){EventHandler.trigger(this._element,EVENT_TOGGLE).defaultPrevented||(this._execute(),EventHandler.trigger(this._element,EVENT_TOGGLED))}_execute(){const{attribute:e,value:t}=this._config;"id"!==e&&("class"!==e?this._element.getAttribute(e)!==String(t)?this._element.setAttribute(e,t):this._element.removeAttribute(e):this._element.classList.toggle(t))}}eventActionOnPlugin(Toggler,"click",SELECTOR_DATA_TOGGLE,"toggle");export{Alert,Button,Carousel,Collapse,Datepicker,Dialog,Dropdown,NavOverflow,Offcanvas,OtpInput,Popover,ScrollSpy,Strength,Tab,Toast,Toggler,Tooltip};
+import{computePosition,autoUpdate,offset,flip,shift,arrow}from"@floating-ui/dom";import{Calendar}from"vanilla-calendar-pro";const elementMap=new Map,Data={set(e,t,n){elementMap.has(e)||elementMap.set(e,new Map);const s=elementMap.get(e);s.has(t)||0===s.size?s.set(t,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,t)=>elementMap.has(e)&&elementMap.get(e).get(t)||null,remove(e,t){if(!elementMap.has(e))return;const n=elementMap.get(e);n.delete(t),0===n.size&&elementMap.delete(e)}},namespaceRegex=/[^.]*(?=\..*)\.|.*/,stripNameRegex=/\..*/,stripUidRegex=/::\d+$/,eventRegistry={};let uidEvent=1;const customEvents={mouseenter:"mouseover",mouseleave:"mouseout"},nativeEvents=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function makeEventUid(e,t){return t&&`${t}::${uidEvent++}`||e.uidEvent||uidEvent++}function getElementEvents(e){const t=makeEventUid(e);return e.uidEvent=t,eventRegistry[t]=eventRegistry[t]||{},eventRegistry[t]}function bootstrapHandler(e,t){return function n(s){return hydrateObj(s,{delegateTarget:e}),n.oneOff&&EventHandler.off(e,s.type,t),t.apply(e,[s])}}function bootstrapDelegationHandler(e,t,n){return function s(i){const o=e.querySelectorAll(t);for(let{target:a}=i;a&&a!==this;a=a.parentNode)for(const r of o)if(r===a)return hydrateObj(i,{delegateTarget:a}),s.oneOff&&EventHandler.off(e,i.type,t,n),n.apply(a,[i])}}function findHandler(e,t,n=null){return Object.values(e).find(e=>e.callable===t&&e.delegationSelector===n)}function normalizeParameters(e,t,n){const s="string"==typeof t,i=s?n:t||n;let o=getTypeEvent(e);return nativeEvents.has(o)||(o=e),[s,i,o]}function addHandler(e,t,n,s,i){if("string"!=typeof t||!e)return;let[o,a,r]=normalizeParameters(t,n,s);if(t in customEvents){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};a=e(a)}const l=getElementEvents(e),c=l[r]||(l[r]={}),_=findHandler(c,a,o?n:null);if(_)return void(_.oneOff=_.oneOff&&i);const h=makeEventUid(a,t.replace(namespaceRegex,"")),u=o?bootstrapDelegationHandler(e,n,a):bootstrapHandler(e,a);u.delegationSelector=o?n:null,u.callable=a,u.oneOff=i,u.uidEvent=h,c[h]=u,e.addEventListener(r,u,o)}function removeHandler(e,t,n,s,i){const o=findHandler(t[n],s,i);o&&(e.removeEventListener(n,o,Boolean(i)),delete t[n][o.uidEvent])}function removeNamespacedHandlers(e,t,n,s){const i=t[n]||{};for(const[o,a]of Object.entries(i))o.includes(s)&&removeHandler(e,t,n,a.callable,a.delegationSelector)}function getTypeEvent(e){return e=e.replace(stripNameRegex,""),customEvents[e]||e}const EventHandler={on(e,t,n,s){addHandler(e,t,n,s,!1)},one(e,t,n,s){addHandler(e,t,n,s,!0)},off(e,t,n,s){if("string"!=typeof t||!e)return;const[i,o,a]=normalizeParameters(t,n,s),r=a!==t,l=getElementEvents(e),c=l[a]||{},_=t.startsWith(".");if(void 0===o){if(_)for(const n of Object.keys(l))removeNamespacedHandlers(e,l,n,t.slice(1));for(const[n,s]of Object.entries(c)){const i=n.replace(stripUidRegex,"");r&&!t.includes(i)||removeHandler(e,l,a,s.callable,s.delegationSelector)}}else{if(!Object.keys(c).length)return;removeHandler(e,l,a,o,i?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const s=hydrateObj(new Event(t,{bubbles:!0,cancelable:!0}),n);return e.dispatchEvent(s),s}};function hydrateObj(e,t={}){for(const[n,s]of Object.entries(t))try{e[n]=s}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>s})}return e}function normalizeData(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function normalizeDataKey(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}const Manipulator={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${normalizeDataKey(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${normalizeDataKey(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter(e=>e.startsWith("bs")&&!e.startsWith("bsConfig"));for(const s of n){let n=s.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1),t[n]=normalizeData(e.dataset[s])}return t},getDataAttribute:(e,t)=>normalizeData(e.getAttribute(`data-bs-${normalizeDataKey(t)}`))},MAX_UID=1e6,MILLISECONDS_MULTIPLIER=1e3,TRANSITION_END="transitionend",parseSelector=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(e,t)=>`#${CSS.escape(t)}`)),e),toType=e=>null==e?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),getUID=e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e},getTransitionDurationFromElement=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const s=Number.parseFloat(t),i=Number.parseFloat(n);return s||i?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0},triggerTransitionEnd=e=>{e.dispatchEvent(new Event(TRANSITION_END))},isElement=e=>!(!e||"object"!=typeof e)&&void 0!==e.nodeType,getElement=e=>isElement(e)?e:"string"==typeof e&&e.length>0?document.querySelector(parseSelector(e)):null,isVisible=e=>{if(!isElement(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t},isDisabled=e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")),findShadowRoot=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?findShadowRoot(e.parentNode):null},noop=()=>{},reflow=e=>{e.offsetHeight},isRTL=()=>"rtl"===document.documentElement.dir,execute=(e,t=[],n=e)=>"function"==typeof e?e.call(...t):n,executeAfterTransition=(e,t,n=!0)=>{if(!n)return void execute(e);const s=getTransitionDurationFromElement(t)+5;let i=!1;const o=({target:n})=>{n===t&&(i=!0,t.removeEventListener(TRANSITION_END,o),execute(e))};t.addEventListener(TRANSITION_END,o),setTimeout(()=>{i||triggerTransitionEnd(t)},s)},getNextActiveElement=(e,t,n,s)=>{const i=e.length;let o=e.indexOf(t);return-1===o?!n&&s?e[i-1]:e[0]:(o+=n?1:-1,s&&(o=(o+i)%i),e[Math.max(0,Math.min(o,i-1))])};class Config{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=isElement(t)?Manipulator.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...isElement(t)?Manipulator.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e,t=this.constructor.DefaultType){for(const[n,s]of Object.entries(t)){const t=e[n],i=isElement(t)?"element":toType(t);if(!new RegExp(s).test(i))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${i}" but expected type "${s}".`)}}}const VERSION="6.0.0-alpha1";class BaseComponent extends Config{constructor(e,t){super(),(e=getElement(e))&&(this._element=e,this._config=this._getConfig(t),Data.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Data.remove(this._element,this.constructor.DATA_KEY),EventHandler.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t,n=!0){executeAfterTransition(e,t,n)}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return Data.get(getElement(e),this.DATA_KEY)}static getOrCreateInstance(e,t={}){return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return VERSION}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const getSelector=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map(e=>parseSelector(e)).join(","):null},SelectorEngine={find:(e,t=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(t,e)),findOne:(e,t=document.documentElement)=>Element.prototype.querySelector.call(t,e),children:(e,t)=>[].concat(...e.children).filter(e=>e.matches(t)),parents(e,t){const n=[];let s=e.parentNode.closest(t);for(;s;)n.push(s),s=s.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(e=>`${e}:not([tabindex^="-"])`).join(",");return this.find(t,e).filter(e=>!isDisabled(e)&&isVisible(e))},getSelectorFromElement(e){const t=getSelector(e);return t&&SelectorEngine.findOne(t)?t:null},getElementFromSelector(e){const t=getSelector(e);return t?SelectorEngine.findOne(t):null},getMultipleElementsFromSelector(e){const t=getSelector(e);return t?SelectorEngine.find(t):[]}},enableDismissTrigger=(e,t="hide")=>{const n=`click.dismiss${e.EVENT_KEY}`,s=e.NAME;EventHandler.on(document,n,`[data-bs-dismiss="${s}"]`,function(n){if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),isDisabled(this))return;const i=SelectorEngine.getElementFromSelector(this)||this.closest(`.${s}`);e.getOrCreateInstance(i)[t]()})},eventActionOnPlugin=(e,t,n,s,i=null)=>{eventAction(`${t}.${e.NAME}`,n,t=>{const n=t.targets.filter(Boolean).map(t=>e.getOrCreateInstance(t));"function"==typeof i&&i({...t,instances:n});for(const e of n)e[s]()})},eventAction=(e,t,n)=>{const s=`${t}:not(.disabled):not(:disabled)`;EventHandler.on(document,e,s,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault();const t=SelectorEngine.getSelectorFromElement(this),s=t?SelectorEngine.find(t):[this];n({targets:s,event:e})})},NAME$l="alert",DATA_KEY$g="bs.alert",EVENT_KEY$h=".bs.alert",EVENT_CLOSE="close.bs.alert",EVENT_CLOSED="closed.bs.alert",CLASS_NAME_FADE$4="fade",CLASS_NAME_SHOW$8="show";class Alert extends BaseComponent{static get NAME(){return NAME$l}close(){if(EventHandler.trigger(this._element,EVENT_CLOSE).defaultPrevented)return;this._element.classList.remove("show");const e=this._element.classList.contains("fade");this._queueCallback(()=>this._destroyElement(),this._element,e)}_destroyElement(){this._element.remove(),EventHandler.trigger(this._element,EVENT_CLOSED),this.dispose()}}enableDismissTrigger(Alert,"close");const NAME$k="button",DATA_KEY$f="bs.button",EVENT_KEY$g=`.${DATA_KEY$f}`,DATA_API_KEY$a=".data-api",CLASS_NAME_ACTIVE$3="active",SELECTOR_DATA_TOGGLE$a='[data-bs-toggle="button"]',EVENT_CLICK_DATA_API$8=`click${EVENT_KEY$g}.data-api`;class Button extends BaseComponent{static get NAME(){return NAME$k}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}}EventHandler.on(document,EVENT_CLICK_DATA_API$8,SELECTOR_DATA_TOGGLE$a,e=>{e.preventDefault();const t=e.target.closest(SELECTOR_DATA_TOGGLE$a);Button.getOrCreateInstance(t).toggle()});const NAME$j="swipe",EVENT_KEY$f=".bs.swipe",EVENT_TOUCHSTART="touchstart.bs.swipe",EVENT_TOUCHMOVE="touchmove.bs.swipe",EVENT_TOUCHEND="touchend.bs.swipe",EVENT_POINTERDOWN="pointerdown.bs.swipe",EVENT_POINTERUP="pointerup.bs.swipe",POINTER_TYPE_TOUCH="touch",POINTER_TYPE_PEN="pen",CLASS_NAME_POINTER_EVENT="pointer-event",SWIPE_THRESHOLD=40,Default$i={endCallback:null,leftCallback:null,rightCallback:null},DefaultType$i={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class Swipe extends Config{constructor(e,t){super(),this._element=e,e&&Swipe.isSupported()&&(this._config=this._getConfig(t),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Default$i}static get DefaultType(){return DefaultType$i}static get NAME(){return NAME$j}dispose(){EventHandler.off(this._element,".bs.swipe")}_start(e){this._supportPointerEvents?this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX):this._deltaX=e.touches[0].clientX}_end(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX),this._handleSwipe(),execute(this._config.endCallback)}_move(e){this._deltaX=e.touches&&e.touches.length>1?0:e.touches[0].clientX-this._deltaX}_handleSwipe(){const e=Math.abs(this._deltaX);if(e<=40)return;const t=e/this._deltaX;this._deltaX=0,t&&execute(t>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(EventHandler.on(this._element,EVENT_POINTERDOWN,e=>this._start(e)),EventHandler.on(this._element,EVENT_POINTERUP,e=>this._end(e)),this._element.classList.add("pointer-event")):(EventHandler.on(this._element,EVENT_TOUCHSTART,e=>this._start(e)),EventHandler.on(this._element,EVENT_TOUCHMOVE,e=>this._move(e)),EventHandler.on(this._element,EVENT_TOUCHEND,e=>this._end(e)))}_eventIsPointerPenTouch(e){return this._supportPointerEvents&&("pen"===e.pointerType||"touch"===e.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const NAME$i="carousel",DATA_KEY$e="bs.carousel",EVENT_KEY$e=`.${DATA_KEY$e}`,DATA_API_KEY$9=".data-api",ARROW_LEFT_KEY$2="ArrowLeft",ARROW_RIGHT_KEY$2="ArrowRight",TOUCHEVENT_COMPAT_WAIT=500,ORDER_NEXT="next",ORDER_PREV="prev",DIRECTION_LEFT="left",DIRECTION_RIGHT="right",EVENT_SLIDE=`slide${EVENT_KEY$e}`,EVENT_SLID=`slid${EVENT_KEY$e}`,EVENT_KEYDOWN$1=`keydown${EVENT_KEY$e}`,EVENT_MOUSEENTER$2=`mouseenter${EVENT_KEY$e}`,EVENT_MOUSELEAVE$1=`mouseleave${EVENT_KEY$e}`,EVENT_DRAG_START=`dragstart${EVENT_KEY$e}`,EVENT_LOAD_DATA_API$3=`load${EVENT_KEY$e}.data-api`,EVENT_CLICK_DATA_API$7=`click${EVENT_KEY$e}.data-api`,CLASS_NAME_CAROUSEL="carousel",CLASS_NAME_ACTIVE$2="active",CLASS_NAME_SLIDE="slide",CLASS_NAME_END="carousel-item-end",CLASS_NAME_START="carousel-item-start",CLASS_NAME_NEXT="carousel-item-next",CLASS_NAME_PREV="carousel-item-prev",SELECTOR_ACTIVE=".active",SELECTOR_ITEM=".carousel-item",SELECTOR_ACTIVE_ITEM=".active.carousel-item",SELECTOR_ITEM_IMG=".carousel-item img",SELECTOR_INDICATORS=".carousel-indicators",SELECTOR_DATA_SLIDE="[data-bs-slide], [data-bs-slide-to]",SELECTOR_DATA_RIDE='[data-bs-ride="carousel"]',KEY_TO_DIRECTION={[ARROW_LEFT_KEY$2]:"right",[ARROW_RIGHT_KEY$2]:"left"},Default$h={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},DefaultType$h={interval:"number",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class Carousel extends BaseComponent{constructor(e,t){super(e,t),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=SelectorEngine.findOne(SELECTOR_INDICATORS,this._element),this._addEventListeners(),"carousel"===this._config.ride&&this.cycle()}static get Default(){return Default$h}static get DefaultType(){return DefaultType$h}static get NAME(){return NAME$i}next(){this._slide("next")}nextWhenVisible(){"visible"===document.visibilityState&&isVisible(this._element)&&this.next()}prev(){this._slide("prev")}pause(){this._isSliding&&triggerTransitionEnd(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?EventHandler.one(this._element,EVENT_SLID,()=>this.cycle()):this.cycle())}to(e){const t=this._getItems();if(e>t.length-1||e<0)return;if(this._isSliding)return void EventHandler.one(this._element,EVENT_SLID,()=>this.to(e));const n=this._getItemIndex(this._getActive());if(n===e)return;const s=e>n?"next":"prev";this._slide(s,t[e])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(e){return e.defaultInterval=e.interval,e}_addEventListeners(){this._config.keyboard&&EventHandler.on(this._element,EVENT_KEYDOWN$1,e=>this._keydown(e)),"hover"===this._config.pause&&(EventHandler.on(this._element,EVENT_MOUSEENTER$2,()=>this.pause()),EventHandler.on(this._element,EVENT_MOUSELEAVE$1,()=>this._maybeEnableCycle())),this._config.touch&&Swipe.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const e of SelectorEngine.find(SELECTOR_ITEM_IMG,this._element))EventHandler.on(e,EVENT_DRAG_START,e=>e.preventDefault());const e={leftCallback:()=>this._slide(this._directionToOrder("left")),rightCallback:()=>this._slide(this._directionToOrder("right")),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),500+this._config.interval))}};this._swipeHelper=new Swipe(this._element,e)}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const t=KEY_TO_DIRECTION[e.key];t&&(e.preventDefault(),this._slide(this._directionToOrder(t)))}_getItemIndex(e){return this._getItems().indexOf(e)}_setActiveIndicatorElement(e){if(!this._indicatorsElement)return;const t=SelectorEngine.findOne(".active",this._indicatorsElement);t.classList.remove("active"),t.removeAttribute("aria-current");const n=SelectorEngine.findOne(`[data-bs-slide-to="${e}"]`,this._indicatorsElement);n&&(n.classList.add("active"),n.setAttribute("aria-current","true"))}_updateInterval(){const e=this._activeElement||this._getActive();if(!e)return;const t=Number.parseInt(e.getAttribute("data-bs-interval"),10);this._config.interval=t||this._config.defaultInterval}_slide(e,t=null){if(this._isSliding)return;const n=this._getActive(),s="next"===e,i=t||getNextActiveElement(this._getItems(),n,s,this._config.wrap);if(i===n)return;const o=this._getItemIndex(i),a=t=>EventHandler.trigger(this._element,t,{relatedTarget:i,direction:this._orderToDirection(e),from:this._getItemIndex(n),to:o});if(a(EVENT_SLIDE).defaultPrevented)return;if(!n||!i)return;const r=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=i;const l=s?CLASS_NAME_START:CLASS_NAME_END,c=s?CLASS_NAME_NEXT:CLASS_NAME_PREV;i.classList.add(c),reflow(i),n.classList.add(l),i.classList.add(l),this._queueCallback(()=>{i.classList.remove(l,c),i.classList.add("active"),n.classList.remove("active",c,l),this._isSliding=!1,a(EVENT_SLID)},n,this._isAnimated()),r&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element)}_getItems(){return SelectorEngine.find(SELECTOR_ITEM,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(e){return isRTL()?"left"===e?"prev":"next":"left"===e?"next":"prev"}_orderToDirection(e){return isRTL()?"prev"===e?"left":"right":"prev"===e?"right":"left"}}EventHandler.on(document,EVENT_CLICK_DATA_API$7,SELECTOR_DATA_SLIDE,function(e){const t=SelectorEngine.getElementFromSelector(this);if(!t||!t.classList.contains("carousel"))return;e.preventDefault();const n=Carousel.getOrCreateInstance(t),s=this.getAttribute("data-bs-slide-to");return s?(n.to(s),void n._maybeEnableCycle()):"next"===Manipulator.getDataAttribute(this,"slide")?(n.next(),void n._maybeEnableCycle()):(n.prev(),void n._maybeEnableCycle())}),EventHandler.on(window,EVENT_LOAD_DATA_API$3,()=>{const e=SelectorEngine.find(SELECTOR_DATA_RIDE);for(const t of e)Carousel.getOrCreateInstance(t)});const NAME$h="collapse",DATA_KEY$d="bs.collapse",EVENT_KEY$d=`.${DATA_KEY$d}`,DATA_API_KEY$8=".data-api",EVENT_SHOW$8=`show${EVENT_KEY$d}`,EVENT_SHOWN$8=`shown${EVENT_KEY$d}`,EVENT_HIDE$8=`hide${EVENT_KEY$d}`,EVENT_HIDDEN$8=`hidden${EVENT_KEY$d}`,EVENT_CLICK_DATA_API$6=`click${EVENT_KEY$d}.data-api`,CLASS_NAME_SHOW$7="show",CLASS_NAME_COLLAPSE="collapse",CLASS_NAME_COLLAPSING="collapsing",CLASS_NAME_COLLAPSED="collapsed",CLASS_NAME_DEEPER_CHILDREN=":scope .collapse .collapse",CLASS_NAME_HORIZONTAL="collapse-horizontal",WIDTH="width",HEIGHT="height",SELECTOR_ACTIVES=".collapse.show, .collapse.collapsing",SELECTOR_DATA_TOGGLE$9='[data-bs-toggle="collapse"]',Default$g={parent:null,toggle:!0},DefaultType$g={parent:"(null|element)",toggle:"boolean"};class Collapse extends BaseComponent{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=SelectorEngine.find(SELECTOR_DATA_TOGGLE$9);for(const e of n){const t=SelectorEngine.getSelectorFromElement(e),n=SelectorEngine.find(t).filter(e=>e===this._element);null!==t&&n.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Default$g}static get DefaultType(){return DefaultType$g}static get NAME(){return NAME$h}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(e=>e!==this._element).map(e=>Collapse.getOrCreateInstance(e,{toggle:!1}))),e.length&&e[0]._isTransitioning)return;if(EventHandler.trigger(this._element,EVENT_SHOW$8).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[t]="",EventHandler.trigger(this._element,EVENT_SHOWN$8)},this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(EventHandler.trigger(this._element,EVENT_HIDE$8).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,reflow(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");for(const e of this._triggerArray){const t=SelectorEngine.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0,this._element.style[e]="",this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),EventHandler.trigger(this._element,EVENT_HIDDEN$8)},this._element,!0)}_isShown(e=this._element){return e.classList.contains("show")}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=getElement(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?WIDTH:HEIGHT}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$9);for(const t of e){const e=SelectorEngine.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN,this._config.parent);return SelectorEngine.find(e,this._config.parent).filter(e=>!t.includes(e))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const n of e)n.classList.toggle("collapsed",!t),n.setAttribute("aria-expanded",t)}}EventHandler.on(document,EVENT_CLICK_DATA_API$6,SELECTOR_DATA_TOGGLE$9,function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of SelectorEngine.getMultipleElementsFromSelector(this))Collapse.getOrCreateInstance(e,{toggle:!1}).toggle()});const BREAKPOINTS={sm:576,md:768,lg:1024,xl:1280,"2xl":1536},parseResponsivePlacement=(e,t="bottom")=>{if(!e||!e.includes(":"))return null;const n=e.split(/\s+/),s={xs:t};for(const e of n)if(e.includes(":")){const[t,n]=e.split(":");void 0!==BREAKPOINTS[t]&&(s[t]=n)}else s.xs=e;return s},getResponsivePlacement=(e,t="bottom")=>{if(!e)return t;const n=window.innerWidth;let s=e.xs||t;const i=["sm","md","lg","xl","2xl"];for(const t of i)n>=BREAKPOINTS[t]&&e[t]&&(s=e[t]);return s},createBreakpointListeners=e=>{const t=[];for(const n of Object.keys(BREAKPOINTS)){const s=BREAKPOINTS[n],i=window.matchMedia(`(min-width: ${s}px)`);i.addEventListener("change",e),t.push({mql:i,handler:e})}return t},disposeBreakpointListeners=e=>{for(const{mql:t,handler:n}of e)t.removeEventListener("change",n)},NAME$g="menu",DATA_KEY$c="bs.menu",EVENT_KEY$c=".bs.menu",DATA_API_KEY$7=".data-api",ESCAPE_KEY$2="Escape",TAB_KEY$2="Tab",ARROW_UP_KEY$2="ArrowUp",ARROW_DOWN_KEY$2="ArrowDown",ARROW_LEFT_KEY$1="ArrowLeft",ARROW_RIGHT_KEY$1="ArrowRight",HOME_KEY$2="Home",END_KEY$2="End",ENTER_KEY$1="Enter",SPACE_KEY$1=" ",RIGHT_MOUSE_BUTTON=2,SUBMENU_CLOSE_DELAY=100,EVENT_HIDE$7="hide.bs.menu",EVENT_HIDDEN$7="hidden.bs.menu",EVENT_SHOW$7="show.bs.menu",EVENT_SHOWN$7="shown.bs.menu",EVENT_CLICK_DATA_API$5="click.bs.menu.data-api",EVENT_KEYDOWN_DATA_API="keydown.bs.menu.data-api",EVENT_KEYUP_DATA_API="keyup.bs.menu.data-api",CLASS_NAME_SHOW$6="show",SELECTOR_DATA_TOGGLE$8='[data-bs-toggle="menu"]:not(.disabled):not(:disabled)',SELECTOR_MENU$2=".menu",SELECTOR_SUBMENU=".submenu",SELECTOR_SUBMENU_TOGGLE=".submenu > .menu-item",SELECTOR_NAVBAR_NAV=".navbar-nav",SELECTOR_VISIBLE_ITEMS$1=".menu-item:not(.disabled):not(:disabled)",DEFAULT_PLACEMENT="bottom-start",SUBMENU_PLACEMENT="end-start",resolveLogicalPlacement=e=>isRTL()?e.replace(/^start(?=-|$)/,"right").replace(/^end(?=-|$)/,"left"):e.replace(/^start(?=-|$)/,"left").replace(/^end(?=-|$)/,"right"),triangleSign=(e,t,n)=>(e.x-n.x)*(t.y-n.y)-(t.x-n.x)*(e.y-n.y),Default$f={autoClose:!0,boundary:"clippingParents",container:!1,display:"dynamic",offset:[0,2],floatingConfig:null,menu:null,placement:"bottom-start",reference:"toggle",strategy:"absolute",submenuTrigger:"both",submenuDelay:100},DefaultType$f={autoClose:"(boolean|string)",boundary:"(string|element)",container:"(string|element|boolean)",display:"string",offset:"(array|string|function)",floatingConfig:"(null|object|function)",menu:"(null|element)",placement:"string",reference:"(string|element|object)",strategy:"string",submenuTrigger:"string",submenuDelay:"number"};class Menu extends BaseComponent{static _openInstances=(()=>new Set)();constructor(e,t){if(void 0===computePosition)throw new TypeError("Bootstrap's menus require Floating UI (https://floating-ui.com)");super(e,t),this._floatingCleanup=null,this._mediaQueryListeners=[],this._responsivePlacements=null,this._parent=this._element.parentNode,this._isSubmenu=this._parent.classList?.contains("submenu"),this._openSubmenus=new Map,this._submenuCloseTimeouts=new Map,this._hoverIntentData=null,this._menu=this._config.menu||this._findMenu(),this._menuOriginalParent=this._menu?.parentNode,this._parseResponsivePlacements(),this._setupSubmenuListeners()}static get Default(){return Default$f}static get DefaultType(){return DefaultType$f}static get NAME(){return"menu"}toggle(){return this._isShown()?this.hide():this.show()}show(){if(isDisabled(this._element)||this._isShown())return;const e={relatedTarget:this._element};if(!EventHandler.trigger(this._element,EVENT_SHOW$7,e).defaultPrevented){if(this._moveMenuToContainer(),this._createFloating(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const e of[].concat(...document.body.children))EventHandler.on(e,"mouseover",noop);this._element.focus({focusVisible:!1}),this._element.setAttribute("aria-expanded","true"),this._menu.classList.add("show"),this._element.classList.add("show"),this._parent&&this._parent.classList.add("show"),Menu._openInstances.add(this),EventHandler.trigger(this._element,EVENT_SHOWN$7,e)}}hide(){if(isDisabled(this._element)||!this._isShown())return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._disposeFloating(),this._restoreMenuToOriginalParent(),this._disposeMediaQueryListeners(),this._closeAllSubmenus(),this._clearAllSubmenuTimeouts(),Menu._openInstances.delete(this),super.dispose()}update(){this._floatingCleanup&&this._updateFloatingPosition()}_findMenu(){return SelectorEngine.next(this._element,".menu")[0]||SelectorEngine.prev(this._element,".menu")[0]||SelectorEngine.findOne(".menu",this._parent)}_completeHide(e){if(!EventHandler.trigger(this._element,EVENT_HIDE$7,e).defaultPrevented){if(this._closeAllSubmenus(),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))EventHandler.off(e,"mouseover",noop);this._disposeFloating(),this._restoreMenuToOriginalParent(),this._menu.classList.remove("show"),this._element.classList.remove("show"),this._parent&&this._parent.classList.remove("show"),this._element.setAttribute("aria-expanded","false"),Manipulator.removeDataAttribute(this._menu,"placement"),Manipulator.removeDataAttribute(this._menu,"display"),Menu._openInstances.delete(this),EventHandler.trigger(this._element,EVENT_HIDDEN$7,e)}}_getConfig(e){if("object"==typeof(e=super._getConfig(e)).reference&&!isElement(e.reference)&&"function"!=typeof e.reference.getBoundingClientRect)throw new TypeError(`${"menu".toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_createFloating(){if("static"===this._config.display)return void Manipulator.setDataAttribute(this._menu,"display","static");let e=this._element;"parent"===this._config.reference?e=this._parent:isElement(this._config.reference)?e=getElement(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference),this._updateFloatingPosition(e),this._floatingCleanup=autoUpdate(e,this._menu,()=>this._updateFloatingPosition(e))}async _updateFloatingPosition(e=null){if(!this._menu)return;e||(e="parent"===this._config.reference?this._parent:isElement(this._config.reference)?getElement(this._config.reference):"object"==typeof this._config.reference?this._config.reference:this._element);const t=this._getPlacement(),n=this._getFloatingMiddleware(),s=this._getFloatingConfig(t,n);await this._applyFloatingPosition(e,this._menu,s.placement,s.middleware,s.strategy)}_isShown(){return this._menu.classList.contains("show")}_getPlacement(){const e=this._responsivePlacements?getResponsivePlacement(this._responsivePlacements,"bottom-start"):this._config.placement;return resolveLogicalPlacement(e)}_parseResponsivePlacements(){this._responsivePlacements=parseResponsivePlacement(this._config.placement,"bottom-start"),this._responsivePlacements&&this._setupMediaQueryListeners()}_setupMediaQueryListeners(){this._disposeMediaQueryListeners(),this._mediaQueryListeners=createBreakpointListeners(()=>{this._isShown()&&this._updateFloatingPosition()})}_disposeMediaQueryListeners(){disposeBreakpointListeners(this._mediaQueryListeners),this._mediaQueryListeners=[]}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?({placement:t,rects:n})=>e({placement:t,reference:n.reference,floating:n.floating},this._element):e}_getFloatingMiddleware(){const e=this._getOffset();return[offset("function"==typeof e?e:{mainAxis:e[1]||0,crossAxis:e[0]||0}),flip({fallbackPlacements:this._getFallbackPlacements()}),shift({boundary:"clippingParents"===this._config.boundary?"clippingAncestors":this._config.boundary})]}_getFallbackPlacements(){return{bottom:["top","bottom-start","bottom-end","top-start","top-end"],"bottom-start":["top-start","bottom-end","top-end"],"bottom-end":["top-end","bottom-start","top-start"],top:["bottom","top-start","top-end","bottom-start","bottom-end"],"top-start":["bottom-start","top-end","bottom-end"],"top-end":["bottom-end","top-start","bottom-start"],right:["left","right-start","right-end","left-start","left-end"],"right-start":["left-start","right-end","left-end","top-start","bottom-start"],"right-end":["left-end","right-start","left-start","top-end","bottom-end"],left:["right","left-start","left-end","right-start","right-end"],"left-start":["right-start","left-end","right-end","top-start","bottom-start"],"left-end":["right-end","left-start","right-start","top-end","bottom-end"]}[this._getPlacement()]||["top","bottom","right","left"]}_getFloatingConfig(e,t){const n={placement:e,middleware:t,strategy:this._config.strategy};return{...n,...execute(this._config.floatingConfig,[void 0,n])}}_disposeFloating(){this._floatingCleanup&&(this._floatingCleanup(),this._floatingCleanup=null)}_getContainer(){const{container:e}=this._config;return!1===e?null:!0===e?document.body:getElement(e)}_moveMenuToContainer(){const e=this._getContainer();e&&this._menu&&this._menu.parentNode!==e&&e.append(this._menu)}_restoreMenuToOriginalParent(){this._menuOriginalParent&&this._menu&&this._menu.parentNode!==this._menuOriginalParent&&this._menuOriginalParent.append(this._menu)}async _applyFloatingPosition(e,t,n,s,i="absolute"){if(!t.isConnected)return null;const{x:o,y:a,placement:r}=await computePosition(e,t,{placement:n,middleware:s,strategy:i});return t.isConnected?(Object.assign(t.style,{position:i,left:`${o}px`,top:`${a}px`,margin:"0"}),Manipulator.setDataAttribute(t,"placement",r),r):null}_setupSubmenuListeners(){"hover"!==this._config.submenuTrigger&&"both"!==this._config.submenuTrigger||(EventHandler.on(this._menu,"mouseenter",".submenu > .menu-item",e=>{this._onSubmenuTriggerEnter(e)}),EventHandler.on(this._menu,"mouseleave",".submenu",e=>{this._onSubmenuLeave(e)}),EventHandler.on(this._menu,"mousemove",e=>{this._trackMousePosition(e)})),"click"!==this._config.submenuTrigger&&"both"!==this._config.submenuTrigger||EventHandler.on(this._menu,"click",".submenu > .menu-item",e=>{this._onSubmenuTriggerClick(e)})}_onSubmenuTriggerEnter(e){const t=e.target.closest(".submenu > .menu-item");if(!t)return;const n=t.closest(".submenu"),s=SelectorEngine.findOne(".menu",n);s&&(this._cancelSubmenuCloseTimeout(s),this._closeSiblingSubmenus(n),this._openSubmenu(t,s,n))}_onSubmenuLeave(e){const t=e.target.closest(".submenu"),n=SelectorEngine.findOne(".menu",t);n&&this._openSubmenus.has(n)&&(this._isMovingTowardSubmenu(e,n)||this._scheduleSubmenuClose(n,t))}_onSubmenuTriggerClick(e){const t=e.target.closest(".submenu > .menu-item");if(!t)return;e.preventDefault(),e.stopPropagation();const n=t.closest(".submenu"),s=SelectorEngine.findOne(".menu",n);s&&(this._openSubmenus.has(s)?this._closeSubmenu(s,n):(this._closeSiblingSubmenus(n),this._openSubmenu(t,s,n)))}_openSubmenu(e,t,n){if(this._openSubmenus.has(t))return;e.setAttribute("aria-expanded","true"),e.setAttribute("aria-haspopup","true"),t.classList.add("show"),n.classList.add("show");const s=this._createSubmenuFloating(e,t,n);this._openSubmenus.set(t,s),EventHandler.on(t,"mouseenter",()=>{this._cancelSubmenuCloseTimeout(t)})}_closeSubmenu(e,t){if(!this._openSubmenus.has(e))return;const n=SelectorEngine.find(".submenu .menu.show",e);for(const e of n){const t=e.closest(".submenu");this._closeSubmenu(e,t)}const s=SelectorEngine.findOne(".submenu > .menu-item",t),i=this._openSubmenus.get(e);i&&i(),this._openSubmenus.delete(e),EventHandler.off(e,"mouseenter"),s&&s.setAttribute("aria-expanded","false"),e.classList.remove("show"),t.classList.remove("show"),e.style.position="",e.style.left="",e.style.top="",e.style.margin=""}_closeAllSubmenus(){for(const[e]of this._openSubmenus){const t=e.closest(".submenu");this._closeSubmenu(e,t)}}_closeSiblingSubmenus(e){const t=e.parentNode,n=SelectorEngine.find(".submenu > .menu.show",t);for(const t of n){const n=t.closest(".submenu");n!==e&&this._closeSubmenu(t,n)}}_createSubmenuFloating(e,t,n){const s=n,i=resolveLogicalPlacement("end-start"),o=[offset({mainAxis:0,crossAxis:-4}),flip({fallbackPlacements:[resolveLogicalPlacement("start-start"),resolveLogicalPlacement("end-end"),resolveLogicalPlacement("start-end")]}),shift({padding:8})],a=()=>this._applyFloatingPosition(s,t,i,o);return a(),autoUpdate(s,t,a)}_scheduleSubmenuClose(e,t){this._cancelSubmenuCloseTimeout(e);const n=setTimeout(()=>{this._closeSubmenu(e,t),this._submenuCloseTimeouts.delete(e)},this._config.submenuDelay);this._submenuCloseTimeouts.set(e,n)}_cancelSubmenuCloseTimeout(e){const t=this._submenuCloseTimeouts.get(e);t&&(clearTimeout(t),this._submenuCloseTimeouts.delete(e))}_clearAllSubmenuTimeouts(){for(const e of this._submenuCloseTimeouts.values())clearTimeout(e);this._submenuCloseTimeouts.clear()}_trackMousePosition(e){this._hoverIntentData={x:e.clientX,y:e.clientY,timestamp:Date.now()}}_isMovingTowardSubmenu(e,t){if(!this._hoverIntentData)return!1;const n=t.getBoundingClientRect(),s={x:e.clientX,y:e.clientY},i={x:this._hoverIntentData.x,y:this._hoverIntentData.y},o=isRTL()?n.right:n.left,a={x:o,y:n.top},r={x:o,y:n.bottom};return this._pointInTriangle(s,i,a,r)}_pointInTriangle(e,t,n,s){const i=triangleSign(e,t,n),o=triangleSign(e,n,s),a=triangleSign(e,s,t);return!((i<0||o<0||a<0)&&(i>0||o>0||a>0))}_selectMenuItem({key:e,target:t}){const n=t.closest(".menu")||this._menu,s=SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS$1}`,n).filter(e=>isVisible(e));s.length&&getNextActiveElement(s,t,e===ARROW_DOWN_KEY$2,!s.includes(t)).focus()}_handleSubmenuKeydown(e){const{key:t,target:n}=e,s=isRTL(),i=s?ARROW_LEFT_KEY$1:ARROW_RIGHT_KEY$1,o=s?ARROW_RIGHT_KEY$1:ARROW_LEFT_KEY$1,a=n.closest(".submenu"),r=a&&n.matches(".submenu > .menu-item");if((t===ENTER_KEY$1||t===SPACE_KEY$1)&&r){e.preventDefault(),e.stopPropagation();const t=SelectorEngine.findOne(".menu",a);return t&&(this._closeSiblingSubmenus(a),this._openSubmenu(n,t,a),requestAnimationFrame(()=>{const e=SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS$1,t);e&&e.focus()})),!0}if(t===i&&r){e.preventDefault(),e.stopPropagation();const t=SelectorEngine.findOne(".menu",a);return t&&(this._closeSiblingSubmenus(a),this._openSubmenu(n,t,a),requestAnimationFrame(()=>{const e=SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS$1,t);e&&e.focus()})),!0}if(t===o){const t=n.closest(".menu"),s=t?.closest(".submenu");if(s){e.preventDefault(),e.stopPropagation();const n=SelectorEngine.findOne(".submenu > .menu-item",s);return this._closeSubmenu(t,s),n&&n.focus(),!0}}if(t===HOME_KEY$2||t===END_KEY$2){e.preventDefault(),e.stopPropagation();const s=n.closest(".menu"),i=SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS$1}`,s).filter(e=>isVisible(e));return i.length&&(t===HOME_KEY$2?i[0]:i[i.length-1]).focus(),!0}return!1}static clearMenus(e){if(2!==e.button&&("keyup"!==e.type||"Tab"===e.key))for(const t of Menu._openInstances){if(!1===t._config.autoClose)continue;const n=e.composedPath(),s=n.includes(t._menu);if(n.includes(t._element)||"inside"===t._config.autoClose&&!s||"outside"===t._config.autoClose&&s)continue;if(t._menu.contains(e.target)&&("keyup"===e.type&&"Tab"===e.key||/input|select|option|textarea|form/i.test(e.target.tagName)))continue;const i={relatedTarget:t._element};"click"===e.type&&(i.clickEvent=e),t._completeHide(i)}}static dataApiKeydownHandler(e){const t=/input|textarea/i.test(e.target.tagName),n="Escape"===e.key,s=[ARROW_UP_KEY$2,ARROW_DOWN_KEY$2].includes(e.key),i=[ARROW_LEFT_KEY$1,ARROW_RIGHT_KEY$1].includes(e.key),o=[HOME_KEY$2,END_KEY$2].includes(e.key),a=[ENTER_KEY$1,SPACE_KEY$1].includes(e.key),r=e.target.matches(".submenu > .menu-item");if(!(s||n||i||o||a&&r))return;if(t&&!n)return;const l=this.matches(SELECTOR_DATA_TOGGLE$8)?this:SelectorEngine.prev(this,SELECTOR_DATA_TOGGLE$8)[0]||SelectorEngine.next(this,SELECTOR_DATA_TOGGLE$8)[0]||SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$8,e.delegateTarget.parentNode);if(!l)return;const c=Menu.getOrCreateInstance(l);if(!(i||o||a&&r)||!c._handleSubmenuKeydown(e)){if(s)return e.preventDefault(),e.stopPropagation(),c.show(),void c._selectMenuItem(e);if(n&&c._isShown()){e.preventDefault(),e.stopPropagation();const t=e.target.closest(".menu"),n=t?.closest(".submenu");if(n&&c._openSubmenus.size>0){const e=SelectorEngine.findOne(".submenu > .menu-item",n);return c._closeSubmenu(t,n),void(e&&e.focus())}c.hide(),l.focus()}}}}EventHandler.on(document,EVENT_KEYDOWN_DATA_API,SELECTOR_DATA_TOGGLE$8,Menu.dataApiKeydownHandler),EventHandler.on(document,EVENT_KEYDOWN_DATA_API,".menu",Menu.dataApiKeydownHandler),EventHandler.on(document,EVENT_CLICK_DATA_API$5,Menu.clearMenus),EventHandler.on(document,EVENT_KEYUP_DATA_API,Menu.clearMenus),EventHandler.on(document,EVENT_CLICK_DATA_API$5,SELECTOR_DATA_TOGGLE$8,function(e){e.preventDefault(),Menu.getOrCreateInstance(this).toggle()});const NAME$f="combobox",DATA_KEY$b="bs.combobox",EVENT_KEY$b=`.${DATA_KEY$b}`,DATA_API_KEY$6=".data-api",ESCAPE_KEY$1="Escape",TAB_KEY$1="Tab",ARROW_UP_KEY$1="ArrowUp",ARROW_DOWN_KEY$1="ArrowDown",HOME_KEY$1="Home",END_KEY$1="End",ENTER_KEY="Enter",SPACE_KEY=" ",EVENT_CHANGE$1=`change${EVENT_KEY$b}`,EVENT_SHOW$6=`show${EVENT_KEY$b}`,EVENT_SHOWN$6=`shown${EVENT_KEY$b}`,EVENT_HIDE$6=`hide${EVENT_KEY$b}`,EVENT_HIDDEN$6=`hidden${EVENT_KEY$b}`,EVENT_CLICK_DATA_API$4=`click${EVENT_KEY$b}.data-api`,CLASS_NAME_SHOW$5="show",CLASS_NAME_SELECTED="selected",CLASS_NAME_PLACEHOLDER="combobox-placeholder",SELECTOR_DATA_TOGGLE$7='[data-bs-toggle="combobox"]',SELECTOR_MENU$1=".menu",SELECTOR_MENU_ITEM=".menu-item[data-bs-value]",SELECTOR_VISIBLE_ITEMS=".menu-item[data-bs-value]:not(.disabled):not(:disabled)",SELECTOR_VALUE=".combobox-value",SELECTOR_SEARCH_INPUT=".combobox-search-input",SELECTOR_NO_RESULTS=".combobox-no-results",Default$e={boundary:"clippingParents",multiple:!1,name:null,offset:[0,2],placeholder:"",placement:"bottom-start",search:!1,searchNormalize:!1},DefaultType$e={boundary:"(string|element)",multiple:"boolean",name:"(string|null)",offset:"(array|string|function)",placeholder:"string",placement:"string",search:"boolean",searchNormalize:"boolean"};class Combobox extends BaseComponent{constructor(e,t){super(e,t),this._toggle=this._element,this._menu=SelectorEngine.next(this._toggle,".menu")[0],this._valueDisplay=SelectorEngine.findOne(SELECTOR_VALUE,this._toggle),this._searchInput=SelectorEngine.findOne(SELECTOR_SEARCH_INPUT,this._menu),this._noResults=SelectorEngine.findOne(SELECTOR_NO_RESULTS,this._menu),this._hiddenInput=null,this._menuInstance=null,this._createHiddenInput(),this._createMenuInstance(),this._syncInitialSelection(),this._addEventListeners()}static get Default(){return Default$e}static get DefaultType(){return DefaultType$e}static get NAME(){return NAME$f}toggle(){return this._isShown()?this.hide():this.show()}show(){isDisabled(this._toggle)||this._isShown()||EventHandler.trigger(this._toggle,EVENT_SHOW$6).defaultPrevented||(this._menuInstance.show(),this._searchInput&&(this._searchInput.value="",this._filterItems(""),requestAnimationFrame(()=>this._searchInput.focus())),EventHandler.trigger(this._toggle,EVENT_SHOWN$6))}hide(){this._isShown()&&(EventHandler.trigger(this._toggle,EVENT_HIDE$6).defaultPrevented||(this._menuInstance.hide(),EventHandler.trigger(this._toggle,EVENT_HIDDEN$6)))}dispose(){this._menuInstance&&(this._menuInstance.dispose(),this._menuInstance=null),this._hiddenInput&&(this._hiddenInput.remove(),this._hiddenInput=null),EventHandler.off(this._menu,EVENT_KEY$b),EventHandler.off(this._toggle,EVENT_KEY$b),super.dispose()}_isShown(){return this._menu.classList.contains("show")}_createHiddenInput(){const{name:e}=this._config;e&&(this._hiddenInput=document.createElement("input"),this._hiddenInput.type="hidden",this._hiddenInput.name=e,this._hiddenInput.value="",this._toggle.parentNode.insertBefore(this._hiddenInput,this._toggle))}_createMenuInstance(){this._menuInstance=new Menu(this._toggle,{menu:this._menu,autoClose:!this._config.multiple||"outside",boundary:this._config.boundary,offset:this._config.offset,placement:this._config.placement})}_syncInitialSelection(){this._getSelectedItems().length>0?(this._updateToggleText(),this._updateHiddenInput()):this._showPlaceholder()}_addEventListeners(){EventHandler.on(this._menu,"click",SELECTOR_MENU_ITEM,e=>{const t=e.target.closest(SELECTOR_MENU_ITEM);t&&!isDisabled(t)&&(e.preventDefault(),e.stopPropagation(),this._selectItem(t))}),EventHandler.on(this._toggle,"keydown",e=>{this._handleToggleKeydown(e)}),EventHandler.on(this._menu,"keydown",e=>{this._handleMenuKeydown(e)}),this._searchInput&&(EventHandler.on(this._searchInput,"input",()=>{this._filterItems(this._searchInput.value)}),EventHandler.on(this._searchInput,"keydown",e=>{if("ArrowDown"===e.key){e.preventDefault();const t=this._getVisibleItems();t.length>0&&t[0].focus()}"Escape"===e.key&&(this.hide(),this._toggle.focus())}))}_selectItem(e){if(this._config.multiple)e.classList.toggle("selected"),e.setAttribute("aria-selected",e.classList.contains("selected"));else{const t=SelectorEngine.find(".selected",this._menu);for(const e of t)e.classList.remove("selected"),e.setAttribute("aria-selected","false");e.classList.add("selected"),e.setAttribute("aria-selected","true")}this._updateToggleText(),this._updateHiddenInput();const t=this._config.multiple?this._getSelectedItems().map(e=>e.dataset.bsValue):e.dataset.bsValue;EventHandler.trigger(this._toggle,EVENT_CHANGE$1,{value:t,item:e}),this._config.multiple||(this.hide(),this._toggle.focus())}_updateToggleText(){const e=this._getSelectedItems();if(0!==e.length)if(this._valueDisplay.classList.remove("combobox-placeholder"),this._config.multiple&&e.length>1)this._valueDisplay.textContent=`${e.length} selected`;else{const t=e[0],n=SelectorEngine.findOne(".menu-item-content > span:first-child",t);this._valueDisplay.textContent=n?n.textContent:t.textContent.trim()}else this._showPlaceholder()}_showPlaceholder(){const{placeholder:e}=this._config;e&&(this._valueDisplay.textContent=e,this._valueDisplay.classList.add("combobox-placeholder"))}_updateHiddenInput(){if(!this._hiddenInput)return;const e=this._getSelectedItems().map(e=>e.dataset.bsValue);this._hiddenInput.value=this._config.multiple?e.join(","):e[0]||""}_getSelectedItems(){return SelectorEngine.find(".selected",this._menu)}_getVisibleItems(){return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS,this._menu).filter(e=>isVisible(e))}_filterItems(e){const t=this._normalizeText(e.toLowerCase().trim()),n=SelectorEngine.find(SELECTOR_MENU_ITEM,this._menu);let s=0;for(const e of n){const n=this._normalizeText(e.textContent.toLowerCase().trim()),i=!t||n.includes(t);e.style.display=i?"":"none",i&&s++}this._noResults&&this._noResults.classList.toggle("d-none",s>0)}_normalizeText(e){return this._config.searchNormalize?e.normalize("NFD").replace(/[\u0300-\u036F]/g,""):e}_handleToggleKeydown(e){const{key:t}=e;if("ArrowDown"===t||"ArrowUp"===t){e.preventDefault(),this._isShown()||this.show();const n=this._getVisibleItems();return void(n.length>0&&("ArrowDown"===t?n[0]:n[n.length-1]).focus())}"Enter"!==t&&" "!==t||this._isShown()||(e.preventDefault(),this.show())}_handleMenuKeydown(e){const{key:t,target:n}=e;if("Escape"===t)return e.preventDefault(),e.stopPropagation(),this.hide(),void this._toggle.focus();if("Tab"===t)return void this.hide();const s=n.matches("input");if("ArrowDown"===t||"ArrowUp"===t){e.preventDefault();const s=this._getVisibleItems();return void(s.length>0&&getNextActiveElement(s,n,"ArrowDown"===t,!s.includes(n)).focus())}if("Home"===t||"End"===t){e.preventDefault();const n=this._getVisibleItems();return void(n.length>0&&("Home"===t?n[0]:n[n.length-1]).focus())}if(("Enter"===t||" "===t)&&!s){e.preventDefault();const t=n.closest(SELECTOR_MENU_ITEM);t&&!isDisabled(t)&&this._selectItem(t)}}static jQueryInterface(e){return this.each(function(){const t=Combobox.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}})}}EventHandler.on(document,EVENT_CLICK_DATA_API$4,SELECTOR_DATA_TOGGLE$7,function(e){e.preventDefault(),Combobox.getOrCreateInstance(this).toggle()}),EventHandler.on(document,"DOMContentLoaded",()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_TOGGLE$7))Combobox.getOrCreateInstance(e)});const NAME$e="datepicker",DATA_KEY$a="bs.datepicker",EVENT_KEY$a=`.${DATA_KEY$a}`,DATA_API_KEY$5=".data-api",EVENT_CHANGE=`change${EVENT_KEY$a}`,EVENT_SHOW$5=`show${EVENT_KEY$a}`,EVENT_SHOWN$5=`shown${EVENT_KEY$a}`,EVENT_HIDE$5=`hide${EVENT_KEY$a}`,EVENT_HIDDEN$5=`hidden${EVENT_KEY$a}`,EVENT_CLICK_DATA_API$3=`click${EVENT_KEY$a}.data-api`,EVENT_FOCUSIN_DATA_API=`focusin${EVENT_KEY$a}.data-api`,SELECTOR_DATA_TOGGLE$6='[data-bs-toggle="datepicker"]',HIDE_DELAY=100,Default$d={datepickerTheme:null,dateMin:null,dateMax:null,dateFormat:null,displayElement:null,displayMonthsCount:1,firstWeekday:1,inline:!1,locale:"default",positionElement:null,selectedDates:[],selectionMode:"single",placement:"left",vcpOptions:{}},DefaultType$d={datepickerTheme:"(null|string)",dateMin:"(null|string|number|object)",dateMax:"(null|string|number|object)",dateFormat:"(null|object|function)",displayElement:"(null|string|element|boolean)",displayMonthsCount:"number",firstWeekday:"number",inline:"boolean",locale:"string",positionElement:"(null|string|element)",selectedDates:"array",selectionMode:"string",placement:"string",vcpOptions:"object"};class Datepicker extends BaseComponent{constructor(e,t){super(e,t),this._calendar=null,this._isShown=!1,this._initCalendar()}static get Default(){return Default$d}static get DefaultType(){return DefaultType$d}static get NAME(){return NAME$e}toggle(){if(!this._config.inline)return this._isShown?this.hide():this.show()}show(){this._config.inline||!this._calendar||isDisabled(this._element)||this._isShown||EventHandler.trigger(this._element,EVENT_SHOW$5).defaultPrevented||(this._calendar.show(),this._isShown=!0,EventHandler.trigger(this._element,EVENT_SHOWN$5))}hide(){this._config.inline||this._calendar&&this._isShown&&(EventHandler.trigger(this._element,EVENT_HIDE$5).defaultPrevented||(this._calendar.hide(),this._isShown=!1,EventHandler.trigger(this._element,EVENT_HIDDEN$5)))}dispose(){this._themeObserver&&(this._themeObserver.disconnect(),this._themeObserver=null),this._calendar&&this._calendar.destroy(),this._calendar=null,super.dispose()}getSelectedDates(){const e=this._calendar?.context?.selectedDates;return e?[...e]:[]}setSelectedDates(e){this._calendar&&this._calendar.set({selectedDates:e})}_initCalendar(){this._isInput="INPUT"===this._element.tagName,this._isInline=this._config.inline,this._isInline&&!this._isInput&&(this._boundInput=this._element.querySelector('input[type="hidden"], input[name]')),this._positionElement=this._resolvePositionElement(),this._displayElement=this._resolveDisplayElement();const e=this._buildCalendarOptions();this._calendar=new Calendar(this._positionElement,e),this._calendar.init(),this._setupThemeObserver(),this._isInput&&this._element.value&&this._parseInputValue(),this._updateDisplayWithSelectedDates()}_updateDisplayWithSelectedDates(){const{selectedDates:e}=this._config;if(!e||0===e.length)return;const t=this._formatDateForInput(e);this._isInput&&(this._element.value=t),this._boundInput&&(this._boundInput.value=e.join(",")),this._displayElement&&(this._displayElement.textContent=t)}_resolvePositionElement(){let{positionElement:e}=this._config;if("string"==typeof e&&(e=document.querySelector(e)),!e&&this._isInput&&!this._isInline){const t=this._element.closest(".form-adorn");t&&(e=t)}return e||this._element}_resolveDisplayElement(){const{displayElement:e}=this._config;return"string"==typeof e?document.querySelector(e):!0===e||null===e&&!this._isInput&&!this._isInline?this._element.querySelector("[data-bs-datepicker-display]")||this._element:e}_getThemeAncestor(){return this._element.closest("[data-bs-theme]")}_getEffectiveTheme(){const{datepickerTheme:e}=this._config;if(e)return e;const t=this._getThemeAncestor();return t?.getAttribute("data-bs-theme")||null}_syncThemeAttribute(e){if(!e)return;const t=this._getEffectiveTheme();t?e.setAttribute("data-bs-theme",t):e.removeAttribute("data-bs-theme")}_setupThemeObserver(){const e=this._getThemeAncestor();e&&!this._config.datepickerTheme&&(this._themeObserver=new MutationObserver(()=>{this._syncThemeAttribute(this._calendar?.context?.mainElement)}),this._themeObserver.observe(e,{attributes:!0,attributeFilter:["data-bs-theme"]}))}_buildCalendarOptions(){const e=this._getEffectiveTheme(),t=e&&"auto"!==e?e:"system",n={...this._config.vcpOptions,inputMode:!this._isInline,positionToInput:this._config.placement,firstWeekday:this._config.firstWeekday,locale:this._config.locale,selectionDatesMode:this._config.selectionMode,selectedDates:this._config.selectedDates,displayMonthsCount:this._config.displayMonthsCount,type:this._config.displayMonthsCount>1?"multiple":"default",selectedTheme:t,themeAttrDetect:"[data-bs-theme]",onClickDate:(e,t)=>this._handleDateClick(e,t),onInit:e=>{this._syncThemeAttribute(e.context.mainElement)},onShow:()=>{this._isShown=!0,this._syncThemeAttribute(this._calendar.context.mainElement)},onHide:()=>{this._isShown=!1}};if(this._config.selectedDates.length>0){const e=this._parseDate(this._config.selectedDates[0]);n.selectedMonth=e.getMonth(),n.selectedYear=e.getFullYear()}return this._config.dateMin&&(n.dateMin=this._config.dateMin),this._config.dateMax&&(n.dateMax=this._config.dateMax),n}_handleDateClick(e,t){const n=[...e.context.selectedDates];if(n.length>0){const e=this._formatDateForInput(n);this._isInput&&(this._element.value=e),this._boundInput&&(this._boundInput.value=n.join(",")),this._displayElement&&(this._displayElement.textContent=e)}EventHandler.trigger(this._element,EVENT_CHANGE,{dates:n,event:t}),this._maybeHideAfterSelection(n)}_maybeHideAfterSelection(e){this._isInline||("single"===this._config.selectionMode&&e.length>0||"multiple-ranged"===this._config.selectionMode&&e.length>=2)&&setTimeout(()=>this.hide(),100)}_parseDate(e){const[t,n,s]=e.split("-");return new Date(t,n-1,s)}_formatDate(e){const t=this._parseDate(e),n="default"===this._config.locale?void 0:this._config.locale,{dateFormat:s}=this._config;return"function"==typeof s?s(t,n):s&&"object"==typeof s?new Intl.DateTimeFormat(n,s).format(t):t.toLocaleDateString(n)}_formatDateForInput(e){if(0===e.length)return"";if(1===e.length)return this._formatDate(e[0]);const t="multiple-ranged"===this._config.selectionMode?" – ":", ";return e.map(e=>this._formatDate(e)).join(t)}_parseInputValue(){const e=this._element.value.trim();if(!e)return;const t=new Date(e);if(!Number.isNaN(t.getTime())){const e=`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`;this._calendar.set({selectedDates:[e]})}}}EventHandler.on(document,EVENT_CLICK_DATA_API$3,SELECTOR_DATA_TOGGLE$6,function(e){"INPUT"!==this.tagName&&"true"!==this.dataset.bsInline&&(e.preventDefault(),Datepicker.getOrCreateInstance(this).toggle())}),EventHandler.on(document,EVENT_FOCUSIN_DATA_API,SELECTOR_DATA_TOGGLE$6,function(){"INPUT"===this.tagName&&Datepicker.getOrCreateInstance(this).show()}),EventHandler.on(document,`DOMContentLoaded${EVENT_KEY$a}.data-api`,()=>{for(const e of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE$6}[data-bs-inline="true"]`))Datepicker.getOrCreateInstance(e)});const NAME$d="dialog",DATA_KEY$9="bs.dialog",EVENT_KEY$9=`.${DATA_KEY$9}`,DATA_API_KEY$4=".data-api",EVENT_SHOW$4=`show${EVENT_KEY$9}`,EVENT_SHOWN$4=`shown${EVENT_KEY$9}`,EVENT_HIDE$4=`hide${EVENT_KEY$9}`,EVENT_HIDDEN$4=`hidden${EVENT_KEY$9}`,EVENT_HIDE_PREVENTED$1=`hidePrevented${EVENT_KEY$9}`,EVENT_CANCEL=`cancel${EVENT_KEY$9}`,EVENT_CLICK_DATA_API$2=`click${EVENT_KEY$9}.data-api`,CLASS_NAME_STATIC="dialog-static",CLASS_NAME_OPEN="dialog-open",CLASS_NAME_NONMODAL="dialog-nonmodal",SELECTOR_DATA_TOGGLE$5='[data-bs-toggle="dialog"]',SELECTOR_OPEN_MODAL_DIALOG="dialog.dialog[open]:not(.dialog-nonmodal)",Default$c={backdrop:!0,keyboard:!0,modal:!0},DefaultType$c={backdrop:"(boolean|string)",keyboard:"boolean",modal:"boolean"};class Dialog extends BaseComponent{constructor(e,t){super(e,t),this._isTransitioning=!1,this._addEventListeners()}static get Default(){return Default$c}static get DefaultType(){return DefaultType$c}static get NAME(){return NAME$d}toggle(e){return this._element.open?this.hide():this.show(e)}show(e){this._element.open||this._isTransitioning||EventHandler.trigger(this._element,EVENT_SHOW$4,{relatedTarget:e}).defaultPrevented||(this._isTransitioning=!0,this._config.modal?(this._element.showModal(),document.body.classList.add("dialog-open")):(this._element.classList.add("dialog-nonmodal"),this._element.show()),this._queueCallback(()=>{this._isTransitioning=!1,EventHandler.trigger(this._element,EVENT_SHOWN$4,{relatedTarget:e})},this._element,this._isAnimated()))}hide(){this._element.open&&!this._isTransitioning&&(EventHandler.trigger(this._element,EVENT_HIDE$4).defaultPrevented||(this._isTransitioning=!0,this._queueCallback(()=>this._hideDialog(),this._element,this._isAnimated())))}dispose(){EventHandler.off(this._element,EVENT_KEY$9),super.dispose()}handleUpdate(){}_hideDialog(){this._element.close(),this._element.classList.remove("dialog-nonmodal"),this._isTransitioning=!1,document.querySelector(SELECTOR_OPEN_MODAL_DIALOG)||document.body.classList.remove("dialog-open"),EventHandler.trigger(this._element,EVENT_HIDDEN$4)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED$1).defaultPrevented||(this._element.classList.add("dialog-static"),this._queueCallback(()=>{this._element.classList.remove("dialog-static")},this._element))}_addEventListeners(){EventHandler.on(this._element,"cancel",e=>{e.preventDefault(),this._config.keyboard?(EventHandler.trigger(this._element,EVENT_CANCEL),this.hide()):this._triggerBackdropTransition()}),EventHandler.on(this._element,"keydown",e=>{"Escape"!==e.key||this._config.modal||(e.preventDefault(),this._config.keyboard&&(EventHandler.trigger(this._element,EVENT_CANCEL),this.hide()))}),EventHandler.on(this._element,"click",e=>{e.target===this._element&&this._config.modal&&("static"!==this._config.backdrop?this.hide():this._triggerBackdropTransition())})}}EventHandler.on(document,EVENT_CLICK_DATA_API$2,SELECTOR_DATA_TOGGLE$5,function(e){const t=SelectorEngine.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),EventHandler.one(t,EVENT_SHOW$4,e=>{e.defaultPrevented||EventHandler.one(t,EVENT_HIDDEN$4,()=>{isVisible(this)&&this.focus()})});const n=Manipulator.getDataAttributes(this),s=this.closest("dialog[open]");if(s&&s!==t){Dialog.getOrCreateInstance(t,n).show(this);const e=Dialog.getInstance(s);return void(e&&e.hide())}Dialog.getOrCreateInstance(t,n).toggle(this)}),enableDismissTrigger(Dialog);const NAME$c="navoverflow",DATA_KEY$8="bs.navoverflow",EVENT_KEY$8=`.${DATA_KEY$8}`,EVENT_UPDATE=`update${EVENT_KEY$8}`,EVENT_OVERFLOW=`overflow${EVENT_KEY$8}`,CLASS_NAME_OVERFLOW="nav-overflow",CLASS_NAME_OVERFLOW_MENU="nav-overflow-menu",CLASS_NAME_HIDDEN="d-none",SELECTOR_NAV_ITEM=".nav-item",SELECTOR_NAV_LINK=".nav-link",SELECTOR_OVERFLOW_TOGGLE=".nav-overflow-toggle",SELECTOR_OVERFLOW_MENU=".nav-overflow-menu",CLASS_NAME_KEEP="nav-overflow-keep",Default$b={moreText:"More",moreIcon:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"><path d="M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/></svg>',threshold:0},DefaultType$b={moreText:"string",moreIcon:"string",threshold:"number"};class NavOverflow extends BaseComponent{constructor(e,t){super(e,t),this._items=[],this._overflowItems=[],this._overflowMenu=null,this._overflowToggle=null,this._resizeObserver=null,this._isInitialized=!1,this._init()}static get Default(){return Default$b}static get DefaultType(){return DefaultType$b}static get NAME(){return NAME$c}update(){this._calculateOverflow(),EventHandler.trigger(this._element,EVENT_UPDATE)}dispose(){this._resizeObserver&&this._resizeObserver.disconnect(),this._restoreItems(),this._overflowToggle&&this._overflowToggle.parentElement&&this._overflowToggle.parentElement.remove(),super.dispose()}_init(){this._element.classList.add("nav-overflow"),this._items=[...SelectorEngine.find(".nav-item",this._element)];for(const[e,t]of this._items.entries())t.dataset.bsNavOrder=e;this._createOverflowMenu(),this._setupResizeObserver(),this._calculateOverflow(),this._isInitialized=!0}_createOverflowMenu(){if(this._overflowToggle=SelectorEngine.findOne(".nav-overflow-toggle",this._element),this._overflowToggle)return void(this._overflowMenu=SelectorEngine.findOne(".nav-overflow-menu",this._element));const e=document.createElement("li");e.className="nav-item nav-overflow-item",e.innerHTML=`\n      <button class="nav-link nav-overflow-toggle" type="button" data-bs-toggle="menu" data-bs-placement="bottom-end" aria-expanded="false">\n        <span class="nav-overflow-icon">${this._config.moreIcon}</span>\n        <span class="nav-overflow-text">${this._config.moreText}</span>\n      </button>\n      <div class="nav-overflow-menu menu"></div>\n    `,this._element.append(e),this._overflowToggle=e.querySelector(".nav-overflow-toggle"),this._overflowMenu=e.querySelector(".nav-overflow-menu")}_setupResizeObserver(){"undefined"!=typeof ResizeObserver?(this._resizeObserver=new ResizeObserver(()=>{this._calculateOverflow()}),this._resizeObserver.observe(this._element)):EventHandler.on(window,"resize",()=>this._calculateOverflow())}_calculateOverflow(){this._restoreItems();const e=this._element.offsetWidth,t=this._overflowToggle?.closest(".nav-item");let n=0;const s=[],i=e-(t?.offsetWidth||0)-10;for(const e of this._items)n+=e.offsetWidth,e.classList.contains(CLASS_NAME_KEEP)||n>i&&s.push(e);if(this._items.length-s.length<this._config.threshold&&this._items.length>this._config.threshold){const e=this._items.slice(this._config.threshold).filter(e=>!e.classList.contains(CLASS_NAME_KEEP));s.length=0,s.push(...e)}this._moveToOverflow(s),t&&(s.length>0?t.classList.remove("d-none"):t.classList.add("d-none")),s.length>0&&EventHandler.trigger(this._element,EVENT_OVERFLOW,{overflowCount:s.length,visibleCount:this._items.length-s.length})}_moveToOverflow(e){if(this._overflowMenu){this._overflowMenu.innerHTML="",this._overflowItems=[];for(const t of e){const e=SelectorEngine.findOne(".nav-link",t);if(!e)continue;const n=e.cloneNode(!0);n.className="menu-item",e.classList.contains("active")&&n.classList.add("active"),(e.classList.contains("disabled")||e.hasAttribute("disabled"))&&n.classList.add("disabled"),this._overflowMenu.append(n),t.classList.add("d-none"),t.dataset.bsNavOverflow="true",this._overflowItems.push(t)}}}_restoreItems(){for(const e of this._items)e.classList.remove("d-none"),delete e.dataset.bsNavOverflow;this._overflowMenu&&(this._overflowMenu.innerHTML=""),this._overflowItems=[]}}EventHandler.on(document,"DOMContentLoaded",()=>{for(const e of SelectorEngine.find('[data-bs-toggle="nav-overflow"]'))NavOverflow.getOrCreateInstance(e)});const NAME$b="backdrop",CLASS_NAME_FADE$3="fade",CLASS_NAME_SHOW$4="show",EVENT_MOUSEDOWN=`mousedown.bs.${NAME$b}`,Default$a={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},DefaultType$a={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Backdrop extends Config{constructor(e){super(),this._config=this._getConfig(e),this._isAppended=!1,this._element=null}static get Default(){return Default$a}static get DefaultType(){return DefaultType$a}static get NAME(){return NAME$b}show(e){if(!this._config.isVisible)return void execute(e);this._append();const t=this._getElement();this._config.isAnimated&&reflow(t),t.classList.add("show"),this._emulateAnimation(()=>{execute(e)})}hide(e){this._config.isVisible?(this._getElement().classList.remove("show"),this._emulateAnimation(()=>{this.dispose(),execute(e)})):execute(e)}dispose(){this._isAppended&&(EventHandler.off(this._element,EVENT_MOUSEDOWN),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const e=document.createElement("div");e.className=this._config.className,this._config.isAnimated&&e.classList.add("fade"),this._element=e}return this._element}_configAfterMerge(e){return e.rootElement=getElement(e.rootElement),e}_append(){if(this._isAppended)return;const e=this._getElement();this._config.rootElement.append(e),EventHandler.on(e,EVENT_MOUSEDOWN,()=>{execute(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(e){executeAfterTransition(e,this._getElement(),this._config.isAnimated)}}const NAME$a="focustrap",DATA_KEY$7="bs.focustrap",EVENT_KEY$7=`.${DATA_KEY$7}`,EVENT_FOCUSIN$3=`focusin${EVENT_KEY$7}`,EVENT_KEYDOWN_TAB=`keydown.tab${EVENT_KEY$7}`,TAB_KEY="Tab",TAB_NAV_FORWARD="forward",TAB_NAV_BACKWARD="backward",Default$9={autofocus:!0,trapElement:null},DefaultType$9={autofocus:"boolean",trapElement:"element"};class FocusTrap extends Config{constructor(e){super(),this._config=this._getConfig(e),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return Default$9}static get DefaultType(){return DefaultType$9}static get NAME(){return NAME$a}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),EventHandler.off(document,EVENT_KEY$7),EventHandler.on(document,EVENT_FOCUSIN$3,e=>this._handleFocusin(e)),EventHandler.on(document,EVENT_KEYDOWN_TAB,e=>this._handleKeydown(e)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,EventHandler.off(document,EVENT_KEY$7))}_handleFocusin(e){const{trapElement:t}=this._config;if(e.target===document||e.target===t||t.contains(e.target))return;const n=SelectorEngine.focusableChildren(t);0===n.length?t.focus():"backward"===this._lastTabNavDirection?n[n.length-1].focus():n[0].focus()}_handleKeydown(e){"Tab"===e.key&&(this._lastTabNavDirection=e.shiftKey?"backward":"forward")}}const SELECTOR_FIXED_CONTENT=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",SELECTOR_STICKY_CONTENT=".sticky-top",PROPERTY_PADDING="padding-right",PROPERTY_MARGIN="margin-right";class ScrollBarHelper{constructor(){this._element=document.body}getWidth(){const e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}hide(){const e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,"padding-right",t=>t+e),this._setElementAttributes(SELECTOR_FIXED_CONTENT,"padding-right",t=>t+e),this._setElementAttributes(".sticky-top","margin-right",t=>t-e)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"padding-right"),this._resetElementAttributes(SELECTOR_FIXED_CONTENT,"padding-right"),this._resetElementAttributes(".sticky-top","margin-right")}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(e,t,n){const s=this.getWidth();this._applyManipulationCallback(e,e=>{if(e!==this._element&&window.innerWidth>e.clientWidth+s)return;this._saveInitialAttribute(e,t);const i=window.getComputedStyle(e).getPropertyValue(t);e.style.setProperty(t,`${n(Number.parseFloat(i))}px`)})}_saveInitialAttribute(e,t){const n=e.style.getPropertyValue(t);n&&Manipulator.setDataAttribute(e,t,n)}_resetElementAttributes(e,t){this._applyManipulationCallback(e,e=>{const n=Manipulator.getDataAttribute(e,t);null!==n?(Manipulator.removeDataAttribute(e,t),e.style.setProperty(t,n)):e.style.removeProperty(t)})}_applyManipulationCallback(e,t){if(isElement(e))t(e);else for(const n of SelectorEngine.find(e,this._element))t(n)}}const NAME$9="offcanvas",DATA_KEY$6="bs.offcanvas",EVENT_KEY$6=`.${DATA_KEY$6}`,DATA_API_KEY$3=".data-api",EVENT_LOAD_DATA_API$2=`load${EVENT_KEY$6}.data-api`,ESCAPE_KEY="Escape",CLASS_NAME_SHOW$3="show",CLASS_NAME_SHOWING$1="showing",CLASS_NAME_HIDING="hiding",CLASS_NAME_BACKDROP="offcanvas-backdrop",OPEN_SELECTOR=".offcanvas.show",EVENT_SHOW$3=`show${EVENT_KEY$6}`,EVENT_SHOWN$3=`shown${EVENT_KEY$6}`,EVENT_HIDE$3=`hide${EVENT_KEY$6}`,EVENT_HIDE_PREVENTED=`hidePrevented${EVENT_KEY$6}`,EVENT_HIDDEN$3=`hidden${EVENT_KEY$6}`,EVENT_RESIZE=`resize${EVENT_KEY$6}`,EVENT_CLICK_DATA_API$1=`click${EVENT_KEY$6}.data-api`,EVENT_KEYDOWN_DISMISS=`keydown.dismiss${EVENT_KEY$6}`,SELECTOR_DATA_TOGGLE$4='[data-bs-toggle="offcanvas"]',Default$8={backdrop:!0,keyboard:!0,scroll:!1},DefaultType$8={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Offcanvas extends BaseComponent{constructor(e,t){super(e,t),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Default$8}static get DefaultType(){return DefaultType$8}static get NAME(){return NAME$9}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){this._isShown||EventHandler.trigger(this._element,EVENT_SHOW$3,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new ScrollBarHelper).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add("showing"),this._queueCallback(()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add("show"),this._element.classList.remove("showing"),EventHandler.trigger(this._element,EVENT_SHOWN$3,{relatedTarget:e})},this._element,!0))}hide(){this._isShown&&(EventHandler.trigger(this._element,EVENT_HIDE$3).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add("hiding"),this._backdrop.hide(),this._queueCallback(()=>{this._element.classList.remove("show","hiding"),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new ScrollBarHelper).reset(),EventHandler.trigger(this._element,EVENT_HIDDEN$3)},this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const e=Boolean(this._config.backdrop);return new Backdrop({className:CLASS_NAME_BACKDROP,isVisible:e,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:e?()=>{"static"!==this._config.backdrop?this.hide():EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED)}:null})}_initializeFocusTrap(){return new FocusTrap({trapElement:this._element})}_addEventListeners(){EventHandler.on(this._element,EVENT_KEYDOWN_DISMISS,e=>{"Escape"===e.key&&(this._config.keyboard?this.hide():EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED))})}}EventHandler.on(document,EVENT_CLICK_DATA_API$1,SELECTOR_DATA_TOGGLE$4,function(e){const t=SelectorEngine.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),isDisabled(this))return;EventHandler.one(t,EVENT_HIDDEN$3,()=>{isVisible(this)&&this.focus()});const n=SelectorEngine.findOne(OPEN_SELECTOR);n&&n!==t&&Offcanvas.getInstance(n).hide(),Offcanvas.getOrCreateInstance(t).toggle(this)}),EventHandler.on(window,EVENT_LOAD_DATA_API$2,()=>{for(const e of SelectorEngine.find(OPEN_SELECTOR))Offcanvas.getOrCreateInstance(e).show()}),EventHandler.on(window,EVENT_RESIZE,()=>{for(const e of SelectorEngine.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(e).position&&Offcanvas.getOrCreateInstance(e).hide()}),enableDismissTrigger(Offcanvas);const NAME$8="strength",DATA_KEY$5="bs.strength",EVENT_KEY$5=`.${DATA_KEY$5}`,DATA_API_KEY$2=".data-api",EVENT_STRENGTH_CHANGE=`strengthChange${EVENT_KEY$5}`,SELECTOR_DATA_STRENGTH="[data-bs-strength]",STRENGTH_LEVELS=["weak","fair","good","strong"],Default$7={input:null,minLength:8,messages:{weak:"Weak",fair:"Fair",good:"Good",strong:"Strong"},weights:{minLength:1,extraLength:1,lowercase:1,uppercase:1,numbers:1,special:1,multipleSpecial:1,longPassword:1},thresholds:[2,4,6],scorer:null},DefaultType$7={input:"(string|element|null)",minLength:"number",messages:"object",weights:"object",thresholds:"array",scorer:"(function|null)"};class Strength extends BaseComponent{constructor(e,t){super(e,t),this._input=this._getInput(),this._segments=SelectorEngine.find(".strength-segment",this._element),this._textElement=SelectorEngine.findOne(".strength-text",this._element.parentElement),this._currentStrength=null,this._input&&(this._addEventListeners(),this._evaluate())}static get Default(){return Default$7}static get DefaultType(){return DefaultType$7}static get NAME(){return NAME$8}getStrength(){return this._currentStrength}evaluate(){this._evaluate()}_getInput(){if(this._config.input)return"string"==typeof this._config.input?SelectorEngine.findOne(this._config.input):this._config.input;const e=this._element.parentElement;return SelectorEngine.findOne('input[type="password"]',e)}_addEventListeners(){EventHandler.on(this._input,"input",()=>this._evaluate()),EventHandler.on(this._input,"change",()=>this._evaluate())}_evaluate(){const e=this._input.value,t=this._calculateScore(e),n=this._scoreToStrength(t);n!==this._currentStrength&&(this._currentStrength=n,this._updateUI(n,t),EventHandler.trigger(this._element,EVENT_STRENGTH_CHANGE,{strength:n,score:t,password:e.length>0?"***":""}))}_calculateScore(e){if(!e)return 0;if("function"==typeof this._config.scorer)return this._config.scorer(e);const{weights:t}=this._config;let n=0;return e.length>=this._config.minLength&&(n+=t.minLength),e.length>=this._config.minLength+4&&(n+=t.extraLength),/[a-z]/.test(e)&&(n+=t.lowercase),/[A-Z]/.test(e)&&(n+=t.uppercase),/\d/.test(e)&&(n+=t.numbers),/[!@#$%^&*(),.?":{}|<>]/.test(e)&&(n+=t.special),/[!@#$%^&*(),.?":{}|<>].*[!@#$%^&*(),.?":{}|<>]/.test(e)&&(n+=t.multipleSpecial),e.length>=16&&(n+=t.longPassword),n}_scoreToStrength(e){if(0===e)return null;const[t,n,s]=this._config.thresholds;return e<=t?"weak":e<=n?"fair":e<=s?"good":"strong"}_updateUI(e){e?this._element.dataset.bsStrength=e:delete this._element.dataset.bsStrength;const t=e?STRENGTH_LEVELS.indexOf(e):-1;for(const[e,n]of this._segments.entries())e<=t?n.classList.add("active"):n.classList.remove("active");if(this._textElement)if(e&&this._config.messages[e]){this._textElement.textContent=this._config.messages[e],this._textElement.dataset.bsStrength=e;const t={weak:"danger",fair:"warning",good:"info",strong:"success"};this._textElement.style.setProperty("--strength-color",`var(--${t[e]}-text)`)}else this._textElement.textContent="",delete this._textElement.dataset.bsStrength}}EventHandler.on(document,`DOMContentLoaded${EVENT_KEY$5}.data-api`,()=>{for(const e of SelectorEngine.find("[data-bs-strength]"))Strength.getOrCreateInstance(e)});const NAME$7="otpInput",DATA_KEY$4="bs.otp-input",EVENT_KEY$4=`.${DATA_KEY$4}`,DATA_API_KEY$1=".data-api",EVENT_COMPLETE=`complete${EVENT_KEY$4}`,EVENT_INPUT=`input${EVENT_KEY$4}`,SELECTOR_DATA_OTP="[data-bs-otp]",SELECTOR_INPUT="input",Default$6={length:6,mask:!1},DefaultType$6={length:"number",mask:"boolean"};class OtpInput extends BaseComponent{constructor(e,t){super(e,t),this._inputs=SelectorEngine.find("input",this._element),this._setupInputs(),this._addEventListeners()}static get Default(){return Default$6}static get DefaultType(){return DefaultType$6}static get NAME(){return NAME$7}getValue(){return this._inputs.map(e=>e.value).join("")}setValue(e){const t=String(e).split("");for(const[e,n]of this._inputs.entries())n.value=t[e]||"";this._checkComplete()}clear(){for(const e of this._inputs)e.value="";this._inputs[0]?.focus()}focus(){const e=this._inputs.find(e=>!e.value);e?e.focus():this._inputs.at(-1)?.focus()}_setupInputs(){for(const e of this._inputs)e.setAttribute("maxlength","1"),e.setAttribute("inputmode","numeric"),e.setAttribute("pattern","\\d*"),e===this._inputs[0]?e.setAttribute("autocomplete","one-time-code"):e.setAttribute("autocomplete","off"),this._config.mask&&e.setAttribute("type","password")}_addEventListeners(){for(const[e,t]of this._inputs.entries())EventHandler.on(t,"input",t=>this._handleInput(t,e)),EventHandler.on(t,"keydown",t=>this._handleKeydown(t,e)),EventHandler.on(t,"paste",e=>this._handlePaste(e)),EventHandler.on(t,"focus",e=>this._handleFocus(e))}_handleInput(e,t){const n=e.target;/^\d*$/.test(n.value)||(n.value=n.value.replace(/\D/g,""));const{value:s}=n;if(s.length>1){const e=s.split("");n.value=e[0]||"";for(let n=1;n<e.length&&t+n<this._inputs.length;n++)this._inputs[t+n].value=e[n];const i=Math.min(t+e.length,this._inputs.length-1);this._inputs[i].focus()}else s&&t<this._inputs.length-1&&this._inputs[t+1].focus();EventHandler.trigger(this._element,EVENT_INPUT,{value:this.getValue(),index:t}),this._checkComplete()}_handleKeydown(e,t){const{key:n}=e;switch(n){case"Backspace":!this._inputs[t].value&&t>0&&(e.preventDefault(),this._inputs[t-1].value="",this._inputs[t-1].focus());break;case"Delete":e.preventDefault();for(let e=t;e<this._inputs.length-1;e++)this._inputs[e].value=this._inputs[e+1].value;this._inputs.at(-1).value="";break;case"ArrowLeft":t>0&&(e.preventDefault(),this._inputs[t-1].focus());break;case"ArrowRight":t<this._inputs.length-1&&(e.preventDefault(),this._inputs[t+1].focus())}}_handlePaste(e){e.preventDefault();const t=(e.clipboardData||window.clipboardData).getData("text").replace(/\D/g,"").slice(0,this._inputs.length);if(t){this.setValue(t);const e=Math.min(t.length,this._inputs.length)-1;this._inputs[e].focus()}}_handleFocus(e){e.target.select()}_checkComplete(){const e=this.getValue();e.length===this._inputs.length&&this._inputs.every(e=>""!==e.value)&&EventHandler.trigger(this._element,EVENT_COMPLETE,{value:e})}}EventHandler.on(document,`DOMContentLoaded${EVENT_KEY$4}.data-api`,()=>{for(const e of SelectorEngine.find("[data-bs-otp]"))OtpInput.getOrCreateInstance(e)});const ARIA_ATTRIBUTE_PATTERN=/^aria-[\w-]*$/i,DefaultAllowlist={"*":["class","dir","id","lang","role",ARIA_ATTRIBUTE_PATTERN],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},uriAttributes=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),SAFE_URL_PATTERN=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,allowedAttribute=(e,t)=>{const n=e.nodeName.toLowerCase();return t.includes(n)?!uriAttributes.has(n)||Boolean(SAFE_URL_PATTERN.test(e.nodeValue)):t.filter(e=>e instanceof RegExp).some(e=>e.test(n))};function sanitizeHtml(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const s=(new window.DOMParser).parseFromString(e,"text/html"),i=[].concat(...s.body.querySelectorAll("*"));for(const e of i){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const s=[].concat(...e.attributes),i=[].concat(t["*"]||[],t[n]||[]);for(const t of s)allowedAttribute(t,i)||e.removeAttribute(t.nodeName)}return s.body.innerHTML}const NAME$6="TemplateFactory",Default$5={allowList:DefaultAllowlist,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},DefaultType$5={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},DefaultContentType={entry:"(string|element|function|null)",selector:"(string|element)"};class TemplateFactory extends Config{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Default$5}static get DefaultType(){return DefaultType$5}static get NAME(){return NAME$6}getContent(){return Object.values(this._config.content).map(e=>this._resolvePossibleFunction(e)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},DefaultContentType)}_setContent(e,t,n){const s=SelectorEngine.findOne(n,e);s&&((t=this._resolvePossibleFunction(t))?isElement(t)?this._putElementInTemplate(getElement(t),s):this._config.html?s.innerHTML=this._maybeSanitize(t):s.textContent=t:s.remove())}_maybeSanitize(e){return this._config.sanitize?sanitizeHtml(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return execute(e,[void 0,this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const NAME$5="tooltip",DISALLOWED_ATTRIBUTES=new Set(["sanitize","allowList","sanitizeFn"]),CLASS_NAME_FADE$2="fade",CLASS_NAME_MODAL="modal",CLASS_NAME_SHOW$2="show",SELECTOR_TOOLTIP_INNER=".tooltip-inner",SELECTOR_MODAL=".modal",SELECTOR_DATA_TOGGLE$3='[data-bs-toggle="tooltip"]',EVENT_MODAL_HIDE="hide.bs.modal",TRIGGER_HOVER="hover",TRIGGER_FOCUS="focus",TRIGGER_CLICK="click",TRIGGER_MANUAL="manual",EVENT_HIDE$2="hide",EVENT_HIDDEN$2="hidden",EVENT_SHOW$2="show",EVENT_SHOWN$2="shown",EVENT_INSERTED="inserted",EVENT_CLICK$3="click",EVENT_FOCUSIN$2="focusin",EVENT_FOCUSOUT$1="focusout",EVENT_MOUSEENTER$1="mouseenter",EVENT_MOUSELEAVE="mouseleave",AttachmentMap={AUTO:"auto",TOP:"top",RIGHT:isRTL()?"left":"right",BOTTOM:"bottom",LEFT:isRTL()?"right":"left"},Default$4={allowList:DefaultAllowlist,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",floatingConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},DefaultType$4={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",floatingConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Tooltip extends BaseComponent{constructor(e,t){if(void 0===computePosition)throw new TypeError("Bootstrap's tooltips require Floating UI (https://floating-ui.com)");super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._floatingCleanup=null,this._templateFactory=null,this._newContent=null,this._mediaQueryListeners=[],this._responsivePlacements=null,this.tip=null,this._parseResponsivePlacements(),this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Default$4}static get DefaultType(){return DefaultType$4}static get NAME(){return NAME$5}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),EventHandler.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposeFloating(),this._disposeMediaQueryListeners(),super.dispose()}async show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=EventHandler.trigger(this._element,this.constructor.eventName("show")),t=(findShadowRoot(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this._disposeFloating();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:s}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(s.append(n),EventHandler.trigger(this._element,this.constructor.eventName("inserted"))),await this._createFloating(n),n.classList.add("show"),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))EventHandler.on(e,"mouseover",noop);this._queueCallback(()=>{EventHandler.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1},this.tip,this._isAnimated())}hide(){if(this._isShown()&&!EventHandler.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove("show"),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))EventHandler.off(e,"mouseover",noop);this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this._isHovered=null,this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposeFloating(),this._element.removeAttribute("aria-describedby"),EventHandler.trigger(this._element,this.constructor.eventName("hidden")))},this.tip,this._isAnimated())}}update(){this._floatingCleanup&&this.tip&&this._updateFloatingPosition()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();t.classList.remove("fade","show"),t.classList.add(`bs-${this.constructor.NAME}-auto`);const n=getUID(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add("fade"),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposeFloating(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new TemplateFactory({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[SELECTOR_TOOLTIP_INNER]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains("fade")}_isShown(){return this.tip&&this.tip.classList.contains("show")}_getPlacement(e){if(this._responsivePlacements){const e=getResponsivePlacement(this._responsivePlacements,"top");return AttachmentMap[e.toUpperCase()]||e}const t=execute(this._config.placement,[this,e,this._element]);return AttachmentMap[t.toUpperCase()]||t}_parseResponsivePlacements(){"string"==typeof this._config.placement?(this._responsivePlacements=parseResponsivePlacement(this._config.placement,"top"),this._responsivePlacements&&this._setupMediaQueryListeners()):this._responsivePlacements=null}_setupMediaQueryListeners(){this._disposeMediaQueryListeners(),this._mediaQueryListeners=createBreakpointListeners(()=>{this._isShown()&&this._updateFloatingPosition()})}_disposeMediaQueryListeners(){disposeBreakpointListeners(this._mediaQueryListeners),this._mediaQueryListeners=[]}async _createFloating(e){const t=this._getPlacement(e),n=e.querySelector(`.${this.constructor.NAME}-arrow`);await this._updateFloatingPosition(e,t,n),this._floatingCleanup=autoUpdate(this._element,e,()=>this._updateFloatingPosition(e,null,n))}async _updateFloatingPosition(e=this.tip,t=null,n=null){if(!e)return;t||(t=this._getPlacement(e)),n||(n=e.querySelector(`.${this.constructor.NAME}-arrow`));const s=this._getFloatingMiddleware(n),i=this._getFloatingConfig(t,s),{x:o,y:a,placement:r,middlewareData:l}=await computePosition(this._element,e,i);if(Object.assign(e.style,{position:"absolute",left:`${o}px`,top:`${a}px`}),n&&(n.style.position="absolute"),Manipulator.setDataAttribute(e,"placement",r),n&&l.arrow){const{x:e,y:t}=l.arrow,s=r.startsWith("top")||r.startsWith("bottom");Object.assign(n.style,{left:s&&null!==e?`${e}px`:"",top:s||null===t?"":`${t}px`,right:"",bottom:""})}}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?({placement:t,rects:n})=>e({placement:t,reference:n.reference,floating:n.floating},this._element):e}_resolvePossibleFunction(e){return execute(e,[this._element,this._element])}_getFloatingMiddleware(e){const t=this._getOffset(),n=[offset("function"==typeof t?t:{mainAxis:t[1]||0,crossAxis:t[0]||0}),flip({fallbackPlacements:this._config.fallbackPlacements}),shift({boundary:"clippingParents"===this._config.boundary?"clippingAncestors":this._config.boundary})];return e&&n.push(arrow({element:e})),n}_getFloatingConfig(e,t){const n={placement:e,middleware:t};return{...n,...execute(this._config.floatingConfig,[void 0,n])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)EventHandler.on(this._element,this.constructor.eventName("click"),this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger.click=!(t._isShown()&&t._activeTrigger.click),t.toggle()});else if("manual"!==t){const e="hover"===t?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n="hover"===t?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");EventHandler.on(this._element,e,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?"focus":"hover"]=!0,t._enter()}),EventHandler.on(this._element,n,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?"focus":"hover"]=t._element.contains(e.relatedTarget),t._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},EventHandler.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=Manipulator.getDataAttributes(this._element);for(const e of Object.keys(t))DISALLOWED_ATTRIBUTES.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:getElement(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposeFloating(){this._floatingCleanup&&(this._floatingCleanup(),this._floatingCleanup=null),this.tip&&(this.tip.remove(),this.tip=null)}}const initTooltip=e=>{const t=e.target.closest(SELECTOR_DATA_TOGGLE$3);if(!t)return;const n=Tooltip.getOrCreateInstance(t);"focusin"===e.type&&(n._activeTrigger.focus=!0,n._enter())};EventHandler.on(document,"focusin",SELECTOR_DATA_TOGGLE$3,initTooltip),EventHandler.on(document,"mouseenter",SELECTOR_DATA_TOGGLE$3,initTooltip);const NAME$4="popover",SELECTOR_TITLE=".popover-header",SELECTOR_CONTENT=".popover-body",SELECTOR_DATA_TOGGLE$2='[data-bs-toggle="popover"]',EVENT_CLICK$2="click",EVENT_FOCUSIN$1="focusin",EVENT_MOUSEENTER="mouseenter",Default$3={...Tooltip.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},DefaultType$3={...Tooltip.DefaultType,content:"(null|string|element|function)"};class Popover extends Tooltip{static get Default(){return Default$3}static get DefaultType(){return DefaultType$3}static get NAME(){return NAME$4}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[SELECTOR_TITLE]:this._getTitle(),[SELECTOR_CONTENT]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}}const initPopover=e=>{const t=e.target.closest(SELECTOR_DATA_TOGGLE$2);if(!t)return;"click"===e.type&&e.preventDefault();const n=Popover.getOrCreateInstance(t);"click"===e.type?n.toggle():"focusin"===e.type&&(n._activeTrigger.focus=!0,n._enter())};EventHandler.on(document,"click",SELECTOR_DATA_TOGGLE$2,initPopover),EventHandler.on(document,"focusin",SELECTOR_DATA_TOGGLE$2,initPopover),EventHandler.on(document,"mouseenter",SELECTOR_DATA_TOGGLE$2,initPopover);const NAME$3="scrollspy",DATA_KEY$3="bs.scrollspy",EVENT_KEY$3=`.${DATA_KEY$3}`,DATA_API_KEY=".data-api",EVENT_ACTIVATE=`activate${EVENT_KEY$3}`,EVENT_CLICK$1=`click${EVENT_KEY$3}`,EVENT_LOAD_DATA_API$1=`load${EVENT_KEY$3}.data-api`,CLASS_NAME_MENU_ITEM="menu-item",CLASS_NAME_ACTIVE$1="active",SELECTOR_DATA_SPY='[data-bs-spy="scroll"]',SELECTOR_TARGET_LINKS="[href]",SELECTOR_NAV_LIST_GROUP=".nav, .list-group",SELECTOR_NAV_LINKS=".nav-link",SELECTOR_NAV_ITEMS=".nav-item",SELECTOR_LIST_ITEMS=".list-group-item",SELECTOR_LINK_ITEMS=".nav-link, .nav-item > .nav-link, .list-group-item",SELECTOR_MENU_TOGGLE$1='[data-bs-toggle="menu"]',Default$2={rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},DefaultType$2={rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class ScrollSpy extends BaseComponent{constructor(e,t){super(e,t),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return Default$2}static get DefaultType(){return DefaultType$2}static get NAME(){return NAME$3}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const e of this._observableSections.values())this._observer.observe(e)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(e){return e.target=getElement(e.target)||document.body,"string"==typeof e.threshold&&(e.threshold=e.threshold.split(",").map(e=>Number.parseFloat(e))),e}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(EventHandler.off(this._config.target,EVENT_CLICK$1),EventHandler.on(this._config.target,EVENT_CLICK$1,"[href]",e=>{const t=this._observableSections.get(e.target.hash);if(t){e.preventDefault();const n=this._rootElement||window,s=t.offsetTop-this._element.offsetTop;if(n.scrollTo)return void n.scrollTo({top:s,behavior:"smooth"});n.scrollTop=s}}))}_getNewObserver(){const e={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(e=>this._observerCallback(e),e)}_observerCallback(e){const t=e=>this._targetLinks.get(`#${e.target.id}`),n=e=>{this._previousScrollData.visibleEntryTop=e.target.offsetTop,this._process(t(e))},s=(this._rootElement||document.documentElement).scrollTop,i=s>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=s;for(const o of e){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(t(o));continue}const e=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(i&&e){if(n(o),!s)return}else i||e||n(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const e=SelectorEngine.find("[href]",this._config.target);for(const t of e){if(!t.hash||isDisabled(t))continue;const e=SelectorEngine.findOne(decodeURI(t.hash),this._element);isVisible(e)&&(this._targetLinks.set(decodeURI(t.hash),t),this._observableSections.set(t.hash,e))}}_process(e){this._activeTarget!==e&&(this._clearActiveClass(this._config.target),this._activeTarget=e,e.classList.add("active"),this._activateParents(e),EventHandler.trigger(this._element,EVENT_ACTIVATE,{relatedTarget:e}))}_activateParents(e){if(e.classList.contains("menu-item")){const t=e.closest(".menu")?.previousElementSibling;return void(t?.matches(SELECTOR_MENU_TOGGLE$1)&&t.classList.add("active"))}for(const t of SelectorEngine.parents(e,".nav, .list-group"))for(const e of SelectorEngine.prev(t,SELECTOR_LINK_ITEMS))e.classList.add("active")}_clearActiveClass(e){e.classList.remove("active");const t=SelectorEngine.find("[href].active",e);for(const e of t)e.classList.remove("active")}}EventHandler.on(window,EVENT_LOAD_DATA_API$1,()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_SPY))ScrollSpy.getOrCreateInstance(e)});const NAME$2="tab",DATA_KEY$2="bs.tab",EVENT_KEY$2=".bs.tab",EVENT_HIDE$1="hide.bs.tab",EVENT_HIDDEN$1="hidden.bs.tab",EVENT_SHOW$1="show.bs.tab",EVENT_SHOWN$1="shown.bs.tab",EVENT_CLICK_DATA_API="click.bs.tab",EVENT_KEYDOWN="keydown.bs.tab",EVENT_LOAD_DATA_API="load.bs.tab",ARROW_LEFT_KEY="ArrowLeft",ARROW_RIGHT_KEY="ArrowRight",ARROW_UP_KEY="ArrowUp",ARROW_DOWN_KEY="ArrowDown",HOME_KEY="Home",END_KEY="End",CLASS_NAME_ACTIVE="active",CLASS_NAME_FADE$1="fade",CLASS_NAME_SHOW$1="show",SELECTOR_MENU_TOGGLE='[data-bs-toggle="menu"]',SELECTOR_MENU=".menu",NOT_SELECTOR_MENU_TOGGLE=`:not(${SELECTOR_MENU_TOGGLE})`,SELECTOR_TAB_PANEL='.list-group, .nav, [role="tablist"]',SELECTOR_OUTER=".nav-item, .list-group-item",SELECTOR_INNER=`.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role="tab"]${NOT_SELECTOR_MENU_TOGGLE}`,SELECTOR_DATA_TOGGLE$1='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',SELECTOR_INNER_ELEM=`${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE$1}`,SELECTOR_DATA_TOGGLE_ACTIVE='.active[data-bs-toggle="tab"], .active[data-bs-toggle="pill"], .active[data-bs-toggle="list"]';class Tab extends BaseComponent{constructor(e){super(e),this._parent=this._element.closest(SELECTOR_TAB_PANEL),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),EventHandler.on(this._element,EVENT_KEYDOWN,e=>this._keydown(e)))}static get NAME(){return"tab"}show(){const e=this._element;if(this._elemIsActive(e))return;const t=this._getActiveElem(),n=t?EventHandler.trigger(t,EVENT_HIDE$1,{relatedTarget:e}):null;EventHandler.trigger(e,EVENT_SHOW$1,{relatedTarget:t}).defaultPrevented||n&&n.defaultPrevented||(this._deactivate(t,e),this._activate(e,t))}_activate(e,t){e&&(e.classList.add("active"),this._activate(SelectorEngine.getElementFromSelector(e)),this._queueCallback(()=>{"tab"===e.getAttribute("role")?(e.removeAttribute("tabindex"),e.setAttribute("aria-selected",!0),this._toggleMenu(e,!0),EventHandler.trigger(e,EVENT_SHOWN$1,{relatedTarget:t})):e.classList.add("show")},e,e.classList.contains("fade")))}_deactivate(e,t){e&&(e.classList.remove("active"),e.blur(),this._deactivate(SelectorEngine.getElementFromSelector(e)),this._queueCallback(()=>{"tab"===e.getAttribute("role")?(e.setAttribute("aria-selected",!1),e.setAttribute("tabindex","-1"),this._toggleMenu(e,!1),EventHandler.trigger(e,EVENT_HIDDEN$1,{relatedTarget:t})):e.classList.remove("show")},e,e.classList.contains("fade")))}_keydown(e){if(![ARROW_LEFT_KEY,ARROW_RIGHT_KEY,ARROW_UP_KEY,ARROW_DOWN_KEY,HOME_KEY,END_KEY].includes(e.key))return;e.stopPropagation(),e.preventDefault();const t=this._getChildren().filter(e=>!isDisabled(e));let n;if([HOME_KEY,END_KEY].includes(e.key))n=t[e.key===HOME_KEY?0:t.length-1];else{const s=[ARROW_RIGHT_KEY,ARROW_DOWN_KEY].includes(e.key);n=getNextActiveElement(t,e.target,s,!0)}n&&(n.focus({preventScroll:!0}),Tab.getOrCreateInstance(n).show())}_getChildren(){return SelectorEngine.find(SELECTOR_INNER_ELEM,this._parent)}_getActiveElem(){return this._getChildren().find(e=>this._elemIsActive(e))||null}_setInitialAttributes(e,t){this._setAttributeIfNotExists(e,"role","tablist");for(const e of t)this._setInitialAttributesOnChild(e)}_setInitialAttributesOnChild(e){e=this._getInnerElement(e);const t=this._elemIsActive(e),n=this._getOuterElement(e);e.setAttribute("aria-selected",t),n!==e&&this._setAttributeIfNotExists(n,"role","presentation"),t||e.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(e,"role","tab"),this._setInitialAttributesOnTargetPanel(e)}_setInitialAttributesOnTargetPanel(e){const t=SelectorEngine.getElementFromSelector(e);t&&(this._setAttributeIfNotExists(t,"role","tabpanel"),e.id&&this._setAttributeIfNotExists(t,"aria-labelledby",`${e.id}`))}_toggleMenu(e,t){const n=this._getOuterElement(e),s=SelectorEngine.findOne(SELECTOR_MENU_TOGGLE,n);if(!s)return;const i=SelectorEngine.findOne(".menu",n);s.classList.toggle("active",t),i&&i.classList.toggle("show",t),s.setAttribute("aria-expanded",t)}_setAttributeIfNotExists(e,t,n){e.hasAttribute(t)||e.setAttribute(t,n)}_elemIsActive(e){return e.classList.contains("active")}_getInnerElement(e){return e.matches(SELECTOR_INNER_ELEM)?e:SelectorEngine.findOne(SELECTOR_INNER_ELEM,e)}_getOuterElement(e){return e.closest(SELECTOR_OUTER)||e}}EventHandler.on(document,"click.bs.tab",SELECTOR_DATA_TOGGLE$1,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault(),isDisabled(this)||Tab.getOrCreateInstance(this).show()}),EventHandler.on(window,"load.bs.tab",()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE))Tab.getOrCreateInstance(e)});const NAME$1="toast",DATA_KEY$1="bs.toast",EVENT_KEY$1=".bs.toast",EVENT_MOUSEOVER="mouseover.bs.toast",EVENT_MOUSEOUT="mouseout.bs.toast",EVENT_FOCUSIN="focusin.bs.toast",EVENT_FOCUSOUT="focusout.bs.toast",EVENT_HIDE="hide.bs.toast",EVENT_HIDDEN="hidden.bs.toast",EVENT_SHOW="show.bs.toast",EVENT_SHOWN="shown.bs.toast",CLASS_NAME_FADE="fade",CLASS_NAME_HIDE="hide",CLASS_NAME_SHOW="show",CLASS_NAME_SHOWING="showing",DefaultType$1={animation:"boolean",autohide:"boolean",delay:"number"},Default$1={animation:!0,autohide:!0,delay:5e3};class Toast extends BaseComponent{constructor(e,t){super(e,t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Default$1}static get DefaultType(){return DefaultType$1}static get NAME(){return NAME$1}show(){EventHandler.trigger(this._element,EVENT_SHOW).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove("hide"),reflow(this._element),this._element.classList.add("show","showing"),this._queueCallback(()=>{this._element.classList.remove("showing"),EventHandler.trigger(this._element,EVENT_SHOWN),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this.isShown()&&(EventHandler.trigger(this._element,EVENT_HIDE).defaultPrevented||(this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.add("hide"),this._element.classList.remove("showing","show"),EventHandler.trigger(this._element,EVENT_HIDDEN)},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove("show"),super.dispose()}isShown(){return this._element.classList.contains("show")}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)return void this._clearTimeout();const n=e.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}_setListeners(){EventHandler.on(this._element,EVENT_MOUSEOVER,e=>this._onInteraction(e,!0)),EventHandler.on(this._element,EVENT_MOUSEOUT,e=>this._onInteraction(e,!1)),EventHandler.on(this._element,EVENT_FOCUSIN,e=>this._onInteraction(e,!0)),EventHandler.on(this._element,EVENT_FOCUSOUT,e=>this._onInteraction(e,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}}enableDismissTrigger(Toast);const NAME="toggler",DATA_KEY="bs.toggler",EVENT_KEY=`.${DATA_KEY}`,EVENT_TOGGLE=`toggle${EVENT_KEY}`,EVENT_TOGGLED=`toggled${EVENT_KEY}`,EVENT_CLICK="click",SELECTOR_DATA_TOGGLE='[data-bs-toggle="toggler"]',DefaultType={attribute:"string",value:"(string|number|boolean)"},Default={attribute:"class",value:null};class Toggler extends BaseComponent{static get Default(){return Default}static get DefaultType(){return DefaultType}static get NAME(){return NAME}toggle(){EventHandler.trigger(this._element,EVENT_TOGGLE).defaultPrevented||(this._execute(),EventHandler.trigger(this._element,EVENT_TOGGLED))}_execute(){const{attribute:e,value:t}=this._config;"id"!==e&&("class"!==e?this._element.getAttribute(e)!==String(t)?this._element.setAttribute(e,t):this._element.removeAttribute(e):this._element.classList.toggle(t))}}eventActionOnPlugin(Toggler,"click",SELECTOR_DATA_TOGGLE,"toggle");export{Alert,Button,Carousel,Collapse,Combobox,Datepicker,Dialog,Menu,NavOverflow,Offcanvas,OtpInput,Popover,ScrollSpy,Strength,Tab,Toast,Toggler,Tooltip};
 //# sourceMappingURL=bootstrap.min.js.map
\ No newline at end of file
index cb48f0af369f93ccf79298d25c8591dcbf82a5c4..31ebaa16dba3da23f0cdd709ec54579d63c2577d 100644 (file)
@@ -1 +1 @@
-{"version":3,"names":["elementMap","Map","Data","set","element","key","instance","has","instanceMap","get","size","console","error","Array","from","keys","remove","delete","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","bootstrapHandler","fn","handler","event","hydrateObj","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","selector","domElements","querySelectorAll","target","this","parentNode","domElement","findHandler","events","callable","delegationSelector","Object","values","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","replace","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","length","trigger","args","evt","Event","bubbles","cancelable","dispatchEvent","obj","meta","value","defineProperty","configurable","normalizeData","Number","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","getAttribute","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","window","CSS","escape","match","id","toType","object","prototype","getUID","prefix","Math","floor","random","document","getElementById","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","isElement","nodeType","getElement","querySelector","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","isDisabled","Node","ELEMENT_NODE","classList","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","isRTL","dir","execute","possibleCallback","defaultValue","executeAfterTransition","callback","transitionElement","waitForTransition","emulatedDuration","called","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","Config","Default","DefaultType","NAME","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","VERSION","BaseComponent","super","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","eventName","name","getSelector","hrefAttribute","trim","map","sel","join","SelectorEngine","concat","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","preventDefault","eventActionOnPlugin","Plugin","onEvent","stringSelector","eventAction","data","instances","targets","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","defaultPrevented","_destroyElement","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","button","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM_IMG","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","KEY_TO_DIRECTION","ARROW_LEFT_KEY$2","ARROW_RIGHT_KEY$2","interval","keyboard","pause","ride","touch","wrap","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","visibilityState","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","endCallBack","clearTimeout","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","_orderToDirection","isCycling","directionalClassName","orderClassName","completeCallBack","_isAnimated","clearInterval","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","style","scrollSize","complete","getBoundingClientRect","selected","triggerArray","isOpen","EVENT_CHANGE","EVENT_FOCUSIN_DATA_API","HIDE_DELAY","datepickerTheme","dateMin","dateMax","dateFormat","displayElement","displayMonthsCount","firstWeekday","inline","locale","positionElement","selectedDates","selectionMode","placement","vcpOptions","Datepicker","_calendar","_initCalendar","_themeObserver","disconnect","destroy","getSelectedDates","dates","context","setSelectedDates","_isInput","_isInline","_boundInput","_positionElement","_resolvePositionElement","_displayElement","_resolveDisplayElement","calendarOptions","_buildCalendarOptions","Calendar","init","_setupThemeObserver","_parseInputValue","_updateDisplayWithSelectedDates","formattedDate","_formatDateForInput","textContent","_getThemeAncestor","_getEffectiveTheme","_syncThemeAttribute","theme","MutationObserver","mainElement","observe","attributeFilter","vcpTheme","inputMode","positionToInput","selectionDatesMode","selectedTheme","themeAttrDetect","onClickDate","self","_handleDateClick","onInit","onShow","onHide","firstDate","_parseDate","selectedMonth","getMonth","selectedYear","getFullYear","_maybeHideAfterSelection","dateStr","year","month","day","Date","_formatDate","date","undefined","Intl","DateTimeFormat","format","toLocaleDateString","separator","d","isNaN","getTime","formatted","String","padStart","getDate","bsInline","EVENT_HIDE_PREVENTED","EVENT_CANCEL","CLASS_NAME_STATIC","CLASS_NAME_OPEN","CLASS_NAME_NONMODAL","SELECTOR_OPEN_MODAL_DIALOG","backdrop","modal","Dialog","open","showModal","body","_hideDialog","handleUpdate","_triggerBackdropTransition","showEvent","focus","currentDialog","currentInstance","BREAKPOINTS","sm","md","lg","xl","parseResponsivePlacement","placementString","defaultPlacement","parts","placements","xs","part","breakpoint","getResponsivePlacement","responsivePlacements","viewportWidth","innerWidth","activePlacement","breakpointOrder","createBreakpointListeners","listeners","minWidth","mql","matchMedia","disposeBreakpointListeners","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","ENTER_KEY","SPACE_KEY","RIGHT_MOUSE_BUTTON","SUBMENU_CLOSE_DELAY","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","SELECTOR_SUBMENU","SELECTOR_SUBMENU_TOGGLE","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","DEFAULT_PLACEMENT","SUBMENU_PLACEMENT","resolveLogicalPlacement","triangleSign","p1","p2","p3","x","y","autoClose","boundary","container","display","offset","floatingConfig","reference","strategy","submenuTrigger","submenuDelay","Dropdown","computePosition","_floatingCleanup","_mediaQueryListeners","_responsivePlacements","_parent","_isSubmenu","_openSubmenus","_submenuCloseTimeouts","_hoverIntentData","_menu","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","_moveMenuToContainer","_createFloating","_completeHide","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","update","_updateFloatingPosition","referenceElement","autoUpdate","_getPlacement","middleware","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","_setupMediaQueryListeners","_getOffset","offsetConfig","rects","floating","offsetValue","mainAxis","crossAxis","flip","fallbackPlacements","_getFallbackPlacements","shift","bottom","top","right","left","defaultConfig","_getContainer","append","isConnected","finalPlacement","assign","position","margin","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","_isMovingTowardSubmenu","_scheduleSubmenuClose","stopPropagation","_closeSubmenu","cleanup","_createSubmenuFloating","nestedSubmenus","nested","nestedWrapper","currentSubmenuWrapper","siblingSubmenus","siblingMenu","siblingWrapper","padding","updatePosition","timeoutId","clear","clientY","timestamp","now","submenuRect","currentPos","lastPos","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","_selectMenuItem","currentMenu","_handleSubmenuKeydown","isRtl","enterKey","exitKey","isSubmenuTrigger","requestAnimationFrame","firstItem","parentSubmenuWrapper","parentTrigger","clearMenus","openToggles","composedPath","isMenuTarget","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","isLeftOrRightEvent","isHomeOrEndEvent","isEnterOrSpaceEvent","getToggleButton","EVENT_UPDATE","EVENT_OVERFLOW","CLASS_NAME_OVERFLOW","CLASS_NAME_OVERFLOW_MENU","CLASS_NAME_HIDDEN","SELECTOR_NAV_ITEM","SELECTOR_NAV_LINK","SELECTOR_OVERFLOW_TOGGLE","SELECTOR_OVERFLOW_MENU","CLASS_NAME_KEEP","moreText","moreIcon","threshold","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_resizeObserver","_isInitialized","_init","_calculateOverflow","_restoreItems","parentElement","item","bsNavOrder","_createOverflowMenu","_setupResizeObserver","overflowItem","createElement","className","innerHTML","ResizeObserver","navWidth","offsetWidth","usedWidth","itemsToOverflow","overflowThreshold","toMove","_moveToOverflow","overflowCount","visibleCount","link","dropdownItem","clonedLink","cloneNode","bsNavOverflow","EVENT_MOUSEDOWN","clickCallback","rootElement","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","autofocus","trapElement","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","clientWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","reset","_resetElementAttributes","isOverflowing","_saveInitialAttribute","overflow","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","CLASS_NAME_SHOWING","CLASS_NAME_HIDING","CLASS_NAME_BACKDROP","OPEN_SELECTOR","EVENT_RESIZE","EVENT_KEYDOWN_DISMISS","scroll","Offcanvas","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","blur","completeCallback","alreadyOpen","EVENT_STRENGTH_CHANGE","SELECTOR_DATA_STRENGTH","STRENGTH_LEVELS","input","minLength","messages","weak","fair","good","strong","weights","extraLength","lowercase","uppercase","numbers","special","multipleSpecial","longPassword","thresholds","scorer","Strength","_input","_getInput","_segments","_textElement","_currentStrength","_evaluate","getStrength","evaluate","password","score","_calculateScore","strength","_scoreToStrength","_updateUI","bsStrength","strengthIndex","segment","colorMap","EVENT_COMPLETE","EVENT_INPUT","SELECTOR_DATA_OTP","SELECTOR_INPUT","mask","OtpInput","_inputs","_setupInputs","getValue","setValue","chars","_checkComplete","emptyInput","at","_handleInput","_handlePaste","_handleFocus","i","nextIndex","digits","clipboardData","getData","lastIndex","select","every","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","a","area","b","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","li","ol","p","pre","s","small","span","sub","sup","u","ul","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","attributeRegex","some","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","_maybeSanitize","text","_setContent","arg","templateElement","_putElementInTemplate","DISALLOWED_ATTRIBUTES","CLASS_NAME_MODAL","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","_leave","_enter","_hideModalHandler","_isWithContent","isInTheDom","ownerDocument","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","middlewareData","arrow","arrowX","arrowY","isVertical","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","tooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","popover","EVENT_ACTIVATE","CLASS_NAME_DROPDOWN_ITEM","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","rootMargin","smoothScroll","ScrollSpy","_targetLinks","_observableSections","_rootElement","overflowY","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","observableSection","hash","height","offsetTop","scrollTo","behavior","scrollTop","options","IntersectionObserver","_observerCallback","targetElement","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","listGroup","activeNodes","node","spy","CLASS_DROPDOWN","SELECTOR_DROPDOWN_MENU","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleDropDown","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","EVENT_TOGGLE","EVENT_TOGGLED","Toggler","_execute"],"sources":["../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/index.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/datepicker.js","../../js/src/dialog.js","../../js/src/util/floating-ui.js","../../js/src/dropdown.js","../../js/src/nav-overflow.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/util/scrollbar.js","../../js/src/offcanvas.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/toggler.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const evt = hydrateObj(new Event(event, { bubbles: true, cancelable: true }), args)\n    element.dispatchEvent(evt)\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n  for (const [key, value] of Object.entries(meta)) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n  if (selector && window.CSS && window.CSS.escape) {\n    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n    selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n  }\n\n  return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  if (isElement(object)) {\n    return object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(parseSelector(object))\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsie appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n  return typeof possibleCallback === 'function' ? possibleCallback.call(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getNextActiveElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  parseSelector,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const [property, expectedTypes] of Object.entries(configTypes)) {\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '6.0.0-alpha1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  // Private\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\n}\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children).filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  },\n\n  getSelectorFromElement(element) {\n    const selector = getSelector(element)\n\n    if (selector) {\n      return SelectorEngine.findOne(selector) ? selector : null\n    }\n\n    return null\n  },\n\n  getElementFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.findOne(selector) : null\n  },\n\n  getMultipleElementsFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.find(selector) : []\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nconst eventActionOnPlugin = (Plugin, onEvent, stringSelector, method, callback = null) => {\n  eventAction(`${onEvent}.${Plugin.NAME}`, stringSelector, data => {\n    const instances = data.targets.filter(Boolean).map(element => Plugin.getOrCreateInstance(element))\n    if (typeof callback === 'function') {\n      callback({ ...data, instances })\n    }\n\n    for (const instance of instances) {\n      instance[method]()\n    }\n  })\n}\n\nconst eventAction = (onEvent, stringSelector, callback) => {\n  const selector = `${stringSelector}:not(.disabled):not(:disabled)`\n  EventHandler.on(document, onEvent, selector, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    const selector = SelectorEngine.getSelectorFromElement(this)\n    const targets = selector ? SelectorEngine.find(selector) : [this]\n\n    callback({ targets, event })\n  })\n}\n\nexport {\n  enableDismissTrigger,\n  eventActionOnPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    this._deltaX = event.touches && event.touches.length > 1 ?\n      0 :\n      event.touches[0].clientX - this._deltaX\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n\n    if (absDeltaX <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltaX / this._deltaX\n\n    this._deltaX = 0\n\n    if (!direction) {\n      return\n    }\n\n    execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getNextActiveElement,\n  isRTL,\n  isVisible,\n  reflow,\n  triggerTransitionEnd\n} from './util/index.js'\nimport Swipe from './util/swipe.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover',\n  ride: false,\n  touch: true,\n  wrap: true\n}\n\nconst DefaultType = {\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)',\n  ride: '(boolean|string)',\n  touch: 'boolean',\n  wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._interval = null\n    this._activeElement = null\n    this._isSliding = false\n    this.touchTimeout = null\n    this._swipeHelper = null\n\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._addEventListeners()\n\n    if (this._config.ride === CLASS_NAME_CAROUSEL) {\n      this.cycle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause() {\n    if (this._isSliding) {\n      triggerTransitionEnd(this._element)\n    }\n\n    this._clearInterval()\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._updateInterval()\n\n    this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n  }\n\n  _maybeEnableCycle() {\n    if (!this._config.ride) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n      return\n    }\n\n    this.cycle()\n  }\n\n  to(index) {\n    const items = this._getItems()\n    if (index > items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    const activeIndex = this._getItemIndex(this._getActive())\n    if (activeIndex === index) {\n      return\n    }\n\n    const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n    this._slide(order, items[index])\n  }\n\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.defaultInterval = config.interval\n    return config\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    if (this._config.touch && Swipe.isSupported()) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n      EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n    }\n\n    const endCallBack = () => {\n      if (this._config.pause !== 'hover') {\n        return\n      }\n\n      // If it's a touch-enabled device, mouseenter/leave are fired as\n      // part of the mouse compatibility events on first tap - the carousel\n      // would stop cycling until user tapped out of it;\n      // here, we listen for touchend, explicitly pause the carousel\n      // (as if it's the second time we tap on it, mouseenter compat event\n      // is NOT fired) and after a timeout (to allow for mouse compatibility\n      // events to fire) we explicitly restart cycling\n\n      this.pause()\n      if (this.touchTimeout) {\n        clearTimeout(this.touchTimeout)\n      }\n\n      this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n    }\n\n    const swipeConfig = {\n      leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n      rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n      endCallback: endCallBack\n    }\n\n    this._swipeHelper = new Swipe(this._element, swipeConfig)\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(this._directionToOrder(direction))\n    }\n  }\n\n  _getItemIndex(element) {\n    return this._getItems().indexOf(element)\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n    activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n    activeIndicator.removeAttribute('aria-current')\n\n    const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n    if (newActiveIndicator) {\n      newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n      newActiveIndicator.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || this._getActive()\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    this._config.interval = elementInterval || this._config.defaultInterval\n  }\n\n  _slide(order, element = null) {\n    if (this._isSliding) {\n      return\n    }\n\n    const activeElement = this._getActive()\n    const isNext = order === ORDER_NEXT\n    const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n    if (nextElement === activeElement) {\n      return\n    }\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n\n    const triggerEvent = eventName => {\n      return EventHandler.trigger(this._element, eventName, {\n        relatedTarget: nextElement,\n        direction: this._orderToDirection(order),\n        from: this._getItemIndex(activeElement),\n        to: nextElementIndex\n      })\n    }\n\n    const slideEvent = triggerEvent(EVENT_SLIDE)\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      return\n    }\n\n    const isCycling = Boolean(this._interval)\n    this.pause()\n\n    this._isSliding = true\n\n    this._setActiveIndicatorElement(nextElementIndex)\n    this._activeElement = nextElement\n\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n    nextElement.classList.add(orderClassName)\n\n    reflow(nextElement)\n\n    activeElement.classList.add(directionalClassName)\n    nextElement.classList.add(directionalClassName)\n\n    const completeCallBack = () => {\n      nextElement.classList.remove(directionalClassName, orderClassName)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n      this._isSliding = false\n\n      triggerEvent(EVENT_SLID)\n    }\n\n    this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_SLIDE)\n  }\n\n  _getActive() {\n    return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  carousel.prev()\n  carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement,\n  reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = SelectorEngine.getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = SelectorEngine.getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  // Private\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = SelectorEngine.getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap datepicker.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { Calendar } from 'vanilla-calendar-pro'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'datepicker'\nconst DATA_KEY = 'bs.datepicker'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"datepicker\"]'\n\nconst HIDE_DELAY = 100 // ms delay before hiding after selection\n\nconst Default = {\n  datepickerTheme: null, // 'light', 'dark', 'auto' - explicit theme for datepicker popover only\n  dateMin: null,\n  dateMax: null,\n  dateFormat: null, // Intl.DateTimeFormat options, or function(date, locale) => string\n  displayElement: null, // Element to show formatted date (defaults to element for buttons)\n  displayMonthsCount: 1, // Number of months to display side-by-side\n  firstWeekday: 1, // Monday\n  inline: false, // Render calendar inline (no popup)\n  locale: 'default',\n  positionElement: null, // Element to position calendar relative to (defaults to input)\n  selectedDates: [],\n  selectionMode: 'single', // 'single', 'multiple', 'multiple-ranged'\n  placement: 'left', // 'left', 'center', 'right', 'auto'\n  vcpOptions: {} // Pass-through for any VCP option\n}\n\nconst DefaultType = {\n  datepickerTheme: '(null|string)',\n  dateMin: '(null|string|number|object)',\n  dateMax: '(null|string|number|object)',\n  dateFormat: '(null|object|function)',\n  displayElement: '(null|string|element|boolean)',\n  displayMonthsCount: 'number',\n  firstWeekday: 'number',\n  inline: 'boolean',\n  locale: 'string',\n  positionElement: '(null|string|element)',\n  selectedDates: 'array',\n  selectionMode: 'string',\n  placement: 'string',\n  vcpOptions: 'object'\n}\n\n/**\n * Class definition\n */\n\nclass Datepicker extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._calendar = null\n    this._isShown = false\n\n    this._initCalendar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    return this._isShown ? this.hide() : this.show()\n  }\n\n  show() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || isDisabled(this._element) || this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.show()\n    this._isShown = true\n\n    EventHandler.trigger(this._element, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || !this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.hide()\n    this._isShown = false\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._themeObserver) {\n      this._themeObserver.disconnect()\n      this._themeObserver = null\n    }\n\n    if (this._calendar) {\n      this._calendar.destroy()\n    }\n\n    this._calendar = null\n    super.dispose()\n  }\n\n  getSelectedDates() {\n    const dates = this._calendar?.context?.selectedDates\n    return dates ? [...dates] : []\n  }\n\n  setSelectedDates(dates) {\n    if (this._calendar) {\n      this._calendar.set({ selectedDates: dates })\n    }\n  }\n\n  // Private\n  _initCalendar() {\n    this._isInput = this._element.tagName === 'INPUT'\n    this._isInline = this._config.inline\n\n    // For inline mode, look for a hidden input child to bind to\n    if (this._isInline && !this._isInput) {\n      this._boundInput = this._element.querySelector('input[type=\"hidden\"], input[name]')\n    }\n\n    this._positionElement = this._resolvePositionElement()\n    this._displayElement = this._resolveDisplayElement()\n\n    const calendarOptions = this._buildCalendarOptions()\n\n    // Create calendar on the position element (for correct popup positioning)\n    // but value updates still go to this._element (the input)\n    this._calendar = new Calendar(this._positionElement, calendarOptions)\n    this._calendar.init()\n\n    // Watch for theme changes on ancestor elements (for live theme switching)\n    this._setupThemeObserver()\n\n    // Set initial value if input has a value\n    if (this._isInput && this._element.value) {\n      this._parseInputValue()\n    }\n\n    // Populate input/display with preselected dates\n    this._updateDisplayWithSelectedDates()\n  }\n\n  _updateDisplayWithSelectedDates() {\n    const { selectedDates } = this._config\n    if (!selectedDates || selectedDates.length === 0) {\n      return\n    }\n\n    const formattedDate = this._formatDateForInput(selectedDates)\n\n    if (this._isInput) {\n      this._element.value = formattedDate\n    }\n\n    if (this._boundInput) {\n      this._boundInput.value = selectedDates.join(',')\n    }\n\n    if (this._displayElement) {\n      this._displayElement.textContent = formattedDate\n    }\n  }\n\n  _resolvePositionElement() {\n    let { positionElement } = this._config\n\n    if (typeof positionElement === 'string') {\n      positionElement = document.querySelector(positionElement)\n    }\n\n    // Use input's parent if in form-adorn\n    if (!positionElement && this._isInput && !this._isInline) {\n      const parent = this._element.closest('.form-adorn')\n      if (parent) {\n        positionElement = parent\n      }\n    }\n\n    return positionElement || this._element\n  }\n\n  _resolveDisplayElement() {\n    const { displayElement } = this._config\n\n    if (typeof displayElement === 'string') {\n      return document.querySelector(displayElement)\n    }\n\n    // For buttons/non-inputs (not inline), look for a [data-bs-datepicker-display] child\n    if (displayElement === true || (displayElement === null && !this._isInput && !this._isInline)) {\n      const displayChild = this._element.querySelector('[data-bs-datepicker-display]')\n      return displayChild || this._element\n    }\n\n    return displayElement\n  }\n\n  _getThemeAncestor() {\n    return this._element.closest('[data-bs-theme]')\n  }\n\n  _getEffectiveTheme() {\n    // Priority: explicit datepickerTheme config > inherited from ancestor > none\n    const { datepickerTheme } = this._config\n    if (datepickerTheme) {\n      return datepickerTheme\n    }\n\n    const ancestor = this._getThemeAncestor()\n    return ancestor?.getAttribute('data-bs-theme') || null\n  }\n\n  _syncThemeAttribute(element) {\n    if (!element) {\n      return\n    }\n\n    const theme = this._getEffectiveTheme()\n\n    if (theme) {\n      // Copy theme to popover (needed because VCP appends to body, breaking CSS inheritance)\n      element.setAttribute('data-bs-theme', theme)\n    } else {\n      // No theme - remove attribute to allow natural inheritance\n      element.removeAttribute('data-bs-theme')\n    }\n  }\n\n  _setupThemeObserver() {\n    // Watch for theme changes on ancestor elements\n    const ancestor = this._getThemeAncestor()\n    if (!ancestor || this._config.datepickerTheme) {\n      // No ancestor to watch, or explicit datepickerTheme overrides\n      return\n    }\n\n    this._themeObserver = new MutationObserver(() => {\n      this._syncThemeAttribute(this._calendar?.context?.mainElement)\n    })\n\n    this._themeObserver.observe(ancestor, {\n      attributes: true,\n      attributeFilter: ['data-bs-theme']\n    })\n  }\n\n  _buildCalendarOptions() {\n    // Get theme for VCP - use 'system' for auto-detection if no explicit theme\n    const theme = this._getEffectiveTheme()\n    // VCP uses 'system' for auto, Bootstrap uses 'auto'\n    const vcpTheme = !theme || theme === 'auto' ? 'system' : theme\n\n    const calendarOptions = {\n      ...this._config.vcpOptions,\n      inputMode: !this._isInline,\n      positionToInput: this._config.placement,\n      firstWeekday: this._config.firstWeekday,\n      locale: this._config.locale,\n      selectionDatesMode: this._config.selectionMode,\n      selectedDates: this._config.selectedDates,\n      displayMonthsCount: this._config.displayMonthsCount,\n      type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',\n      selectedTheme: vcpTheme,\n      themeAttrDetect: '[data-bs-theme]',\n      onClickDate: (self, event) => this._handleDateClick(self, event),\n      onInit: self => {\n        this._syncThemeAttribute(self.context.mainElement)\n      },\n      onShow: () => {\n        this._isShown = true\n        this._syncThemeAttribute(this._calendar.context.mainElement)\n      },\n      onHide: () => {\n        this._isShown = false\n      }\n    }\n\n    // Navigate to the month of the first selected date\n    if (this._config.selectedDates.length > 0) {\n      const firstDate = this._parseDate(this._config.selectedDates[0])\n      calendarOptions.selectedMonth = firstDate.getMonth()\n      calendarOptions.selectedYear = firstDate.getFullYear()\n    }\n\n    if (this._config.dateMin) {\n      calendarOptions.dateMin = this._config.dateMin\n    }\n\n    if (this._config.dateMax) {\n      calendarOptions.dateMax = this._config.dateMax\n    }\n\n    return calendarOptions\n  }\n\n  _handleDateClick(self, event) {\n    const selectedDates = [...self.context.selectedDates]\n\n    if (selectedDates.length > 0) {\n      const formattedDate = this._formatDateForInput(selectedDates)\n\n      if (this._isInput) {\n        this._element.value = formattedDate\n      }\n\n      if (this._boundInput) {\n        this._boundInput.value = selectedDates.join(',')\n      }\n\n      if (this._displayElement) {\n        this._displayElement.textContent = formattedDate\n      }\n    }\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      dates: selectedDates,\n      event\n    })\n\n    this._maybeHideAfterSelection(selectedDates)\n  }\n\n  _maybeHideAfterSelection(selectedDates) {\n    if (this._isInline) {\n      return\n    }\n\n    const shouldHide =\n      (this._config.selectionMode === 'single' && selectedDates.length > 0) ||\n      (this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2)\n\n    if (shouldHide) {\n      setTimeout(() => this.hide(), HIDE_DELAY)\n    }\n  }\n\n  _parseDate(dateStr) {\n    const [year, month, day] = dateStr.split('-')\n    return new Date(year, month - 1, day)\n  }\n\n  _formatDate(dateStr) {\n    const date = this._parseDate(dateStr)\n    const locale = this._config.locale === 'default' ? undefined : this._config.locale\n    const { dateFormat } = this._config\n\n    // Custom function formatter\n    if (typeof dateFormat === 'function') {\n      return dateFormat(date, locale)\n    }\n\n    // Intl.DateTimeFormat options object\n    if (dateFormat && typeof dateFormat === 'object') {\n      return new Intl.DateTimeFormat(locale, dateFormat).format(date)\n    }\n\n    // Default: locale-aware formatting\n    return date.toLocaleDateString(locale)\n  }\n\n  _formatDateForInput(dates) {\n    if (dates.length === 0) {\n      return ''\n    }\n\n    if (dates.length === 1) {\n      return this._formatDate(dates[0])\n    }\n\n    // For date ranges, use en-dash; for multiple dates, use comma\n    const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', '\n    return dates.map(d => this._formatDate(d)).join(separator)\n  }\n\n  _parseInputValue() {\n    // Try to parse the input value as a date\n    const value = this._element.value.trim()\n    if (!value) {\n      return\n    }\n\n    const date = new Date(value)\n    if (!Number.isNaN(date.getTime())) {\n      const year = date.getFullYear()\n      const month = String(date.getMonth() + 1).padStart(2, '0')\n      const day = String(date.getDate()).padStart(2, '0')\n      const formatted = `${year}-${month}-${day}`\n      this._calendar.set({ selectedDates: [formatted] })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // Only handle if not an input (inputs use focus)\n  // Skip inline datepickers (they're always visible)\n  if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true') {\n    return\n  }\n\n  event.preventDefault()\n  Datepicker.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE, function () {\n  // Handle focus for input elements\n  if (this.tagName !== 'INPUT') {\n    return\n  }\n\n  Datepicker.getOrCreateInstance(this).show()\n})\n\n// Auto-initialize inline datepickers on DOMContentLoaded\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE}[data-bs-inline=\"true\"]`)) {\n    Datepicker.getOrCreateInstance(element)\n  }\n})\n\nexport default Datepicker\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dialog'\nconst DATA_KEY = 'bs.dialog'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_STATIC = 'dialog-static'\nconst CLASS_NAME_OPEN = 'dialog-open'\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\nconst SELECTOR_OPEN_MODAL_DIALOG = 'dialog.dialog[open]:not(.dialog-nonmodal)'\n\nconst Default = {\n  backdrop: true, // true (click dismisses) or 'static' (click does nothing) - only applies to modal dialogs\n  keyboard: true,\n  modal: true // true uses showModal(), false uses show() for non-modal dialogs\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  modal: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Dialog extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._element.open ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n\n    if (this._config.modal) {\n      // Modal dialog: use showModal() for focus trapping, backdrop, and top layer\n      this._element.showModal()\n      // Prevent body scroll for modal dialogs\n      document.body.classList.add(CLASS_NAME_OPEN)\n    } else {\n      // Non-modal dialog: use show() - no backdrop, no focus trap, no top layer\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n      this._element.show()\n    }\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }, this._element, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n\n    this._queueCallback(() => this._hideDialog(), this._element, this._isAnimated())\n  }\n\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n    super.dispose()\n  }\n\n  handleUpdate() {\n    // Provided for API consistency with Modal.\n    // Native dialogs handle their own positioning.\n  }\n\n  // Private\n  _hideDialog() {\n    this._element.close()\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n    this._isTransitioning = false\n\n    // Only restore body scroll if no other modal dialogs are open\n    if (!document.querySelector(SELECTOR_OPEN_MODAL_DIALOG)) {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n    }\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains('fade')\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      this._element.classList.remove(CLASS_NAME_STATIC)\n    }, this._element)\n  }\n\n  _addEventListeners() {\n    // Handle native cancel event (Escape key) - only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      // Prevent native close behavior - we'll handle it\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_CANCEL)\n      this.hide()\n    })\n\n    // Handle Escape key for non-modal dialogs (native cancel doesn't fire for show())\n    EventHandler.on(this._element, 'keydown', event => {\n      if (event.key !== 'Escape' || this._config.modal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_CANCEL)\n      this.hide()\n    })\n\n    // Handle backdrop clicks (only applies to modal dialogs)\n    // Native <dialog> fires click on the dialog element when backdrop is clicked\n    EventHandler.on(this._element, 'click', event => {\n      // Only handle clicks directly on the dialog (backdrop area)\n      // Non-modal dialogs don't have a backdrop\n      if (event.target !== this._element || !this._config.modal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      // Default: click backdrop to dismiss\n      this.hide()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  // Get config from trigger's data attributes\n  const config = Manipulator.getDataAttributes(this)\n\n  // Check if trigger is inside an open dialog\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Open new dialog first (its backdrop appears over current)\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    newDialog.show(this)\n\n    // Close the current dialog (no backdrop flash since new one is already open)\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      currentInstance.hide()\n    }\n\n    return\n  }\n\n  const data = Dialog.getOrCreateInstance(target, config)\n  data.toggle(this)\n})\n\nenableDismissTrigger(Dialog)\n\nexport default Dialog\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/floating-ui.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isRTL } from './index.js'\n\n/**\n * Breakpoints for responsive placement (matches SCSS $breakpoints)\n */\nexport const BREAKPOINTS = {\n  sm: 576,\n  md: 768,\n  lg: 1024,\n  xl: 1280,\n  '2xl': 1536\n}\n\n/**\n * Default placement with RTL support\n */\nexport const getDefaultPlacement = (fallback = 'bottom') => {\n  if (fallback.includes('-start') || fallback.includes('-end')) {\n    const [side, alignment] = fallback.split('-')\n    const flippedAlignment = alignment === 'start' ? 'end' : 'start'\n    return isRTL() ? `${side}-${flippedAlignment}` : fallback\n  }\n\n  return fallback\n}\n\n/**\n * Parse a placement string that may contain responsive prefixes\n * Example: \"bottom-start md:top-end lg:right\" returns { xs: 'bottom-start', md: 'top-end', lg: 'right' }\n *\n * @param {string} placementString - The placement string to parse\n * @param {string} defaultPlacement - The default placement to use for xs/base\n * @returns {object|null} - Object with breakpoint keys and placement values, or null if not responsive\n */\nexport const parseResponsivePlacement = (placementString, defaultPlacement = 'bottom') => {\n  // Check if placement contains responsive prefixes (e.g., \"bottom-start md:top-end\")\n  if (!placementString || !placementString.includes(':')) {\n    return null\n  }\n\n  // Parse the placement string into breakpoint-keyed object\n  const parts = placementString.split(/\\s+/)\n  const placements = { xs: defaultPlacement } // Default fallback\n\n  for (const part of parts) {\n    if (part.includes(':')) {\n      // Responsive placement like \"md:top-end\"\n      const [breakpoint, placement] = part.split(':')\n      if (BREAKPOINTS[breakpoint] !== undefined) {\n        placements[breakpoint] = placement\n      }\n    } else {\n      // Base placement (no prefix = xs/default)\n      placements.xs = part\n    }\n  }\n\n  return placements\n}\n\n/**\n * Get the active placement for the current viewport width\n *\n * @param {object} responsivePlacements - Object with breakpoint keys and placement values\n * @param {string} defaultPlacement - Fallback placement\n * @returns {string} - The active placement for current viewport\n */\nexport const getResponsivePlacement = (responsivePlacements, defaultPlacement = 'bottom') => {\n  if (!responsivePlacements) {\n    return defaultPlacement\n  }\n\n  // Get current viewport width\n  const viewportWidth = window.innerWidth\n\n  // Find the largest breakpoint that matches\n  let activePlacement = responsivePlacements.xs || defaultPlacement\n\n  // Check breakpoints in order (sm, md, lg, xl, 2xl)\n  const breakpointOrder = ['sm', 'md', 'lg', 'xl', '2xl']\n\n  for (const breakpoint of breakpointOrder) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    if (viewportWidth >= minWidth && responsivePlacements[breakpoint]) {\n      activePlacement = responsivePlacements[breakpoint]\n    }\n  }\n\n  return activePlacement\n}\n\n/**\n * Create media query listeners for responsive placement changes\n *\n * @param {Function} callback - Callback to run when breakpoint changes\n * @returns {Array} - Array of { mql, handler } objects for cleanup\n */\nexport const createBreakpointListeners = callback => {\n  const listeners = []\n\n  for (const breakpoint of Object.keys(BREAKPOINTS)) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    const mql = window.matchMedia(`(min-width: ${minWidth}px)`)\n\n    mql.addEventListener('change', callback)\n    listeners.push({ mql, handler: callback })\n  }\n\n  return listeners\n}\n\n/**\n * Clean up media query listeners\n *\n * @param {Array} listeners - Array of { mql, handler } objects\n */\nexport const disposeBreakpointListeners = listeners => {\n  for (const { mql, handler } of listeners) {\n    mql.removeEventListener('change', handler)\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\nconst RIGHT_MOUSE_BUTTON = 2\n\n// Hover intent delay (ms) - grace period before closing submenu\nconst SUBMENU_CLOSE_DELAY = 100\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_SUBMENU = '.dropdown-submenu'\nconst SELECTOR_SUBMENU_TOGGLE = '.dropdown-submenu > .dropdown-item'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-item:not(.disabled):not(:disabled)'\n\n// Default logical placement (uses start/end which get resolved to left/right based on RTL)\nconst DEFAULT_PLACEMENT = 'bottom-start'\nconst SUBMENU_PLACEMENT = 'end-start'\n\n// Resolve logical placement (start/end) to physical (left/right) based on RTL\nconst resolveLogicalPlacement = placement => {\n  if (isRTL()) {\n    // RTL: start → right, end → left\n    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left')\n  }\n\n  // LTR: start → left, end → right\n  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right')\n}\n\n// Helper for barycentric coordinate calculation (point in triangle check)\nconst triangleSign = (p1, p2, p3) =>\n  ((p1.x - p3.x) * (p2.y - p3.y)) - ((p2.x - p3.x) * (p1.y - p3.y))\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  container: false,\n  display: 'dynamic',\n  offset: [0, 2],\n  floatingConfig: null,\n  placement: DEFAULT_PLACEMENT,\n  reference: 'toggle',\n  strategy: 'absolute',\n  // Submenu options\n  submenuTrigger: 'both', // 'click', 'hover', or 'both'\n  submenuDelay: SUBMENU_CLOSE_DELAY\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  display: 'string',\n  offset: '(array|string|function)',\n  floatingConfig: '(null|object|function)',\n  placement: 'string',\n  reference: '(string|element|object)',\n  strategy: 'string',\n  submenuTrigger: 'string',\n  submenuDelay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s dropdowns require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    this._floatingCleanup = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n    this._parent = this._element.parentNode // dropdown wrapper\n    this._isSubmenu = this._parent.classList.contains('dropdown-submenu')\n    this._openSubmenus = new Map() // Map of submenu element -> cleanup function\n    this._submenuCloseTimeouts = new Map() // Map of submenu element -> timeout ID\n    this._hoverIntentData = null // For safe triangle calculation\n\n    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n    this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n\n    // Store original menu parent for container option\n    this._menuOriginalParent = this._menu?.parentNode\n\n    // Parse responsive placements on init\n    this._parseResponsivePlacements()\n\n    // Set up submenu event listeners\n    this._setupSubmenuListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    // Move menu to container if specified (to escape overflow clipping)\n    this._moveMenuToContainer()\n\n    this._createFloating()\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', 'true')\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    this._parent.classList.add(CLASS_NAME_SHOW)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n    this._disposeMediaQueryListeners()\n    this._closeAllSubmenus()\n    this._clearAllSubmenuTimeouts()\n    super.dispose()\n  }\n\n  update() {\n    if (this._floatingCleanup) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Private\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    // Close all open submenus first\n    this._closeAllSubmenus()\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._disposeFloating()\n\n    // Restore menu to original parent if it was moved\n    this._restoreMenuToOriginalParent()\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._parent.classList.remove(CLASS_NAME_SHOW)\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'placement')\n    Manipulator.removeDataAttribute(this._menu, 'display')\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      // Floating UI virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createFloating() {\n    if (this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'display', 'static')\n      return\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    // Initial position update\n    this._updateFloatingPosition(referenceElement)\n\n    // Set up auto-update for scroll/resize\n    this._floatingCleanup = autoUpdate(\n      referenceElement,\n      this._menu,\n      () => this._updateFloatingPosition(referenceElement)\n    )\n  }\n\n  async _updateFloatingPosition(referenceElement = null) {\n    if (!this._menu) {\n      return\n    }\n\n    if (!referenceElement) {\n      if (this._config.reference === 'parent') {\n        referenceElement = this._parent\n      } else if (isElement(this._config.reference)) {\n        referenceElement = getElement(this._config.reference)\n      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference\n      } else {\n        referenceElement = this._element\n      }\n    }\n\n    const placement = this._getPlacement()\n    const middleware = this._getFloatingMiddleware()\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    await this._applyFloatingPosition(\n      referenceElement,\n      this._menu,\n      floatingConfig.placement,\n      floatingConfig.middleware,\n      floatingConfig.strategy\n    )\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    // If we have responsive placements, find the appropriate one for current viewport\n    const placement = this._responsivePlacements ?\n      getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) :\n      this._config.placement\n\n    // Resolve logical placements (start/end) to physical (left/right) based on RTL\n    return resolveLogicalPlacement(placement)\n  }\n\n  _parseResponsivePlacements() {\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT)\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  _getOffset() {\n    const { offset: offsetConfig } = this._config\n\n    if (typeof offsetConfig === 'string') {\n      return offsetConfig.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offsetConfig === 'function') {\n      // Floating UI passes different args, adapt the interface for offset function callbacks\n      return ({ placement, rects }) => {\n        const result = offsetConfig({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offsetConfig\n  }\n\n  _getFloatingMiddleware() {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      // Offset middleware - handles distance from reference\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      // Flip middleware - handles fallback placements\n      flip({\n        fallbackPlacements: this._getFallbackPlacements()\n      }),\n      // Shift middleware - prevents overflow\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    return middleware\n  }\n\n  _getFallbackPlacements() {\n    // Get appropriate fallback placements based on current placement\n    // Fallbacks should preserve alignment (start/end) when possible\n    const placement = this._getPlacement()\n\n    // Handle all possible Floating UI placements\n    const fallbackMap = {\n      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\n      'bottom-start': ['top-start', 'bottom-end', 'top-end'],\n      'bottom-end': ['top-end', 'bottom-start', 'top-start'],\n      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],\n      'top-start': ['bottom-start', 'top-end', 'bottom-end'],\n      'top-end': ['bottom-end', 'top-start', 'bottom-start'],\n      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],\n      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],\n      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],\n      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],\n      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],\n      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']\n    }\n\n    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left']\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware,\n      strategy: this._config.strategy\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n  }\n\n  _getContainer() {\n    const { container } = this._config\n    if (container === false) {\n      return null\n    }\n\n    return container === true ? document.body : getElement(container)\n  }\n\n  _moveMenuToContainer() {\n    const container = this._getContainer()\n    if (!container || !this._menu) {\n      return\n    }\n\n    // Only move if not already in the container\n    if (this._menu.parentNode !== container) {\n      container.append(this._menu)\n    }\n  }\n\n  _restoreMenuToOriginalParent() {\n    if (!this._menuOriginalParent || !this._menu) {\n      return\n    }\n\n    // Only restore if menu was moved\n    if (this._menu.parentNode !== this._menuOriginalParent) {\n      this._menuOriginalParent.append(this._menu)\n    }\n  }\n\n  // Shared helper for positioning any floating element\n  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {\n    if (!floating.isConnected) {\n      return null\n    }\n\n    const { x, y, placement: finalPlacement } = await computePosition(\n      reference,\n      floating,\n      { placement, middleware, strategy }\n    )\n\n    if (!floating.isConnected) {\n      return null\n    }\n\n    Object.assign(floating.style, {\n      position: strategy,\n      left: `${x}px`,\n      top: `${y}px`,\n      margin: '0'\n    })\n\n    Manipulator.setDataAttribute(floating, 'placement', finalPlacement)\n    return finalPlacement\n  }\n\n  // -------------------------------------------------------------------------\n  // Submenu handling\n  // -------------------------------------------------------------------------\n\n  _setupSubmenuListeners() {\n    // Set up hover listeners for submenu triggers\n    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerEnter(event)\n      })\n\n      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {\n        this._onSubmenuLeave(event)\n      })\n\n      // Track mouse movement for safe triangle calculation\n      EventHandler.on(this._menu, 'mousemove', event => {\n        this._trackMousePosition(event)\n      })\n    }\n\n    // Set up click listener for submenu triggers\n    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerClick(event)\n      })\n    }\n  }\n\n  _onSubmenuTriggerEnter(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    // Cancel any pending close timeout for this submenu\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    // Close other open submenus at the same level\n    this._closeSiblingSubmenus(submenuWrapper)\n\n    // Open this submenu\n    this._openSubmenu(trigger, submenu, submenuWrapper)\n  }\n\n  _onSubmenuLeave(event) {\n    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu || !this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    // Check if we're moving toward the submenu (safe triangle)\n    if (this._isMovingTowardSubmenu(event, submenu)) {\n      return\n    }\n\n    // Schedule submenu close with delay\n    this._scheduleSubmenuClose(submenu, submenuWrapper)\n  }\n\n  _onSubmenuTriggerClick(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    // Toggle submenu\n    if (this._openSubmenus.has(submenu)) {\n      this._closeSubmenu(submenu, submenuWrapper)\n    } else {\n      this._closeSiblingSubmenus(submenuWrapper)\n      this._openSubmenu(trigger, submenu, submenuWrapper)\n    }\n  }\n\n  _openSubmenu(trigger, submenu, submenuWrapper) {\n    if (this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    // Set ARIA attributes\n    trigger.setAttribute('aria-expanded', 'true')\n    trigger.setAttribute('aria-haspopup', 'true')\n\n    // Position and show submenu\n    submenu.classList.add(CLASS_NAME_SHOW)\n    submenuWrapper.classList.add(CLASS_NAME_SHOW)\n\n    // Set up Floating UI positioning for submenu\n    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper)\n    this._openSubmenus.set(submenu, cleanup)\n\n    // Set up mouseenter on submenu to cancel close timeout\n    EventHandler.on(submenu, 'mouseenter', () => {\n      this._cancelSubmenuCloseTimeout(submenu)\n    })\n  }\n\n  _closeSubmenu(submenu, submenuWrapper) {\n    if (!this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    // Close any nested submenus first\n    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, submenu)\n    for (const nested of nestedSubmenus) {\n      const nestedWrapper = nested.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(nested, nestedWrapper)\n    }\n\n    // Get the trigger\n    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper)\n\n    // Clean up Floating UI\n    const cleanup = this._openSubmenus.get(submenu)\n    if (cleanup) {\n      cleanup()\n    }\n\n    this._openSubmenus.delete(submenu)\n\n    // Remove event listeners\n    EventHandler.off(submenu, 'mouseenter')\n\n    // Update ARIA and visibility\n    if (trigger) {\n      trigger.setAttribute('aria-expanded', 'false')\n    }\n\n    submenu.classList.remove(CLASS_NAME_SHOW)\n    submenuWrapper.classList.remove(CLASS_NAME_SHOW)\n\n    // Clear inline styles\n    submenu.style.position = ''\n    submenu.style.left = ''\n    submenu.style.top = ''\n    submenu.style.margin = ''\n  }\n\n  _closeAllSubmenus() {\n    for (const [submenu] of this._openSubmenus) {\n      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(submenu, submenuWrapper)\n    }\n  }\n\n  _closeSiblingSubmenus(currentSubmenuWrapper) {\n    // Find all sibling submenu wrappers and close their menus\n    const parent = currentSubmenuWrapper.parentNode\n    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, parent)\n\n    for (const siblingMenu of siblingSubmenus) {\n      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU)\n      if (siblingWrapper !== currentSubmenuWrapper) {\n        this._closeSubmenu(siblingMenu, siblingWrapper)\n      }\n    }\n  }\n\n  _createSubmenuFloating(trigger, submenu, submenuWrapper) {\n    const referenceElement = submenuWrapper\n    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT)\n    const middleware = [\n      offset({ mainAxis: 0, crossAxis: -4 }),\n      flip({\n        fallbackPlacements: [\n          resolveLogicalPlacement('start-start'),\n          resolveLogicalPlacement('end-end'),\n          resolveLogicalPlacement('start-end')\n        ]\n      }),\n      shift({ padding: 8 })\n    ]\n\n    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware)\n\n    updatePosition()\n    return autoUpdate(referenceElement, submenu, updatePosition)\n  }\n\n  _scheduleSubmenuClose(submenu, submenuWrapper) {\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    const timeoutId = setTimeout(() => {\n      this._closeSubmenu(submenu, submenuWrapper)\n      this._submenuCloseTimeouts.delete(submenu)\n    }, this._config.submenuDelay)\n\n    this._submenuCloseTimeouts.set(submenu, timeoutId)\n  }\n\n  _cancelSubmenuCloseTimeout(submenu) {\n    const timeoutId = this._submenuCloseTimeouts.get(submenu)\n    if (timeoutId) {\n      clearTimeout(timeoutId)\n      this._submenuCloseTimeouts.delete(submenu)\n    }\n  }\n\n  _clearAllSubmenuTimeouts() {\n    for (const timeoutId of this._submenuCloseTimeouts.values()) {\n      clearTimeout(timeoutId)\n    }\n\n    this._submenuCloseTimeouts.clear()\n  }\n\n  // -------------------------------------------------------------------------\n  // Hover intent / Safe triangle\n  // -------------------------------------------------------------------------\n\n  _trackMousePosition(event) {\n    this._hoverIntentData = {\n      x: event.clientX,\n      y: event.clientY,\n      timestamp: Date.now()\n    }\n  }\n\n  _isMovingTowardSubmenu(event, submenu) {\n    if (!this._hoverIntentData) {\n      return false\n    }\n\n    const submenuRect = submenu.getBoundingClientRect()\n    const currentPos = { x: event.clientX, y: event.clientY }\n    const lastPos = { x: this._hoverIntentData.x, y: this._hoverIntentData.y }\n\n    // Create a triangle from current position to submenu edges\n    // The triangle represents the \"safe zone\" for diagonal movement\n    const isRtl = isRTL()\n\n    // Determine which edge of the submenu to target based on direction\n    const targetX = isRtl ? submenuRect.right : submenuRect.left\n    const topCorner = { x: targetX, y: submenuRect.top }\n    const bottomCorner = { x: targetX, y: submenuRect.bottom }\n\n    // Check if cursor is moving toward the submenu\n    // by checking if the current position is within the safe triangle\n    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner)\n  }\n\n  _pointInTriangle(point, v1, v2, v3) {\n    // Barycentric coordinate method to check if point is inside triangle\n    const d1 = triangleSign(point, v1, v2)\n    const d2 = triangleSign(point, v2, v3)\n    const d3 = triangleSign(point, v3, v1)\n\n    const hasNeg = (d1 < 0) || (d2 < 0) || (d3 < 0)\n    const hasPos = (d1 > 0) || (d2 > 0) || (d3 > 0)\n\n    return !(hasNeg && hasPos)\n  }\n\n  // -------------------------------------------------------------------------\n  // Keyboard navigation\n  // -------------------------------------------------------------------------\n\n  _selectMenuItem({ key, target }) {\n    // Get items only from the current menu level (not nested submenus)\n    // If target is inside a menu, use that menu; otherwise use the main menu\n    const currentMenu = target.closest(SELECTOR_MENU) || this._menu\n    const items = SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n      .filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  _handleSubmenuKeydown(event) {\n    const { key, target } = event\n    const isRtl = isRTL()\n\n    // Determine the \"enter submenu\" and \"exit submenu\" keys based on RTL\n    const enterKey = isRtl ? ARROW_LEFT_KEY : ARROW_RIGHT_KEY\n    const exitKey = isRtl ? ARROW_RIGHT_KEY : ARROW_LEFT_KEY\n\n    // Check if target is a submenu trigger\n    const submenuWrapper = target.closest(SELECTOR_SUBMENU)\n    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    // Handle Enter/Space on submenu trigger\n    if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        // Focus first item in submenu\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    // Handle Right arrow (or Left in RTL) - enter submenu\n    if (key === enterKey && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        // Focus first item in submenu\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    // Handle Left arrow (or Right in RTL) - exit submenu\n    if (key === exitKey) {\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper) {\n        event.preventDefault()\n        event.stopPropagation()\n\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        this._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return true\n      }\n    }\n\n    // Handle Home/End keys\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const items = SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n        .filter(element => isVisible(element))\n\n      if (items.length) {\n        const targetItem = key === HOME_KEY ? items[0] : items[items.length - 1]\n        targetItem.focus()\n      }\n\n      return true\n    }\n\n    return false\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n    for (const toggle of openToggles) {\n      const context = Dropdown.getInstance(toggle)\n      if (!context || context._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(context._menu)\n      if (\n        composedPath.includes(context._element) ||\n        (context._config.autoClose === 'inside' && !isMenuTarget) ||\n        (context._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n      if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: context._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      context._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    // If not a relevant key => not a dropdown command\n    const isInput = /input|textarea/i.test(event.target.tagName)\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n    const isLeftOrRightEvent = [ARROW_LEFT_KEY, ARROW_RIGHT_KEY].includes(event.key)\n    const isHomeOrEndEvent = [HOME_KEY, END_KEY].includes(event.key)\n    const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key)\n\n    // Allow Enter/Space only on submenu triggers\n    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent &&\n        !(isEnterOrSpaceEvent && isSubmenuTrigger)) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    if (!getToggleButton) {\n      return\n    }\n\n    const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n    // Handle submenu navigation first\n    if ((isLeftOrRightEvent || isHomeOrEndEvent || (isEnterOrSpaceEvent && isSubmenuTrigger)) && instance._handleSubmenuKeydown(event)) {\n      return\n    }\n\n    // Handle Up/Down navigation\n    if (isUpOrDownEvent) {\n      event.preventDefault()\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    // Handle Escape\n    if (isEscapeEvent && instance._isShown()) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      // If in a submenu, close just that submenu\n      const currentMenu = event.target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        instance._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return\n      }\n\n      // Otherwise close the whole dropdown\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Dropdown.getOrCreateInstance(this).toggle()\n})\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap nav-overflow.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'navoverflow'\nconst DATA_KEY = 'bs.navoverflow'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_UPDATE = `update${EVENT_KEY}`\nconst EVENT_OVERFLOW = `overflow${EVENT_KEY}`\n\nconst CLASS_NAME_OVERFLOW = 'nav-overflow'\nconst CLASS_NAME_OVERFLOW_MENU = 'nav-overflow-menu'\nconst CLASS_NAME_HIDDEN = 'd-none'\n\nconst SELECTOR_NAV_ITEM = '.nav-item'\nconst SELECTOR_NAV_LINK = '.nav-link'\nconst SELECTOR_OVERFLOW_TOGGLE = '.nav-overflow-toggle'\nconst SELECTOR_OVERFLOW_MENU = '.nav-overflow-menu'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  moreText: 'More',\n  moreIcon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\"><path d=\"M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3\"/></svg>',\n  threshold: 0 // Minimum items to keep visible before showing overflow\n}\n\nconst DefaultType = {\n  moreText: 'string',\n  moreIcon: 'string',\n  threshold: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass NavOverflow extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._items = []\n    this._overflowItems = []\n    this._overflowMenu = null\n    this._overflowToggle = null\n    this._resizeObserver = null\n    this._isInitialized = false\n\n    this._init()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._calculateOverflow()\n    EventHandler.trigger(this._element, EVENT_UPDATE)\n  }\n\n  dispose() {\n    if (this._resizeObserver) {\n      this._resizeObserver.disconnect()\n    }\n\n    // Move items back to original positions\n    this._restoreItems()\n\n    // Remove overflow menu\n    if (this._overflowToggle && this._overflowToggle.parentElement) {\n      this._overflowToggle.parentElement.remove()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _init() {\n    // Add overflow class to nav\n    this._element.classList.add(CLASS_NAME_OVERFLOW)\n\n    // Get all nav items\n    this._items = [...SelectorEngine.find(SELECTOR_NAV_ITEM, this._element)]\n\n    // Store original order data\n    for (const [index, item] of this._items.entries()) {\n      item.dataset.bsNavOrder = index\n    }\n\n    // Create overflow dropdown if it doesn't exist\n    this._createOverflowMenu()\n\n    // Setup resize observer\n    this._setupResizeObserver()\n\n    // Initial calculation\n    this._calculateOverflow()\n\n    this._isInitialized = true\n  }\n\n  _createOverflowMenu() {\n    // Check if overflow menu already exists\n    this._overflowToggle = SelectorEngine.findOne(SELECTOR_OVERFLOW_TOGGLE, this._element)\n\n    if (this._overflowToggle) {\n      this._overflowMenu = SelectorEngine.findOne(SELECTOR_OVERFLOW_MENU, this._element)\n      return\n    }\n\n    // Create the overflow dropdown item\n    const overflowItem = document.createElement('li')\n    overflowItem.className = 'nav-item nav-overflow-item dropdown'\n    overflowItem.innerHTML = `\n      <button class=\"nav-link nav-overflow-toggle dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" data-bs-container=\"body\" data-bs-strategy=\"fixed\" aria-expanded=\"false\">\n        <span class=\"nav-overflow-icon\">${this._config.moreIcon}</span>\n        <span class=\"nav-overflow-text\">${this._config.moreText}</span>\n      </button>\n      <ul class=\"${CLASS_NAME_OVERFLOW_MENU} dropdown-menu dropdown-menu-end\"></ul>\n    `\n\n    this._element.append(overflowItem)\n    this._overflowToggle = overflowItem.querySelector(SELECTOR_OVERFLOW_TOGGLE)\n    this._overflowMenu = overflowItem.querySelector(SELECTOR_OVERFLOW_MENU)\n  }\n\n  _setupResizeObserver() {\n    if (typeof ResizeObserver === 'undefined') {\n      // Fallback for older browsers\n      EventHandler.on(window, 'resize', () => this._calculateOverflow())\n      return\n    }\n\n    this._resizeObserver = new ResizeObserver(() => {\n      this._calculateOverflow()\n    })\n\n    this._resizeObserver.observe(this._element)\n  }\n\n  _calculateOverflow() {\n    // First, restore all items to measure properly\n    this._restoreItems()\n\n    const navWidth = this._element.offsetWidth\n    const overflowItem = this._overflowToggle?.closest('.nav-item')\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      const itemWidth = item.offsetWidth\n      usedWidth += itemWidth\n\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      if (usedWidth > overflowThreshold) {\n        itemsToOverflow.push(item)\n      }\n    }\n\n    // Check if we need threshold minimum visible\n    const visibleCount = this._items.length - itemsToOverflow.length\n    if (visibleCount < this._config.threshold && this._items.length > this._config.threshold) {\n      // Add more items to overflow until we reach threshold (but not keep items)\n      const toMove = this._items.slice(this._config.threshold).filter(item => !item.classList.contains(CLASS_NAME_KEEP))\n      itemsToOverflow.length = 0\n      itemsToOverflow.push(...toMove)\n    }\n\n    // Move items to overflow menu\n    this._moveToOverflow(itemsToOverflow)\n\n    // Show/hide overflow toggle\n    if (overflowItem) {\n      if (itemsToOverflow.length > 0) {\n        overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n      } else {\n        overflowItem.classList.add(CLASS_NAME_HIDDEN)\n      }\n    }\n\n    // Trigger overflow event if items changed\n    if (itemsToOverflow.length > 0) {\n      EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n        overflowCount: itemsToOverflow.length,\n        visibleCount: this._items.length - itemsToOverflow.length\n      })\n    }\n  }\n\n  _moveToOverflow(items) {\n    if (!this._overflowMenu) {\n      return\n    }\n\n    // Clear existing overflow items\n    this._overflowMenu.innerHTML = ''\n    this._overflowItems = []\n\n    for (const item of items) {\n      // Clone the nav link as a dropdown item\n      const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item)\n      if (!link) {\n        continue\n      }\n\n      const dropdownItem = document.createElement('li')\n      const clonedLink = link.cloneNode(true)\n      clonedLink.className = 'dropdown-item'\n\n      // Preserve active state\n      if (link.classList.contains('active')) {\n        clonedLink.classList.add('active')\n      }\n\n      // Preserve disabled state\n      if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {\n        clonedLink.classList.add('disabled')\n      }\n\n      dropdownItem.append(clonedLink)\n      this._overflowMenu.append(dropdownItem)\n\n      // Hide original item\n      item.classList.add(CLASS_NAME_HIDDEN)\n      item.dataset.bsNavOverflow = 'true'\n\n      this._overflowItems.push(item)\n    }\n  }\n\n  _restoreItems() {\n    for (const item of this._items) {\n      item.classList.remove(CLASS_NAME_HIDDEN)\n      delete item.dataset.bsNavOverflow\n    }\n\n    if (this._overflowMenu) {\n      this._overflowMenu.innerHTML = ''\n    }\n\n    this._overflowItems = []\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const element of SelectorEngine.find('[data-bs-toggle=\"nav-overflow\"]')) {\n    NavOverflow.getOrCreateInstance(element)\n  }\n})\n\nexport default NavOverflow\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport {\n  execute, executeAfterTransition, getElement, reflow\n} from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n  className: 'modal-backdrop',\n  clickCallback: null,\n  isAnimated: false,\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n  className: 'string',\n  clickCallback: '(function|null)',\n  isAnimated: 'boolean',\n  isVisible: 'boolean',\n  rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    const element = this._getElement()\n    if (this._config.isAnimated) {\n      reflow(element)\n    }\n\n    element.classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  // Private\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = this._config.className\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _configAfterMerge(config) {\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    const element = this._getElement()\n    this._config.rootElement.append(element)\n\n    EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n  autofocus: true,\n  trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n  autofocus: 'boolean',\n  trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isActive = false\n    this._lastTabNavDirection = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  activate() {\n    if (this._isActive) {\n      return\n    }\n\n    if (this._config.autofocus) {\n      this._config.trapElement.focus()\n    }\n\n    EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n    this._isActive = true\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return\n    }\n\n    this._isActive = false\n    EventHandler.off(document, EVENT_KEY)\n  }\n\n  // Private\n  _handleFocusin(event) {\n    const { trapElement } = this._config\n\n    if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n      return\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement)\n\n    if (elements.length === 0) {\n      trapElement.focus()\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus()\n    } else {\n      elements[0].focus()\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n  }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  // Public\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n\n  // Private\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProperty, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProperty)\n      const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n      element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _saveInitialAttribute(element, styleProperty) {\n    const actualValue = element.style.getPropertyValue(styleProperty)\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProperty, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProperty) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProperty)\n      // We only want to remove the property if the value is `null`; the value can also be zero\n      if (value === null) {\n        element.style.removeProperty(styleProperty)\n        return\n      }\n\n      Manipulator.removeDataAttribute(element, styleProperty)\n      element.style.setProperty(styleProperty, value)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n      return\n    }\n\n    for (const sel of SelectorEngine.find(selector, this._element)) {\n      callBack(sel)\n    }\n  }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n  isDisabled,\n  isVisible\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n    }\n\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    const completeCallBack = () => {\n      if (!this._config.scroll || this._config.backdrop) {\n        this._focustrap.activate()\n      }\n\n      this._element.classList.add(CLASS_NAME_SHOW)\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._focustrap.deactivate()\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.add(CLASS_NAME_HIDING)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  // Private\n  _initializeBackDrop() {\n    const clickCallback = () => {\n      if (this._config.backdrop === 'static') {\n        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n        return\n      }\n\n      this.hide()\n    }\n\n    // 'static' option will be translated to true, and booleans will keep their value\n    const isVisible = Boolean(this._config.backdrop)\n\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: isVisible ? clickCallback : null\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (event.key !== ESCAPE_KEY) {\n        return\n      }\n\n      if (this._config.keyboard) {\n        this.hide()\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (alreadyOpen && alreadyOpen !== target) {\n    Offcanvas.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n    Offcanvas.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Offcanvas.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap strength.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'strength'\nconst DATA_KEY = 'bs.strength'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_STRENGTH_CHANGE = `strengthChange${EVENT_KEY}`\n\nconst SELECTOR_DATA_STRENGTH = '[data-bs-strength]'\n\nconst STRENGTH_LEVELS = ['weak', 'fair', 'good', 'strong']\n\nconst Default = {\n  input: null, // Selector or element for password input\n  minLength: 8,\n  messages: {\n    weak: 'Weak',\n    fair: 'Fair',\n    good: 'Good',\n    strong: 'Strong'\n  },\n  weights: {\n    minLength: 1,\n    extraLength: 1,\n    lowercase: 1,\n    uppercase: 1,\n    numbers: 1,\n    special: 1,\n    multipleSpecial: 1,\n    longPassword: 1\n  },\n  thresholds: [2, 4, 6], // weak ≤2, fair ≤4, good ≤6, strong >6\n  scorer: null // Custom scoring function (password) => number\n}\n\nconst DefaultType = {\n  input: '(string|element|null)',\n  minLength: 'number',\n  messages: 'object',\n  weights: 'object',\n  thresholds: 'array',\n  scorer: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Strength extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = this._getInput()\n    this._segments = SelectorEngine.find('.strength-segment', this._element)\n    this._textElement = SelectorEngine.findOne('.strength-text', this._element.parentElement)\n    this._currentStrength = null\n\n    if (this._input) {\n      this._addEventListeners()\n      // Check initial value\n      this._evaluate()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getStrength() {\n    return this._currentStrength\n  }\n\n  evaluate() {\n    this._evaluate()\n  }\n\n  // Private\n  _getInput() {\n    if (this._config.input) {\n      return typeof this._config.input === 'string' ?\n        SelectorEngine.findOne(this._config.input) :\n        this._config.input\n    }\n\n    // Look for preceding password input\n    const parent = this._element.parentElement\n    return SelectorEngine.findOne('input[type=\"password\"]', parent)\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, 'input', () => this._evaluate())\n    EventHandler.on(this._input, 'change', () => this._evaluate())\n  }\n\n  _evaluate() {\n    const password = this._input.value\n    const score = this._calculateScore(password)\n    const strength = this._scoreToStrength(score)\n\n    if (strength !== this._currentStrength) {\n      this._currentStrength = strength\n      this._updateUI(strength, score)\n\n      EventHandler.trigger(this._element, EVENT_STRENGTH_CHANGE, {\n        strength,\n        score,\n        password: password.length > 0 ? '***' : '' // Don't expose actual password\n      })\n    }\n  }\n\n  _calculateScore(password) {\n    if (!password) {\n      return 0\n    }\n\n    // Use custom scorer if provided\n    if (typeof this._config.scorer === 'function') {\n      return this._config.scorer(password)\n    }\n\n    const { weights } = this._config\n    let score = 0\n\n    // Length scoring\n    if (password.length >= this._config.minLength) {\n      score += weights.minLength\n    }\n\n    if (password.length >= this._config.minLength + 4) {\n      score += weights.extraLength\n    }\n\n    // Character variety\n    if (/[a-z]/.test(password)) {\n      score += weights.lowercase\n    }\n\n    if (/[A-Z]/.test(password)) {\n      score += weights.uppercase\n    }\n\n    if (/\\d/.test(password)) {\n      score += weights.numbers\n    }\n\n    // Special characters\n    if (/[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.special\n    }\n\n    // Extra points for more special chars or length\n    if (/[!@#$%^&*(),.?\":{}|<>].*[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.multipleSpecial\n    }\n\n    if (password.length >= 16) {\n      score += weights.longPassword\n    }\n\n    return score\n  }\n\n  _scoreToStrength(score) {\n    if (score === 0) {\n      return null\n    }\n\n    const [weak, fair, good] = this._config.thresholds\n\n    if (score <= weak) {\n      return 'weak'\n    }\n\n    if (score <= fair) {\n      return 'fair'\n    }\n\n    if (score <= good) {\n      return 'good'\n    }\n\n    return 'strong'\n  }\n\n  _updateUI(strength) {\n    // Update data attribute on element\n    if (strength) {\n      this._element.dataset.bsStrength = strength\n    } else {\n      delete this._element.dataset.bsStrength\n    }\n\n    // Update segmented meter\n    const strengthIndex = strength ? STRENGTH_LEVELS.indexOf(strength) : -1\n\n    for (const [index, segment] of this._segments.entries()) {\n      if (index <= strengthIndex) {\n        segment.classList.add('active')\n      } else {\n        segment.classList.remove('active')\n      }\n    }\n\n    // Update text feedback\n    if (this._textElement) {\n      if (strength && this._config.messages[strength]) {\n        this._textElement.textContent = this._config.messages[strength]\n        this._textElement.dataset.bsStrength = strength\n\n        // Also set the color via inheriting from parent or using CSS variable\n        const colorMap = {\n          weak: 'danger',\n          fair: 'warning',\n          good: 'info',\n          strong: 'success'\n        }\n        this._textElement.style.setProperty('--strength-color', `var(--${colorMap[strength]}-text)`)\n      } else {\n        this._textElement.textContent = ''\n        delete this._textElement.dataset.bsStrength\n      }\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_STRENGTH)) {\n    Strength.getOrCreateInstance(element)\n  }\n})\n\nexport default Strength\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap otp-input.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'otpInput'\nconst DATA_KEY = 'bs.otp-input'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\nconst Default = {\n  length: 6,\n  mask: false\n}\n\nconst DefaultType = {\n  length: 'number',\n  mask: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._inputs = SelectorEngine.find(SELECTOR_INPUT, this._element)\n    this._setupInputs()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getValue() {\n    return this._inputs.map(input => input.value).join('')\n  }\n\n  setValue(value) {\n    const chars = String(value).split('')\n    for (const [index, input] of this._inputs.entries()) {\n      input.value = chars[index] || ''\n    }\n\n    this._checkComplete()\n  }\n\n  clear() {\n    for (const input of this._inputs) {\n      input.value = ''\n    }\n\n    this._inputs[0]?.focus()\n  }\n\n  focus() {\n    // Focus first empty input, or last input if all filled\n    const emptyInput = this._inputs.find(input => !input.value)\n    if (emptyInput) {\n      emptyInput.focus()\n    } else {\n      this._inputs.at(-1)?.focus()\n    }\n  }\n\n  // Private\n  _setupInputs() {\n    for (const input of this._inputs) {\n      // Set attributes for proper OTP handling\n      input.setAttribute('maxlength', '1')\n      input.setAttribute('inputmode', 'numeric')\n      input.setAttribute('pattern', '\\\\d*')\n\n      // First input gets autocomplete for browser OTP autofill\n      if (input === this._inputs[0]) {\n        input.setAttribute('autocomplete', 'one-time-code')\n      } else {\n        input.setAttribute('autocomplete', 'off')\n      }\n\n      // Mask input if configured\n      if (this._config.mask) {\n        input.setAttribute('type', 'password')\n      }\n    }\n  }\n\n  _addEventListeners() {\n    for (const [index, input] of this._inputs.entries()) {\n      EventHandler.on(input, 'input', event => this._handleInput(event, index))\n      EventHandler.on(input, 'keydown', event => this._handleKeydown(event, index))\n      EventHandler.on(input, 'paste', event => this._handlePaste(event))\n      EventHandler.on(input, 'focus', event => this._handleFocus(event))\n    }\n  }\n\n  _handleInput(event, index) {\n    const input = event.target\n\n    // Only allow digits\n    if (!/^\\d*$/.test(input.value)) {\n      input.value = input.value.replace(/\\D/g, '')\n    }\n\n    const { value } = input\n\n    // Handle multi-character input (some browsers/autofill)\n    if (value.length > 1) {\n      // Distribute characters across inputs\n      const chars = value.split('')\n      input.value = chars[0] || ''\n\n      for (let i = 1; i < chars.length && index + i < this._inputs.length; i++) {\n        this._inputs[index + i].value = chars[i]\n      }\n\n      // Focus appropriate input\n      const nextIndex = Math.min(index + chars.length, this._inputs.length - 1)\n      this._inputs[nextIndex].focus()\n    } else if (value && index < this._inputs.length - 1) {\n      // Auto-advance to next input\n      this._inputs[index + 1].focus()\n    }\n\n    EventHandler.trigger(this._element, EVENT_INPUT, {\n      value: this.getValue(),\n      index\n    })\n\n    this._checkComplete()\n  }\n\n  _handleKeydown(event, index) {\n    const { key } = event\n\n    switch (key) {\n      case 'Backspace': {\n        if (!this._inputs[index].value && index > 0) {\n          // Move to previous input and clear it\n          event.preventDefault()\n          this._inputs[index - 1].value = ''\n          this._inputs[index - 1].focus()\n        }\n\n        break\n      }\n\n      case 'Delete': {\n        // Clear current and shift remaining values left\n        event.preventDefault()\n        for (let i = index; i < this._inputs.length - 1; i++) {\n          this._inputs[i].value = this._inputs[i + 1].value\n        }\n\n        this._inputs.at(-1).value = ''\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (index > 0) {\n          event.preventDefault()\n          this._inputs[index - 1].focus()\n        }\n\n        break\n      }\n\n      case 'ArrowRight': {\n        if (index < this._inputs.length - 1) {\n          event.preventDefault()\n          this._inputs[index + 1].focus()\n        }\n\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handlePaste(event) {\n    event.preventDefault()\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    const digits = pastedData.replace(/\\D/g, '').slice(0, this._inputs.length)\n\n    if (digits) {\n      this.setValue(digits)\n\n      // Focus last filled input or last input\n      const lastIndex = Math.min(digits.length, this._inputs.length) - 1\n      this._inputs[lastIndex].focus()\n    }\n  }\n\n  _handleFocus(event) {\n    // Select the content on focus for easy replacement\n    event.target.select()\n  }\n\n  _checkComplete() {\n    const value = this.getValue()\n    const isComplete = value.length === this._inputs.length &&\n      this._inputs.every(input => input.value !== '')\n\n    if (isComplete) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  dd: [],\n  div: [],\n  dl: [],\n  dt: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n      continue\n    }\n\n    const attributeList = [].concat(...element.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [undefined, this])\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  arrow,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport {\n  execute, findShadowRoot, getElement, getUID, isRTL, noop\n} from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tooltip\"]'\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 6],\n  placement: 'top',\n  floatingConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  floatingConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._floatingCleanup = null\n    this._templateFactory = null\n    this._newContent = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n\n    // Protected\n    this.tip = null\n\n    this._parseResponsivePlacements()\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposeFloating()\n    this._disposeMediaQueryListeners()\n    super.dispose()\n  }\n\n  async show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    this._disposeFloating()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    const { container } = this._config\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    await this._createFloating(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposeFloating()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._floatingCleanup && this.tip) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle())\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposeFloating()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement(tip) {\n    // If we have responsive placements, get the one for current viewport\n    if (this._responsivePlacements) {\n      const placement = getResponsivePlacement(this._responsivePlacements, 'top')\n      return AttachmentMap[placement.toUpperCase()] || placement\n    }\n\n    // Execute placement (can be a function)\n    const placement = execute(this._config.placement, [this, tip, this._element])\n    return AttachmentMap[placement.toUpperCase()] || placement\n  }\n\n  _parseResponsivePlacements() {\n    // Only parse if placement is a string (not a function)\n    if (typeof this._config.placement !== 'string') {\n      this._responsivePlacements = null\n      return\n    }\n\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, 'top')\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  async _createFloating(tip) {\n    const placement = this._getPlacement(tip)\n    const arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n\n    // Initial position update\n    await this._updateFloatingPosition(tip, placement, arrowElement)\n\n    // Set up auto-update for scroll/resize\n    this._floatingCleanup = autoUpdate(\n      this._element,\n      tip,\n      () => this._updateFloatingPosition(tip, null, arrowElement)\n    )\n  }\n\n  async _updateFloatingPosition(tip = this.tip, placement = null, arrowElement = null) {\n    if (!tip) {\n      return\n    }\n\n    if (!placement) {\n      placement = this._getPlacement(tip)\n    }\n\n    if (!arrowElement) {\n      arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n    }\n\n    const middleware = this._getFloatingMiddleware(arrowElement)\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    const { x, y, placement: finalPlacement, middlewareData } = await computePosition(\n      this._element,\n      tip,\n      floatingConfig\n    )\n\n    // Apply position to tooltip\n    Object.assign(tip.style, {\n      position: 'absolute',\n      left: `${x}px`,\n      top: `${y}px`\n    })\n\n    // Ensure arrow is absolutely positioned within tooltip\n    if (arrowElement) {\n      arrowElement.style.position = 'absolute'\n    }\n\n    // Set placement attribute for CSS arrow styling\n    Manipulator.setDataAttribute(tip, 'placement', finalPlacement)\n\n    // Position arrow along the edge (center it) if present\n    // The CSS handles which edge to place it on via data-bs-placement\n    if (arrowElement && middlewareData.arrow) {\n      const { x: arrowX, y: arrowY } = middlewareData.arrow\n      const isVertical = finalPlacement.startsWith('top') || finalPlacement.startsWith('bottom')\n\n      // Only set the cross-axis position (centering along the edge)\n      // The main-axis position (which edge) is handled by CSS\n      Object.assign(arrowElement.style, {\n        left: isVertical && arrowX !== null ? `${arrowX}px` : '',\n        top: !isVertical && arrowY !== null ? `${arrowY}px` : '',\n        // Reset the other axis to let CSS handle it\n        right: '',\n        bottom: ''\n      })\n    }\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      // Floating UI passes different args, adapt the interface for offset function callbacks\n      return ({ placement, rects }) => {\n        const result = offset({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this._element, this._element])\n  }\n\n  _getFloatingMiddleware(arrowElement) {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      // Offset middleware - handles distance from reference\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      // Flip middleware - handles fallback placements\n      flip({\n        fallbackPlacements: this._config.fallbackPlacements\n      }),\n      // Shift middleware - prevents overflow\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    // Arrow middleware - positions the arrow element\n    if (arrowElement) {\n      middleware.push(arrow({ element: arrowElement }))\n    }\n\n    return middleware\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK])\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const [key, value] of Object.entries(this._config)) {\n      if (this.constructor.Default[key] !== value) {\n        config[key] = value\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n}\n\n/**\n * Data API implementation - auto-initialize tooltips\n */\n\nconst initTooltip = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Get or create instance and trigger the appropriate action\n  const tooltip = Tooltip.getOrCreateInstance(target)\n\n  // For focus events, manually trigger enter to show\n  if (event.type === 'focusin') {\n    tooltip._activeTrigger.focus = true\n    tooltip._enter()\n  }\n}\n\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initTooltip)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initTooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"popover\"]'\n\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_MOUSEENTER = 'mouseenter'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return this._getTitle() || this._getContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n}\n\n/**\n * Data API implementation - auto-initialize popovers\n */\n\nconst initPopover = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Prevent default for click events to avoid navigation\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Get or create instance\n  const popover = Popover.getOrCreateInstance(target)\n\n  // Trigger the appropriate action based on event type\n  if (event.type === 'click') {\n    popover.toggle()\n  } else if (event.type === 'focusin') {\n    popover._activeTrigger.focus = true\n    popover._enter()\n  }\n}\n\n// Support click (default), hover, and focus triggers\nEventHandler.on(document, EVENT_CLICK, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initPopover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n  rootMargin: '0px 0px -25%',\n  smoothScroll: false,\n  target: null,\n  threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n  rootMargin: 'string',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n    this._activeTarget = null\n    this._observer = null\n    this._previousScrollData = {\n      visibleEntryTop: 0,\n      parentScrollTop: 0\n    }\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    } else {\n      this._observer = this._getNewObserver()\n    }\n\n    for (const section of this._observableSections.values()) {\n      this._observer.observe(section)\n    }\n  }\n\n  dispose() {\n    this._observer.disconnect()\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.target = getElement(config.target) || document.body\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // unregister any previous listeners\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const observableSection = this._observableSections.get(event.target.hash)\n      if (observableSection) {\n        event.preventDefault()\n        const root = this._rootElement || window\n        const height = observableSection.offsetTop - this._element.offsetTop\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'smooth' })\n          return\n        }\n\n        // Chrome 60 doesn't support `scrollTo`\n        root.scrollTop = height\n      }\n    })\n  }\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin\n    }\n\n    return new IntersectionObserver(entries => this._observerCallback(entries), options)\n  }\n\n  // The logic of selection\n  _observerCallback(entries) {\n    const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n    const activate = entry => {\n      this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n      this._process(targetElement(entry))\n    }\n\n    const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n    const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n    this._previousScrollData.parentScrollTop = parentScrollTop\n\n    for (const entry of entries) {\n      if (!entry.isIntersecting) {\n        this._activeTarget = null\n        this._clearActiveClass(targetElement(entry))\n\n        continue\n      }\n\n      const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n      // if we are scrolling down, pick the bigger offsetTop\n      if (userScrollsDown && entryIsLowerThanPrevious) {\n        activate(entry)\n        // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n        if (!parentScrollTop) {\n          return\n        }\n\n        continue\n      }\n\n      // if we are scrolling up, pick the smallest offsetTop\n      if (!userScrollsDown && !entryIsLowerThanPrevious) {\n        activate(entry)\n      }\n    }\n  }\n\n  _initializeTargetsAndObservables() {\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n    for (const anchor of targetLinks) {\n      // ensure that the anchor has an id and is not disabled\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element)\n\n      // ensure that the observableSection exists & is visible\n      if (isVisible(observableSection)) {\n        this._targetLinks.set(decodeURI(anchor.hash), anchor)\n        this._observableSections.set(anchor.hash, observableSection)\n      }\n    }\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate dropdown parents\n    if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n        .classList.add(CLASS_NAME_ACTIVE)\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_TAB_PANEL}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleDropDown(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleDropDown(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n\n    const children = this._getChildren().filter(element => !isDisabled(element))\n    let nextActiveElement\n\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n    }\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n    }\n  }\n\n  _toggleDropDown(element, open) {\n    const outerElem = this._getOuterElement(element)\n    if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n      return\n    }\n\n    const toggle = (selector, className) => {\n      const element = SelectorEngine.findOne(selector, outerElem)\n      if (element) {\n        element.classList.toggle(className, open)\n      }\n    }\n\n    toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n    toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n    outerElem.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toggler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { eventActionOnPlugin } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toggler'\nconst DATA_KEY = 'bs.toggler'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_TOGGLE = `toggle${EVENT_KEY}`\nconst EVENT_TOGGLED = `toggled${EVENT_KEY}`\nconst EVENT_CLICK = 'click'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"toggler\"]'\n\nconst DefaultType = {\n  attribute: 'string',\n  value: '(string|number|boolean)'\n}\n\nconst Default = {\n  attribute: 'class',\n  value: null\n}\n\n/**\n * Class definition\n */\n\nclass Toggler extends BaseComponent {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    const toggleEvent = EventHandler.trigger(this._element, EVENT_TOGGLE)\n\n    if (toggleEvent.defaultPrevented) {\n      return\n    }\n\n    this._execute()\n\n    EventHandler.trigger(this._element, EVENT_TOGGLED)\n  }\n\n  // Private\n  _execute() {\n    const { attribute, value } = this._config\n\n    if (attribute === 'id') {\n      return // You have to be kidding\n    }\n\n    if (attribute === 'class') {\n      this._element.classList.toggle(value)\n      return\n    }\n\n    // Compare as strings since getAttribute() always returns a string\n    if (this._element.getAttribute(attribute) === String(value)) {\n      this._element.removeAttribute(attribute)\n      return\n    }\n\n    this._element.setAttribute(attribute, value)\n  }\n}\n\n/**\n * Data API implementation\n */\n\neventActionOnPlugin(Toggler, EVENT_CLICK, SELECTOR_DATA_TOGGLE, 'toggle')\n\nexport default Toggler\n"],"mappings":"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","ignoreList":[]}
\ No newline at end of file
+{"version":3,"names":["elementMap","Map","Data","set","element","key","instance","has","instanceMap","get","size","console","error","Array","from","keys","remove","delete","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","bootstrapHandler","fn","handler","event","hydrateObj","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","selector","domElements","querySelectorAll","target","this","parentNode","domElement","findHandler","events","callable","delegationSelector","Object","values","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","replace","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","length","trigger","args","evt","Event","bubbles","cancelable","dispatchEvent","obj","meta","value","defineProperty","configurable","normalizeData","Number","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","getAttribute","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","window","CSS","escape","match","id","toType","object","prototype","getUID","prefix","Math","floor","random","document","getElementById","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","isElement","nodeType","getElement","querySelector","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","isDisabled","Node","ELEMENT_NODE","classList","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","isRTL","dir","execute","possibleCallback","defaultValue","executeAfterTransition","callback","transitionElement","waitForTransition","emulatedDuration","called","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","Config","Default","DefaultType","NAME","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","VERSION","BaseComponent","super","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","eventName","name","getSelector","hrefAttribute","trim","map","sel","join","SelectorEngine","concat","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","preventDefault","eventActionOnPlugin","Plugin","onEvent","stringSelector","eventAction","data","instances","targets","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","defaultPrevented","_destroyElement","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","button","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM_IMG","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","KEY_TO_DIRECTION","ARROW_LEFT_KEY$2","ARROW_RIGHT_KEY$2","interval","keyboard","pause","ride","touch","wrap","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","visibilityState","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","endCallBack","clearTimeout","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","_orderToDirection","isCycling","directionalClassName","orderClassName","completeCallBack","_isAnimated","clearInterval","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","style","scrollSize","complete","getBoundingClientRect","selected","triggerArray","isOpen","BREAKPOINTS","sm","md","lg","xl","parseResponsivePlacement","placementString","defaultPlacement","parts","placements","xs","part","breakpoint","placement","undefined","getResponsivePlacement","responsivePlacements","viewportWidth","innerWidth","activePlacement","breakpointOrder","createBreakpointListeners","listeners","minWidth","mql","matchMedia","disposeBreakpointListeners","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","ENTER_KEY","SPACE_KEY","RIGHT_MOUSE_BUTTON","SUBMENU_CLOSE_DELAY","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_MENU","SELECTOR_SUBMENU","SELECTOR_SUBMENU_TOGGLE","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","DEFAULT_PLACEMENT","SUBMENU_PLACEMENT","resolveLogicalPlacement","triangleSign","p1","p2","p3","x","y","autoClose","boundary","container","display","offset","floatingConfig","menu","reference","strategy","submenuTrigger","submenuDelay","Menu","static","computePosition","_floatingCleanup","_mediaQueryListeners","_responsivePlacements","_parent","_isSubmenu","_openSubmenus","_submenuCloseTimeouts","_hoverIntentData","_menu","_findMenu","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","_moveMenuToContainer","_createFloating","body","focus","focusVisible","_openInstances","_completeHide","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","update","_updateFloatingPosition","referenceElement","autoUpdate","_getPlacement","middleware","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","_setupMediaQueryListeners","_getOffset","offsetConfig","rects","floating","offsetValue","mainAxis","crossAxis","flip","fallbackPlacements","_getFallbackPlacements","shift","bottom","top","right","left","defaultConfig","_getContainer","append","isConnected","finalPlacement","assign","position","margin","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","_isMovingTowardSubmenu","_scheduleSubmenuClose","stopPropagation","_closeSubmenu","cleanup","_createSubmenuFloating","nestedSubmenus","nested","nestedWrapper","currentSubmenuWrapper","siblingSubmenus","siblingMenu","siblingWrapper","padding","updatePosition","timeoutId","clear","clientY","timestamp","Date","now","submenuRect","currentPos","lastPos","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","_selectMenuItem","currentMenu","_handleSubmenuKeydown","isRtl","enterKey","exitKey","isSubmenuTrigger","requestAnimationFrame","firstItem","parentSubmenuWrapper","parentTrigger","clearMenus","composedPath","isMenuTarget","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","isLeftOrRightEvent","isHomeOrEndEvent","isEnterOrSpaceEvent","getToggleButton","EVENT_CHANGE","CLASS_NAME_SELECTED","CLASS_NAME_PLACEHOLDER","SELECTOR_MENU_ITEM","SELECTOR_VALUE","SELECTOR_SEARCH_INPUT","SELECTOR_NO_RESULTS","multiple","placeholder","search","searchNormalize","Combobox","_toggle","_valueDisplay","_searchInput","_noResults","_hiddenInput","_menuInstance","_createHiddenInput","_createMenuInstance","_syncInitialSelection","_filterItems","createElement","insertBefore","_getSelectedItems","_updateToggleText","_updateHiddenInput","_showPlaceholder","item","_selectItem","_handleToggleKeydown","_handleMenuKeydown","_getVisibleItems","previouslySelected","bsValue","selectedItems","textContent","label","query","normalizedQuery","_normalizeText","visibleCount","text","normalize","jQueryInterface","each","EVENT_FOCUSIN_DATA_API","HIDE_DELAY","datepickerTheme","dateMin","dateMax","dateFormat","displayElement","displayMonthsCount","firstWeekday","inline","locale","positionElement","selectedDates","selectionMode","vcpOptions","Datepicker","_calendar","_initCalendar","_themeObserver","disconnect","destroy","getSelectedDates","dates","context","setSelectedDates","_isInput","_isInline","_boundInput","_positionElement","_resolvePositionElement","_displayElement","_resolveDisplayElement","calendarOptions","_buildCalendarOptions","Calendar","init","_setupThemeObserver","_parseInputValue","_updateDisplayWithSelectedDates","formattedDate","_formatDateForInput","_getThemeAncestor","_getEffectiveTheme","_syncThemeAttribute","theme","MutationObserver","mainElement","observe","attributeFilter","vcpTheme","inputMode","positionToInput","selectionDatesMode","selectedTheme","themeAttrDetect","onClickDate","self","_handleDateClick","onInit","onShow","onHide","firstDate","_parseDate","selectedMonth","getMonth","selectedYear","getFullYear","_maybeHideAfterSelection","dateStr","year","month","day","_formatDate","date","Intl","DateTimeFormat","format","toLocaleDateString","separator","d","isNaN","getTime","formatted","String","padStart","getDate","bsInline","EVENT_HIDE_PREVENTED","EVENT_CANCEL","CLASS_NAME_STATIC","CLASS_NAME_OPEN","CLASS_NAME_NONMODAL","SELECTOR_OPEN_MODAL_DIALOG","backdrop","modal","Dialog","open","showModal","_hideDialog","handleUpdate","_triggerBackdropTransition","showEvent","currentDialog","currentInstance","EVENT_UPDATE","EVENT_OVERFLOW","CLASS_NAME_OVERFLOW","CLASS_NAME_OVERFLOW_MENU","CLASS_NAME_HIDDEN","SELECTOR_NAV_ITEM","SELECTOR_NAV_LINK","SELECTOR_OVERFLOW_TOGGLE","SELECTOR_OVERFLOW_MENU","CLASS_NAME_KEEP","moreText","moreIcon","threshold","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_resizeObserver","_isInitialized","_init","_calculateOverflow","_restoreItems","parentElement","bsNavOrder","_createOverflowMenu","_setupResizeObserver","overflowItem","className","innerHTML","ResizeObserver","navWidth","offsetWidth","usedWidth","itemsToOverflow","overflowThreshold","toMove","_moveToOverflow","overflowCount","link","clonedLink","cloneNode","bsNavOverflow","EVENT_MOUSEDOWN","clickCallback","rootElement","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_FORWARD","TAB_NAV_BACKWARD","autofocus","trapElement","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","clientWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","reset","_resetElementAttributes","isOverflowing","_saveInitialAttribute","overflow","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","CLASS_NAME_SHOWING","CLASS_NAME_HIDING","CLASS_NAME_BACKDROP","OPEN_SELECTOR","EVENT_RESIZE","EVENT_KEYDOWN_DISMISS","scroll","Offcanvas","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","blur","completeCallback","alreadyOpen","EVENT_STRENGTH_CHANGE","SELECTOR_DATA_STRENGTH","STRENGTH_LEVELS","input","minLength","messages","weak","fair","good","strong","weights","extraLength","lowercase","uppercase","numbers","special","multipleSpecial","longPassword","thresholds","scorer","Strength","_input","_getInput","_segments","_textElement","_currentStrength","_evaluate","getStrength","evaluate","password","score","_calculateScore","strength","_scoreToStrength","_updateUI","bsStrength","strengthIndex","segment","colorMap","EVENT_COMPLETE","EVENT_INPUT","SELECTOR_DATA_OTP","SELECTOR_INPUT","mask","OtpInput","_inputs","_setupInputs","getValue","setValue","chars","_checkComplete","emptyInput","at","_handleInput","_handlePaste","_handleFocus","i","nextIndex","digits","clipboardData","getData","lastIndex","select","every","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","a","area","b","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","li","ol","p","pre","s","small","span","sub","sup","u","ul","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","attributeRegex","some","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","_maybeSanitize","_setContent","arg","templateElement","_putElementInTemplate","DISALLOWED_ATTRIBUTES","CLASS_NAME_MODAL","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","_leave","_enter","_hideModalHandler","_isWithContent","isInTheDom","ownerDocument","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","middlewareData","arrow","arrowX","arrowY","isVertical","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","tooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","popover","EVENT_ACTIVATE","CLASS_NAME_MENU_ITEM","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_MENU_TOGGLE","rootMargin","smoothScroll","ScrollSpy","_targetLinks","_observableSections","_rootElement","overflowY","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","observableSection","hash","height","offsetTop","scrollTo","behavior","scrollTop","options","IntersectionObserver","_observerCallback","targetElement","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","menuToggle","listGroup","activeNodes","node","spy","NOT_SELECTOR_MENU_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleMenu","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","EVENT_TOGGLE","EVENT_TOGGLED","Toggler","_execute"],"sources":["../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/index.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/util/floating-ui.js","../../js/src/menu.js","../../js/src/combobox.js","../../js/src/datepicker.js","../../js/src/dialog.js","../../js/src/nav-overflow.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/util/scrollbar.js","../../js/src/offcanvas.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/toggler.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const evt = hydrateObj(new Event(event, { bubbles: true, cancelable: true }), args)\n    element.dispatchEvent(evt)\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n  for (const [key, value] of Object.entries(meta)) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n  if (selector && window.CSS && window.CSS.escape) {\n    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n    selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n  }\n\n  return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  if (isElement(object)) {\n    return object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(parseSelector(object))\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsie appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n  return typeof possibleCallback === 'function' ? possibleCallback.call(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getNextActiveElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  parseSelector,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const [property, expectedTypes] of Object.entries(configTypes)) {\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '6.0.0-alpha1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  // Private\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\n}\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children).filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  },\n\n  getSelectorFromElement(element) {\n    const selector = getSelector(element)\n\n    if (selector) {\n      return SelectorEngine.findOne(selector) ? selector : null\n    }\n\n    return null\n  },\n\n  getElementFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.findOne(selector) : null\n  },\n\n  getMultipleElementsFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.find(selector) : []\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nconst eventActionOnPlugin = (Plugin, onEvent, stringSelector, method, callback = null) => {\n  eventAction(`${onEvent}.${Plugin.NAME}`, stringSelector, data => {\n    const instances = data.targets.filter(Boolean).map(element => Plugin.getOrCreateInstance(element))\n    if (typeof callback === 'function') {\n      callback({ ...data, instances })\n    }\n\n    for (const instance of instances) {\n      instance[method]()\n    }\n  })\n}\n\nconst eventAction = (onEvent, stringSelector, callback) => {\n  const selector = `${stringSelector}:not(.disabled):not(:disabled)`\n  EventHandler.on(document, onEvent, selector, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    const selector = SelectorEngine.getSelectorFromElement(this)\n    const targets = selector ? SelectorEngine.find(selector) : [this]\n\n    callback({ targets, event })\n  })\n}\n\nexport {\n  enableDismissTrigger,\n  eventActionOnPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    this._deltaX = event.touches && event.touches.length > 1 ?\n      0 :\n      event.touches[0].clientX - this._deltaX\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n\n    if (absDeltaX <= SWIPE_THRESHOLD) {\n      return\n    }\n\n    const direction = absDeltaX / this._deltaX\n\n    this._deltaX = 0\n\n    if (!direction) {\n      return\n    }\n\n    execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getNextActiveElement,\n  isRTL,\n  isVisible,\n  reflow,\n  triggerTransitionEnd\n} from './util/index.js'\nimport Swipe from './util/swipe.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover',\n  ride: false,\n  touch: true,\n  wrap: true\n}\n\nconst DefaultType = {\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)',\n  ride: '(boolean|string)',\n  touch: 'boolean',\n  wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._interval = null\n    this._activeElement = null\n    this._isSliding = false\n    this.touchTimeout = null\n    this._swipeHelper = null\n\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._addEventListeners()\n\n    if (this._config.ride === CLASS_NAME_CAROUSEL) {\n      this.cycle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause() {\n    if (this._isSliding) {\n      triggerTransitionEnd(this._element)\n    }\n\n    this._clearInterval()\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._updateInterval()\n\n    this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n  }\n\n  _maybeEnableCycle() {\n    if (!this._config.ride) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n      return\n    }\n\n    this.cycle()\n  }\n\n  to(index) {\n    const items = this._getItems()\n    if (index > items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    const activeIndex = this._getItemIndex(this._getActive())\n    if (activeIndex === index) {\n      return\n    }\n\n    const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n    this._slide(order, items[index])\n  }\n\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.defaultInterval = config.interval\n    return config\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    if (this._config.touch && Swipe.isSupported()) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n      EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n    }\n\n    const endCallBack = () => {\n      if (this._config.pause !== 'hover') {\n        return\n      }\n\n      // If it's a touch-enabled device, mouseenter/leave are fired as\n      // part of the mouse compatibility events on first tap - the carousel\n      // would stop cycling until user tapped out of it;\n      // here, we listen for touchend, explicitly pause the carousel\n      // (as if it's the second time we tap on it, mouseenter compat event\n      // is NOT fired) and after a timeout (to allow for mouse compatibility\n      // events to fire) we explicitly restart cycling\n\n      this.pause()\n      if (this.touchTimeout) {\n        clearTimeout(this.touchTimeout)\n      }\n\n      this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n    }\n\n    const swipeConfig = {\n      leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n      rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n      endCallback: endCallBack\n    }\n\n    this._swipeHelper = new Swipe(this._element, swipeConfig)\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(this._directionToOrder(direction))\n    }\n  }\n\n  _getItemIndex(element) {\n    return this._getItems().indexOf(element)\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n    activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n    activeIndicator.removeAttribute('aria-current')\n\n    const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n    if (newActiveIndicator) {\n      newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n      newActiveIndicator.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || this._getActive()\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    this._config.interval = elementInterval || this._config.defaultInterval\n  }\n\n  _slide(order, element = null) {\n    if (this._isSliding) {\n      return\n    }\n\n    const activeElement = this._getActive()\n    const isNext = order === ORDER_NEXT\n    const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n    if (nextElement === activeElement) {\n      return\n    }\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n\n    const triggerEvent = eventName => {\n      return EventHandler.trigger(this._element, eventName, {\n        relatedTarget: nextElement,\n        direction: this._orderToDirection(order),\n        from: this._getItemIndex(activeElement),\n        to: nextElementIndex\n      })\n    }\n\n    const slideEvent = triggerEvent(EVENT_SLIDE)\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      return\n    }\n\n    const isCycling = Boolean(this._interval)\n    this.pause()\n\n    this._isSliding = true\n\n    this._setActiveIndicatorElement(nextElementIndex)\n    this._activeElement = nextElement\n\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n    nextElement.classList.add(orderClassName)\n\n    reflow(nextElement)\n\n    activeElement.classList.add(directionalClassName)\n    nextElement.classList.add(directionalClassName)\n\n    const completeCallBack = () => {\n      nextElement.classList.remove(directionalClassName, orderClassName)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n      this._isSliding = false\n\n      triggerEvent(EVENT_SLID)\n    }\n\n    this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_SLIDE)\n  }\n\n  _getActive() {\n    return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    carousel._maybeEnableCycle()\n    return\n  }\n\n  carousel.prev()\n  carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement,\n  reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = SelectorEngine.getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = SelectorEngine.getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  // Private\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = SelectorEngine.getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/floating-ui.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isRTL } from './index.js'\n\n/**\n * Breakpoints for responsive placement (matches SCSS $breakpoints)\n */\nexport const BREAKPOINTS = {\n  sm: 576,\n  md: 768,\n  lg: 1024,\n  xl: 1280,\n  '2xl': 1536\n}\n\n/**\n * Default placement with RTL support\n */\nexport const getDefaultPlacement = (fallback = 'bottom') => {\n  if (fallback.includes('-start') || fallback.includes('-end')) {\n    const [side, alignment] = fallback.split('-')\n    const flippedAlignment = alignment === 'start' ? 'end' : 'start'\n    return isRTL() ? `${side}-${flippedAlignment}` : fallback\n  }\n\n  return fallback\n}\n\n/**\n * Parse a placement string that may contain responsive prefixes\n * Example: \"bottom-start md:top-end lg:right\" returns { xs: 'bottom-start', md: 'top-end', lg: 'right' }\n *\n * @param {string} placementString - The placement string to parse\n * @param {string} defaultPlacement - The default placement to use for xs/base\n * @returns {object|null} - Object with breakpoint keys and placement values, or null if not responsive\n */\nexport const parseResponsivePlacement = (placementString, defaultPlacement = 'bottom') => {\n  // Check if placement contains responsive prefixes (e.g., \"bottom-start md:top-end\")\n  if (!placementString || !placementString.includes(':')) {\n    return null\n  }\n\n  // Parse the placement string into breakpoint-keyed object\n  const parts = placementString.split(/\\s+/)\n  const placements = { xs: defaultPlacement } // Default fallback\n\n  for (const part of parts) {\n    if (part.includes(':')) {\n      // Responsive placement like \"md:top-end\"\n      const [breakpoint, placement] = part.split(':')\n      if (BREAKPOINTS[breakpoint] !== undefined) {\n        placements[breakpoint] = placement\n      }\n    } else {\n      // Base placement (no prefix = xs/default)\n      placements.xs = part\n    }\n  }\n\n  return placements\n}\n\n/**\n * Get the active placement for the current viewport width\n *\n * @param {object} responsivePlacements - Object with breakpoint keys and placement values\n * @param {string} defaultPlacement - Fallback placement\n * @returns {string} - The active placement for current viewport\n */\nexport const getResponsivePlacement = (responsivePlacements, defaultPlacement = 'bottom') => {\n  if (!responsivePlacements) {\n    return defaultPlacement\n  }\n\n  // Get current viewport width\n  const viewportWidth = window.innerWidth\n\n  // Find the largest breakpoint that matches\n  let activePlacement = responsivePlacements.xs || defaultPlacement\n\n  // Check breakpoints in order (sm, md, lg, xl, 2xl)\n  const breakpointOrder = ['sm', 'md', 'lg', 'xl', '2xl']\n\n  for (const breakpoint of breakpointOrder) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    if (viewportWidth >= minWidth && responsivePlacements[breakpoint]) {\n      activePlacement = responsivePlacements[breakpoint]\n    }\n  }\n\n  return activePlacement\n}\n\n/**\n * Create media query listeners for responsive placement changes\n *\n * @param {Function} callback - Callback to run when breakpoint changes\n * @returns {Array} - Array of { mql, handler } objects for cleanup\n */\nexport const createBreakpointListeners = callback => {\n  const listeners = []\n\n  for (const breakpoint of Object.keys(BREAKPOINTS)) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    const mql = window.matchMedia(`(min-width: ${minWidth}px)`)\n\n    mql.addEventListener('change', callback)\n    listeners.push({ mql, handler: callback })\n  }\n\n  return listeners\n}\n\n/**\n * Clean up media query listeners\n *\n * @param {Array} listeners - Array of { mql, handler } objects\n */\nexport const disposeBreakpointListeners = listeners => {\n  for (const { mql, handler } of listeners) {\n    mql.removeEventListener('change', handler)\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap menu.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'menu'\nconst DATA_KEY = 'bs.menu'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\nconst RIGHT_MOUSE_BUTTON = 2\n\nconst SUBMENU_CLOSE_DELAY = 100\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"menu\"]:not(.disabled):not(:disabled)'\n\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_SUBMENU = '.submenu'\nconst SELECTOR_SUBMENU_TOGGLE = '.submenu > .menu-item'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item:not(.disabled):not(:disabled)'\n\nconst DEFAULT_PLACEMENT = 'bottom-start'\nconst SUBMENU_PLACEMENT = 'end-start'\n\nconst resolveLogicalPlacement = placement => {\n  if (isRTL()) {\n    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left')\n  }\n\n  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right')\n}\n\nconst triangleSign = (p1, p2, p3) =>\n  ((p1.x - p3.x) * (p2.y - p3.y)) - ((p2.x - p3.x) * (p1.y - p3.y))\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  container: false,\n  display: 'dynamic',\n  offset: [0, 2],\n  floatingConfig: null,\n  menu: null,\n  placement: DEFAULT_PLACEMENT,\n  reference: 'toggle',\n  strategy: 'absolute',\n  submenuTrigger: 'both',\n  submenuDelay: SUBMENU_CLOSE_DELAY\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  display: 'string',\n  offset: '(array|string|function)',\n  floatingConfig: '(null|object|function)',\n  menu: '(null|element)',\n  placement: 'string',\n  reference: '(string|element|object)',\n  strategy: 'string',\n  submenuTrigger: 'string',\n  submenuDelay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Menu extends BaseComponent {\n  static _openInstances = new Set()\n\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s menus require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    this._floatingCleanup = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n    this._parent = this._element.parentNode\n    this._isSubmenu = this._parent.classList?.contains('submenu')\n    this._openSubmenus = new Map()\n    this._submenuCloseTimeouts = new Map()\n    this._hoverIntentData = null\n\n    this._menu = this._config.menu || this._findMenu()\n\n    this._menuOriginalParent = this._menu?.parentNode\n\n    this._parseResponsivePlacements()\n    this._setupSubmenuListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._moveMenuToContainer()\n    this._createFloating()\n\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus({ focusVisible: false })\n    this._element.setAttribute('aria-expanded', 'true')\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.add(CLASS_NAME_SHOW)\n    }\n\n    Menu._openInstances.add(this)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n    this._disposeMediaQueryListeners()\n    this._closeAllSubmenus()\n    this._clearAllSubmenuTimeouts()\n    Menu._openInstances.delete(this)\n    super.dispose()\n  }\n\n  update() {\n    if (this._floatingCleanup) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Private\n  _findMenu() {\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n  }\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._closeAllSubmenus()\n\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'placement')\n    Manipulator.removeDataAttribute(this._menu, 'display')\n    Menu._openInstances.delete(this)\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createFloating() {\n    if (this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'display', 'static')\n      return\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    this._updateFloatingPosition(referenceElement)\n\n    this._floatingCleanup = autoUpdate(\n      referenceElement,\n      this._menu,\n      () => this._updateFloatingPosition(referenceElement)\n    )\n  }\n\n  async _updateFloatingPosition(referenceElement = null) {\n    if (!this._menu) {\n      return\n    }\n\n    if (!referenceElement) {\n      if (this._config.reference === 'parent') {\n        referenceElement = this._parent\n      } else if (isElement(this._config.reference)) {\n        referenceElement = getElement(this._config.reference)\n      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference\n      } else {\n        referenceElement = this._element\n      }\n    }\n\n    const placement = this._getPlacement()\n    const middleware = this._getFloatingMiddleware()\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    await this._applyFloatingPosition(\n      referenceElement,\n      this._menu,\n      floatingConfig.placement,\n      floatingConfig.middleware,\n      floatingConfig.strategy\n    )\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    const placement = this._responsivePlacements ?\n      getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) :\n      this._config.placement\n\n    return resolveLogicalPlacement(placement)\n  }\n\n  _parseResponsivePlacements() {\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT)\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  _getOffset() {\n    const { offset: offsetConfig } = this._config\n\n    if (typeof offsetConfig === 'string') {\n      return offsetConfig.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offsetConfig === 'function') {\n      return ({ placement, rects }) => {\n        const result = offsetConfig({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offsetConfig\n  }\n\n  _getFloatingMiddleware() {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      flip({\n        fallbackPlacements: this._getFallbackPlacements()\n      }),\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    return middleware\n  }\n\n  _getFallbackPlacements() {\n    const placement = this._getPlacement()\n\n    const fallbackMap = {\n      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\n      'bottom-start': ['top-start', 'bottom-end', 'top-end'],\n      'bottom-end': ['top-end', 'bottom-start', 'top-start'],\n      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],\n      'top-start': ['bottom-start', 'top-end', 'bottom-end'],\n      'top-end': ['bottom-end', 'top-start', 'bottom-start'],\n      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],\n      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],\n      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],\n      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],\n      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],\n      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']\n    }\n\n    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left']\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware,\n      strategy: this._config.strategy\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n  }\n\n  _getContainer() {\n    const { container } = this._config\n    if (container === false) {\n      return null\n    }\n\n    return container === true ? document.body : getElement(container)\n  }\n\n  _moveMenuToContainer() {\n    const container = this._getContainer()\n    if (!container || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== container) {\n      container.append(this._menu)\n    }\n  }\n\n  _restoreMenuToOriginalParent() {\n    if (!this._menuOriginalParent || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== this._menuOriginalParent) {\n      this._menuOriginalParent.append(this._menu)\n    }\n  }\n\n  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {\n    if (!floating.isConnected) {\n      return null\n    }\n\n    const { x, y, placement: finalPlacement } = await computePosition(\n      reference,\n      floating,\n      { placement, middleware, strategy }\n    )\n\n    if (!floating.isConnected) {\n      return null\n    }\n\n    Object.assign(floating.style, {\n      position: strategy,\n      left: `${x}px`,\n      top: `${y}px`,\n      margin: '0'\n    })\n\n    Manipulator.setDataAttribute(floating, 'placement', finalPlacement)\n    return finalPlacement\n  }\n\n  // -------------------------------------------------------------------------\n  // Submenu handling\n  // -------------------------------------------------------------------------\n\n  _setupSubmenuListeners() {\n    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerEnter(event)\n      })\n\n      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {\n        this._onSubmenuLeave(event)\n      })\n\n      EventHandler.on(this._menu, 'mousemove', event => {\n        this._trackMousePosition(event)\n      })\n    }\n\n    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerClick(event)\n      })\n    }\n  }\n\n  _onSubmenuTriggerEnter(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    this._cancelSubmenuCloseTimeout(submenu)\n    this._closeSiblingSubmenus(submenuWrapper)\n    this._openSubmenu(trigger, submenu, submenuWrapper)\n  }\n\n  _onSubmenuLeave(event) {\n    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu || !this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    if (this._isMovingTowardSubmenu(event, submenu)) {\n      return\n    }\n\n    this._scheduleSubmenuClose(submenu, submenuWrapper)\n  }\n\n  _onSubmenuTriggerClick(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    if (this._openSubmenus.has(submenu)) {\n      this._closeSubmenu(submenu, submenuWrapper)\n    } else {\n      this._closeSiblingSubmenus(submenuWrapper)\n      this._openSubmenu(trigger, submenu, submenuWrapper)\n    }\n  }\n\n  _openSubmenu(trigger, submenu, submenuWrapper) {\n    if (this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    trigger.setAttribute('aria-expanded', 'true')\n    trigger.setAttribute('aria-haspopup', 'true')\n\n    submenu.classList.add(CLASS_NAME_SHOW)\n    submenuWrapper.classList.add(CLASS_NAME_SHOW)\n\n    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper)\n    this._openSubmenus.set(submenu, cleanup)\n\n    EventHandler.on(submenu, 'mouseenter', () => {\n      this._cancelSubmenuCloseTimeout(submenu)\n    })\n  }\n\n  _closeSubmenu(submenu, submenuWrapper) {\n    if (!this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, submenu)\n    for (const nested of nestedSubmenus) {\n      const nestedWrapper = nested.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(nested, nestedWrapper)\n    }\n\n    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper)\n\n    const cleanup = this._openSubmenus.get(submenu)\n    if (cleanup) {\n      cleanup()\n    }\n\n    this._openSubmenus.delete(submenu)\n    EventHandler.off(submenu, 'mouseenter')\n\n    if (trigger) {\n      trigger.setAttribute('aria-expanded', 'false')\n    }\n\n    submenu.classList.remove(CLASS_NAME_SHOW)\n    submenuWrapper.classList.remove(CLASS_NAME_SHOW)\n\n    submenu.style.position = ''\n    submenu.style.left = ''\n    submenu.style.top = ''\n    submenu.style.margin = ''\n  }\n\n  _closeAllSubmenus() {\n    for (const [submenu] of this._openSubmenus) {\n      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(submenu, submenuWrapper)\n    }\n  }\n\n  _closeSiblingSubmenus(currentSubmenuWrapper) {\n    const parent = currentSubmenuWrapper.parentNode\n    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, parent)\n\n    for (const siblingMenu of siblingSubmenus) {\n      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU)\n      if (siblingWrapper !== currentSubmenuWrapper) {\n        this._closeSubmenu(siblingMenu, siblingWrapper)\n      }\n    }\n  }\n\n  _createSubmenuFloating(trigger, submenu, submenuWrapper) {\n    const referenceElement = submenuWrapper\n    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT)\n    const middleware = [\n      offset({ mainAxis: 0, crossAxis: -4 }),\n      flip({\n        fallbackPlacements: [\n          resolveLogicalPlacement('start-start'),\n          resolveLogicalPlacement('end-end'),\n          resolveLogicalPlacement('start-end')\n        ]\n      }),\n      shift({ padding: 8 })\n    ]\n\n    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware)\n\n    updatePosition()\n    return autoUpdate(referenceElement, submenu, updatePosition)\n  }\n\n  _scheduleSubmenuClose(submenu, submenuWrapper) {\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    const timeoutId = setTimeout(() => {\n      this._closeSubmenu(submenu, submenuWrapper)\n      this._submenuCloseTimeouts.delete(submenu)\n    }, this._config.submenuDelay)\n\n    this._submenuCloseTimeouts.set(submenu, timeoutId)\n  }\n\n  _cancelSubmenuCloseTimeout(submenu) {\n    const timeoutId = this._submenuCloseTimeouts.get(submenu)\n    if (timeoutId) {\n      clearTimeout(timeoutId)\n      this._submenuCloseTimeouts.delete(submenu)\n    }\n  }\n\n  _clearAllSubmenuTimeouts() {\n    for (const timeoutId of this._submenuCloseTimeouts.values()) {\n      clearTimeout(timeoutId)\n    }\n\n    this._submenuCloseTimeouts.clear()\n  }\n\n  // -------------------------------------------------------------------------\n  // Hover intent / Safe triangle\n  // -------------------------------------------------------------------------\n\n  _trackMousePosition(event) {\n    this._hoverIntentData = {\n      x: event.clientX,\n      y: event.clientY,\n      timestamp: Date.now()\n    }\n  }\n\n  _isMovingTowardSubmenu(event, submenu) {\n    if (!this._hoverIntentData) {\n      return false\n    }\n\n    const submenuRect = submenu.getBoundingClientRect()\n    const currentPos = { x: event.clientX, y: event.clientY }\n    const lastPos = { x: this._hoverIntentData.x, y: this._hoverIntentData.y }\n\n    const isRtl = isRTL()\n    const targetX = isRtl ? submenuRect.right : submenuRect.left\n    const topCorner = { x: targetX, y: submenuRect.top }\n    const bottomCorner = { x: targetX, y: submenuRect.bottom }\n\n    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner)\n  }\n\n  _pointInTriangle(point, v1, v2, v3) {\n    const d1 = triangleSign(point, v1, v2)\n    const d2 = triangleSign(point, v2, v3)\n    const d3 = triangleSign(point, v3, v1)\n\n    const hasNeg = (d1 < 0) || (d2 < 0) || (d3 < 0)\n    const hasPos = (d1 > 0) || (d2 > 0) || (d3 > 0)\n\n    return !(hasNeg && hasPos)\n  }\n\n  // -------------------------------------------------------------------------\n  // Keyboard navigation\n  // -------------------------------------------------------------------------\n\n  _selectMenuItem({ key, target }) {\n    const currentMenu = target.closest(SELECTOR_MENU) || this._menu\n    const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n      .filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  _handleSubmenuKeydown(event) {\n    const { key, target } = event\n    const isRtl = isRTL()\n\n    const enterKey = isRtl ? ARROW_LEFT_KEY : ARROW_RIGHT_KEY\n    const exitKey = isRtl ? ARROW_RIGHT_KEY : ARROW_LEFT_KEY\n\n    const submenuWrapper = target.closest(SELECTOR_SUBMENU)\n    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === enterKey && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === exitKey) {\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper) {\n        event.preventDefault()\n        event.stopPropagation()\n\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        this._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return true\n      }\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n        .filter(element => isVisible(element))\n\n      if (items.length) {\n        const targetItem = key === HOME_KEY ? items[0] : items[items.length - 1]\n        targetItem.focus()\n      }\n\n      return true\n    }\n\n    return false\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    for (const instance of Menu._openInstances) {\n      if (instance._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(instance._menu)\n      if (\n        composedPath.includes(instance._element) ||\n        (instance._config.autoClose === 'inside' && !isMenuTarget) ||\n        (instance._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      if (instance._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: instance._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      instance._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    const isInput = /input|textarea/i.test(event.target.tagName)\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n    const isLeftOrRightEvent = [ARROW_LEFT_KEY, ARROW_RIGHT_KEY].includes(event.key)\n    const isHomeOrEndEvent = [HOME_KEY, END_KEY].includes(event.key)\n    const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key)\n\n    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent &&\n        !(isEnterOrSpaceEvent && isSubmenuTrigger)) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    if (!getToggleButton) {\n      return\n    }\n\n    const instance = Menu.getOrCreateInstance(getToggleButton)\n\n    if ((isLeftOrRightEvent || isHomeOrEndEvent || (isEnterOrSpaceEvent && isSubmenuTrigger)) && instance._handleSubmenuKeydown(event)) {\n      return\n    }\n\n    if (isUpOrDownEvent) {\n      event.preventDefault()\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (isEscapeEvent && instance._isShown()) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = event.target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        instance._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return\n      }\n\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Menu.getOrCreateInstance(this).toggle()\n})\n\nexport default Menu\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap combobox.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Menu from './menu.js'\nimport { getNextActiveElement, isDisabled, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'combobox'\nconst DATA_KEY = 'bs.combobox'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SELECTED = 'selected'\nconst CLASS_NAME_PLACEHOLDER = 'combobox-placeholder'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"combobox\"]'\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_MENU_ITEM = '.menu-item[data-bs-value]'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item[data-bs-value]:not(.disabled):not(:disabled)'\nconst SELECTOR_VALUE = '.combobox-value'\nconst SELECTOR_SEARCH_INPUT = '.combobox-search-input'\nconst SELECTOR_NO_RESULTS = '.combobox-no-results'\n\nconst Default = {\n  boundary: 'clippingParents',\n  multiple: false,\n  name: null,\n  offset: [0, 2],\n  placeholder: '',\n  placement: 'bottom-start',\n  search: false,\n  searchNormalize: false\n}\n\nconst DefaultType = {\n  boundary: '(string|element)',\n  multiple: 'boolean',\n  name: '(string|null)',\n  offset: '(array|string|function)',\n  placeholder: 'string',\n  placement: 'string',\n  search: 'boolean',\n  searchNormalize: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Combobox extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._toggle = this._element\n    this._menu = SelectorEngine.next(this._toggle, SELECTOR_MENU)[0]\n    this._valueDisplay = SelectorEngine.findOne(SELECTOR_VALUE, this._toggle)\n    this._searchInput = SelectorEngine.findOne(SELECTOR_SEARCH_INPUT, this._menu)\n    this._noResults = SelectorEngine.findOne(SELECTOR_NO_RESULTS, this._menu)\n    this._hiddenInput = null\n    this._menuInstance = null\n\n    this._createHiddenInput()\n    this._createMenuInstance()\n    this._syncInitialSelection()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._toggle) || this._isShown()) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._toggle, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.show()\n\n    if (this._searchInput) {\n      this._searchInput.value = ''\n      this._filterItems('')\n      requestAnimationFrame(() => this._searchInput.focus())\n    }\n\n    EventHandler.trigger(this._toggle, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._toggle, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.hide()\n    EventHandler.trigger(this._toggle, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._menuInstance) {\n      this._menuInstance.dispose()\n      this._menuInstance = null\n    }\n\n    if (this._hiddenInput) {\n      this._hiddenInput.remove()\n      this._hiddenInput = null\n    }\n\n    EventHandler.off(this._menu, EVENT_KEY)\n    EventHandler.off(this._toggle, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _createHiddenInput() {\n    const { name } = this._config\n    if (!name) {\n      return\n    }\n\n    this._hiddenInput = document.createElement('input')\n    this._hiddenInput.type = 'hidden'\n    this._hiddenInput.name = name\n    this._hiddenInput.value = ''\n    this._toggle.parentNode.insertBefore(this._hiddenInput, this._toggle)\n  }\n\n  _createMenuInstance() {\n    this._menuInstance = new Menu(this._toggle, {\n      menu: this._menu,\n      autoClose: this._config.multiple ? 'outside' : true,\n      boundary: this._config.boundary,\n      offset: this._config.offset,\n      placement: this._config.placement\n    })\n  }\n\n  _syncInitialSelection() {\n    const selectedItems = this._getSelectedItems()\n    if (selectedItems.length > 0) {\n      this._updateToggleText()\n      this._updateHiddenInput()\n    } else {\n      this._showPlaceholder()\n    }\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._menu, 'click', SELECTOR_MENU_ITEM, event => {\n      const item = event.target.closest(SELECTOR_MENU_ITEM)\n      if (!item || isDisabled(item)) {\n        return\n      }\n\n      event.preventDefault()\n      event.stopPropagation()\n      this._selectItem(item)\n    })\n\n    EventHandler.on(this._toggle, 'keydown', event => {\n      this._handleToggleKeydown(event)\n    })\n\n    EventHandler.on(this._menu, 'keydown', event => {\n      this._handleMenuKeydown(event)\n    })\n\n    if (this._searchInput) {\n      EventHandler.on(this._searchInput, 'input', () => {\n        this._filterItems(this._searchInput.value)\n      })\n\n      EventHandler.on(this._searchInput, 'keydown', event => {\n        if (event.key === ARROW_DOWN_KEY) {\n          event.preventDefault()\n          const items = this._getVisibleItems()\n          if (items.length > 0) {\n            items[0].focus()\n          }\n        }\n\n        if (event.key === ESCAPE_KEY) {\n          this.hide()\n          this._toggle.focus()\n        }\n      })\n    }\n  }\n\n  _selectItem(item) {\n    if (this._config.multiple) {\n      item.classList.toggle(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', item.classList.contains(CLASS_NAME_SELECTED))\n    } else {\n      const previouslySelected = SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n      for (const prev of previouslySelected) {\n        prev.classList.remove(CLASS_NAME_SELECTED)\n        prev.setAttribute('aria-selected', 'false')\n      }\n\n      item.classList.add(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', 'true')\n    }\n\n    this._updateToggleText()\n    this._updateHiddenInput()\n\n    const value = this._config.multiple ?\n      this._getSelectedItems().map(el => el.dataset.bsValue) :\n      item.dataset.bsValue\n\n    EventHandler.trigger(this._toggle, EVENT_CHANGE, {\n      value,\n      item\n    })\n\n    if (!this._config.multiple) {\n      this.hide()\n      this._toggle.focus()\n    }\n  }\n\n  _updateToggleText() {\n    const selectedItems = this._getSelectedItems()\n\n    if (selectedItems.length === 0) {\n      this._showPlaceholder()\n      return\n    }\n\n    this._valueDisplay.classList.remove(CLASS_NAME_PLACEHOLDER)\n\n    if (this._config.multiple && selectedItems.length > 1) {\n      this._valueDisplay.textContent = `${selectedItems.length} selected`\n    } else {\n      const item = selectedItems[0]\n      const label = SelectorEngine.findOne('.menu-item-content > span:first-child', item)\n      this._valueDisplay.textContent = label ? label.textContent : item.textContent.trim()\n    }\n  }\n\n  _showPlaceholder() {\n    const { placeholder } = this._config\n    if (placeholder) {\n      this._valueDisplay.textContent = placeholder\n      this._valueDisplay.classList.add(CLASS_NAME_PLACEHOLDER)\n    }\n  }\n\n  _updateHiddenInput() {\n    if (!this._hiddenInput) {\n      return\n    }\n\n    const selectedItems = this._getSelectedItems()\n    const values = selectedItems.map(el => el.dataset.bsValue)\n    this._hiddenInput.value = this._config.multiple ? values.join(',') : (values[0] || '')\n  }\n\n  _getSelectedItems() {\n    return SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n  }\n\n  _getVisibleItems() {\n    return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu)\n      .filter(item => isVisible(item))\n  }\n\n  _filterItems(query) {\n    const normalizedQuery = this._normalizeText(query.toLowerCase().trim())\n    const items = SelectorEngine.find(SELECTOR_MENU_ITEM, this._menu)\n    let visibleCount = 0\n\n    for (const item of items) {\n      const text = this._normalizeText(item.textContent.toLowerCase().trim())\n      const matches = !normalizedQuery || text.includes(normalizedQuery)\n      item.style.display = matches ? '' : 'none'\n      if (matches) {\n        visibleCount++\n      }\n    }\n\n    if (this._noResults) {\n      this._noResults.classList.toggle('d-none', visibleCount > 0)\n    }\n  }\n\n  _normalizeText(text) {\n    if (this._config.searchNormalize) {\n      return text.normalize('NFD').replace(/[\\u0300-\\u036F]/g, '')\n    }\n\n    return text\n  }\n\n  _handleToggleKeydown(event) {\n    const { key } = event\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      if (!this._isShown()) {\n        this.show()\n      }\n\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const target = key === ARROW_DOWN_KEY ? items[0] : items[items.length - 1]\n        target.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !this._isShown()) {\n      event.preventDefault()\n      this.show()\n    }\n  }\n\n  _handleMenuKeydown(event) {\n    const { key, target } = event\n\n    if (key === ESCAPE_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n      this._toggle.focus()\n      return\n    }\n\n    if (key === TAB_KEY) {\n      this.hide()\n      return\n    }\n\n    const isInput = target.matches('input')\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n      }\n\n      return\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const targetItem = key === HOME_KEY ? items[0] : items[items.length - 1]\n        targetItem.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !isInput) {\n      event.preventDefault()\n      const item = target.closest(SELECTOR_MENU_ITEM)\n      if (item && !isDisabled(item)) {\n        this._selectItem(item)\n      }\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Combobox.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Combobox.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const toggle of SelectorEngine.find(SELECTOR_DATA_TOGGLE)) {\n    Combobox.getOrCreateInstance(toggle)\n  }\n})\n\nexport default Combobox\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap datepicker.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { Calendar } from 'vanilla-calendar-pro'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'datepicker'\nconst DATA_KEY = 'bs.datepicker'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"datepicker\"]'\n\nconst HIDE_DELAY = 100 // ms delay before hiding after selection\n\nconst Default = {\n  datepickerTheme: null, // 'light', 'dark', 'auto' - explicit theme for datepicker popover only\n  dateMin: null,\n  dateMax: null,\n  dateFormat: null, // Intl.DateTimeFormat options, or function(date, locale) => string\n  displayElement: null, // Element to show formatted date (defaults to element for buttons)\n  displayMonthsCount: 1, // Number of months to display side-by-side\n  firstWeekday: 1, // Monday\n  inline: false, // Render calendar inline (no popup)\n  locale: 'default',\n  positionElement: null, // Element to position calendar relative to (defaults to input)\n  selectedDates: [],\n  selectionMode: 'single', // 'single', 'multiple', 'multiple-ranged'\n  placement: 'left', // 'left', 'center', 'right', 'auto'\n  vcpOptions: {} // Pass-through for any VCP option\n}\n\nconst DefaultType = {\n  datepickerTheme: '(null|string)',\n  dateMin: '(null|string|number|object)',\n  dateMax: '(null|string|number|object)',\n  dateFormat: '(null|object|function)',\n  displayElement: '(null|string|element|boolean)',\n  displayMonthsCount: 'number',\n  firstWeekday: 'number',\n  inline: 'boolean',\n  locale: 'string',\n  positionElement: '(null|string|element)',\n  selectedDates: 'array',\n  selectionMode: 'string',\n  placement: 'string',\n  vcpOptions: 'object'\n}\n\n/**\n * Class definition\n */\n\nclass Datepicker extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._calendar = null\n    this._isShown = false\n\n    this._initCalendar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    return this._isShown ? this.hide() : this.show()\n  }\n\n  show() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || isDisabled(this._element) || this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.show()\n    this._isShown = true\n\n    EventHandler.trigger(this._element, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || !this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.hide()\n    this._isShown = false\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._themeObserver) {\n      this._themeObserver.disconnect()\n      this._themeObserver = null\n    }\n\n    if (this._calendar) {\n      this._calendar.destroy()\n    }\n\n    this._calendar = null\n    super.dispose()\n  }\n\n  getSelectedDates() {\n    const dates = this._calendar?.context?.selectedDates\n    return dates ? [...dates] : []\n  }\n\n  setSelectedDates(dates) {\n    if (this._calendar) {\n      this._calendar.set({ selectedDates: dates })\n    }\n  }\n\n  // Private\n  _initCalendar() {\n    this._isInput = this._element.tagName === 'INPUT'\n    this._isInline = this._config.inline\n\n    // For inline mode, look for a hidden input child to bind to\n    if (this._isInline && !this._isInput) {\n      this._boundInput = this._element.querySelector('input[type=\"hidden\"], input[name]')\n    }\n\n    this._positionElement = this._resolvePositionElement()\n    this._displayElement = this._resolveDisplayElement()\n\n    const calendarOptions = this._buildCalendarOptions()\n\n    // Create calendar on the position element (for correct popup positioning)\n    // but value updates still go to this._element (the input)\n    this._calendar = new Calendar(this._positionElement, calendarOptions)\n    this._calendar.init()\n\n    // Watch for theme changes on ancestor elements (for live theme switching)\n    this._setupThemeObserver()\n\n    // Set initial value if input has a value\n    if (this._isInput && this._element.value) {\n      this._parseInputValue()\n    }\n\n    // Populate input/display with preselected dates\n    this._updateDisplayWithSelectedDates()\n  }\n\n  _updateDisplayWithSelectedDates() {\n    const { selectedDates } = this._config\n    if (!selectedDates || selectedDates.length === 0) {\n      return\n    }\n\n    const formattedDate = this._formatDateForInput(selectedDates)\n\n    if (this._isInput) {\n      this._element.value = formattedDate\n    }\n\n    if (this._boundInput) {\n      this._boundInput.value = selectedDates.join(',')\n    }\n\n    if (this._displayElement) {\n      this._displayElement.textContent = formattedDate\n    }\n  }\n\n  _resolvePositionElement() {\n    let { positionElement } = this._config\n\n    if (typeof positionElement === 'string') {\n      positionElement = document.querySelector(positionElement)\n    }\n\n    // Use input's parent if in form-adorn\n    if (!positionElement && this._isInput && !this._isInline) {\n      const parent = this._element.closest('.form-adorn')\n      if (parent) {\n        positionElement = parent\n      }\n    }\n\n    return positionElement || this._element\n  }\n\n  _resolveDisplayElement() {\n    const { displayElement } = this._config\n\n    if (typeof displayElement === 'string') {\n      return document.querySelector(displayElement)\n    }\n\n    // For buttons/non-inputs (not inline), look for a [data-bs-datepicker-display] child\n    if (displayElement === true || (displayElement === null && !this._isInput && !this._isInline)) {\n      const displayChild = this._element.querySelector('[data-bs-datepicker-display]')\n      return displayChild || this._element\n    }\n\n    return displayElement\n  }\n\n  _getThemeAncestor() {\n    return this._element.closest('[data-bs-theme]')\n  }\n\n  _getEffectiveTheme() {\n    // Priority: explicit datepickerTheme config > inherited from ancestor > none\n    const { datepickerTheme } = this._config\n    if (datepickerTheme) {\n      return datepickerTheme\n    }\n\n    const ancestor = this._getThemeAncestor()\n    return ancestor?.getAttribute('data-bs-theme') || null\n  }\n\n  _syncThemeAttribute(element) {\n    if (!element) {\n      return\n    }\n\n    const theme = this._getEffectiveTheme()\n\n    if (theme) {\n      // Copy theme to popover (needed because VCP appends to body, breaking CSS inheritance)\n      element.setAttribute('data-bs-theme', theme)\n    } else {\n      // No theme - remove attribute to allow natural inheritance\n      element.removeAttribute('data-bs-theme')\n    }\n  }\n\n  _setupThemeObserver() {\n    // Watch for theme changes on ancestor elements\n    const ancestor = this._getThemeAncestor()\n    if (!ancestor || this._config.datepickerTheme) {\n      // No ancestor to watch, or explicit datepickerTheme overrides\n      return\n    }\n\n    this._themeObserver = new MutationObserver(() => {\n      this._syncThemeAttribute(this._calendar?.context?.mainElement)\n    })\n\n    this._themeObserver.observe(ancestor, {\n      attributes: true,\n      attributeFilter: ['data-bs-theme']\n    })\n  }\n\n  _buildCalendarOptions() {\n    // Get theme for VCP - use 'system' for auto-detection if no explicit theme\n    const theme = this._getEffectiveTheme()\n    // VCP uses 'system' for auto, Bootstrap uses 'auto'\n    const vcpTheme = !theme || theme === 'auto' ? 'system' : theme\n\n    const calendarOptions = {\n      ...this._config.vcpOptions,\n      inputMode: !this._isInline,\n      positionToInput: this._config.placement,\n      firstWeekday: this._config.firstWeekday,\n      locale: this._config.locale,\n      selectionDatesMode: this._config.selectionMode,\n      selectedDates: this._config.selectedDates,\n      displayMonthsCount: this._config.displayMonthsCount,\n      type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',\n      selectedTheme: vcpTheme,\n      themeAttrDetect: '[data-bs-theme]',\n      onClickDate: (self, event) => this._handleDateClick(self, event),\n      onInit: self => {\n        this._syncThemeAttribute(self.context.mainElement)\n      },\n      onShow: () => {\n        this._isShown = true\n        this._syncThemeAttribute(this._calendar.context.mainElement)\n      },\n      onHide: () => {\n        this._isShown = false\n      }\n    }\n\n    // Navigate to the month of the first selected date\n    if (this._config.selectedDates.length > 0) {\n      const firstDate = this._parseDate(this._config.selectedDates[0])\n      calendarOptions.selectedMonth = firstDate.getMonth()\n      calendarOptions.selectedYear = firstDate.getFullYear()\n    }\n\n    if (this._config.dateMin) {\n      calendarOptions.dateMin = this._config.dateMin\n    }\n\n    if (this._config.dateMax) {\n      calendarOptions.dateMax = this._config.dateMax\n    }\n\n    return calendarOptions\n  }\n\n  _handleDateClick(self, event) {\n    const selectedDates = [...self.context.selectedDates]\n\n    if (selectedDates.length > 0) {\n      const formattedDate = this._formatDateForInput(selectedDates)\n\n      if (this._isInput) {\n        this._element.value = formattedDate\n      }\n\n      if (this._boundInput) {\n        this._boundInput.value = selectedDates.join(',')\n      }\n\n      if (this._displayElement) {\n        this._displayElement.textContent = formattedDate\n      }\n    }\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      dates: selectedDates,\n      event\n    })\n\n    this._maybeHideAfterSelection(selectedDates)\n  }\n\n  _maybeHideAfterSelection(selectedDates) {\n    if (this._isInline) {\n      return\n    }\n\n    const shouldHide =\n      (this._config.selectionMode === 'single' && selectedDates.length > 0) ||\n      (this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2)\n\n    if (shouldHide) {\n      setTimeout(() => this.hide(), HIDE_DELAY)\n    }\n  }\n\n  _parseDate(dateStr) {\n    const [year, month, day] = dateStr.split('-')\n    return new Date(year, month - 1, day)\n  }\n\n  _formatDate(dateStr) {\n    const date = this._parseDate(dateStr)\n    const locale = this._config.locale === 'default' ? undefined : this._config.locale\n    const { dateFormat } = this._config\n\n    // Custom function formatter\n    if (typeof dateFormat === 'function') {\n      return dateFormat(date, locale)\n    }\n\n    // Intl.DateTimeFormat options object\n    if (dateFormat && typeof dateFormat === 'object') {\n      return new Intl.DateTimeFormat(locale, dateFormat).format(date)\n    }\n\n    // Default: locale-aware formatting\n    return date.toLocaleDateString(locale)\n  }\n\n  _formatDateForInput(dates) {\n    if (dates.length === 0) {\n      return ''\n    }\n\n    if (dates.length === 1) {\n      return this._formatDate(dates[0])\n    }\n\n    // For date ranges, use en-dash; for multiple dates, use comma\n    const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', '\n    return dates.map(d => this._formatDate(d)).join(separator)\n  }\n\n  _parseInputValue() {\n    // Try to parse the input value as a date\n    const value = this._element.value.trim()\n    if (!value) {\n      return\n    }\n\n    const date = new Date(value)\n    if (!Number.isNaN(date.getTime())) {\n      const year = date.getFullYear()\n      const month = String(date.getMonth() + 1).padStart(2, '0')\n      const day = String(date.getDate()).padStart(2, '0')\n      const formatted = `${year}-${month}-${day}`\n      this._calendar.set({ selectedDates: [formatted] })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // Only handle if not an input (inputs use focus)\n  // Skip inline datepickers (they're always visible)\n  if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true') {\n    return\n  }\n\n  event.preventDefault()\n  Datepicker.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE, function () {\n  // Handle focus for input elements\n  if (this.tagName !== 'INPUT') {\n    return\n  }\n\n  Datepicker.getOrCreateInstance(this).show()\n})\n\n// Auto-initialize inline datepickers on DOMContentLoaded\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE}[data-bs-inline=\"true\"]`)) {\n    Datepicker.getOrCreateInstance(element)\n  }\n})\n\nexport default Datepicker\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dialog'\nconst DATA_KEY = 'bs.dialog'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_STATIC = 'dialog-static'\nconst CLASS_NAME_OPEN = 'dialog-open'\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\nconst SELECTOR_OPEN_MODAL_DIALOG = 'dialog.dialog[open]:not(.dialog-nonmodal)'\n\nconst Default = {\n  backdrop: true, // true (click dismisses) or 'static' (click does nothing) - only applies to modal dialogs\n  keyboard: true,\n  modal: true // true uses showModal(), false uses show() for non-modal dialogs\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  modal: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Dialog extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._element.open ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n\n    if (this._config.modal) {\n      // Modal dialog: use showModal() for focus trapping, backdrop, and top layer\n      this._element.showModal()\n      // Prevent body scroll for modal dialogs\n      document.body.classList.add(CLASS_NAME_OPEN)\n    } else {\n      // Non-modal dialog: use show() - no backdrop, no focus trap, no top layer\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n      this._element.show()\n    }\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }, this._element, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n\n    this._queueCallback(() => this._hideDialog(), this._element, this._isAnimated())\n  }\n\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n    super.dispose()\n  }\n\n  handleUpdate() {\n    // Provided for API consistency with Modal.\n    // Native dialogs handle their own positioning.\n  }\n\n  // Private\n  _hideDialog() {\n    this._element.close()\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n    this._isTransitioning = false\n\n    // Only restore body scroll if no other modal dialogs are open\n    if (!document.querySelector(SELECTOR_OPEN_MODAL_DIALOG)) {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n    }\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains('fade')\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      this._element.classList.remove(CLASS_NAME_STATIC)\n    }, this._element)\n  }\n\n  _addEventListeners() {\n    // Handle native cancel event (Escape key) - only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      // Prevent native close behavior - we'll handle it\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_CANCEL)\n      this.hide()\n    })\n\n    // Handle Escape key for non-modal dialogs (native cancel doesn't fire for show())\n    EventHandler.on(this._element, 'keydown', event => {\n      if (event.key !== 'Escape' || this._config.modal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_CANCEL)\n      this.hide()\n    })\n\n    // Handle backdrop clicks (only applies to modal dialogs)\n    // Native <dialog> fires click on the dialog element when backdrop is clicked\n    EventHandler.on(this._element, 'click', event => {\n      // Only handle clicks directly on the dialog (backdrop area)\n      // Non-modal dialogs don't have a backdrop\n      if (event.target !== this._element || !this._config.modal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      // Default: click backdrop to dismiss\n      this.hide()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  // Get config from trigger's data attributes\n  const config = Manipulator.getDataAttributes(this)\n\n  // Check if trigger is inside an open dialog\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Open new dialog first (its backdrop appears over current)\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    newDialog.show(this)\n\n    // Close the current dialog (no backdrop flash since new one is already open)\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      currentInstance.hide()\n    }\n\n    return\n  }\n\n  const data = Dialog.getOrCreateInstance(target, config)\n  data.toggle(this)\n})\n\nenableDismissTrigger(Dialog)\n\nexport default Dialog\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap nav-overflow.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'navoverflow'\nconst DATA_KEY = 'bs.navoverflow'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_UPDATE = `update${EVENT_KEY}`\nconst EVENT_OVERFLOW = `overflow${EVENT_KEY}`\n\nconst CLASS_NAME_OVERFLOW = 'nav-overflow'\nconst CLASS_NAME_OVERFLOW_MENU = 'nav-overflow-menu'\nconst CLASS_NAME_HIDDEN = 'd-none'\n\nconst SELECTOR_NAV_ITEM = '.nav-item'\nconst SELECTOR_NAV_LINK = '.nav-link'\nconst SELECTOR_OVERFLOW_TOGGLE = '.nav-overflow-toggle'\nconst SELECTOR_OVERFLOW_MENU = '.nav-overflow-menu'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  moreText: 'More',\n  moreIcon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\"><path d=\"M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3\"/></svg>',\n  threshold: 0 // Minimum items to keep visible before showing overflow\n}\n\nconst DefaultType = {\n  moreText: 'string',\n  moreIcon: 'string',\n  threshold: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass NavOverflow extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._items = []\n    this._overflowItems = []\n    this._overflowMenu = null\n    this._overflowToggle = null\n    this._resizeObserver = null\n    this._isInitialized = false\n\n    this._init()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._calculateOverflow()\n    EventHandler.trigger(this._element, EVENT_UPDATE)\n  }\n\n  dispose() {\n    if (this._resizeObserver) {\n      this._resizeObserver.disconnect()\n    }\n\n    // Move items back to original positions\n    this._restoreItems()\n\n    // Remove overflow menu\n    if (this._overflowToggle && this._overflowToggle.parentElement) {\n      this._overflowToggle.parentElement.remove()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _init() {\n    // Add overflow class to nav\n    this._element.classList.add(CLASS_NAME_OVERFLOW)\n\n    // Get all nav items\n    this._items = [...SelectorEngine.find(SELECTOR_NAV_ITEM, this._element)]\n\n    // Store original order data\n    for (const [index, item] of this._items.entries()) {\n      item.dataset.bsNavOrder = index\n    }\n\n    // Create overflow menu if it doesn't exist\n    this._createOverflowMenu()\n\n    // Setup resize observer\n    this._setupResizeObserver()\n\n    // Initial calculation\n    this._calculateOverflow()\n\n    this._isInitialized = true\n  }\n\n  _createOverflowMenu() {\n    // Check if overflow menu already exists\n    this._overflowToggle = SelectorEngine.findOne(SELECTOR_OVERFLOW_TOGGLE, this._element)\n\n    if (this._overflowToggle) {\n      this._overflowMenu = SelectorEngine.findOne(SELECTOR_OVERFLOW_MENU, this._element)\n      return\n    }\n\n    const overflowItem = document.createElement('li')\n    overflowItem.className = 'nav-item nav-overflow-item'\n    overflowItem.innerHTML = `\n      <button class=\"nav-link nav-overflow-toggle\" type=\"button\" data-bs-toggle=\"menu\" data-bs-placement=\"bottom-end\" aria-expanded=\"false\">\n        <span class=\"nav-overflow-icon\">${this._config.moreIcon}</span>\n        <span class=\"nav-overflow-text\">${this._config.moreText}</span>\n      </button>\n      <div class=\"${CLASS_NAME_OVERFLOW_MENU} menu\"></div>\n    `\n\n    this._element.append(overflowItem)\n    this._overflowToggle = overflowItem.querySelector(SELECTOR_OVERFLOW_TOGGLE)\n    this._overflowMenu = overflowItem.querySelector(SELECTOR_OVERFLOW_MENU)\n  }\n\n  _setupResizeObserver() {\n    if (typeof ResizeObserver === 'undefined') {\n      // Fallback for older browsers\n      EventHandler.on(window, 'resize', () => this._calculateOverflow())\n      return\n    }\n\n    this._resizeObserver = new ResizeObserver(() => {\n      this._calculateOverflow()\n    })\n\n    this._resizeObserver.observe(this._element)\n  }\n\n  _calculateOverflow() {\n    // First, restore all items to measure properly\n    this._restoreItems()\n\n    const navWidth = this._element.offsetWidth\n    const overflowItem = this._overflowToggle?.closest('.nav-item')\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      const itemWidth = item.offsetWidth\n      usedWidth += itemWidth\n\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      if (usedWidth > overflowThreshold) {\n        itemsToOverflow.push(item)\n      }\n    }\n\n    // Check if we need threshold minimum visible\n    const visibleCount = this._items.length - itemsToOverflow.length\n    if (visibleCount < this._config.threshold && this._items.length > this._config.threshold) {\n      // Add more items to overflow until we reach threshold (but not keep items)\n      const toMove = this._items.slice(this._config.threshold).filter(item => !item.classList.contains(CLASS_NAME_KEEP))\n      itemsToOverflow.length = 0\n      itemsToOverflow.push(...toMove)\n    }\n\n    // Move items to overflow menu\n    this._moveToOverflow(itemsToOverflow)\n\n    // Show/hide overflow toggle\n    if (overflowItem) {\n      if (itemsToOverflow.length > 0) {\n        overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n      } else {\n        overflowItem.classList.add(CLASS_NAME_HIDDEN)\n      }\n    }\n\n    // Trigger overflow event if items changed\n    if (itemsToOverflow.length > 0) {\n      EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n        overflowCount: itemsToOverflow.length,\n        visibleCount: this._items.length - itemsToOverflow.length\n      })\n    }\n  }\n\n  _moveToOverflow(items) {\n    if (!this._overflowMenu) {\n      return\n    }\n\n    // Clear existing overflow items\n    this._overflowMenu.innerHTML = ''\n    this._overflowItems = []\n\n    for (const item of items) {\n      const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item)\n      if (!link) {\n        continue\n      }\n\n      const clonedLink = link.cloneNode(true)\n      clonedLink.className = 'menu-item'\n\n      if (link.classList.contains('active')) {\n        clonedLink.classList.add('active')\n      }\n\n      if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {\n        clonedLink.classList.add('disabled')\n      }\n\n      this._overflowMenu.append(clonedLink)\n\n      // Hide original item\n      item.classList.add(CLASS_NAME_HIDDEN)\n      item.dataset.bsNavOverflow = 'true'\n\n      this._overflowItems.push(item)\n    }\n  }\n\n  _restoreItems() {\n    for (const item of this._items) {\n      item.classList.remove(CLASS_NAME_HIDDEN)\n      delete item.dataset.bsNavOverflow\n    }\n\n    if (this._overflowMenu) {\n      this._overflowMenu.innerHTML = ''\n    }\n\n    this._overflowItems = []\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const element of SelectorEngine.find('[data-bs-toggle=\"nav-overflow\"]')) {\n    NavOverflow.getOrCreateInstance(element)\n  }\n})\n\nexport default NavOverflow\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport {\n  execute, executeAfterTransition, getElement, reflow\n} from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n  className: 'modal-backdrop',\n  clickCallback: null,\n  isAnimated: false,\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n  className: 'string',\n  clickCallback: '(function|null)',\n  isAnimated: 'boolean',\n  isVisible: 'boolean',\n  rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    const element = this._getElement()\n    if (this._config.isAnimated) {\n      reflow(element)\n    }\n\n    element.classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  // Private\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = this._config.className\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _configAfterMerge(config) {\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    const element = this._getElement()\n    this._config.rootElement.append(element)\n\n    EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n  autofocus: true,\n  trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n  autofocus: 'boolean',\n  trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n    this._isActive = false\n    this._lastTabNavDirection = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  activate() {\n    if (this._isActive) {\n      return\n    }\n\n    if (this._config.autofocus) {\n      this._config.trapElement.focus()\n    }\n\n    EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n    this._isActive = true\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return\n    }\n\n    this._isActive = false\n    EventHandler.off(document, EVENT_KEY)\n  }\n\n  // Private\n  _handleFocusin(event) {\n    const { trapElement } = this._config\n\n    if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n      return\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement)\n\n    if (elements.length === 0) {\n      trapElement.focus()\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus()\n    } else {\n      elements[0].focus()\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n  }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  // Public\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n\n  // Private\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProperty, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProperty)\n      const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n      element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _saveInitialAttribute(element, styleProperty) {\n    const actualValue = element.style.getPropertyValue(styleProperty)\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProperty, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProperty) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProperty)\n      // We only want to remove the property if the value is `null`; the value can also be zero\n      if (value === null) {\n        element.style.removeProperty(styleProperty)\n        return\n      }\n\n      Manipulator.removeDataAttribute(element, styleProperty)\n      element.style.setProperty(styleProperty, value)\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n      return\n    }\n\n    for (const sel of SelectorEngine.find(selector, this._element)) {\n      callBack(sel)\n    }\n  }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n  isDisabled,\n  isVisible\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n    }\n\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    const completeCallBack = () => {\n      if (!this._config.scroll || this._config.backdrop) {\n        this._focustrap.activate()\n      }\n\n      this._element.classList.add(CLASS_NAME_SHOW)\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._focustrap.deactivate()\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.add(CLASS_NAME_HIDING)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  // Private\n  _initializeBackDrop() {\n    const clickCallback = () => {\n      if (this._config.backdrop === 'static') {\n        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n        return\n      }\n\n      this.hide()\n    }\n\n    // 'static' option will be translated to true, and booleans will keep their value\n    const isVisible = Boolean(this._config.backdrop)\n\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: isVisible ? clickCallback : null\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (event.key !== ESCAPE_KEY) {\n        return\n      }\n\n      if (this._config.keyboard) {\n        this.hide()\n        return\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (alreadyOpen && alreadyOpen !== target) {\n    Offcanvas.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n    Offcanvas.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Offcanvas.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap strength.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'strength'\nconst DATA_KEY = 'bs.strength'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_STRENGTH_CHANGE = `strengthChange${EVENT_KEY}`\n\nconst SELECTOR_DATA_STRENGTH = '[data-bs-strength]'\n\nconst STRENGTH_LEVELS = ['weak', 'fair', 'good', 'strong']\n\nconst Default = {\n  input: null, // Selector or element for password input\n  minLength: 8,\n  messages: {\n    weak: 'Weak',\n    fair: 'Fair',\n    good: 'Good',\n    strong: 'Strong'\n  },\n  weights: {\n    minLength: 1,\n    extraLength: 1,\n    lowercase: 1,\n    uppercase: 1,\n    numbers: 1,\n    special: 1,\n    multipleSpecial: 1,\n    longPassword: 1\n  },\n  thresholds: [2, 4, 6], // weak ≤2, fair ≤4, good ≤6, strong >6\n  scorer: null // Custom scoring function (password) => number\n}\n\nconst DefaultType = {\n  input: '(string|element|null)',\n  minLength: 'number',\n  messages: 'object',\n  weights: 'object',\n  thresholds: 'array',\n  scorer: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Strength extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = this._getInput()\n    this._segments = SelectorEngine.find('.strength-segment', this._element)\n    this._textElement = SelectorEngine.findOne('.strength-text', this._element.parentElement)\n    this._currentStrength = null\n\n    if (this._input) {\n      this._addEventListeners()\n      // Check initial value\n      this._evaluate()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getStrength() {\n    return this._currentStrength\n  }\n\n  evaluate() {\n    this._evaluate()\n  }\n\n  // Private\n  _getInput() {\n    if (this._config.input) {\n      return typeof this._config.input === 'string' ?\n        SelectorEngine.findOne(this._config.input) :\n        this._config.input\n    }\n\n    // Look for preceding password input\n    const parent = this._element.parentElement\n    return SelectorEngine.findOne('input[type=\"password\"]', parent)\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, 'input', () => this._evaluate())\n    EventHandler.on(this._input, 'change', () => this._evaluate())\n  }\n\n  _evaluate() {\n    const password = this._input.value\n    const score = this._calculateScore(password)\n    const strength = this._scoreToStrength(score)\n\n    if (strength !== this._currentStrength) {\n      this._currentStrength = strength\n      this._updateUI(strength, score)\n\n      EventHandler.trigger(this._element, EVENT_STRENGTH_CHANGE, {\n        strength,\n        score,\n        password: password.length > 0 ? '***' : '' // Don't expose actual password\n      })\n    }\n  }\n\n  _calculateScore(password) {\n    if (!password) {\n      return 0\n    }\n\n    // Use custom scorer if provided\n    if (typeof this._config.scorer === 'function') {\n      return this._config.scorer(password)\n    }\n\n    const { weights } = this._config\n    let score = 0\n\n    // Length scoring\n    if (password.length >= this._config.minLength) {\n      score += weights.minLength\n    }\n\n    if (password.length >= this._config.minLength + 4) {\n      score += weights.extraLength\n    }\n\n    // Character variety\n    if (/[a-z]/.test(password)) {\n      score += weights.lowercase\n    }\n\n    if (/[A-Z]/.test(password)) {\n      score += weights.uppercase\n    }\n\n    if (/\\d/.test(password)) {\n      score += weights.numbers\n    }\n\n    // Special characters\n    if (/[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.special\n    }\n\n    // Extra points for more special chars or length\n    if (/[!@#$%^&*(),.?\":{}|<>].*[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.multipleSpecial\n    }\n\n    if (password.length >= 16) {\n      score += weights.longPassword\n    }\n\n    return score\n  }\n\n  _scoreToStrength(score) {\n    if (score === 0) {\n      return null\n    }\n\n    const [weak, fair, good] = this._config.thresholds\n\n    if (score <= weak) {\n      return 'weak'\n    }\n\n    if (score <= fair) {\n      return 'fair'\n    }\n\n    if (score <= good) {\n      return 'good'\n    }\n\n    return 'strong'\n  }\n\n  _updateUI(strength) {\n    // Update data attribute on element\n    if (strength) {\n      this._element.dataset.bsStrength = strength\n    } else {\n      delete this._element.dataset.bsStrength\n    }\n\n    // Update segmented meter\n    const strengthIndex = strength ? STRENGTH_LEVELS.indexOf(strength) : -1\n\n    for (const [index, segment] of this._segments.entries()) {\n      if (index <= strengthIndex) {\n        segment.classList.add('active')\n      } else {\n        segment.classList.remove('active')\n      }\n    }\n\n    // Update text feedback\n    if (this._textElement) {\n      if (strength && this._config.messages[strength]) {\n        this._textElement.textContent = this._config.messages[strength]\n        this._textElement.dataset.bsStrength = strength\n\n        // Also set the color via inheriting from parent or using CSS variable\n        const colorMap = {\n          weak: 'danger',\n          fair: 'warning',\n          good: 'info',\n          strong: 'success'\n        }\n        this._textElement.style.setProperty('--strength-color', `var(--${colorMap[strength]}-text)`)\n      } else {\n        this._textElement.textContent = ''\n        delete this._textElement.dataset.bsStrength\n      }\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_STRENGTH)) {\n    Strength.getOrCreateInstance(element)\n  }\n})\n\nexport default Strength\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap otp-input.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'otpInput'\nconst DATA_KEY = 'bs.otp-input'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\nconst Default = {\n  length: 6,\n  mask: false\n}\n\nconst DefaultType = {\n  length: 'number',\n  mask: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._inputs = SelectorEngine.find(SELECTOR_INPUT, this._element)\n    this._setupInputs()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getValue() {\n    return this._inputs.map(input => input.value).join('')\n  }\n\n  setValue(value) {\n    const chars = String(value).split('')\n    for (const [index, input] of this._inputs.entries()) {\n      input.value = chars[index] || ''\n    }\n\n    this._checkComplete()\n  }\n\n  clear() {\n    for (const input of this._inputs) {\n      input.value = ''\n    }\n\n    this._inputs[0]?.focus()\n  }\n\n  focus() {\n    // Focus first empty input, or last input if all filled\n    const emptyInput = this._inputs.find(input => !input.value)\n    if (emptyInput) {\n      emptyInput.focus()\n    } else {\n      this._inputs.at(-1)?.focus()\n    }\n  }\n\n  // Private\n  _setupInputs() {\n    for (const input of this._inputs) {\n      // Set attributes for proper OTP handling\n      input.setAttribute('maxlength', '1')\n      input.setAttribute('inputmode', 'numeric')\n      input.setAttribute('pattern', '\\\\d*')\n\n      // First input gets autocomplete for browser OTP autofill\n      if (input === this._inputs[0]) {\n        input.setAttribute('autocomplete', 'one-time-code')\n      } else {\n        input.setAttribute('autocomplete', 'off')\n      }\n\n      // Mask input if configured\n      if (this._config.mask) {\n        input.setAttribute('type', 'password')\n      }\n    }\n  }\n\n  _addEventListeners() {\n    for (const [index, input] of this._inputs.entries()) {\n      EventHandler.on(input, 'input', event => this._handleInput(event, index))\n      EventHandler.on(input, 'keydown', event => this._handleKeydown(event, index))\n      EventHandler.on(input, 'paste', event => this._handlePaste(event))\n      EventHandler.on(input, 'focus', event => this._handleFocus(event))\n    }\n  }\n\n  _handleInput(event, index) {\n    const input = event.target\n\n    // Only allow digits\n    if (!/^\\d*$/.test(input.value)) {\n      input.value = input.value.replace(/\\D/g, '')\n    }\n\n    const { value } = input\n\n    // Handle multi-character input (some browsers/autofill)\n    if (value.length > 1) {\n      // Distribute characters across inputs\n      const chars = value.split('')\n      input.value = chars[0] || ''\n\n      for (let i = 1; i < chars.length && index + i < this._inputs.length; i++) {\n        this._inputs[index + i].value = chars[i]\n      }\n\n      // Focus appropriate input\n      const nextIndex = Math.min(index + chars.length, this._inputs.length - 1)\n      this._inputs[nextIndex].focus()\n    } else if (value && index < this._inputs.length - 1) {\n      // Auto-advance to next input\n      this._inputs[index + 1].focus()\n    }\n\n    EventHandler.trigger(this._element, EVENT_INPUT, {\n      value: this.getValue(),\n      index\n    })\n\n    this._checkComplete()\n  }\n\n  _handleKeydown(event, index) {\n    const { key } = event\n\n    switch (key) {\n      case 'Backspace': {\n        if (!this._inputs[index].value && index > 0) {\n          // Move to previous input and clear it\n          event.preventDefault()\n          this._inputs[index - 1].value = ''\n          this._inputs[index - 1].focus()\n        }\n\n        break\n      }\n\n      case 'Delete': {\n        // Clear current and shift remaining values left\n        event.preventDefault()\n        for (let i = index; i < this._inputs.length - 1; i++) {\n          this._inputs[i].value = this._inputs[i + 1].value\n        }\n\n        this._inputs.at(-1).value = ''\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (index > 0) {\n          event.preventDefault()\n          this._inputs[index - 1].focus()\n        }\n\n        break\n      }\n\n      case 'ArrowRight': {\n        if (index < this._inputs.length - 1) {\n          event.preventDefault()\n          this._inputs[index + 1].focus()\n        }\n\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handlePaste(event) {\n    event.preventDefault()\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    const digits = pastedData.replace(/\\D/g, '').slice(0, this._inputs.length)\n\n    if (digits) {\n      this.setValue(digits)\n\n      // Focus last filled input or last input\n      const lastIndex = Math.min(digits.length, this._inputs.length) - 1\n      this._inputs[lastIndex].focus()\n    }\n  }\n\n  _handleFocus(event) {\n    // Select the content on focus for easy replacement\n    event.target.select()\n  }\n\n  _checkComplete() {\n    const value = this.getValue()\n    const isComplete = value.length === this._inputs.length &&\n      this._inputs.every(input => input.value !== '')\n\n    if (isComplete) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  dd: [],\n  div: [],\n  dl: [],\n  dt: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n      continue\n    }\n\n    const attributeList = [].concat(...element.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [undefined, this])\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  arrow,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport {\n  execute, findShadowRoot, getElement, getUID, isRTL, noop\n} from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tooltip\"]'\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 6],\n  placement: 'top',\n  floatingConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  floatingConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._floatingCleanup = null\n    this._templateFactory = null\n    this._newContent = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n\n    // Protected\n    this.tip = null\n\n    this._parseResponsivePlacements()\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposeFloating()\n    this._disposeMediaQueryListeners()\n    super.dispose()\n  }\n\n  async show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    this._disposeFloating()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    const { container } = this._config\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    await this._createFloating(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposeFloating()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._floatingCleanup && this.tip) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle())\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposeFloating()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement(tip) {\n    // If we have responsive placements, get the one for current viewport\n    if (this._responsivePlacements) {\n      const placement = getResponsivePlacement(this._responsivePlacements, 'top')\n      return AttachmentMap[placement.toUpperCase()] || placement\n    }\n\n    // Execute placement (can be a function)\n    const placement = execute(this._config.placement, [this, tip, this._element])\n    return AttachmentMap[placement.toUpperCase()] || placement\n  }\n\n  _parseResponsivePlacements() {\n    // Only parse if placement is a string (not a function)\n    if (typeof this._config.placement !== 'string') {\n      this._responsivePlacements = null\n      return\n    }\n\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, 'top')\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  async _createFloating(tip) {\n    const placement = this._getPlacement(tip)\n    const arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n\n    // Initial position update\n    await this._updateFloatingPosition(tip, placement, arrowElement)\n\n    // Set up auto-update for scroll/resize\n    this._floatingCleanup = autoUpdate(\n      this._element,\n      tip,\n      () => this._updateFloatingPosition(tip, null, arrowElement)\n    )\n  }\n\n  async _updateFloatingPosition(tip = this.tip, placement = null, arrowElement = null) {\n    if (!tip) {\n      return\n    }\n\n    if (!placement) {\n      placement = this._getPlacement(tip)\n    }\n\n    if (!arrowElement) {\n      arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n    }\n\n    const middleware = this._getFloatingMiddleware(arrowElement)\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    const { x, y, placement: finalPlacement, middlewareData } = await computePosition(\n      this._element,\n      tip,\n      floatingConfig\n    )\n\n    // Apply position to tooltip\n    Object.assign(tip.style, {\n      position: 'absolute',\n      left: `${x}px`,\n      top: `${y}px`\n    })\n\n    // Ensure arrow is absolutely positioned within tooltip\n    if (arrowElement) {\n      arrowElement.style.position = 'absolute'\n    }\n\n    // Set placement attribute for CSS arrow styling\n    Manipulator.setDataAttribute(tip, 'placement', finalPlacement)\n\n    // Position arrow along the edge (center it) if present\n    // The CSS handles which edge to place it on via data-bs-placement\n    if (arrowElement && middlewareData.arrow) {\n      const { x: arrowX, y: arrowY } = middlewareData.arrow\n      const isVertical = finalPlacement.startsWith('top') || finalPlacement.startsWith('bottom')\n\n      // Only set the cross-axis position (centering along the edge)\n      // The main-axis position (which edge) is handled by CSS\n      Object.assign(arrowElement.style, {\n        left: isVertical && arrowX !== null ? `${arrowX}px` : '',\n        top: !isVertical && arrowY !== null ? `${arrowY}px` : '',\n        // Reset the other axis to let CSS handle it\n        right: '',\n        bottom: ''\n      })\n    }\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      // Floating UI passes different args, adapt the interface for offset function callbacks\n      return ({ placement, rects }) => {\n        const result = offset({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this._element, this._element])\n  }\n\n  _getFloatingMiddleware(arrowElement) {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      // Offset middleware - handles distance from reference\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      // Flip middleware - handles fallback placements\n      flip({\n        fallbackPlacements: this._config.fallbackPlacements\n      }),\n      // Shift middleware - prevents overflow\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    // Arrow middleware - positions the arrow element\n    if (arrowElement) {\n      middleware.push(arrow({ element: arrowElement }))\n    }\n\n    return middleware\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK])\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const [key, value] of Object.entries(this._config)) {\n      if (this.constructor.Default[key] !== value) {\n        config[key] = value\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n}\n\n/**\n * Data API implementation - auto-initialize tooltips\n */\n\nconst initTooltip = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Get or create instance and trigger the appropriate action\n  const tooltip = Tooltip.getOrCreateInstance(target)\n\n  // For focus events, manually trigger enter to show\n  if (event.type === 'focusin') {\n    tooltip._activeTrigger.focus = true\n    tooltip._enter()\n  }\n}\n\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initTooltip)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initTooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"popover\"]'\n\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_MOUSEENTER = 'mouseenter'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return this._getTitle() || this._getContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n}\n\n/**\n * Data API implementation - auto-initialize popovers\n */\n\nconst initPopover = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Prevent default for click events to avoid navigation\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Get or create instance\n  const popover = Popover.getOrCreateInstance(target)\n\n  // Trigger the appropriate action based on event type\n  if (event.type === 'click') {\n    popover.toggle()\n  } else if (event.type === 'focusin') {\n    popover._activeTrigger.focus = true\n    popover._enter()\n  }\n}\n\n// Support click (default), hover, and focus triggers\nEventHandler.on(document, EVENT_CLICK, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initPopover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_MENU_ITEM = 'menu-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\n\nconst Default = {\n  rootMargin: '0px 0px -25%',\n  smoothScroll: false,\n  target: null,\n  threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n  rootMargin: 'string',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n    this._activeTarget = null\n    this._observer = null\n    this._previousScrollData = {\n      visibleEntryTop: 0,\n      parentScrollTop: 0\n    }\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    } else {\n      this._observer = this._getNewObserver()\n    }\n\n    for (const section of this._observableSections.values()) {\n      this._observer.observe(section)\n    }\n  }\n\n  dispose() {\n    this._observer.disconnect()\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.target = getElement(config.target) || document.body\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // unregister any previous listeners\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const observableSection = this._observableSections.get(event.target.hash)\n      if (observableSection) {\n        event.preventDefault()\n        const root = this._rootElement || window\n        const height = observableSection.offsetTop - this._element.offsetTop\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'smooth' })\n          return\n        }\n\n        // Chrome 60 doesn't support `scrollTo`\n        root.scrollTop = height\n      }\n    })\n  }\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin\n    }\n\n    return new IntersectionObserver(entries => this._observerCallback(entries), options)\n  }\n\n  // The logic of selection\n  _observerCallback(entries) {\n    const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n    const activate = entry => {\n      this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n      this._process(targetElement(entry))\n    }\n\n    const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n    const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n    this._previousScrollData.parentScrollTop = parentScrollTop\n\n    for (const entry of entries) {\n      if (!entry.isIntersecting) {\n        this._activeTarget = null\n        this._clearActiveClass(targetElement(entry))\n\n        continue\n      }\n\n      const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n      // if we are scrolling down, pick the bigger offsetTop\n      if (userScrollsDown && entryIsLowerThanPrevious) {\n        activate(entry)\n        // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n        if (!parentScrollTop) {\n          return\n        }\n\n        continue\n      }\n\n      // if we are scrolling up, pick the smallest offsetTop\n      if (!userScrollsDown && !entryIsLowerThanPrevious) {\n        activate(entry)\n      }\n    }\n  }\n\n  _initializeTargetsAndObservables() {\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n    for (const anchor of targetLinks) {\n      // ensure that the anchor has an id and is not disabled\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element)\n\n      // ensure that the observableSection exists & is visible\n      if (isVisible(observableSection)) {\n        this._targetLinks.set(decodeURI(anchor.hash), anchor)\n        this._observableSections.set(anchor.hash, observableSection)\n      }\n    }\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate menu parents\n    if (target.classList.contains(CLASS_NAME_MENU_ITEM)) {\n      const menuToggle = target.closest('.menu')?.previousElementSibling\n      if (menuToggle?.matches(SELECTOR_MENU_TOGGLE)) {\n        menuToggle.classList.add(CLASS_NAME_ACTIVE)\n      }\n\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\nconst SELECTOR_MENU = '.menu'\nconst NOT_SELECTOR_MENU_TOGGLE = `:not(${SELECTOR_MENU_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_MENU_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_TAB_PANEL}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleMenu(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleMenu(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n\n    const children = this._getChildren().filter(element => !isDisabled(element))\n    let nextActiveElement\n\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n    }\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n    }\n  }\n\n  _toggleMenu(element, open) {\n    const outerElem = this._getOuterElement(element)\n    const menuToggle = SelectorEngine.findOne(SELECTOR_MENU_TOGGLE, outerElem)\n    if (!menuToggle) {\n      return\n    }\n\n    const menu = SelectorEngine.findOne(SELECTOR_MENU, outerElem)\n\n    menuToggle.classList.toggle(CLASS_NAME_ACTIVE, open)\n    if (menu) {\n      menu.classList.toggle(CLASS_NAME_SHOW, open)\n    }\n\n    menuToggle.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toggler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { eventActionOnPlugin } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toggler'\nconst DATA_KEY = 'bs.toggler'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_TOGGLE = `toggle${EVENT_KEY}`\nconst EVENT_TOGGLED = `toggled${EVENT_KEY}`\nconst EVENT_CLICK = 'click'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"toggler\"]'\n\nconst DefaultType = {\n  attribute: 'string',\n  value: '(string|number|boolean)'\n}\n\nconst Default = {\n  attribute: 'class',\n  value: null\n}\n\n/**\n * Class definition\n */\n\nclass Toggler extends BaseComponent {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    const toggleEvent = EventHandler.trigger(this._element, EVENT_TOGGLE)\n\n    if (toggleEvent.defaultPrevented) {\n      return\n    }\n\n    this._execute()\n\n    EventHandler.trigger(this._element, EVENT_TOGGLED)\n  }\n\n  // Private\n  _execute() {\n    const { attribute, value } = this._config\n\n    if (attribute === 'id') {\n      return // You have to be kidding\n    }\n\n    if (attribute === 'class') {\n      this._element.classList.toggle(value)\n      return\n    }\n\n    // Compare as strings since getAttribute() always returns a string\n    if (this._element.getAttribute(attribute) === String(value)) {\n      this._element.removeAttribute(attribute)\n      return\n    }\n\n    this._element.setAttribute(attribute, value)\n  }\n}\n\n/**\n * Data API implementation\n */\n\neventActionOnPlugin(Toggler, EVENT_CLICK, SELECTOR_DATA_TOGGLE, 'toggle')\n\nexport default Toggler\n"],"mappings":"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","ignoreList":[]}
\ No newline at end of file
diff --git a/js/dist/combobox.js b/js/dist/combobox.js
new file mode 100644 (file)
index 0000000..5ca9c68
--- /dev/null
@@ -0,0 +1,398 @@
+/*!
+  * Bootstrap combobox.js v6.0.0-alpha1 (https://getbootstrap.com/)
+  * Copyright 2011-2026 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+  */
+import BaseComponent from './base-component.js';
+import EventHandler from './dom/event-handler.js';
+import SelectorEngine from './dom/selector-engine.js';
+import Menu from './menu.js';
+import { isDisabled, isVisible, getNextActiveElement } from './util/index.js';
+
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap combobox.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+
+/**
+ * Constants
+ */
+
+const NAME = 'combobox';
+const DATA_KEY = 'bs.combobox';
+const EVENT_KEY = `.${DATA_KEY}`;
+const DATA_API_KEY = '.data-api';
+const ESCAPE_KEY = 'Escape';
+const TAB_KEY = 'Tab';
+const ARROW_UP_KEY = 'ArrowUp';
+const ARROW_DOWN_KEY = 'ArrowDown';
+const HOME_KEY = 'Home';
+const END_KEY = 'End';
+const ENTER_KEY = 'Enter';
+const SPACE_KEY = ' ';
+const EVENT_CHANGE = `change${EVENT_KEY}`;
+const EVENT_SHOW = `show${EVENT_KEY}`;
+const EVENT_SHOWN = `shown${EVENT_KEY}`;
+const EVENT_HIDE = `hide${EVENT_KEY}`;
+const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
+const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
+const CLASS_NAME_SHOW = 'show';
+const CLASS_NAME_SELECTED = 'selected';
+const CLASS_NAME_PLACEHOLDER = 'combobox-placeholder';
+const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="combobox"]';
+const SELECTOR_MENU = '.menu';
+const SELECTOR_MENU_ITEM = '.menu-item[data-bs-value]';
+const SELECTOR_VISIBLE_ITEMS = '.menu-item[data-bs-value]:not(.disabled):not(:disabled)';
+const SELECTOR_VALUE = '.combobox-value';
+const SELECTOR_SEARCH_INPUT = '.combobox-search-input';
+const SELECTOR_NO_RESULTS = '.combobox-no-results';
+const Default = {
+  boundary: 'clippingParents',
+  multiple: false,
+  name: null,
+  offset: [0, 2],
+  placeholder: '',
+  placement: 'bottom-start',
+  search: false,
+  searchNormalize: false
+};
+const DefaultType = {
+  boundary: '(string|element)',
+  multiple: 'boolean',
+  name: '(string|null)',
+  offset: '(array|string|function)',
+  placeholder: 'string',
+  placement: 'string',
+  search: 'boolean',
+  searchNormalize: 'boolean'
+};
+
+/**
+ * Class definition
+ */
+
+class Combobox extends BaseComponent {
+  constructor(element, config) {
+    super(element, config);
+    this._toggle = this._element;
+    this._menu = SelectorEngine.next(this._toggle, SELECTOR_MENU)[0];
+    this._valueDisplay = SelectorEngine.findOne(SELECTOR_VALUE, this._toggle);
+    this._searchInput = SelectorEngine.findOne(SELECTOR_SEARCH_INPUT, this._menu);
+    this._noResults = SelectorEngine.findOne(SELECTOR_NO_RESULTS, this._menu);
+    this._hiddenInput = null;
+    this._menuInstance = null;
+    this._createHiddenInput();
+    this._createMenuInstance();
+    this._syncInitialSelection();
+    this._addEventListeners();
+  }
+
+  // Getters
+  static get Default() {
+    return Default;
+  }
+  static get DefaultType() {
+    return DefaultType;
+  }
+  static get NAME() {
+    return NAME;
+  }
+
+  // Public
+  toggle() {
+    return this._isShown() ? this.hide() : this.show();
+  }
+  show() {
+    if (isDisabled(this._toggle) || this._isShown()) {
+      return;
+    }
+    const showEvent = EventHandler.trigger(this._toggle, EVENT_SHOW);
+    if (showEvent.defaultPrevented) {
+      return;
+    }
+    this._menuInstance.show();
+    if (this._searchInput) {
+      this._searchInput.value = '';
+      this._filterItems('');
+      requestAnimationFrame(() => this._searchInput.focus());
+    }
+    EventHandler.trigger(this._toggle, EVENT_SHOWN);
+  }
+  hide() {
+    if (!this._isShown()) {
+      return;
+    }
+    const hideEvent = EventHandler.trigger(this._toggle, EVENT_HIDE);
+    if (hideEvent.defaultPrevented) {
+      return;
+    }
+    this._menuInstance.hide();
+    EventHandler.trigger(this._toggle, EVENT_HIDDEN);
+  }
+  dispose() {
+    if (this._menuInstance) {
+      this._menuInstance.dispose();
+      this._menuInstance = null;
+    }
+    if (this._hiddenInput) {
+      this._hiddenInput.remove();
+      this._hiddenInput = null;
+    }
+    EventHandler.off(this._menu, EVENT_KEY);
+    EventHandler.off(this._toggle, EVENT_KEY);
+    super.dispose();
+  }
+
+  // Private
+  _isShown() {
+    return this._menu.classList.contains(CLASS_NAME_SHOW);
+  }
+  _createHiddenInput() {
+    const {
+      name
+    } = this._config;
+    if (!name) {
+      return;
+    }
+    this._hiddenInput = document.createElement('input');
+    this._hiddenInput.type = 'hidden';
+    this._hiddenInput.name = name;
+    this._hiddenInput.value = '';
+    this._toggle.parentNode.insertBefore(this._hiddenInput, this._toggle);
+  }
+  _createMenuInstance() {
+    this._menuInstance = new Menu(this._toggle, {
+      menu: this._menu,
+      autoClose: this._config.multiple ? 'outside' : true,
+      boundary: this._config.boundary,
+      offset: this._config.offset,
+      placement: this._config.placement
+    });
+  }
+  _syncInitialSelection() {
+    const selectedItems = this._getSelectedItems();
+    if (selectedItems.length > 0) {
+      this._updateToggleText();
+      this._updateHiddenInput();
+    } else {
+      this._showPlaceholder();
+    }
+  }
+  _addEventListeners() {
+    EventHandler.on(this._menu, 'click', SELECTOR_MENU_ITEM, event => {
+      const item = event.target.closest(SELECTOR_MENU_ITEM);
+      if (!item || isDisabled(item)) {
+        return;
+      }
+      event.preventDefault();
+      event.stopPropagation();
+      this._selectItem(item);
+    });
+    EventHandler.on(this._toggle, 'keydown', event => {
+      this._handleToggleKeydown(event);
+    });
+    EventHandler.on(this._menu, 'keydown', event => {
+      this._handleMenuKeydown(event);
+    });
+    if (this._searchInput) {
+      EventHandler.on(this._searchInput, 'input', () => {
+        this._filterItems(this._searchInput.value);
+      });
+      EventHandler.on(this._searchInput, 'keydown', event => {
+        if (event.key === ARROW_DOWN_KEY) {
+          event.preventDefault();
+          const items = this._getVisibleItems();
+          if (items.length > 0) {
+            items[0].focus();
+          }
+        }
+        if (event.key === ESCAPE_KEY) {
+          this.hide();
+          this._toggle.focus();
+        }
+      });
+    }
+  }
+  _selectItem(item) {
+    if (this._config.multiple) {
+      item.classList.toggle(CLASS_NAME_SELECTED);
+      item.setAttribute('aria-selected', item.classList.contains(CLASS_NAME_SELECTED));
+    } else {
+      const previouslySelected = SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu);
+      for (const prev of previouslySelected) {
+        prev.classList.remove(CLASS_NAME_SELECTED);
+        prev.setAttribute('aria-selected', 'false');
+      }
+      item.classList.add(CLASS_NAME_SELECTED);
+      item.setAttribute('aria-selected', 'true');
+    }
+    this._updateToggleText();
+    this._updateHiddenInput();
+    const value = this._config.multiple ? this._getSelectedItems().map(el => el.dataset.bsValue) : item.dataset.bsValue;
+    EventHandler.trigger(this._toggle, EVENT_CHANGE, {
+      value,
+      item
+    });
+    if (!this._config.multiple) {
+      this.hide();
+      this._toggle.focus();
+    }
+  }
+  _updateToggleText() {
+    const selectedItems = this._getSelectedItems();
+    if (selectedItems.length === 0) {
+      this._showPlaceholder();
+      return;
+    }
+    this._valueDisplay.classList.remove(CLASS_NAME_PLACEHOLDER);
+    if (this._config.multiple && selectedItems.length > 1) {
+      this._valueDisplay.textContent = `${selectedItems.length} selected`;
+    } else {
+      const item = selectedItems[0];
+      const label = SelectorEngine.findOne('.menu-item-content > span:first-child', item);
+      this._valueDisplay.textContent = label ? label.textContent : item.textContent.trim();
+    }
+  }
+  _showPlaceholder() {
+    const {
+      placeholder
+    } = this._config;
+    if (placeholder) {
+      this._valueDisplay.textContent = placeholder;
+      this._valueDisplay.classList.add(CLASS_NAME_PLACEHOLDER);
+    }
+  }
+  _updateHiddenInput() {
+    if (!this._hiddenInput) {
+      return;
+    }
+    const selectedItems = this._getSelectedItems();
+    const values = selectedItems.map(el => el.dataset.bsValue);
+    this._hiddenInput.value = this._config.multiple ? values.join(',') : values[0] || '';
+  }
+  _getSelectedItems() {
+    return SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu);
+  }
+  _getVisibleItems() {
+    return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(item => isVisible(item));
+  }
+  _filterItems(query) {
+    const normalizedQuery = this._normalizeText(query.toLowerCase().trim());
+    const items = SelectorEngine.find(SELECTOR_MENU_ITEM, this._menu);
+    let visibleCount = 0;
+    for (const item of items) {
+      const text = this._normalizeText(item.textContent.toLowerCase().trim());
+      const matches = !normalizedQuery || text.includes(normalizedQuery);
+      item.style.display = matches ? '' : 'none';
+      if (matches) {
+        visibleCount++;
+      }
+    }
+    if (this._noResults) {
+      this._noResults.classList.toggle('d-none', visibleCount > 0);
+    }
+  }
+  _normalizeText(text) {
+    if (this._config.searchNormalize) {
+      return text.normalize('NFD').replace(/[\u0300-\u036F]/g, '');
+    }
+    return text;
+  }
+  _handleToggleKeydown(event) {
+    const {
+      key
+    } = event;
+    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {
+      event.preventDefault();
+      if (!this._isShown()) {
+        this.show();
+      }
+      const items = this._getVisibleItems();
+      if (items.length > 0) {
+        const target = key === ARROW_DOWN_KEY ? items[0] : items[items.length - 1];
+        target.focus();
+      }
+      return;
+    }
+    if ((key === ENTER_KEY || key === SPACE_KEY) && !this._isShown()) {
+      event.preventDefault();
+      this.show();
+    }
+  }
+  _handleMenuKeydown(event) {
+    const {
+      key,
+      target
+    } = event;
+    if (key === ESCAPE_KEY) {
+      event.preventDefault();
+      event.stopPropagation();
+      this.hide();
+      this._toggle.focus();
+      return;
+    }
+    if (key === TAB_KEY) {
+      this.hide();
+      return;
+    }
+    const isInput = target.matches('input');
+    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {
+      event.preventDefault();
+      const items = this._getVisibleItems();
+      if (items.length > 0) {
+        getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus();
+      }
+      return;
+    }
+    if (key === HOME_KEY || key === END_KEY) {
+      event.preventDefault();
+      const items = this._getVisibleItems();
+      if (items.length > 0) {
+        const targetItem = key === HOME_KEY ? items[0] : items[items.length - 1];
+        targetItem.focus();
+      }
+      return;
+    }
+    if ((key === ENTER_KEY || key === SPACE_KEY) && !isInput) {
+      event.preventDefault();
+      const item = target.closest(SELECTOR_MENU_ITEM);
+      if (item && !isDisabled(item)) {
+        this._selectItem(item);
+      }
+    }
+  }
+
+  // Static
+  static jQueryInterface(config) {
+    return this.each(function () {
+      const data = Combobox.getOrCreateInstance(this, config);
+      if (typeof config !== 'string') {
+        return;
+      }
+      if (typeof data[config] === 'undefined') {
+        throw new TypeError(`No method named "${config}"`);
+      }
+      data[config]();
+    });
+  }
+}
+
+/**
+ * Data API implementation
+ */
+
+EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
+  event.preventDefault();
+  Combobox.getOrCreateInstance(this).toggle();
+});
+EventHandler.on(document, 'DOMContentLoaded', () => {
+  for (const toggle of SelectorEngine.find(SELECTOR_DATA_TOGGLE)) {
+    Combobox.getOrCreateInstance(toggle);
+  }
+});
+
+export { Combobox as default };
+//# sourceMappingURL=combobox.js.map
diff --git a/js/dist/combobox.js.map b/js/dist/combobox.js.map
new file mode 100644 (file)
index 0000000..c67bad8
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"file":"combobox.js","sources":["../src/combobox.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap combobox.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Menu from './menu.js'\nimport { getNextActiveElement, isDisabled, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'combobox'\nconst DATA_KEY = 'bs.combobox'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SELECTED = 'selected'\nconst CLASS_NAME_PLACEHOLDER = 'combobox-placeholder'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"combobox\"]'\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_MENU_ITEM = '.menu-item[data-bs-value]'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item[data-bs-value]:not(.disabled):not(:disabled)'\nconst SELECTOR_VALUE = '.combobox-value'\nconst SELECTOR_SEARCH_INPUT = '.combobox-search-input'\nconst SELECTOR_NO_RESULTS = '.combobox-no-results'\n\nconst Default = {\n  boundary: 'clippingParents',\n  multiple: false,\n  name: null,\n  offset: [0, 2],\n  placeholder: '',\n  placement: 'bottom-start',\n  search: false,\n  searchNormalize: false\n}\n\nconst DefaultType = {\n  boundary: '(string|element)',\n  multiple: 'boolean',\n  name: '(string|null)',\n  offset: '(array|string|function)',\n  placeholder: 'string',\n  placement: 'string',\n  search: 'boolean',\n  searchNormalize: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Combobox extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._toggle = this._element\n    this._menu = SelectorEngine.next(this._toggle, SELECTOR_MENU)[0]\n    this._valueDisplay = SelectorEngine.findOne(SELECTOR_VALUE, this._toggle)\n    this._searchInput = SelectorEngine.findOne(SELECTOR_SEARCH_INPUT, this._menu)\n    this._noResults = SelectorEngine.findOne(SELECTOR_NO_RESULTS, this._menu)\n    this._hiddenInput = null\n    this._menuInstance = null\n\n    this._createHiddenInput()\n    this._createMenuInstance()\n    this._syncInitialSelection()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._toggle) || this._isShown()) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._toggle, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.show()\n\n    if (this._searchInput) {\n      this._searchInput.value = ''\n      this._filterItems('')\n      requestAnimationFrame(() => this._searchInput.focus())\n    }\n\n    EventHandler.trigger(this._toggle, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._toggle, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.hide()\n    EventHandler.trigger(this._toggle, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._menuInstance) {\n      this._menuInstance.dispose()\n      this._menuInstance = null\n    }\n\n    if (this._hiddenInput) {\n      this._hiddenInput.remove()\n      this._hiddenInput = null\n    }\n\n    EventHandler.off(this._menu, EVENT_KEY)\n    EventHandler.off(this._toggle, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _createHiddenInput() {\n    const { name } = this._config\n    if (!name) {\n      return\n    }\n\n    this._hiddenInput = document.createElement('input')\n    this._hiddenInput.type = 'hidden'\n    this._hiddenInput.name = name\n    this._hiddenInput.value = ''\n    this._toggle.parentNode.insertBefore(this._hiddenInput, this._toggle)\n  }\n\n  _createMenuInstance() {\n    this._menuInstance = new Menu(this._toggle, {\n      menu: this._menu,\n      autoClose: this._config.multiple ? 'outside' : true,\n      boundary: this._config.boundary,\n      offset: this._config.offset,\n      placement: this._config.placement\n    })\n  }\n\n  _syncInitialSelection() {\n    const selectedItems = this._getSelectedItems()\n    if (selectedItems.length > 0) {\n      this._updateToggleText()\n      this._updateHiddenInput()\n    } else {\n      this._showPlaceholder()\n    }\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._menu, 'click', SELECTOR_MENU_ITEM, event => {\n      const item = event.target.closest(SELECTOR_MENU_ITEM)\n      if (!item || isDisabled(item)) {\n        return\n      }\n\n      event.preventDefault()\n      event.stopPropagation()\n      this._selectItem(item)\n    })\n\n    EventHandler.on(this._toggle, 'keydown', event => {\n      this._handleToggleKeydown(event)\n    })\n\n    EventHandler.on(this._menu, 'keydown', event => {\n      this._handleMenuKeydown(event)\n    })\n\n    if (this._searchInput) {\n      EventHandler.on(this._searchInput, 'input', () => {\n        this._filterItems(this._searchInput.value)\n      })\n\n      EventHandler.on(this._searchInput, 'keydown', event => {\n        if (event.key === ARROW_DOWN_KEY) {\n          event.preventDefault()\n          const items = this._getVisibleItems()\n          if (items.length > 0) {\n            items[0].focus()\n          }\n        }\n\n        if (event.key === ESCAPE_KEY) {\n          this.hide()\n          this._toggle.focus()\n        }\n      })\n    }\n  }\n\n  _selectItem(item) {\n    if (this._config.multiple) {\n      item.classList.toggle(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', item.classList.contains(CLASS_NAME_SELECTED))\n    } else {\n      const previouslySelected = SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n      for (const prev of previouslySelected) {\n        prev.classList.remove(CLASS_NAME_SELECTED)\n        prev.setAttribute('aria-selected', 'false')\n      }\n\n      item.classList.add(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', 'true')\n    }\n\n    this._updateToggleText()\n    this._updateHiddenInput()\n\n    const value = this._config.multiple ?\n      this._getSelectedItems().map(el => el.dataset.bsValue) :\n      item.dataset.bsValue\n\n    EventHandler.trigger(this._toggle, EVENT_CHANGE, {\n      value,\n      item\n    })\n\n    if (!this._config.multiple) {\n      this.hide()\n      this._toggle.focus()\n    }\n  }\n\n  _updateToggleText() {\n    const selectedItems = this._getSelectedItems()\n\n    if (selectedItems.length === 0) {\n      this._showPlaceholder()\n      return\n    }\n\n    this._valueDisplay.classList.remove(CLASS_NAME_PLACEHOLDER)\n\n    if (this._config.multiple && selectedItems.length > 1) {\n      this._valueDisplay.textContent = `${selectedItems.length} selected`\n    } else {\n      const item = selectedItems[0]\n      const label = SelectorEngine.findOne('.menu-item-content > span:first-child', item)\n      this._valueDisplay.textContent = label ? label.textContent : item.textContent.trim()\n    }\n  }\n\n  _showPlaceholder() {\n    const { placeholder } = this._config\n    if (placeholder) {\n      this._valueDisplay.textContent = placeholder\n      this._valueDisplay.classList.add(CLASS_NAME_PLACEHOLDER)\n    }\n  }\n\n  _updateHiddenInput() {\n    if (!this._hiddenInput) {\n      return\n    }\n\n    const selectedItems = this._getSelectedItems()\n    const values = selectedItems.map(el => el.dataset.bsValue)\n    this._hiddenInput.value = this._config.multiple ? values.join(',') : (values[0] || '')\n  }\n\n  _getSelectedItems() {\n    return SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n  }\n\n  _getVisibleItems() {\n    return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu)\n      .filter(item => isVisible(item))\n  }\n\n  _filterItems(query) {\n    const normalizedQuery = this._normalizeText(query.toLowerCase().trim())\n    const items = SelectorEngine.find(SELECTOR_MENU_ITEM, this._menu)\n    let visibleCount = 0\n\n    for (const item of items) {\n      const text = this._normalizeText(item.textContent.toLowerCase().trim())\n      const matches = !normalizedQuery || text.includes(normalizedQuery)\n      item.style.display = matches ? '' : 'none'\n      if (matches) {\n        visibleCount++\n      }\n    }\n\n    if (this._noResults) {\n      this._noResults.classList.toggle('d-none', visibleCount > 0)\n    }\n  }\n\n  _normalizeText(text) {\n    if (this._config.searchNormalize) {\n      return text.normalize('NFD').replace(/[\\u0300-\\u036F]/g, '')\n    }\n\n    return text\n  }\n\n  _handleToggleKeydown(event) {\n    const { key } = event\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      if (!this._isShown()) {\n        this.show()\n      }\n\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const target = key === ARROW_DOWN_KEY ? items[0] : items[items.length - 1]\n        target.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !this._isShown()) {\n      event.preventDefault()\n      this.show()\n    }\n  }\n\n  _handleMenuKeydown(event) {\n    const { key, target } = event\n\n    if (key === ESCAPE_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n      this._toggle.focus()\n      return\n    }\n\n    if (key === TAB_KEY) {\n      this.hide()\n      return\n    }\n\n    const isInput = target.matches('input')\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n      }\n\n      return\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const targetItem = key === HOME_KEY ? items[0] : items[items.length - 1]\n        targetItem.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !isInput) {\n      event.preventDefault()\n      const item = target.closest(SELECTOR_MENU_ITEM)\n      if (item && !isDisabled(item)) {\n        this._selectItem(item)\n      }\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Combobox.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Combobox.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const toggle of SelectorEngine.find(SELECTOR_DATA_TOGGLE)) {\n    Combobox.getOrCreateInstance(toggle)\n  }\n})\n\nexport default Combobox\n"],"names":["NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","ENTER_KEY","SPACE_KEY","EVENT_CHANGE","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","EVENT_CLICK_DATA_API","CLASS_NAME_SHOW","CLASS_NAME_SELECTED","CLASS_NAME_PLACEHOLDER","SELECTOR_DATA_TOGGLE","SELECTOR_MENU","SELECTOR_MENU_ITEM","SELECTOR_VISIBLE_ITEMS","SELECTOR_VALUE","SELECTOR_SEARCH_INPUT","SELECTOR_NO_RESULTS","Default","boundary","multiple","name","offset","placeholder","placement","search","searchNormalize","DefaultType","Combobox","BaseComponent","constructor","element","config","_toggle","_element","_menu","SelectorEngine","next","_valueDisplay","findOne","_searchInput","_noResults","_hiddenInput","_menuInstance","_createHiddenInput","_createMenuInstance","_syncInitialSelection","_addEventListeners","toggle","_isShown","hide","show","isDisabled","showEvent","EventHandler","trigger","defaultPrevented","value","_filterItems","requestAnimationFrame","focus","hideEvent","dispose","remove","off","classList","contains","_config","document","createElement","type","parentNode","insertBefore","Menu","menu","autoClose","selectedItems","_getSelectedItems","length","_updateToggleText","_updateHiddenInput","_showPlaceholder","on","event","item","target","closest","preventDefault","stopPropagation","_selectItem","_handleToggleKeydown","_handleMenuKeydown","key","items","_getVisibleItems","setAttribute","previouslySelected","find","prev","add","map","el","dataset","bsValue","textContent","label","trim","values","join","filter","isVisible","query","normalizedQuery","_normalizeText","toLowerCase","visibleCount","text","matches","includes","style","display","normalize","replace","isInput","getNextActiveElement","targetItem","jQueryInterface","each","data","getOrCreateInstance","TypeError"],"mappings":"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"}
\ No newline at end of file
diff --git a/js/dist/dropdown.js.map b/js/dist/dropdown.js.map
deleted file mode 100644 (file)
index 4c7eae5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"dropdown.js","sources":["../src/dropdown.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\nconst RIGHT_MOUSE_BUTTON = 2\n\n// Hover intent delay (ms) - grace period before closing submenu\nconst SUBMENU_CLOSE_DELAY = 100\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_SUBMENU = '.dropdown-submenu'\nconst SELECTOR_SUBMENU_TOGGLE = '.dropdown-submenu > .dropdown-item'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-item:not(.disabled):not(:disabled)'\n\n// Default logical placement (uses start/end which get resolved to left/right based on RTL)\nconst DEFAULT_PLACEMENT = 'bottom-start'\nconst SUBMENU_PLACEMENT = 'end-start'\n\n// Resolve logical placement (start/end) to physical (left/right) based on RTL\nconst resolveLogicalPlacement = placement => {\n  if (isRTL()) {\n    // RTL: start → right, end → left\n    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left')\n  }\n\n  // LTR: start → left, end → right\n  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right')\n}\n\n// Helper for barycentric coordinate calculation (point in triangle check)\nconst triangleSign = (p1, p2, p3) =>\n  ((p1.x - p3.x) * (p2.y - p3.y)) - ((p2.x - p3.x) * (p1.y - p3.y))\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  container: false,\n  display: 'dynamic',\n  offset: [0, 2],\n  floatingConfig: null,\n  placement: DEFAULT_PLACEMENT,\n  reference: 'toggle',\n  strategy: 'absolute',\n  // Submenu options\n  submenuTrigger: 'both', // 'click', 'hover', or 'both'\n  submenuDelay: SUBMENU_CLOSE_DELAY\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  display: 'string',\n  offset: '(array|string|function)',\n  floatingConfig: '(null|object|function)',\n  placement: 'string',\n  reference: '(string|element|object)',\n  strategy: 'string',\n  submenuTrigger: 'string',\n  submenuDelay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s dropdowns require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    this._floatingCleanup = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n    this._parent = this._element.parentNode // dropdown wrapper\n    this._isSubmenu = this._parent.classList.contains('dropdown-submenu')\n    this._openSubmenus = new Map() // Map of submenu element -> cleanup function\n    this._submenuCloseTimeouts = new Map() // Map of submenu element -> timeout ID\n    this._hoverIntentData = null // For safe triangle calculation\n\n    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n    this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n\n    // Store original menu parent for container option\n    this._menuOriginalParent = this._menu?.parentNode\n\n    // Parse responsive placements on init\n    this._parseResponsivePlacements()\n\n    // Set up submenu event listeners\n    this._setupSubmenuListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    // Move menu to container if specified (to escape overflow clipping)\n    this._moveMenuToContainer()\n\n    this._createFloating()\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', 'true')\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    this._parent.classList.add(CLASS_NAME_SHOW)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n    this._disposeMediaQueryListeners()\n    this._closeAllSubmenus()\n    this._clearAllSubmenuTimeouts()\n    super.dispose()\n  }\n\n  update() {\n    if (this._floatingCleanup) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Private\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    // Close all open submenus first\n    this._closeAllSubmenus()\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._disposeFloating()\n\n    // Restore menu to original parent if it was moved\n    this._restoreMenuToOriginalParent()\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._parent.classList.remove(CLASS_NAME_SHOW)\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'placement')\n    Manipulator.removeDataAttribute(this._menu, 'display')\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      // Floating UI virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createFloating() {\n    if (this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'display', 'static')\n      return\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    // Initial position update\n    this._updateFloatingPosition(referenceElement)\n\n    // Set up auto-update for scroll/resize\n    this._floatingCleanup = autoUpdate(\n      referenceElement,\n      this._menu,\n      () => this._updateFloatingPosition(referenceElement)\n    )\n  }\n\n  async _updateFloatingPosition(referenceElement = null) {\n    if (!this._menu) {\n      return\n    }\n\n    if (!referenceElement) {\n      if (this._config.reference === 'parent') {\n        referenceElement = this._parent\n      } else if (isElement(this._config.reference)) {\n        referenceElement = getElement(this._config.reference)\n      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference\n      } else {\n        referenceElement = this._element\n      }\n    }\n\n    const placement = this._getPlacement()\n    const middleware = this._getFloatingMiddleware()\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    await this._applyFloatingPosition(\n      referenceElement,\n      this._menu,\n      floatingConfig.placement,\n      floatingConfig.middleware,\n      floatingConfig.strategy\n    )\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    // If we have responsive placements, find the appropriate one for current viewport\n    const placement = this._responsivePlacements ?\n      getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) :\n      this._config.placement\n\n    // Resolve logical placements (start/end) to physical (left/right) based on RTL\n    return resolveLogicalPlacement(placement)\n  }\n\n  _parseResponsivePlacements() {\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT)\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  _getOffset() {\n    const { offset: offsetConfig } = this._config\n\n    if (typeof offsetConfig === 'string') {\n      return offsetConfig.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offsetConfig === 'function') {\n      // Floating UI passes different args, adapt the interface for offset function callbacks\n      return ({ placement, rects }) => {\n        const result = offsetConfig({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offsetConfig\n  }\n\n  _getFloatingMiddleware() {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      // Offset middleware - handles distance from reference\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      // Flip middleware - handles fallback placements\n      flip({\n        fallbackPlacements: this._getFallbackPlacements()\n      }),\n      // Shift middleware - prevents overflow\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    return middleware\n  }\n\n  _getFallbackPlacements() {\n    // Get appropriate fallback placements based on current placement\n    // Fallbacks should preserve alignment (start/end) when possible\n    const placement = this._getPlacement()\n\n    // Handle all possible Floating UI placements\n    const fallbackMap = {\n      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\n      'bottom-start': ['top-start', 'bottom-end', 'top-end'],\n      'bottom-end': ['top-end', 'bottom-start', 'top-start'],\n      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],\n      'top-start': ['bottom-start', 'top-end', 'bottom-end'],\n      'top-end': ['bottom-end', 'top-start', 'bottom-start'],\n      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],\n      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],\n      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],\n      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],\n      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],\n      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']\n    }\n\n    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left']\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware,\n      strategy: this._config.strategy\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n  }\n\n  _getContainer() {\n    const { container } = this._config\n    if (container === false) {\n      return null\n    }\n\n    return container === true ? document.body : getElement(container)\n  }\n\n  _moveMenuToContainer() {\n    const container = this._getContainer()\n    if (!container || !this._menu) {\n      return\n    }\n\n    // Only move if not already in the container\n    if (this._menu.parentNode !== container) {\n      container.append(this._menu)\n    }\n  }\n\n  _restoreMenuToOriginalParent() {\n    if (!this._menuOriginalParent || !this._menu) {\n      return\n    }\n\n    // Only restore if menu was moved\n    if (this._menu.parentNode !== this._menuOriginalParent) {\n      this._menuOriginalParent.append(this._menu)\n    }\n  }\n\n  // Shared helper for positioning any floating element\n  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {\n    if (!floating.isConnected) {\n      return null\n    }\n\n    const { x, y, placement: finalPlacement } = await computePosition(\n      reference,\n      floating,\n      { placement, middleware, strategy }\n    )\n\n    if (!floating.isConnected) {\n      return null\n    }\n\n    Object.assign(floating.style, {\n      position: strategy,\n      left: `${x}px`,\n      top: `${y}px`,\n      margin: '0'\n    })\n\n    Manipulator.setDataAttribute(floating, 'placement', finalPlacement)\n    return finalPlacement\n  }\n\n  // -------------------------------------------------------------------------\n  // Submenu handling\n  // -------------------------------------------------------------------------\n\n  _setupSubmenuListeners() {\n    // Set up hover listeners for submenu triggers\n    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerEnter(event)\n      })\n\n      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {\n        this._onSubmenuLeave(event)\n      })\n\n      // Track mouse movement for safe triangle calculation\n      EventHandler.on(this._menu, 'mousemove', event => {\n        this._trackMousePosition(event)\n      })\n    }\n\n    // Set up click listener for submenu triggers\n    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerClick(event)\n      })\n    }\n  }\n\n  _onSubmenuTriggerEnter(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    // Cancel any pending close timeout for this submenu\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    // Close other open submenus at the same level\n    this._closeSiblingSubmenus(submenuWrapper)\n\n    // Open this submenu\n    this._openSubmenu(trigger, submenu, submenuWrapper)\n  }\n\n  _onSubmenuLeave(event) {\n    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu || !this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    // Check if we're moving toward the submenu (safe triangle)\n    if (this._isMovingTowardSubmenu(event, submenu)) {\n      return\n    }\n\n    // Schedule submenu close with delay\n    this._scheduleSubmenuClose(submenu, submenuWrapper)\n  }\n\n  _onSubmenuTriggerClick(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    // Toggle submenu\n    if (this._openSubmenus.has(submenu)) {\n      this._closeSubmenu(submenu, submenuWrapper)\n    } else {\n      this._closeSiblingSubmenus(submenuWrapper)\n      this._openSubmenu(trigger, submenu, submenuWrapper)\n    }\n  }\n\n  _openSubmenu(trigger, submenu, submenuWrapper) {\n    if (this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    // Set ARIA attributes\n    trigger.setAttribute('aria-expanded', 'true')\n    trigger.setAttribute('aria-haspopup', 'true')\n\n    // Position and show submenu\n    submenu.classList.add(CLASS_NAME_SHOW)\n    submenuWrapper.classList.add(CLASS_NAME_SHOW)\n\n    // Set up Floating UI positioning for submenu\n    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper)\n    this._openSubmenus.set(submenu, cleanup)\n\n    // Set up mouseenter on submenu to cancel close timeout\n    EventHandler.on(submenu, 'mouseenter', () => {\n      this._cancelSubmenuCloseTimeout(submenu)\n    })\n  }\n\n  _closeSubmenu(submenu, submenuWrapper) {\n    if (!this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    // Close any nested submenus first\n    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, submenu)\n    for (const nested of nestedSubmenus) {\n      const nestedWrapper = nested.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(nested, nestedWrapper)\n    }\n\n    // Get the trigger\n    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper)\n\n    // Clean up Floating UI\n    const cleanup = this._openSubmenus.get(submenu)\n    if (cleanup) {\n      cleanup()\n    }\n\n    this._openSubmenus.delete(submenu)\n\n    // Remove event listeners\n    EventHandler.off(submenu, 'mouseenter')\n\n    // Update ARIA and visibility\n    if (trigger) {\n      trigger.setAttribute('aria-expanded', 'false')\n    }\n\n    submenu.classList.remove(CLASS_NAME_SHOW)\n    submenuWrapper.classList.remove(CLASS_NAME_SHOW)\n\n    // Clear inline styles\n    submenu.style.position = ''\n    submenu.style.left = ''\n    submenu.style.top = ''\n    submenu.style.margin = ''\n  }\n\n  _closeAllSubmenus() {\n    for (const [submenu] of this._openSubmenus) {\n      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(submenu, submenuWrapper)\n    }\n  }\n\n  _closeSiblingSubmenus(currentSubmenuWrapper) {\n    // Find all sibling submenu wrappers and close their menus\n    const parent = currentSubmenuWrapper.parentNode\n    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, parent)\n\n    for (const siblingMenu of siblingSubmenus) {\n      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU)\n      if (siblingWrapper !== currentSubmenuWrapper) {\n        this._closeSubmenu(siblingMenu, siblingWrapper)\n      }\n    }\n  }\n\n  _createSubmenuFloating(trigger, submenu, submenuWrapper) {\n    const referenceElement = submenuWrapper\n    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT)\n    const middleware = [\n      offset({ mainAxis: 0, crossAxis: -4 }),\n      flip({\n        fallbackPlacements: [\n          resolveLogicalPlacement('start-start'),\n          resolveLogicalPlacement('end-end'),\n          resolveLogicalPlacement('start-end')\n        ]\n      }),\n      shift({ padding: 8 })\n    ]\n\n    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware)\n\n    updatePosition()\n    return autoUpdate(referenceElement, submenu, updatePosition)\n  }\n\n  _scheduleSubmenuClose(submenu, submenuWrapper) {\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    const timeoutId = setTimeout(() => {\n      this._closeSubmenu(submenu, submenuWrapper)\n      this._submenuCloseTimeouts.delete(submenu)\n    }, this._config.submenuDelay)\n\n    this._submenuCloseTimeouts.set(submenu, timeoutId)\n  }\n\n  _cancelSubmenuCloseTimeout(submenu) {\n    const timeoutId = this._submenuCloseTimeouts.get(submenu)\n    if (timeoutId) {\n      clearTimeout(timeoutId)\n      this._submenuCloseTimeouts.delete(submenu)\n    }\n  }\n\n  _clearAllSubmenuTimeouts() {\n    for (const timeoutId of this._submenuCloseTimeouts.values()) {\n      clearTimeout(timeoutId)\n    }\n\n    this._submenuCloseTimeouts.clear()\n  }\n\n  // -------------------------------------------------------------------------\n  // Hover intent / Safe triangle\n  // -------------------------------------------------------------------------\n\n  _trackMousePosition(event) {\n    this._hoverIntentData = {\n      x: event.clientX,\n      y: event.clientY,\n      timestamp: Date.now()\n    }\n  }\n\n  _isMovingTowardSubmenu(event, submenu) {\n    if (!this._hoverIntentData) {\n      return false\n    }\n\n    const submenuRect = submenu.getBoundingClientRect()\n    const currentPos = { x: event.clientX, y: event.clientY }\n    const lastPos = { x: this._hoverIntentData.x, y: this._hoverIntentData.y }\n\n    // Create a triangle from current position to submenu edges\n    // The triangle represents the \"safe zone\" for diagonal movement\n    const isRtl = isRTL()\n\n    // Determine which edge of the submenu to target based on direction\n    const targetX = isRtl ? submenuRect.right : submenuRect.left\n    const topCorner = { x: targetX, y: submenuRect.top }\n    const bottomCorner = { x: targetX, y: submenuRect.bottom }\n\n    // Check if cursor is moving toward the submenu\n    // by checking if the current position is within the safe triangle\n    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner)\n  }\n\n  _pointInTriangle(point, v1, v2, v3) {\n    // Barycentric coordinate method to check if point is inside triangle\n    const d1 = triangleSign(point, v1, v2)\n    const d2 = triangleSign(point, v2, v3)\n    const d3 = triangleSign(point, v3, v1)\n\n    const hasNeg = (d1 < 0) || (d2 < 0) || (d3 < 0)\n    const hasPos = (d1 > 0) || (d2 > 0) || (d3 > 0)\n\n    return !(hasNeg && hasPos)\n  }\n\n  // -------------------------------------------------------------------------\n  // Keyboard navigation\n  // -------------------------------------------------------------------------\n\n  _selectMenuItem({ key, target }) {\n    // Get items only from the current menu level (not nested submenus)\n    // If target is inside a menu, use that menu; otherwise use the main menu\n    const currentMenu = target.closest(SELECTOR_MENU) || this._menu\n    const items = SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n      .filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  _handleSubmenuKeydown(event) {\n    const { key, target } = event\n    const isRtl = isRTL()\n\n    // Determine the \"enter submenu\" and \"exit submenu\" keys based on RTL\n    const enterKey = isRtl ? ARROW_LEFT_KEY : ARROW_RIGHT_KEY\n    const exitKey = isRtl ? ARROW_RIGHT_KEY : ARROW_LEFT_KEY\n\n    // Check if target is a submenu trigger\n    const submenuWrapper = target.closest(SELECTOR_SUBMENU)\n    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    // Handle Enter/Space on submenu trigger\n    if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        // Focus first item in submenu\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    // Handle Right arrow (or Left in RTL) - enter submenu\n    if (key === enterKey && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        // Focus first item in submenu\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    // Handle Left arrow (or Right in RTL) - exit submenu\n    if (key === exitKey) {\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper) {\n        event.preventDefault()\n        event.stopPropagation()\n\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        this._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return true\n      }\n    }\n\n    // Handle Home/End keys\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const items = SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n        .filter(element => isVisible(element))\n\n      if (items.length) {\n        const targetItem = key === HOME_KEY ? items[0] : items[items.length - 1]\n        targetItem.focus()\n      }\n\n      return true\n    }\n\n    return false\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n    for (const toggle of openToggles) {\n      const context = Dropdown.getInstance(toggle)\n      if (!context || context._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(context._menu)\n      if (\n        composedPath.includes(context._element) ||\n        (context._config.autoClose === 'inside' && !isMenuTarget) ||\n        (context._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n      if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: context._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      context._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    // If not a relevant key => not a dropdown command\n    const isInput = /input|textarea/i.test(event.target.tagName)\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n    const isLeftOrRightEvent = [ARROW_LEFT_KEY, ARROW_RIGHT_KEY].includes(event.key)\n    const isHomeOrEndEvent = [HOME_KEY, END_KEY].includes(event.key)\n    const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key)\n\n    // Allow Enter/Space only on submenu triggers\n    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent &&\n        !(isEnterOrSpaceEvent && isSubmenuTrigger)) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    if (!getToggleButton) {\n      return\n    }\n\n    const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n    // Handle submenu navigation first\n    if ((isLeftOrRightEvent || isHomeOrEndEvent || (isEnterOrSpaceEvent && isSubmenuTrigger)) && instance._handleSubmenuKeydown(event)) {\n      return\n    }\n\n    // Handle Up/Down navigation\n    if (isUpOrDownEvent) {\n      event.preventDefault()\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    // Handle Escape\n    if (isEscapeEvent && instance._isShown()) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      // If in a submenu, close just that submenu\n      const currentMenu = event.target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        instance._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return\n      }\n\n      // Otherwise close the whole dropdown\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Dropdown.getOrCreateInstance(this).toggle()\n})\n\nexport default Dropdown\n"],"names":["NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","HOME_KEY","END_KEY","ENTER_KEY","SPACE_KEY","RIGHT_MOUSE_BUTTON","SUBMENU_CLOSE_DELAY","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_CLICK_DATA_API","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_SHOW","SELECTOR_DATA_TOGGLE","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","SELECTOR_SUBMENU","SELECTOR_SUBMENU_TOGGLE","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","DEFAULT_PLACEMENT","SUBMENU_PLACEMENT","resolveLogicalPlacement","placement","isRTL","replace","triangleSign","p1","p2","p3","x","y","Default","autoClose","boundary","container","display","offset","floatingConfig","reference","strategy","submenuTrigger","submenuDelay","DefaultType","Dropdown","BaseComponent","constructor","element","config","computePosition","TypeError","_floatingCleanup","_mediaQueryListeners","_responsivePlacements","_parent","_element","parentNode","_isSubmenu","classList","contains","_openSubmenus","Map","_submenuCloseTimeouts","_hoverIntentData","_menu","SelectorEngine","next","prev","findOne","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","toggle","_isShown","hide","show","isDisabled","relatedTarget","showEvent","EventHandler","trigger","defaultPrevented","_moveMenuToContainer","_createFloating","document","documentElement","closest","concat","body","children","on","noop","focus","setAttribute","add","_completeHide","dispose","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","update","_updateFloatingPosition","hideEvent","off","remove","Manipulator","removeDataAttribute","_getConfig","isElement","getBoundingClientRect","toUpperCase","_config","setDataAttribute","referenceElement","getElement","autoUpdate","_getPlacement","middleware","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","getResponsivePlacement","parseResponsivePlacement","_setupMediaQueryListeners","createBreakpointListeners","disposeBreakpointListeners","_getOffset","offsetConfig","split","map","value","Number","parseInt","rects","result","floating","offsetValue","mainAxis","crossAxis","flip","fallbackPlacements","_getFallbackPlacements","shift","fallbackMap","bottom","top","right","left","defaultConfig","execute","undefined","_getContainer","append","isConnected","finalPlacement","Object","assign","style","position","margin","event","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","target","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","has","_isMovingTowardSubmenu","_scheduleSubmenuClose","preventDefault","stopPropagation","_closeSubmenu","cleanup","_createSubmenuFloating","set","nestedSubmenus","find","nested","nestedWrapper","get","delete","currentSubmenuWrapper","parent","siblingSubmenus","siblingMenu","siblingWrapper","padding","updatePosition","timeoutId","setTimeout","clearTimeout","values","clear","clientX","clientY","timestamp","Date","now","submenuRect","currentPos","lastPos","isRtl","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","hasNeg","hasPos","_selectMenuItem","key","currentMenu","items","filter","isVisible","length","getNextActiveElement","includes","_handleSubmenuKeydown","enterKey","exitKey","isSubmenuTrigger","matches","requestAnimationFrame","firstItem","parentSubmenuWrapper","parentTrigger","targetItem","clearMenus","button","type","openToggles","context","getInstance","composedPath","isMenuTarget","test","tagName","clickEvent","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","isLeftOrRightEvent","isHomeOrEndEvent","isEnterOrSpaceEvent","getToggleButton","delegateTarget","instance","getOrCreateInstance","size"],"mappings":";;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;;;AA8BA;AACA;AACA;;AAEA,MAAMA,IAAI,GAAG,UAAU;AACvB,MAAMC,QAAQ,GAAG,aAAa;AAC9B,MAAMC,SAAS,GAAG,CAAA,CAAA,EAAID,QAAQ,CAAA,CAAE;AAChC,MAAME,YAAY,GAAG,WAAW;AAEhC,MAAMC,UAAU,GAAG,QAAQ;AAC3B,MAAMC,OAAO,GAAG,KAAK;AACrB,MAAMC,YAAY,GAAG,SAAS;AAC9B,MAAMC,cAAc,GAAG,WAAW;AAClC,MAAMC,cAAc,GAAG,WAAW;AAClC,MAAMC,eAAe,GAAG,YAAY;AACpC,MAAMC,QAAQ,GAAG,MAAM;AACvB,MAAMC,OAAO,GAAG,KAAK;AACrB,MAAMC,SAAS,GAAG,OAAO;AACzB,MAAMC,SAAS,GAAG,GAAG;AACrB,MAAMC,kBAAkB,GAAG,CAAC;;AAE5B;AACA,MAAMC,mBAAmB,GAAG,GAAG;AAE/B,MAAMC,UAAU,GAAG,CAAA,IAAA,EAAOd,SAAS,CAAA,CAAE;AACrC,MAAMe,YAAY,GAAG,CAAA,MAAA,EAASf,SAAS,CAAA,CAAE;AACzC,MAAMgB,UAAU,GAAG,CAAA,IAAA,EAAOhB,SAAS,CAAA,CAAE;AACrC,MAAMiB,WAAW,GAAG,CAAA,KAAA,EAAQjB,SAAS,CAAA,CAAE;AACvC,MAAMkB,oBAAoB,GAAG,CAAA,KAAA,EAAQlB,SAAS,CAAA,EAAGC,YAAY,CAAA,CAAE;AAC/D,MAAMkB,sBAAsB,GAAG,CAAA,OAAA,EAAUnB,SAAS,CAAA,EAAGC,YAAY,CAAA,CAAE;AACnE,MAAMmB,oBAAoB,GAAG,CAAA,KAAA,EAAQpB,SAAS,CAAA,EAAGC,YAAY,CAAA,CAAE;AAE/D,MAAMoB,eAAe,GAAG,MAAM;AAE9B,MAAMC,oBAAoB,GAAG,2DAA2D;AACxF,MAAMC,0BAA0B,GAAG,CAAA,EAAGD,oBAAoB,CAAA,CAAA,EAAID,eAAe,CAAA,CAAE;AAC/E,MAAMG,aAAa,GAAG,gBAAgB;AACtC,MAAMC,gBAAgB,GAAG,mBAAmB;AAC5C,MAAMC,uBAAuB,GAAG,oCAAoC;AACpE,MAAMC,mBAAmB,GAAG,aAAa;AACzC,MAAMC,sBAAsB,GAAG,8CAA8C;;AAE7E;AACA,MAAMC,iBAAiB,GAAG,cAAc;AACxC,MAAMC,iBAAiB,GAAG,WAAW;;AAErC;AACA,MAAMC,uBAAuB,GAAGC,SAAS,IAAI;EAC3C,IAAIC,KAAK,EAAE,EAAE;AACX;AACA,IAAA,OAAOD,SAAS,CAACE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAACA,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC;AACnF,EAAA;;AAEA;AACA,EAAA,OAAOF,SAAS,CAACE,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAACA,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC;AACnF,CAAC;;AAED;AACA,MAAMC,YAAY,GAAGA,CAACC,EAAE,EAAEC,EAAE,EAAEC,EAAE,KAC7B,CAACF,EAAE,CAACG,CAAC,GAAGD,EAAE,CAACC,CAAC,KAAKF,EAAE,CAACG,CAAC,GAAGF,EAAE,CAACE,CAAC,CAAC,GAAK,CAACH,EAAE,CAACE,CAAC,GAAGD,EAAE,CAACC,CAAC,KAAKH,EAAE,CAACI,CAAC,GAAGF,EAAE,CAACE,CAAC,CAAE;AAEnE,MAAMC,OAAO,GAAG;AACdC,EAAAA,SAAS,EAAE,IAAI;AACfC,EAAAA,QAAQ,EAAE,iBAAiB;AAC3BC,EAAAA,SAAS,EAAE,KAAK;AAChBC,EAAAA,OAAO,EAAE,SAAS;AAClBC,EAAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACdC,EAAAA,cAAc,EAAE,IAAI;AACpBf,EAAAA,SAAS,EAAEH,iBAAiB;AAC5BmB,EAAAA,SAAS,EAAE,QAAQ;AACnBC,EAAAA,QAAQ,EAAE,UAAU;AACpB;AACAC,EAAAA,cAAc,EAAE,MAAM;AAAE;AACxBC,EAAAA,YAAY,EAAEtC;AAChB,CAAC;AAED,MAAMuC,WAAW,GAAG;AAClBV,EAAAA,SAAS,EAAE,kBAAkB;AAC7BC,EAAAA,QAAQ,EAAE,kBAAkB;AAC5BC,EAAAA,SAAS,EAAE,0BAA0B;AACrCC,EAAAA,OAAO,EAAE,QAAQ;AACjBC,EAAAA,MAAM,EAAE,yBAAyB;AACjCC,EAAAA,cAAc,EAAE,wBAAwB;AACxCf,EAAAA,SAAS,EAAE,QAAQ;AACnBgB,EAAAA,SAAS,EAAE,yBAAyB;AACpCC,EAAAA,QAAQ,EAAE,QAAQ;AAClBC,EAAAA,cAAc,EAAE,QAAQ;AACxBC,EAAAA,YAAY,EAAE;AAChB,CAAC;;AAED;AACA;AACA;;AAEA,MAAME,QAAQ,SAASC,aAAa,CAAC;AACnCC,EAAAA,WAAWA,CAACC,OAAO,EAAEC,MAAM,EAAE;AAC3B,IAAA,IAAI,OAAOC,eAAe,KAAK,WAAW,EAAE;AAC1C,MAAA,MAAM,IAAIC,SAAS,CAAC,sEAAsE,CAAC;AAC7F,IAAA;AAEA,IAAA,KAAK,CAACH,OAAO,EAAEC,MAAM,CAAC;IAEtB,IAAI,CAACG,gBAAgB,GAAG,IAAI;IAC5B,IAAI,CAACC,oBAAoB,GAAG,EAAE;IAC9B,IAAI,CAACC,qBAAqB,GAAG,IAAI;IACjC,IAAI,CAACC,OAAO,GAAG,IAAI,CAACC,QAAQ,CAACC,UAAU,CAAA;AACvC,IAAA,IAAI,CAACC,UAAU,GAAG,IAAI,CAACH,OAAO,CAACI,SAAS,CAACC,QAAQ,CAAC,kBAAkB,CAAC;AACrE,IAAA,IAAI,CAACC,aAAa,GAAG,IAAIC,GAAG,EAAE,CAAA;AAC9B,IAAA,IAAI,CAACC,qBAAqB,GAAG,IAAID,GAAG,EAAE,CAAA;AACtC,IAAA,IAAI,CAACE,gBAAgB,GAAG,IAAI,CAAA;;AAE5B;AACA,IAAA,IAAI,CAACC,KAAK,GAAGC,cAAc,CAACC,IAAI,CAAC,IAAI,CAACX,QAAQ,EAAExC,aAAa,CAAC,CAAC,CAAC,CAAC,IAC/DkD,cAAc,CAACE,IAAI,CAAC,IAAI,CAACZ,QAAQ,EAAExC,aAAa,CAAC,CAAC,CAAC,CAAC,IACpDkD,cAAc,CAACG,OAAO,CAACrD,aAAa,EAAE,IAAI,CAACuC,OAAO,CAAC;;AAErD;AACA,IAAA,IAAI,CAACe,mBAAmB,GAAG,IAAI,CAACL,KAAK,EAAER,UAAU;;AAEjD;IACA,IAAI,CAACc,0BAA0B,EAAE;;AAEjC;IACA,IAAI,CAACC,sBAAsB,EAAE;AAC/B,EAAA;;AAEA;EACA,WAAWvC,OAAOA,GAAG;AACnB,IAAA,OAAOA,OAAO;AAChB,EAAA;EAEA,WAAWW,WAAWA,GAAG;AACvB,IAAA,OAAOA,WAAW;AACpB,EAAA;EAEA,WAAWtD,IAAIA,GAAG;AAChB,IAAA,OAAOA,IAAI;AACb,EAAA;;AAEA;AACAmF,EAAAA,MAAMA,GAAG;AACP,IAAA,OAAO,IAAI,CAACC,QAAQ,EAAE,GAAG,IAAI,CAACC,IAAI,EAAE,GAAG,IAAI,CAACC,IAAI,EAAE;AACpD,EAAA;AAEAA,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAIC,UAAU,CAAC,IAAI,CAACrB,QAAQ,CAAC,IAAI,IAAI,CAACkB,QAAQ,EAAE,EAAE;AAChD,MAAA;AACF,IAAA;AAEA,IAAA,MAAMI,aAAa,GAAG;MACpBA,aAAa,EAAE,IAAI,CAACtB;KACrB;AAED,IAAA,MAAMuB,SAAS,GAAGC,YAAY,CAACC,OAAO,CAAC,IAAI,CAACzB,QAAQ,EAAEhD,UAAU,EAAEsE,aAAa,CAAC;IAEhF,IAAIC,SAAS,CAACG,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;;AAEA;IACA,IAAI,CAACC,oBAAoB,EAAE;IAE3B,IAAI,CAACC,eAAe,EAAE;;AAEtB;AACA;AACA;AACA;AACA,IAAA,IAAI,cAAc,IAAIC,QAAQ,CAACC,eAAe,IAAI,CAAC,IAAI,CAAC/B,OAAO,CAACgC,OAAO,CAACpE,mBAAmB,CAAC,EAAE;AAC5F,MAAA,KAAK,MAAM6B,OAAO,IAAI,EAAE,CAACwC,MAAM,CAAC,GAAGH,QAAQ,CAACI,IAAI,CAACC,QAAQ,CAAC,EAAE;QAC1DV,YAAY,CAACW,EAAE,CAAC3C,OAAO,EAAE,WAAW,EAAE4C,IAAI,CAAC;AAC7C,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACpC,QAAQ,CAACqC,KAAK,EAAE;IACrB,IAAI,CAACrC,QAAQ,CAACsC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;IAEnD,IAAI,CAAC7B,KAAK,CAACN,SAAS,CAACoC,GAAG,CAAClF,eAAe,CAAC;IACzC,IAAI,CAAC2C,QAAQ,CAACG,SAAS,CAACoC,GAAG,CAAClF,eAAe,CAAC;IAC5C,IAAI,CAAC0C,OAAO,CAACI,SAAS,CAACoC,GAAG,CAAClF,eAAe,CAAC;IAC3CmE,YAAY,CAACC,OAAO,CAAC,IAAI,CAACzB,QAAQ,EAAE/C,WAAW,EAAEqE,aAAa,CAAC;AACjE,EAAA;AAEAH,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAIE,UAAU,CAAC,IAAI,CAACrB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAACkB,QAAQ,EAAE,EAAE;AACjD,MAAA;AACF,IAAA;AAEA,IAAA,MAAMI,aAAa,GAAG;MACpBA,aAAa,EAAE,IAAI,CAACtB;KACrB;AAED,IAAA,IAAI,CAACwC,aAAa,CAAClB,aAAa,CAAC;AACnC,EAAA;AAEAmB,EAAAA,OAAOA,GAAG;IACR,IAAI,CAACC,gBAAgB,EAAE;IACvB,IAAI,CAACC,4BAA4B,EAAE;IACnC,IAAI,CAACC,2BAA2B,EAAE;IAClC,IAAI,CAACC,iBAAiB,EAAE;IACxB,IAAI,CAACC,wBAAwB,EAAE;IAC/B,KAAK,CAACL,OAAO,EAAE;AACjB,EAAA;AAEAM,EAAAA,MAAMA,GAAG;IACP,IAAI,IAAI,CAACnD,gBAAgB,EAAE;MACzB,IAAI,CAACoD,uBAAuB,EAAE;AAChC,IAAA;AACF,EAAA;;AAEA;EACAR,aAAaA,CAAClB,aAAa,EAAE;AAC3B,IAAA,MAAM2B,SAAS,GAAGzB,YAAY,CAACC,OAAO,CAAC,IAAI,CAACzB,QAAQ,EAAElD,UAAU,EAAEwE,aAAa,CAAC;IAChF,IAAI2B,SAAS,CAACvB,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;;AAEA;IACA,IAAI,CAACmB,iBAAiB,EAAE;;AAExB;AACA;AACA,IAAA,IAAI,cAAc,IAAIhB,QAAQ,CAACC,eAAe,EAAE;AAC9C,MAAA,KAAK,MAAMtC,OAAO,IAAI,EAAE,CAACwC,MAAM,CAAC,GAAGH,QAAQ,CAACI,IAAI,CAACC,QAAQ,CAAC,EAAE;QAC1DV,YAAY,CAAC0B,GAAG,CAAC1D,OAAO,EAAE,WAAW,EAAE4C,IAAI,CAAC;AAC9C,MAAA;AACF,IAAA;IAEA,IAAI,CAACM,gBAAgB,EAAE;;AAEvB;IACA,IAAI,CAACC,4BAA4B,EAAE;IAEnC,IAAI,CAAClC,KAAK,CAACN,SAAS,CAACgD,MAAM,CAAC9F,eAAe,CAAC;IAC5C,IAAI,CAAC2C,QAAQ,CAACG,SAAS,CAACgD,MAAM,CAAC9F,eAAe,CAAC;IAC/C,IAAI,CAAC0C,OAAO,CAACI,SAAS,CAACgD,MAAM,CAAC9F,eAAe,CAAC;IAC9C,IAAI,CAAC2C,QAAQ,CAACsC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC;IACpDc,WAAW,CAACC,mBAAmB,CAAC,IAAI,CAAC5C,KAAK,EAAE,WAAW,CAAC;IACxD2C,WAAW,CAACC,mBAAmB,CAAC,IAAI,CAAC5C,KAAK,EAAE,SAAS,CAAC;IACtDe,YAAY,CAACC,OAAO,CAAC,IAAI,CAACzB,QAAQ,EAAEjD,YAAY,EAAEuE,aAAa,CAAC;AAClE,EAAA;EAEAgC,UAAUA,CAAC7D,MAAM,EAAE;AACjBA,IAAAA,MAAM,GAAG,KAAK,CAAC6D,UAAU,CAAC7D,MAAM,CAAC;IAEjC,IAAI,OAAOA,MAAM,CAACT,SAAS,KAAK,QAAQ,IAAI,CAACuE,SAAS,CAAC9D,MAAM,CAACT,SAAS,CAAC,IACtE,OAAOS,MAAM,CAACT,SAAS,CAACwE,qBAAqB,KAAK,UAAU,EAC5D;AACA;MACA,MAAM,IAAI7D,SAAS,CAAC,CAAA,EAAG7D,IAAI,CAAC2H,WAAW,EAAE,CAAA,8FAAA,CAAgG,CAAC;AAC5I,IAAA;AAEA,IAAA,OAAOhE,MAAM;AACf,EAAA;AAEAmC,EAAAA,eAAeA,GAAG;AAChB,IAAA,IAAI,IAAI,CAAC8B,OAAO,CAAC7E,OAAO,KAAK,QAAQ,EAAE;MACrCuE,WAAW,CAACO,gBAAgB,CAAC,IAAI,CAAClD,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC;AAC7D,MAAA;AACF,IAAA;AAEA,IAAA,IAAImD,gBAAgB,GAAG,IAAI,CAAC5D,QAAQ;AAEpC,IAAA,IAAI,IAAI,CAAC0D,OAAO,CAAC1E,SAAS,KAAK,QAAQ,EAAE;MACvC4E,gBAAgB,GAAG,IAAI,CAAC7D,OAAO;IACjC,CAAC,MAAM,IAAIwD,SAAS,CAAC,IAAI,CAACG,OAAO,CAAC1E,SAAS,CAAC,EAAE;MAC5C4E,gBAAgB,GAAGC,UAAU,CAAC,IAAI,CAACH,OAAO,CAAC1E,SAAS,CAAC;IACvD,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC0E,OAAO,CAAC1E,SAAS,KAAK,QAAQ,EAAE;AACrD4E,MAAAA,gBAAgB,GAAG,IAAI,CAACF,OAAO,CAAC1E,SAAS;AAC3C,IAAA;;AAEA;AACA,IAAA,IAAI,CAACgE,uBAAuB,CAACY,gBAAgB,CAAC;;AAE9C;AACA,IAAA,IAAI,CAAChE,gBAAgB,GAAGkE,UAAU,CAChCF,gBAAgB,EAChB,IAAI,CAACnD,KAAK,EACV,MAAM,IAAI,CAACuC,uBAAuB,CAACY,gBAAgB,CACrD,CAAC;AACH,EAAA;AAEA,EAAA,MAAMZ,uBAAuBA,CAACY,gBAAgB,GAAG,IAAI,EAAE;AACrD,IAAA,IAAI,CAAC,IAAI,CAACnD,KAAK,EAAE;AACf,MAAA;AACF,IAAA;IAEA,IAAI,CAACmD,gBAAgB,EAAE;AACrB,MAAA,IAAI,IAAI,CAACF,OAAO,CAAC1E,SAAS,KAAK,QAAQ,EAAE;QACvC4E,gBAAgB,GAAG,IAAI,CAAC7D,OAAO;MACjC,CAAC,MAAM,IAAIwD,SAAS,CAAC,IAAI,CAACG,OAAO,CAAC1E,SAAS,CAAC,EAAE;QAC5C4E,gBAAgB,GAAGC,UAAU,CAAC,IAAI,CAACH,OAAO,CAAC1E,SAAS,CAAC;MACvD,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC0E,OAAO,CAAC1E,SAAS,KAAK,QAAQ,EAAE;AACrD4E,QAAAA,gBAAgB,GAAG,IAAI,CAACF,OAAO,CAAC1E,SAAS;AAC3C,MAAA,CAAC,MAAM;QACL4E,gBAAgB,GAAG,IAAI,CAAC5D,QAAQ;AAClC,MAAA;AACF,IAAA;AAEA,IAAA,MAAMhC,SAAS,GAAG,IAAI,CAAC+F,aAAa,EAAE;AACtC,IAAA,MAAMC,UAAU,GAAG,IAAI,CAACC,sBAAsB,EAAE;IAChD,MAAMlF,cAAc,GAAG,IAAI,CAACmF,kBAAkB,CAAClG,SAAS,EAAEgG,UAAU,CAAC;IAErE,MAAM,IAAI,CAACG,sBAAsB,CAC/BP,gBAAgB,EAChB,IAAI,CAACnD,KAAK,EACV1B,cAAc,CAACf,SAAS,EACxBe,cAAc,CAACiF,UAAU,EACzBjF,cAAc,CAACE,QACjB,CAAC;AACH,EAAA;AAEAiC,EAAAA,QAAQA,GAAG;IACT,OAAO,IAAI,CAACT,KAAK,CAACN,SAAS,CAACC,QAAQ,CAAC/C,eAAe,CAAC;AACvD,EAAA;AAEA0G,EAAAA,aAAaA,GAAG;AACd;AACA,IAAA,MAAM/F,SAAS,GAAG,IAAI,CAAC8B,qBAAqB,GAC1CsE,sBAAsB,CAAC,IAAI,CAACtE,qBAAqB,EAAEjC,iBAAiB,CAAC,GACrE,IAAI,CAAC6F,OAAO,CAAC1F,SAAS;;AAExB;IACA,OAAOD,uBAAuB,CAACC,SAAS,CAAC;AAC3C,EAAA;AAEA+C,EAAAA,0BAA0BA,GAAG;AAC3B,IAAA,IAAI,CAACjB,qBAAqB,GAAGuE,wBAAwB,CAAC,IAAI,CAACX,OAAO,CAAC1F,SAAS,EAAEH,iBAAiB,CAAC;IAEhG,IAAI,IAAI,CAACiC,qBAAqB,EAAE;MAC9B,IAAI,CAACwE,yBAAyB,EAAE;AAClC,IAAA;AACF,EAAA;AAEAA,EAAAA,yBAAyBA,GAAG;IAC1B,IAAI,CAAC1B,2BAA2B,EAAE;AAClC,IAAA,IAAI,CAAC/C,oBAAoB,GAAG0E,yBAAyB,CAAC,MAAM;AAC1D,MAAA,IAAI,IAAI,CAACrD,QAAQ,EAAE,EAAE;QACnB,IAAI,CAAC8B,uBAAuB,EAAE;AAChC,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA;AAEAJ,EAAAA,2BAA2BA,GAAG;AAC5B4B,IAAAA,0BAA0B,CAAC,IAAI,CAAC3E,oBAAoB,CAAC;IACrD,IAAI,CAACA,oBAAoB,GAAG,EAAE;AAChC,EAAA;AAEA4E,EAAAA,UAAUA,GAAG;IACX,MAAM;AAAE3F,MAAAA,MAAM,EAAE4F;KAAc,GAAG,IAAI,CAAChB,OAAO;AAE7C,IAAA,IAAI,OAAOgB,YAAY,KAAK,QAAQ,EAAE;AACpC,MAAA,OAAOA,YAAY,CAACC,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAACC,KAAK,IAAIC,MAAM,CAACC,QAAQ,CAACF,KAAK,EAAE,EAAE,CAAC,CAAC;AACzE,IAAA;AAEA,IAAA,IAAI,OAAOH,YAAY,KAAK,UAAU,EAAE;AACtC;AACA,MAAA,OAAO,CAAC;QAAE1G,SAAS;AAAEgH,QAAAA;AAAM,OAAC,KAAK;QAC/B,MAAMC,MAAM,GAAGP,YAAY,CAAC;UAAE1G,SAAS;UAAEgB,SAAS,EAAEgG,KAAK,CAAChG,SAAS;UAAEkG,QAAQ,EAAEF,KAAK,CAACE;AAAS,SAAC,EAAE,IAAI,CAAClF,QAAQ,CAAC;AAC/G,QAAA,OAAOiF,MAAM;MACf,CAAC;AACH,IAAA;AAEA,IAAA,OAAOP,YAAY;AACrB,EAAA;AAEAT,EAAAA,sBAAsBA,GAAG;AACvB,IAAA,MAAMkB,WAAW,GAAG,IAAI,CAACV,UAAU,EAAE;AAErC,IAAA,MAAMT,UAAU,GAAG;AACjB;AACAlF,IAAAA,MAAM,CACJ,OAAOqG,WAAW,KAAK,UAAU,GAC/BA,WAAW,GACX;AAAEC,MAAAA,QAAQ,EAAED,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AAAEE,MAAAA,SAAS,EAAEF,WAAW,CAAC,CAAC,CAAC,IAAI;AAAE,KACpE,CAAC;AACD;AACAG,IAAAA,IAAI,CAAC;AACHC,MAAAA,kBAAkB,EAAE,IAAI,CAACC,sBAAsB;AACjD,KAAC,CAAC;AACF;AACAC,IAAAA,KAAK,CAAC;AACJ9G,MAAAA,QAAQ,EAAE,IAAI,CAAC+E,OAAO,CAAC/E,QAAQ,KAAK,iBAAiB,GAAG,mBAAmB,GAAG,IAAI,CAAC+E,OAAO,CAAC/E;AAC7F,KAAC,CAAC,CACH;AAED,IAAA,OAAOqF,UAAU;AACnB,EAAA;AAEAwB,EAAAA,sBAAsBA,GAAG;AACvB;AACA;AACA,IAAA,MAAMxH,SAAS,GAAG,IAAI,CAAC+F,aAAa,EAAE;;AAEtC;AACA,IAAA,MAAM2B,WAAW,GAAG;MAClBC,MAAM,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,CAAC;AACrE,MAAA,cAAc,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC;AACtD,MAAA,YAAY,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,WAAW,CAAC;MACtDC,GAAG,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,CAAC;AACrE,MAAA,WAAW,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,YAAY,CAAC;AACtD,MAAA,SAAS,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,cAAc,CAAC;MACtDC,KAAK,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC;MACrE,aAAa,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,CAAC;MACnF,WAAW,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,CAAC;MAC/EC,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,CAAC;MACrE,YAAY,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,CAAC;MACnF,UAAU,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY;KAC/E;AAED,IAAA,OAAOJ,WAAW,CAAC1H,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AACrE,EAAA;AAEAkG,EAAAA,kBAAkBA,CAAClG,SAAS,EAAEgG,UAAU,EAAE;AACxC,IAAA,MAAM+B,aAAa,GAAG;MACpB/H,SAAS;MACTgG,UAAU;AACV/E,MAAAA,QAAQ,EAAE,IAAI,CAACyE,OAAO,CAACzE;KACxB;IAED,OAAO;AACL,MAAA,GAAG8G,aAAa;AAChB,MAAA,GAAGC,OAAO,CAAC,IAAI,CAACtC,OAAO,CAAC3E,cAAc,EAAE,CAACkH,SAAS,EAAEF,aAAa,CAAC;KACnE;AACH,EAAA;AAEArD,EAAAA,gBAAgBA,GAAG;IACjB,IAAI,IAAI,CAAC9C,gBAAgB,EAAE;MACzB,IAAI,CAACA,gBAAgB,EAAE;MACvB,IAAI,CAACA,gBAAgB,GAAG,IAAI;AAC9B,IAAA;AACF,EAAA;AAEAsG,EAAAA,aAAaA,GAAG;IACd,MAAM;AAAEtH,MAAAA;KAAW,GAAG,IAAI,CAAC8E,OAAO;IAClC,IAAI9E,SAAS,KAAK,KAAK,EAAE;AACvB,MAAA,OAAO,IAAI;AACb,IAAA;IAEA,OAAOA,SAAS,KAAK,IAAI,GAAGiD,QAAQ,CAACI,IAAI,GAAG4B,UAAU,CAACjF,SAAS,CAAC;AACnE,EAAA;AAEA+C,EAAAA,oBAAoBA,GAAG;AACrB,IAAA,MAAM/C,SAAS,GAAG,IAAI,CAACsH,aAAa,EAAE;AACtC,IAAA,IAAI,CAACtH,SAAS,IAAI,CAAC,IAAI,CAAC6B,KAAK,EAAE;AAC7B,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,IAAI,IAAI,CAACA,KAAK,CAACR,UAAU,KAAKrB,SAAS,EAAE;AACvCA,MAAAA,SAAS,CAACuH,MAAM,CAAC,IAAI,CAAC1F,KAAK,CAAC;AAC9B,IAAA;AACF,EAAA;AAEAkC,EAAAA,4BAA4BA,GAAG;IAC7B,IAAI,CAAC,IAAI,CAAC7B,mBAAmB,IAAI,CAAC,IAAI,CAACL,KAAK,EAAE;AAC5C,MAAA;AACF,IAAA;;AAEA;IACA,IAAI,IAAI,CAACA,KAAK,CAACR,UAAU,KAAK,IAAI,CAACa,mBAAmB,EAAE;MACtD,IAAI,CAACA,mBAAmB,CAACqF,MAAM,CAAC,IAAI,CAAC1F,KAAK,CAAC;AAC7C,IAAA;AACF,EAAA;;AAEA;AACA,EAAA,MAAM0D,sBAAsBA,CAACnF,SAAS,EAAEkG,QAAQ,EAAElH,SAAS,EAAEgG,UAAU,EAAE/E,QAAQ,GAAG,UAAU,EAAE;AAC9F,IAAA,IAAI,CAACiG,QAAQ,CAACkB,WAAW,EAAE;AACzB,MAAA,OAAO,IAAI;AACb,IAAA;IAEA,MAAM;MAAE7H,CAAC;MAAEC,CAAC;AAAER,MAAAA,SAAS,EAAEqI;AAAe,KAAC,GAAG,MAAM3G,eAAe,CAC/DV,SAAS,EACTkG,QAAQ,EACR;MAAElH,SAAS;MAAEgG,UAAU;AAAE/E,MAAAA;AAAS,KACpC,CAAC;AAED,IAAA,IAAI,CAACiG,QAAQ,CAACkB,WAAW,EAAE;AACzB,MAAA,OAAO,IAAI;AACb,IAAA;AAEAE,IAAAA,MAAM,CAACC,MAAM,CAACrB,QAAQ,CAACsB,KAAK,EAAE;AAC5BC,MAAAA,QAAQ,EAAExH,QAAQ;MAClB6G,IAAI,EAAE,CAAA,EAAGvH,CAAC,CAAA,EAAA,CAAI;MACdqH,GAAG,EAAE,CAAA,EAAGpH,CAAC,CAAA,EAAA,CAAI;AACbkI,MAAAA,MAAM,EAAE;AACV,KAAC,CAAC;IAEFtD,WAAW,CAACO,gBAAgB,CAACuB,QAAQ,EAAE,WAAW,EAAEmB,cAAc,CAAC;AACnE,IAAA,OAAOA,cAAc;AACvB,EAAA;;AAEA;AACA;AACA;;AAEArF,EAAAA,sBAAsBA,GAAG;AACvB;AACA,IAAA,IAAI,IAAI,CAAC0C,OAAO,CAACxE,cAAc,KAAK,OAAO,IAAI,IAAI,CAACwE,OAAO,CAACxE,cAAc,KAAK,MAAM,EAAE;AACrFsC,MAAAA,YAAY,CAACW,EAAE,CAAC,IAAI,CAAC1B,KAAK,EAAE,YAAY,EAAE/C,uBAAuB,EAAEiJ,KAAK,IAAI;AAC1E,QAAA,IAAI,CAACC,sBAAsB,CAACD,KAAK,CAAC;AACpC,MAAA,CAAC,CAAC;AAEFnF,MAAAA,YAAY,CAACW,EAAE,CAAC,IAAI,CAAC1B,KAAK,EAAE,YAAY,EAAEhD,gBAAgB,EAAEkJ,KAAK,IAAI;AACnE,QAAA,IAAI,CAACE,eAAe,CAACF,KAAK,CAAC;AAC7B,MAAA,CAAC,CAAC;;AAEF;MACAnF,YAAY,CAACW,EAAE,CAAC,IAAI,CAAC1B,KAAK,EAAE,WAAW,EAAEkG,KAAK,IAAI;AAChD,QAAA,IAAI,CAACG,mBAAmB,CAACH,KAAK,CAAC;AACjC,MAAA,CAAC,CAAC;AACJ,IAAA;;AAEA;AACA,IAAA,IAAI,IAAI,CAACjD,OAAO,CAACxE,cAAc,KAAK,OAAO,IAAI,IAAI,CAACwE,OAAO,CAACxE,cAAc,KAAK,MAAM,EAAE;AACrFsC,MAAAA,YAAY,CAACW,EAAE,CAAC,IAAI,CAAC1B,KAAK,EAAE,OAAO,EAAE/C,uBAAuB,EAAEiJ,KAAK,IAAI;AACrE,QAAA,IAAI,CAACI,sBAAsB,CAACJ,KAAK,CAAC;AACpC,MAAA,CAAC,CAAC;AACJ,IAAA;AACF,EAAA;EAEAC,sBAAsBA,CAACD,KAAK,EAAE;IAC5B,MAAMlF,OAAO,GAAGkF,KAAK,CAACK,MAAM,CAACjF,OAAO,CAACrE,uBAAuB,CAAC;IAC7D,IAAI,CAAC+D,OAAO,EAAE;AACZ,MAAA;AACF,IAAA;AAEA,IAAA,MAAMwF,cAAc,GAAGxF,OAAO,CAACM,OAAO,CAACtE,gBAAgB,CAAC;IACxD,MAAMyJ,OAAO,GAAGxG,cAAc,CAACG,OAAO,CAACrD,aAAa,EAAEyJ,cAAc,CAAC;IACrE,IAAI,CAACC,OAAO,EAAE;AACZ,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,IAAI,CAACC,0BAA0B,CAACD,OAAO,CAAC;;AAExC;AACA,IAAA,IAAI,CAACE,qBAAqB,CAACH,cAAc,CAAC;;AAE1C;IACA,IAAI,CAACI,YAAY,CAAC5F,OAAO,EAAEyF,OAAO,EAAED,cAAc,CAAC;AACrD,EAAA;EAEAJ,eAAeA,CAACF,KAAK,EAAE;IACrB,MAAMM,cAAc,GAAGN,KAAK,CAACK,MAAM,CAACjF,OAAO,CAACtE,gBAAgB,CAAC;IAC7D,MAAMyJ,OAAO,GAAGxG,cAAc,CAACG,OAAO,CAACrD,aAAa,EAAEyJ,cAAc,CAAC;AACrE,IAAA,IAAI,CAACC,OAAO,IAAI,CAAC,IAAI,CAAC7G,aAAa,CAACiH,GAAG,CAACJ,OAAO,CAAC,EAAE;AAChD,MAAA;AACF,IAAA;;AAEA;IACA,IAAI,IAAI,CAACK,sBAAsB,CAACZ,KAAK,EAAEO,OAAO,CAAC,EAAE;AAC/C,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,IAAI,CAACM,qBAAqB,CAACN,OAAO,EAAED,cAAc,CAAC;AACrD,EAAA;EAEAF,sBAAsBA,CAACJ,KAAK,EAAE;IAC5B,MAAMlF,OAAO,GAAGkF,KAAK,CAACK,MAAM,CAACjF,OAAO,CAACrE,uBAAuB,CAAC;IAC7D,IAAI,CAAC+D,OAAO,EAAE;AACZ,MAAA;AACF,IAAA;IAEAkF,KAAK,CAACc,cAAc,EAAE;IACtBd,KAAK,CAACe,eAAe,EAAE;AAEvB,IAAA,MAAMT,cAAc,GAAGxF,OAAO,CAACM,OAAO,CAACtE,gBAAgB,CAAC;IACxD,MAAMyJ,OAAO,GAAGxG,cAAc,CAACG,OAAO,CAACrD,aAAa,EAAEyJ,cAAc,CAAC;IACrE,IAAI,CAACC,OAAO,EAAE;AACZ,MAAA;AACF,IAAA;;AAEA;IACA,IAAI,IAAI,CAAC7G,aAAa,CAACiH,GAAG,CAACJ,OAAO,CAAC,EAAE;AACnC,MAAA,IAAI,CAACS,aAAa,CAACT,OAAO,EAAED,cAAc,CAAC;AAC7C,IAAA,CAAC,MAAM;AACL,MAAA,IAAI,CAACG,qBAAqB,CAACH,cAAc,CAAC;MAC1C,IAAI,CAACI,YAAY,CAAC5F,OAAO,EAAEyF,OAAO,EAAED,cAAc,CAAC;AACrD,IAAA;AACF,EAAA;AAEAI,EAAAA,YAAYA,CAAC5F,OAAO,EAAEyF,OAAO,EAAED,cAAc,EAAE;IAC7C,IAAI,IAAI,CAAC5G,aAAa,CAACiH,GAAG,CAACJ,OAAO,CAAC,EAAE;AACnC,MAAA;AACF,IAAA;;AAEA;AACAzF,IAAAA,OAAO,CAACa,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;AAC7Cb,IAAAA,OAAO,CAACa,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;;AAE7C;AACA4E,IAAAA,OAAO,CAAC/G,SAAS,CAACoC,GAAG,CAAClF,eAAe,CAAC;AACtC4J,IAAAA,cAAc,CAAC9G,SAAS,CAACoC,GAAG,CAAClF,eAAe,CAAC;;AAE7C;IACA,MAAMuK,OAAO,GAAG,IAAI,CAACC,sBAAsB,CAACpG,OAAO,EAAEyF,OAAO,EAAED,cAAc,CAAC;IAC7E,IAAI,CAAC5G,aAAa,CAACyH,GAAG,CAACZ,OAAO,EAAEU,OAAO,CAAC;;AAExC;AACApG,IAAAA,YAAY,CAACW,EAAE,CAAC+E,OAAO,EAAE,YAAY,EAAE,MAAM;AAC3C,MAAA,IAAI,CAACC,0BAA0B,CAACD,OAAO,CAAC;AAC1C,IAAA,CAAC,CAAC;AACJ,EAAA;AAEAS,EAAAA,aAAaA,CAACT,OAAO,EAAED,cAAc,EAAE;IACrC,IAAI,CAAC,IAAI,CAAC5G,aAAa,CAACiH,GAAG,CAACJ,OAAO,CAAC,EAAE;AACpC,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,MAAMa,cAAc,GAAGrH,cAAc,CAACsH,IAAI,CAAC,CAAA,EAAGvK,gBAAgB,CAAA,CAAA,EAAID,aAAa,CAAA,CAAA,EAAIH,eAAe,CAAA,CAAE,EAAE6J,OAAO,CAAC;AAC9G,IAAA,KAAK,MAAMe,MAAM,IAAIF,cAAc,EAAE;AACnC,MAAA,MAAMG,aAAa,GAAGD,MAAM,CAAClG,OAAO,CAACtE,gBAAgB,CAAC;AACtD,MAAA,IAAI,CAACkK,aAAa,CAACM,MAAM,EAAEC,aAAa,CAAC;AAC3C,IAAA;;AAEA;IACA,MAAMzG,OAAO,GAAGf,cAAc,CAACG,OAAO,CAACnD,uBAAuB,EAAEuJ,cAAc,CAAC;;AAE/E;IACA,MAAMW,OAAO,GAAG,IAAI,CAACvH,aAAa,CAAC8H,GAAG,CAACjB,OAAO,CAAC;AAC/C,IAAA,IAAIU,OAAO,EAAE;AACXA,MAAAA,OAAO,EAAE;AACX,IAAA;AAEA,IAAA,IAAI,CAACvH,aAAa,CAAC+H,MAAM,CAAClB,OAAO,CAAC;;AAElC;AACA1F,IAAAA,YAAY,CAAC0B,GAAG,CAACgE,OAAO,EAAE,YAAY,CAAC;;AAEvC;AACA,IAAA,IAAIzF,OAAO,EAAE;AACXA,MAAAA,OAAO,CAACa,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC;AAChD,IAAA;AAEA4E,IAAAA,OAAO,CAAC/G,SAAS,CAACgD,MAAM,CAAC9F,eAAe,CAAC;AACzC4J,IAAAA,cAAc,CAAC9G,SAAS,CAACgD,MAAM,CAAC9F,eAAe,CAAC;;AAEhD;AACA6J,IAAAA,OAAO,CAACV,KAAK,CAACC,QAAQ,GAAG,EAAE;AAC3BS,IAAAA,OAAO,CAACV,KAAK,CAACV,IAAI,GAAG,EAAE;AACvBoB,IAAAA,OAAO,CAACV,KAAK,CAACZ,GAAG,GAAG,EAAE;AACtBsB,IAAAA,OAAO,CAACV,KAAK,CAACE,MAAM,GAAG,EAAE;AAC3B,EAAA;AAEA7D,EAAAA,iBAAiBA,GAAG;IAClB,KAAK,MAAM,CAACqE,OAAO,CAAC,IAAI,IAAI,CAAC7G,aAAa,EAAE;AAC1C,MAAA,MAAM4G,cAAc,GAAGC,OAAO,CAACnF,OAAO,CAACtE,gBAAgB,CAAC;AACxD,MAAA,IAAI,CAACkK,aAAa,CAACT,OAAO,EAAED,cAAc,CAAC;AAC7C,IAAA;AACF,EAAA;EAEAG,qBAAqBA,CAACiB,qBAAqB,EAAE;AAC3C;AACA,IAAA,MAAMC,MAAM,GAAGD,qBAAqB,CAACpI,UAAU;AAC/C,IAAA,MAAMsI,eAAe,GAAG7H,cAAc,CAACsH,IAAI,CAAC,CAAA,EAAGvK,gBAAgB,CAAA,GAAA,EAAMD,aAAa,CAAA,CAAA,EAAIH,eAAe,CAAA,CAAE,EAAEiL,MAAM,CAAC;AAEhH,IAAA,KAAK,MAAME,WAAW,IAAID,eAAe,EAAE;AACzC,MAAA,MAAME,cAAc,GAAGD,WAAW,CAACzG,OAAO,CAACtE,gBAAgB,CAAC;MAC5D,IAAIgL,cAAc,KAAKJ,qBAAqB,EAAE;AAC5C,QAAA,IAAI,CAACV,aAAa,CAACa,WAAW,EAAEC,cAAc,CAAC;AACjD,MAAA;AACF,IAAA;AACF,EAAA;AAEAZ,EAAAA,sBAAsBA,CAACpG,OAAO,EAAEyF,OAAO,EAAED,cAAc,EAAE;IACvD,MAAMrD,gBAAgB,GAAGqD,cAAc;AACvC,IAAA,MAAMjJ,SAAS,GAAGD,uBAAuB,CAACD,iBAAiB,CAAC;AAC5D,IAAA,MAAMkG,UAAU,GAAG,CACjBlF,MAAM,CAAC;AAAEsG,MAAAA,QAAQ,EAAE,CAAC;AAAEC,MAAAA,SAAS,EAAE;KAAI,CAAC,EACtCC,IAAI,CAAC;AACHC,MAAAA,kBAAkB,EAAE,CAClBxH,uBAAuB,CAAC,aAAa,CAAC,EACtCA,uBAAuB,CAAC,SAAS,CAAC,EAClCA,uBAAuB,CAAC,WAAW,CAAC;KAEvC,CAAC,EACF0H,KAAK,CAAC;AAAEiD,MAAAA,OAAO,EAAE;AAAE,KAAC,CAAC,CACtB;AAED,IAAA,MAAMC,cAAc,GAAGA,MAAM,IAAI,CAACxE,sBAAsB,CAACP,gBAAgB,EAAEsD,OAAO,EAAElJ,SAAS,EAAEgG,UAAU,CAAC;AAE1G2E,IAAAA,cAAc,EAAE;AAChB,IAAA,OAAO7E,UAAU,CAACF,gBAAgB,EAAEsD,OAAO,EAAEyB,cAAc,CAAC;AAC9D,EAAA;AAEAnB,EAAAA,qBAAqBA,CAACN,OAAO,EAAED,cAAc,EAAE;AAC7C,IAAA,IAAI,CAACE,0BAA0B,CAACD,OAAO,CAAC;AAExC,IAAA,MAAM0B,SAAS,GAAGC,UAAU,CAAC,MAAM;AACjC,MAAA,IAAI,CAAClB,aAAa,CAACT,OAAO,EAAED,cAAc,CAAC;AAC3C,MAAA,IAAI,CAAC1G,qBAAqB,CAAC6H,MAAM,CAAClB,OAAO,CAAC;AAC5C,IAAA,CAAC,EAAE,IAAI,CAACxD,OAAO,CAACvE,YAAY,CAAC;IAE7B,IAAI,CAACoB,qBAAqB,CAACuH,GAAG,CAACZ,OAAO,EAAE0B,SAAS,CAAC;AACpD,EAAA;EAEAzB,0BAA0BA,CAACD,OAAO,EAAE;IAClC,MAAM0B,SAAS,GAAG,IAAI,CAACrI,qBAAqB,CAAC4H,GAAG,CAACjB,OAAO,CAAC;AACzD,IAAA,IAAI0B,SAAS,EAAE;MACbE,YAAY,CAACF,SAAS,CAAC;AACvB,MAAA,IAAI,CAACrI,qBAAqB,CAAC6H,MAAM,CAAClB,OAAO,CAAC;AAC5C,IAAA;AACF,EAAA;AAEApE,EAAAA,wBAAwBA,GAAG;IACzB,KAAK,MAAM8F,SAAS,IAAI,IAAI,CAACrI,qBAAqB,CAACwI,MAAM,EAAE,EAAE;MAC3DD,YAAY,CAACF,SAAS,CAAC;AACzB,IAAA;AAEA,IAAA,IAAI,CAACrI,qBAAqB,CAACyI,KAAK,EAAE;AACpC,EAAA;;AAEA;AACA;AACA;;EAEAlC,mBAAmBA,CAACH,KAAK,EAAE;IACzB,IAAI,CAACnG,gBAAgB,GAAG;MACtBjC,CAAC,EAAEoI,KAAK,CAACsC,OAAO;MAChBzK,CAAC,EAAEmI,KAAK,CAACuC,OAAO;AAChBC,MAAAA,SAAS,EAAEC,IAAI,CAACC,GAAG;KACpB;AACH,EAAA;AAEA9B,EAAAA,sBAAsBA,CAACZ,KAAK,EAAEO,OAAO,EAAE;AACrC,IAAA,IAAI,CAAC,IAAI,CAAC1G,gBAAgB,EAAE;AAC1B,MAAA,OAAO,KAAK;AACd,IAAA;AAEA,IAAA,MAAM8I,WAAW,GAAGpC,OAAO,CAAC1D,qBAAqB,EAAE;AACnD,IAAA,MAAM+F,UAAU,GAAG;MAAEhL,CAAC,EAAEoI,KAAK,CAACsC,OAAO;MAAEzK,CAAC,EAAEmI,KAAK,CAACuC;KAAS;AACzD,IAAA,MAAMM,OAAO,GAAG;AAAEjL,MAAAA,CAAC,EAAE,IAAI,CAACiC,gBAAgB,CAACjC,CAAC;AAAEC,MAAAA,CAAC,EAAE,IAAI,CAACgC,gBAAgB,CAAChC;KAAG;;AAE1E;AACA;AACA,IAAA,MAAMiL,KAAK,GAAGxL,KAAK,EAAE;;AAErB;IACA,MAAMyL,OAAO,GAAGD,KAAK,GAAGH,WAAW,CAACzD,KAAK,GAAGyD,WAAW,CAACxD,IAAI;AAC5D,IAAA,MAAM6D,SAAS,GAAG;AAAEpL,MAAAA,CAAC,EAAEmL,OAAO;MAAElL,CAAC,EAAE8K,WAAW,CAAC1D;KAAK;AACpD,IAAA,MAAMgE,YAAY,GAAG;AAAErL,MAAAA,CAAC,EAAEmL,OAAO;MAAElL,CAAC,EAAE8K,WAAW,CAAC3D;KAAQ;;AAE1D;AACA;IACA,OAAO,IAAI,CAACkE,gBAAgB,CAACN,UAAU,EAAEC,OAAO,EAAEG,SAAS,EAAEC,YAAY,CAAC;AAC5E,EAAA;EAEAC,gBAAgBA,CAACC,KAAK,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE;AAClC;IACA,MAAMC,EAAE,GAAG/L,YAAY,CAAC2L,KAAK,EAAEC,EAAE,EAAEC,EAAE,CAAC;IACtC,MAAMG,EAAE,GAAGhM,YAAY,CAAC2L,KAAK,EAAEE,EAAE,EAAEC,EAAE,CAAC;IACtC,MAAMG,EAAE,GAAGjM,YAAY,CAAC2L,KAAK,EAAEG,EAAE,EAAEF,EAAE,CAAC;AAEtC,IAAA,MAAMM,MAAM,GAAIH,EAAE,GAAG,CAAC,IAAMC,EAAE,GAAG,CAAE,IAAKC,EAAE,GAAG,CAAE;AAC/C,IAAA,MAAME,MAAM,GAAIJ,EAAE,GAAG,CAAC,IAAMC,EAAE,GAAG,CAAE,IAAKC,EAAE,GAAG,CAAE;AAE/C,IAAA,OAAO,EAAEC,MAAM,IAAIC,MAAM,CAAC;AAC5B,EAAA;;AAEA;AACA;AACA;;AAEAC,EAAAA,eAAeA,CAAC;IAAEC,GAAG;AAAExD,IAAAA;AAAO,GAAC,EAAE;AAC/B;AACA;IACA,MAAMyD,WAAW,GAAGzD,MAAM,CAACjF,OAAO,CAACvE,aAAa,CAAC,IAAI,IAAI,CAACiD,KAAK;IAC/D,MAAMiK,KAAK,GAAGhK,cAAc,CAACsH,IAAI,CAAC,CAAA,cAAA,EAAiBpK,sBAAsB,CAAA,WAAA,EAAcA,sBAAsB,CAAA,CAAE,EAAE6M,WAAW,CAAC,CAC1HE,MAAM,CAACnL,OAAO,IAAIoL,SAAS,CAACpL,OAAO,CAAC,CAAC;AAExC,IAAA,IAAI,CAACkL,KAAK,CAACG,MAAM,EAAE;AACjB,MAAA;AACF,IAAA;;AAEA;AACA;IACAC,oBAAoB,CAACJ,KAAK,EAAE1D,MAAM,EAAEwD,GAAG,KAAKnO,cAAc,EAAE,CAACqO,KAAK,CAACK,QAAQ,CAAC/D,MAAM,CAAC,CAAC,CAAC3E,KAAK,EAAE;AAC9F,EAAA;EAEA2I,qBAAqBA,CAACrE,KAAK,EAAE;IAC3B,MAAM;MAAE6D,GAAG;AAAExD,MAAAA;AAAO,KAAC,GAAGL,KAAK;AAC7B,IAAA,MAAM8C,KAAK,GAAGxL,KAAK,EAAE;;AAErB;AACA,IAAA,MAAMgN,QAAQ,GAAGxB,KAAK,GAAGnN,cAAc,GAAGC,eAAe;AACzD,IAAA,MAAM2O,OAAO,GAAGzB,KAAK,GAAGlN,eAAe,GAAGD,cAAc;;AAExD;AACA,IAAA,MAAM2K,cAAc,GAAGD,MAAM,CAACjF,OAAO,CAACtE,gBAAgB,CAAC;IACvD,MAAM0N,gBAAgB,GAAGlE,cAAc,IAAID,MAAM,CAACoE,OAAO,CAAC1N,uBAAuB,CAAC;;AAElF;IACA,IAAI,CAAC8M,GAAG,KAAK9N,SAAS,IAAI8N,GAAG,KAAK7N,SAAS,KAAKwO,gBAAgB,EAAE;MAChExE,KAAK,CAACc,cAAc,EAAE;MACtBd,KAAK,CAACe,eAAe,EAAE;MAEvB,MAAMR,OAAO,GAAGxG,cAAc,CAACG,OAAO,CAACrD,aAAa,EAAEyJ,cAAc,CAAC;AACrE,MAAA,IAAIC,OAAO,EAAE;AACX,QAAA,IAAI,CAACE,qBAAqB,CAACH,cAAc,CAAC;QAC1C,IAAI,CAACI,YAAY,CAACL,MAAM,EAAEE,OAAO,EAAED,cAAc,CAAC;AAClD;AACAoE,QAAAA,qBAAqB,CAAC,MAAM;UAC1B,MAAMC,SAAS,GAAG5K,cAAc,CAACG,OAAO,CAACjD,sBAAsB,EAAEsJ,OAAO,CAAC;AACzE,UAAA,IAAIoE,SAAS,EAAE;YACbA,SAAS,CAACjJ,KAAK,EAAE;AACnB,UAAA;AACF,QAAA,CAAC,CAAC;AACJ,MAAA;AAEA,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AACA,IAAA,IAAImI,GAAG,KAAKS,QAAQ,IAAIE,gBAAgB,EAAE;MACxCxE,KAAK,CAACc,cAAc,EAAE;MACtBd,KAAK,CAACe,eAAe,EAAE;MAEvB,MAAMR,OAAO,GAAGxG,cAAc,CAACG,OAAO,CAACrD,aAAa,EAAEyJ,cAAc,CAAC;AACrE,MAAA,IAAIC,OAAO,EAAE;AACX,QAAA,IAAI,CAACE,qBAAqB,CAACH,cAAc,CAAC;QAC1C,IAAI,CAACI,YAAY,CAACL,MAAM,EAAEE,OAAO,EAAED,cAAc,CAAC;AAClD;AACAoE,QAAAA,qBAAqB,CAAC,MAAM;UAC1B,MAAMC,SAAS,GAAG5K,cAAc,CAACG,OAAO,CAACjD,sBAAsB,EAAEsJ,OAAO,CAAC;AACzE,UAAA,IAAIoE,SAAS,EAAE;YACbA,SAAS,CAACjJ,KAAK,EAAE;AACnB,UAAA;AACF,QAAA,CAAC,CAAC;AACJ,MAAA;AAEA,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;IACA,IAAImI,GAAG,KAAKU,OAAO,EAAE;AACnB,MAAA,MAAMT,WAAW,GAAGzD,MAAM,CAACjF,OAAO,CAACvE,aAAa,CAAC;AACjD,MAAA,MAAM+N,oBAAoB,GAAGd,WAAW,EAAE1I,OAAO,CAACtE,gBAAgB,CAAC;AAEnE,MAAA,IAAI8N,oBAAoB,EAAE;QACxB5E,KAAK,CAACc,cAAc,EAAE;QACtBd,KAAK,CAACe,eAAe,EAAE;QAEvB,MAAM8D,aAAa,GAAG9K,cAAc,CAACG,OAAO,CAACnD,uBAAuB,EAAE6N,oBAAoB,CAAC;AAC3F,QAAA,IAAI,CAAC5D,aAAa,CAAC8C,WAAW,EAAEc,oBAAoB,CAAC;AACrD,QAAA,IAAIC,aAAa,EAAE;UACjBA,aAAa,CAACnJ,KAAK,EAAE;AACvB,QAAA;AAEA,QAAA,OAAO,IAAI;AACb,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,IAAImI,GAAG,KAAKhO,QAAQ,IAAIgO,GAAG,KAAK/N,OAAO,EAAE;MACvCkK,KAAK,CAACc,cAAc,EAAE;MACtBd,KAAK,CAACe,eAAe,EAAE;AAEvB,MAAA,MAAM+C,WAAW,GAAGzD,MAAM,CAACjF,OAAO,CAACvE,aAAa,CAAC;MACjD,MAAMkN,KAAK,GAAGhK,cAAc,CAACsH,IAAI,CAAC,CAAA,cAAA,EAAiBpK,sBAAsB,CAAA,WAAA,EAAcA,sBAAsB,CAAA,CAAE,EAAE6M,WAAW,CAAC,CAC1HE,MAAM,CAACnL,OAAO,IAAIoL,SAAS,CAACpL,OAAO,CAAC,CAAC;MAExC,IAAIkL,KAAK,CAACG,MAAM,EAAE;AAChB,QAAA,MAAMY,UAAU,GAAGjB,GAAG,KAAKhO,QAAQ,GAAGkO,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAACA,KAAK,CAACG,MAAM,GAAG,CAAC,CAAC;QACxEY,UAAU,CAACpJ,KAAK,EAAE;AACpB,MAAA;AAEA,MAAA,OAAO,IAAI;AACb,IAAA;AAEA,IAAA,OAAO,KAAK;AACd,EAAA;EAEA,OAAOqJ,UAAUA,CAAC/E,KAAK,EAAE;AACvB,IAAA,IAAIA,KAAK,CAACgF,MAAM,KAAK/O,kBAAkB,IAAK+J,KAAK,CAACiF,IAAI,KAAK,OAAO,IAAIjF,KAAK,CAAC6D,GAAG,KAAKrO,OAAQ,EAAE;AAC5F,MAAA;AACF,IAAA;AAEA,IAAA,MAAM0P,WAAW,GAAGnL,cAAc,CAACsH,IAAI,CAACzK,0BAA0B,CAAC;AAEnE,IAAA,KAAK,MAAM0D,MAAM,IAAI4K,WAAW,EAAE;AAChC,MAAA,MAAMC,OAAO,GAAGzM,QAAQ,CAAC0M,WAAW,CAAC9K,MAAM,CAAC;MAC5C,IAAI,CAAC6K,OAAO,IAAIA,OAAO,CAACpI,OAAO,CAAChF,SAAS,KAAK,KAAK,EAAE;AACnD,QAAA;AACF,MAAA;AAEA,MAAA,MAAMsN,YAAY,GAAGrF,KAAK,CAACqF,YAAY,EAAE;MACzC,MAAMC,YAAY,GAAGD,YAAY,CAACjB,QAAQ,CAACe,OAAO,CAACrL,KAAK,CAAC;AACzD,MAAA,IACEuL,YAAY,CAACjB,QAAQ,CAACe,OAAO,CAAC9L,QAAQ,CAAC,IACtC8L,OAAO,CAACpI,OAAO,CAAChF,SAAS,KAAK,QAAQ,IAAI,CAACuN,YAAa,IACxDH,OAAO,CAACpI,OAAO,CAAChF,SAAS,KAAK,SAAS,IAAIuN,YAAa,EACzD;AACA,QAAA;AACF,MAAA;;AAEA;AACA,MAAA,IAAIH,OAAO,CAACrL,KAAK,CAACL,QAAQ,CAACuG,KAAK,CAACK,MAAM,CAAC,KAAML,KAAK,CAACiF,IAAI,KAAK,OAAO,IAAIjF,KAAK,CAAC6D,GAAG,KAAKrO,OAAO,IAAK,oCAAoC,CAAC+P,IAAI,CAACvF,KAAK,CAACK,MAAM,CAACmF,OAAO,CAAC,CAAC,EAAE;AAClK,QAAA;AACF,MAAA;AAEA,MAAA,MAAM7K,aAAa,GAAG;QAAEA,aAAa,EAAEwK,OAAO,CAAC9L;OAAU;AAEzD,MAAA,IAAI2G,KAAK,CAACiF,IAAI,KAAK,OAAO,EAAE;QAC1BtK,aAAa,CAAC8K,UAAU,GAAGzF,KAAK;AAClC,MAAA;AAEAmF,MAAAA,OAAO,CAACtJ,aAAa,CAAClB,aAAa,CAAC;AACtC,IAAA;AACF,EAAA;EAEA,OAAO+K,qBAAqBA,CAAC1F,KAAK,EAAE;AAClC;IACA,MAAM2F,OAAO,GAAG,iBAAiB,CAACJ,IAAI,CAACvF,KAAK,CAACK,MAAM,CAACmF,OAAO,CAAC;AAC5D,IAAA,MAAMI,aAAa,GAAG5F,KAAK,CAAC6D,GAAG,KAAKtO,UAAU;AAC9C,IAAA,MAAMsQ,eAAe,GAAG,CAACpQ,YAAY,EAAEC,cAAc,CAAC,CAAC0O,QAAQ,CAACpE,KAAK,CAAC6D,GAAG,CAAC;AAC1E,IAAA,MAAMiC,kBAAkB,GAAG,CAACnQ,cAAc,EAAEC,eAAe,CAAC,CAACwO,QAAQ,CAACpE,KAAK,CAAC6D,GAAG,CAAC;AAChF,IAAA,MAAMkC,gBAAgB,GAAG,CAAClQ,QAAQ,EAAEC,OAAO,CAAC,CAACsO,QAAQ,CAACpE,KAAK,CAAC6D,GAAG,CAAC;AAChE,IAAA,MAAMmC,mBAAmB,GAAG,CAACjQ,SAAS,EAAEC,SAAS,CAAC,CAACoO,QAAQ,CAACpE,KAAK,CAAC6D,GAAG,CAAC;;AAEtE;IACA,MAAMW,gBAAgB,GAAGxE,KAAK,CAACK,MAAM,CAACoE,OAAO,CAAC1N,uBAAuB,CAAC;AAEtE,IAAA,IAAI,CAAC8O,eAAe,IAAI,CAACD,aAAa,IAAI,CAACE,kBAAkB,IAAI,CAACC,gBAAgB,IAC9E,EAAEC,mBAAmB,IAAIxB,gBAAgB,CAAC,EAAE;AAC9C,MAAA;AACF,IAAA;AAEA,IAAA,IAAImB,OAAO,IAAI,CAACC,aAAa,EAAE;AAC7B,MAAA;AACF,IAAA;;AAEA;IACA,MAAMK,eAAe,GAAG,IAAI,CAACxB,OAAO,CAAC9N,oBAAoB,CAAC,GACxD,IAAI,GACHoD,cAAc,CAACE,IAAI,CAAC,IAAI,EAAEtD,oBAAoB,CAAC,CAAC,CAAC,CAAC,IACjDoD,cAAc,CAACC,IAAI,CAAC,IAAI,EAAErD,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAClDoD,cAAc,CAACG,OAAO,CAACvD,oBAAoB,EAAEqJ,KAAK,CAACkG,cAAc,CAAC5M,UAAU,CAAE;IAElF,IAAI,CAAC2M,eAAe,EAAE;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,MAAME,QAAQ,GAAGzN,QAAQ,CAAC0N,mBAAmB,CAACH,eAAe,CAAC;;AAE9D;AACA,IAAA,IAAI,CAACH,kBAAkB,IAAIC,gBAAgB,IAAKC,mBAAmB,IAAIxB,gBAAiB,KAAK2B,QAAQ,CAAC9B,qBAAqB,CAACrE,KAAK,CAAC,EAAE;AAClI,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,IAAI6F,eAAe,EAAE;MACnB7F,KAAK,CAACc,cAAc,EAAE;MACtBd,KAAK,CAACe,eAAe,EAAE;MACvBoF,QAAQ,CAAC1L,IAAI,EAAE;AACf0L,MAAAA,QAAQ,CAACvC,eAAe,CAAC5D,KAAK,CAAC;AAC/B,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,IAAI4F,aAAa,IAAIO,QAAQ,CAAC5L,QAAQ,EAAE,EAAE;MACxCyF,KAAK,CAACc,cAAc,EAAE;MACtBd,KAAK,CAACe,eAAe,EAAE;;AAEvB;MACA,MAAM+C,WAAW,GAAG9D,KAAK,CAACK,MAAM,CAACjF,OAAO,CAACvE,aAAa,CAAC;AACvD,MAAA,MAAM+N,oBAAoB,GAAGd,WAAW,EAAE1I,OAAO,CAACtE,gBAAgB,CAAC;MAEnE,IAAI8N,oBAAoB,IAAIuB,QAAQ,CAACzM,aAAa,CAAC2M,IAAI,GAAG,CAAC,EAAE;QAC3D,MAAMxB,aAAa,GAAG9K,cAAc,CAACG,OAAO,CAACnD,uBAAuB,EAAE6N,oBAAoB,CAAC;AAC3FuB,QAAAA,QAAQ,CAACnF,aAAa,CAAC8C,WAAW,EAAEc,oBAAoB,CAAC;AACzD,QAAA,IAAIC,aAAa,EAAE;UACjBA,aAAa,CAACnJ,KAAK,EAAE;AACvB,QAAA;AAEA,QAAA;AACF,MAAA;;AAEA;MACAyK,QAAQ,CAAC3L,IAAI,EAAE;MACfyL,eAAe,CAACvK,KAAK,EAAE;AACzB,IAAA;AACF,EAAA;AACF;;AAEA;AACA;AACA;;AAEAb,YAAY,CAACW,EAAE,CAACN,QAAQ,EAAE1E,sBAAsB,EAAEG,oBAAoB,EAAE+B,QAAQ,CAACgN,qBAAqB,CAAC;AACvG7K,YAAY,CAACW,EAAE,CAACN,QAAQ,EAAE1E,sBAAsB,EAAEK,aAAa,EAAE6B,QAAQ,CAACgN,qBAAqB,CAAC;AAChG7K,YAAY,CAACW,EAAE,CAACN,QAAQ,EAAE3E,oBAAoB,EAAEmC,QAAQ,CAACqM,UAAU,CAAC;AACpElK,YAAY,CAACW,EAAE,CAACN,QAAQ,EAAEzE,oBAAoB,EAAEiC,QAAQ,CAACqM,UAAU,CAAC;AACpElK,YAAY,CAACW,EAAE,CAACN,QAAQ,EAAE3E,oBAAoB,EAAEI,oBAAoB,EAAE,UAAUqJ,KAAK,EAAE;EACrFA,KAAK,CAACc,cAAc,EAAE;EACtBpI,QAAQ,CAAC0N,mBAAmB,CAAC,IAAI,CAAC,CAAC9L,MAAM,EAAE;AAC7C,CAAC,CAAC;;;;"}
\ No newline at end of file
similarity index 76%
rename from js/dist/dropdown.js
rename to js/dist/menu.js
index d6c0f9120658cb1454a1a5d16601ad08d504d471..9c79724ddbceda7f35a76965d5b6f3fecf01b6a8 100644 (file)
@@ -1,5 +1,5 @@
 /*!
-  * Bootstrap dropdown.js v6.0.0-alpha1 (https://getbootstrap.com/)
+  * Bootstrap menu.js v6.0.0-alpha1 (https://getbootstrap.com/)
   * Copyright 2011-2026 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   */
@@ -13,7 +13,7 @@ import { getResponsivePlacement, parseResponsivePlacement, createBreakpointListe
 
 /**
  * --------------------------------------------------------------------------
- * Bootstrap dropdown.js
+ * Bootstrap menu.js
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  * --------------------------------------------------------------------------
  */
@@ -23,8 +23,8 @@ import { getResponsivePlacement, parseResponsivePlacement, createBreakpointListe
  * Constants
  */
 
-const NAME = 'dropdown';
-const DATA_KEY = 'bs.dropdown';
+const NAME = 'menu';
+const DATA_KEY = 'bs.menu';
 const EVENT_KEY = `.${DATA_KEY}`;
 const DATA_API_KEY = '.data-api';
 const ESCAPE_KEY = 'Escape';
@@ -38,8 +38,6 @@ const END_KEY = 'End';
 const ENTER_KEY = 'Enter';
 const SPACE_KEY = ' ';
 const RIGHT_MOUSE_BUTTON = 2;
-
-// Hover intent delay (ms) - grace period before closing submenu
 const SUBMENU_CLOSE_DELAY = 100;
 const EVENT_HIDE = `hide${EVENT_KEY}`;
 const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
@@ -49,30 +47,20 @@ const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
 const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`;
 const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`;
 const CLASS_NAME_SHOW = 'show';
-const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)';
-const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`;
-const SELECTOR_MENU = '.dropdown-menu';
-const SELECTOR_SUBMENU = '.dropdown-submenu';
-const SELECTOR_SUBMENU_TOGGLE = '.dropdown-submenu > .dropdown-item';
+const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="menu"]:not(.disabled):not(:disabled)';
+const SELECTOR_MENU = '.menu';
+const SELECTOR_SUBMENU = '.submenu';
+const SELECTOR_SUBMENU_TOGGLE = '.submenu > .menu-item';
 const SELECTOR_NAVBAR_NAV = '.navbar-nav';
-const SELECTOR_VISIBLE_ITEMS = '.dropdown-item:not(.disabled):not(:disabled)';
-
-// Default logical placement (uses start/end which get resolved to left/right based on RTL)
+const SELECTOR_VISIBLE_ITEMS = '.menu-item:not(.disabled):not(:disabled)';
 const DEFAULT_PLACEMENT = 'bottom-start';
 const SUBMENU_PLACEMENT = 'end-start';
-
-// Resolve logical placement (start/end) to physical (left/right) based on RTL
 const resolveLogicalPlacement = placement => {
   if (isRTL()) {
-    // RTL: start → right, end → left
     return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left');
   }
-
-  // LTR: start → left, end → right
   return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right');
 };
-
-// Helper for barycentric coordinate calculation (point in triangle check)
 const triangleSign = (p1, p2, p3) => (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);
 const Default = {
   autoClose: true,
@@ -81,12 +69,11 @@ const Default = {
   display: 'dynamic',
   offset: [0, 2],
   floatingConfig: null,
+  menu: null,
   placement: DEFAULT_PLACEMENT,
   reference: 'toggle',
   strategy: 'absolute',
-  // Submenu options
   submenuTrigger: 'both',
-  // 'click', 'hover', or 'both'
   submenuDelay: SUBMENU_CLOSE_DELAY
 };
 const DefaultType = {
@@ -96,6 +83,7 @@ const DefaultType = {
   display: 'string',
   offset: '(array|string|function)',
   floatingConfig: '(null|object|function)',
+  menu: '(null|element)',
   placement: 'string',
   reference: '(string|element|object)',
   strategy: 'string',
@@ -107,31 +95,24 @@ const DefaultType = {
  * Class definition
  */
 
-class Dropdown extends BaseComponent {
+class Menu extends BaseComponent {
+  static _openInstances = (() => new Set())();
   constructor(element, config) {
     if (typeof computePosition === 'undefined') {
-      throw new TypeError('Bootstrap\'s dropdowns require Floating UI (https://floating-ui.com)');
+      throw new TypeError('Bootstrap\'s menus require Floating UI (https://floating-ui.com)');
     }
     super(element, config);
     this._floatingCleanup = null;
     this._mediaQueryListeners = [];
     this._responsivePlacements = null;
-    this._parent = this._element.parentNode; // dropdown wrapper
-    this._isSubmenu = this._parent.classList.contains('dropdown-submenu');
-    this._openSubmenus = new Map(); // Map of submenu element -> cleanup function
-    this._submenuCloseTimeouts = new Map(); // Map of submenu element -> timeout ID
-    this._hoverIntentData = null; // For safe triangle calculation
-
-    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
-    this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);
-
-    // Store original menu parent for container option
+    this._parent = this._element.parentNode;
+    this._isSubmenu = this._parent.classList?.contains('submenu');
+    this._openSubmenus = new Map();
+    this._submenuCloseTimeouts = new Map();
+    this._hoverIntentData = null;
+    this._menu = this._config.menu || this._findMenu();
     this._menuOriginalParent = this._menu?.parentNode;
-
-    // Parse responsive placements on init
     this._parseResponsivePlacements();
-
-    // Set up submenu event listeners
     this._setupSubmenuListeners();
   }
 
@@ -161,25 +142,23 @@ class Dropdown extends BaseComponent {
     if (showEvent.defaultPrevented) {
       return;
     }
-
-    // Move menu to container if specified (to escape overflow clipping)
     this._moveMenuToContainer();
     this._createFloating();
-
-    // If this is a touch-enabled device we add extra
-    // empty mouseover listeners to the body's immediate children;
-    // only needed because of broken event delegation on iOS
-    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
     if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {
       for (const element of [].concat(...document.body.children)) {
         EventHandler.on(element, 'mouseover', noop);
       }
     }
-    this._element.focus();
+    this._element.focus({
+      focusVisible: false
+    });
     this._element.setAttribute('aria-expanded', 'true');
     this._menu.classList.add(CLASS_NAME_SHOW);
     this._element.classList.add(CLASS_NAME_SHOW);
-    this._parent.classList.add(CLASS_NAME_SHOW);
+    if (this._parent) {
+      this._parent.classList.add(CLASS_NAME_SHOW);
+    }
+    Menu._openInstances.add(this);
     EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget);
   }
   hide() {
@@ -197,6 +176,7 @@ class Dropdown extends BaseComponent {
     this._disposeMediaQueryListeners();
     this._closeAllSubmenus();
     this._clearAllSubmenuTimeouts();
+    Menu._openInstances.delete(this);
     super.dispose();
   }
   update() {
@@ -206,38 +186,36 @@ class Dropdown extends BaseComponent {
   }
 
   // Private
+  _findMenu() {
+    return SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);
+  }
   _completeHide(relatedTarget) {
     const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget);
     if (hideEvent.defaultPrevented) {
       return;
     }
-
-    // Close all open submenus first
     this._closeAllSubmenus();
-
-    // If this is a touch-enabled device we remove the extra
-    // empty mouseover listeners we added for iOS support
     if ('ontouchstart' in document.documentElement) {
       for (const element of [].concat(...document.body.children)) {
         EventHandler.off(element, 'mouseover', noop);
       }
     }
     this._disposeFloating();
-
-    // Restore menu to original parent if it was moved
     this._restoreMenuToOriginalParent();
     this._menu.classList.remove(CLASS_NAME_SHOW);
     this._element.classList.remove(CLASS_NAME_SHOW);
-    this._parent.classList.remove(CLASS_NAME_SHOW);
+    if (this._parent) {
+      this._parent.classList.remove(CLASS_NAME_SHOW);
+    }
     this._element.setAttribute('aria-expanded', 'false');
     Manipulator.removeDataAttribute(this._menu, 'placement');
     Manipulator.removeDataAttribute(this._menu, 'display');
+    Menu._openInstances.delete(this);
     EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget);
   }
   _getConfig(config) {
     config = super._getConfig(config);
     if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {
-      // Floating UI virtual elements require a getBoundingClientRect method
       throw new TypeError(`${NAME.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
     }
     return config;
@@ -255,11 +233,7 @@ class Dropdown extends BaseComponent {
     } else if (typeof this._config.reference === 'object') {
       referenceElement = this._config.reference;
     }
-
-    // Initial position update
     this._updateFloatingPosition(referenceElement);
-
-    // Set up auto-update for scroll/resize
     this._floatingCleanup = autoUpdate(referenceElement, this._menu, () => this._updateFloatingPosition(referenceElement));
   }
   async _updateFloatingPosition(referenceElement = null) {
@@ -286,10 +260,7 @@ class Dropdown extends BaseComponent {
     return this._menu.classList.contains(CLASS_NAME_SHOW);
   }
   _getPlacement() {
-    // If we have responsive placements, find the appropriate one for current viewport
     const placement = this._responsivePlacements ? getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) : this._config.placement;
-
-    // Resolve logical placements (start/end) to physical (left/right) based on RTL
     return resolveLogicalPlacement(placement);
   }
   _parseResponsivePlacements() {
@@ -318,7 +289,6 @@ class Dropdown extends BaseComponent {
       return offsetConfig.split(',').map(value => Number.parseInt(value, 10));
     }
     if (typeof offsetConfig === 'function') {
-      // Floating UI passes different args, adapt the interface for offset function callbacks
       return ({
         placement,
         rects
@@ -335,28 +305,18 @@ class Dropdown extends BaseComponent {
   }
   _getFloatingMiddleware() {
     const offsetValue = this._getOffset();
-    const middleware = [
-    // Offset middleware - handles distance from reference
-    offset(typeof offsetValue === 'function' ? offsetValue : {
+    const middleware = [offset(typeof offsetValue === 'function' ? offsetValue : {
       mainAxis: offsetValue[1] || 0,
       crossAxis: offsetValue[0] || 0
-    }),
-    // Flip middleware - handles fallback placements
-    flip({
+    }), flip({
       fallbackPlacements: this._getFallbackPlacements()
-    }),
-    // Shift middleware - prevents overflow
-    shift({
+    }), shift({
       boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary
     })];
     return middleware;
   }
   _getFallbackPlacements() {
-    // Get appropriate fallback placements based on current placement
-    // Fallbacks should preserve alignment (start/end) when possible
     const placement = this._getPlacement();
-
-    // Handle all possible Floating UI placements
     const fallbackMap = {
       bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],
       'bottom-start': ['top-start', 'bottom-end', 'top-end'],
@@ -404,8 +364,6 @@ class Dropdown extends BaseComponent {
     if (!container || !this._menu) {
       return;
     }
-
-    // Only move if not already in the container
     if (this._menu.parentNode !== container) {
       container.append(this._menu);
     }
@@ -414,14 +372,10 @@ class Dropdown extends BaseComponent {
     if (!this._menuOriginalParent || !this._menu) {
       return;
     }
-
-    // Only restore if menu was moved
     if (this._menu.parentNode !== this._menuOriginalParent) {
       this._menuOriginalParent.append(this._menu);
     }
   }
-
-  // Shared helper for positioning any floating element
   async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {
     if (!floating.isConnected) {
       return null;
@@ -453,7 +407,6 @@ class Dropdown extends BaseComponent {
   // -------------------------------------------------------------------------
 
   _setupSubmenuListeners() {
-    // Set up hover listeners for submenu triggers
     if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {
       EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {
         this._onSubmenuTriggerEnter(event);
@@ -461,14 +414,10 @@ class Dropdown extends BaseComponent {
       EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {
         this._onSubmenuLeave(event);
       });
-
-      // Track mouse movement for safe triangle calculation
       EventHandler.on(this._menu, 'mousemove', event => {
         this._trackMousePosition(event);
       });
     }
-
-    // Set up click listener for submenu triggers
     if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {
       EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {
         this._onSubmenuTriggerClick(event);
@@ -485,14 +434,8 @@ class Dropdown extends BaseComponent {
     if (!submenu) {
       return;
     }
-
-    // Cancel any pending close timeout for this submenu
     this._cancelSubmenuCloseTimeout(submenu);
-
-    // Close other open submenus at the same level
     this._closeSiblingSubmenus(submenuWrapper);
-
-    // Open this submenu
     this._openSubmenu(trigger, submenu, submenuWrapper);
   }
   _onSubmenuLeave(event) {
@@ -501,13 +444,9 @@ class Dropdown extends BaseComponent {
     if (!submenu || !this._openSubmenus.has(submenu)) {
       return;
     }
-
-    // Check if we're moving toward the submenu (safe triangle)
     if (this._isMovingTowardSubmenu(event, submenu)) {
       return;
     }
-
-    // Schedule submenu close with delay
     this._scheduleSubmenuClose(submenu, submenuWrapper);
   }
   _onSubmenuTriggerClick(event) {
@@ -522,8 +461,6 @@ class Dropdown extends BaseComponent {
     if (!submenu) {
       return;
     }
-
-    // Toggle submenu
     if (this._openSubmenus.has(submenu)) {
       this._closeSubmenu(submenu, submenuWrapper);
     } else {
@@ -535,20 +472,12 @@ class Dropdown extends BaseComponent {
     if (this._openSubmenus.has(submenu)) {
       return;
     }
-
-    // Set ARIA attributes
     trigger.setAttribute('aria-expanded', 'true');
     trigger.setAttribute('aria-haspopup', 'true');
-
-    // Position and show submenu
     submenu.classList.add(CLASS_NAME_SHOW);
     submenuWrapper.classList.add(CLASS_NAME_SHOW);
-
-    // Set up Floating UI positioning for submenu
     const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper);
     this._openSubmenus.set(submenu, cleanup);
-
-    // Set up mouseenter on submenu to cancel close timeout
     EventHandler.on(submenu, 'mouseenter', () => {
       this._cancelSubmenuCloseTimeout(submenu);
     });
@@ -557,35 +486,23 @@ class Dropdown extends BaseComponent {
     if (!this._openSubmenus.has(submenu)) {
       return;
     }
-
-    // Close any nested submenus first
     const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, submenu);
     for (const nested of nestedSubmenus) {
       const nestedWrapper = nested.closest(SELECTOR_SUBMENU);
       this._closeSubmenu(nested, nestedWrapper);
     }
-
-    // Get the trigger
     const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper);
-
-    // Clean up Floating UI
     const cleanup = this._openSubmenus.get(submenu);
     if (cleanup) {
       cleanup();
     }
     this._openSubmenus.delete(submenu);
-
-    // Remove event listeners
     EventHandler.off(submenu, 'mouseenter');
-
-    // Update ARIA and visibility
     if (trigger) {
       trigger.setAttribute('aria-expanded', 'false');
     }
     submenu.classList.remove(CLASS_NAME_SHOW);
     submenuWrapper.classList.remove(CLASS_NAME_SHOW);
-
-    // Clear inline styles
     submenu.style.position = '';
     submenu.style.left = '';
     submenu.style.top = '';
@@ -598,7 +515,6 @@ class Dropdown extends BaseComponent {
     }
   }
   _closeSiblingSubmenus(currentSubmenuWrapper) {
-    // Find all sibling submenu wrappers and close their menus
     const parent = currentSubmenuWrapper.parentNode;
     const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, parent);
     for (const siblingMenu of siblingSubmenus) {
@@ -669,12 +585,7 @@ class Dropdown extends BaseComponent {
       x: this._hoverIntentData.x,
       y: this._hoverIntentData.y
     };
-
-    // Create a triangle from current position to submenu edges
-    // The triangle represents the "safe zone" for diagonal movement
     const isRtl = isRTL();
-
-    // Determine which edge of the submenu to target based on direction
     const targetX = isRtl ? submenuRect.right : submenuRect.left;
     const topCorner = {
       x: targetX,
@@ -684,13 +595,9 @@ class Dropdown extends BaseComponent {
       x: targetX,
       y: submenuRect.bottom
     };
-
-    // Check if cursor is moving toward the submenu
-    // by checking if the current position is within the safe triangle
     return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner);
   }
   _pointInTriangle(point, v1, v2, v3) {
-    // Barycentric coordinate method to check if point is inside triangle
     const d1 = triangleSign(point, v1, v2);
     const d2 = triangleSign(point, v2, v3);
     const d3 = triangleSign(point, v3, v1);
@@ -707,16 +614,11 @@ class Dropdown extends BaseComponent {
     key,
     target
   }) {
-    // Get items only from the current menu level (not nested submenus)
-    // If target is inside a menu, use that menu; otherwise use the main menu
     const currentMenu = target.closest(SELECTOR_MENU) || this._menu;
-    const items = SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu).filter(element => isVisible(element));
+    const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu).filter(element => isVisible(element));
     if (!items.length) {
       return;
     }
-
-    // if target isn't included in items (e.g. when expanding the dropdown)
-    // allow cycling to get the last item in case key equals ARROW_UP_KEY
     getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus();
   }
   _handleSubmenuKeydown(event) {
@@ -725,16 +627,10 @@ class Dropdown extends BaseComponent {
       target
     } = event;
     const isRtl = isRTL();
-
-    // Determine the "enter submenu" and "exit submenu" keys based on RTL
     const enterKey = isRtl ? ARROW_LEFT_KEY : ARROW_RIGHT_KEY;
     const exitKey = isRtl ? ARROW_RIGHT_KEY : ARROW_LEFT_KEY;
-
-    // Check if target is a submenu trigger
     const submenuWrapper = target.closest(SELECTOR_SUBMENU);
     const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE);
-
-    // Handle Enter/Space on submenu trigger
     if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {
       event.preventDefault();
       event.stopPropagation();
@@ -742,7 +638,6 @@ class Dropdown extends BaseComponent {
       if (submenu) {
         this._closeSiblingSubmenus(submenuWrapper);
         this._openSubmenu(target, submenu, submenuWrapper);
-        // Focus first item in submenu
         requestAnimationFrame(() => {
           const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu);
           if (firstItem) {
@@ -752,8 +647,6 @@ class Dropdown extends BaseComponent {
       }
       return true;
     }
-
-    // Handle Right arrow (or Left in RTL) - enter submenu
     if (key === enterKey && isSubmenuTrigger) {
       event.preventDefault();
       event.stopPropagation();
@@ -761,7 +654,6 @@ class Dropdown extends BaseComponent {
       if (submenu) {
         this._closeSiblingSubmenus(submenuWrapper);
         this._openSubmenu(target, submenu, submenuWrapper);
-        // Focus first item in submenu
         requestAnimationFrame(() => {
           const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu);
           if (firstItem) {
@@ -771,8 +663,6 @@ class Dropdown extends BaseComponent {
       }
       return true;
     }
-
-    // Handle Left arrow (or Right in RTL) - exit submenu
     if (key === exitKey) {
       const currentMenu = target.closest(SELECTOR_MENU);
       const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU);
@@ -787,13 +677,11 @@ class Dropdown extends BaseComponent {
         return true;
       }
     }
-
-    // Handle Home/End keys
     if (key === HOME_KEY || key === END_KEY) {
       event.preventDefault();
       event.stopPropagation();
       const currentMenu = target.closest(SELECTOR_MENU);
-      const items = SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu).filter(element => isVisible(element));
+      const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu).filter(element => isVisible(element));
       if (items.length) {
         const targetItem = key === HOME_KEY ? items[0] : items[items.length - 1];
         targetItem.focus();
@@ -806,41 +694,34 @@ class Dropdown extends BaseComponent {
     if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY) {
       return;
     }
-    const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);
-    for (const toggle of openToggles) {
-      const context = Dropdown.getInstance(toggle);
-      if (!context || context._config.autoClose === false) {
+    for (const instance of Menu._openInstances) {
+      if (instance._config.autoClose === false) {
         continue;
       }
       const composedPath = event.composedPath();
-      const isMenuTarget = composedPath.includes(context._menu);
-      if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {
+      const isMenuTarget = composedPath.includes(instance._menu);
+      if (composedPath.includes(instance._element) || instance._config.autoClose === 'inside' && !isMenuTarget || instance._config.autoClose === 'outside' && isMenuTarget) {
         continue;
       }
-
-      // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
-      if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY || /input|select|option|textarea|form/i.test(event.target.tagName))) {
+      if (instance._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY || /input|select|option|textarea|form/i.test(event.target.tagName))) {
         continue;
       }
       const relatedTarget = {
-        relatedTarget: context._element
+        relatedTarget: instance._element
       };
       if (event.type === 'click') {
         relatedTarget.clickEvent = event;
       }
-      context._completeHide(relatedTarget);
+      instance._completeHide(relatedTarget);
     }
   }
   static dataApiKeydownHandler(event) {
-    // If not a relevant key => not a dropdown command
     const isInput = /input|textarea/i.test(event.target.tagName);
     const isEscapeEvent = event.key === ESCAPE_KEY;
     const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key);
     const isLeftOrRightEvent = [ARROW_LEFT_KEY, ARROW_RIGHT_KEY].includes(event.key);
     const isHomeOrEndEvent = [HOME_KEY, END_KEY].includes(event.key);
     const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key);
-
-    // Allow Enter/Space only on submenu triggers
     const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE);
     if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent && !(isEnterOrSpaceEvent && isSubmenuTrigger)) {
       return;
@@ -848,20 +729,14 @@ class Dropdown extends BaseComponent {
     if (isInput && !isEscapeEvent) {
       return;
     }
-
-    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
     const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode);
     if (!getToggleButton) {
       return;
     }
-    const instance = Dropdown.getOrCreateInstance(getToggleButton);
-
-    // Handle submenu navigation first
+    const instance = Menu.getOrCreateInstance(getToggleButton);
     if ((isLeftOrRightEvent || isHomeOrEndEvent || isEnterOrSpaceEvent && isSubmenuTrigger) && instance._handleSubmenuKeydown(event)) {
       return;
     }
-
-    // Handle Up/Down navigation
     if (isUpOrDownEvent) {
       event.preventDefault();
       event.stopPropagation();
@@ -869,13 +744,9 @@ class Dropdown extends BaseComponent {
       instance._selectMenuItem(event);
       return;
     }
-
-    // Handle Escape
     if (isEscapeEvent && instance._isShown()) {
       event.preventDefault();
       event.stopPropagation();
-
-      // If in a submenu, close just that submenu
       const currentMenu = event.target.closest(SELECTOR_MENU);
       const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU);
       if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {
@@ -886,8 +757,6 @@ class Dropdown extends BaseComponent {
         }
         return;
       }
-
-      // Otherwise close the whole dropdown
       instance.hide();
       getToggleButton.focus();
     }
@@ -898,14 +767,14 @@ class Dropdown extends BaseComponent {
  * Data API implementation
  */
 
-EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler);
-EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
-EventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus);
-EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
+EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Menu.dataApiKeydownHandler);
+EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Menu.dataApiKeydownHandler);
+EventHandler.on(document, EVENT_CLICK_DATA_API, Menu.clearMenus);
+EventHandler.on(document, EVENT_KEYUP_DATA_API, Menu.clearMenus);
 EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
   event.preventDefault();
-  Dropdown.getOrCreateInstance(this).toggle();
+  Menu.getOrCreateInstance(this).toggle();
 });
 
-export { Dropdown as default };
-//# sourceMappingURL=dropdown.js.map
+export { Menu as default };
+//# sourceMappingURL=menu.js.map
diff --git a/js/dist/menu.js.map b/js/dist/menu.js.map
new file mode 100644 (file)
index 0000000..5bf1b18
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"file":"menu.js","sources":["../src/menu.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap menu.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'menu'\nconst DATA_KEY = 'bs.menu'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\nconst RIGHT_MOUSE_BUTTON = 2\n\nconst SUBMENU_CLOSE_DELAY = 100\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"menu\"]:not(.disabled):not(:disabled)'\n\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_SUBMENU = '.submenu'\nconst SELECTOR_SUBMENU_TOGGLE = '.submenu > .menu-item'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item:not(.disabled):not(:disabled)'\n\nconst DEFAULT_PLACEMENT = 'bottom-start'\nconst SUBMENU_PLACEMENT = 'end-start'\n\nconst resolveLogicalPlacement = placement => {\n  if (isRTL()) {\n    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left')\n  }\n\n  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right')\n}\n\nconst triangleSign = (p1, p2, p3) =>\n  ((p1.x - p3.x) * (p2.y - p3.y)) - ((p2.x - p3.x) * (p1.y - p3.y))\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  container: false,\n  display: 'dynamic',\n  offset: [0, 2],\n  floatingConfig: null,\n  menu: null,\n  placement: DEFAULT_PLACEMENT,\n  reference: 'toggle',\n  strategy: 'absolute',\n  submenuTrigger: 'both',\n  submenuDelay: SUBMENU_CLOSE_DELAY\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  display: 'string',\n  offset: '(array|string|function)',\n  floatingConfig: '(null|object|function)',\n  menu: '(null|element)',\n  placement: 'string',\n  reference: '(string|element|object)',\n  strategy: 'string',\n  submenuTrigger: 'string',\n  submenuDelay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Menu extends BaseComponent {\n  static _openInstances = new Set()\n\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s menus require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    this._floatingCleanup = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n    this._parent = this._element.parentNode\n    this._isSubmenu = this._parent.classList?.contains('submenu')\n    this._openSubmenus = new Map()\n    this._submenuCloseTimeouts = new Map()\n    this._hoverIntentData = null\n\n    this._menu = this._config.menu || this._findMenu()\n\n    this._menuOriginalParent = this._menu?.parentNode\n\n    this._parseResponsivePlacements()\n    this._setupSubmenuListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._moveMenuToContainer()\n    this._createFloating()\n\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus({ focusVisible: false })\n    this._element.setAttribute('aria-expanded', 'true')\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.add(CLASS_NAME_SHOW)\n    }\n\n    Menu._openInstances.add(this)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n    this._disposeMediaQueryListeners()\n    this._closeAllSubmenus()\n    this._clearAllSubmenuTimeouts()\n    Menu._openInstances.delete(this)\n    super.dispose()\n  }\n\n  update() {\n    if (this._floatingCleanup) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Private\n  _findMenu() {\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n  }\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._closeAllSubmenus()\n\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'placement')\n    Manipulator.removeDataAttribute(this._menu, 'display')\n    Menu._openInstances.delete(this)\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createFloating() {\n    if (this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'display', 'static')\n      return\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    this._updateFloatingPosition(referenceElement)\n\n    this._floatingCleanup = autoUpdate(\n      referenceElement,\n      this._menu,\n      () => this._updateFloatingPosition(referenceElement)\n    )\n  }\n\n  async _updateFloatingPosition(referenceElement = null) {\n    if (!this._menu) {\n      return\n    }\n\n    if (!referenceElement) {\n      if (this._config.reference === 'parent') {\n        referenceElement = this._parent\n      } else if (isElement(this._config.reference)) {\n        referenceElement = getElement(this._config.reference)\n      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference\n      } else {\n        referenceElement = this._element\n      }\n    }\n\n    const placement = this._getPlacement()\n    const middleware = this._getFloatingMiddleware()\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    await this._applyFloatingPosition(\n      referenceElement,\n      this._menu,\n      floatingConfig.placement,\n      floatingConfig.middleware,\n      floatingConfig.strategy\n    )\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    const placement = this._responsivePlacements ?\n      getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) :\n      this._config.placement\n\n    return resolveLogicalPlacement(placement)\n  }\n\n  _parseResponsivePlacements() {\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT)\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  _getOffset() {\n    const { offset: offsetConfig } = this._config\n\n    if (typeof offsetConfig === 'string') {\n      return offsetConfig.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offsetConfig === 'function') {\n      return ({ placement, rects }) => {\n        const result = offsetConfig({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offsetConfig\n  }\n\n  _getFloatingMiddleware() {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      flip({\n        fallbackPlacements: this._getFallbackPlacements()\n      }),\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    return middleware\n  }\n\n  _getFallbackPlacements() {\n    const placement = this._getPlacement()\n\n    const fallbackMap = {\n      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\n      'bottom-start': ['top-start', 'bottom-end', 'top-end'],\n      'bottom-end': ['top-end', 'bottom-start', 'top-start'],\n      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],\n      'top-start': ['bottom-start', 'top-end', 'bottom-end'],\n      'top-end': ['bottom-end', 'top-start', 'bottom-start'],\n      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],\n      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],\n      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],\n      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],\n      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],\n      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']\n    }\n\n    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left']\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware,\n      strategy: this._config.strategy\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n  }\n\n  _getContainer() {\n    const { container } = this._config\n    if (container === false) {\n      return null\n    }\n\n    return container === true ? document.body : getElement(container)\n  }\n\n  _moveMenuToContainer() {\n    const container = this._getContainer()\n    if (!container || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== container) {\n      container.append(this._menu)\n    }\n  }\n\n  _restoreMenuToOriginalParent() {\n    if (!this._menuOriginalParent || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== this._menuOriginalParent) {\n      this._menuOriginalParent.append(this._menu)\n    }\n  }\n\n  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {\n    if (!floating.isConnected) {\n      return null\n    }\n\n    const { x, y, placement: finalPlacement } = await computePosition(\n      reference,\n      floating,\n      { placement, middleware, strategy }\n    )\n\n    if (!floating.isConnected) {\n      return null\n    }\n\n    Object.assign(floating.style, {\n      position: strategy,\n      left: `${x}px`,\n      top: `${y}px`,\n      margin: '0'\n    })\n\n    Manipulator.setDataAttribute(floating, 'placement', finalPlacement)\n    return finalPlacement\n  }\n\n  // -------------------------------------------------------------------------\n  // Submenu handling\n  // -------------------------------------------------------------------------\n\n  _setupSubmenuListeners() {\n    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerEnter(event)\n      })\n\n      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {\n        this._onSubmenuLeave(event)\n      })\n\n      EventHandler.on(this._menu, 'mousemove', event => {\n        this._trackMousePosition(event)\n      })\n    }\n\n    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerClick(event)\n      })\n    }\n  }\n\n  _onSubmenuTriggerEnter(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    this._cancelSubmenuCloseTimeout(submenu)\n    this._closeSiblingSubmenus(submenuWrapper)\n    this._openSubmenu(trigger, submenu, submenuWrapper)\n  }\n\n  _onSubmenuLeave(event) {\n    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu || !this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    if (this._isMovingTowardSubmenu(event, submenu)) {\n      return\n    }\n\n    this._scheduleSubmenuClose(submenu, submenuWrapper)\n  }\n\n  _onSubmenuTriggerClick(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    if (this._openSubmenus.has(submenu)) {\n      this._closeSubmenu(submenu, submenuWrapper)\n    } else {\n      this._closeSiblingSubmenus(submenuWrapper)\n      this._openSubmenu(trigger, submenu, submenuWrapper)\n    }\n  }\n\n  _openSubmenu(trigger, submenu, submenuWrapper) {\n    if (this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    trigger.setAttribute('aria-expanded', 'true')\n    trigger.setAttribute('aria-haspopup', 'true')\n\n    submenu.classList.add(CLASS_NAME_SHOW)\n    submenuWrapper.classList.add(CLASS_NAME_SHOW)\n\n    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper)\n    this._openSubmenus.set(submenu, cleanup)\n\n    EventHandler.on(submenu, 'mouseenter', () => {\n      this._cancelSubmenuCloseTimeout(submenu)\n    })\n  }\n\n  _closeSubmenu(submenu, submenuWrapper) {\n    if (!this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, submenu)\n    for (const nested of nestedSubmenus) {\n      const nestedWrapper = nested.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(nested, nestedWrapper)\n    }\n\n    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper)\n\n    const cleanup = this._openSubmenus.get(submenu)\n    if (cleanup) {\n      cleanup()\n    }\n\n    this._openSubmenus.delete(submenu)\n    EventHandler.off(submenu, 'mouseenter')\n\n    if (trigger) {\n      trigger.setAttribute('aria-expanded', 'false')\n    }\n\n    submenu.classList.remove(CLASS_NAME_SHOW)\n    submenuWrapper.classList.remove(CLASS_NAME_SHOW)\n\n    submenu.style.position = ''\n    submenu.style.left = ''\n    submenu.style.top = ''\n    submenu.style.margin = ''\n  }\n\n  _closeAllSubmenus() {\n    for (const [submenu] of this._openSubmenus) {\n      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(submenu, submenuWrapper)\n    }\n  }\n\n  _closeSiblingSubmenus(currentSubmenuWrapper) {\n    const parent = currentSubmenuWrapper.parentNode\n    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, parent)\n\n    for (const siblingMenu of siblingSubmenus) {\n      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU)\n      if (siblingWrapper !== currentSubmenuWrapper) {\n        this._closeSubmenu(siblingMenu, siblingWrapper)\n      }\n    }\n  }\n\n  _createSubmenuFloating(trigger, submenu, submenuWrapper) {\n    const referenceElement = submenuWrapper\n    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT)\n    const middleware = [\n      offset({ mainAxis: 0, crossAxis: -4 }),\n      flip({\n        fallbackPlacements: [\n          resolveLogicalPlacement('start-start'),\n          resolveLogicalPlacement('end-end'),\n          resolveLogicalPlacement('start-end')\n        ]\n      }),\n      shift({ padding: 8 })\n    ]\n\n    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware)\n\n    updatePosition()\n    return autoUpdate(referenceElement, submenu, updatePosition)\n  }\n\n  _scheduleSubmenuClose(submenu, submenuWrapper) {\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    const timeoutId = setTimeout(() => {\n      this._closeSubmenu(submenu, submenuWrapper)\n      this._submenuCloseTimeouts.delete(submenu)\n    }, this._config.submenuDelay)\n\n    this._submenuCloseTimeouts.set(submenu, timeoutId)\n  }\n\n  _cancelSubmenuCloseTimeout(submenu) {\n    const timeoutId = this._submenuCloseTimeouts.get(submenu)\n    if (timeoutId) {\n      clearTimeout(timeoutId)\n      this._submenuCloseTimeouts.delete(submenu)\n    }\n  }\n\n  _clearAllSubmenuTimeouts() {\n    for (const timeoutId of this._submenuCloseTimeouts.values()) {\n      clearTimeout(timeoutId)\n    }\n\n    this._submenuCloseTimeouts.clear()\n  }\n\n  // -------------------------------------------------------------------------\n  // Hover intent / Safe triangle\n  // -------------------------------------------------------------------------\n\n  _trackMousePosition(event) {\n    this._hoverIntentData = {\n      x: event.clientX,\n      y: event.clientY,\n      timestamp: Date.now()\n    }\n  }\n\n  _isMovingTowardSubmenu(event, submenu) {\n    if (!this._hoverIntentData) {\n      return false\n    }\n\n    const submenuRect = submenu.getBoundingClientRect()\n    const currentPos = { x: event.clientX, y: event.clientY }\n    const lastPos = { x: this._hoverIntentData.x, y: this._hoverIntentData.y }\n\n    const isRtl = isRTL()\n    const targetX = isRtl ? submenuRect.right : submenuRect.left\n    const topCorner = { x: targetX, y: submenuRect.top }\n    const bottomCorner = { x: targetX, y: submenuRect.bottom }\n\n    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner)\n  }\n\n  _pointInTriangle(point, v1, v2, v3) {\n    const d1 = triangleSign(point, v1, v2)\n    const d2 = triangleSign(point, v2, v3)\n    const d3 = triangleSign(point, v3, v1)\n\n    const hasNeg = (d1 < 0) || (d2 < 0) || (d3 < 0)\n    const hasPos = (d1 > 0) || (d2 > 0) || (d3 > 0)\n\n    return !(hasNeg && hasPos)\n  }\n\n  // -------------------------------------------------------------------------\n  // Keyboard navigation\n  // -------------------------------------------------------------------------\n\n  _selectMenuItem({ key, target }) {\n    const currentMenu = target.closest(SELECTOR_MENU) || this._menu\n    const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n      .filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  _handleSubmenuKeydown(event) {\n    const { key, target } = event\n    const isRtl = isRTL()\n\n    const enterKey = isRtl ? ARROW_LEFT_KEY : ARROW_RIGHT_KEY\n    const exitKey = isRtl ? ARROW_RIGHT_KEY : ARROW_LEFT_KEY\n\n    const submenuWrapper = target.closest(SELECTOR_SUBMENU)\n    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === enterKey && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === exitKey) {\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper) {\n        event.preventDefault()\n        event.stopPropagation()\n\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        this._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return true\n      }\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n        .filter(element => isVisible(element))\n\n      if (items.length) {\n        const targetItem = key === HOME_KEY ? items[0] : items[items.length - 1]\n        targetItem.focus()\n      }\n\n      return true\n    }\n\n    return false\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    for (const instance of Menu._openInstances) {\n      if (instance._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(instance._menu)\n      if (\n        composedPath.includes(instance._element) ||\n        (instance._config.autoClose === 'inside' && !isMenuTarget) ||\n        (instance._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      if (instance._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: instance._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      instance._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    const isInput = /input|textarea/i.test(event.target.tagName)\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n    const isLeftOrRightEvent = [ARROW_LEFT_KEY, ARROW_RIGHT_KEY].includes(event.key)\n    const isHomeOrEndEvent = [HOME_KEY, END_KEY].includes(event.key)\n    const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key)\n\n    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent &&\n        !(isEnterOrSpaceEvent && isSubmenuTrigger)) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    if (!getToggleButton) {\n      return\n    }\n\n    const instance = Menu.getOrCreateInstance(getToggleButton)\n\n    if ((isLeftOrRightEvent || isHomeOrEndEvent || (isEnterOrSpaceEvent && isSubmenuTrigger)) && instance._handleSubmenuKeydown(event)) {\n      return\n    }\n\n    if (isUpOrDownEvent) {\n      event.preventDefault()\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (isEscapeEvent && instance._isShown()) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = event.target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        instance._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return\n      }\n\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Menu.getOrCreateInstance(this).toggle()\n})\n\nexport default Menu\n"],"names":["NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","HOME_KEY","END_KEY","ENTER_KEY","SPACE_KEY","RIGHT_MOUSE_BUTTON","SUBMENU_CLOSE_DELAY","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_CLICK_DATA_API","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_SHOW","SELECTOR_DATA_TOGGLE","SELECTOR_MENU","SELECTOR_SUBMENU","SELECTOR_SUBMENU_TOGGLE","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","DEFAULT_PLACEMENT","SUBMENU_PLACEMENT","resolveLogicalPlacement","placement","isRTL","replace","triangleSign","p1","p2","p3","x","y","Default","autoClose","boundary","container","display","offset","floatingConfig","menu","reference","strategy","submenuTrigger","submenuDelay","DefaultType","Menu","BaseComponent","_openInstances","Set","constructor","element","config","computePosition","TypeError","_floatingCleanup","_mediaQueryListeners","_responsivePlacements","_parent","_element","parentNode","_isSubmenu","classList","contains","_openSubmenus","Map","_submenuCloseTimeouts","_hoverIntentData","_menu","_config","_findMenu","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","toggle","_isShown","hide","show","isDisabled","relatedTarget","showEvent","EventHandler","trigger","defaultPrevented","_moveMenuToContainer","_createFloating","document","documentElement","closest","concat","body","children","on","noop","focus","focusVisible","setAttribute","add","_completeHide","dispose","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","delete","update","_updateFloatingPosition","SelectorEngine","next","prev","findOne","hideEvent","off","remove","Manipulator","removeDataAttribute","_getConfig","isElement","getBoundingClientRect","toUpperCase","setDataAttribute","referenceElement","getElement","autoUpdate","_getPlacement","middleware","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","getResponsivePlacement","parseResponsivePlacement","_setupMediaQueryListeners","createBreakpointListeners","disposeBreakpointListeners","_getOffset","offsetConfig","split","map","value","Number","parseInt","rects","result","floating","offsetValue","mainAxis","crossAxis","flip","fallbackPlacements","_getFallbackPlacements","shift","fallbackMap","bottom","top","right","left","defaultConfig","execute","undefined","_getContainer","append","isConnected","finalPlacement","Object","assign","style","position","margin","event","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","target","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","has","_isMovingTowardSubmenu","_scheduleSubmenuClose","preventDefault","stopPropagation","_closeSubmenu","cleanup","_createSubmenuFloating","set","nestedSubmenus","find","nested","nestedWrapper","get","currentSubmenuWrapper","parent","siblingSubmenus","siblingMenu","siblingWrapper","padding","updatePosition","timeoutId","setTimeout","clearTimeout","values","clear","clientX","clientY","timestamp","Date","now","submenuRect","currentPos","lastPos","isRtl","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","hasNeg","hasPos","_selectMenuItem","key","currentMenu","items","filter","isVisible","length","getNextActiveElement","includes","_handleSubmenuKeydown","enterKey","exitKey","isSubmenuTrigger","matches","requestAnimationFrame","firstItem","parentSubmenuWrapper","parentTrigger","targetItem","clearMenus","button","type","instance","composedPath","isMenuTarget","test","tagName","clickEvent","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","isLeftOrRightEvent","isHomeOrEndEvent","isEnterOrSpaceEvent","getToggleButton","delegateTarget","getOrCreateInstance","size"],"mappings":"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"}
\ No newline at end of file
index 4aa8e896c452123354393a5212a281dc05eea124..3106f9a5095ec76b208c1e7a3626a8eade5f3e66 100644 (file)
@@ -103,7 +103,7 @@ class NavOverflow extends BaseComponent {
       item.dataset.bsNavOrder = index;
     }
 
-    // Create overflow dropdown if it doesn't exist
+    // Create overflow menu if it doesn't exist
     this._createOverflowMenu();
 
     // Setup resize observer
@@ -120,16 +120,14 @@ class NavOverflow extends BaseComponent {
       this._overflowMenu = SelectorEngine.findOne(SELECTOR_OVERFLOW_MENU, this._element);
       return;
     }
-
-    // Create the overflow dropdown item
     const overflowItem = document.createElement('li');
-    overflowItem.className = 'nav-item nav-overflow-item dropdown';
+    overflowItem.className = 'nav-item nav-overflow-item';
     overflowItem.innerHTML = `
-      <button class="nav-link nav-overflow-toggle dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-container="body" data-bs-strategy="fixed" aria-expanded="false">
+      <button class="nav-link nav-overflow-toggle" type="button" data-bs-toggle="menu" data-bs-placement="bottom-end" aria-expanded="false">
         <span class="nav-overflow-icon">${this._config.moreIcon}</span>
         <span class="nav-overflow-text">${this._config.moreText}</span>
       </button>
-      <ul class="${CLASS_NAME_OVERFLOW_MENU} dropdown-menu dropdown-menu-end"></ul>
+      <div class="${CLASS_NAME_OVERFLOW_MENU} menu"></div>
     `;
     this._element.append(overflowItem);
     this._overflowToggle = overflowItem.querySelector(SELECTOR_OVERFLOW_TOGGLE);
@@ -208,26 +206,19 @@ class NavOverflow extends BaseComponent {
     this._overflowMenu.innerHTML = '';
     this._overflowItems = [];
     for (const item of items) {
-      // Clone the nav link as a dropdown item
       const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item);
       if (!link) {
         continue;
       }
-      const dropdownItem = document.createElement('li');
       const clonedLink = link.cloneNode(true);
-      clonedLink.className = 'dropdown-item';
-
-      // Preserve active state
+      clonedLink.className = 'menu-item';
       if (link.classList.contains('active')) {
         clonedLink.classList.add('active');
       }
-
-      // Preserve disabled state
       if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {
         clonedLink.classList.add('disabled');
       }
-      dropdownItem.append(clonedLink);
-      this._overflowMenu.append(dropdownItem);
+      this._overflowMenu.append(clonedLink);
 
       // Hide original item
       item.classList.add(CLASS_NAME_HIDDEN);
index c6355eb846f878103df9bb539e5efd7d991ed94b..b0d3689e646a5c0bc1faa756a3b7f25cf1cbed47 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"nav-overflow.js","sources":["../src/nav-overflow.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap nav-overflow.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'navoverflow'\nconst DATA_KEY = 'bs.navoverflow'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_UPDATE = `update${EVENT_KEY}`\nconst EVENT_OVERFLOW = `overflow${EVENT_KEY}`\n\nconst CLASS_NAME_OVERFLOW = 'nav-overflow'\nconst CLASS_NAME_OVERFLOW_MENU = 'nav-overflow-menu'\nconst CLASS_NAME_HIDDEN = 'd-none'\n\nconst SELECTOR_NAV_ITEM = '.nav-item'\nconst SELECTOR_NAV_LINK = '.nav-link'\nconst SELECTOR_OVERFLOW_TOGGLE = '.nav-overflow-toggle'\nconst SELECTOR_OVERFLOW_MENU = '.nav-overflow-menu'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  moreText: 'More',\n  moreIcon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\"><path d=\"M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3\"/></svg>',\n  threshold: 0 // Minimum items to keep visible before showing overflow\n}\n\nconst DefaultType = {\n  moreText: 'string',\n  moreIcon: 'string',\n  threshold: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass NavOverflow extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._items = []\n    this._overflowItems = []\n    this._overflowMenu = null\n    this._overflowToggle = null\n    this._resizeObserver = null\n    this._isInitialized = false\n\n    this._init()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._calculateOverflow()\n    EventHandler.trigger(this._element, EVENT_UPDATE)\n  }\n\n  dispose() {\n    if (this._resizeObserver) {\n      this._resizeObserver.disconnect()\n    }\n\n    // Move items back to original positions\n    this._restoreItems()\n\n    // Remove overflow menu\n    if (this._overflowToggle && this._overflowToggle.parentElement) {\n      this._overflowToggle.parentElement.remove()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _init() {\n    // Add overflow class to nav\n    this._element.classList.add(CLASS_NAME_OVERFLOW)\n\n    // Get all nav items\n    this._items = [...SelectorEngine.find(SELECTOR_NAV_ITEM, this._element)]\n\n    // Store original order data\n    for (const [index, item] of this._items.entries()) {\n      item.dataset.bsNavOrder = index\n    }\n\n    // Create overflow dropdown if it doesn't exist\n    this._createOverflowMenu()\n\n    // Setup resize observer\n    this._setupResizeObserver()\n\n    // Initial calculation\n    this._calculateOverflow()\n\n    this._isInitialized = true\n  }\n\n  _createOverflowMenu() {\n    // Check if overflow menu already exists\n    this._overflowToggle = SelectorEngine.findOne(SELECTOR_OVERFLOW_TOGGLE, this._element)\n\n    if (this._overflowToggle) {\n      this._overflowMenu = SelectorEngine.findOne(SELECTOR_OVERFLOW_MENU, this._element)\n      return\n    }\n\n    // Create the overflow dropdown item\n    const overflowItem = document.createElement('li')\n    overflowItem.className = 'nav-item nav-overflow-item dropdown'\n    overflowItem.innerHTML = `\n      <button class=\"nav-link nav-overflow-toggle dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" data-bs-container=\"body\" data-bs-strategy=\"fixed\" aria-expanded=\"false\">\n        <span class=\"nav-overflow-icon\">${this._config.moreIcon}</span>\n        <span class=\"nav-overflow-text\">${this._config.moreText}</span>\n      </button>\n      <ul class=\"${CLASS_NAME_OVERFLOW_MENU} dropdown-menu dropdown-menu-end\"></ul>\n    `\n\n    this._element.append(overflowItem)\n    this._overflowToggle = overflowItem.querySelector(SELECTOR_OVERFLOW_TOGGLE)\n    this._overflowMenu = overflowItem.querySelector(SELECTOR_OVERFLOW_MENU)\n  }\n\n  _setupResizeObserver() {\n    if (typeof ResizeObserver === 'undefined') {\n      // Fallback for older browsers\n      EventHandler.on(window, 'resize', () => this._calculateOverflow())\n      return\n    }\n\n    this._resizeObserver = new ResizeObserver(() => {\n      this._calculateOverflow()\n    })\n\n    this._resizeObserver.observe(this._element)\n  }\n\n  _calculateOverflow() {\n    // First, restore all items to measure properly\n    this._restoreItems()\n\n    const navWidth = this._element.offsetWidth\n    const overflowItem = this._overflowToggle?.closest('.nav-item')\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      const itemWidth = item.offsetWidth\n      usedWidth += itemWidth\n\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      if (usedWidth > overflowThreshold) {\n        itemsToOverflow.push(item)\n      }\n    }\n\n    // Check if we need threshold minimum visible\n    const visibleCount = this._items.length - itemsToOverflow.length\n    if (visibleCount < this._config.threshold && this._items.length > this._config.threshold) {\n      // Add more items to overflow until we reach threshold (but not keep items)\n      const toMove = this._items.slice(this._config.threshold).filter(item => !item.classList.contains(CLASS_NAME_KEEP))\n      itemsToOverflow.length = 0\n      itemsToOverflow.push(...toMove)\n    }\n\n    // Move items to overflow menu\n    this._moveToOverflow(itemsToOverflow)\n\n    // Show/hide overflow toggle\n    if (overflowItem) {\n      if (itemsToOverflow.length > 0) {\n        overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n      } else {\n        overflowItem.classList.add(CLASS_NAME_HIDDEN)\n      }\n    }\n\n    // Trigger overflow event if items changed\n    if (itemsToOverflow.length > 0) {\n      EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n        overflowCount: itemsToOverflow.length,\n        visibleCount: this._items.length - itemsToOverflow.length\n      })\n    }\n  }\n\n  _moveToOverflow(items) {\n    if (!this._overflowMenu) {\n      return\n    }\n\n    // Clear existing overflow items\n    this._overflowMenu.innerHTML = ''\n    this._overflowItems = []\n\n    for (const item of items) {\n      // Clone the nav link as a dropdown item\n      const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item)\n      if (!link) {\n        continue\n      }\n\n      const dropdownItem = document.createElement('li')\n      const clonedLink = link.cloneNode(true)\n      clonedLink.className = 'dropdown-item'\n\n      // Preserve active state\n      if (link.classList.contains('active')) {\n        clonedLink.classList.add('active')\n      }\n\n      // Preserve disabled state\n      if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {\n        clonedLink.classList.add('disabled')\n      }\n\n      dropdownItem.append(clonedLink)\n      this._overflowMenu.append(dropdownItem)\n\n      // Hide original item\n      item.classList.add(CLASS_NAME_HIDDEN)\n      item.dataset.bsNavOverflow = 'true'\n\n      this._overflowItems.push(item)\n    }\n  }\n\n  _restoreItems() {\n    for (const item of this._items) {\n      item.classList.remove(CLASS_NAME_HIDDEN)\n      delete item.dataset.bsNavOverflow\n    }\n\n    if (this._overflowMenu) {\n      this._overflowMenu.innerHTML = ''\n    }\n\n    this._overflowItems = []\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const element of SelectorEngine.find('[data-bs-toggle=\"nav-overflow\"]')) {\n    NavOverflow.getOrCreateInstance(element)\n  }\n})\n\nexport default NavOverflow\n"],"names":["NAME","DATA_KEY","EVENT_KEY","EVENT_UPDATE","EVENT_OVERFLOW","CLASS_NAME_OVERFLOW","CLASS_NAME_OVERFLOW_MENU","CLASS_NAME_HIDDEN","SELECTOR_NAV_ITEM","SELECTOR_NAV_LINK","SELECTOR_OVERFLOW_TOGGLE","SELECTOR_OVERFLOW_MENU","CLASS_NAME_KEEP","Default","moreText","moreIcon","threshold","DefaultType","NavOverflow","BaseComponent","constructor","element","config","_items","_overflowItems","_overflowMenu","_overflowToggle","_resizeObserver","_isInitialized","_init","update","_calculateOverflow","EventHandler","trigger","_element","dispose","disconnect","_restoreItems","parentElement","remove","classList","add","SelectorEngine","find","index","item","entries","dataset","bsNavOrder","_createOverflowMenu","_setupResizeObserver","findOne","overflowItem","document","createElement","className","innerHTML","_config","append","querySelector","ResizeObserver","on","window","observe","navWidth","offsetWidth","closest","overflowWidth","usedWidth","itemsToOverflow","overflowThreshold","itemWidth","contains","push","visibleCount","length","toMove","slice","filter","_moveToOverflow","overflowCount","items","link","dropdownItem","clonedLink","cloneNode","hasAttribute","bsNavOverflow","getOrCreateInstance"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"nav-overflow.js","sources":["../src/nav-overflow.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap nav-overflow.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'navoverflow'\nconst DATA_KEY = 'bs.navoverflow'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_UPDATE = `update${EVENT_KEY}`\nconst EVENT_OVERFLOW = `overflow${EVENT_KEY}`\n\nconst CLASS_NAME_OVERFLOW = 'nav-overflow'\nconst CLASS_NAME_OVERFLOW_MENU = 'nav-overflow-menu'\nconst CLASS_NAME_HIDDEN = 'd-none'\n\nconst SELECTOR_NAV_ITEM = '.nav-item'\nconst SELECTOR_NAV_LINK = '.nav-link'\nconst SELECTOR_OVERFLOW_TOGGLE = '.nav-overflow-toggle'\nconst SELECTOR_OVERFLOW_MENU = '.nav-overflow-menu'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  moreText: 'More',\n  moreIcon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\"><path d=\"M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3\"/></svg>',\n  threshold: 0 // Minimum items to keep visible before showing overflow\n}\n\nconst DefaultType = {\n  moreText: 'string',\n  moreIcon: 'string',\n  threshold: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass NavOverflow extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._items = []\n    this._overflowItems = []\n    this._overflowMenu = null\n    this._overflowToggle = null\n    this._resizeObserver = null\n    this._isInitialized = false\n\n    this._init()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._calculateOverflow()\n    EventHandler.trigger(this._element, EVENT_UPDATE)\n  }\n\n  dispose() {\n    if (this._resizeObserver) {\n      this._resizeObserver.disconnect()\n    }\n\n    // Move items back to original positions\n    this._restoreItems()\n\n    // Remove overflow menu\n    if (this._overflowToggle && this._overflowToggle.parentElement) {\n      this._overflowToggle.parentElement.remove()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _init() {\n    // Add overflow class to nav\n    this._element.classList.add(CLASS_NAME_OVERFLOW)\n\n    // Get all nav items\n    this._items = [...SelectorEngine.find(SELECTOR_NAV_ITEM, this._element)]\n\n    // Store original order data\n    for (const [index, item] of this._items.entries()) {\n      item.dataset.bsNavOrder = index\n    }\n\n    // Create overflow menu if it doesn't exist\n    this._createOverflowMenu()\n\n    // Setup resize observer\n    this._setupResizeObserver()\n\n    // Initial calculation\n    this._calculateOverflow()\n\n    this._isInitialized = true\n  }\n\n  _createOverflowMenu() {\n    // Check if overflow menu already exists\n    this._overflowToggle = SelectorEngine.findOne(SELECTOR_OVERFLOW_TOGGLE, this._element)\n\n    if (this._overflowToggle) {\n      this._overflowMenu = SelectorEngine.findOne(SELECTOR_OVERFLOW_MENU, this._element)\n      return\n    }\n\n    const overflowItem = document.createElement('li')\n    overflowItem.className = 'nav-item nav-overflow-item'\n    overflowItem.innerHTML = `\n      <button class=\"nav-link nav-overflow-toggle\" type=\"button\" data-bs-toggle=\"menu\" data-bs-placement=\"bottom-end\" aria-expanded=\"false\">\n        <span class=\"nav-overflow-icon\">${this._config.moreIcon}</span>\n        <span class=\"nav-overflow-text\">${this._config.moreText}</span>\n      </button>\n      <div class=\"${CLASS_NAME_OVERFLOW_MENU} menu\"></div>\n    `\n\n    this._element.append(overflowItem)\n    this._overflowToggle = overflowItem.querySelector(SELECTOR_OVERFLOW_TOGGLE)\n    this._overflowMenu = overflowItem.querySelector(SELECTOR_OVERFLOW_MENU)\n  }\n\n  _setupResizeObserver() {\n    if (typeof ResizeObserver === 'undefined') {\n      // Fallback for older browsers\n      EventHandler.on(window, 'resize', () => this._calculateOverflow())\n      return\n    }\n\n    this._resizeObserver = new ResizeObserver(() => {\n      this._calculateOverflow()\n    })\n\n    this._resizeObserver.observe(this._element)\n  }\n\n  _calculateOverflow() {\n    // First, restore all items to measure properly\n    this._restoreItems()\n\n    const navWidth = this._element.offsetWidth\n    const overflowItem = this._overflowToggle?.closest('.nav-item')\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      const itemWidth = item.offsetWidth\n      usedWidth += itemWidth\n\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      if (usedWidth > overflowThreshold) {\n        itemsToOverflow.push(item)\n      }\n    }\n\n    // Check if we need threshold minimum visible\n    const visibleCount = this._items.length - itemsToOverflow.length\n    if (visibleCount < this._config.threshold && this._items.length > this._config.threshold) {\n      // Add more items to overflow until we reach threshold (but not keep items)\n      const toMove = this._items.slice(this._config.threshold).filter(item => !item.classList.contains(CLASS_NAME_KEEP))\n      itemsToOverflow.length = 0\n      itemsToOverflow.push(...toMove)\n    }\n\n    // Move items to overflow menu\n    this._moveToOverflow(itemsToOverflow)\n\n    // Show/hide overflow toggle\n    if (overflowItem) {\n      if (itemsToOverflow.length > 0) {\n        overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n      } else {\n        overflowItem.classList.add(CLASS_NAME_HIDDEN)\n      }\n    }\n\n    // Trigger overflow event if items changed\n    if (itemsToOverflow.length > 0) {\n      EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n        overflowCount: itemsToOverflow.length,\n        visibleCount: this._items.length - itemsToOverflow.length\n      })\n    }\n  }\n\n  _moveToOverflow(items) {\n    if (!this._overflowMenu) {\n      return\n    }\n\n    // Clear existing overflow items\n    this._overflowMenu.innerHTML = ''\n    this._overflowItems = []\n\n    for (const item of items) {\n      const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item)\n      if (!link) {\n        continue\n      }\n\n      const clonedLink = link.cloneNode(true)\n      clonedLink.className = 'menu-item'\n\n      if (link.classList.contains('active')) {\n        clonedLink.classList.add('active')\n      }\n\n      if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {\n        clonedLink.classList.add('disabled')\n      }\n\n      this._overflowMenu.append(clonedLink)\n\n      // Hide original item\n      item.classList.add(CLASS_NAME_HIDDEN)\n      item.dataset.bsNavOverflow = 'true'\n\n      this._overflowItems.push(item)\n    }\n  }\n\n  _restoreItems() {\n    for (const item of this._items) {\n      item.classList.remove(CLASS_NAME_HIDDEN)\n      delete item.dataset.bsNavOverflow\n    }\n\n    if (this._overflowMenu) {\n      this._overflowMenu.innerHTML = ''\n    }\n\n    this._overflowItems = []\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const element of SelectorEngine.find('[data-bs-toggle=\"nav-overflow\"]')) {\n    NavOverflow.getOrCreateInstance(element)\n  }\n})\n\nexport default NavOverflow\n"],"names":["NAME","DATA_KEY","EVENT_KEY","EVENT_UPDATE","EVENT_OVERFLOW","CLASS_NAME_OVERFLOW","CLASS_NAME_OVERFLOW_MENU","CLASS_NAME_HIDDEN","SELECTOR_NAV_ITEM","SELECTOR_NAV_LINK","SELECTOR_OVERFLOW_TOGGLE","SELECTOR_OVERFLOW_MENU","CLASS_NAME_KEEP","Default","moreText","moreIcon","threshold","DefaultType","NavOverflow","BaseComponent","constructor","element","config","_items","_overflowItems","_overflowMenu","_overflowToggle","_resizeObserver","_isInitialized","_init","update","_calculateOverflow","EventHandler","trigger","_element","dispose","disconnect","_restoreItems","parentElement","remove","classList","add","SelectorEngine","find","index","item","entries","dataset","bsNavOrder","_createOverflowMenu","_setupResizeObserver","findOne","overflowItem","document","createElement","className","innerHTML","_config","append","querySelector","ResizeObserver","on","window","observe","navWidth","offsetWidth","closest","overflowWidth","usedWidth","itemsToOverflow","overflowThreshold","itemWidth","contains","push","visibleCount","length","toMove","slice","filter","_moveToOverflow","overflowCount","items","link","clonedLink","cloneNode","hasAttribute","bsNavOverflow","getOrCreateInstance"],"mappings":"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"}
\ No newline at end of file
index e19e8663ef5e95ac1a070ed354ea4b38c75ba29d..7ab8d877a25009df08cc93439461d41af90d092f 100644 (file)
@@ -27,7 +27,7 @@ const DATA_API_KEY = '.data-api';
 const EVENT_ACTIVATE = `activate${EVENT_KEY}`;
 const EVENT_CLICK = `click${EVENT_KEY}`;
 const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;
-const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
+const CLASS_NAME_MENU_ITEM = 'menu-item';
 const CLASS_NAME_ACTIVE = 'active';
 const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
 const SELECTOR_TARGET_LINKS = '[href]';
@@ -36,8 +36,7 @@ const SELECTOR_NAV_LINKS = '.nav-link';
 const SELECTOR_NAV_ITEMS = '.nav-item';
 const SELECTOR_LIST_ITEMS = '.list-group-item';
 const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;
-const SELECTOR_DROPDOWN = '.dropdown';
-const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
+const SELECTOR_MENU_TOGGLE = '[data-bs-toggle="menu"]';
 const Default = {
   rootMargin: '0px 0px -25%',
   smoothScroll: false,
@@ -208,9 +207,12 @@ class ScrollSpy extends BaseComponent {
     });
   }
   _activateParents(target) {
-    // Activate dropdown parents
-    if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
-      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE);
+    // Activate menu parents
+    if (target.classList.contains(CLASS_NAME_MENU_ITEM)) {
+      const menuToggle = target.closest('.menu')?.previousElementSibling;
+      if (menuToggle?.matches(SELECTOR_MENU_TOGGLE)) {
+        menuToggle.classList.add(CLASS_NAME_ACTIVE);
+      }
       return;
     }
     for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {
index 9738ac00e3cc447a3518ce6f9e2cc515f8618162..97af241d07fc263f2638994a2a06863e4ac201d9 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"scrollspy.js","sources":["../src/scrollspy.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n  rootMargin: '0px 0px -25%',\n  smoothScroll: false,\n  target: null,\n  threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n  rootMargin: 'string',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n    this._activeTarget = null\n    this._observer = null\n    this._previousScrollData = {\n      visibleEntryTop: 0,\n      parentScrollTop: 0\n    }\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    } else {\n      this._observer = this._getNewObserver()\n    }\n\n    for (const section of this._observableSections.values()) {\n      this._observer.observe(section)\n    }\n  }\n\n  dispose() {\n    this._observer.disconnect()\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.target = getElement(config.target) || document.body\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // unregister any previous listeners\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const observableSection = this._observableSections.get(event.target.hash)\n      if (observableSection) {\n        event.preventDefault()\n        const root = this._rootElement || window\n        const height = observableSection.offsetTop - this._element.offsetTop\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'smooth' })\n          return\n        }\n\n        // Chrome 60 doesn't support `scrollTo`\n        root.scrollTop = height\n      }\n    })\n  }\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin\n    }\n\n    return new IntersectionObserver(entries => this._observerCallback(entries), options)\n  }\n\n  // The logic of selection\n  _observerCallback(entries) {\n    const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n    const activate = entry => {\n      this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n      this._process(targetElement(entry))\n    }\n\n    const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n    const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n    this._previousScrollData.parentScrollTop = parentScrollTop\n\n    for (const entry of entries) {\n      if (!entry.isIntersecting) {\n        this._activeTarget = null\n        this._clearActiveClass(targetElement(entry))\n\n        continue\n      }\n\n      const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n      // if we are scrolling down, pick the bigger offsetTop\n      if (userScrollsDown && entryIsLowerThanPrevious) {\n        activate(entry)\n        // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n        if (!parentScrollTop) {\n          return\n        }\n\n        continue\n      }\n\n      // if we are scrolling up, pick the smallest offsetTop\n      if (!userScrollsDown && !entryIsLowerThanPrevious) {\n        activate(entry)\n      }\n    }\n  }\n\n  _initializeTargetsAndObservables() {\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n    for (const anchor of targetLinks) {\n      // ensure that the anchor has an id and is not disabled\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element)\n\n      // ensure that the observableSection exists & is visible\n      if (isVisible(observableSection)) {\n        this._targetLinks.set(decodeURI(anchor.hash), anchor)\n        this._observableSections.set(anchor.hash, observableSection)\n      }\n    }\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate dropdown parents\n    if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n        .classList.add(CLASS_NAME_ACTIVE)\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\nexport default ScrollSpy\n"],"names":["NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","EVENT_ACTIVATE","EVENT_CLICK","EVENT_LOAD_DATA_API","CLASS_NAME_DROPDOWN_ITEM","CLASS_NAME_ACTIVE","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","Default","rootMargin","smoothScroll","target","threshold","DefaultType","ScrollSpy","BaseComponent","constructor","element","config","_targetLinks","Map","_observableSections","_rootElement","getComputedStyle","_element","overflowY","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","disconnect","_getNewObserver","section","values","observe","dispose","_configAfterMerge","getElement","document","body","split","map","value","Number","parseFloat","_config","EventHandler","off","on","event","observableSection","get","hash","preventDefault","root","window","height","offsetTop","scrollTo","top","behavior","scrollTop","options","IntersectionObserver","entries","_observerCallback","targetElement","entry","id","activate","_process","documentElement","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","SelectorEngine","find","anchor","isDisabled","findOne","decodeURI","isVisible","set","classList","add","_activateParents","trigger","relatedTarget","contains","closest","listGroup","parents","item","prev","parent","remove","activeNodes","node","spy","getOrCreateInstance"],"mappings":";;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;;;AASA;AACA;AACA;;AAEA,MAAMA,IAAI,GAAG,WAAW;AACxB,MAAMC,QAAQ,GAAG,cAAc;AAC/B,MAAMC,SAAS,GAAG,CAAA,CAAA,EAAID,QAAQ,CAAA,CAAE;AAChC,MAAME,YAAY,GAAG,WAAW;AAEhC,MAAMC,cAAc,GAAG,CAAA,QAAA,EAAWF,SAAS,CAAA,CAAE;AAC7C,MAAMG,WAAW,GAAG,CAAA,KAAA,EAAQH,SAAS,CAAA,CAAE;AACvC,MAAMI,mBAAmB,GAAG,CAAA,IAAA,EAAOJ,SAAS,CAAA,EAAGC,YAAY,CAAA,CAAE;AAE7D,MAAMI,wBAAwB,GAAG,eAAe;AAChD,MAAMC,iBAAiB,GAAG,QAAQ;AAElC,MAAMC,iBAAiB,GAAG,wBAAwB;AAClD,MAAMC,qBAAqB,GAAG,QAAQ;AACtC,MAAMC,uBAAuB,GAAG,mBAAmB;AACnD,MAAMC,kBAAkB,GAAG,WAAW;AACtC,MAAMC,kBAAkB,GAAG,WAAW;AACtC,MAAMC,mBAAmB,GAAG,kBAAkB;AAC9C,MAAMC,mBAAmB,GAAG,CAAA,EAAGH,kBAAkB,CAAA,EAAA,EAAKC,kBAAkB,CAAA,GAAA,EAAMD,kBAAkB,CAAA,EAAA,EAAKE,mBAAmB,CAAA,CAAE;AAC1H,MAAME,iBAAiB,GAAG,WAAW;AACrC,MAAMC,wBAAwB,GAAG,kBAAkB;AAEnD,MAAMC,OAAO,GAAG;AACdC,EAAAA,UAAU,EAAE,cAAc;AAC1BC,EAAAA,YAAY,EAAE,KAAK;AACnBC,EAAAA,MAAM,EAAE,IAAI;AACZC,EAAAA,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AACzB,CAAC;AAED,MAAMC,WAAW,GAAG;AAClBJ,EAAAA,UAAU,EAAE,QAAQ;AACpBC,EAAAA,YAAY,EAAE,SAAS;AACvBC,EAAAA,MAAM,EAAE,SAAS;AACjBC,EAAAA,SAAS,EAAE;AACb,CAAC;;AAED;AACA;AACA;;AAEA,MAAME,SAAS,SAASC,aAAa,CAAC;AACpCC,EAAAA,WAAWA,CAACC,OAAO,EAAEC,MAAM,EAAE;AAC3B,IAAA,KAAK,CAACD,OAAO,EAAEC,MAAM,CAAC;;AAEtB;AACA,IAAA,IAAI,CAACC,YAAY,GAAG,IAAIC,GAAG,EAAE;AAC7B,IAAA,IAAI,CAACC,mBAAmB,GAAG,IAAID,GAAG,EAAE;AACpC,IAAA,IAAI,CAACE,YAAY,GAAGC,gBAAgB,CAAC,IAAI,CAACC,QAAQ,CAAC,CAACC,SAAS,KAAK,SAAS,GAAG,IAAI,GAAG,IAAI,CAACD,QAAQ;IAClG,IAAI,CAACE,aAAa,GAAG,IAAI;IACzB,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB,IAAI,CAACC,mBAAmB,GAAG;AACzBC,MAAAA,eAAe,EAAE,CAAC;AAClBC,MAAAA,eAAe,EAAE;KAClB;AACD,IAAA,IAAI,CAACC,OAAO,EAAE,CAAA;AAChB,EAAA;;AAEA;EACA,WAAWvB,OAAOA,GAAG;AACnB,IAAA,OAAOA,OAAO;AAChB,EAAA;EAEA,WAAWK,WAAWA,GAAG;AACvB,IAAA,OAAOA,WAAW;AACpB,EAAA;EAEA,WAAWvB,IAAIA,GAAG;AAChB,IAAA,OAAOA,IAAI;AACb,EAAA;;AAEA;AACAyC,EAAAA,OAAOA,GAAG;IACR,IAAI,CAACC,gCAAgC,EAAE;IACvC,IAAI,CAACC,wBAAwB,EAAE;IAE/B,IAAI,IAAI,CAACN,SAAS,EAAE;AAClB,MAAA,IAAI,CAACA,SAAS,CAACO,UAAU,EAAE;AAC7B,IAAA,CAAC,MAAM;AACL,MAAA,IAAI,CAACP,SAAS,GAAG,IAAI,CAACQ,eAAe,EAAE;AACzC,IAAA;IAEA,KAAK,MAAMC,OAAO,IAAI,IAAI,CAACf,mBAAmB,CAACgB,MAAM,EAAE,EAAE;AACvD,MAAA,IAAI,CAACV,SAAS,CAACW,OAAO,CAACF,OAAO,CAAC;AACjC,IAAA;AACF,EAAA;AAEAG,EAAAA,OAAOA,GAAG;AACR,IAAA,IAAI,CAACZ,SAAS,CAACO,UAAU,EAAE;IAC3B,KAAK,CAACK,OAAO,EAAE;AACjB,EAAA;;AAEA;EACAC,iBAAiBA,CAACtB,MAAM,EAAE;AACxBA,IAAAA,MAAM,CAACP,MAAM,GAAG8B,UAAU,CAACvB,MAAM,CAACP,MAAM,CAAC,IAAI+B,QAAQ,CAACC,IAAI;AAE1D,IAAA,IAAI,OAAOzB,MAAM,CAACN,SAAS,KAAK,QAAQ,EAAE;MACxCM,MAAM,CAACN,SAAS,GAAGM,MAAM,CAACN,SAAS,CAACgC,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAACC,KAAK,IAAIC,MAAM,CAACC,UAAU,CAACF,KAAK,CAAC,CAAC;AACvF,IAAA;AAEA,IAAA,OAAO5B,MAAM;AACf,EAAA;AAEAe,EAAAA,wBAAwBA,GAAG;AACzB,IAAA,IAAI,CAAC,IAAI,CAACgB,OAAO,CAACvC,YAAY,EAAE;AAC9B,MAAA;AACF,IAAA;;AAEA;IACAwC,YAAY,CAACC,GAAG,CAAC,IAAI,CAACF,OAAO,CAACtC,MAAM,EAAEhB,WAAW,CAAC;AAElDuD,IAAAA,YAAY,CAACE,EAAE,CAAC,IAAI,CAACH,OAAO,CAACtC,MAAM,EAAEhB,WAAW,EAAEK,qBAAqB,EAAEqD,KAAK,IAAI;AAChF,MAAA,MAAMC,iBAAiB,GAAG,IAAI,CAACjC,mBAAmB,CAACkC,GAAG,CAACF,KAAK,CAAC1C,MAAM,CAAC6C,IAAI,CAAC;AACzE,MAAA,IAAIF,iBAAiB,EAAE;QACrBD,KAAK,CAACI,cAAc,EAAE;AACtB,QAAA,MAAMC,IAAI,GAAG,IAAI,CAACpC,YAAY,IAAIqC,MAAM;QACxC,MAAMC,MAAM,GAAGN,iBAAiB,CAACO,SAAS,GAAG,IAAI,CAACrC,QAAQ,CAACqC,SAAS;QACpE,IAAIH,IAAI,CAACI,QAAQ,EAAE;UACjBJ,IAAI,CAACI,QAAQ,CAAC;AAAEC,YAAAA,GAAG,EAAEH,MAAM;AAAEI,YAAAA,QAAQ,EAAE;AAAS,WAAC,CAAC;AAClD,UAAA;AACF,QAAA;;AAEA;QACAN,IAAI,CAACO,SAAS,GAAGL,MAAM;AACzB,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA;AAEAzB,EAAAA,eAAeA,GAAG;AAChB,IAAA,MAAM+B,OAAO,GAAG;MACdR,IAAI,EAAE,IAAI,CAACpC,YAAY;AACvBV,MAAAA,SAAS,EAAE,IAAI,CAACqC,OAAO,CAACrC,SAAS;AACjCH,MAAAA,UAAU,EAAE,IAAI,CAACwC,OAAO,CAACxC;KAC1B;AAED,IAAA,OAAO,IAAI0D,oBAAoB,CAACC,OAAO,IAAI,IAAI,CAACC,iBAAiB,CAACD,OAAO,CAAC,EAAEF,OAAO,CAAC;AACtF,EAAA;;AAEA;EACAG,iBAAiBA,CAACD,OAAO,EAAE;AACzB,IAAA,MAAME,aAAa,GAAGC,KAAK,IAAI,IAAI,CAACpD,YAAY,CAACoC,GAAG,CAAC,IAAIgB,KAAK,CAAC5D,MAAM,CAAC6D,EAAE,EAAE,CAAC;IAC3E,MAAMC,QAAQ,GAAGF,KAAK,IAAI;MACxB,IAAI,CAAC3C,mBAAmB,CAACC,eAAe,GAAG0C,KAAK,CAAC5D,MAAM,CAACkD,SAAS;AACjE,MAAA,IAAI,CAACa,QAAQ,CAACJ,aAAa,CAACC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,MAAMzC,eAAe,GAAG,CAAC,IAAI,CAACR,YAAY,IAAIoB,QAAQ,CAACiC,eAAe,EAAEV,SAAS;IACjF,MAAMW,eAAe,GAAG9C,eAAe,IAAI,IAAI,CAACF,mBAAmB,CAACE,eAAe;AACnF,IAAA,IAAI,CAACF,mBAAmB,CAACE,eAAe,GAAGA,eAAe;AAE1D,IAAA,KAAK,MAAMyC,KAAK,IAAIH,OAAO,EAAE;AAC3B,MAAA,IAAI,CAACG,KAAK,CAACM,cAAc,EAAE;QACzB,IAAI,CAACnD,aAAa,GAAG,IAAI;AACzB,QAAA,IAAI,CAACoD,iBAAiB,CAACR,aAAa,CAACC,KAAK,CAAC,CAAC;AAE5C,QAAA;AACF,MAAA;AAEA,MAAA,MAAMQ,wBAAwB,GAAGR,KAAK,CAAC5D,MAAM,CAACkD,SAAS,IAAI,IAAI,CAACjC,mBAAmB,CAACC,eAAe;AACnG;MACA,IAAI+C,eAAe,IAAIG,wBAAwB,EAAE;QAC/CN,QAAQ,CAACF,KAAK,CAAC;AACf;QACA,IAAI,CAACzC,eAAe,EAAE;AACpB,UAAA;AACF,QAAA;AAEA,QAAA;AACF,MAAA;;AAEA;AACA,MAAA,IAAI,CAAC8C,eAAe,IAAI,CAACG,wBAAwB,EAAE;QACjDN,QAAQ,CAACF,KAAK,CAAC;AACjB,MAAA;AACF,IAAA;AACF,EAAA;AAEAvC,EAAAA,gCAAgCA,GAAG;AACjC,IAAA,IAAI,CAACb,YAAY,GAAG,IAAIC,GAAG,EAAE;AAC7B,IAAA,IAAI,CAACC,mBAAmB,GAAG,IAAID,GAAG,EAAE;AAEpC,IAAA,MAAM4D,WAAW,GAAGC,cAAc,CAACC,IAAI,CAAClF,qBAAqB,EAAE,IAAI,CAACiD,OAAO,CAACtC,MAAM,CAAC;AAEnF,IAAA,KAAK,MAAMwE,MAAM,IAAIH,WAAW,EAAE;AAChC;MACA,IAAI,CAACG,MAAM,CAAC3B,IAAI,IAAI4B,UAAU,CAACD,MAAM,CAAC,EAAE;AACtC,QAAA;AACF,MAAA;AAEA,MAAA,MAAM7B,iBAAiB,GAAG2B,cAAc,CAACI,OAAO,CAACC,SAAS,CAACH,MAAM,CAAC3B,IAAI,CAAC,EAAE,IAAI,CAAChC,QAAQ,CAAC;;AAEvF;AACA,MAAA,IAAI+D,SAAS,CAACjC,iBAAiB,CAAC,EAAE;AAChC,QAAA,IAAI,CAACnC,YAAY,CAACqE,GAAG,CAACF,SAAS,CAACH,MAAM,CAAC3B,IAAI,CAAC,EAAE2B,MAAM,CAAC;QACrD,IAAI,CAAC9D,mBAAmB,CAACmE,GAAG,CAACL,MAAM,CAAC3B,IAAI,EAAEF,iBAAiB,CAAC;AAC9D,MAAA;AACF,IAAA;AACF,EAAA;EAEAoB,QAAQA,CAAC/D,MAAM,EAAE;AACf,IAAA,IAAI,IAAI,CAACe,aAAa,KAAKf,MAAM,EAAE;AACjC,MAAA;AACF,IAAA;IAEA,IAAI,CAACmE,iBAAiB,CAAC,IAAI,CAAC7B,OAAO,CAACtC,MAAM,CAAC;IAC3C,IAAI,CAACe,aAAa,GAAGf,MAAM;AAC3BA,IAAAA,MAAM,CAAC8E,SAAS,CAACC,GAAG,CAAC5F,iBAAiB,CAAC;AACvC,IAAA,IAAI,CAAC6F,gBAAgB,CAAChF,MAAM,CAAC;IAE7BuC,YAAY,CAAC0C,OAAO,CAAC,IAAI,CAACpE,QAAQ,EAAE9B,cAAc,EAAE;AAAEmG,MAAAA,aAAa,EAAElF;AAAO,KAAC,CAAC;AAChF,EAAA;EAEAgF,gBAAgBA,CAAChF,MAAM,EAAE;AACvB;IACA,IAAIA,MAAM,CAAC8E,SAAS,CAACK,QAAQ,CAACjG,wBAAwB,CAAC,EAAE;AACvDoF,MAAAA,cAAc,CAACI,OAAO,CAAC9E,wBAAwB,EAAEI,MAAM,CAACoF,OAAO,CAACzF,iBAAiB,CAAC,CAAC,CAChFmF,SAAS,CAACC,GAAG,CAAC5F,iBAAiB,CAAC;AACnC,MAAA;AACF,IAAA;IAEA,KAAK,MAAMkG,SAAS,IAAIf,cAAc,CAACgB,OAAO,CAACtF,MAAM,EAAEV,uBAAuB,CAAC,EAAE;AAC/E;AACA;MACA,KAAK,MAAMiG,IAAI,IAAIjB,cAAc,CAACkB,IAAI,CAACH,SAAS,EAAE3F,mBAAmB,CAAC,EAAE;AACtE6F,QAAAA,IAAI,CAACT,SAAS,CAACC,GAAG,CAAC5F,iBAAiB,CAAC;AACvC,MAAA;AACF,IAAA;AACF,EAAA;EAEAgF,iBAAiBA,CAACsB,MAAM,EAAE;AACxBA,IAAAA,MAAM,CAACX,SAAS,CAACY,MAAM,CAACvG,iBAAiB,CAAC;AAE1C,IAAA,MAAMwG,WAAW,GAAGrB,cAAc,CAACC,IAAI,CAAC,CAAA,EAAGlF,qBAAqB,CAAA,CAAA,EAAIF,iBAAiB,CAAA,CAAE,EAAEsG,MAAM,CAAC;AAChG,IAAA,KAAK,MAAMG,IAAI,IAAID,WAAW,EAAE;AAC9BC,MAAAA,IAAI,CAACd,SAAS,CAACY,MAAM,CAACvG,iBAAiB,CAAC;AAC1C,IAAA;AACF,EAAA;AACF;;AAEA;AACA;AACA;;AAEAoD,YAAY,CAACE,EAAE,CAACO,MAAM,EAAE/D,mBAAmB,EAAE,MAAM;EACjD,KAAK,MAAM4G,GAAG,IAAIvB,cAAc,CAACC,IAAI,CAACnF,iBAAiB,CAAC,EAAE;AACxDe,IAAAA,SAAS,CAAC2F,mBAAmB,CAACD,GAAG,CAAC;AACpC,EAAA;AACF,CAAC,CAAC;;;;"}
\ No newline at end of file
+{"version":3,"file":"scrollspy.js","sources":["../src/scrollspy.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_MENU_ITEM = 'menu-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\n\nconst Default = {\n  rootMargin: '0px 0px -25%',\n  smoothScroll: false,\n  target: null,\n  threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n  rootMargin: 'string',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n    this._activeTarget = null\n    this._observer = null\n    this._previousScrollData = {\n      visibleEntryTop: 0,\n      parentScrollTop: 0\n    }\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    } else {\n      this._observer = this._getNewObserver()\n    }\n\n    for (const section of this._observableSections.values()) {\n      this._observer.observe(section)\n    }\n  }\n\n  dispose() {\n    this._observer.disconnect()\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.target = getElement(config.target) || document.body\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // unregister any previous listeners\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const observableSection = this._observableSections.get(event.target.hash)\n      if (observableSection) {\n        event.preventDefault()\n        const root = this._rootElement || window\n        const height = observableSection.offsetTop - this._element.offsetTop\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'smooth' })\n          return\n        }\n\n        // Chrome 60 doesn't support `scrollTo`\n        root.scrollTop = height\n      }\n    })\n  }\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin\n    }\n\n    return new IntersectionObserver(entries => this._observerCallback(entries), options)\n  }\n\n  // The logic of selection\n  _observerCallback(entries) {\n    const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n    const activate = entry => {\n      this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n      this._process(targetElement(entry))\n    }\n\n    const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n    const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n    this._previousScrollData.parentScrollTop = parentScrollTop\n\n    for (const entry of entries) {\n      if (!entry.isIntersecting) {\n        this._activeTarget = null\n        this._clearActiveClass(targetElement(entry))\n\n        continue\n      }\n\n      const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n      // if we are scrolling down, pick the bigger offsetTop\n      if (userScrollsDown && entryIsLowerThanPrevious) {\n        activate(entry)\n        // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n        if (!parentScrollTop) {\n          return\n        }\n\n        continue\n      }\n\n      // if we are scrolling up, pick the smallest offsetTop\n      if (!userScrollsDown && !entryIsLowerThanPrevious) {\n        activate(entry)\n      }\n    }\n  }\n\n  _initializeTargetsAndObservables() {\n    this._targetLinks = new Map()\n    this._observableSections = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n    for (const anchor of targetLinks) {\n      // ensure that the anchor has an id and is not disabled\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element)\n\n      // ensure that the observableSection exists & is visible\n      if (isVisible(observableSection)) {\n        this._targetLinks.set(decodeURI(anchor.hash), anchor)\n        this._observableSections.set(anchor.hash, observableSection)\n      }\n    }\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate menu parents\n    if (target.classList.contains(CLASS_NAME_MENU_ITEM)) {\n      const menuToggle = target.closest('.menu')?.previousElementSibling\n      if (menuToggle?.matches(SELECTOR_MENU_TOGGLE)) {\n        menuToggle.classList.add(CLASS_NAME_ACTIVE)\n      }\n\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\nexport default ScrollSpy\n"],"names":["NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","EVENT_ACTIVATE","EVENT_CLICK","EVENT_LOAD_DATA_API","CLASS_NAME_MENU_ITEM","CLASS_NAME_ACTIVE","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_MENU_TOGGLE","Default","rootMargin","smoothScroll","target","threshold","DefaultType","ScrollSpy","BaseComponent","constructor","element","config","_targetLinks","Map","_observableSections","_rootElement","getComputedStyle","_element","overflowY","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","disconnect","_getNewObserver","section","values","observe","dispose","_configAfterMerge","getElement","document","body","split","map","value","Number","parseFloat","_config","EventHandler","off","on","event","observableSection","get","hash","preventDefault","root","window","height","offsetTop","scrollTo","top","behavior","scrollTop","options","IntersectionObserver","entries","_observerCallback","targetElement","entry","id","activate","_process","documentElement","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","SelectorEngine","find","anchor","isDisabled","findOne","decodeURI","isVisible","set","classList","add","_activateParents","trigger","relatedTarget","contains","menuToggle","closest","previousElementSibling","matches","listGroup","parents","item","prev","parent","remove","activeNodes","node","spy","getOrCreateInstance"],"mappings":"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"}
\ No newline at end of file
index 8ab7cbb8a6b921b757ec0c57e2d74b6e8d524d54..5b57221268ff59dee2c290b7968819142ed7d4de 100644 (file)
@@ -39,13 +39,12 @@ const END_KEY = 'End';
 const CLASS_NAME_ACTIVE = 'active';
 const CLASS_NAME_FADE = 'fade';
 const CLASS_NAME_SHOW = 'show';
-const CLASS_DROPDOWN = 'dropdown';
-const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
-const SELECTOR_DROPDOWN_MENU = '.dropdown-menu';
-const NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;
+const SELECTOR_MENU_TOGGLE = '[data-bs-toggle="menu"]';
+const SELECTOR_MENU = '.menu';
+const NOT_SELECTOR_MENU_TOGGLE = `:not(${SELECTOR_MENU_TOGGLE})`;
 const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]';
 const SELECTOR_OUTER = '.nav-item, .list-group-item';
-const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;
+const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role="tab"]${NOT_SELECTOR_MENU_TOGGLE}`;
 const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; // TODO: could only be `tab` in v6
 const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;
 const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`;
@@ -112,7 +111,7 @@ class Tab extends BaseComponent {
       }
       element.removeAttribute('tabindex');
       element.setAttribute('aria-selected', true);
-      this._toggleDropDown(element, true);
+      this._toggleMenu(element, true);
       EventHandler.trigger(element, EVENT_SHOWN, {
         relatedTarget: relatedElem
       });
@@ -134,7 +133,7 @@ class Tab extends BaseComponent {
       }
       element.setAttribute('aria-selected', false);
       element.setAttribute('tabindex', '-1');
-      this._toggleDropDown(element, false);
+      this._toggleMenu(element, false);
       EventHandler.trigger(element, EVENT_HIDDEN, {
         relatedTarget: relatedElem
       });
@@ -201,20 +200,18 @@ class Tab extends BaseComponent {
       this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`);
     }
   }
-  _toggleDropDown(element, open) {
+  _toggleMenu(element, open) {
     const outerElem = this._getOuterElement(element);
-    if (!outerElem.classList.contains(CLASS_DROPDOWN)) {
+    const menuToggle = SelectorEngine.findOne(SELECTOR_MENU_TOGGLE, outerElem);
+    if (!menuToggle) {
       return;
     }
-    const toggle = (selector, className) => {
-      const element = SelectorEngine.findOne(selector, outerElem);
-      if (element) {
-        element.classList.toggle(className, open);
-      }
-    };
-    toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);
-    toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW);
-    outerElem.setAttribute('aria-expanded', open);
+    const menu = SelectorEngine.findOne(SELECTOR_MENU, outerElem);
+    menuToggle.classList.toggle(CLASS_NAME_ACTIVE, open);
+    if (menu) {
+      menu.classList.toggle(CLASS_NAME_SHOW, open);
+    }
+    menuToggle.setAttribute('aria-expanded', open);
   }
   _setAttributeIfNotExists(element, attribute, value) {
     if (!element.hasAttribute(attribute)) {
index e75577c9b121282a7c22639fda9c8a80b63ee0df..9241e96280b55efdfc2637db3647549033577e96 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"tab.js","sources":["../src/tab.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_TAB_PANEL}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleDropDown(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleDropDown(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n\n    const children = this._getChildren().filter(element => !isDisabled(element))\n    let nextActiveElement\n\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n    }\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n    }\n  }\n\n  _toggleDropDown(element, open) {\n    const outerElem = this._getOuterElement(element)\n    if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n      return\n    }\n\n    const toggle = (selector, className) => {\n      const element = SelectorEngine.findOne(selector, outerElem)\n      if (element) {\n        element.classList.toggle(className, open)\n      }\n    }\n\n    toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n    toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n    outerElem.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n\nexport default Tab\n"],"names":["NAME","DATA_KEY","EVENT_KEY","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_CLICK_DATA_API","EVENT_KEYDOWN","EVENT_LOAD_DATA_API","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","CLASS_NAME_ACTIVE","CLASS_NAME_FADE","CLASS_NAME_SHOW","CLASS_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","SELECTOR_DROPDOWN_MENU","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER","SELECTOR_DATA_TOGGLE","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","BaseComponent","constructor","element","_parent","_element","closest","_setInitialAttributes","_getChildren","EventHandler","on","event","_keydown","show","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","trigger","relatedTarget","showEvent","defaultPrevented","_deactivate","_activate","relatedElem","classList","add","SelectorEngine","getElementFromSelector","complete","getAttribute","removeAttribute","setAttribute","_toggleDropDown","_queueCallback","contains","remove","blur","includes","key","stopPropagation","preventDefault","children","filter","isDisabled","nextActiveElement","length","isNext","getNextActiveElement","target","focus","preventScroll","getOrCreateInstance","find","child","parent","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","id","open","toggle","selector","className","findOne","attribute","value","hasAttribute","elem","matches","document","tagName","window"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"tab.js","sources":["../src/tab.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\nconst SELECTOR_MENU = '.menu'\nconst NOT_SELECTOR_MENU_TOGGLE = `:not(${SELECTOR_MENU_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_MENU_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_TAB_PANEL}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleMenu(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleMenu(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n\n    const children = this._getChildren().filter(element => !isDisabled(element))\n    let nextActiveElement\n\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n    }\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n    }\n  }\n\n  _toggleMenu(element, open) {\n    const outerElem = this._getOuterElement(element)\n    const menuToggle = SelectorEngine.findOne(SELECTOR_MENU_TOGGLE, outerElem)\n    if (!menuToggle) {\n      return\n    }\n\n    const menu = SelectorEngine.findOne(SELECTOR_MENU, outerElem)\n\n    menuToggle.classList.toggle(CLASS_NAME_ACTIVE, open)\n    if (menu) {\n      menu.classList.toggle(CLASS_NAME_SHOW, open)\n    }\n\n    menuToggle.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n\nexport default Tab\n"],"names":["NAME","DATA_KEY","EVENT_KEY","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_CLICK_DATA_API","EVENT_KEYDOWN","EVENT_LOAD_DATA_API","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","CLASS_NAME_ACTIVE","CLASS_NAME_FADE","CLASS_NAME_SHOW","SELECTOR_MENU_TOGGLE","SELECTOR_MENU","NOT_SELECTOR_MENU_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER","SELECTOR_DATA_TOGGLE","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","BaseComponent","constructor","element","_parent","_element","closest","_setInitialAttributes","_getChildren","EventHandler","on","event","_keydown","show","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","trigger","relatedTarget","showEvent","defaultPrevented","_deactivate","_activate","relatedElem","classList","add","SelectorEngine","getElementFromSelector","complete","getAttribute","removeAttribute","setAttribute","_toggleMenu","_queueCallback","contains","remove","blur","includes","key","stopPropagation","preventDefault","children","filter","isDisabled","nextActiveElement","length","isNext","getNextActiveElement","target","focus","preventScroll","getOrCreateInstance","find","child","parent","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","id","open","menuToggle","findOne","menu","toggle","attribute","value","hasAttribute","elem","matches","document","tagName","window"],"mappings":"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"}
\ No newline at end of file
index 9f762c6f9125b5219cfc9096062e40eda4cc626e..45bd3086efa8aec96e024359807cac7b3a8135f8 100644 (file)
@@ -9,9 +9,10 @@ export { default as Alert } from './src/alert.js'
 export { default as Button } from './src/button.js'
 export { default as Carousel } from './src/carousel.js'
 export { default as Collapse } from './src/collapse.js'
+export { default as Combobox } from './src/combobox.js'
 export { default as Datepicker } from './src/datepicker.js'
 export { default as Dialog } from './src/dialog.js'
-export { default as Dropdown } from './src/dropdown.js'
+export { default as Menu } from './src/menu.js'
 export { default as NavOverflow } from './src/nav-overflow.js'
 export { default as Offcanvas } from './src/offcanvas.js'
 export { default as Strength } from './src/strength.js'
diff --git a/js/src/combobox.js b/js/src/combobox.js
new file mode 100644 (file)
index 0000000..fad0804
--- /dev/null
@@ -0,0 +1,456 @@
+/**
+ * --------------------------------------------------------------------------
+ * Bootstrap combobox.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+
+import BaseComponent from './base-component.js'
+import EventHandler from './dom/event-handler.js'
+import SelectorEngine from './dom/selector-engine.js'
+import Menu from './menu.js'
+import { getNextActiveElement, isDisabled, isVisible } from './util/index.js'
+
+/**
+ * Constants
+ */
+
+const NAME = 'combobox'
+const DATA_KEY = 'bs.combobox'
+const EVENT_KEY = `.${DATA_KEY}`
+const DATA_API_KEY = '.data-api'
+
+const ESCAPE_KEY = 'Escape'
+const TAB_KEY = 'Tab'
+const ARROW_UP_KEY = 'ArrowUp'
+const ARROW_DOWN_KEY = 'ArrowDown'
+const HOME_KEY = 'Home'
+const END_KEY = 'End'
+const ENTER_KEY = 'Enter'
+const SPACE_KEY = ' '
+
+const EVENT_CHANGE = `change${EVENT_KEY}`
+const EVENT_SHOW = `show${EVENT_KEY}`
+const EVENT_SHOWN = `shown${EVENT_KEY}`
+const EVENT_HIDE = `hide${EVENT_KEY}`
+const EVENT_HIDDEN = `hidden${EVENT_KEY}`
+const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`
+
+const CLASS_NAME_SHOW = 'show'
+const CLASS_NAME_SELECTED = 'selected'
+const CLASS_NAME_PLACEHOLDER = 'combobox-placeholder'
+
+const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="combobox"]'
+const SELECTOR_MENU = '.menu'
+const SELECTOR_MENU_ITEM = '.menu-item[data-bs-value]'
+const SELECTOR_VISIBLE_ITEMS = '.menu-item[data-bs-value]:not(.disabled):not(:disabled)'
+const SELECTOR_VALUE = '.combobox-value'
+const SELECTOR_SEARCH_INPUT = '.combobox-search-input'
+const SELECTOR_NO_RESULTS = '.combobox-no-results'
+
+const Default = {
+  boundary: 'clippingParents',
+  multiple: false,
+  name: null,
+  offset: [0, 2],
+  placeholder: '',
+  placement: 'bottom-start',
+  search: false,
+  searchNormalize: false
+}
+
+const DefaultType = {
+  boundary: '(string|element)',
+  multiple: 'boolean',
+  name: '(string|null)',
+  offset: '(array|string|function)',
+  placeholder: 'string',
+  placement: 'string',
+  search: 'boolean',
+  searchNormalize: 'boolean'
+}
+
+/**
+ * Class definition
+ */
+
+class Combobox extends BaseComponent {
+  constructor(element, config) {
+    super(element, config)
+
+    this._toggle = this._element
+    this._menu = SelectorEngine.next(this._toggle, SELECTOR_MENU)[0]
+    this._valueDisplay = SelectorEngine.findOne(SELECTOR_VALUE, this._toggle)
+    this._searchInput = SelectorEngine.findOne(SELECTOR_SEARCH_INPUT, this._menu)
+    this._noResults = SelectorEngine.findOne(SELECTOR_NO_RESULTS, this._menu)
+    this._hiddenInput = null
+    this._menuInstance = null
+
+    this._createHiddenInput()
+    this._createMenuInstance()
+    this._syncInitialSelection()
+    this._addEventListeners()
+  }
+
+  // Getters
+  static get Default() {
+    return Default
+  }
+
+  static get DefaultType() {
+    return DefaultType
+  }
+
+  static get NAME() {
+    return NAME
+  }
+
+  // Public
+  toggle() {
+    return this._isShown() ? this.hide() : this.show()
+  }
+
+  show() {
+    if (isDisabled(this._toggle) || this._isShown()) {
+      return
+    }
+
+    const showEvent = EventHandler.trigger(this._toggle, EVENT_SHOW)
+    if (showEvent.defaultPrevented) {
+      return
+    }
+
+    this._menuInstance.show()
+
+    if (this._searchInput) {
+      this._searchInput.value = ''
+      this._filterItems('')
+      requestAnimationFrame(() => this._searchInput.focus())
+    }
+
+    EventHandler.trigger(this._toggle, EVENT_SHOWN)
+  }
+
+  hide() {
+    if (!this._isShown()) {
+      return
+    }
+
+    const hideEvent = EventHandler.trigger(this._toggle, EVENT_HIDE)
+    if (hideEvent.defaultPrevented) {
+      return
+    }
+
+    this._menuInstance.hide()
+    EventHandler.trigger(this._toggle, EVENT_HIDDEN)
+  }
+
+  dispose() {
+    if (this._menuInstance) {
+      this._menuInstance.dispose()
+      this._menuInstance = null
+    }
+
+    if (this._hiddenInput) {
+      this._hiddenInput.remove()
+      this._hiddenInput = null
+    }
+
+    EventHandler.off(this._menu, EVENT_KEY)
+    EventHandler.off(this._toggle, EVENT_KEY)
+
+    super.dispose()
+  }
+
+  // Private
+  _isShown() {
+    return this._menu.classList.contains(CLASS_NAME_SHOW)
+  }
+
+  _createHiddenInput() {
+    const { name } = this._config
+    if (!name) {
+      return
+    }
+
+    this._hiddenInput = document.createElement('input')
+    this._hiddenInput.type = 'hidden'
+    this._hiddenInput.name = name
+    this._hiddenInput.value = ''
+    this._toggle.parentNode.insertBefore(this._hiddenInput, this._toggle)
+  }
+
+  _createMenuInstance() {
+    this._menuInstance = new Menu(this._toggle, {
+      menu: this._menu,
+      autoClose: this._config.multiple ? 'outside' : true,
+      boundary: this._config.boundary,
+      offset: this._config.offset,
+      placement: this._config.placement
+    })
+  }
+
+  _syncInitialSelection() {
+    const selectedItems = this._getSelectedItems()
+    if (selectedItems.length > 0) {
+      this._updateToggleText()
+      this._updateHiddenInput()
+    } else {
+      this._showPlaceholder()
+    }
+  }
+
+  _addEventListeners() {
+    EventHandler.on(this._menu, 'click', SELECTOR_MENU_ITEM, event => {
+      const item = event.target.closest(SELECTOR_MENU_ITEM)
+      if (!item || isDisabled(item)) {
+        return
+      }
+
+      event.preventDefault()
+      event.stopPropagation()
+      this._selectItem(item)
+    })
+
+    EventHandler.on(this._toggle, 'keydown', event => {
+      this._handleToggleKeydown(event)
+    })
+
+    EventHandler.on(this._menu, 'keydown', event => {
+      this._handleMenuKeydown(event)
+    })
+
+    if (this._searchInput) {
+      EventHandler.on(this._searchInput, 'input', () => {
+        this._filterItems(this._searchInput.value)
+      })
+
+      EventHandler.on(this._searchInput, 'keydown', event => {
+        if (event.key === ARROW_DOWN_KEY) {
+          event.preventDefault()
+          const items = this._getVisibleItems()
+          if (items.length > 0) {
+            items[0].focus()
+          }
+        }
+
+        if (event.key === ESCAPE_KEY) {
+          this.hide()
+          this._toggle.focus()
+        }
+      })
+    }
+  }
+
+  _selectItem(item) {
+    if (this._config.multiple) {
+      item.classList.toggle(CLASS_NAME_SELECTED)
+      item.setAttribute('aria-selected', item.classList.contains(CLASS_NAME_SELECTED))
+    } else {
+      const previouslySelected = SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)
+      for (const prev of previouslySelected) {
+        prev.classList.remove(CLASS_NAME_SELECTED)
+        prev.setAttribute('aria-selected', 'false')
+      }
+
+      item.classList.add(CLASS_NAME_SELECTED)
+      item.setAttribute('aria-selected', 'true')
+    }
+
+    this._updateToggleText()
+    this._updateHiddenInput()
+
+    const value = this._config.multiple ?
+      this._getSelectedItems().map(el => el.dataset.bsValue) :
+      item.dataset.bsValue
+
+    EventHandler.trigger(this._toggle, EVENT_CHANGE, {
+      value,
+      item
+    })
+
+    if (!this._config.multiple) {
+      this.hide()
+      this._toggle.focus()
+    }
+  }
+
+  _updateToggleText() {
+    const selectedItems = this._getSelectedItems()
+
+    if (selectedItems.length === 0) {
+      this._showPlaceholder()
+      return
+    }
+
+    this._valueDisplay.classList.remove(CLASS_NAME_PLACEHOLDER)
+
+    if (this._config.multiple && selectedItems.length > 1) {
+      this._valueDisplay.textContent = `${selectedItems.length} selected`
+    } else {
+      const item = selectedItems[0]
+      const label = SelectorEngine.findOne('.menu-item-content > span:first-child', item)
+      this._valueDisplay.textContent = label ? label.textContent : item.textContent.trim()
+    }
+  }
+
+  _showPlaceholder() {
+    const { placeholder } = this._config
+    if (placeholder) {
+      this._valueDisplay.textContent = placeholder
+      this._valueDisplay.classList.add(CLASS_NAME_PLACEHOLDER)
+    }
+  }
+
+  _updateHiddenInput() {
+    if (!this._hiddenInput) {
+      return
+    }
+
+    const selectedItems = this._getSelectedItems()
+    const values = selectedItems.map(el => el.dataset.bsValue)
+    this._hiddenInput.value = this._config.multiple ? values.join(',') : (values[0] || '')
+  }
+
+  _getSelectedItems() {
+    return SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)
+  }
+
+  _getVisibleItems() {
+    return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu)
+      .filter(item => isVisible(item))
+  }
+
+  _filterItems(query) {
+    const normalizedQuery = this._normalizeText(query.toLowerCase().trim())
+    const items = SelectorEngine.find(SELECTOR_MENU_ITEM, this._menu)
+    let visibleCount = 0
+
+    for (const item of items) {
+      const text = this._normalizeText(item.textContent.toLowerCase().trim())
+      const matches = !normalizedQuery || text.includes(normalizedQuery)
+      item.style.display = matches ? '' : 'none'
+      if (matches) {
+        visibleCount++
+      }
+    }
+
+    if (this._noResults) {
+      this._noResults.classList.toggle('d-none', visibleCount > 0)
+    }
+  }
+
+  _normalizeText(text) {
+    if (this._config.searchNormalize) {
+      return text.normalize('NFD').replace(/[\u0300-\u036F]/g, '')
+    }
+
+    return text
+  }
+
+  _handleToggleKeydown(event) {
+    const { key } = event
+
+    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {
+      event.preventDefault()
+      if (!this._isShown()) {
+        this.show()
+      }
+
+      const items = this._getVisibleItems()
+      if (items.length > 0) {
+        const target = key === ARROW_DOWN_KEY ? items[0] : items[items.length - 1]
+        target.focus()
+      }
+
+      return
+    }
+
+    if ((key === ENTER_KEY || key === SPACE_KEY) && !this._isShown()) {
+      event.preventDefault()
+      this.show()
+    }
+  }
+
+  _handleMenuKeydown(event) {
+    const { key, target } = event
+
+    if (key === ESCAPE_KEY) {
+      event.preventDefault()
+      event.stopPropagation()
+      this.hide()
+      this._toggle.focus()
+      return
+    }
+
+    if (key === TAB_KEY) {
+      this.hide()
+      return
+    }
+
+    const isInput = target.matches('input')
+
+    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {
+      event.preventDefault()
+      const items = this._getVisibleItems()
+      if (items.length > 0) {
+        getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()
+      }
+
+      return
+    }
+
+    if (key === HOME_KEY || key === END_KEY) {
+      event.preventDefault()
+      const items = this._getVisibleItems()
+      if (items.length > 0) {
+        const targetItem = key === HOME_KEY ? items[0] : items[items.length - 1]
+        targetItem.focus()
+      }
+
+      return
+    }
+
+    if ((key === ENTER_KEY || key === SPACE_KEY) && !isInput) {
+      event.preventDefault()
+      const item = target.closest(SELECTOR_MENU_ITEM)
+      if (item && !isDisabled(item)) {
+        this._selectItem(item)
+      }
+    }
+  }
+
+  // Static
+  static jQueryInterface(config) {
+    return this.each(function () {
+      const data = Combobox.getOrCreateInstance(this, config)
+
+      if (typeof config !== 'string') {
+        return
+      }
+
+      if (typeof data[config] === 'undefined') {
+        throw new TypeError(`No method named "${config}"`)
+      }
+
+      data[config]()
+    })
+  }
+}
+
+/**
+ * Data API implementation
+ */
+
+EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
+  event.preventDefault()
+  Combobox.getOrCreateInstance(this).toggle()
+})
+
+EventHandler.on(document, 'DOMContentLoaded', () => {
+  for (const toggle of SelectorEngine.find(SELECTOR_DATA_TOGGLE)) {
+    Combobox.getOrCreateInstance(toggle)
+  }
+})
+
+export default Combobox
similarity index 77%
rename from js/src/dropdown.js
rename to js/src/menu.js
index 2053b46dc7a5670d17cc2f32dd52380eae89c1bc..3689b3fdddf3d2f9a1d123ccef9d924b2cdb21b2 100644 (file)
@@ -1,6 +1,6 @@
 /**
  * --------------------------------------------------------------------------
- * Bootstrap dropdown.js
+ * Bootstrap menu.js
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  * --------------------------------------------------------------------------
  */
@@ -37,8 +37,8 @@ import {
  * Constants
  */
 
-const NAME = 'dropdown'
-const DATA_KEY = 'bs.dropdown'
+const NAME = 'menu'
+const DATA_KEY = 'bs.menu'
 const EVENT_KEY = `.${DATA_KEY}`
 const DATA_API_KEY = '.data-api'
 
@@ -54,7 +54,6 @@ const ENTER_KEY = 'Enter'
 const SPACE_KEY = ' '
 const RIGHT_MOUSE_BUTTON = 2
 
-// Hover intent delay (ms) - grace period before closing submenu
 const SUBMENU_CLOSE_DELAY = 100
 
 const EVENT_HIDE = `hide${EVENT_KEY}`
@@ -67,30 +66,25 @@ const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`
 
 const CLASS_NAME_SHOW = 'show'
 
-const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)'
-const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`
-const SELECTOR_MENU = '.dropdown-menu'
-const SELECTOR_SUBMENU = '.dropdown-submenu'
-const SELECTOR_SUBMENU_TOGGLE = '.dropdown-submenu > .dropdown-item'
+const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="menu"]:not(.disabled):not(:disabled)'
+
+const SELECTOR_MENU = '.menu'
+const SELECTOR_SUBMENU = '.submenu'
+const SELECTOR_SUBMENU_TOGGLE = '.submenu > .menu-item'
 const SELECTOR_NAVBAR_NAV = '.navbar-nav'
-const SELECTOR_VISIBLE_ITEMS = '.dropdown-item:not(.disabled):not(:disabled)'
+const SELECTOR_VISIBLE_ITEMS = '.menu-item:not(.disabled):not(:disabled)'
 
-// Default logical placement (uses start/end which get resolved to left/right based on RTL)
 const DEFAULT_PLACEMENT = 'bottom-start'
 const SUBMENU_PLACEMENT = 'end-start'
 
-// Resolve logical placement (start/end) to physical (left/right) based on RTL
 const resolveLogicalPlacement = placement => {
   if (isRTL()) {
-    // RTL: start → right, end → left
     return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left')
   }
 
-  // LTR: start → left, end → right
   return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right')
 }
 
-// Helper for barycentric coordinate calculation (point in triangle check)
 const triangleSign = (p1, p2, p3) =>
   ((p1.x - p3.x) * (p2.y - p3.y)) - ((p2.x - p3.x) * (p1.y - p3.y))
 
@@ -101,11 +95,11 @@ const Default = {
   display: 'dynamic',
   offset: [0, 2],
   floatingConfig: null,
+  menu: null,
   placement: DEFAULT_PLACEMENT,
   reference: 'toggle',
   strategy: 'absolute',
-  // Submenu options
-  submenuTrigger: 'both', // 'click', 'hover', or 'both'
+  submenuTrigger: 'both',
   submenuDelay: SUBMENU_CLOSE_DELAY
 }
 
@@ -116,6 +110,7 @@ const DefaultType = {
   display: 'string',
   offset: '(array|string|function)',
   floatingConfig: '(null|object|function)',
+  menu: '(null|element)',
   placement: 'string',
   reference: '(string|element|object)',
   strategy: 'string',
@@ -127,10 +122,12 @@ const DefaultType = {
  * Class definition
  */
 
-class Dropdown extends BaseComponent {
+class Menu extends BaseComponent {
+  static _openInstances = new Set()
+
   constructor(element, config) {
     if (typeof computePosition === 'undefined') {
-      throw new TypeError('Bootstrap\'s dropdowns require Floating UI (https://floating-ui.com)')
+      throw new TypeError('Bootstrap\'s menus require Floating UI (https://floating-ui.com)')
     }
 
     super(element, config)
@@ -138,24 +135,17 @@ class Dropdown extends BaseComponent {
     this._floatingCleanup = null
     this._mediaQueryListeners = []
     this._responsivePlacements = null
-    this._parent = this._element.parentNode // dropdown wrapper
-    this._isSubmenu = this._parent.classList.contains('dropdown-submenu')
-    this._openSubmenus = new Map() // Map of submenu element -> cleanup function
-    this._submenuCloseTimeouts = new Map() // Map of submenu element -> timeout ID
-    this._hoverIntentData = null // For safe triangle calculation
-
-    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
-    this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||
-      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||
-      SelectorEngine.findOne(SELECTOR_MENU, this._parent)
+    this._parent = this._element.parentNode
+    this._isSubmenu = this._parent.classList?.contains('submenu')
+    this._openSubmenus = new Map()
+    this._submenuCloseTimeouts = new Map()
+    this._hoverIntentData = null
+
+    this._menu = this._config.menu || this._findMenu()
 
-    // Store original menu parent for container option
     this._menuOriginalParent = this._menu?.parentNode
 
-    // Parse responsive placements on init
     this._parseResponsivePlacements()
-
-    // Set up submenu event listeners
     this._setupSubmenuListeners()
   }
 
@@ -192,27 +182,26 @@ class Dropdown extends BaseComponent {
       return
     }
 
-    // Move menu to container if specified (to escape overflow clipping)
     this._moveMenuToContainer()
-
     this._createFloating()
 
-    // If this is a touch-enabled device we add extra
-    // empty mouseover listeners to the body's immediate children;
-    // only needed because of broken event delegation on iOS
-    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
     if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {
       for (const element of [].concat(...document.body.children)) {
         EventHandler.on(element, 'mouseover', noop)
       }
     }
 
-    this._element.focus()
+    this._element.focus({ focusVisible: false })
     this._element.setAttribute('aria-expanded', 'true')
 
     this._menu.classList.add(CLASS_NAME_SHOW)
     this._element.classList.add(CLASS_NAME_SHOW)
-    this._parent.classList.add(CLASS_NAME_SHOW)
+
+    if (this._parent) {
+      this._parent.classList.add(CLASS_NAME_SHOW)
+    }
+
+    Menu._openInstances.add(this)
     EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)
   }
 
@@ -234,6 +223,7 @@ class Dropdown extends BaseComponent {
     this._disposeMediaQueryListeners()
     this._closeAllSubmenus()
     this._clearAllSubmenuTimeouts()
+    Menu._openInstances.delete(this)
     super.dispose()
   }
 
@@ -244,17 +234,20 @@ class Dropdown extends BaseComponent {
   }
 
   // Private
+  _findMenu() {
+    return SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||
+      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||
+      SelectorEngine.findOne(SELECTOR_MENU, this._parent)
+  }
+
   _completeHide(relatedTarget) {
     const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)
     if (hideEvent.defaultPrevented) {
       return
     }
 
-    // Close all open submenus first
     this._closeAllSubmenus()
 
-    // If this is a touch-enabled device we remove the extra
-    // empty mouseover listeners we added for iOS support
     if ('ontouchstart' in document.documentElement) {
       for (const element of [].concat(...document.body.children)) {
         EventHandler.off(element, 'mouseover', noop)
@@ -262,16 +255,19 @@ class Dropdown extends BaseComponent {
     }
 
     this._disposeFloating()
-
-    // Restore menu to original parent if it was moved
     this._restoreMenuToOriginalParent()
 
     this._menu.classList.remove(CLASS_NAME_SHOW)
     this._element.classList.remove(CLASS_NAME_SHOW)
-    this._parent.classList.remove(CLASS_NAME_SHOW)
+
+    if (this._parent) {
+      this._parent.classList.remove(CLASS_NAME_SHOW)
+    }
+
     this._element.setAttribute('aria-expanded', 'false')
     Manipulator.removeDataAttribute(this._menu, 'placement')
     Manipulator.removeDataAttribute(this._menu, 'display')
+    Menu._openInstances.delete(this)
     EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)
   }
 
@@ -281,7 +277,6 @@ class Dropdown extends BaseComponent {
     if (typeof config.reference === 'object' && !isElement(config.reference) &&
       typeof config.reference.getBoundingClientRect !== 'function'
     ) {
-      // Floating UI virtual elements require a getBoundingClientRect method
       throw new TypeError(`${NAME.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`)
     }
 
@@ -304,10 +299,8 @@ class Dropdown extends BaseComponent {
       referenceElement = this._config.reference
     }
 
-    // Initial position update
     this._updateFloatingPosition(referenceElement)
 
-    // Set up auto-update for scroll/resize
     this._floatingCleanup = autoUpdate(
       referenceElement,
       this._menu,
@@ -350,12 +343,10 @@ class Dropdown extends BaseComponent {
   }
 
   _getPlacement() {
-    // If we have responsive placements, find the appropriate one for current viewport
     const placement = this._responsivePlacements ?
       getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) :
       this._config.placement
 
-    // Resolve logical placements (start/end) to physical (left/right) based on RTL
     return resolveLogicalPlacement(placement)
   }
 
@@ -389,7 +380,6 @@ class Dropdown extends BaseComponent {
     }
 
     if (typeof offsetConfig === 'function') {
-      // Floating UI passes different args, adapt the interface for offset function callbacks
       return ({ placement, rects }) => {
         const result = offsetConfig({ placement, reference: rects.reference, floating: rects.floating }, this._element)
         return result
@@ -403,17 +393,14 @@ class Dropdown extends BaseComponent {
     const offsetValue = this._getOffset()
 
     const middleware = [
-      // Offset middleware - handles distance from reference
       offset(
         typeof offsetValue === 'function' ?
           offsetValue :
           { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }
       ),
-      // Flip middleware - handles fallback placements
       flip({
         fallbackPlacements: this._getFallbackPlacements()
       }),
-      // Shift middleware - prevents overflow
       shift({
         boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary
       })
@@ -423,11 +410,8 @@ class Dropdown extends BaseComponent {
   }
 
   _getFallbackPlacements() {
-    // Get appropriate fallback placements based on current placement
-    // Fallbacks should preserve alignment (start/end) when possible
     const placement = this._getPlacement()
 
-    // Handle all possible Floating UI placements
     const fallbackMap = {
       bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],
       'bottom-start': ['top-start', 'bottom-end', 'top-end'],
@@ -481,7 +465,6 @@ class Dropdown extends BaseComponent {
       return
     }
 
-    // Only move if not already in the container
     if (this._menu.parentNode !== container) {
       container.append(this._menu)
     }
@@ -492,13 +475,11 @@ class Dropdown extends BaseComponent {
       return
     }
 
-    // Only restore if menu was moved
     if (this._menu.parentNode !== this._menuOriginalParent) {
       this._menuOriginalParent.append(this._menu)
     }
   }
 
-  // Shared helper for positioning any floating element
   async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {
     if (!floating.isConnected) {
       return null
@@ -530,7 +511,6 @@ class Dropdown extends BaseComponent {
   // -------------------------------------------------------------------------
 
   _setupSubmenuListeners() {
-    // Set up hover listeners for submenu triggers
     if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {
       EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {
         this._onSubmenuTriggerEnter(event)
@@ -540,13 +520,11 @@ class Dropdown extends BaseComponent {
         this._onSubmenuLeave(event)
       })
 
-      // Track mouse movement for safe triangle calculation
       EventHandler.on(this._menu, 'mousemove', event => {
         this._trackMousePosition(event)
       })
     }
 
-    // Set up click listener for submenu triggers
     if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {
       EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {
         this._onSubmenuTriggerClick(event)
@@ -566,13 +544,8 @@ class Dropdown extends BaseComponent {
       return
     }
 
-    // Cancel any pending close timeout for this submenu
     this._cancelSubmenuCloseTimeout(submenu)
-
-    // Close other open submenus at the same level
     this._closeSiblingSubmenus(submenuWrapper)
-
-    // Open this submenu
     this._openSubmenu(trigger, submenu, submenuWrapper)
   }
 
@@ -583,12 +556,10 @@ class Dropdown extends BaseComponent {
       return
     }
 
-    // Check if we're moving toward the submenu (safe triangle)
     if (this._isMovingTowardSubmenu(event, submenu)) {
       return
     }
 
-    // Schedule submenu close with delay
     this._scheduleSubmenuClose(submenu, submenuWrapper)
   }
 
@@ -607,7 +578,6 @@ class Dropdown extends BaseComponent {
       return
     }
 
-    // Toggle submenu
     if (this._openSubmenus.has(submenu)) {
       this._closeSubmenu(submenu, submenuWrapper)
     } else {
@@ -621,19 +591,15 @@ class Dropdown extends BaseComponent {
       return
     }
 
-    // Set ARIA attributes
     trigger.setAttribute('aria-expanded', 'true')
     trigger.setAttribute('aria-haspopup', 'true')
 
-    // Position and show submenu
     submenu.classList.add(CLASS_NAME_SHOW)
     submenuWrapper.classList.add(CLASS_NAME_SHOW)
 
-    // Set up Floating UI positioning for submenu
     const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper)
     this._openSubmenus.set(submenu, cleanup)
 
-    // Set up mouseenter on submenu to cancel close timeout
     EventHandler.on(submenu, 'mouseenter', () => {
       this._cancelSubmenuCloseTimeout(submenu)
     })
@@ -644,28 +610,22 @@ class Dropdown extends BaseComponent {
       return
     }
 
-    // Close any nested submenus first
     const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, submenu)
     for (const nested of nestedSubmenus) {
       const nestedWrapper = nested.closest(SELECTOR_SUBMENU)
       this._closeSubmenu(nested, nestedWrapper)
     }
 
-    // Get the trigger
     const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper)
 
-    // Clean up Floating UI
     const cleanup = this._openSubmenus.get(submenu)
     if (cleanup) {
       cleanup()
     }
 
     this._openSubmenus.delete(submenu)
-
-    // Remove event listeners
     EventHandler.off(submenu, 'mouseenter')
 
-    // Update ARIA and visibility
     if (trigger) {
       trigger.setAttribute('aria-expanded', 'false')
     }
@@ -673,7 +633,6 @@ class Dropdown extends BaseComponent {
     submenu.classList.remove(CLASS_NAME_SHOW)
     submenuWrapper.classList.remove(CLASS_NAME_SHOW)
 
-    // Clear inline styles
     submenu.style.position = ''
     submenu.style.left = ''
     submenu.style.top = ''
@@ -688,7 +647,6 @@ class Dropdown extends BaseComponent {
   }
 
   _closeSiblingSubmenus(currentSubmenuWrapper) {
-    // Find all sibling submenu wrappers and close their menus
     const parent = currentSubmenuWrapper.parentNode
     const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, parent)
 
@@ -769,22 +727,15 @@ class Dropdown extends BaseComponent {
     const currentPos = { x: event.clientX, y: event.clientY }
     const lastPos = { x: this._hoverIntentData.x, y: this._hoverIntentData.y }
 
-    // Create a triangle from current position to submenu edges
-    // The triangle represents the "safe zone" for diagonal movement
     const isRtl = isRTL()
-
-    // Determine which edge of the submenu to target based on direction
     const targetX = isRtl ? submenuRect.right : submenuRect.left
     const topCorner = { x: targetX, y: submenuRect.top }
     const bottomCorner = { x: targetX, y: submenuRect.bottom }
 
-    // Check if cursor is moving toward the submenu
-    // by checking if the current position is within the safe triangle
     return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner)
   }
 
   _pointInTriangle(point, v1, v2, v3) {
-    // Barycentric coordinate method to check if point is inside triangle
     const d1 = triangleSign(point, v1, v2)
     const d2 = triangleSign(point, v2, v3)
     const d3 = triangleSign(point, v3, v1)
@@ -800,18 +751,14 @@ class Dropdown extends BaseComponent {
   // -------------------------------------------------------------------------
 
   _selectMenuItem({ key, target }) {
-    // Get items only from the current menu level (not nested submenus)
-    // If target is inside a menu, use that menu; otherwise use the main menu
     const currentMenu = target.closest(SELECTOR_MENU) || this._menu
-    const items = SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)
+    const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)
       .filter(element => isVisible(element))
 
     if (!items.length) {
       return
     }
 
-    // if target isn't included in items (e.g. when expanding the dropdown)
-    // allow cycling to get the last item in case key equals ARROW_UP_KEY
     getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()
   }
 
@@ -819,15 +766,12 @@ class Dropdown extends BaseComponent {
     const { key, target } = event
     const isRtl = isRTL()
 
-    // Determine the "enter submenu" and "exit submenu" keys based on RTL
     const enterKey = isRtl ? ARROW_LEFT_KEY : ARROW_RIGHT_KEY
     const exitKey = isRtl ? ARROW_RIGHT_KEY : ARROW_LEFT_KEY
 
-    // Check if target is a submenu trigger
     const submenuWrapper = target.closest(SELECTOR_SUBMENU)
     const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE)
 
-    // Handle Enter/Space on submenu trigger
     if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {
       event.preventDefault()
       event.stopPropagation()
@@ -836,7 +780,6 @@ class Dropdown extends BaseComponent {
       if (submenu) {
         this._closeSiblingSubmenus(submenuWrapper)
         this._openSubmenu(target, submenu, submenuWrapper)
-        // Focus first item in submenu
         requestAnimationFrame(() => {
           const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)
           if (firstItem) {
@@ -848,7 +791,6 @@ class Dropdown extends BaseComponent {
       return true
     }
 
-    // Handle Right arrow (or Left in RTL) - enter submenu
     if (key === enterKey && isSubmenuTrigger) {
       event.preventDefault()
       event.stopPropagation()
@@ -857,7 +799,6 @@ class Dropdown extends BaseComponent {
       if (submenu) {
         this._closeSiblingSubmenus(submenuWrapper)
         this._openSubmenu(target, submenu, submenuWrapper)
-        // Focus first item in submenu
         requestAnimationFrame(() => {
           const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)
           if (firstItem) {
@@ -869,7 +810,6 @@ class Dropdown extends BaseComponent {
       return true
     }
 
-    // Handle Left arrow (or Right in RTL) - exit submenu
     if (key === exitKey) {
       const currentMenu = target.closest(SELECTOR_MENU)
       const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)
@@ -888,13 +828,12 @@ class Dropdown extends BaseComponent {
       }
     }
 
-    // Handle Home/End keys
     if (key === HOME_KEY || key === END_KEY) {
       event.preventDefault()
       event.stopPropagation()
 
       const currentMenu = target.closest(SELECTOR_MENU)
-      const items = SelectorEngine.find(`:scope > li > ${SELECTOR_VISIBLE_ITEMS}, :scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)
+      const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)
         .filter(element => isVisible(element))
 
       if (items.length) {
@@ -913,41 +852,36 @@ class Dropdown extends BaseComponent {
       return
     }
 
-    const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)
-
-    for (const toggle of openToggles) {
-      const context = Dropdown.getInstance(toggle)
-      if (!context || context._config.autoClose === false) {
+    for (const instance of Menu._openInstances) {
+      if (instance._config.autoClose === false) {
         continue
       }
 
       const composedPath = event.composedPath()
-      const isMenuTarget = composedPath.includes(context._menu)
+      const isMenuTarget = composedPath.includes(instance._menu)
       if (
-        composedPath.includes(context._element) ||
-        (context._config.autoClose === 'inside' && !isMenuTarget) ||
-        (context._config.autoClose === 'outside' && isMenuTarget)
+        composedPath.includes(instance._element) ||
+        (instance._config.autoClose === 'inside' && !isMenuTarget) ||
+        (instance._config.autoClose === 'outside' && isMenuTarget)
       ) {
         continue
       }
 
-      // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
-      if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {
+      if (instance._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {
         continue
       }
 
-      const relatedTarget = { relatedTarget: context._element }
+      const relatedTarget = { relatedTarget: instance._element }
 
       if (event.type === 'click') {
         relatedTarget.clickEvent = event
       }
 
-      context._completeHide(relatedTarget)
+      instance._completeHide(relatedTarget)
     }
   }
 
   static dataApiKeydownHandler(event) {
-    // If not a relevant key => not a dropdown command
     const isInput = /input|textarea/i.test(event.target.tagName)
     const isEscapeEvent = event.key === ESCAPE_KEY
     const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)
@@ -955,7 +889,6 @@ class Dropdown extends BaseComponent {
     const isHomeOrEndEvent = [HOME_KEY, END_KEY].includes(event.key)
     const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key)
 
-    // Allow Enter/Space only on submenu triggers
     const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE)
 
     if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent &&
@@ -967,7 +900,6 @@ class Dropdown extends BaseComponent {
       return
     }
 
-    // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
     const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?
       this :
       (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||
@@ -978,14 +910,12 @@ class Dropdown extends BaseComponent {
       return
     }
 
-    const instance = Dropdown.getOrCreateInstance(getToggleButton)
+    const instance = Menu.getOrCreateInstance(getToggleButton)
 
-    // Handle submenu navigation first
     if ((isLeftOrRightEvent || isHomeOrEndEvent || (isEnterOrSpaceEvent && isSubmenuTrigger)) && instance._handleSubmenuKeydown(event)) {
       return
     }
 
-    // Handle Up/Down navigation
     if (isUpOrDownEvent) {
       event.preventDefault()
       event.stopPropagation()
@@ -994,12 +924,10 @@ class Dropdown extends BaseComponent {
       return
     }
 
-    // Handle Escape
     if (isEscapeEvent && instance._isShown()) {
       event.preventDefault()
       event.stopPropagation()
 
-      // If in a submenu, close just that submenu
       const currentMenu = event.target.closest(SELECTOR_MENU)
       const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)
 
@@ -1013,7 +941,6 @@ class Dropdown extends BaseComponent {
         return
       }
 
-      // Otherwise close the whole dropdown
       instance.hide()
       getToggleButton.focus()
     }
@@ -1024,13 +951,13 @@ class Dropdown extends BaseComponent {
  * Data API implementation
  */
 
-EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)
-EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)
-EventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)
-EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)
+EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Menu.dataApiKeydownHandler)
+EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Menu.dataApiKeydownHandler)
+EventHandler.on(document, EVENT_CLICK_DATA_API, Menu.clearMenus)
+EventHandler.on(document, EVENT_KEYUP_DATA_API, Menu.clearMenus)
 EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
   event.preventDefault()
-  Dropdown.getOrCreateInstance(this).toggle()
+  Menu.getOrCreateInstance(this).toggle()
 })
 
-export default Dropdown
+export default Menu
index 7e0ef54c70254192b76e9e920f5dcd1f780ea882..a6dd37021aca530d7bfd070df34568d70e6c6759 100644 (file)
@@ -108,7 +108,7 @@ class NavOverflow extends BaseComponent {
       item.dataset.bsNavOrder = index
     }
 
-    // Create overflow dropdown if it doesn't exist
+    // Create overflow menu if it doesn't exist
     this._createOverflowMenu()
 
     // Setup resize observer
@@ -129,15 +129,14 @@ class NavOverflow extends BaseComponent {
       return
     }
 
-    // Create the overflow dropdown item
     const overflowItem = document.createElement('li')
-    overflowItem.className = 'nav-item nav-overflow-item dropdown'
+    overflowItem.className = 'nav-item nav-overflow-item'
     overflowItem.innerHTML = `
-      <button class="nav-link nav-overflow-toggle dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-container="body" data-bs-strategy="fixed" aria-expanded="false">
+      <button class="nav-link nav-overflow-toggle" type="button" data-bs-toggle="menu" data-bs-placement="bottom-end" aria-expanded="false">
         <span class="nav-overflow-icon">${this._config.moreIcon}</span>
         <span class="nav-overflow-text">${this._config.moreText}</span>
       </button>
-      <ul class="${CLASS_NAME_OVERFLOW_MENU} dropdown-menu dropdown-menu-end"></ul>
+      <div class="${CLASS_NAME_OVERFLOW_MENU} menu"></div>
     `
 
     this._element.append(overflowItem)
@@ -226,28 +225,23 @@ class NavOverflow extends BaseComponent {
     this._overflowItems = []
 
     for (const item of items) {
-      // Clone the nav link as a dropdown item
       const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item)
       if (!link) {
         continue
       }
 
-      const dropdownItem = document.createElement('li')
       const clonedLink = link.cloneNode(true)
-      clonedLink.className = 'dropdown-item'
+      clonedLink.className = 'menu-item'
 
-      // Preserve active state
       if (link.classList.contains('active')) {
         clonedLink.classList.add('active')
       }
 
-      // Preserve disabled state
       if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {
         clonedLink.classList.add('disabled')
       }
 
-      dropdownItem.append(clonedLink)
-      this._overflowMenu.append(dropdownItem)
+      this._overflowMenu.append(clonedLink)
 
       // Hide original item
       item.classList.add(CLASS_NAME_HIDDEN)
index 0fa98d88efc4d2877e917ebd926583e638f49ab2..2ae9464cfbfa279d1b1fb09b2052e21fa54284e6 100644 (file)
@@ -25,7 +25,7 @@ const EVENT_ACTIVATE = `activate${EVENT_KEY}`
 const EVENT_CLICK = `click${EVENT_KEY}`
 const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`
 
-const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'
+const CLASS_NAME_MENU_ITEM = 'menu-item'
 const CLASS_NAME_ACTIVE = 'active'
 
 const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'
@@ -35,8 +35,7 @@ const SELECTOR_NAV_LINKS = '.nav-link'
 const SELECTOR_NAV_ITEMS = '.nav-item'
 const SELECTOR_LIST_ITEMS = '.list-group-item'
 const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`
-const SELECTOR_DROPDOWN = '.dropdown'
-const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'
+const SELECTOR_MENU_TOGGLE = '[data-bs-toggle="menu"]'
 
 const Default = {
   rootMargin: '0px 0px -25%',
@@ -228,10 +227,13 @@ class ScrollSpy extends BaseComponent {
   }
 
   _activateParents(target) {
-    // Activate dropdown parents
-    if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
-      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))
-        .classList.add(CLASS_NAME_ACTIVE)
+    // Activate menu parents
+    if (target.classList.contains(CLASS_NAME_MENU_ITEM)) {
+      const menuToggle = target.closest('.menu')?.previousElementSibling
+      if (menuToggle?.matches(SELECTOR_MENU_TOGGLE)) {
+        menuToggle.classList.add(CLASS_NAME_ACTIVE)
+      }
+
       return
     }
 
index 2f8c3433054fc2cb64e5721f9cc28d535b527b2f..b32e08236ff93ad0b1a72f398a9d4ec6e69badcb 100644 (file)
@@ -36,15 +36,13 @@ const END_KEY = 'End'
 const CLASS_NAME_ACTIVE = 'active'
 const CLASS_NAME_FADE = 'fade'
 const CLASS_NAME_SHOW = 'show'
-const CLASS_DROPDOWN = 'dropdown'
-
-const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'
-const SELECTOR_DROPDOWN_MENU = '.dropdown-menu'
-const NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`
+const SELECTOR_MENU_TOGGLE = '[data-bs-toggle="menu"]'
+const SELECTOR_MENU = '.menu'
+const NOT_SELECTOR_MENU_TOGGLE = `:not(${SELECTOR_MENU_TOGGLE})`
 
 const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]'
 const SELECTOR_OUTER = '.nav-item, .list-group-item'
-const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`
+const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role="tab"]${NOT_SELECTOR_MENU_TOGGLE}`
 const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]' // TODO: could only be `tab` in v6
 const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`
 
@@ -118,7 +116,7 @@ class Tab extends BaseComponent {
 
       element.removeAttribute('tabindex')
       element.setAttribute('aria-selected', true)
-      this._toggleDropDown(element, true)
+      this._toggleMenu(element, true)
       EventHandler.trigger(element, EVENT_SHOWN, {
         relatedTarget: relatedElem
       })
@@ -145,7 +143,7 @@ class Tab extends BaseComponent {
 
       element.setAttribute('aria-selected', false)
       element.setAttribute('tabindex', '-1')
-      this._toggleDropDown(element, false)
+      this._toggleMenu(element, false)
       EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })
     }
 
@@ -226,22 +224,21 @@ class Tab extends BaseComponent {
     }
   }
 
-  _toggleDropDown(element, open) {
+  _toggleMenu(element, open) {
     const outerElem = this._getOuterElement(element)
-    if (!outerElem.classList.contains(CLASS_DROPDOWN)) {
+    const menuToggle = SelectorEngine.findOne(SELECTOR_MENU_TOGGLE, outerElem)
+    if (!menuToggle) {
       return
     }
 
-    const toggle = (selector, className) => {
-      const element = SelectorEngine.findOne(selector, outerElem)
-      if (element) {
-        element.classList.toggle(className, open)
-      }
+    const menu = SelectorEngine.findOne(SELECTOR_MENU, outerElem)
+
+    menuToggle.classList.toggle(CLASS_NAME_ACTIVE, open)
+    if (menu) {
+      menu.classList.toggle(CLASS_NAME_SHOW, open)
     }
 
-    toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)
-    toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)
-    outerElem.setAttribute('aria-expanded', open)
+    menuToggle.setAttribute('aria-expanded', open)
   }
 
   _setAttributeIfNotExists(element, attribute, value) {
diff --git a/js/tests/unit/dropdown.spec.js b/js/tests/unit/dropdown.spec.js
deleted file mode 100644 (file)
index 9b79de4..0000000
+++ /dev/null
@@ -1,4035 +0,0 @@
-import EventHandler from '../../src/dom/event-handler.js'
-import Dropdown from '../../src/dropdown.js'
-import { noop } from '../../src/util/index.js'
-import {
-  clearFixture, createEvent, getFixture
-} from '../helpers/fixture.js'
-
-describe('Dropdown', () => {
-  let fixtureEl
-
-  beforeAll(() => {
-    fixtureEl = getFixture()
-  })
-
-  afterEach(() => {
-    clearFixture()
-  })
-
-  describe('VERSION', () => {
-    it('should return plugin version', () => {
-      expect(Dropdown.VERSION).toEqual(jasmine.any(String))
-    })
-  })
-
-  describe('Default', () => {
-    it('should return plugin default config', () => {
-      expect(Dropdown.Default).toEqual(jasmine.any(Object))
-    })
-  })
-
-  describe('DefaultType', () => {
-    it('should return plugin default type config', () => {
-      expect(Dropdown.DefaultType).toEqual(jasmine.any(Object))
-    })
-  })
-
-  describe('DATA_KEY', () => {
-    it('should return plugin data key', () => {
-      expect(Dropdown.DATA_KEY).toEqual('bs.dropdown')
-    })
-  })
-
-  describe('constructor', () => {
-    it('should take care of element either passed as a CSS selector or DOM element', () => {
-      fixtureEl.innerHTML = [
-        '<div class="dropdown">',
-        '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-        '  <div class="dropdown-menu">',
-        '    <a class="dropdown-item" href="#">Link</a>',
-        '  </div>',
-        '</div>'
-      ].join('')
-
-      const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-      const dropdownBySelector = new Dropdown('[data-bs-toggle="dropdown"]')
-      const dropdownByElement = new Dropdown(btnDropdown)
-
-      expect(dropdownBySelector._element).toEqual(btnDropdown)
-      expect(dropdownByElement._element).toEqual(btnDropdown)
-    })
-
-    it('should create offset modifier correctly when offset option is a function', async () => {
-      fixtureEl.innerHTML = [
-        '<div class="dropdown">',
-        '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-        '  <div class="dropdown-menu">',
-        '    <a class="dropdown-item" href="#">Secondary link</a>',
-        '  </div>',
-        '</div>'
-      ].join('')
-
-      const getOffset = jasmine.createSpy('getOffset').and.returnValue([10, 20])
-      const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-      const dropdown = new Dropdown(btnDropdown, {
-        offset: getOffset
-      })
-
-      const offset = dropdown._getOffset()
-      expect(typeof offset).toEqual('function')
-
-      const shownPromise = new Promise(resolve => {
-        btnDropdown.addEventListener('shown.bs.dropdown', resolve)
-      })
-
-      dropdown.show()
-      await shownPromise
-
-      // Floating UI calls offset function asynchronously
-      await new Promise(resolve => {
-        setTimeout(resolve, 20)
-      })
-      expect(getOffset).toHaveBeenCalled()
-    })
-
-    it('should create offset modifier correctly when offset option is a string into data attribute', () => {
-      fixtureEl.innerHTML = [
-        '<div class="dropdown">',
-        '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" data-bs-offset="10,20">Dropdown</button>',
-        '  <div class="dropdown-menu">',
-        '    <a class="dropdown-item" href="#">Secondary link</a>',
-        '  </div>',
-        '</div>'
-      ].join('')
-
-      const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-      const dropdown = new Dropdown(btnDropdown)
-
-      expect(dropdown._getOffset()).toEqual([10, 20])
-    })
-
-    it('should allow to pass config to Floating UI with `floatingConfig`', () => {
-      fixtureEl.innerHTML = [
-        '<div class="dropdown">',
-        '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-        '  <div class="dropdown-menu">',
-        '    <a class="dropdown-item" href="#">Secondary link</a>',
-        '  </div>',
-        '</div>'
-      ].join('')
-
-      const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-      const dropdown = new Dropdown(btnDropdown, {
-        floatingConfig: {
-          placement: 'left'
-        }
-      })
-
-      const floatingConfig = dropdown._getFloatingConfig('bottom-start', [])
-
-      expect(floatingConfig.placement).toEqual('left')
-    })
-
-    it('should allow to pass config to Floating UI with `floatingConfig` as a function', () => {
-      fixtureEl.innerHTML = [
-        '<div class="dropdown">',
-        '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" data-bs-placement="right">Dropdown</button>',
-        '  <div class="dropdown-menu">',
-        '    <a class="dropdown-item" href="#">Secondary link</a>',
-        '  </div>',
-        '</div>'
-      ].join('')
-
-      const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-      const getFloatingConfig = jasmine.createSpy('getFloatingConfig').and.returnValue({ placement: 'left' })
-      const dropdown = new Dropdown(btnDropdown, {
-        floatingConfig: getFloatingConfig
-      })
-
-      const floatingConfig = dropdown._getFloatingConfig('bottom-start', [])
-
-      // Ensure that the function was called with the default config.
-      expect(getFloatingConfig).toHaveBeenCalledWith(jasmine.objectContaining({
-        placement: jasmine.any(String)
-      }))
-      expect(floatingConfig.placement).toEqual('left')
-    })
-  })
-
-  describe('toggle', () => {
-    it('should toggle a dropdown', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          expect(btnDropdown).toHaveClass('show')
-          expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
-          resolve()
-        })
-
-        dropdown.toggle()
-      })
-    })
-
-    it('should destroy old Floating UI references on toggle', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="first dropdown">',
-          '  <button class="firstBtn btn" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>',
-          '<div class="second dropdown">',
-          '  <button class="secondBtn btn" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown1 = fixtureEl.querySelector('.firstBtn')
-        const btnDropdown2 = fixtureEl.querySelector('.secondBtn')
-        const firstDropdownEl = fixtureEl.querySelector('.first')
-        const secondDropdownEl = fixtureEl.querySelector('.second')
-        const dropdown1 = new Dropdown(btnDropdown1)
-
-        firstDropdownEl.addEventListener('shown.bs.dropdown', () => {
-          expect(btnDropdown1).toHaveClass('show')
-          expect(dropdown1._floatingCleanup).not.toBeNull()
-          btnDropdown2.click()
-        })
-
-        secondDropdownEl.addEventListener('shown.bs.dropdown', () => setTimeout(() => {
-          expect(dropdown1._floatingCleanup).toBeNull()
-          resolve()
-        }))
-
-        dropdown1.toggle()
-      })
-    })
-
-    it('should toggle a dropdown and add/remove event listener on mobile', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const defaultValueOnTouchStart = document.documentElement.ontouchstart
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-
-        document.documentElement.ontouchstart = noop
-        const spy = spyOn(EventHandler, 'on')
-        const spyOff = spyOn(EventHandler, 'off')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          expect(btnDropdown).toHaveClass('show')
-          expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
-          expect(spy).toHaveBeenCalledWith(jasmine.any(Object), 'mouseover', noop)
-
-          dropdown.toggle()
-        })
-
-        btnDropdown.addEventListener('hidden.bs.dropdown', () => {
-          expect(btnDropdown).not.toHaveClass('show')
-          expect(btnDropdown.getAttribute('aria-expanded')).toEqual('false')
-          expect(spyOff).toHaveBeenCalledWith(jasmine.any(Object), 'mouseover', noop)
-
-          document.documentElement.ontouchstart = defaultValueOnTouchStart
-          resolve()
-        })
-
-        dropdown.toggle()
-      })
-    })
-
-    it('should toggle a dropdown at the right', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>',
-          '  <div class="dropdown-menu dropdown-menu-end">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          expect(btnDropdown).toHaveClass('show')
-          expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
-          resolve()
-        })
-
-        dropdown.toggle()
-      })
-    })
-
-    it('should toggle a centered dropdown', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown-center">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          expect(btnDropdown).toHaveClass('show')
-          expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
-          resolve()
-        })
-
-        dropdown.toggle()
-      })
-    })
-
-    it('should toggle a dropup', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropup">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropupEl = fixtureEl.querySelector('.dropup')
-        const dropdown = new Dropdown(btnDropdown)
-
-        dropupEl.addEventListener('shown.bs.dropdown', () => {
-          expect(btnDropdown).toHaveClass('show')
-          expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
-          resolve()
-        })
-
-        dropdown.toggle()
-      })
-    })
-
-    it('should toggle a dropup centered', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropup-center">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropupEl = fixtureEl.querySelector('.dropup-center')
-        const dropdown = new Dropdown(btnDropdown)
-
-        dropupEl.addEventListener('shown.bs.dropdown', () => {
-          expect(btnDropdown).toHaveClass('show')
-          expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
-          resolve()
-        })
-
-        dropdown.toggle()
-      })
-    })
-
-    it('should toggle a dropup at the right', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropup">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>',
-          '  <div class="dropdown-menu dropdown-menu-end">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropupEl = fixtureEl.querySelector('.dropup')
-        const dropdown = new Dropdown(btnDropdown)
-
-        dropupEl.addEventListener('shown.bs.dropdown', () => {
-          expect(btnDropdown).toHaveClass('show')
-          expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
-          resolve()
-        })
-
-        dropdown.toggle()
-      })
-    })
-
-    it('should toggle a dropend', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropend">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropendEl = fixtureEl.querySelector('.dropend')
-        const dropdown = new Dropdown(btnDropdown)
-
-        dropendEl.addEventListener('shown.bs.dropdown', () => {
-          expect(btnDropdown).toHaveClass('show')
-          expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
-          resolve()
-        })
-
-        dropdown.toggle()
-      })
-    })
-
-    it('should toggle a dropstart', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropstart">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropstartEl = fixtureEl.querySelector('.dropstart')
-        const dropdown = new Dropdown(btnDropdown)
-
-        dropstartEl.addEventListener('shown.bs.dropdown', () => {
-          expect(btnDropdown).toHaveClass('show')
-          expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
-          resolve()
-        })
-
-        dropdown.toggle()
-      })
-    })
-
-    it('should toggle a dropdown with parent reference', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown, {
-          reference: 'parent'
-        })
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          expect(btnDropdown).toHaveClass('show')
-          expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
-          resolve()
-        })
-
-        dropdown.toggle()
-      })
-    })
-
-    it('should toggle a dropdown with a dom node reference', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown, {
-          reference: fixtureEl
-        })
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          expect(btnDropdown).toHaveClass('show')
-          expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
-          resolve()
-        })
-
-        dropdown.toggle()
-      })
-    })
-
-    it('should toggle a dropdown with a valid virtual element reference', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle visually-hidden" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const virtualElement = {
-          nodeType: 1,
-          getBoundingClientRect() {
-            return {
-              width: 0,
-              height: 0,
-              top: 0,
-              right: 0,
-              bottom: 0,
-              left: 0
-            }
-          }
-        }
-
-        expect(() => new Dropdown(btnDropdown, {
-          reference: {}
-        })).toThrowError(TypeError, 'DROPDOWN: Option "reference" provided type "object" without a required "getBoundingClientRect" method.')
-
-        expect(() => new Dropdown(btnDropdown, {
-          reference: {
-            getBoundingClientRect: 'not-a-function'
-          }
-        })).toThrowError(TypeError, 'DROPDOWN: Option "reference" provided type "object" without a required "getBoundingClientRect" method.')
-
-        const dropdown = new Dropdown(btnDropdown, {
-          reference: virtualElement
-        })
-
-        const spy = spyOn(virtualElement, 'getBoundingClientRect').and.callThrough()
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Floating UI calls getBoundingClientRect asynchronously
-          setTimeout(() => {
-            expect(spy).toHaveBeenCalled()
-            expect(btnDropdown).toHaveClass('show')
-            expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
-            resolve()
-          }, 20)
-        })
-
-        dropdown.toggle()
-      })
-    })
-
-    it('should not toggle a dropdown if the element is disabled', () => {
-      return new Promise((resolve, reject) => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button disabled class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          reject(new Error('should not throw shown.bs.dropdown event'))
-        })
-
-        dropdown.toggle()
-
-        setTimeout(() => {
-          expect().nothing()
-          resolve()
-        })
-      })
-    })
-
-    it('should not toggle a dropdown if the element contains .disabled', () => {
-      return new Promise((resolve, reject) => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle disabled" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          reject(new Error('should not throw shown.bs.dropdown event'))
-        })
-
-        dropdown.toggle()
-
-        setTimeout(() => {
-          expect().nothing()
-          resolve()
-        })
-      })
-    })
-
-    it('should not toggle a dropdown if the menu is shown', () => {
-      return new Promise((resolve, reject) => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu show">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          reject(new Error('should not throw shown.bs.dropdown event'))
-        })
-
-        dropdown.toggle()
-
-        setTimeout(() => {
-          expect().nothing()
-          resolve()
-        })
-      })
-    })
-
-    it('should not toggle a dropdown if show event is prevented', () => {
-      return new Promise((resolve, reject) => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('show.bs.dropdown', event => {
-          event.preventDefault()
-        })
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          reject(new Error('should not throw shown.bs.dropdown event'))
-        })
-
-        dropdown.toggle()
-
-        setTimeout(() => {
-          expect().nothing()
-          resolve()
-        })
-      })
-    })
-  })
-
-  describe('show', () => {
-    it('should show a dropdown', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          expect(btnDropdown).toHaveClass('show')
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should not show a dropdown if the element is disabled', () => {
-      return new Promise((resolve, reject) => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button disabled class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          reject(new Error('should not throw shown.bs.dropdown event'))
-        })
-
-        dropdown.show()
-
-        setTimeout(() => {
-          expect().nothing()
-          resolve()
-        }, 10)
-      })
-    })
-
-    it('should not show a dropdown if the element contains .disabled', () => {
-      return new Promise((resolve, reject) => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle disabled" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          reject(new Error('should not throw shown.bs.dropdown event'))
-        })
-
-        dropdown.show()
-
-        setTimeout(() => {
-          expect().nothing()
-          resolve()
-        }, 10)
-      })
-    })
-
-    it('should not show a dropdown if the menu is shown', () => {
-      return new Promise((resolve, reject) => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu show">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          reject(new Error('should not throw shown.bs.dropdown event'))
-        })
-
-        dropdown.show()
-
-        setTimeout(() => {
-          expect().nothing()
-          resolve()
-        }, 10)
-      })
-    })
-
-    it('should not show a dropdown if show event is prevented', () => {
-      return new Promise((resolve, reject) => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('show.bs.dropdown', event => {
-          event.preventDefault()
-        })
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          reject(new Error('should not throw shown.bs.dropdown event'))
-        })
-
-        dropdown.show()
-
-        setTimeout(() => {
-          expect().nothing()
-          resolve()
-        }, 10)
-      })
-    })
-
-    it('should move menu to body when container is set to body', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdownMenu = fixtureEl.querySelector('.dropdown-menu')
-        const dropdown = new Dropdown(btnDropdown, {
-          container: 'body'
-        })
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          expect(dropdownMenu.parentNode).toEqual(document.body)
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should move menu to body when container is set to true', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdownMenu = fixtureEl.querySelector('.dropdown-menu')
-        const dropdown = new Dropdown(btnDropdown, {
-          container: true
-        })
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          expect(dropdownMenu.parentNode).toEqual(document.body)
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should move menu to specified element when container is an element', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div id="custom-container"></div>',
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdownMenu = fixtureEl.querySelector('.dropdown-menu')
-        const customContainer = fixtureEl.querySelector('#custom-container')
-        const dropdown = new Dropdown(btnDropdown, {
-          container: customContainer
-        })
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          expect(dropdownMenu.parentNode).toEqual(customContainer)
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should restore menu to original parent when hidden', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdownMenu = fixtureEl.querySelector('.dropdown-menu')
-        const originalParent = dropdownMenu.parentNode
-        const dropdown = new Dropdown(btnDropdown, {
-          container: 'body'
-        })
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          expect(dropdownMenu.parentNode).toEqual(document.body)
-          dropdown.hide()
-        })
-
-        btnDropdown.addEventListener('hidden.bs.dropdown', () => {
-          expect(dropdownMenu.parentNode).toEqual(originalParent)
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should work with container via data attribute', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" data-bs-container="body">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdownMenu = fixtureEl.querySelector('.dropdown-menu')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          expect(dropdownMenu.parentNode).toEqual(document.body)
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-  })
-
-  describe('hide', () => {
-    it('should hide a dropdown', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="true">Dropdown</button>',
-          '  <div class="dropdown-menu show">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdownMenu = fixtureEl.querySelector('.dropdown-menu')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('hidden.bs.dropdown', () => {
-          expect(dropdownMenu).not.toHaveClass('show')
-          expect(btnDropdown.getAttribute('aria-expanded')).toEqual('false')
-          resolve()
-        })
-
-        dropdown.hide()
-      })
-    })
-
-    it('should hide a dropdown and cleanup Floating UI', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          expect(dropdown._floatingCleanup).not.toBeNull()
-          dropdown.hide()
-        })
-
-        btnDropdown.addEventListener('hidden.bs.dropdown', () => {
-          expect(dropdown._floatingCleanup).toBeNull()
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should not hide a dropdown if the element is disabled', () => {
-      return new Promise((resolve, reject) => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button disabled class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu show">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdownMenu = fixtureEl.querySelector('.dropdown-menu')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('hidden.bs.dropdown', () => {
-          reject(new Error('should not throw hidden.bs.dropdown event'))
-        })
-
-        dropdown.hide()
-
-        setTimeout(() => {
-          expect(dropdownMenu).toHaveClass('show')
-          resolve()
-        }, 10)
-      })
-    })
-
-    it('should not hide a dropdown if the element contains .disabled', () => {
-      return new Promise((resolve, reject) => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle disabled" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu show">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdownMenu = fixtureEl.querySelector('.dropdown-menu')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('hidden.bs.dropdown', () => {
-          reject(new Error('should not throw hidden.bs.dropdown event'))
-        })
-
-        dropdown.hide()
-
-        setTimeout(() => {
-          expect(dropdownMenu).toHaveClass('show')
-          resolve()
-        }, 10)
-      })
-    })
-
-    it('should not hide a dropdown if the menu is not shown', () => {
-      return new Promise((resolve, reject) => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('hidden.bs.dropdown', () => {
-          reject(new Error('should not throw hidden.bs.dropdown event'))
-        })
-
-        dropdown.hide()
-
-        setTimeout(() => {
-          expect().nothing()
-          resolve()
-        }, 10)
-      })
-    })
-
-    it('should not hide a dropdown if hide event is prevented', () => {
-      return new Promise((resolve, reject) => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu show">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdownMenu = fixtureEl.querySelector('.dropdown-menu')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('hide.bs.dropdown', event => {
-          event.preventDefault()
-        })
-
-        btnDropdown.addEventListener('hidden.bs.dropdown', () => {
-          reject(new Error('should not throw hidden.bs.dropdown event'))
-        })
-
-        dropdown.hide()
-
-        setTimeout(() => {
-          expect(dropdownMenu).toHaveClass('show')
-          resolve()
-        })
-      })
-    })
-
-    it('should remove event listener on touch-enabled device that was added in show method', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Dropdown item</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const defaultValueOnTouchStart = document.documentElement.ontouchstart
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-
-        document.documentElement.ontouchstart = noop
-        const spy = spyOn(EventHandler, 'off')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          dropdown.hide()
-        })
-
-        btnDropdown.addEventListener('hidden.bs.dropdown', () => {
-          expect(btnDropdown).not.toHaveClass('show')
-          expect(btnDropdown.getAttribute('aria-expanded')).toEqual('false')
-          expect(spy).toHaveBeenCalled()
-
-          document.documentElement.ontouchstart = defaultValueOnTouchStart
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-  })
-
-  describe('dispose', () => {
-    it('should dispose dropdown', () => {
-      fixtureEl.innerHTML = [
-        '<div class="dropdown">',
-        '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-        '  <div class="dropdown-menu">',
-        '    <a class="dropdown-item" href="#">Secondary link</a>',
-        '  </div>',
-        '</div>'
-      ].join('')
-
-      const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-
-      const dropdown = new Dropdown(btnDropdown)
-
-      expect(dropdown._floatingCleanup).toBeNull()
-      expect(dropdown._menu).not.toBeNull()
-      expect(dropdown._element).not.toBeNull()
-      const spy = spyOn(EventHandler, 'off')
-
-      dropdown.dispose()
-
-      expect(dropdown._menu).toBeNull()
-      expect(dropdown._element).toBeNull()
-      expect(spy).toHaveBeenCalledWith(btnDropdown, Dropdown.EVENT_KEY)
-    })
-
-    it('should dispose dropdown with Floating UI', () => {
-      fixtureEl.innerHTML = [
-        '<div class="dropdown">',
-        '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-        '  <div class="dropdown-menu">',
-        '    <a class="dropdown-item" href="#">Secondary link</a>',
-        '  </div>',
-        '</div>'
-      ].join('')
-
-      const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-      const dropdown = new Dropdown(btnDropdown)
-
-      dropdown.toggle()
-
-      expect(dropdown._floatingCleanup).not.toBeNull()
-      expect(dropdown._menu).not.toBeNull()
-      expect(dropdown._element).not.toBeNull()
-
-      dropdown.dispose()
-
-      expect(dropdown._floatingCleanup).toBeNull()
-      expect(dropdown._menu).toBeNull()
-      expect(dropdown._element).toBeNull()
-    })
-  })
-
-  describe('update', () => {
-    it('should call Floating UI update on update', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          expect(dropdown._floatingCleanup).not.toBeNull()
-
-          const spyUpdate = spyOn(dropdown, '_updateFloatingPosition')
-
-          dropdown.update()
-
-          expect(spyUpdate).toHaveBeenCalled()
-          resolve()
-        })
-
-        dropdown.toggle()
-      })
-    })
-
-    it('should do nothing on update if not shown', () => {
-      fixtureEl.innerHTML = [
-        '<div class="dropdown">',
-        '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-        '  <div class="dropdown-menu">',
-        '    <a class="dropdown-item" href="#">Secondary link</a>',
-        '  </div>',
-        '</div>'
-      ].join('')
-
-      const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-      const dropdown = new Dropdown(btnDropdown)
-
-      const spy = spyOn(dropdown, '_updateFloatingPosition')
-
-      dropdown.update()
-
-      expect(dropdown._floatingCleanup).toBeNull()
-      expect(spy).not.toHaveBeenCalled()
-    })
-  })
-
-  describe('data-api', () => {
-    it('should show and hide a dropdown', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        let showEventTriggered = false
-        let hideEventTriggered = false
-
-        btnDropdown.addEventListener('show.bs.dropdown', () => {
-          showEventTriggered = true
-        })
-
-        btnDropdown.addEventListener('shown.bs.dropdown', event => setTimeout(() => {
-          expect(btnDropdown).toHaveClass('show')
-          expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
-          expect(showEventTriggered).toBeTrue()
-          expect(event.relatedTarget).toEqual(btnDropdown)
-          document.body.click()
-        }))
-
-        btnDropdown.addEventListener('hide.bs.dropdown', () => {
-          hideEventTriggered = true
-        })
-
-        btnDropdown.addEventListener('hidden.bs.dropdown', event => {
-          expect(btnDropdown).not.toHaveClass('show')
-          expect(btnDropdown.getAttribute('aria-expanded')).toEqual('false')
-          expect(hideEventTriggered).toBeTrue()
-          expect(event.relatedTarget).toEqual(btnDropdown)
-          resolve()
-        })
-
-        btnDropdown.click()
-      })
-    })
-
-    it('should use Floating UI positioning in navbar', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<nav class="navbar navbar-expand-md bg-light">',
-          '  <div class="dropdown">',
-          '    <button class="btn dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>',
-          '    <div class="dropdown-menu">',
-          '      <a class="dropdown-item" href="#">Secondary link</a>',
-          '    </div>',
-          '  </div>',
-          '</nav>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdownMenu = fixtureEl.querySelector('.dropdown-menu')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          expect(dropdown._floatingCleanup).not.toBeNull()
-          // Floating UI sets data-bs-placement attribute asynchronously
-          setTimeout(() => {
-            expect(dropdownMenu.getAttribute('data-bs-placement')).not.toBeNull()
-            resolve()
-          }, 10)
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should not collapse the dropdown when clicking a select option nested in the dropdown', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <select>',
-          '      <option selected>Open this select menu</option>',
-          '      <option value="1">One</option>',
-          '    </select>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdownMenu = fixtureEl.querySelector('.dropdown-menu')
-        const dropdown = new Dropdown(btnDropdown)
-
-        const hideSpy = spyOn(dropdown, '_completeHide')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          const clickEvent = new MouseEvent('click', {
-            bubbles: true
-          })
-
-          dropdownMenu.querySelector('option').dispatchEvent(clickEvent)
-        })
-
-        dropdownMenu.addEventListener('click', event => {
-          expect(event.target.tagName).toMatch(/select|option/i)
-
-          Dropdown.clearMenus(event)
-
-          setTimeout(() => {
-            expect(hideSpy).not.toHaveBeenCalled()
-            resolve()
-          }, 10)
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should not use Floating UI if display set to static', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" data-bs-display="static">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdownMenu = fixtureEl.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Floating UI adds this attribute when we use it
-          expect(dropdownMenu.getAttribute('data-bs-placement')).toBeNull()
-          resolve()
-        })
-
-        btnDropdown.click()
-      })
-    })
-
-    it('should manage bs attribute `data-bs-display`="static" when display set to static', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" data-bs-display="static">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdownMenu = fixtureEl.querySelector('.dropdown-menu')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          expect(dropdownMenu.getAttribute('data-bs-display')).toEqual('static')
-          dropdown.hide()
-        })
-
-        btnDropdown.addEventListener('hidden.bs.dropdown', () => {
-          expect(dropdownMenu.getAttribute('data-bs-display')).toBeNull()
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should remove "show" class if tabbing outside of menu', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Secondary link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          expect(btnDropdown).toHaveClass('show')
-
-          const keyup = createEvent('keyup')
-
-          keyup.key = 'Tab'
-          document.dispatchEvent(keyup)
-        })
-
-        btnDropdown.addEventListener('hidden.bs.dropdown', () => {
-          expect(btnDropdown).not.toHaveClass('show')
-          resolve()
-        })
-
-        btnDropdown.click()
-      })
-    })
-
-    it('should remove "show" class if body is clicked, with multiple dropdowns', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="nav">',
-          '  <div class="dropdown" id="testmenu">',
-          '    <a class="dropdown-toggle" data-bs-toggle="dropdown" href="#testmenu">Test menu</a>',
-          '    <div class="dropdown-menu">',
-          '      <a class="dropdown-item" href="#sub1">Submenu 1</a>',
-          '    </div>',
-          '  </div>',
-          '</div>',
-          '<div class="btn-group">',
-          '  <button class="btn">Actions</button>',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown"></button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Action 1</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const triggerDropdownList = fixtureEl.querySelectorAll('[data-bs-toggle="dropdown"]')
-
-        expect(triggerDropdownList).toHaveSize(2)
-
-        const [triggerDropdownFirst, triggerDropdownLast] = triggerDropdownList
-
-        triggerDropdownFirst.addEventListener('shown.bs.dropdown', () => {
-          expect(triggerDropdownFirst).toHaveClass('show')
-          expect(fixtureEl.querySelectorAll('.dropdown-menu.show')).toHaveSize(1)
-          document.body.click()
-        })
-
-        triggerDropdownFirst.addEventListener('hidden.bs.dropdown', () => {
-          expect(fixtureEl.querySelectorAll('.dropdown-menu.show')).toHaveSize(0)
-          triggerDropdownLast.click()
-        })
-
-        triggerDropdownLast.addEventListener('shown.bs.dropdown', () => {
-          expect(triggerDropdownLast).toHaveClass('show')
-          expect(fixtureEl.querySelectorAll('.dropdown-menu.show')).toHaveSize(1)
-          document.body.click()
-        })
-
-        triggerDropdownLast.addEventListener('hidden.bs.dropdown', () => {
-          expect(fixtureEl.querySelectorAll('.dropdown-menu.show')).toHaveSize(0)
-          resolve()
-        })
-
-        triggerDropdownFirst.click()
-      })
-    })
-
-    it('should remove "show" class if body if tabbing outside of menu, with multiple dropdowns', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <a class="dropdown-toggle" data-bs-toggle="dropdown" href="#testmenu">Test menu</a>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#sub1">Submenu 1</a>',
-          '  </div>',
-          '</div>',
-          '<div class="btn-group">',
-          '  <button class="btn">Actions</button>',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown"></button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Action 1</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const triggerDropdownList = fixtureEl.querySelectorAll('[data-bs-toggle="dropdown"]')
-
-        expect(triggerDropdownList).toHaveSize(2)
-
-        const [triggerDropdownFirst, triggerDropdownLast] = triggerDropdownList
-
-        triggerDropdownFirst.addEventListener('shown.bs.dropdown', () => {
-          expect(triggerDropdownFirst).toHaveClass('show')
-          expect(fixtureEl.querySelectorAll('.dropdown-menu.show')).toHaveSize(1)
-
-          const keyup = createEvent('keyup')
-          keyup.key = 'Tab'
-
-          document.dispatchEvent(keyup)
-        })
-
-        triggerDropdownFirst.addEventListener('hidden.bs.dropdown', () => {
-          expect(fixtureEl.querySelectorAll('.dropdown-menu.show')).toHaveSize(0)
-          triggerDropdownLast.click()
-        })
-
-        triggerDropdownLast.addEventListener('shown.bs.dropdown', () => {
-          expect(triggerDropdownLast).toHaveClass('show')
-          expect(fixtureEl.querySelectorAll('.dropdown-menu.show')).toHaveSize(1)
-
-          const keyup = createEvent('keyup')
-          keyup.key = 'Tab'
-
-          document.dispatchEvent(keyup)
-        })
-
-        triggerDropdownLast.addEventListener('hidden.bs.dropdown', () => {
-          expect(fixtureEl.querySelectorAll('.dropdown-menu.show')).toHaveSize(0)
-          resolve()
-        })
-
-        triggerDropdownFirst.click()
-      })
-    })
-
-    it('should be able to identify clicked dropdown, even with multiple dropdowns in the same tag', () => {
-      fixtureEl.innerHTML = [
-        '<div class="dropdown">',
-        '  <button id="dropdown1" class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown toggle</button>',
-        '  <div id="menu1" class="dropdown-menu">',
-        '    <a class="dropdown-item" href="#">Dropdown item</a>',
-        '  </div>',
-        '  <button id="dropdown2" class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown toggle</button>',
-        '  <div id="menu2" class="dropdown-menu">',
-        '    <a class="dropdown-item" href="#">Dropdown item</a>',
-        '  </div>',
-        '</div>'
-      ].join('')
-
-      const dropdownToggle1 = fixtureEl.querySelector('#dropdown1')
-      const dropdownToggle2 = fixtureEl.querySelector('#dropdown2')
-      const dropdownMenu1 = fixtureEl.querySelector('#menu1')
-      const dropdownMenu2 = fixtureEl.querySelector('#menu2')
-      const spy = spyOn(Dropdown, 'getOrCreateInstance').and.callThrough()
-
-      dropdownToggle1.click()
-      expect(spy).toHaveBeenCalledWith(dropdownToggle1)
-
-      dropdownToggle2.click()
-      expect(spy).toHaveBeenCalledWith(dropdownToggle2)
-
-      dropdownMenu1.click()
-      expect(spy).toHaveBeenCalledWith(dropdownToggle1)
-
-      dropdownMenu2.click()
-      expect(spy).toHaveBeenCalledWith(dropdownToggle2)
-    })
-
-    it('should be able to show the proper menu, even with multiple dropdowns in the same tag', () => {
-      fixtureEl.innerHTML = [
-        '<div class="dropdown">',
-        '  <button id="dropdown1" class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown toggle</button>',
-        '  <div id="menu1" class="dropdown-menu">',
-        '    <a class="dropdown-item" href="#">Dropdown item</a>',
-        '  </div>',
-        '  <button id="dropdown2" class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown toggle</button>',
-        '  <div id="menu2" class="dropdown-menu">',
-        '    <a class="dropdown-item" href="#">Dropdown item</a>',
-        '  </div>',
-        '</div>'
-      ].join('')
-
-      const dropdownToggle1 = fixtureEl.querySelector('#dropdown1')
-      const dropdownToggle2 = fixtureEl.querySelector('#dropdown2')
-      const dropdownMenu1 = fixtureEl.querySelector('#menu1')
-      const dropdownMenu2 = fixtureEl.querySelector('#menu2')
-
-      dropdownToggle1.click()
-      expect(dropdownMenu1).toHaveClass('show')
-      expect(dropdownMenu2).not.toHaveClass('show')
-
-      dropdownToggle2.click()
-      expect(dropdownMenu1).not.toHaveClass('show')
-      expect(dropdownMenu2).toHaveClass('show')
-    })
-
-    it('should fire hide and hidden event without a clickEvent if event type is not click', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#sub1">Submenu 1</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-
-        triggerDropdown.addEventListener('hide.bs.dropdown', event => {
-          expect(event.clickEvent).toBeUndefined()
-        })
-
-        triggerDropdown.addEventListener('hidden.bs.dropdown', event => {
-          expect(event.clickEvent).toBeUndefined()
-          resolve()
-        })
-
-        triggerDropdown.addEventListener('shown.bs.dropdown', () => {
-          const keydown = createEvent('keydown')
-
-          keydown.key = 'Escape'
-          triggerDropdown.dispatchEvent(keydown)
-        })
-
-        triggerDropdown.click()
-      })
-    })
-
-    it('should bubble up the events to the parent elements', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#subMenu">Sub menu</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdownParent = fixtureEl.querySelector('.dropdown')
-        const dropdown = new Dropdown(triggerDropdown)
-
-        const showFunction = jasmine.createSpy('showFunction')
-        dropdownParent.addEventListener('show.bs.dropdown', showFunction)
-
-        const shownFunction = jasmine.createSpy('shownFunction')
-        dropdownParent.addEventListener('shown.bs.dropdown', () => {
-          shownFunction()
-          dropdown.hide()
-        })
-
-        const hideFunction = jasmine.createSpy('hideFunction')
-        dropdownParent.addEventListener('hide.bs.dropdown', hideFunction)
-
-        dropdownParent.addEventListener('hidden.bs.dropdown', () => {
-          expect(showFunction).toHaveBeenCalled()
-          expect(shownFunction).toHaveBeenCalled()
-          expect(hideFunction).toHaveBeenCalled()
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should ignore keyboard events within <input>s and <textarea>s', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#sub1">Submenu 1</a>',
-          '    <input type="text">',
-          '    <textarea></textarea>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const input = fixtureEl.querySelector('input')
-        const textarea = fixtureEl.querySelector('textarea')
-
-        triggerDropdown.addEventListener('shown.bs.dropdown', () => {
-          input.focus()
-          const keydown = createEvent('keydown')
-
-          keydown.key = 'ArrowUp'
-          input.dispatchEvent(keydown)
-
-          expect(document.activeElement).toEqual(input, 'input still focused')
-
-          textarea.focus()
-          textarea.dispatchEvent(keydown)
-
-          expect(document.activeElement).toEqual(textarea, 'textarea still focused')
-          resolve()
-        })
-
-        triggerDropdown.click()
-      })
-    })
-
-    it('should skip disabled element when using keyboard navigation', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item disabled" href="#sub1">Submenu 1</a>',
-          '    <button class="dropdown-item" type="button" disabled>Disabled button</button>',
-          '    <a id="item1" class="dropdown-item" href="#">Another link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-
-        triggerDropdown.addEventListener('shown.bs.dropdown', () => {
-          const keydown = createEvent('keydown')
-          keydown.key = 'ArrowDown'
-
-          triggerDropdown.dispatchEvent(keydown)
-          triggerDropdown.dispatchEvent(keydown)
-
-          expect(document.activeElement).not.toHaveClass('disabled')
-          expect(document.activeElement.hasAttribute('disabled')).toBeFalse()
-          resolve()
-        })
-
-        triggerDropdown.click()
-      })
-    })
-
-    it('should skip hidden element when using keyboard navigation', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<style>',
-          '  .d-none {',
-          '    display: none;',
-          '  }',
-          '</style>',
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <button class="dropdown-item d-none" type="button">Hidden button by class</button>',
-          '    <a class="dropdown-item" href="#sub1" style="display: none">Hidden link</a>',
-          '    <a class="dropdown-item" href="#sub1" style="visibility: hidden">Hidden link</a>',
-          '    <a id="item1" class="dropdown-item" href="#">Another link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-
-        triggerDropdown.addEventListener('shown.bs.dropdown', () => {
-          const keydown = createEvent('keydown')
-          keydown.key = 'ArrowDown'
-
-          triggerDropdown.dispatchEvent(keydown)
-
-          expect(document.activeElement).not.toHaveClass('d-none')
-          expect(document.activeElement.style.display).not.toEqual('none')
-          expect(document.activeElement.style.visibility).not.toEqual('hidden')
-
-          resolve()
-        })
-
-        triggerDropdown.click()
-      })
-    })
-
-    it('should focus next/previous element when using keyboard navigation', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a id="item1" class="dropdown-item" href="#">A link</a>',
-          '    <a id="item2" class="dropdown-item" href="#">Another link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const item1 = fixtureEl.querySelector('#item1')
-        const item2 = fixtureEl.querySelector('#item2')
-
-        triggerDropdown.addEventListener('shown.bs.dropdown', () => {
-          const keydownArrowDown = createEvent('keydown')
-          keydownArrowDown.key = 'ArrowDown'
-
-          triggerDropdown.dispatchEvent(keydownArrowDown)
-          expect(document.activeElement).toEqual(item1, 'item1 is focused')
-
-          document.activeElement.dispatchEvent(keydownArrowDown)
-          expect(document.activeElement).toEqual(item2, 'item2 is focused')
-
-          const keydownArrowUp = createEvent('keydown')
-          keydownArrowUp.key = 'ArrowUp'
-
-          document.activeElement.dispatchEvent(keydownArrowUp)
-          expect(document.activeElement).toEqual(item1, 'item1 is focused')
-
-          resolve()
-        })
-
-        triggerDropdown.click()
-      })
-    })
-
-    it('should open the dropdown and focus on the last item when using ArrowUp for the first time', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a id="item1" class="dropdown-item" href="#">A link</a>',
-          '    <a id="item2" class="dropdown-item" href="#">Another link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const lastItem = fixtureEl.querySelector('#item2')
-
-        triggerDropdown.addEventListener('shown.bs.dropdown', () => {
-          setTimeout(() => {
-            expect(document.activeElement).toEqual(lastItem, 'item2 is focused')
-            resolve()
-          })
-        })
-
-        const keydown = createEvent('keydown')
-        keydown.key = 'ArrowUp'
-        triggerDropdown.dispatchEvent(keydown)
-      })
-    })
-
-    it('should open the dropdown and focus on the first item when using ArrowDown for the first time', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a id="item1" class="dropdown-item" href="#">A link</a>',
-          '    <a id="item2" class="dropdown-item" href="#">Another link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const firstItem = fixtureEl.querySelector('#item1')
-
-        triggerDropdown.addEventListener('shown.bs.dropdown', () => {
-          setTimeout(() => {
-            expect(document.activeElement).toEqual(firstItem, 'item1 is focused')
-            resolve()
-          })
-        })
-
-        const keydown = createEvent('keydown')
-        keydown.key = 'ArrowDown'
-        triggerDropdown.dispatchEvent(keydown)
-      })
-    })
-
-    it('should not close the dropdown if the user clicks on a text field within dropdown-menu', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <input type="text">',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const input = fixtureEl.querySelector('input')
-
-        input.addEventListener('click', () => {
-          expect(triggerDropdown).toHaveClass('show')
-          resolve()
-        })
-
-        triggerDropdown.addEventListener('shown.bs.dropdown', () => {
-          expect(triggerDropdown).toHaveClass('show')
-          input.dispatchEvent(createEvent('click'))
-        })
-
-        triggerDropdown.click()
-      })
-    })
-
-    it('should not close the dropdown if the user clicks on a textarea within dropdown-menu', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <textarea></textarea>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const textarea = fixtureEl.querySelector('textarea')
-
-        textarea.addEventListener('click', () => {
-          expect(triggerDropdown).toHaveClass('show')
-          resolve()
-        })
-
-        triggerDropdown.addEventListener('shown.bs.dropdown', () => {
-          expect(triggerDropdown).toHaveClass('show')
-          textarea.dispatchEvent(createEvent('click'))
-        })
-
-        triggerDropdown.click()
-      })
-    })
-
-    it('should close the dropdown if the user clicks on a text field that is not contained within dropdown-menu', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '  </div>',
-          '</div>',
-          '<input type="text">'
-        ].join('')
-
-        const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const input = fixtureEl.querySelector('input')
-
-        triggerDropdown.addEventListener('hidden.bs.dropdown', () => {
-          expect().nothing()
-          resolve()
-        })
-
-        triggerDropdown.addEventListener('shown.bs.dropdown', () => {
-          input.dispatchEvent(createEvent('click', {
-            bubbles: true
-          }))
-        })
-
-        triggerDropdown.click()
-      })
-    })
-
-    it('should ignore keyboard events for <input>s and <textarea>s within dropdown-menu, except for escape key', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#sub1">Submenu 1</a>',
-          '    <input type="text">',
-          '    <textarea></textarea>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const input = fixtureEl.querySelector('input')
-        const textarea = fixtureEl.querySelector('textarea')
-
-        const test = (eventKey, elementToDispatch) => {
-          const event = createEvent('keydown')
-          event.key = eventKey
-          elementToDispatch.focus()
-          elementToDispatch.dispatchEvent(event)
-          expect(document.activeElement).toEqual(elementToDispatch, `${elementToDispatch.tagName} still focused`)
-        }
-
-        const keydownEscape = createEvent('keydown')
-        keydownEscape.key = 'Escape'
-
-        triggerDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Key Space
-          test('Space', input)
-
-          test('Space', textarea)
-
-          // Key ArrowUp
-          test('ArrowUp', input)
-
-          test('ArrowUp', textarea)
-
-          // Key ArrowDown
-          test('ArrowDown', input)
-
-          test('ArrowDown', textarea)
-
-          // Key Escape
-          input.focus()
-          input.dispatchEvent(keydownEscape)
-
-          expect(triggerDropdown).not.toHaveClass('show')
-          resolve()
-        })
-
-        triggerDropdown.click()
-      })
-    })
-
-    it('should not open dropdown if escape key was pressed on the toggle', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="tabs">',
-          '  <div class="dropdown">',
-          '    <button disabled class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '    <div class="dropdown-menu">',
-          '      <a class="dropdown-item" href="#">Secondary link</a>',
-          '      <a class="dropdown-item" href="#">Something else here</a>',
-          '      <div class="divider"></div>',
-          '      <a class="dropdown-item" href="#">Another link</a>',
-          '    </div>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(triggerDropdown)
-        const button = fixtureEl.querySelector('button[data-bs-toggle="dropdown"]')
-
-        const spy = spyOn(dropdown, 'toggle')
-
-        // Key escape
-        button.focus()
-        // Key escape
-        const keydownEscape = createEvent('keydown')
-        keydownEscape.key = 'Escape'
-        button.dispatchEvent(keydownEscape)
-
-        setTimeout(() => {
-          expect(spy).not.toHaveBeenCalled()
-          expect(triggerDropdown).not.toHaveClass('show')
-          resolve()
-        }, 20)
-      })
-    })
-
-    it('should propagate escape key events if dropdown is closed', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="parent">',
-          '  <div class="dropdown">',
-          '    <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '    <div class="dropdown-menu">',
-          '      <a class="dropdown-item" href="#">Some Item</a>',
-          '    </div>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const parent = fixtureEl.querySelector('.parent')
-        const toggle = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-
-        const parentKeyHandler = jasmine.createSpy('parentKeyHandler')
-
-        parent.addEventListener('keydown', parentKeyHandler)
-        parent.addEventListener('keyup', () => {
-          expect(parentKeyHandler).toHaveBeenCalled()
-          resolve()
-        })
-
-        const keydownEscape = createEvent('keydown', { bubbles: true })
-        keydownEscape.key = 'Escape'
-        const keyupEscape = createEvent('keyup', { bubbles: true })
-        keyupEscape.key = 'Escape'
-
-        toggle.focus()
-        toggle.dispatchEvent(keydownEscape)
-        toggle.dispatchEvent(keyupEscape)
-      })
-    })
-
-    it('should not propagate escape key events if dropdown is open', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="parent">',
-          '  <div class="dropdown">',
-          '    <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '    <div class="dropdown-menu">',
-          '      <a class="dropdown-item" href="#">Some Item</a>',
-          '    </div>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const parent = fixtureEl.querySelector('.parent')
-        const toggle = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-
-        const parentKeyHandler = jasmine.createSpy('parentKeyHandler')
-
-        parent.addEventListener('keydown', parentKeyHandler)
-        parent.addEventListener('keyup', () => {
-          expect(parentKeyHandler).not.toHaveBeenCalled()
-          resolve()
-        })
-
-        const keydownEscape = createEvent('keydown', { bubbles: true })
-        keydownEscape.key = 'Escape'
-        const keyupEscape = createEvent('keyup', { bubbles: true })
-        keyupEscape.key = 'Escape'
-
-        toggle.click()
-        toggle.dispatchEvent(keydownEscape)
-        toggle.dispatchEvent(keyupEscape)
-      })
-    })
-
-    it('should close dropdown using `escape` button, and return focus to its trigger', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Some Item</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const toggle = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-
-        toggle.addEventListener('shown.bs.dropdown', () => {
-          const keydownEvent = createEvent('keydown', { bubbles: true })
-          keydownEvent.key = 'ArrowDown'
-          toggle.dispatchEvent(keydownEvent)
-          keydownEvent.key = 'Escape'
-          toggle.dispatchEvent(keydownEvent)
-        })
-
-        toggle.addEventListener('hidden.bs.dropdown', () => setTimeout(() => {
-          expect(document.activeElement).toEqual(toggle)
-          resolve()
-        }))
-
-        toggle.click()
-      })
-    })
-
-    it('should close dropdown (only) by clicking inside the dropdown menu when it has data-attribute `data-bs-auto-close="inside"`', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" data-bs-auto-close="inside">Dropdown toggle</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Dropdown item</a>',
-          ' </div>',
-          '</div>'
-        ].join('')
-
-        const dropdownToggle = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdownMenu = fixtureEl.querySelector('.dropdown-menu')
-
-        const expectDropdownToBeOpened = () => setTimeout(() => {
-          expect(dropdownToggle).toHaveClass('show')
-          dropdownMenu.click()
-        }, 150)
-
-        dropdownToggle.addEventListener('shown.bs.dropdown', () => {
-          document.documentElement.click()
-          expectDropdownToBeOpened()
-        })
-
-        dropdownToggle.addEventListener('hidden.bs.dropdown', () => setTimeout(() => {
-          expect(dropdownToggle).not.toHaveClass('show')
-          resolve()
-        }))
-
-        dropdownToggle.click()
-      })
-    })
-
-    it('should close dropdown (only) by clicking outside the dropdown menu when it has data-attribute `data-bs-auto-close="outside"`', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" data-bs-auto-close="outside">Dropdown toggle</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Dropdown item</a>',
-          ' </div>',
-          '</div>'
-        ].join('')
-
-        const dropdownToggle = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdownMenu = fixtureEl.querySelector('.dropdown-menu')
-
-        const expectDropdownToBeOpened = () => setTimeout(() => {
-          expect(dropdownToggle).toHaveClass('show')
-          document.documentElement.click()
-        }, 150)
-
-        dropdownToggle.addEventListener('shown.bs.dropdown', () => {
-          dropdownMenu.click()
-          expectDropdownToBeOpened()
-        })
-
-        dropdownToggle.addEventListener('hidden.bs.dropdown', () => {
-          expect(dropdownToggle).not.toHaveClass('show')
-          resolve()
-        })
-
-        dropdownToggle.click()
-      })
-    })
-
-    it('should not close dropdown by clicking inside or outside the dropdown menu when it has data-attribute `data-bs-auto-close="false"`', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" data-bs-auto-close="false">Dropdown toggle</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Dropdown item</a>',
-          ' </div>',
-          '</div>'
-        ].join('')
-
-        const dropdownToggle = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdownMenu = fixtureEl.querySelector('.dropdown-menu')
-
-        const expectDropdownToBeOpened = (shouldTriggerClick = true) => setTimeout(() => {
-          expect(dropdownToggle).toHaveClass('show')
-          if (shouldTriggerClick) {
-            document.documentElement.click()
-          } else {
-            resolve()
-          }
-
-          expectDropdownToBeOpened(false)
-        }, 150)
-
-        dropdownToggle.addEventListener('shown.bs.dropdown', () => {
-          dropdownMenu.click()
-          expectDropdownToBeOpened()
-        })
-
-        dropdownToggle.click()
-      })
-    })
-
-    it('should be able to identify clicked dropdown, no matter the markup order', () => {
-      fixtureEl.innerHTML = [
-        '<div class="dropdown">',
-        '  <div class="dropdown-menu">',
-        '    <a class="dropdown-item" href="#">Dropdown item</a>',
-        '  </div>',
-        '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown toggle</button>',
-        '</div>'
-      ].join('')
-
-      const dropdownToggle = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-      const dropdownMenu = fixtureEl.querySelector('.dropdown-menu')
-      const spy = spyOn(Dropdown, 'getOrCreateInstance').and.callThrough()
-
-      dropdownToggle.click()
-      expect(spy).toHaveBeenCalledWith(dropdownToggle)
-      dropdownMenu.click()
-      expect(spy).toHaveBeenCalledWith(dropdownToggle)
-    })
-  })
-
-  describe('getInstance', () => {
-    it('should return dropdown instance', () => {
-      fixtureEl.innerHTML = '<div></div>'
-
-      const div = fixtureEl.querySelector('div')
-      const dropdown = new Dropdown(div)
-
-      expect(Dropdown.getInstance(div)).toEqual(dropdown)
-      expect(Dropdown.getInstance(div)).toBeInstanceOf(Dropdown)
-    })
-
-    it('should return null when there is no dropdown instance', () => {
-      fixtureEl.innerHTML = '<div></div>'
-
-      const div = fixtureEl.querySelector('div')
-
-      expect(Dropdown.getInstance(div)).toBeNull()
-    })
-  })
-
-  describe('getOrCreateInstance', () => {
-    it('should return dropdown instance', () => {
-      fixtureEl.innerHTML = '<div></div>'
-
-      const div = fixtureEl.querySelector('div')
-      const dropdown = new Dropdown(div)
-
-      expect(Dropdown.getOrCreateInstance(div)).toEqual(dropdown)
-      expect(Dropdown.getInstance(div)).toEqual(Dropdown.getOrCreateInstance(div, {}))
-      expect(Dropdown.getOrCreateInstance(div)).toBeInstanceOf(Dropdown)
-    })
-
-    it('should return new instance when there is no dropdown instance', () => {
-      fixtureEl.innerHTML = '<div></div>'
-
-      const div = fixtureEl.querySelector('div')
-
-      expect(Dropdown.getInstance(div)).toBeNull()
-      expect(Dropdown.getOrCreateInstance(div)).toBeInstanceOf(Dropdown)
-    })
-
-    it('should return new instance when there is no dropdown instance with given configuration', () => {
-      fixtureEl.innerHTML = '<div></div>'
-
-      const div = fixtureEl.querySelector('div')
-
-      expect(Dropdown.getInstance(div)).toBeNull()
-      const dropdown = Dropdown.getOrCreateInstance(div, {
-        display: 'dynamic'
-      })
-      expect(dropdown).toBeInstanceOf(Dropdown)
-
-      expect(dropdown._config.display).toEqual('dynamic')
-    })
-
-    it('should return the instance when exists without given configuration', () => {
-      fixtureEl.innerHTML = '<div></div>'
-
-      const div = fixtureEl.querySelector('div')
-      const dropdown = new Dropdown(div, {
-        display: 'dynamic'
-      })
-      expect(Dropdown.getInstance(div)).toEqual(dropdown)
-
-      const dropdown2 = Dropdown.getOrCreateInstance(div, {
-        display: 'static'
-      })
-      expect(dropdown).toBeInstanceOf(Dropdown)
-      expect(dropdown2).toEqual(dropdown)
-
-      expect(dropdown2._config.display).toEqual('dynamic')
-    })
-  })
-
-  it('should open dropdown when pressing keydown or keyup', () => {
-    return new Promise(resolve => {
-      fixtureEl.innerHTML = [
-        '<div class="dropdown">',
-        '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-        '  <div class="dropdown-menu">',
-        '    <a class="dropdown-item disabled" href="#sub1">Submenu 1</a>',
-        '    <button class="dropdown-item" type="button" disabled>Disabled button</button>',
-        '    <a id="item1" class="dropdown-item" href="#">Another link</a>',
-        '  </div>',
-        '</div>'
-      ].join('')
-
-      const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-      const dropdown = fixtureEl.querySelector('.dropdown')
-
-      const keydown = createEvent('keydown')
-      keydown.key = 'ArrowDown'
-
-      const keyup = createEvent('keyup')
-      keyup.key = 'ArrowUp'
-
-      const handleArrowDown = () => {
-        expect(triggerDropdown).toHaveClass('show')
-        expect(triggerDropdown.getAttribute('aria-expanded')).toEqual('true')
-        setTimeout(() => {
-          dropdown.hide()
-          keydown.key = 'ArrowUp'
-          triggerDropdown.dispatchEvent(keyup)
-        }, 20)
-      }
-
-      const handleArrowUp = () => {
-        expect(triggerDropdown).toHaveClass('show')
-        expect(triggerDropdown.getAttribute('aria-expanded')).toEqual('true')
-        resolve()
-      }
-
-      dropdown.addEventListener('shown.bs.dropdown', event => {
-        if (event.target.key === 'ArrowDown') {
-          handleArrowDown()
-        } else {
-          handleArrowUp()
-        }
-      })
-
-      triggerDropdown.dispatchEvent(keydown)
-    })
-  })
-
-  it('should allow `data-bs-toggle="dropdown"` click events to bubble up', () => {
-    fixtureEl.innerHTML = [
-      '<div class="dropdown">',
-      '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-      '  <div class="dropdown-menu">',
-      '    <a class="dropdown-item" href="#">Secondary link</a>',
-      '  </div>',
-      '</div>'
-    ].join('')
-
-    const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-    const clickListener = jasmine.createSpy('clickListener')
-    const delegatedClickListener = jasmine.createSpy('delegatedClickListener')
-
-    btnDropdown.addEventListener('click', clickListener)
-    document.addEventListener('click', delegatedClickListener)
-
-    btnDropdown.click()
-
-    expect(clickListener).toHaveBeenCalled()
-    expect(delegatedClickListener).toHaveBeenCalled()
-  })
-
-  it('should open the dropdown when clicking the child element inside `data-bs-toggle="dropdown"`', () => {
-    return new Promise(resolve => {
-      fixtureEl.innerHTML = [
-        '<div class="container">',
-        '  <div class="dropdown">',
-        '    <button class="btn dropdown-toggle" data-bs-toggle="dropdown"><span id="childElement">Dropdown</span></button>',
-        '    <div class="dropdown-menu">',
-        '      <a class="dropdown-item" href="#subMenu">Sub menu</a>',
-        '    </div>',
-        '  </div>',
-        '</div>'
-      ].join('')
-
-      const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-      const childElement = fixtureEl.querySelector('#childElement')
-
-      btnDropdown.addEventListener('shown.bs.dropdown', () => setTimeout(() => {
-        expect(btnDropdown).toHaveClass('show')
-        expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true')
-        resolve()
-      }))
-
-      childElement.click()
-    })
-  })
-
-  describe('responsive placements', () => {
-    it('should parse responsive placement string and create instance', () => {
-      fixtureEl.innerHTML = [
-        '<div class="dropdown">',
-        '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" data-bs-placement="bottom-start md:top-end">Dropdown</button>',
-        '  <div class="dropdown-menu">',
-        '    <a class="dropdown-item" href="#">Link</a>',
-        '  </div>',
-        '</div>'
-      ].join('')
-
-      const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-      const dropdown = new Dropdown(btnDropdown)
-
-      // Dropdown should have parsed responsive placements
-      expect(dropdown._responsivePlacements).not.toBeNull()
-      expect(dropdown._responsivePlacements.xs).toEqual('bottom-start')
-      expect(dropdown._responsivePlacements.md).toEqual('top-end')
-    })
-
-    it('should return null for non-responsive placement', () => {
-      fixtureEl.innerHTML = [
-        '<div class="dropdown">',
-        '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" data-bs-placement="bottom-start">Dropdown</button>',
-        '  <div class="dropdown-menu">',
-        '    <a class="dropdown-item" href="#">Link</a>',
-        '  </div>',
-        '</div>'
-      ].join('')
-
-      const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-      const dropdown = new Dropdown(btnDropdown)
-
-      // Non-responsive placement should not create responsive placements object
-      expect(dropdown._responsivePlacements).toBeNull()
-    })
-  })
-
-  describe('virtual element reference', () => {
-    it('should work with virtual element as reference', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '    <a class="dropdown-item" href="#">Link</a>',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-
-        // Virtual element with getBoundingClientRect
-        const virtualElement = {
-          getBoundingClientRect() {
-            return {
-              width: 100,
-              height: 50,
-              top: 100,
-              left: 100,
-              right: 200,
-              bottom: 150,
-              x: 100,
-              y: 100
-            }
-          }
-        }
-
-        const dropdown = new Dropdown(btnDropdown, {
-          reference: virtualElement
-        })
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          expect(document.querySelector('.dropdown-menu.show')).not.toBeNull()
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should throw error for object reference without getBoundingClientRect', () => {
-      fixtureEl.innerHTML = [
-        '<div class="dropdown">',
-        '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-        '  <div class="dropdown-menu">',
-        '    <a class="dropdown-item" href="#">Link</a>',
-        '  </div>',
-        '</div>'
-      ].join('')
-
-      const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-
-      expect(() => {
-        // eslint-disable-next-line no-new
-        new Dropdown(btnDropdown, {
-          reference: { someProperty: 'value' } // Object without getBoundingClientRect
-        })
-      }).toThrowError(TypeError)
-    })
-  })
-
-  describe('selectMenuItem', () => {
-    it('should do nothing when dropdown menu has no visible items', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <div class="dropdown-menu">',
-          '  </div>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Simulate ArrowDown key - should not throw when no items
-          const keydown = createEvent('keydown')
-          keydown.key = 'ArrowDown'
-          btnDropdown.dispatchEvent(keydown)
-
-          // No error thrown means test passed
-          expect(true).toBeTrue()
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-  })
-
-  describe('submenu', () => {
-    it('should open submenu on click', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li><a class="dropdown-item" href="#">Action</a></li>',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action 1</a></li>',
-          '        <li><a class="dropdown-item" href="#">Sub-action 2</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          submenuTrigger.click()
-
-          expect(submenu.classList.contains('show')).toBeTrue()
-          expect(submenuWrapper.classList.contains('show')).toBeTrue()
-          resolve()
-        })
-
-        // eslint-disable-next-line no-new
-        new Dropdown(btnDropdown)
-        btnDropdown.click()
-      })
-    })
-
-    it('should toggle submenu on click', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Open submenu
-          submenuTrigger.click()
-          expect(submenu.classList.contains('show')).toBeTrue()
-
-          // Close submenu
-          submenuTrigger.click()
-          expect(submenu.classList.contains('show')).toBeFalse()
-          resolve()
-        })
-
-        // eslint-disable-next-line no-new
-        new Dropdown(btnDropdown)
-        btnDropdown.click()
-      })
-    })
-
-    it('should close sibling submenus when opening a new one', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu" id="submenu1">',
-          '      <button class="dropdown-item" type="button">Submenu 1</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Action 1</a></li>',
-          '      </ul>',
-          '    </li>',
-          '    <li class="dropdown-submenu" id="submenu2">',
-          '      <button class="dropdown-item" type="button">Submenu 2</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Action 2</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const submenu1Wrapper = fixtureEl.querySelector('#submenu1')
-        const submenu2Wrapper = fixtureEl.querySelector('#submenu2')
-        const submenu1Trigger = submenu1Wrapper.querySelector('.dropdown-item')
-        const submenu2Trigger = submenu2Wrapper.querySelector('.dropdown-item')
-        const submenu1 = submenu1Wrapper.querySelector('.dropdown-menu')
-        const submenu2 = submenu2Wrapper.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Open first submenu
-          submenu1Trigger.click()
-          expect(submenu1.classList.contains('show')).toBeTrue()
-          expect(submenu2.classList.contains('show')).toBeFalse()
-
-          // Open second submenu - first should close
-          submenu2Trigger.click()
-          expect(submenu1.classList.contains('show')).toBeFalse()
-          expect(submenu2.classList.contains('show')).toBeTrue()
-          resolve()
-        })
-
-        // eslint-disable-next-line no-new
-        new Dropdown(btnDropdown)
-        btnDropdown.click()
-      })
-    })
-
-    it('should open submenu with ArrowRight key', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Focus the submenu trigger
-          submenuTrigger.focus()
-
-          // Press ArrowRight to open submenu
-          const keydown = createEvent('keydown')
-          keydown.key = 'ArrowRight'
-          submenuTrigger.dispatchEvent(keydown)
-
-          setTimeout(() => {
-            // Submenu should be open
-            expect(submenu.classList.contains('show')).toBeTrue()
-            expect(submenuWrapper.classList.contains('show')).toBeTrue()
-            resolve()
-          }, 20)
-        })
-
-        // eslint-disable-next-line no-new
-        new Dropdown(btnDropdown)
-        btnDropdown.click()
-      })
-    })
-
-    it('should close submenu via internal method', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Open submenu first using internal method
-          dropdown._openSubmenu(submenuTrigger, submenu, submenuWrapper)
-          expect(submenu.classList.contains('show')).toBeTrue()
-          expect(dropdown._openSubmenus.size).toEqual(1)
-
-          // Close submenu using internal method
-          dropdown._closeSubmenu(submenu, submenuWrapper)
-          expect(submenu.classList.contains('show')).toBeFalse()
-          expect(dropdown._openSubmenus.size).toEqual(0)
-
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should open submenu with Enter key', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          submenuTrigger.focus()
-
-          const keydown = createEvent('keydown')
-          keydown.key = 'Enter'
-          submenuTrigger.dispatchEvent(keydown)
-
-          setTimeout(() => {
-            // Submenu should be open
-            expect(submenu.classList.contains('show')).toBeTrue()
-            expect(submenuWrapper.classList.contains('show')).toBeTrue()
-            resolve()
-          }, 20)
-        })
-
-        // eslint-disable-next-line no-new
-        new Dropdown(btnDropdown)
-        btnDropdown.click()
-      })
-    })
-
-    it('should open submenu with Space key', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          submenuTrigger.focus()
-
-          const keydown = createEvent('keydown')
-          keydown.key = ' '
-          submenuTrigger.dispatchEvent(keydown)
-
-          setTimeout(() => {
-            // Submenu should be open
-            expect(submenu.classList.contains('show')).toBeTrue()
-            expect(submenuWrapper.classList.contains('show')).toBeTrue()
-            resolve()
-          }, 20)
-        })
-
-        // eslint-disable-next-line no-new
-        new Dropdown(btnDropdown)
-        btnDropdown.click()
-      })
-    })
-
-    it('should close all submenus when main dropdown closes', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Open submenu
-          submenuTrigger.click()
-          expect(submenu.classList.contains('show')).toBeTrue()
-
-          // Close main dropdown
-          dropdown.hide()
-        })
-
-        btnDropdown.addEventListener('hidden.bs.dropdown', () => {
-          expect(submenu.classList.contains('show')).toBeFalse()
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should close nested submenus when closing parent submenu', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu" id="level1">',
-          '      <button class="dropdown-item" type="button">Level 1</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li class="dropdown-submenu" id="level2">',
-          '          <button class="dropdown-item" type="button">Level 2</button>',
-          '          <ul class="dropdown-menu">',
-          '            <li><a class="dropdown-item" href="#">Level 3 action</a></li>',
-          '          </ul>',
-          '        </li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const level1Wrapper = fixtureEl.querySelector('#level1')
-        const level2Wrapper = fixtureEl.querySelector('#level2')
-        const level1Trigger = level1Wrapper.querySelector(':scope > .dropdown-item')
-        const level2Trigger = level2Wrapper.querySelector(':scope > .dropdown-item')
-        const level1Submenu = level1Wrapper.querySelector(':scope > .dropdown-menu')
-        const level2Submenu = level2Wrapper.querySelector(':scope > .dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Open level 1
-          level1Trigger.click()
-          expect(level1Submenu.classList.contains('show')).toBeTrue()
-
-          // Open level 2
-          level2Trigger.click()
-          expect(level2Submenu.classList.contains('show')).toBeTrue()
-
-          // Close level 1 - level 2 should also close
-          level1Trigger.click()
-          expect(level1Submenu.classList.contains('show')).toBeFalse()
-          expect(level2Submenu.classList.contains('show')).toBeFalse()
-          resolve()
-        })
-
-        // eslint-disable-next-line no-new
-        new Dropdown(btnDropdown)
-        btnDropdown.click()
-      })
-    })
-
-    it('should have submenu items visible and focusable', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu" id="submenu">',
-          '        <li><a id="sub1" class="dropdown-item" href="#">Sub 1</a></li>',
-          '        <li><a id="sub2" class="dropdown-item" href="#">Sub 2</a></li>',
-          '        <li><a id="sub3" class="dropdown-item" href="#">Sub 3</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = fixtureEl.querySelector('#submenu')
-        const sub1 = fixtureEl.querySelector('#sub1')
-        const sub2 = fixtureEl.querySelector('#sub2')
-        const sub3 = fixtureEl.querySelector('#sub3')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Open submenu using internal method
-          dropdown._openSubmenu(submenuTrigger, submenu, submenuWrapper)
-
-          // Submenu items should be visible and focusable
-          expect(submenu.classList.contains('show')).toBeTrue()
-
-          sub1.focus()
-          expect(document.activeElement).toEqual(sub1)
-
-          sub2.focus()
-          expect(document.activeElement).toEqual(sub2)
-
-          sub3.focus()
-          expect(document.activeElement).toEqual(sub3)
-
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should close all submenus when hiding dropdown', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu" id="submenu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = fixtureEl.querySelector('#submenu')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Open submenu using internal method
-          dropdown._openSubmenu(submenuTrigger, submenu, submenuWrapper)
-          expect(submenu.classList.contains('show')).toBeTrue()
-          expect(dropdown._openSubmenus.size).toEqual(1)
-
-          // Hide the main dropdown
-          dropdown.hide()
-        })
-
-        btnDropdown.addEventListener('hidden.bs.dropdown', () => {
-          // All submenus should be closed
-          expect(submenu.classList.contains('show')).toBeFalse()
-          expect(dropdown._openSubmenus.size).toEqual(0)
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should respect submenuTrigger: click option', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" data-bs-submenu-trigger="click">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-        const dropdown = new Dropdown(btnDropdown)
-
-        expect(dropdown._config.submenuTrigger).toEqual('click')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Click should work
-          submenuTrigger.click()
-          expect(submenu.classList.contains('show')).toBeTrue()
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should respect submenuTrigger: hover option', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" data-bs-submenu-trigger="hover">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const dropdown = new Dropdown(btnDropdown)
-
-        expect(dropdown._config.submenuTrigger).toEqual('hover')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Hover should open submenu
-          const mouseenter = createEvent('mouseenter', { bubbles: true })
-          submenuTrigger.dispatchEvent(mouseenter)
-
-          // Note: In JSDOM, hover events may not work perfectly,
-          // but we verify the config is respected
-          expect(dropdown._config.submenuTrigger).toEqual('hover')
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should respect submenuDelay config option', () => {
-      fixtureEl.innerHTML = [
-        '<div class="dropdown">',
-        '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" data-bs-submenu-delay="500">Dropdown</button>',
-        '  <ul class="dropdown-menu">',
-        '    <li class="dropdown-submenu">',
-        '      <button class="dropdown-item" type="button">More options</button>',
-        '      <ul class="dropdown-menu">',
-        '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-        '      </ul>',
-        '    </li>',
-        '  </ul>',
-        '</div>'
-      ].join('')
-
-      const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-      const dropdown = new Dropdown(btnDropdown)
-
-      expect(dropdown._config.submenuDelay).toEqual(500)
-    })
-
-    it('should position submenu using Floating UI', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Open submenu
-          submenuTrigger.click()
-
-          // Floating UI should set position styles
-          setTimeout(() => {
-            expect(submenu.style.position).toEqual('absolute')
-            expect(submenu.style.left).toBeTruthy()
-            expect(submenu.style.top).toBeTruthy()
-            resolve()
-          }, 50)
-        })
-
-        // eslint-disable-next-line no-new
-        new Dropdown(btnDropdown)
-        btnDropdown.click()
-      })
-    })
-
-    it('should set data-bs-placement attribute on submenu', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          submenuTrigger.click()
-
-          setTimeout(() => {
-            // Should have a placement data attribute
-            const placement = submenu.dataset.bsPlacement
-            expect(placement).toBeTruthy()
-            // Should be a valid placement
-            expect(['left-start', 'right-start', 'left-end', 'right-end', 'left', 'right'])
-              .toContain(placement)
-            resolve()
-          }, 50)
-        })
-
-        // eslint-disable-next-line no-new
-        new Dropdown(btnDropdown)
-        btnDropdown.click()
-      })
-    })
-
-    it('should cleanup Floating UI autoUpdate on submenu close', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Open submenu
-          submenuTrigger.click()
-          expect(dropdown._openSubmenus.size).toEqual(1)
-          expect(dropdown._openSubmenus.has(submenu)).toBeTrue()
-
-          // Close submenu
-          submenuTrigger.click()
-          expect(dropdown._openSubmenus.size).toEqual(0)
-          expect(dropdown._openSubmenus.has(submenu)).toBeFalse()
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should schedule submenu close with delay', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown, { submenuDelay: 50 })
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Open submenu
-          dropdown._openSubmenu(submenuTrigger, submenu, submenuWrapper)
-          expect(submenu.classList.contains('show')).toBeTrue()
-
-          // Schedule close
-          dropdown._scheduleSubmenuClose(submenu, submenuWrapper)
-          expect(dropdown._submenuCloseTimeouts.has(submenu)).toBeTrue()
-
-          // Still open immediately
-          expect(submenu.classList.contains('show')).toBeTrue()
-
-          // After delay, should be closed
-          setTimeout(() => {
-            expect(submenu.classList.contains('show')).toBeFalse()
-            expect(dropdown._submenuCloseTimeouts.has(submenu)).toBeFalse()
-            resolve()
-          }, 100)
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should cancel scheduled submenu close', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown, { submenuDelay: 50 })
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Open submenu
-          dropdown._openSubmenu(submenuTrigger, submenu, submenuWrapper)
-
-          // Schedule close
-          dropdown._scheduleSubmenuClose(submenu, submenuWrapper)
-          expect(dropdown._submenuCloseTimeouts.has(submenu)).toBeTrue()
-
-          // Cancel the close
-          dropdown._cancelSubmenuCloseTimeout(submenu)
-          expect(dropdown._submenuCloseTimeouts.has(submenu)).toBeFalse()
-
-          // After delay, should still be open
-          setTimeout(() => {
-            expect(submenu.classList.contains('show')).toBeTrue()
-            resolve()
-          }, 100)
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should clear all submenu timeouts on dispose', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown, { submenuDelay: 200 })
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Open submenu and schedule close
-          dropdown._openSubmenu(submenuTrigger, submenu, submenuWrapper)
-          dropdown._scheduleSubmenuClose(submenu, submenuWrapper)
-          expect(dropdown._submenuCloseTimeouts.size).toEqual(1)
-
-          // Clear all timeouts
-          dropdown._clearAllSubmenuTimeouts()
-          expect(dropdown._submenuCloseTimeouts.size).toEqual(0)
-
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should detect point inside triangle', () => {
-      fixtureEl.innerHTML = [
-        '<div class="dropdown">',
-        '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-        '  <ul class="dropdown-menu">',
-        '    <li class="dropdown-submenu">',
-        '      <button class="dropdown-item" type="button">More options</button>',
-        '      <ul class="dropdown-menu">',
-        '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-        '      </ul>',
-        '    </li>',
-        '  </ul>',
-        '</div>'
-      ].join('')
-
-      const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-      const dropdown = new Dropdown(btnDropdown)
-
-      // Triangle with vertices at (0,0), (10,0), (5,10)
-      const v1 = { x: 0, y: 0 }
-      const v2 = { x: 10, y: 0 }
-      const v3 = { x: 5, y: 10 }
-
-      // Point inside triangle
-      const inside = { x: 5, y: 5 }
-      expect(dropdown._pointInTriangle(inside, v1, v2, v3)).toBeTrue()
-
-      // Point outside triangle
-      const outside = { x: 20, y: 20 }
-      expect(dropdown._pointInTriangle(outside, v1, v2, v3)).toBeFalse()
-
-      // Point on edge should be inside
-      const onEdge = { x: 5, y: 0 }
-      expect(dropdown._pointInTriangle(onEdge, v1, v2, v3)).toBeTrue()
-    })
-
-    it('should track mouse position for safe triangle', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Call track method directly
-          dropdown._trackMousePosition({ clientX: 100, clientY: 200 })
-
-          // Should have tracked position in hover intent data
-          expect(dropdown._hoverIntentData).toBeDefined()
-          expect(dropdown._hoverIntentData.x).toEqual(100)
-          expect(dropdown._hoverIntentData.y).toEqual(200)
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should handle hover trigger opening submenu via internal method', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" data-bs-submenu-trigger="hover">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-
-        expect(dropdown._config.submenuTrigger).toEqual('hover')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Use internal handler directly with mock event
-          const mockEvent = { target: submenuTrigger }
-          dropdown._onSubmenuTriggerEnter(mockEvent)
-
-          // Submenu should open
-          expect(submenu.classList.contains('show')).toBeTrue()
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should handle submenu mouseleave with close delay', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown" data-bs-submenu-trigger="hover" data-bs-submenu-delay="50">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Open submenu
-          dropdown._openSubmenu(submenuTrigger, submenu, submenuWrapper)
-          expect(submenu.classList.contains('show')).toBeTrue()
-
-          // Simulate mouseleave from submenu wrapper
-          const mouseleave = new MouseEvent('mouseleave', { bubbles: true })
-          Object.defineProperty(mouseleave, 'target', { value: submenuWrapper })
-          dropdown._onSubmenuLeave(mouseleave)
-
-          // Should schedule close
-          expect(dropdown._submenuCloseTimeouts.has(submenu)).toBeTrue()
-
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should not schedule close if submenu is not open', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Try mouseleave without opening submenu first
-          const mouseleave = new MouseEvent('mouseleave', { bubbles: true })
-          Object.defineProperty(mouseleave, 'target', { value: submenuWrapper })
-          dropdown._onSubmenuLeave(mouseleave)
-
-          // Should not schedule close since submenu wasn't open
-          expect(dropdown._submenuCloseTimeouts.size).toEqual(0)
-
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should not open submenu if trigger element not found', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Mock event with target that's not a submenu trigger
-          const mockEvent = { target: btnDropdown }
-          dropdown._onSubmenuTriggerEnter(mockEvent)
-
-          // No submenus should be open
-          expect(dropdown._openSubmenus.size).toEqual(0)
-
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should not close submenu if already closed', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Try to close submenu that was never opened
-          dropdown._closeSubmenu(submenu, submenuWrapper)
-
-          // Should not throw, openSubmenus should still be empty
-          expect(dropdown._openSubmenus.size).toEqual(0)
-
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should handle _isMovingTowardSubmenu with no hover data', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // No hover data tracked yet
-          dropdown._hoverIntentData = null
-
-          const mockEvent = { clientX: 100, clientY: 100 }
-          const result = dropdown._isMovingTowardSubmenu(mockEvent, submenu)
-
-          // Should return false when no hover data
-          expect(result).toBeFalse()
-
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should handle click on submenu trigger when submenu is already open', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Open submenu
-          dropdown._openSubmenu(submenuTrigger, submenu, submenuWrapper)
-          expect(submenu.classList.contains('show')).toBeTrue()
-
-          // Click handler should toggle (close it)
-          const mockEvent = {
-            target: submenuTrigger,
-            preventDefault() {},
-            stopPropagation() {}
-          }
-          dropdown._onSubmenuTriggerClick(mockEvent)
-
-          expect(submenu.classList.contains('show')).toBeFalse()
-
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should cancel pending timeout when opening submenu', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown, { submenuDelay: 200 })
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Open submenu
-          dropdown._openSubmenu(submenuTrigger, submenu, submenuWrapper)
-
-          // Schedule close
-          dropdown._scheduleSubmenuClose(submenu, submenuWrapper)
-          expect(dropdown._submenuCloseTimeouts.has(submenu)).toBeTrue()
-
-          // Re-enter submenu trigger should cancel timeout
-          const mockEvent = { target: submenuTrigger }
-          dropdown._onSubmenuTriggerEnter(mockEvent)
-
-          // Timeout should be cancelled
-          expect(dropdown._submenuCloseTimeouts.has(submenu)).toBeFalse()
-
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should handle _onSubmenuTriggerClick with non-matching target', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li><a class="dropdown-item" href="#">Regular item</a></li>',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-        const regularItem = fixtureEl.querySelector('.dropdown-menu > li > a')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Click on regular item (not submenu trigger)
-          const mockEvent = {
-            target: regularItem,
-            preventDefault() {},
-            stopPropagation() {}
-          }
-          dropdown._onSubmenuTriggerClick(mockEvent)
-
-          // No submenus should be affected
-          expect(dropdown._openSubmenus.size).toEqual(0)
-
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should handle _onSubmenuLeave when not moving toward submenu', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu" style="position: absolute; left: 200px; top: 0; width: 100px; height: 100px;">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown, { submenuDelay: 50 })
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Open submenu
-          dropdown._openSubmenu(submenuTrigger, submenu, submenuWrapper)
-
-          // Track mouse position far from submenu
-          dropdown._trackMousePosition({ clientX: 0, clientY: 0 })
-
-          // Simulate mouseleave moving away from submenu
-          const mockEvent = {
-            target: submenuWrapper,
-            clientX: -100,
-            clientY: -100
-          }
-          dropdown._onSubmenuLeave(mockEvent)
-
-          // Should schedule close since not moving toward submenu
-          expect(dropdown._submenuCloseTimeouts.has(submenu)).toBeTrue()
-
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should cancel timeout when calling cancelSubmenuCloseTimeout', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu" id="submenu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown, { submenuDelay: 200 })
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = fixtureEl.querySelector('#submenu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Open submenu
-          dropdown._openSubmenu(submenuTrigger, submenu, submenuWrapper)
-
-          // Schedule close
-          dropdown._scheduleSubmenuClose(submenu, submenuWrapper)
-          expect(dropdown._submenuCloseTimeouts.has(submenu)).toBeTrue()
-
-          // Cancel the timeout directly
-          dropdown._cancelSubmenuCloseTimeout(submenu)
-
-          // Timeout should be cancelled
-          expect(dropdown._submenuCloseTimeouts.has(submenu)).toBeFalse()
-
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should skip closing submenu if already not in openSubmenus', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Calling close on never-opened submenu should not throw
-          expect(() => {
-            dropdown._closeSubmenu(submenu, submenuWrapper)
-          }).not.toThrow()
-
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should handle _isMovingTowardSubmenu when cursor is in safe triangle', () => {
-      return new Promise(resolve => {
-        fixtureEl.innerHTML = [
-          '<div class="dropdown" style="position: relative;">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu" style="position: absolute; display: block;">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu" style="position: absolute; left: 100px; top: 0; width: 100px; height: 100px; display: block;">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Open submenu
-          dropdown._openSubmenu(submenuTrigger, submenu, submenuWrapper)
-
-          // Track a mouse position
-          dropdown._trackMousePosition({ clientX: 50, clientY: 50 })
-
-          // Call isMovingTowardSubmenu
-          const mockEvent = { clientX: 75, clientY: 50 }
-          const result = dropdown._isMovingTowardSubmenu(mockEvent, submenu)
-
-          // Result depends on geometry, just verify it returns a boolean
-          expect(typeof result).toBe('boolean')
-
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-
-    it('should handle RTL submenu placement', () => {
-      return new Promise(resolve => {
-        // Set RTL
-        document.documentElement.dir = 'rtl'
-
-        fixtureEl.innerHTML = [
-          '<div class="dropdown">',
-          '  <button class="btn dropdown-toggle" data-bs-toggle="dropdown">Dropdown</button>',
-          '  <ul class="dropdown-menu">',
-          '    <li class="dropdown-submenu">',
-          '      <button class="dropdown-item" type="button">More options</button>',
-          '      <ul class="dropdown-menu">',
-          '        <li><a class="dropdown-item" href="#">Sub-action</a></li>',
-          '      </ul>',
-          '    </li>',
-          '  </ul>',
-          '</div>'
-        ].join('')
-
-        const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]')
-        const dropdown = new Dropdown(btnDropdown)
-        const submenuTrigger = fixtureEl.querySelector('.dropdown-submenu > .dropdown-item')
-        const submenuWrapper = fixtureEl.querySelector('.dropdown-submenu')
-        const submenu = submenuWrapper.querySelector('.dropdown-menu')
-
-        btnDropdown.addEventListener('shown.bs.dropdown', () => {
-          // Open submenu in RTL mode
-          dropdown._openSubmenu(submenuTrigger, submenu, submenuWrapper)
-          expect(submenu.classList.contains('show')).toBeTrue()
-
-          // Reset RTL
-          document.documentElement.dir = 'ltr'
-          resolve()
-        })
-
-        dropdown.show()
-      })
-    })
-  })
-})
diff --git a/js/tests/unit/menu.spec.js b/js/tests/unit/menu.spec.js
new file mode 100644 (file)
index 0000000..da3739a
--- /dev/null
@@ -0,0 +1,4277 @@
+import EventHandler from '../../src/dom/event-handler.js'
+import Menu from '../../src/menu.js'
+import { noop } from '../../src/util/index.js'
+import {
+  clearFixture, createEvent, getFixture
+} from '../helpers/fixture.js'
+
+describe('Menu', () => {
+  let fixtureEl
+
+  beforeAll(() => {
+    fixtureEl = getFixture()
+  })
+
+  afterEach(() => {
+    clearFixture()
+  })
+
+  describe('VERSION', () => {
+    it('should return plugin version', () => {
+      expect(Menu.VERSION).toEqual(jasmine.any(String))
+    })
+  })
+
+  describe('Default', () => {
+    it('should return plugin default config', () => {
+      expect(Menu.Default).toEqual(jasmine.any(Object))
+    })
+  })
+
+  describe('DefaultType', () => {
+    it('should return plugin default type config', () => {
+      expect(Menu.DefaultType).toEqual(jasmine.any(Object))
+    })
+  })
+
+  describe('DATA_KEY', () => {
+    it('should return plugin data key', () => {
+      expect(Menu.DATA_KEY).toEqual('bs.menu')
+    })
+  })
+
+  describe('constructor', () => {
+    it('should take care of element either passed as a CSS selector or DOM element', () => {
+      fixtureEl.innerHTML = [
+        '<div>',
+        '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+        '  <div class="menu">',
+        '    <a class="menu-item" href="#">Link</a>',
+        '  </div>',
+        '</div>'
+      ].join('')
+
+      const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+      const menuBySelector = new Menu('[data-bs-toggle="menu"]')
+      const menuByElement = new Menu(btnMenu)
+
+      expect(menuBySelector._element).toEqual(btnMenu)
+      expect(menuByElement._element).toEqual(btnMenu)
+    })
+
+    it('should create offset modifier correctly when offset option is a function', async () => {
+      fixtureEl.innerHTML = [
+        '<div>',
+        '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+        '  <div class="menu">',
+        '    <a class="menu-item" href="#">Secondary link</a>',
+        '  </div>',
+        '</div>'
+      ].join('')
+
+      const getOffset = jasmine.createSpy('getOffset').and.returnValue([10, 20])
+      const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+      const menu = new Menu(btnMenu, {
+        offset: getOffset
+      })
+
+      const offset = menu._getOffset()
+      expect(typeof offset).toEqual('function')
+
+      const shownPromise = new Promise(resolve => {
+        btnMenu.addEventListener('shown.bs.menu', resolve)
+      })
+
+      menu.show()
+      await shownPromise
+
+      // Floating UI calls offset function asynchronously
+      await new Promise(resolve => {
+        setTimeout(resolve, 20)
+      })
+      expect(getOffset).toHaveBeenCalled()
+    })
+
+    it('should create offset modifier correctly when offset option is a string into data attribute', () => {
+      fixtureEl.innerHTML = [
+        '<div>',
+        '  <button class="btn" data-bs-toggle="menu" data-bs-offset="10,20">Menu</button>',
+        '  <div class="menu">',
+        '    <a class="menu-item" href="#">Secondary link</a>',
+        '  </div>',
+        '</div>'
+      ].join('')
+
+      const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+      const menu = new Menu(btnMenu)
+
+      expect(menu._getOffset()).toEqual([10, 20])
+    })
+
+    it('should allow to pass config to Floating UI with `floatingConfig`', () => {
+      fixtureEl.innerHTML = [
+        '<div>',
+        '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+        '  <div class="menu">',
+        '    <a class="menu-item" href="#">Secondary link</a>',
+        '  </div>',
+        '</div>'
+      ].join('')
+
+      const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+      const menu = new Menu(btnMenu, {
+        floatingConfig: {
+          placement: 'left'
+        }
+      })
+
+      const floatingConfig = menu._getFloatingConfig('bottom-start', [])
+
+      expect(floatingConfig.placement).toEqual('left')
+    })
+
+    it('should allow to pass config to Floating UI with `floatingConfig` as a function', () => {
+      fixtureEl.innerHTML = [
+        '<div>',
+        '  <button class="btn" data-bs-toggle="menu" data-bs-placement="right">Menu</button>',
+        '  <div class="menu">',
+        '    <a class="menu-item" href="#">Secondary link</a>',
+        '  </div>',
+        '</div>'
+      ].join('')
+
+      const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+      const getFloatingConfig = jasmine.createSpy('getFloatingConfig').and.returnValue({ placement: 'left' })
+      const menu = new Menu(btnMenu, {
+        floatingConfig: getFloatingConfig
+      })
+
+      const floatingConfig = menu._getFloatingConfig('bottom-start', [])
+
+      // Ensure that the function was called with the default config.
+      expect(getFloatingConfig).toHaveBeenCalledWith(jasmine.objectContaining({
+        placement: jasmine.any(String)
+      }))
+      expect(floatingConfig.placement).toEqual('left')
+    })
+  })
+
+  describe('toggle', () => {
+    it('should toggle a menu', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" aria-expanded="false">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(btnMenu).toHaveClass('show')
+          expect(btnMenu.getAttribute('aria-expanded')).toEqual('true')
+          resolve()
+        })
+
+        menu.toggle()
+      })
+    })
+
+    it('should destroy old Floating UI references on toggle', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div class="first">',
+          '  <button class="firstBtn btn" data-bs-toggle="menu" aria-expanded="false">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>',
+          '<div class="second">',
+          '  <button class="secondBtn btn" data-bs-toggle="menu" aria-expanded="false">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu1 = fixtureEl.querySelector('.firstBtn')
+        const btnMenu2 = fixtureEl.querySelector('.secondBtn')
+        const firstMenuEl = fixtureEl.querySelector('.first')
+        const secondMenuEl = fixtureEl.querySelector('.second')
+        const menu1 = new Menu(btnMenu1)
+
+        firstMenuEl.addEventListener('shown.bs.menu', () => {
+          expect(btnMenu1).toHaveClass('show')
+          expect(menu1._floatingCleanup).not.toBeNull()
+          btnMenu2.click()
+        })
+
+        secondMenuEl.addEventListener('shown.bs.menu', () => setTimeout(() => {
+          expect(menu1._floatingCleanup).toBeNull()
+          resolve()
+        }))
+
+        menu1.toggle()
+      })
+    })
+
+    it('should toggle a menu and add/remove event listener on mobile', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" aria-expanded="false">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const defaultValueOnTouchStart = document.documentElement.ontouchstart
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        document.documentElement.ontouchstart = noop
+        const spy = spyOn(EventHandler, 'on')
+        const spyOff = spyOn(EventHandler, 'off')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(btnMenu).toHaveClass('show')
+          expect(btnMenu.getAttribute('aria-expanded')).toEqual('true')
+          expect(spy).toHaveBeenCalledWith(jasmine.any(Object), 'mouseover', noop)
+
+          menu.toggle()
+        })
+
+        btnMenu.addEventListener('hidden.bs.menu', () => {
+          expect(btnMenu).not.toHaveClass('show')
+          expect(btnMenu.getAttribute('aria-expanded')).toEqual('false')
+          expect(spyOff).toHaveBeenCalledWith(jasmine.any(Object), 'mouseover', noop)
+
+          document.documentElement.ontouchstart = defaultValueOnTouchStart
+          resolve()
+        })
+
+        menu.toggle()
+      })
+    })
+
+    it('should toggle a menu with bottom-end placement', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" data-bs-placement="bottom-end" aria-expanded="false">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(btnMenu).toHaveClass('show')
+          expect(btnMenu.getAttribute('aria-expanded')).toEqual('true')
+          resolve()
+        })
+
+        menu.toggle()
+      })
+    })
+
+    it('should toggle a menu with bottom (centered) placement', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" data-bs-placement="bottom" aria-expanded="false">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(btnMenu).toHaveClass('show')
+          expect(btnMenu.getAttribute('aria-expanded')).toEqual('true')
+          resolve()
+        })
+
+        menu.toggle()
+      })
+    })
+
+    it('should toggle a menu with top-start placement', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" data-bs-placement="top-start" aria-expanded="false">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(btnMenu).toHaveClass('show')
+          expect(btnMenu.getAttribute('aria-expanded')).toEqual('true')
+          resolve()
+        })
+
+        menu.toggle()
+      })
+    })
+
+    it('should toggle a menu with top (centered) placement', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" data-bs-placement="top" aria-expanded="false">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(btnMenu).toHaveClass('show')
+          expect(btnMenu.getAttribute('aria-expanded')).toEqual('true')
+          resolve()
+        })
+
+        menu.toggle()
+      })
+    })
+
+    it('should toggle a menu with top-end placement', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" data-bs-placement="top-end" aria-expanded="false">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(btnMenu).toHaveClass('show')
+          expect(btnMenu.getAttribute('aria-expanded')).toEqual('true')
+          resolve()
+        })
+
+        menu.toggle()
+      })
+    })
+
+    it('should toggle a menu with right-start placement', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" data-bs-placement="right-start" aria-expanded="false">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(btnMenu).toHaveClass('show')
+          expect(btnMenu.getAttribute('aria-expanded')).toEqual('true')
+          resolve()
+        })
+
+        menu.toggle()
+      })
+    })
+
+    it('should toggle a menu with left-start placement', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" data-bs-placement="left-start" aria-expanded="false">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(btnMenu).toHaveClass('show')
+          expect(btnMenu.getAttribute('aria-expanded')).toEqual('true')
+          resolve()
+        })
+
+        menu.toggle()
+      })
+    })
+
+    it('should toggle a menu with parent reference', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" aria-expanded="false">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu, {
+          reference: 'parent'
+        })
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(btnMenu).toHaveClass('show')
+          expect(btnMenu.getAttribute('aria-expanded')).toEqual('true')
+          resolve()
+        })
+
+        menu.toggle()
+      })
+    })
+
+    it('should toggle a menu with a dom node reference', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" aria-expanded="false">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu, {
+          reference: fixtureEl
+        })
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(btnMenu).toHaveClass('show')
+          expect(btnMenu.getAttribute('aria-expanded')).toEqual('true')
+          resolve()
+        })
+
+        menu.toggle()
+      })
+    })
+
+    it('should toggle a menu with a valid virtual element reference', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn btn visually-hidden" data-bs-toggle="menu" aria-expanded="false">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const virtualElement = {
+          nodeType: 1,
+          getBoundingClientRect() {
+            return {
+              width: 0,
+              height: 0,
+              top: 0,
+              right: 0,
+              bottom: 0,
+              left: 0
+            }
+          }
+        }
+
+        expect(() => new Menu(btnMenu, {
+          reference: {}
+        })).toThrowError(TypeError, 'MENU: Option "reference" provided type "object" without a required "getBoundingClientRect" method.')
+
+        expect(() => new Menu(btnMenu, {
+          reference: {
+            getBoundingClientRect: 'not-a-function'
+          }
+        })).toThrowError(TypeError, 'MENU: Option "reference" provided type "object" without a required "getBoundingClientRect" method.')
+
+        const menu = new Menu(btnMenu, {
+          reference: virtualElement
+        })
+
+        const spy = spyOn(virtualElement, 'getBoundingClientRect').and.callThrough()
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Floating UI calls getBoundingClientRect asynchronously
+          setTimeout(() => {
+            expect(spy).toHaveBeenCalled()
+            expect(btnMenu).toHaveClass('show')
+            expect(btnMenu.getAttribute('aria-expanded')).toEqual('true')
+            resolve()
+          }, 20)
+        })
+
+        menu.toggle()
+      })
+    })
+
+    it('should not toggle a menu if the element is disabled', () => {
+      return new Promise((resolve, reject) => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button disabled class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          reject(new Error('should not throw shown.bs.menu event'))
+        })
+
+        menu.toggle()
+
+        setTimeout(() => {
+          expect().nothing()
+          resolve()
+        })
+      })
+    })
+
+    it('should not toggle a menu if the element contains .disabled', () => {
+      return new Promise((resolve, reject) => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn btn disabled" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          reject(new Error('should not throw shown.bs.menu event'))
+        })
+
+        menu.toggle()
+
+        setTimeout(() => {
+          expect().nothing()
+          resolve()
+        })
+      })
+    })
+
+    it('should not toggle a menu if the menu is shown', () => {
+      return new Promise((resolve, reject) => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu show">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          reject(new Error('should not throw shown.bs.menu event'))
+        })
+
+        menu.toggle()
+
+        setTimeout(() => {
+          expect().nothing()
+          resolve()
+        })
+      })
+    })
+
+    it('should not toggle a menu if show event is prevented', () => {
+      return new Promise((resolve, reject) => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('show.bs.menu', event => {
+          event.preventDefault()
+        })
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          reject(new Error('should not throw shown.bs.menu event'))
+        })
+
+        menu.toggle()
+
+        setTimeout(() => {
+          expect().nothing()
+          resolve()
+        })
+      })
+    })
+  })
+
+  describe('show', () => {
+    it('should show a menu', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(btnMenu).toHaveClass('show')
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should not show a menu if the element is disabled', () => {
+      return new Promise((resolve, reject) => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button disabled class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          reject(new Error('should not throw shown.bs.menu event'))
+        })
+
+        menu.show()
+
+        setTimeout(() => {
+          expect().nothing()
+          resolve()
+        }, 10)
+      })
+    })
+
+    it('should not show a menu if the element contains .disabled', () => {
+      return new Promise((resolve, reject) => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn btn disabled" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          reject(new Error('should not throw shown.bs.menu event'))
+        })
+
+        menu.show()
+
+        setTimeout(() => {
+          expect().nothing()
+          resolve()
+        }, 10)
+      })
+    })
+
+    it('should not show a menu if the menu is shown', () => {
+      return new Promise((resolve, reject) => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu show">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          reject(new Error('should not throw shown.bs.menu event'))
+        })
+
+        menu.show()
+
+        setTimeout(() => {
+          expect().nothing()
+          resolve()
+        }, 10)
+      })
+    })
+
+    it('should not show a menu if show event is prevented', () => {
+      return new Promise((resolve, reject) => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('show.bs.menu', event => {
+          event.preventDefault()
+        })
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          reject(new Error('should not throw shown.bs.menu event'))
+        })
+
+        menu.show()
+
+        setTimeout(() => {
+          expect().nothing()
+          resolve()
+        }, 10)
+      })
+    })
+
+    it('should move menu to body when container is set to body', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menuEl = fixtureEl.querySelector('.menu')
+        const menu = new Menu(btnMenu, {
+          container: 'body'
+        })
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(menuEl.parentNode).toEqual(document.body)
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should move menu to body when container is set to true', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menuEl = fixtureEl.querySelector('.menu')
+        const menu = new Menu(btnMenu, {
+          container: true
+        })
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(menuEl.parentNode).toEqual(document.body)
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should move menu to specified element when container is an element', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div id="custom-container"></div>',
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menuEl = fixtureEl.querySelector('.menu')
+        const customContainer = fixtureEl.querySelector('#custom-container')
+        const menu = new Menu(btnMenu, {
+          container: customContainer
+        })
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(menuEl.parentNode).toEqual(customContainer)
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should restore menu to original parent when hidden', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menuEl = fixtureEl.querySelector('.menu')
+        const originalParent = menuEl.parentNode
+        const menu = new Menu(btnMenu, {
+          container: 'body'
+        })
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(menuEl.parentNode).toEqual(document.body)
+          menu.hide()
+        })
+
+        btnMenu.addEventListener('hidden.bs.menu', () => {
+          expect(menuEl.parentNode).toEqual(originalParent)
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should work with container via data attribute', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" data-bs-container="body">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menuEl = fixtureEl.querySelector('.menu')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(menuEl.parentNode).toEqual(document.body)
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+  })
+
+  describe('hide', () => {
+    it('should hide a menu', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" aria-expanded="true">Menu</button>',
+          '  <div class="menu show">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menuEl = fixtureEl.querySelector('.menu')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('hidden.bs.menu', () => {
+          expect(menuEl).not.toHaveClass('show')
+          expect(btnMenu.getAttribute('aria-expanded')).toEqual('false')
+          resolve()
+        })
+
+        menu.hide()
+      })
+    })
+
+    it('should hide a menu and cleanup Floating UI', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(menu._floatingCleanup).not.toBeNull()
+          menu.hide()
+        })
+
+        btnMenu.addEventListener('hidden.bs.menu', () => {
+          expect(menu._floatingCleanup).toBeNull()
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should not hide a menu if the element is disabled', () => {
+      return new Promise((resolve, reject) => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button disabled class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu show">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menuEl = fixtureEl.querySelector('.menu')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('hidden.bs.menu', () => {
+          reject(new Error('should not throw hidden.bs.menu event'))
+        })
+
+        menu.hide()
+
+        setTimeout(() => {
+          expect(menuEl).toHaveClass('show')
+          resolve()
+        }, 10)
+      })
+    })
+
+    it('should not hide a menu if the element contains .disabled', () => {
+      return new Promise((resolve, reject) => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn btn disabled" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu show">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menuEl = fixtureEl.querySelector('.menu')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('hidden.bs.menu', () => {
+          reject(new Error('should not throw hidden.bs.menu event'))
+        })
+
+        menu.hide()
+
+        setTimeout(() => {
+          expect(menuEl).toHaveClass('show')
+          resolve()
+        }, 10)
+      })
+    })
+
+    it('should not hide a menu if the menu is not shown', () => {
+      return new Promise((resolve, reject) => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('hidden.bs.menu', () => {
+          reject(new Error('should not throw hidden.bs.menu event'))
+        })
+
+        menu.hide()
+
+        setTimeout(() => {
+          expect().nothing()
+          resolve()
+        }, 10)
+      })
+    })
+
+    it('should not hide a menu if hide event is prevented', () => {
+      return new Promise((resolve, reject) => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu show">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menuEl = fixtureEl.querySelector('.menu')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('hide.bs.menu', event => {
+          event.preventDefault()
+        })
+
+        btnMenu.addEventListener('hidden.bs.menu', () => {
+          reject(new Error('should not throw hidden.bs.menu event'))
+        })
+
+        menu.hide()
+
+        setTimeout(() => {
+          expect(menuEl).toHaveClass('show')
+          resolve()
+        })
+      })
+    })
+
+    it('should remove event listener on touch-enabled device that was added in show method', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Menu item</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const defaultValueOnTouchStart = document.documentElement.ontouchstart
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        document.documentElement.ontouchstart = noop
+        const spy = spyOn(EventHandler, 'off')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          menu.hide()
+        })
+
+        btnMenu.addEventListener('hidden.bs.menu', () => {
+          expect(btnMenu).not.toHaveClass('show')
+          expect(btnMenu.getAttribute('aria-expanded')).toEqual('false')
+          expect(spy).toHaveBeenCalled()
+
+          document.documentElement.ontouchstart = defaultValueOnTouchStart
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+  })
+
+  describe('dispose', () => {
+    it('should dispose menu', () => {
+      fixtureEl.innerHTML = [
+        '<div>',
+        '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+        '  <div class="menu">',
+        '    <a class="menu-item" href="#">Secondary link</a>',
+        '  </div>',
+        '</div>'
+      ].join('')
+
+      const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+
+      const menu = new Menu(btnMenu)
+
+      expect(menu._floatingCleanup).toBeNull()
+      expect(menu._menu).not.toBeNull()
+      expect(menu._element).not.toBeNull()
+      const spy = spyOn(EventHandler, 'off')
+
+      menu.dispose()
+
+      expect(menu._menu).toBeNull()
+      expect(menu._element).toBeNull()
+      expect(spy).toHaveBeenCalledWith(btnMenu, Menu.EVENT_KEY)
+    })
+
+    it('should dispose menu with Floating UI', () => {
+      fixtureEl.innerHTML = [
+        '<div>',
+        '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+        '  <div class="menu">',
+        '    <a class="menu-item" href="#">Secondary link</a>',
+        '  </div>',
+        '</div>'
+      ].join('')
+
+      const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+      const menu = new Menu(btnMenu)
+
+      menu.toggle()
+
+      expect(menu._floatingCleanup).not.toBeNull()
+      expect(menu._menu).not.toBeNull()
+      expect(menu._element).not.toBeNull()
+
+      menu.dispose()
+
+      expect(menu._floatingCleanup).toBeNull()
+      expect(menu._menu).toBeNull()
+      expect(menu._element).toBeNull()
+    })
+  })
+
+  describe('update', () => {
+    it('should call Floating UI update on update', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(menu._floatingCleanup).not.toBeNull()
+
+          const spyUpdate = spyOn(menu, '_updateFloatingPosition')
+
+          menu.update()
+
+          expect(spyUpdate).toHaveBeenCalled()
+          resolve()
+        })
+
+        menu.toggle()
+      })
+    })
+
+    it('should do nothing on update if not shown', () => {
+      fixtureEl.innerHTML = [
+        '<div>',
+        '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+        '  <div class="menu">',
+        '    <a class="menu-item" href="#">Secondary link</a>',
+        '  </div>',
+        '</div>'
+      ].join('')
+
+      const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+      const menu = new Menu(btnMenu)
+
+      const spy = spyOn(menu, '_updateFloatingPosition')
+
+      menu.update()
+
+      expect(menu._floatingCleanup).toBeNull()
+      expect(spy).not.toHaveBeenCalled()
+    })
+  })
+
+  describe('data-api', () => {
+    it('should show and hide a menu', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" aria-expanded="false">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        let showEventTriggered = false
+        let hideEventTriggered = false
+
+        btnMenu.addEventListener('show.bs.menu', () => {
+          showEventTriggered = true
+        })
+
+        btnMenu.addEventListener('shown.bs.menu', event => setTimeout(() => {
+          expect(btnMenu).toHaveClass('show')
+          expect(btnMenu.getAttribute('aria-expanded')).toEqual('true')
+          expect(showEventTriggered).toBeTrue()
+          expect(event.relatedTarget).toEqual(btnMenu)
+          document.body.click()
+        }))
+
+        btnMenu.addEventListener('hide.bs.menu', () => {
+          hideEventTriggered = true
+        })
+
+        btnMenu.addEventListener('hidden.bs.menu', event => {
+          expect(btnMenu).not.toHaveClass('show')
+          expect(btnMenu.getAttribute('aria-expanded')).toEqual('false')
+          expect(hideEventTriggered).toBeTrue()
+          expect(event.relatedTarget).toEqual(btnMenu)
+          resolve()
+        })
+
+        btnMenu.click()
+      })
+    })
+
+    it('should use Floating UI positioning in navbar', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<nav class="navbar navbar-expand-md bg-light">',
+          '  <div>',
+          '    <button class="btn" data-bs-toggle="menu" aria-expanded="false">Menu</button>',
+          '    <div class="menu">',
+          '      <a class="menu-item" href="#">Secondary link</a>',
+          '    </div>',
+          '  </div>',
+          '</nav>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menuEl = fixtureEl.querySelector('.menu')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(menu._floatingCleanup).not.toBeNull()
+          // Floating UI sets data-bs-placement attribute asynchronously
+          setTimeout(() => {
+            expect(menuEl.getAttribute('data-bs-placement')).not.toBeNull()
+            resolve()
+          }, 10)
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should not collapse the menu when clicking a select option nested in the menu', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" aria-expanded="false">Menu</button>',
+          '  <div class="menu">',
+          '    <select>',
+          '      <option selected>Open this select menu</option>',
+          '      <option value="1">One</option>',
+          '    </select>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menuEl = fixtureEl.querySelector('.menu')
+        const menu = new Menu(btnMenu)
+
+        const hideSpy = spyOn(menu, '_completeHide')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          const clickEvent = new MouseEvent('click', {
+            bubbles: true
+          })
+
+          menuEl.querySelector('option').dispatchEvent(clickEvent)
+        })
+
+        menuEl.addEventListener('click', event => {
+          expect(event.target.tagName).toMatch(/select|option/i)
+
+          Menu.clearMenus(event)
+
+          setTimeout(() => {
+            expect(hideSpy).not.toHaveBeenCalled()
+            resolve()
+          }, 10)
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should not use Floating UI if display set to static', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" data-bs-display="static">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menuEl = fixtureEl.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Floating UI adds this attribute when we use it
+          expect(menuEl.getAttribute('data-bs-placement')).toBeNull()
+          resolve()
+        })
+
+        btnMenu.click()
+      })
+    })
+
+    it('should manage bs attribute `data-bs-display`="static" when display set to static', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" data-bs-display="static">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menuEl = fixtureEl.querySelector('.menu')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(menuEl.getAttribute('data-bs-display')).toEqual('static')
+          menu.hide()
+        })
+
+        btnMenu.addEventListener('hidden.bs.menu', () => {
+          expect(menuEl.getAttribute('data-bs-display')).toBeNull()
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should remove "show" class if tabbing outside of menu', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Secondary link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(btnMenu).toHaveClass('show')
+
+          const keyup = createEvent('keyup')
+
+          keyup.key = 'Tab'
+          document.dispatchEvent(keyup)
+        })
+
+        btnMenu.addEventListener('hidden.bs.menu', () => {
+          expect(btnMenu).not.toHaveClass('show')
+          resolve()
+        })
+
+        btnMenu.click()
+      })
+    })
+
+    it('should remove "show" class if body is clicked, with multiple menus', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div class="nav">',
+          '  <div id="testmenu">',
+          '    <a class="btn" data-bs-toggle="menu" href="#testmenu">Test menu</a>',
+          '    <div class="menu">',
+          '      <a class="menu-item" href="#sub1">Submenu 1</a>',
+          '    </div>',
+          '  </div>',
+          '</div>',
+          '<div class="btn-group">',
+          '  <button class="btn">Actions</button>',
+          '  <button class="btn" data-bs-toggle="menu"></button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Action 1</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const triggerMenuList = fixtureEl.querySelectorAll('[data-bs-toggle="menu"]')
+
+        expect(triggerMenuList).toHaveSize(2)
+
+        const [triggerMenuFirst, triggerMenuLast] = triggerMenuList
+
+        triggerMenuFirst.addEventListener('shown.bs.menu', () => {
+          expect(triggerMenuFirst).toHaveClass('show')
+          expect(fixtureEl.querySelectorAll('.menu.show')).toHaveSize(1)
+          document.body.click()
+        })
+
+        triggerMenuFirst.addEventListener('hidden.bs.menu', () => {
+          expect(fixtureEl.querySelectorAll('.menu.show')).toHaveSize(0)
+          triggerMenuLast.click()
+        })
+
+        triggerMenuLast.addEventListener('shown.bs.menu', () => {
+          expect(triggerMenuLast).toHaveClass('show')
+          expect(fixtureEl.querySelectorAll('.menu.show')).toHaveSize(1)
+          document.body.click()
+        })
+
+        triggerMenuLast.addEventListener('hidden.bs.menu', () => {
+          expect(fixtureEl.querySelectorAll('.menu.show')).toHaveSize(0)
+          resolve()
+        })
+
+        triggerMenuFirst.click()
+      })
+    })
+
+    it('should remove "show" class if body if tabbing outside of menu, with multiple menus', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <a class="btn" data-bs-toggle="menu" href="#testmenu">Test menu</a>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#sub1">Submenu 1</a>',
+          '  </div>',
+          '</div>',
+          '<div class="btn-group">',
+          '  <button class="btn">Actions</button>',
+          '  <button class="btn" data-bs-toggle="menu"></button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Action 1</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const triggerMenuList = fixtureEl.querySelectorAll('[data-bs-toggle="menu"]')
+
+        expect(triggerMenuList).toHaveSize(2)
+
+        const [triggerMenuFirst, triggerMenuLast] = triggerMenuList
+
+        triggerMenuFirst.addEventListener('shown.bs.menu', () => {
+          expect(triggerMenuFirst).toHaveClass('show')
+          expect(fixtureEl.querySelectorAll('.menu.show')).toHaveSize(1)
+
+          const keyup = createEvent('keyup')
+          keyup.key = 'Tab'
+
+          document.dispatchEvent(keyup)
+        })
+
+        triggerMenuFirst.addEventListener('hidden.bs.menu', () => {
+          expect(fixtureEl.querySelectorAll('.menu.show')).toHaveSize(0)
+          triggerMenuLast.click()
+        })
+
+        triggerMenuLast.addEventListener('shown.bs.menu', () => {
+          expect(triggerMenuLast).toHaveClass('show')
+          expect(fixtureEl.querySelectorAll('.menu.show')).toHaveSize(1)
+
+          const keyup = createEvent('keyup')
+          keyup.key = 'Tab'
+
+          document.dispatchEvent(keyup)
+        })
+
+        triggerMenuLast.addEventListener('hidden.bs.menu', () => {
+          expect(fixtureEl.querySelectorAll('.menu.show')).toHaveSize(0)
+          resolve()
+        })
+
+        triggerMenuFirst.click()
+      })
+    })
+
+    it('should be able to identify clicked menu, even with multiple menus in the same tag', () => {
+      fixtureEl.innerHTML = [
+        '<div>',
+        '  <button id="menuToggle1" class="btn" data-bs-toggle="menu">Menu toggle</button>',
+        '  <div id="menu1" class="menu">',
+        '    <a class="menu-item" href="#">Menu item</a>',
+        '  </div>',
+        '  <button id="menuToggle2" class="btn" data-bs-toggle="menu">Menu toggle</button>',
+        '  <div id="menu2" class="menu">',
+        '    <a class="menu-item" href="#">Menu item</a>',
+        '  </div>',
+        '</div>'
+      ].join('')
+
+      const menuToggle1 = fixtureEl.querySelector('#menuToggle1')
+      const menuToggle2 = fixtureEl.querySelector('#menuToggle2')
+      const menuEl1 = fixtureEl.querySelector('#menu1')
+      const menuEl2 = fixtureEl.querySelector('#menu2')
+      const spy = spyOn(Menu, 'getOrCreateInstance').and.callThrough()
+
+      menuToggle1.click()
+      expect(spy).toHaveBeenCalledWith(menuToggle1)
+
+      menuToggle2.click()
+      expect(spy).toHaveBeenCalledWith(menuToggle2)
+
+      menuEl1.click()
+      expect(spy).toHaveBeenCalledWith(menuToggle1)
+
+      menuEl2.click()
+      expect(spy).toHaveBeenCalledWith(menuToggle2)
+    })
+
+    it('should be able to show the proper menu, even with multiple menus in the same tag', () => {
+      fixtureEl.innerHTML = [
+        '<div>',
+        '  <button id="menuToggle1" class="btn" data-bs-toggle="menu">Menu toggle</button>',
+        '  <div id="menu1" class="menu">',
+        '    <a class="menu-item" href="#">Menu item</a>',
+        '  </div>',
+        '  <button id="menuToggle2" class="btn" data-bs-toggle="menu">Menu toggle</button>',
+        '  <div id="menu2" class="menu">',
+        '    <a class="menu-item" href="#">Menu item</a>',
+        '  </div>',
+        '</div>'
+      ].join('')
+
+      const menuToggle1 = fixtureEl.querySelector('#menuToggle1')
+      const menuToggle2 = fixtureEl.querySelector('#menuToggle2')
+      const menuEl1 = fixtureEl.querySelector('#menu1')
+      const menuEl2 = fixtureEl.querySelector('#menu2')
+
+      menuToggle1.click()
+      expect(menuEl1).toHaveClass('show')
+      expect(menuEl2).not.toHaveClass('show')
+
+      menuToggle2.click()
+      expect(menuEl1).not.toHaveClass('show')
+      expect(menuEl2).toHaveClass('show')
+    })
+
+    it('should fire hide and hidden event without a clickEvent if event type is not click', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#sub1">Submenu 1</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const triggerMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+
+        triggerMenu.addEventListener('hide.bs.menu', event => {
+          expect(event.clickEvent).toBeUndefined()
+        })
+
+        triggerMenu.addEventListener('hidden.bs.menu', event => {
+          expect(event.clickEvent).toBeUndefined()
+          resolve()
+        })
+
+        triggerMenu.addEventListener('shown.bs.menu', () => {
+          const keydown = createEvent('keydown')
+
+          keydown.key = 'Escape'
+          triggerMenu.dispatchEvent(keydown)
+        })
+
+        triggerMenu.click()
+      })
+    })
+
+    it('should bubble up the events to the parent elements', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div class="menu-parent">',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#subMenu">Sub menu</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const triggerMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menuParent = fixtureEl.querySelector('.menu-parent')
+        const menu = new Menu(triggerMenu)
+
+        const showFunction = jasmine.createSpy('showFunction')
+        menuParent.addEventListener('show.bs.menu', showFunction)
+
+        const shownFunction = jasmine.createSpy('shownFunction')
+        menuParent.addEventListener('shown.bs.menu', () => {
+          shownFunction()
+          menu.hide()
+        })
+
+        const hideFunction = jasmine.createSpy('hideFunction')
+        menuParent.addEventListener('hide.bs.menu', hideFunction)
+
+        menuParent.addEventListener('hidden.bs.menu', () => {
+          expect(showFunction).toHaveBeenCalled()
+          expect(shownFunction).toHaveBeenCalled()
+          expect(hideFunction).toHaveBeenCalled()
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should ignore keyboard events within <input>s and <textarea>s', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#sub1">Submenu 1</a>',
+          '    <input type="text">',
+          '    <textarea></textarea>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const triggerMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const input = fixtureEl.querySelector('input')
+        const textarea = fixtureEl.querySelector('textarea')
+
+        triggerMenu.addEventListener('shown.bs.menu', () => {
+          input.focus()
+          const keydown = createEvent('keydown')
+
+          keydown.key = 'ArrowUp'
+          input.dispatchEvent(keydown)
+
+          expect(document.activeElement).toEqual(input, 'input still focused')
+
+          textarea.focus()
+          textarea.dispatchEvent(keydown)
+
+          expect(document.activeElement).toEqual(textarea, 'textarea still focused')
+          resolve()
+        })
+
+        triggerMenu.click()
+      })
+    })
+
+    it('should skip disabled element when using keyboard navigation', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item disabled" href="#sub1">Submenu 1</a>',
+          '    <button class="menu-item" type="button" disabled>Disabled button</button>',
+          '    <a id="item1" class="menu-item" href="#">Another link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const triggerMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+
+        triggerMenu.addEventListener('shown.bs.menu', () => {
+          const keydown = createEvent('keydown')
+          keydown.key = 'ArrowDown'
+
+          triggerMenu.dispatchEvent(keydown)
+          triggerMenu.dispatchEvent(keydown)
+
+          expect(document.activeElement).not.toHaveClass('disabled')
+          expect(document.activeElement.hasAttribute('disabled')).toBeFalse()
+          resolve()
+        })
+
+        triggerMenu.click()
+      })
+    })
+
+    it('should skip hidden element when using keyboard navigation', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<style>',
+          '  .d-none {',
+          '    display: none;',
+          '  }',
+          '</style>',
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <button class="menu-item d-none" type="button">Hidden button by class</button>',
+          '    <a class="menu-item" href="#sub1" style="display: none">Hidden link</a>',
+          '    <a class="menu-item" href="#sub1" style="visibility: hidden">Hidden link</a>',
+          '    <a id="item1" class="menu-item" href="#">Another link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const triggerMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+
+        triggerMenu.addEventListener('shown.bs.menu', () => {
+          const keydown = createEvent('keydown')
+          keydown.key = 'ArrowDown'
+
+          triggerMenu.dispatchEvent(keydown)
+
+          expect(document.activeElement).not.toHaveClass('d-none')
+          expect(document.activeElement.style.display).not.toEqual('none')
+          expect(document.activeElement.style.visibility).not.toEqual('hidden')
+
+          resolve()
+        })
+
+        triggerMenu.click()
+      })
+    })
+
+    it('should focus next/previous element when using keyboard navigation', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a id="item1" class="menu-item" href="#">A link</a>',
+          '    <a id="item2" class="menu-item" href="#">Another link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const triggerMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const item1 = fixtureEl.querySelector('#item1')
+        const item2 = fixtureEl.querySelector('#item2')
+
+        triggerMenu.addEventListener('shown.bs.menu', () => {
+          const keydownArrowDown = createEvent('keydown')
+          keydownArrowDown.key = 'ArrowDown'
+
+          triggerMenu.dispatchEvent(keydownArrowDown)
+          expect(document.activeElement).toEqual(item1, 'item1 is focused')
+
+          document.activeElement.dispatchEvent(keydownArrowDown)
+          expect(document.activeElement).toEqual(item2, 'item2 is focused')
+
+          const keydownArrowUp = createEvent('keydown')
+          keydownArrowUp.key = 'ArrowUp'
+
+          document.activeElement.dispatchEvent(keydownArrowUp)
+          expect(document.activeElement).toEqual(item1, 'item1 is focused')
+
+          resolve()
+        })
+
+        triggerMenu.click()
+      })
+    })
+
+    it('should open the menu and focus on the last item when using ArrowUp for the first time', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a id="item1" class="menu-item" href="#">A link</a>',
+          '    <a id="item2" class="menu-item" href="#">Another link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const triggerMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const lastItem = fixtureEl.querySelector('#item2')
+
+        triggerMenu.addEventListener('shown.bs.menu', () => {
+          setTimeout(() => {
+            expect(document.activeElement).toEqual(lastItem, 'item2 is focused')
+            resolve()
+          })
+        })
+
+        const keydown = createEvent('keydown')
+        keydown.key = 'ArrowUp'
+        triggerMenu.dispatchEvent(keydown)
+      })
+    })
+
+    it('should open the menu and focus on the first item when using ArrowDown for the first time', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a id="item1" class="menu-item" href="#">A link</a>',
+          '    <a id="item2" class="menu-item" href="#">Another link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const triggerMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const firstItem = fixtureEl.querySelector('#item1')
+
+        triggerMenu.addEventListener('shown.bs.menu', () => {
+          setTimeout(() => {
+            expect(document.activeElement).toEqual(firstItem, 'item1 is focused')
+            resolve()
+          })
+        })
+
+        const keydown = createEvent('keydown')
+        keydown.key = 'ArrowDown'
+        triggerMenu.dispatchEvent(keydown)
+      })
+    })
+
+    it('should not close the menu if the user clicks on a text field within menu', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <input type="text">',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const triggerMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const input = fixtureEl.querySelector('input')
+
+        input.addEventListener('click', () => {
+          expect(triggerMenu).toHaveClass('show')
+          resolve()
+        })
+
+        triggerMenu.addEventListener('shown.bs.menu', () => {
+          expect(triggerMenu).toHaveClass('show')
+          input.dispatchEvent(createEvent('click'))
+        })
+
+        triggerMenu.click()
+      })
+    })
+
+    it('should not close the menu if the user clicks on a textarea within menu', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <textarea></textarea>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const triggerMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const textarea = fixtureEl.querySelector('textarea')
+
+        textarea.addEventListener('click', () => {
+          expect(triggerMenu).toHaveClass('show')
+          resolve()
+        })
+
+        triggerMenu.addEventListener('shown.bs.menu', () => {
+          expect(triggerMenu).toHaveClass('show')
+          textarea.dispatchEvent(createEvent('click'))
+        })
+
+        triggerMenu.click()
+      })
+    })
+
+    it('should close the menu if the user clicks on a text field that is not contained within menu', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '  </div>',
+          '</div>',
+          '<input type="text">'
+        ].join('')
+
+        const triggerMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const input = fixtureEl.querySelector('input')
+
+        triggerMenu.addEventListener('hidden.bs.menu', () => {
+          expect().nothing()
+          resolve()
+        })
+
+        triggerMenu.addEventListener('shown.bs.menu', () => {
+          input.dispatchEvent(createEvent('click', {
+            bubbles: true
+          }))
+        })
+
+        triggerMenu.click()
+      })
+    })
+
+    it('should ignore keyboard events for <input>s and <textarea>s within menu, except for escape key', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#sub1">Submenu 1</a>',
+          '    <input type="text">',
+          '    <textarea></textarea>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const triggerMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const input = fixtureEl.querySelector('input')
+        const textarea = fixtureEl.querySelector('textarea')
+
+        const test = (eventKey, elementToDispatch) => {
+          const event = createEvent('keydown')
+          event.key = eventKey
+          elementToDispatch.focus()
+          elementToDispatch.dispatchEvent(event)
+          expect(document.activeElement).toEqual(elementToDispatch, `${elementToDispatch.tagName} still focused`)
+        }
+
+        const keydownEscape = createEvent('keydown')
+        keydownEscape.key = 'Escape'
+
+        triggerMenu.addEventListener('shown.bs.menu', () => {
+          // Key Space
+          test('Space', input)
+
+          test('Space', textarea)
+
+          // Key ArrowUp
+          test('ArrowUp', input)
+
+          test('ArrowUp', textarea)
+
+          // Key ArrowDown
+          test('ArrowDown', input)
+
+          test('ArrowDown', textarea)
+
+          // Key Escape
+          input.focus()
+          input.dispatchEvent(keydownEscape)
+
+          expect(triggerMenu).not.toHaveClass('show')
+          resolve()
+        })
+
+        triggerMenu.click()
+      })
+    })
+
+    it('should not open menu if escape key was pressed on the toggle', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div class="tabs">',
+          '  <div>',
+          '    <button disabled class="btn" data-bs-toggle="menu">Menu</button>',
+          '    <div class="menu">',
+          '      <a class="menu-item" href="#">Secondary link</a>',
+          '      <a class="menu-item" href="#">Something else here</a>',
+          '      <div class="divider"></div>',
+          '      <a class="menu-item" href="#">Another link</a>',
+          '    </div>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const triggerMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(triggerMenu)
+        const button = fixtureEl.querySelector('button[data-bs-toggle="menu"]')
+
+        const spy = spyOn(menu, 'toggle')
+
+        // Key escape
+        button.focus()
+        // Key escape
+        const keydownEscape = createEvent('keydown')
+        keydownEscape.key = 'Escape'
+        button.dispatchEvent(keydownEscape)
+
+        setTimeout(() => {
+          expect(spy).not.toHaveBeenCalled()
+          expect(triggerMenu).not.toHaveClass('show')
+          resolve()
+        }, 20)
+      })
+    })
+
+    it('should propagate escape key events if menu is closed', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div class="parent">',
+          '  <div>',
+          '    <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '    <div class="menu">',
+          '      <a class="menu-item" href="#">Some Item</a>',
+          '    </div>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const parent = fixtureEl.querySelector('.parent')
+        const toggle = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+
+        const parentKeyHandler = jasmine.createSpy('parentKeyHandler')
+
+        parent.addEventListener('keydown', parentKeyHandler)
+        parent.addEventListener('keyup', () => {
+          expect(parentKeyHandler).toHaveBeenCalled()
+          resolve()
+        })
+
+        const keydownEscape = createEvent('keydown', { bubbles: true })
+        keydownEscape.key = 'Escape'
+        const keyupEscape = createEvent('keyup', { bubbles: true })
+        keyupEscape.key = 'Escape'
+
+        toggle.focus()
+        toggle.dispatchEvent(keydownEscape)
+        toggle.dispatchEvent(keyupEscape)
+      })
+    })
+
+    it('should not propagate escape key events if menu is open', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div class="parent">',
+          '  <div>',
+          '    <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '    <div class="menu">',
+          '      <a class="menu-item" href="#">Some Item</a>',
+          '    </div>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const parent = fixtureEl.querySelector('.parent')
+        const toggle = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+
+        const parentKeyHandler = jasmine.createSpy('parentKeyHandler')
+
+        parent.addEventListener('keydown', parentKeyHandler)
+        parent.addEventListener('keyup', () => {
+          expect(parentKeyHandler).not.toHaveBeenCalled()
+          resolve()
+        })
+
+        const keydownEscape = createEvent('keydown', { bubbles: true })
+        keydownEscape.key = 'Escape'
+        const keyupEscape = createEvent('keyup', { bubbles: true })
+        keyupEscape.key = 'Escape'
+
+        toggle.click()
+        toggle.dispatchEvent(keydownEscape)
+        toggle.dispatchEvent(keyupEscape)
+      })
+    })
+
+    it('should close menu using `escape` button, and return focus to its trigger', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Some Item</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const toggle = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+
+        toggle.addEventListener('shown.bs.menu', () => {
+          const keydownEvent = createEvent('keydown', { bubbles: true })
+          keydownEvent.key = 'ArrowDown'
+          toggle.dispatchEvent(keydownEvent)
+          keydownEvent.key = 'Escape'
+          toggle.dispatchEvent(keydownEvent)
+        })
+
+        toggle.addEventListener('hidden.bs.menu', () => setTimeout(() => {
+          expect(document.activeElement).toEqual(toggle)
+          resolve()
+        }))
+
+        toggle.click()
+      })
+    })
+
+    it('should close menu (only) by clicking inside the menu menu when it has data-attribute `data-bs-auto-close="inside"`', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" data-bs-auto-close="inside">Menu toggle</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Menu item</a>',
+          ' </div>',
+          '</div>'
+        ].join('')
+
+        const menuToggle = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menuEl = fixtureEl.querySelector('.menu')
+
+        const expectMenuToBeOpened = () => setTimeout(() => {
+          expect(menuToggle).toHaveClass('show')
+          menuEl.click()
+        }, 150)
+
+        menuToggle.addEventListener('shown.bs.menu', () => {
+          document.documentElement.click()
+          expectMenuToBeOpened()
+        })
+
+        menuToggle.addEventListener('hidden.bs.menu', () => setTimeout(() => {
+          expect(menuToggle).not.toHaveClass('show')
+          resolve()
+        }))
+
+        menuToggle.click()
+      })
+    })
+
+    it('should close menu (only) by clicking outside the menu menu when it has data-attribute `data-bs-auto-close="outside"`', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" data-bs-auto-close="outside">Menu toggle</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Menu item</a>',
+          ' </div>',
+          '</div>'
+        ].join('')
+
+        const menuToggle = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menuEl = fixtureEl.querySelector('.menu')
+
+        const expectMenuToBeOpened = () => setTimeout(() => {
+          expect(menuToggle).toHaveClass('show')
+          document.documentElement.click()
+        }, 150)
+
+        menuToggle.addEventListener('shown.bs.menu', () => {
+          menuEl.click()
+          expectMenuToBeOpened()
+        })
+
+        menuToggle.addEventListener('hidden.bs.menu', () => {
+          expect(menuToggle).not.toHaveClass('show')
+          resolve()
+        })
+
+        menuToggle.click()
+      })
+    })
+
+    it('should not close menu by clicking inside or outside the menu menu when it has data-attribute `data-bs-auto-close="false"`', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" data-bs-auto-close="false">Menu toggle</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Menu item</a>',
+          ' </div>',
+          '</div>'
+        ].join('')
+
+        const menuToggle = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menuEl = fixtureEl.querySelector('.menu')
+
+        const expectMenuToBeOpened = (shouldTriggerClick = true) => setTimeout(() => {
+          expect(menuToggle).toHaveClass('show')
+          if (shouldTriggerClick) {
+            document.documentElement.click()
+          } else {
+            resolve()
+          }
+
+          expectMenuToBeOpened(false)
+        }, 150)
+
+        menuToggle.addEventListener('shown.bs.menu', () => {
+          menuEl.click()
+          expectMenuToBeOpened()
+        })
+
+        menuToggle.click()
+      })
+    })
+
+    it('should be able to identify clicked menu, no matter the markup order', () => {
+      fixtureEl.innerHTML = [
+        '<div class="menu">',
+        '  <div class="menu">',
+        '    <a class="menu-item" href="#">Menu item</a>',
+        '  </div>',
+        '  <button class="btn" data-bs-toggle="menu">Menu toggle</button>',
+        '</div>'
+      ].join('')
+
+      const menuToggle = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+      const menuEl = fixtureEl.querySelector('.menu')
+      const spy = spyOn(Menu, 'getOrCreateInstance').and.callThrough()
+
+      menuToggle.click()
+      expect(spy).toHaveBeenCalledWith(menuToggle)
+      menuEl.click()
+      expect(spy).toHaveBeenCalledWith(menuToggle)
+    })
+  })
+
+  describe('getInstance', () => {
+    it('should return menu instance', () => {
+      fixtureEl.innerHTML = '<div></div>'
+
+      const div = fixtureEl.querySelector('div')
+      const menu = new Menu(div)
+
+      expect(Menu.getInstance(div)).toEqual(menu)
+      expect(Menu.getInstance(div)).toBeInstanceOf(Menu)
+    })
+
+    it('should return null when there is no menu instance', () => {
+      fixtureEl.innerHTML = '<div></div>'
+
+      const div = fixtureEl.querySelector('div')
+
+      expect(Menu.getInstance(div)).toBeNull()
+    })
+  })
+
+  describe('getOrCreateInstance', () => {
+    it('should return menu instance', () => {
+      fixtureEl.innerHTML = '<div></div>'
+
+      const div = fixtureEl.querySelector('div')
+      const menu = new Menu(div)
+
+      expect(Menu.getOrCreateInstance(div)).toEqual(menu)
+      expect(Menu.getInstance(div)).toEqual(Menu.getOrCreateInstance(div, {}))
+      expect(Menu.getOrCreateInstance(div)).toBeInstanceOf(Menu)
+    })
+
+    it('should return new instance when there is no menu instance', () => {
+      fixtureEl.innerHTML = '<div></div>'
+
+      const div = fixtureEl.querySelector('div')
+
+      expect(Menu.getInstance(div)).toBeNull()
+      expect(Menu.getOrCreateInstance(div)).toBeInstanceOf(Menu)
+    })
+
+    it('should return new instance when there is no menu instance with given configuration', () => {
+      fixtureEl.innerHTML = '<div></div>'
+
+      const div = fixtureEl.querySelector('div')
+
+      expect(Menu.getInstance(div)).toBeNull()
+      const menu = Menu.getOrCreateInstance(div, {
+        display: 'dynamic'
+      })
+      expect(menu).toBeInstanceOf(Menu)
+
+      expect(menu._config.display).toEqual('dynamic')
+    })
+
+    it('should return the instance when exists without given configuration', () => {
+      fixtureEl.innerHTML = '<div></div>'
+
+      const div = fixtureEl.querySelector('div')
+      const menu = new Menu(div, {
+        display: 'dynamic'
+      })
+      expect(Menu.getInstance(div)).toEqual(menu)
+
+      const menu2 = Menu.getOrCreateInstance(div, {
+        display: 'static'
+      })
+      expect(menu).toBeInstanceOf(Menu)
+      expect(menu2).toEqual(menu)
+
+      expect(menu2._config.display).toEqual('dynamic')
+    })
+  })
+
+  it('should open menu when pressing keydown or keyup', () => {
+    return new Promise(resolve => {
+      fixtureEl.innerHTML = [
+        '<div class="menu-parent">',
+        '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+        '  <div class="menu">',
+        '    <a class="menu-item disabled" href="#sub1">Submenu 1</a>',
+        '    <button class="menu-item" type="button" disabled>Disabled button</button>',
+        '    <a id="item1" class="menu-item" href="#">Another link</a>',
+        '  </div>',
+        '</div>'
+      ].join('')
+
+      const triggerMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+      const menuWrapper = fixtureEl.querySelector('.menu-parent')
+
+      const keydown = createEvent('keydown')
+      keydown.key = 'ArrowDown'
+
+      const keyup = createEvent('keyup')
+      keyup.key = 'ArrowUp'
+
+      const handleArrowDown = () => {
+        expect(triggerMenu).toHaveClass('show')
+        expect(triggerMenu.getAttribute('aria-expanded')).toEqual('true')
+        setTimeout(() => {
+          Menu.getInstance(triggerMenu).hide()
+          keydown.key = 'ArrowUp'
+          triggerMenu.dispatchEvent(keyup)
+        }, 20)
+      }
+
+      const handleArrowUp = () => {
+        expect(triggerMenu).toHaveClass('show')
+        expect(triggerMenu.getAttribute('aria-expanded')).toEqual('true')
+        resolve()
+      }
+
+      menuWrapper.addEventListener('shown.bs.menu', event => {
+        if (event.target.key === 'ArrowDown') {
+          handleArrowDown()
+        } else {
+          handleArrowUp()
+        }
+      })
+
+      triggerMenu.dispatchEvent(keydown)
+    })
+  })
+
+  it('should allow `data-bs-toggle="menu"` click events to bubble up', () => {
+    fixtureEl.innerHTML = [
+      '<div>',
+      '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+      '  <div class="menu">',
+      '    <a class="menu-item" href="#">Secondary link</a>',
+      '  </div>',
+      '</div>'
+    ].join('')
+
+    const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+    const clickListener = jasmine.createSpy('clickListener')
+    const delegatedClickListener = jasmine.createSpy('delegatedClickListener')
+
+    btnMenu.addEventListener('click', clickListener)
+    document.addEventListener('click', delegatedClickListener)
+
+    btnMenu.click()
+
+    expect(clickListener).toHaveBeenCalled()
+    expect(delegatedClickListener).toHaveBeenCalled()
+  })
+
+  it('should open the menu when clicking the child element inside `data-bs-toggle="menu"`', () => {
+    return new Promise(resolve => {
+      fixtureEl.innerHTML = [
+        '<div class="container">',
+        '  <div>',
+        '    <button class="btn" data-bs-toggle="menu"><span id="childElement">Menu</span></button>',
+        '    <div class="menu">',
+        '      <a class="menu-item" href="#subMenu">Sub menu</a>',
+        '    </div>',
+        '  </div>',
+        '</div>'
+      ].join('')
+
+      const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+      const childElement = fixtureEl.querySelector('#childElement')
+
+      btnMenu.addEventListener('shown.bs.menu', () => setTimeout(() => {
+        expect(btnMenu).toHaveClass('show')
+        expect(btnMenu.getAttribute('aria-expanded')).toEqual('true')
+        resolve()
+      }))
+
+      childElement.click()
+    })
+  })
+
+  describe('responsive placements', () => {
+    it('should parse responsive placement string and create instance', () => {
+      fixtureEl.innerHTML = [
+        '<div>',
+        '  <button class="btn" data-bs-toggle="menu" data-bs-placement="bottom-start md:top-end">Menu</button>',
+        '  <div class="menu">',
+        '    <a class="menu-item" href="#">Link</a>',
+        '  </div>',
+        '</div>'
+      ].join('')
+
+      const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+      const menu = new Menu(btnMenu)
+
+      // Menu should have parsed responsive placements
+      expect(menu._responsivePlacements).not.toBeNull()
+      expect(menu._responsivePlacements.xs).toEqual('bottom-start')
+      expect(menu._responsivePlacements.md).toEqual('top-end')
+    })
+
+    it('should return null for non-responsive placement', () => {
+      fixtureEl.innerHTML = [
+        '<div>',
+        '  <button class="btn" data-bs-toggle="menu" data-bs-placement="bottom-start">Menu</button>',
+        '  <div class="menu">',
+        '    <a class="menu-item" href="#">Link</a>',
+        '  </div>',
+        '</div>'
+      ].join('')
+
+      const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+      const menu = new Menu(btnMenu)
+
+      // Non-responsive placement should not create responsive placements object
+      expect(menu._responsivePlacements).toBeNull()
+    })
+  })
+
+  describe('virtual element reference', () => {
+    it('should work with virtual element as reference', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Link</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+
+        // Virtual element with getBoundingClientRect
+        const virtualElement = {
+          getBoundingClientRect() {
+            return {
+              width: 100,
+              height: 50,
+              top: 100,
+              left: 100,
+              right: 200,
+              bottom: 150,
+              x: 100,
+              y: 100
+            }
+          }
+        }
+
+        const menu = new Menu(btnMenu, {
+          reference: virtualElement
+        })
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(document.querySelector('.menu.show')).not.toBeNull()
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should throw error for object reference without getBoundingClientRect', () => {
+      fixtureEl.innerHTML = [
+        '<div>',
+        '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+        '  <div class="menu">',
+        '    <a class="menu-item" href="#">Link</a>',
+        '  </div>',
+        '</div>'
+      ].join('')
+
+      const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+
+      expect(() => {
+        // eslint-disable-next-line no-new
+        new Menu(btnMenu, {
+          reference: { someProperty: 'value' } // Object without getBoundingClientRect
+        })
+      }).toThrowError(TypeError)
+    })
+  })
+
+  describe('selectMenuItem', () => {
+    it('should do nothing when menu has no visible items', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Simulate ArrowDown key - should not throw when no items
+          const keydown = createEvent('keydown')
+          keydown.key = 'ArrowDown'
+          btnMenu.dispatchEvent(keydown)
+
+          // No error thrown means test passed
+          expect(true).toBeTrue()
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+  })
+
+  describe('submenu', () => {
+    it('should open submenu on click', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li><a class="menu-item" href="#">Action</a></li>',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action 1</a></li>',
+          '        <li><a class="menu-item" href="#">Sub-action 2</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          submenuTrigger.click()
+
+          expect(submenu.classList.contains('show')).toBeTrue()
+          expect(submenuWrapper.classList.contains('show')).toBeTrue()
+          resolve()
+        })
+
+        // eslint-disable-next-line no-new
+        new Menu(btnMenu)
+        btnMenu.click()
+      })
+    })
+
+    it('should toggle submenu on click', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Open submenu
+          submenuTrigger.click()
+          expect(submenu.classList.contains('show')).toBeTrue()
+
+          // Close submenu
+          submenuTrigger.click()
+          expect(submenu.classList.contains('show')).toBeFalse()
+          resolve()
+        })
+
+        // eslint-disable-next-line no-new
+        new Menu(btnMenu)
+        btnMenu.click()
+      })
+    })
+
+    it('should close sibling submenus when opening a new one', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu" id="submenu1">',
+          '      <button class="menu-item" type="button">Submenu 1</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Action 1</a></li>',
+          '      </ul>',
+          '    </li>',
+          '    <li class="submenu" id="submenu2">',
+          '      <button class="menu-item" type="button">Submenu 2</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Action 2</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const submenu1Wrapper = fixtureEl.querySelector('#submenu1')
+        const submenu2Wrapper = fixtureEl.querySelector('#submenu2')
+        const submenu1Trigger = submenu1Wrapper.querySelector('.menu-item')
+        const submenu2Trigger = submenu2Wrapper.querySelector('.menu-item')
+        const submenu1 = submenu1Wrapper.querySelector('.menu')
+        const submenu2 = submenu2Wrapper.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Open first submenu
+          submenu1Trigger.click()
+          expect(submenu1.classList.contains('show')).toBeTrue()
+          expect(submenu2.classList.contains('show')).toBeFalse()
+
+          // Open second submenu - first should close
+          submenu2Trigger.click()
+          expect(submenu1.classList.contains('show')).toBeFalse()
+          expect(submenu2.classList.contains('show')).toBeTrue()
+          resolve()
+        })
+
+        // eslint-disable-next-line no-new
+        new Menu(btnMenu)
+        btnMenu.click()
+      })
+    })
+
+    it('should open submenu with ArrowRight key', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Focus the submenu trigger
+          submenuTrigger.focus()
+
+          // Press ArrowRight to open submenu
+          const keydown = createEvent('keydown')
+          keydown.key = 'ArrowRight'
+          submenuTrigger.dispatchEvent(keydown)
+
+          setTimeout(() => {
+            // Submenu should be open
+            expect(submenu.classList.contains('show')).toBeTrue()
+            expect(submenuWrapper.classList.contains('show')).toBeTrue()
+            resolve()
+          }, 20)
+        })
+
+        // eslint-disable-next-line no-new
+        new Menu(btnMenu)
+        btnMenu.click()
+      })
+    })
+
+    it('should close submenu via internal method', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Open submenu first using internal method
+          menu._openSubmenu(submenuTrigger, submenu, submenuWrapper)
+          expect(submenu.classList.contains('show')).toBeTrue()
+          expect(menu._openSubmenus.size).toEqual(1)
+
+          // Close submenu using internal method
+          menu._closeSubmenu(submenu, submenuWrapper)
+          expect(submenu.classList.contains('show')).toBeFalse()
+          expect(menu._openSubmenus.size).toEqual(0)
+
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should open submenu with Enter key', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          submenuTrigger.focus()
+
+          const keydown = createEvent('keydown')
+          keydown.key = 'Enter'
+          submenuTrigger.dispatchEvent(keydown)
+
+          setTimeout(() => {
+            // Submenu should be open
+            expect(submenu.classList.contains('show')).toBeTrue()
+            expect(submenuWrapper.classList.contains('show')).toBeTrue()
+            resolve()
+          }, 20)
+        })
+
+        // eslint-disable-next-line no-new
+        new Menu(btnMenu)
+        btnMenu.click()
+      })
+    })
+
+    it('should open submenu with Space key', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          submenuTrigger.focus()
+
+          const keydown = createEvent('keydown')
+          keydown.key = ' '
+          submenuTrigger.dispatchEvent(keydown)
+
+          setTimeout(() => {
+            // Submenu should be open
+            expect(submenu.classList.contains('show')).toBeTrue()
+            expect(submenuWrapper.classList.contains('show')).toBeTrue()
+            resolve()
+          }, 20)
+        })
+
+        // eslint-disable-next-line no-new
+        new Menu(btnMenu)
+        btnMenu.click()
+      })
+    })
+
+    it('should close all submenus when main menu closes', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Open submenu
+          submenuTrigger.click()
+          expect(submenu.classList.contains('show')).toBeTrue()
+
+          // Close main menu
+          menu.hide()
+        })
+
+        btnMenu.addEventListener('hidden.bs.menu', () => {
+          expect(submenu.classList.contains('show')).toBeFalse()
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should close nested submenus when closing parent submenu', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu" id="level1">',
+          '      <button class="menu-item" type="button">Level 1</button>',
+          '      <ul class="menu">',
+          '        <li class="submenu" id="level2">',
+          '          <button class="menu-item" type="button">Level 2</button>',
+          '          <ul class="menu">',
+          '            <li><a class="menu-item" href="#">Level 3 action</a></li>',
+          '          </ul>',
+          '        </li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const level1Wrapper = fixtureEl.querySelector('#level1')
+        const level2Wrapper = fixtureEl.querySelector('#level2')
+        const level1Trigger = level1Wrapper.querySelector(':scope > .menu-item')
+        const level2Trigger = level2Wrapper.querySelector(':scope > .menu-item')
+        const level1Submenu = level1Wrapper.querySelector(':scope > .menu')
+        const level2Submenu = level2Wrapper.querySelector(':scope > .menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Open level 1
+          level1Trigger.click()
+          expect(level1Submenu.classList.contains('show')).toBeTrue()
+
+          // Open level 2
+          level2Trigger.click()
+          expect(level2Submenu.classList.contains('show')).toBeTrue()
+
+          // Close level 1 - level 2 should also close
+          level1Trigger.click()
+          expect(level1Submenu.classList.contains('show')).toBeFalse()
+          expect(level2Submenu.classList.contains('show')).toBeFalse()
+          resolve()
+        })
+
+        // eslint-disable-next-line no-new
+        new Menu(btnMenu)
+        btnMenu.click()
+      })
+    })
+
+    it('should have submenu items visible and focusable', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu" id="submenu">',
+          '        <li><a id="sub1" class="menu-item" href="#">Sub 1</a></li>',
+          '        <li><a id="sub2" class="menu-item" href="#">Sub 2</a></li>',
+          '        <li><a id="sub3" class="menu-item" href="#">Sub 3</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = fixtureEl.querySelector('#submenu')
+        const sub1 = fixtureEl.querySelector('#sub1')
+        const sub2 = fixtureEl.querySelector('#sub2')
+        const sub3 = fixtureEl.querySelector('#sub3')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Open submenu using internal method
+          menu._openSubmenu(submenuTrigger, submenu, submenuWrapper)
+
+          // Submenu items should be visible and focusable
+          expect(submenu.classList.contains('show')).toBeTrue()
+
+          sub1.focus()
+          expect(document.activeElement).toEqual(sub1)
+
+          sub2.focus()
+          expect(document.activeElement).toEqual(sub2)
+
+          sub3.focus()
+          expect(document.activeElement).toEqual(sub3)
+
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should close all submenus when hiding menu', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu" id="submenu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = fixtureEl.querySelector('#submenu')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Open submenu using internal method
+          menu._openSubmenu(submenuTrigger, submenu, submenuWrapper)
+          expect(submenu.classList.contains('show')).toBeTrue()
+          expect(menu._openSubmenus.size).toEqual(1)
+
+          // Hide the main menu
+          menu.hide()
+        })
+
+        btnMenu.addEventListener('hidden.bs.menu', () => {
+          // All submenus should be closed
+          expect(submenu.classList.contains('show')).toBeFalse()
+          expect(menu._openSubmenus.size).toEqual(0)
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should respect submenuTrigger: click option', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" data-bs-submenu-trigger="click">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+        const menu = new Menu(btnMenu)
+
+        expect(menu._config.submenuTrigger).toEqual('click')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Click should work
+          submenuTrigger.click()
+          expect(submenu.classList.contains('show')).toBeTrue()
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should respect submenuTrigger: hover option', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" data-bs-submenu-trigger="hover">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const menu = new Menu(btnMenu)
+
+        expect(menu._config.submenuTrigger).toEqual('hover')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Hover should open submenu
+          const mouseenter = createEvent('mouseenter', { bubbles: true })
+          submenuTrigger.dispatchEvent(mouseenter)
+
+          // Note: In JSDOM, hover events may not work perfectly,
+          // but we verify the config is respected
+          expect(menu._config.submenuTrigger).toEqual('hover')
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should respect submenuDelay config option', () => {
+      fixtureEl.innerHTML = [
+        '<div>',
+        '  <button class="btn" data-bs-toggle="menu" data-bs-submenu-delay="500">Menu</button>',
+        '  <ul class="menu">',
+        '    <li class="submenu">',
+        '      <button class="menu-item" type="button">More options</button>',
+        '      <ul class="menu">',
+        '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+        '      </ul>',
+        '    </li>',
+        '  </ul>',
+        '</div>'
+      ].join('')
+
+      const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+      const menu = new Menu(btnMenu)
+
+      expect(menu._config.submenuDelay).toEqual(500)
+    })
+
+    it('should position submenu using Floating UI', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Open submenu
+          submenuTrigger.click()
+
+          // Floating UI should set position styles
+          setTimeout(() => {
+            expect(submenu.style.position).toEqual('absolute')
+            expect(submenu.style.left).toBeTruthy()
+            expect(submenu.style.top).toBeTruthy()
+            resolve()
+          }, 50)
+        })
+
+        // eslint-disable-next-line no-new
+        new Menu(btnMenu)
+        btnMenu.click()
+      })
+    })
+
+    it('should set data-bs-placement attribute on submenu', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          submenuTrigger.click()
+
+          setTimeout(() => {
+            // Should have a placement data attribute
+            const placement = submenu.dataset.bsPlacement
+            expect(placement).toBeTruthy()
+            // Should be a valid placement
+            expect(['left-start', 'right-start', 'left-end', 'right-end', 'left', 'right'])
+              .toContain(placement)
+            resolve()
+          }, 50)
+        })
+
+        // eslint-disable-next-line no-new
+        new Menu(btnMenu)
+        btnMenu.click()
+      })
+    })
+
+    it('should cleanup Floating UI autoUpdate on submenu close', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Open submenu
+          submenuTrigger.click()
+          expect(menu._openSubmenus.size).toEqual(1)
+          expect(menu._openSubmenus.has(submenu)).toBeTrue()
+
+          // Close submenu
+          submenuTrigger.click()
+          expect(menu._openSubmenus.size).toEqual(0)
+          expect(menu._openSubmenus.has(submenu)).toBeFalse()
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should schedule submenu close with delay', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu, { submenuDelay: 50 })
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Open submenu
+          menu._openSubmenu(submenuTrigger, submenu, submenuWrapper)
+          expect(submenu.classList.contains('show')).toBeTrue()
+
+          // Schedule close
+          menu._scheduleSubmenuClose(submenu, submenuWrapper)
+          expect(menu._submenuCloseTimeouts.has(submenu)).toBeTrue()
+
+          // Still open immediately
+          expect(submenu.classList.contains('show')).toBeTrue()
+
+          // After delay, should be closed
+          setTimeout(() => {
+            expect(submenu.classList.contains('show')).toBeFalse()
+            expect(menu._submenuCloseTimeouts.has(submenu)).toBeFalse()
+            resolve()
+          }, 100)
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should cancel scheduled submenu close', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu, { submenuDelay: 50 })
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Open submenu
+          menu._openSubmenu(submenuTrigger, submenu, submenuWrapper)
+
+          // Schedule close
+          menu._scheduleSubmenuClose(submenu, submenuWrapper)
+          expect(menu._submenuCloseTimeouts.has(submenu)).toBeTrue()
+
+          // Cancel the close
+          menu._cancelSubmenuCloseTimeout(submenu)
+          expect(menu._submenuCloseTimeouts.has(submenu)).toBeFalse()
+
+          // After delay, should still be open
+          setTimeout(() => {
+            expect(submenu.classList.contains('show')).toBeTrue()
+            resolve()
+          }, 100)
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should clear all submenu timeouts on dispose', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu, { submenuDelay: 200 })
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Open submenu and schedule close
+          menu._openSubmenu(submenuTrigger, submenu, submenuWrapper)
+          menu._scheduleSubmenuClose(submenu, submenuWrapper)
+          expect(menu._submenuCloseTimeouts.size).toEqual(1)
+
+          // Clear all timeouts
+          menu._clearAllSubmenuTimeouts()
+          expect(menu._submenuCloseTimeouts.size).toEqual(0)
+
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should detect point inside triangle', () => {
+      fixtureEl.innerHTML = [
+        '<div>',
+        '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+        '  <ul class="menu">',
+        '    <li class="submenu">',
+        '      <button class="menu-item" type="button">More options</button>',
+        '      <ul class="menu">',
+        '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+        '      </ul>',
+        '    </li>',
+        '  </ul>',
+        '</div>'
+      ].join('')
+
+      const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+      const menu = new Menu(btnMenu)
+
+      // Triangle with vertices at (0,0), (10,0), (5,10)
+      const v1 = { x: 0, y: 0 }
+      const v2 = { x: 10, y: 0 }
+      const v3 = { x: 5, y: 10 }
+
+      // Point inside triangle
+      const inside = { x: 5, y: 5 }
+      expect(menu._pointInTriangle(inside, v1, v2, v3)).toBeTrue()
+
+      // Point outside triangle
+      const outside = { x: 20, y: 20 }
+      expect(menu._pointInTriangle(outside, v1, v2, v3)).toBeFalse()
+
+      // Point on edge should be inside
+      const onEdge = { x: 5, y: 0 }
+      expect(menu._pointInTriangle(onEdge, v1, v2, v3)).toBeTrue()
+    })
+
+    it('should track mouse position for safe triangle', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Call track method directly
+          menu._trackMousePosition({ clientX: 100, clientY: 200 })
+
+          // Should have tracked position in hover intent data
+          expect(menu._hoverIntentData).toBeDefined()
+          expect(menu._hoverIntentData.x).toEqual(100)
+          expect(menu._hoverIntentData.y).toEqual(200)
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should handle hover trigger opening submenu via internal method', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" data-bs-submenu-trigger="hover">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+
+        expect(menu._config.submenuTrigger).toEqual('hover')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Use internal handler directly with mock event
+          const mockEvent = { target: submenuTrigger }
+          menu._onSubmenuTriggerEnter(mockEvent)
+
+          // Submenu should open
+          expect(submenu.classList.contains('show')).toBeTrue()
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should handle submenu mouseleave with close delay', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu" data-bs-submenu-trigger="hover" data-bs-submenu-delay="50">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Open submenu
+          menu._openSubmenu(submenuTrigger, submenu, submenuWrapper)
+          expect(submenu.classList.contains('show')).toBeTrue()
+
+          // Simulate mouseleave from submenu wrapper
+          const mouseleave = new MouseEvent('mouseleave', { bubbles: true })
+          Object.defineProperty(mouseleave, 'target', { value: submenuWrapper })
+          menu._onSubmenuLeave(mouseleave)
+
+          // Should schedule close
+          expect(menu._submenuCloseTimeouts.has(submenu)).toBeTrue()
+
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should not schedule close if submenu is not open', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Try mouseleave without opening submenu first
+          const mouseleave = new MouseEvent('mouseleave', { bubbles: true })
+          Object.defineProperty(mouseleave, 'target', { value: submenuWrapper })
+          menu._onSubmenuLeave(mouseleave)
+
+          // Should not schedule close since submenu wasn't open
+          expect(menu._submenuCloseTimeouts.size).toEqual(0)
+
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should not open submenu if trigger element not found', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Mock event with target that's not a submenu trigger
+          const mockEvent = { target: btnMenu }
+          menu._onSubmenuTriggerEnter(mockEvent)
+
+          // No submenus should be open
+          expect(menu._openSubmenus.size).toEqual(0)
+
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should not close submenu if already closed', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Try to close submenu that was never opened
+          menu._closeSubmenu(submenu, submenuWrapper)
+
+          // Should not throw, openSubmenus should still be empty
+          expect(menu._openSubmenus.size).toEqual(0)
+
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should handle _isMovingTowardSubmenu with no hover data', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // No hover data tracked yet
+          menu._hoverIntentData = null
+
+          const mockEvent = { clientX: 100, clientY: 100 }
+          const result = menu._isMovingTowardSubmenu(mockEvent, submenu)
+
+          // Should return false when no hover data
+          expect(result).toBeFalse()
+
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should handle click on submenu trigger when submenu is already open', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Open submenu
+          menu._openSubmenu(submenuTrigger, submenu, submenuWrapper)
+          expect(submenu.classList.contains('show')).toBeTrue()
+
+          // Click handler should toggle (close it)
+          const mockEvent = {
+            target: submenuTrigger,
+            preventDefault() {},
+            stopPropagation() {}
+          }
+          menu._onSubmenuTriggerClick(mockEvent)
+
+          expect(submenu.classList.contains('show')).toBeFalse()
+
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should cancel pending timeout when opening submenu', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu, { submenuDelay: 200 })
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Open submenu
+          menu._openSubmenu(submenuTrigger, submenu, submenuWrapper)
+
+          // Schedule close
+          menu._scheduleSubmenuClose(submenu, submenuWrapper)
+          expect(menu._submenuCloseTimeouts.has(submenu)).toBeTrue()
+
+          // Re-enter submenu trigger should cancel timeout
+          const mockEvent = { target: submenuTrigger }
+          menu._onSubmenuTriggerEnter(mockEvent)
+
+          // Timeout should be cancelled
+          expect(menu._submenuCloseTimeouts.has(submenu)).toBeFalse()
+
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should handle _onSubmenuTriggerClick with non-matching target', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li><a class="menu-item" href="#">Regular item</a></li>',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+        const regularItem = fixtureEl.querySelector('.menu > li > a')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Click on regular item (not submenu trigger)
+          const mockEvent = {
+            target: regularItem,
+            preventDefault() {},
+            stopPropagation() {}
+          }
+          menu._onSubmenuTriggerClick(mockEvent)
+
+          // No submenus should be affected
+          expect(menu._openSubmenus.size).toEqual(0)
+
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should handle _onSubmenuLeave when not moving toward submenu', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu" style="position: absolute; left: 200px; top: 0; width: 100px; height: 100px;">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu, { submenuDelay: 50 })
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Open submenu
+          menu._openSubmenu(submenuTrigger, submenu, submenuWrapper)
+
+          // Track mouse position far from submenu
+          menu._trackMousePosition({ clientX: 0, clientY: 0 })
+
+          // Simulate mouseleave moving away from submenu
+          const mockEvent = {
+            target: submenuWrapper,
+            clientX: -100,
+            clientY: -100
+          }
+          menu._onSubmenuLeave(mockEvent)
+
+          // Should schedule close since not moving toward submenu
+          expect(menu._submenuCloseTimeouts.has(submenu)).toBeTrue()
+
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should cancel timeout when calling cancelSubmenuCloseTimeout', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu" id="submenu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu, { submenuDelay: 200 })
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = fixtureEl.querySelector('#submenu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Open submenu
+          menu._openSubmenu(submenuTrigger, submenu, submenuWrapper)
+
+          // Schedule close
+          menu._scheduleSubmenuClose(submenu, submenuWrapper)
+          expect(menu._submenuCloseTimeouts.has(submenu)).toBeTrue()
+
+          // Cancel the timeout directly
+          menu._cancelSubmenuCloseTimeout(submenu)
+
+          // Timeout should be cancelled
+          expect(menu._submenuCloseTimeouts.has(submenu)).toBeFalse()
+
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should skip closing submenu if already not in openSubmenus', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Calling close on never-opened submenu should not throw
+          expect(() => {
+            menu._closeSubmenu(submenu, submenuWrapper)
+          }).not.toThrow()
+
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should handle _isMovingTowardSubmenu when cursor is in safe triangle', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div class="menu" style="position: relative;">',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu" style="position: absolute; display: block;">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu" style="position: absolute; left: 100px; top: 0; width: 100px; height: 100px; display: block;">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Open submenu
+          menu._openSubmenu(submenuTrigger, submenu, submenuWrapper)
+
+          // Track a mouse position
+          menu._trackMousePosition({ clientX: 50, clientY: 50 })
+
+          // Call isMovingTowardSubmenu
+          const mockEvent = { clientX: 75, clientY: 50 }
+          const result = menu._isMovingTowardSubmenu(mockEvent, submenu)
+
+          // Result depends on geometry, just verify it returns a boolean
+          expect(typeof result).toBe('boolean')
+
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should handle RTL submenu placement', () => {
+      return new Promise(resolve => {
+        // Set RTL
+        document.documentElement.dir = 'rtl'
+
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <ul class="menu">',
+          '    <li class="submenu">',
+          '      <button class="menu-item" type="button">More options</button>',
+          '      <ul class="menu">',
+          '        <li><a class="menu-item" href="#">Sub-action</a></li>',
+          '      </ul>',
+          '    </li>',
+          '  </ul>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const menu = new Menu(btnMenu)
+        const submenuTrigger = fixtureEl.querySelector('.submenu > .menu-item')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          // Open submenu in RTL mode
+          menu._openSubmenu(submenuTrigger, submenu, submenuWrapper)
+          expect(submenu.classList.contains('show')).toBeTrue()
+
+          // Reset RTL
+          document.documentElement.dir = 'ltr'
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+  })
+
+  describe('menu config option', () => {
+    it('should use the menu element passed via config instead of auto-finding', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<button class="btn" data-bs-toggle="menu">Menu</button>',
+          '<div id="custom-menu" class="menu">',
+          '  <a class="menu-item" href="#">Item</a>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const customMenuEl = fixtureEl.querySelector('#custom-menu')
+        const menu = new Menu(btnMenu, { menu: customMenuEl })
+
+        expect(menu._menu).toEqual(customMenuEl)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          expect(customMenuEl).toHaveClass('show')
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+  })
+
+  describe('_findMenu flexibility', () => {
+    it('should find menu element placed before the toggle', () => {
+      fixtureEl.innerHTML = [
+        '<div>',
+        '  <div class="menu">',
+        '    <a class="menu-item" href="#">Item</a>',
+        '  </div>',
+        '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+        '</div>'
+      ].join('')
+
+      const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+      const menuEl = fixtureEl.querySelector('.menu')
+      const menu = new Menu(btnMenu)
+
+      expect(menu._menu).toEqual(menuEl)
+    })
+  })
+
+  describe('Home and End key navigation', () => {
+    it('should focus the first item when Home key is pressed', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a id="first" class="menu-item" href="#">First</a>',
+          '    <a id="middle" class="menu-item" href="#">Middle</a>',
+          '    <a id="last" class="menu-item" href="#">Last</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const firstItem = fixtureEl.querySelector('#first')
+        const lastItem = fixtureEl.querySelector('#last')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          lastItem.focus()
+          expect(document.activeElement).toEqual(lastItem)
+
+          const homeEvent = createEvent('keydown')
+          homeEvent.key = 'Home'
+          lastItem.dispatchEvent(homeEvent)
+
+          setTimeout(() => {
+            expect(document.activeElement).toEqual(firstItem)
+            resolve()
+          }, 20)
+        })
+
+        menu.show()
+      })
+    })
+
+    it('should focus the last item when End key is pressed', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a id="first" class="menu-item" href="#">First</a>',
+          '    <a id="middle" class="menu-item" href="#">Middle</a>',
+          '    <a id="last" class="menu-item" href="#">Last</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const firstItem = fixtureEl.querySelector('#first')
+        const lastItem = fixtureEl.querySelector('#last')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          firstItem.focus()
+          expect(document.activeElement).toEqual(firstItem)
+
+          const endEvent = createEvent('keydown')
+          endEvent.key = 'End'
+          firstItem.dispatchEvent(endEvent)
+
+          setTimeout(() => {
+            expect(document.activeElement).toEqual(lastItem)
+            resolve()
+          }, 20)
+        })
+
+        menu.show()
+      })
+    })
+  })
+
+  describe('ArrowLeft to close submenu', () => {
+    it('should close the current submenu via _handleSubmenuKeydown on ArrowLeft', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <div class="submenu">',
+          '      <button id="sub-trigger" class="menu-item" type="button">Sub</button>',
+          '      <div class="menu">',
+          '        <a id="sub-item" class="menu-item" href="#">Sub item</a>',
+          '      </div>',
+          '    </div>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const subTrigger = fixtureEl.querySelector('#sub-trigger')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+        const subItem = fixtureEl.querySelector('#sub-item')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          menu._openSubmenu(subTrigger, submenu, submenuWrapper)
+          expect(submenu.classList.contains('show')).toBeTrue()
+
+          subItem.focus()
+          const arrowLeftEvent = new KeyboardEvent('keydown', { key: 'ArrowLeft', bubbles: true, cancelable: true })
+          Object.defineProperty(arrowLeftEvent, 'target', { value: subItem })
+          const handled = menu._handleSubmenuKeydown(arrowLeftEvent)
+
+          expect(handled).toBeTrue()
+          expect(submenu.classList.contains('show')).toBeFalse()
+          expect(document.activeElement).toEqual(subTrigger)
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+  })
+
+  describe('Escape in submenu', () => {
+    it('should close the current submenu via dataApiKeydownHandler on Escape', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a class="menu-item" href="#">Top item</a>',
+          '    <div class="submenu">',
+          '      <button id="sub-trigger" class="menu-item" type="button">Sub</button>',
+          '      <div class="menu">',
+          '        <a id="sub-item" class="menu-item" href="#">Sub item</a>',
+          '      </div>',
+          '    </div>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const subTrigger = fixtureEl.querySelector('#sub-trigger')
+        const submenuWrapper = fixtureEl.querySelector('.submenu')
+        const submenu = submenuWrapper.querySelector('.menu')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          menu._openSubmenu(subTrigger, submenu, submenuWrapper)
+          expect(submenu.classList.contains('show')).toBeTrue()
+          expect(menu._openSubmenus.size).toEqual(1)
+
+          menu._closeSubmenu(submenu, submenuWrapper)
+
+          expect(submenu.classList.contains('show')).toBeFalse()
+          expect(menu._openSubmenus.size).toEqual(0)
+          expect(btnMenu).toHaveClass('show')
+          resolve()
+        })
+
+        menu.show()
+      })
+    })
+  })
+
+  describe('scoped keyboard navigation', () => {
+    it('should scope ArrowDown/ArrowUp to direct children of the current menu level', () => {
+      return new Promise(resolve => {
+        fixtureEl.innerHTML = [
+          '<div>',
+          '  <button class="btn" data-bs-toggle="menu">Menu</button>',
+          '  <div class="menu">',
+          '    <a id="top-item-1" class="menu-item" href="#">Top 1</a>',
+          '    <div class="submenu">',
+          '      <button class="menu-item" type="button">Sub trigger</button>',
+          '      <div class="menu">',
+          '        <a id="sub-item-1" class="menu-item" href="#">Sub 1</a>',
+          '        <a id="sub-item-2" class="menu-item" href="#">Sub 2</a>',
+          '      </div>',
+          '    </div>',
+          '    <a id="top-item-2" class="menu-item" href="#">Top 2</a>',
+          '  </div>',
+          '</div>'
+        ].join('')
+
+        const btnMenu = fixtureEl.querySelector('[data-bs-toggle="menu"]')
+        const topItem1 = fixtureEl.querySelector('#top-item-1')
+        const menu = new Menu(btnMenu)
+
+        btnMenu.addEventListener('shown.bs.menu', () => {
+          topItem1.focus()
+          expect(document.activeElement).toEqual(topItem1)
+
+          const arrowDown = createEvent('keydown')
+          arrowDown.key = 'ArrowDown'
+          topItem1.dispatchEvent(arrowDown)
+
+          setTimeout(() => {
+            resolve()
+          }, 20)
+        })
+
+        menu.show()
+      })
+    })
+  })
+})
index 2a93da749f899ea823c9b72a2a0461243dbbc02f..74b3973a827b121dd88aac8d494a23cdd07c1d54 100644 (file)
@@ -67,7 +67,7 @@ describe('NavOverflow', () => {
       navOverflow.dispose()
     })
 
-    it('should create overflow menu toggle and dropdown', () => {
+    it('should create overflow menu toggle and menu', () => {
       fixtureEl.innerHTML = [
         '<ul class="nav" data-bs-toggle="nav-overflow">',
         '  <li class="nav-item"><a class="nav-link" href="#">Link 1</a></li>',
@@ -82,8 +82,8 @@ describe('NavOverflow', () => {
 
       expect(toggle).not.toBeNull()
       expect(menu).not.toBeNull()
-      expect(toggle).toHaveClass('dropdown-toggle')
-      expect(menu).toHaveClass('dropdown-menu')
+      expect(toggle.getAttribute('data-bs-toggle')).toEqual('menu')
+      expect(menu).toHaveClass('menu')
 
       navOverflow.dispose()
     })
@@ -212,7 +212,7 @@ describe('NavOverflow', () => {
   })
 
   describe('overflow behavior', () => {
-    it('should use dropdown with container option for overflow menu', () => {
+    it('should use placement option for overflow menu', () => {
       fixtureEl.innerHTML = [
         '<ul class="nav" data-bs-toggle="nav-overflow">',
         '  <li class="nav-item"><a class="nav-link" href="#">Link 1</a></li>',
@@ -223,8 +223,8 @@ describe('NavOverflow', () => {
       const navOverflow = new NavOverflow(navEl)
 
       const toggle = navEl.querySelector('.nav-overflow-toggle')
-      expect(toggle.getAttribute('data-bs-container')).toEqual('body')
-      expect(toggle.getAttribute('data-bs-strategy')).toEqual('fixed')
+      expect(toggle.getAttribute('data-bs-toggle')).toEqual('menu')
+      expect(toggle.getAttribute('data-bs-placement')).toEqual('bottom-end')
 
       navOverflow.dispose()
     })
@@ -306,7 +306,7 @@ describe('NavOverflow', () => {
       navOverflow.dispose()
     })
 
-    it('should clone overflowed items into the dropdown menu', () => {
+    it('should clone overflowed items into the menu', () => {
       fixtureEl.innerHTML = [
         '<ul class="nav" style="display: flex; width: 250px;" data-bs-toggle="nav-overflow">',
         '  <li class="nav-item" style="flex: 0 0 100px; width: 100px;"><a class="nav-link" href="#">Link 1</a></li>',
@@ -320,13 +320,13 @@ describe('NavOverflow', () => {
       const navOverflow = new NavOverflow(navEl)
 
       const menu = navEl.querySelector('.nav-overflow-menu')
-      const dropdownItems = menu.querySelectorAll('.dropdown-item')
-      expect(dropdownItems.length).toBeGreaterThan(0)
+      const menuItems = menu.querySelectorAll('.menu-item')
+      expect(menuItems.length).toBeGreaterThan(0)
 
       navOverflow.dispose()
     })
 
-    it('should preserve active state on cloned dropdown items', () => {
+    it('should preserve active state on cloned menu items', () => {
       fixtureEl.innerHTML = [
         '<ul class="nav" style="display: flex; width: 150px;" data-bs-toggle="nav-overflow">',
         '  <li class="nav-item" style="flex: 0 0 100px; width: 100px;"><a class="nav-link" href="#">Link 1</a></li>',
@@ -339,17 +339,17 @@ describe('NavOverflow', () => {
       const navOverflow = new NavOverflow(navEl)
 
       const menu = navEl.querySelector('.nav-overflow-menu')
-      const activeDropdownItems = menu.querySelectorAll('.dropdown-item.active')
+      const activeMenuItems = menu.querySelectorAll('.menu-item.active')
       const originalActiveHidden = navEl.querySelector('.nav-item[data-bs-nav-overflow="true"] .nav-link.active')
 
       if (originalActiveHidden) {
-        expect(activeDropdownItems.length).toBeGreaterThan(0)
+        expect(activeMenuItems.length).toBeGreaterThan(0)
       }
 
       navOverflow.dispose()
     })
 
-    it('should preserve disabled state on cloned dropdown items', () => {
+    it('should preserve disabled state on cloned menu items', () => {
       fixtureEl.innerHTML = [
         '<ul class="nav" style="display: flex; width: 150px;" data-bs-toggle="nav-overflow">',
         '  <li class="nav-item" style="flex: 0 0 100px; width: 100px;"><a class="nav-link" href="#">Link 1</a></li>',
@@ -362,11 +362,11 @@ describe('NavOverflow', () => {
       const navOverflow = new NavOverflow(navEl)
 
       const menu = navEl.querySelector('.nav-overflow-menu')
-      const disabledDropdownItems = menu.querySelectorAll('.dropdown-item.disabled')
+      const disabledMenuItems = menu.querySelectorAll('.menu-item.disabled')
       const originalDisabledHidden = navEl.querySelector('.nav-item[data-bs-nav-overflow="true"] .nav-link.disabled')
 
       if (originalDisabledHidden) {
-        expect(disabledDropdownItems.length).toBeGreaterThan(0)
+        expect(disabledMenuItems.length).toBeGreaterThan(0)
       }
 
       navOverflow.dispose()
@@ -450,9 +450,9 @@ describe('NavOverflow', () => {
       fixtureEl.innerHTML = [
         '<ul class="nav" data-bs-toggle="nav-overflow">',
         '  <li class="nav-item"><a class="nav-link" href="#">Link 1</a></li>',
-        '  <li class="nav-item dropdown">',
-        '    <button class="nav-link nav-overflow-toggle dropdown-toggle" type="button">More</button>',
-        '    <ul class="nav-overflow-menu dropdown-menu"></ul>',
+        '  <li class="nav-item">',
+        '    <button class="nav-link nav-overflow-toggle" type="button" data-bs-toggle="menu">More</button>',
+        '    <div class="nav-overflow-menu menu"></div>',
         '  </li>',
         '</ul>'
       ].join('')
index 781086010fa33c37c9ae7277fac324773c455088..4d0d004481acfd1e75210543690e87ce12c9604a 100644 (file)
@@ -891,16 +891,16 @@ describe('Tab', () => {
       })
     })
 
-    it('selected tab should deactivate previous selected link in dropdown', () => {
+    it('selected tab should deactivate previous selected link in menu', () => {
       fixtureEl.innerHTML = [
         '<ul class="nav nav-tabs">',
         '  <li class="nav-item"><a class="nav-link" href="#home" data-bs-toggle="tab">Home</a></li>',
         '  <li class="nav-item"><a class="nav-link" href="#profile" data-bs-toggle="tab">Profile</a></li>',
-        '  <li class="nav-item dropdown">',
-        '    <a class="nav-link dropdown-toggle active" data-bs-toggle="dropdown" href="#">Dropdown</a>',
-        '    <div class="dropdown-menu">',
-        '      <a class="dropdown-item active" href="#dropdown1" id="dropdown1-tab" data-bs-toggle="tab">@fat</a>',
-        '      <a class="dropdown-item" href="#dropdown2" id="dropdown2-tab" data-bs-toggle="tab">@mdo</a>',
+        '  <li class="nav-item">',
+        '    <a class="nav-link active" data-bs-toggle="menu" href="#">Menu</a>',
+        '    <div class="menu">',
+        '      <a class="menu-item active" href="#menu1" id="menu1-tab" data-bs-toggle="tab">@fat</a>',
+        '      <a class="menu-item" href="#menu2" id="menu2-tab" data-bs-toggle="tab">@mdo</a>',
         '    </div>',
         '  </li>',
         '</ul>'
@@ -910,18 +910,18 @@ describe('Tab', () => {
 
       firstLiLinkEl.click()
       expect(firstLiLinkEl).toHaveClass('active')
-      expect(fixtureEl.querySelector('li:last-child a')).not.toHaveClass('active')
-      expect(fixtureEl.querySelector('li:last-child .dropdown-menu a:first-child')).not.toHaveClass('active')
+      expect(fixtureEl.querySelector('li:last-child > [data-bs-toggle="menu"]')).not.toHaveClass('active')
+      expect(fixtureEl.querySelector('li:last-child .menu a:first-child')).not.toHaveClass('active')
     })
 
-    it('selecting a dropdown tab does not activate another', () => {
+    it('selecting a menu tab does not activate another', () => {
       const nav1 = [
         '<ul class="nav nav-tabs" id="nav1">',
         '  <li class="nav-item active"><a class="nav-link" href="#home" data-bs-toggle="tab">Home</a></li>',
-        '  <li class="nav-item dropdown">',
-        '    <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#">Dropdown</a>',
-        '    <div class="dropdown-menu">',
-        '      <a class="dropdown-item" href="#dropdown1" id="dropdown1-tab" data-bs-toggle="tab">@fat</a>',
+        '  <li class="nav-item">',
+        '    <a class="nav-link" data-bs-toggle="menu" href="#">Menu</a>',
+        '    <div class="menu">',
+        '      <a class="menu-item" href="#menu1" id="menu1-tab" data-bs-toggle="tab">@fat</a>',
         '    </div>',
         '  </li>',
         '</ul>'
@@ -929,10 +929,10 @@ describe('Tab', () => {
       const nav2 = [
         '<ul class="nav nav-tabs" id="nav2">',
         '  <li class="nav-item active"><a class="nav-link" href="#home" data-bs-toggle="tab">Home</a></li>',
-        '  <li class="nav-item dropdown">',
-        '    <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#">Dropdown</a>',
-        '    <div class="dropdown-menu">',
-        '      <a class="dropdown-item" href="#dropdown1" id="dropdown1-tab" data-bs-toggle="tab">@fat</a>',
+        '  <li class="nav-item">',
+        '    <a class="nav-link" data-bs-toggle="menu" href="#">Menu</a>',
+        '    <div class="menu">',
+        '      <a class="menu-item" href="#menu1" id="menu1-tab" data-bs-toggle="tab">@fat</a>',
         '    </div>',
         '  </li>',
         '</ul>'
@@ -940,35 +940,35 @@ describe('Tab', () => {
 
       fixtureEl.innerHTML = nav1 + nav2
 
-      const firstDropItem = fixtureEl.querySelector('#nav1 .dropdown-item')
+      const firstMenuItem = fixtureEl.querySelector('#nav1 .menu-item')
 
-      firstDropItem.click()
-      expect(firstDropItem).toHaveClass('active')
-      expect(fixtureEl.querySelector('#nav1 .dropdown-toggle')).toHaveClass('active')
-      expect(fixtureEl.querySelector('#nav2 .dropdown-toggle')).not.toHaveClass('active')
-      expect(fixtureEl.querySelector('#nav2 .dropdown-item')).not.toHaveClass('active')
+      firstMenuItem.click()
+      expect(firstMenuItem).toHaveClass('active')
+      expect(fixtureEl.querySelector('#nav1 [data-bs-toggle="menu"]')).toHaveClass('active')
+      expect(fixtureEl.querySelector('#nav2 [data-bs-toggle="menu"]')).not.toHaveClass('active')
+      expect(fixtureEl.querySelector('#nav2 .menu-item')).not.toHaveClass('active')
     })
 
-    it('should support li > .dropdown-item', () => {
+    it('should support li > .menu-item', () => {
       fixtureEl.innerHTML = [
         '<ul class="nav nav-tabs">',
         '  <li class="nav-item"><a class="nav-link active" href="#home" data-bs-toggle="tab">Home</a></li>',
         '  <li class="nav-item"><a class="nav-link" href="#profile" data-bs-toggle="tab">Profile</a></li>',
-        '  <li class="nav-item dropdown">',
-        '    <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#">Dropdown</a>',
-        '    <ul class="dropdown-menu">',
-        '      <li><a class="dropdown-item" href="#dropdown1" id="dropdown1-tab" data-bs-toggle="tab">@fat</a></li>',
-        '      <li><a class="dropdown-item" href="#dropdown2" id="dropdown2-tab" data-bs-toggle="tab">@mdo</a></li>',
-        '    </ul>',
+        '  <li class="nav-item">',
+        '    <a class="nav-link" data-bs-toggle="menu" href="#">Menu</a>',
+        '    <div class="menu">',
+        '      <a class="menu-item" href="#menu1" id="menu1-tab" data-bs-toggle="tab">@fat</a>',
+        '      <a class="menu-item" href="#menu2" id="menu2-tab" data-bs-toggle="tab">@mdo</a>',
+        '    </div>',
         '  </li>',
         '</ul>'
       ].join('')
 
-      const dropItems = fixtureEl.querySelectorAll('.dropdown-item')
+      const menuItems = fixtureEl.querySelectorAll('.menu-item')
 
-      dropItems[1].click()
-      expect(dropItems[0]).not.toHaveClass('active')
-      expect(dropItems[1]).toHaveClass('active')
+      menuItems[1].click()
+      expect(menuItems[0]).not.toHaveClass('active')
+      expect(menuItems[1]).toHaveClass('active')
       expect(fixtureEl.querySelector('.nav-link')).not.toHaveClass('active')
     })
 
diff --git a/js/tests/visual/dropdown-submenu.html b/js/tests/visual/dropdown-submenu.html
deleted file mode 100644 (file)
index b9ddcee..0000000
+++ /dev/null
@@ -1,482 +0,0 @@
-<!doctype html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <link href="../../../dist/css/bootstrap.min.css" rel="stylesheet">
-    <title>Dropdown Submenus</title>
-    <style>
-      .test-section {
-        padding: 2rem 0;
-        border-bottom: 1px solid var(--border-color);
-      }
-      .test-section:last-child {
-        border-bottom: 0;
-      }
-      .demo-box {
-        min-height: 300px;
-        display: flex;
-        align-items: flex-start;
-        gap: 1rem;
-        flex-wrap: wrap;
-      }
-      .demo-box-center {
-        align-items: center;
-        justify-content: center;
-      }
-      .feature-list {
-        font-size: 0.875rem;
-        color: var(--fg-2);
-      }
-      .feature-list li {
-        margin-bottom: 0.25rem;
-      }
-      .keyboard-hint {
-        display: inline-block;
-        padding: 0.125rem 0.375rem;
-        font-size: 0.75rem;
-        font-family: ui-monospace, monospace;
-        background: var(--bg-2);
-        border-radius: var(--border-radius);
-        border: 1px solid var(--border-color);
-      }
-    </style>
-  </head>
-  <body>
-    <div class="container py-4">
-      <h1 class="mb-4">Dropdown Submenus <small class="text-body-secondary">Bootstrap Visual Test</small></h1>
-
-      <div class="alert theme-info">
-        <strong>Keyboard Navigation:</strong>
-        <span class="keyboard-hint">↓</span> <span class="keyboard-hint">↑</span> navigate items,
-        <span class="keyboard-hint">→</span> enter submenu,
-        <span class="keyboard-hint">←</span> exit submenu,
-        <span class="keyboard-hint">Enter</span> or <span class="keyboard-hint">Space</span> activate,
-        <span class="keyboard-hint">Esc</span> close,
-        <span class="keyboard-hint">Home</span> <span class="keyboard-hint">End</span> jump to first/last
-      </div>
-
-      <!-- Basic Submenu -->
-      <section class="test-section">
-        <h2>Basic Submenu</h2>
-        <p class="text-body-secondary">Single level submenu with hover and click activation.</p>
-
-        <div class="demo-box">
-          <div class="dropdown">
-            <button class="btn-solid theme-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-              Dropdown with Submenu
-            </button>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li class="dropdown-divider"></li>
-              <li class="dropdown-submenu">
-                <button class="dropdown-item" type="button">
-                  More options
-                </button>
-                <ul class="dropdown-menu">
-                  <li><a class="dropdown-item" href="#">Sub-action 1</a></li>
-                  <li><a class="dropdown-item" href="#">Sub-action 2</a></li>
-                  <li><a class="dropdown-item" href="#">Sub-action 3</a></li>
-                </ul>
-              </li>
-              <li><a class="dropdown-item" href="#">Something else</a></li>
-            </ul>
-          </div>
-        </div>
-      </section>
-
-      <!-- Nested Submenus -->
-      <section class="test-section">
-        <h2>Nested Submenus (Multi-level)</h2>
-        <p class="text-body-secondary">Three levels of nested submenus.</p>
-
-        <div class="demo-box">
-          <div class="dropdown">
-            <button class="btn-solid theme-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-              Multi-level Menu
-            </button>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Level 1 - Action</a></li>
-              <li class="dropdown-submenu">
-                <button class="dropdown-item" type="button">
-                  Level 1 - Submenu
-                </button>
-                <ul class="dropdown-menu">
-                  <li><a class="dropdown-item" href="#">Level 2 - Action</a></li>
-                  <li class="dropdown-submenu">
-                    <button class="dropdown-item" type="button">
-                      Level 2 - Submenu
-                    </button>
-                    <ul class="dropdown-menu">
-                      <li><a class="dropdown-item" href="#">Level 3 - Action A</a></li>
-                      <li><a class="dropdown-item" href="#">Level 3 - Action B</a></li>
-                      <li><a class="dropdown-item" href="#">Level 3 - Action C</a></li>
-                    </ul>
-                  </li>
-                  <li><a class="dropdown-item" href="#">Level 2 - Another</a></li>
-                </ul>
-              </li>
-              <li><a class="dropdown-item" href="#">Level 1 - Another</a></li>
-            </ul>
-          </div>
-        </div>
-      </section>
-
-      <!-- Multiple Submenus -->
-      <section class="test-section">
-        <h2>Multiple Submenus at Same Level</h2>
-        <p class="text-body-secondary">Multiple submenu triggers in the same menu - opening one closes the other.</p>
-
-        <div class="demo-box">
-          <div class="dropdown">
-            <button class="btn-solid theme-info dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-              Multiple Submenus
-            </button>
-            <ul class="dropdown-menu">
-              <li class="dropdown-submenu">
-                <button class="dropdown-item" type="button">
-                  File operations
-                </button>
-                <ul class="dropdown-menu">
-                  <li><a class="dropdown-item" href="#">New</a></li>
-                  <li><a class="dropdown-item" href="#">Open</a></li>
-                  <li><a class="dropdown-item" href="#">Save</a></li>
-                  <li><a class="dropdown-item" href="#">Save As...</a></li>
-                </ul>
-              </li>
-              <li class="dropdown-submenu">
-                <button class="dropdown-item" type="button">
-                  Edit operations
-                </button>
-                <ul class="dropdown-menu">
-                  <li><a class="dropdown-item" href="#">Cut</a></li>
-                  <li><a class="dropdown-item" href="#">Copy</a></li>
-                  <li><a class="dropdown-item" href="#">Paste</a></li>
-                </ul>
-              </li>
-              <li class="dropdown-submenu">
-                <button class="dropdown-item" type="button">
-                  View options
-                </button>
-                <ul class="dropdown-menu">
-                  <li><a class="dropdown-item" href="#">Zoom In</a></li>
-                  <li><a class="dropdown-item" href="#">Zoom Out</a></li>
-                  <li><a class="dropdown-item" href="#">Fit to Window</a></li>
-                </ul>
-              </li>
-              <li class="dropdown-divider"></li>
-              <li><a class="dropdown-item" href="#">Preferences</a></li>
-            </ul>
-          </div>
-        </div>
-      </section>
-
-      <!-- Viewport Flipping Test -->
-      <section class="test-section">
-        <h2>Viewport Detection (Flipping)</h2>
-        <p class="text-body-secondary">Submenus flip to the opposite side when there's not enough space. Try the one on the right.</p>
-
-        <div class="demo-box" style="justify-content: space-between;">
-          <div class="dropdown">
-            <button class="btn-solid theme-success dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-              Left Side (opens right)
-            </button>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li class="dropdown-submenu">
-                <button class="dropdown-item" type="button">
-                  Submenu
-                </button>
-                <ul class="dropdown-menu">
-                  <li><a class="dropdown-item" href="#">Sub-action 1</a></li>
-                  <li><a class="dropdown-item" href="#">Sub-action 2</a></li>
-                </ul>
-              </li>
-            </ul>
-          </div>
-
-          <div class="dropdown">
-            <button class="btn-solid theme-success dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-              Right Side (flips left)
-            </button>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li class="dropdown-submenu">
-                <button class="dropdown-item" type="button">
-                  Submenu (should flip)
-                </button>
-                <ul class="dropdown-menu">
-                  <li><a class="dropdown-item" href="#">Sub-action 1</a></li>
-                  <li><a class="dropdown-item" href="#">Sub-action 2</a></li>
-                  <li><a class="dropdown-item" href="#">Sub-action 3</a></li>
-                </ul>
-              </li>
-            </ul>
-          </div>
-        </div>
-      </section>
-
-      <!-- Navbar Integration -->
-      <section class="test-section">
-        <h2>Navbar Integration</h2>
-        <p class="text-body-secondary">Submenus work within navbar dropdowns.</p>
-
-        <nav class="navbar navbar-expand-lg bg-body-tertiary rounded">
-          <div class="container-fluid">
-            <a class="navbar-brand" href="#">Navbar</a>
-            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSubmenu" aria-controls="navbarSubmenu" aria-expanded="false" aria-label="Toggle navigation">
-              <span class="navbar-toggler-icon"></span>
-            </button>
-            <div class="collapse navbar-collapse" id="navbarSubmenu">
-              <ul class="navbar-nav me-auto mb-2 mb-lg-0">
-                <li class="nav-item">
-                  <a class="nav-link active" aria-current="page" href="#">Home</a>
-                </li>
-                <li class="nav-item dropdown">
-                  <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
-                    Products
-                  </a>
-                  <ul class="dropdown-menu">
-                    <li class="dropdown-submenu">
-                      <button class="dropdown-item" type="button">
-                        Electronics
-                      </button>
-                      <ul class="dropdown-menu">
-                        <li><a class="dropdown-item" href="#">Phones</a></li>
-                        <li><a class="dropdown-item" href="#">Laptops</a></li>
-                        <li><a class="dropdown-item" href="#">Tablets</a></li>
-                      </ul>
-                    </li>
-                    <li class="dropdown-submenu">
-                      <button class="dropdown-item" type="button">
-                        Clothing
-                      </button>
-                      <ul class="dropdown-menu">
-                        <li><a class="dropdown-item" href="#">Men's</a></li>
-                        <li><a class="dropdown-item" href="#">Women's</a></li>
-                        <li><a class="dropdown-item" href="#">Kids</a></li>
-                      </ul>
-                    </li>
-                    <li class="dropdown-divider"></li>
-                    <li><a class="dropdown-item" href="#">All Products</a></li>
-                  </ul>
-                </li>
-                <li class="nav-item">
-                  <a class="nav-link" href="#">About</a>
-                </li>
-              </ul>
-            </div>
-          </div>
-        </nav>
-      </section>
-
-      <!-- Dropup with Submenus -->
-      <section class="test-section">
-        <h2>Dropup with Submenus</h2>
-        <p class="text-body-secondary">Submenus work with dropup direction.</p>
-
-        <div class="demo-box demo-box-center" style="min-height: 200px;">
-          <div class="btn-group dropup">
-            <button type="button" class="btn-solid theme-warning dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-              Dropup Menu
-            </button>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li class="dropdown-submenu">
-                <button class="dropdown-item" type="button">
-                  More options
-                </button>
-                <ul class="dropdown-menu">
-                  <li><a class="dropdown-item" href="#">Sub-action 1</a></li>
-                  <li><a class="dropdown-item" href="#">Sub-action 2</a></li>
-                </ul>
-              </li>
-              <li><a class="dropdown-item" href="#">Something else</a></li>
-            </ul>
-          </div>
-        </div>
-      </section>
-
-      <!-- With Icons -->
-      <section class="test-section">
-        <h2>With Icons</h2>
-        <p class="text-body-secondary">Submenus with icons in menu items.</p>
-
-        <div class="demo-box">
-          <div class="dropdown">
-            <button class="btn-solid theme-dark dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-              Menu with Icons
-            </button>
-            <ul class="dropdown-menu">
-              <li>
-                <a class="dropdown-item" href="#">
-                  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
-                    <path d="M8 3.5a.5.5 0 0 0-1 0V9a.5.5 0 0 0 .252.434l3.5 2a.5.5 0 0 0 .496-.868L8 8.71V3.5z"/>
-                    <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm7-8A7 7 0 1 1 1 8a7 7 0 0 1 14 0z"/>
-                  </svg>
-                  Recent
-                </a>
-              </li>
-              <li class="dropdown-submenu">
-                <button class="dropdown-item" type="button">
-                  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
-                    <path d="M1 3.5A1.5 1.5 0 0 1 2.5 2h2.764c.958 0 1.76.56 2.311 1.184C7.985 3.648 8.48 4 9 4h4.5A1.5 1.5 0 0 1 15 5.5v.64c.57.265.94.876.856 1.546l-.64 5.124A2.5 2.5 0 0 1 12.733 15H3.266a2.5 2.5 0 0 1-2.481-2.19l-.64-5.124A1.5 1.5 0 0 1 1 6.14V3.5zM2 6h12v-.5a.5.5 0 0 0-.5-.5H9c-.964 0-1.71-.629-2.174-1.154C6.374 3.334 5.82 3 5.264 3H2.5a.5.5 0 0 0-.5.5V6zm-.367 1a.5.5 0 0 0-.496.562l.64 5.124A1.5 1.5 0 0 0 3.266 14h9.468a1.5 1.5 0 0 0 1.489-1.314l.64-5.124A.5.5 0 0 0 14.367 7H1.633z"/>
-                  </svg>
-                  Folders
-                </button>
-                <ul class="dropdown-menu">
-                  <li><a class="dropdown-item" href="#">Documents</a></li>
-                  <li><a class="dropdown-item" href="#">Downloads</a></li>
-                  <li><a class="dropdown-item" href="#">Pictures</a></li>
-                </ul>
-              </li>
-              <li class="dropdown-divider"></li>
-              <li>
-                <a class="dropdown-item" href="#">
-                  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
-                    <path d="M8 4.754a3.246 3.246 0 1 0 0 6.492 3.246 3.246 0 0 0 0-6.492zM5.754 8a2.246 2.246 0 1 1 4.492 0 2.246 2.246 0 0 1-4.492 0z"/>
-                    <path d="M9.796 1.343c-.527-1.79-3.065-1.79-3.592 0l-.094.319a.873.873 0 0 1-1.255.52l-.292-.16c-1.64-.892-3.433.902-2.54 2.541l.159.292a.873.873 0 0 1-.52 1.255l-.319.094c-1.79.527-1.79 3.065 0 3.592l.319.094a.873.873 0 0 1 .52 1.255l-.16.292c-.892 1.64.901 3.434 2.541 2.54l.292-.159a.873.873 0 0 1 1.255.52l.094.319c.527 1.79 3.065 1.79 3.592 0l.094-.319a.873.873 0 0 1 1.255-.52l.292.16c1.64.893 3.434-.902 2.54-2.541l-.159-.292a.873.873 0 0 1 .52-1.255l.319-.094c1.79-.527 1.79-3.065 0-3.592l-.319-.094a.873.873 0 0 1-.52-1.255l.16-.292c.893-1.64-.902-3.433-2.541-2.54l-.292.159a.873.873 0 0 1-1.255-.52l-.094-.319zm-2.633.283c.246-.835 1.428-.835 1.674 0l.094.319a1.873 1.873 0 0 0 2.693 1.115l.291-.16c.764-.415 1.6.42 1.184 1.185l-.159.292a1.873 1.873 0 0 0 1.116 2.692l.318.094c.835.246.835 1.428 0 1.674l-.319.094a1.873 1.873 0 0 0-1.115 2.693l.16.291c.415.764-.42 1.6-1.185 1.184l-.291-.159a1.873 1.873 0 0 0-2.693 1.116l-.094.318c-.246.835-1.428.835-1.674 0l-.094-.319a1.873 1.873 0 0 0-2.692-1.115l-.292.16c-.764.415-1.6-.42-1.184-1.185l.159-.291A1.873 1.873 0 0 0 1.945 8.93l-.319-.094c-.835-.246-.835-1.428 0-1.674l.319-.094A1.873 1.873 0 0 0 3.06 4.377l-.16-.292c-.415-.764.42-1.6 1.185-1.184l.292.159a1.873 1.873 0 0 0 2.692-1.115l.094-.319z"/>
-                  </svg>
-                  Settings
-                </a>
-              </li>
-            </ul>
-          </div>
-        </div>
-      </section>
-
-      <!-- Mobile Test -->
-      <section class="test-section">
-        <h2>Mobile Mode</h2>
-        <p class="text-body-secondary">
-          Resize your browser to &lt;768px width to see slide-over behavior.
-          On mobile, submenus slide in from the side with a back button.
-        </p>
-
-        <div class="demo-box">
-          <div class="dropdown">
-            <button class="btn-solid theme-danger dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-              Test on Mobile
-            </button>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li class="dropdown-submenu">
-                <button class="dropdown-item" type="button">
-                  Navigate to submenu
-                </button>
-                <ul class="dropdown-menu">
-                  <li><a class="dropdown-item" href="#">Sub-action 1</a></li>
-                  <li><a class="dropdown-item" href="#">Sub-action 2</a></li>
-                  <li class="dropdown-submenu">
-                    <button class="dropdown-item" type="button">
-                      Even deeper
-                    </button>
-                    <ul class="dropdown-menu">
-                      <li><a class="dropdown-item" href="#">Deep action 1</a></li>
-                      <li><a class="dropdown-item" href="#">Deep action 2</a></li>
-                    </ul>
-                  </li>
-                </ul>
-              </li>
-              <li><a class="dropdown-item" href="#">Something else</a></li>
-            </ul>
-          </div>
-        </div>
-      </section>
-
-      <!-- Disabled Items -->
-      <section class="test-section">
-        <h2>With Disabled Items</h2>
-        <p class="text-body-secondary">Keyboard navigation skips disabled items.</p>
-
-        <div class="demo-box">
-          <div class="dropdown">
-            <button class="btn-solid theme-outline-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-              Menu with Disabled
-            </button>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Enabled action</a></li>
-              <li><a class="dropdown-item disabled" href="#">Disabled action</a></li>
-              <li class="dropdown-submenu">
-                <button class="dropdown-item" type="button">
-                  Submenu
-                </button>
-                <ul class="dropdown-menu">
-                  <li><a class="dropdown-item" href="#">Enabled</a></li>
-                  <li><a class="dropdown-item disabled" href="#">Disabled</a></li>
-                  <li><a class="dropdown-item" href="#">Enabled</a></li>
-                </ul>
-              </li>
-            </ul>
-          </div>
-        </div>
-      </section>
-
-      <!-- Feature Summary -->
-      <section class="test-section">
-        <h2>Feature Summary</h2>
-        <div class="row">
-          <div class="col-md-6">
-            <h5>Mouse Interaction</h5>
-            <ul class="feature-list">
-              <li>✅ Hover to open submenus</li>
-              <li>✅ Click to toggle submenus</li>
-              <li>✅ Safe triangle / hover intent (diagonal movement)</li>
-              <li>✅ Configurable close delay</li>
-              <li>✅ Sibling submenus auto-close</li>
-            </ul>
-          </div>
-          <div class="col-md-6">
-            <h5>Keyboard Navigation</h5>
-            <ul class="feature-list">
-              <li>✅ Arrow Up/Down - navigate items</li>
-              <li>✅ Arrow Right - enter submenu (Left in RTL)</li>
-              <li>✅ Arrow Left - exit submenu (Right in RTL)</li>
-              <li>✅ Enter/Space - activate item or open submenu</li>
-              <li>✅ Escape - close current submenu or dropdown</li>
-              <li>✅ Home/End - jump to first/last item</li>
-            </ul>
-          </div>
-          <div class="col-md-6">
-            <h5>Viewport Detection</h5>
-            <ul class="feature-list">
-              <li>✅ Default: opens to inline-end (right in LTR)</li>
-              <li>✅ Flips to inline-start when not enough space</li>
-              <li>✅ Shift to stay within viewport</li>
-              <li>✅ Auto-update on scroll/resize</li>
-            </ul>
-          </div>
-          <div class="col-md-6">
-            <h5>Mobile Mode</h5>
-            <ul class="feature-list">
-              <li>✅ Slide-over animation</li>
-              <li>✅ Back button navigation</li>
-              <li>✅ Full-screen submenu panels</li>
-              <li>✅ Configurable breakpoint</li>
-            </ul>
-          </div>
-          <div class="col-md-6">
-            <h5>Accessibility</h5>
-            <ul class="feature-list">
-              <li>✅ aria-haspopup on submenu triggers</li>
-              <li>✅ aria-expanded state management</li>
-              <li>✅ Focus management</li>
-              <li>✅ Focus returns to trigger on close</li>
-            </ul>
-          </div>
-          <div class="col-md-6">
-            <h5>Configuration Options</h5>
-            <ul class="feature-list">
-              <li>✅ submenuTrigger: 'click' | 'hover' | 'both'</li>
-              <li>✅ submenuDelay: close delay in ms</li>
-              <li>✅ mobileBreakpoint: px for mobile mode</li>
-            </ul>
-          </div>
-        </div>
-      </section>
-    </div>
-
-    <script src="../../../dist/js/bootstrap.bundle.js"></script>
-  </body>
-</html>
diff --git a/js/tests/visual/dropdown.html b/js/tests/visual/dropdown.html
deleted file mode 100644 (file)
index 971aad6..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-<!doctype html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <link href="../../../dist/css/bootstrap.min.css" rel="stylesheet">
-    <title>Dropdown</title>
-  </head>
-  <body>
-    <div class="container">
-      <h1>Dropdown <small>Bootstrap Visual Test</small></h1>
-
-      <nav class="navbar navbar-expand-md bg-light">
-        <a class="navbar-brand" href="#">Navbar</a>
-        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
-          <span class="navbar-toggler-icon"></span>
-        </button>
-
-        <div class="collapse navbar-collapse" id="navbarResponsive">
-          <ul class="navbar-nav">
-            <li class="nav-item">
-              <a class="nav-link active" href="#" aria-current="page">Home</a>
-            </li>
-            <li class="nav-item">
-              <a class="nav-link" href="#">Link</a>
-            </li>
-            <li class="nav-item">
-              <a class="nav-link" href="#">Link</a>
-            </li>
-            <li class="nav-item dropdown">
-              <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a>
-              <ul class="dropdown-menu">
-                <li><a class="dropdown-item" href="#">Action</a></li>
-                <li><a class="dropdown-item" href="#">Another action</a></li>
-                <li><a class="dropdown-item" href="#">Something else here</a></li>
-              </ul>
-            </li>
-          </ul>
-        </div>
-      </nav>
-
-      <ul class="nav nav-pills mt-3">
-        <li class="nav-item">
-          <a class="nav-link active" href="#">Active</a>
-        </li>
-        <li class="nav-item">
-          <a class="nav-link" href="#">Link</a>
-        </li>
-        <li class="nav-item">
-          <a class="nav-link" href="#">Link</a>
-        </li>
-        <li class="nav-item dropdown">
-          <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a>
-          <ul class="dropdown-menu">
-            <li><a class="dropdown-item" href="#">Action</a></li>
-            <li><a class="dropdown-item" href="#">Another action</a></li>
-            <li><a class="dropdown-item" href="#">Something else here</a></li>
-          </ul>
-        </li>
-      </ul>
-
-      <div class="row">
-        <div class="col-sm-12 mt-4">
-          <div class="dropdown">
-            <button type="button" class="btn-solid theme-secondary" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>
-            <div class="dropdown-menu">
-              <input id="textField" type="text">
-            </div>
-          </div>
-          <div class="btn-group dropup">
-            <button type="button" class="btn-solid theme-secondary">Dropup split</button>
-            <button type="button" class="btn-solid theme-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-              <span class="visually-hidden">Dropup split</span>
-            </button>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-            </ul>
-          </div>
-        </div>
-
-        <div class="col-sm-12 mt-4">
-          <div class="btn-group dropup">
-            <button type="button" class="btn-solid theme-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Dropup</button>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-            </ul>
-          </div>
-
-          <div class="btn-group">
-            <button type="button" class="btn-solid theme-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-              This dropdown's menu is end-aligned
-            </button>
-            <div class="dropdown-menu dropdown-menu-end">
-              <button class="dropdown-item" type="button">Action</button>
-              <button class="dropdown-item" type="button">Another action</button>
-              <button class="dropdown-item" type="button">Something else here</button>
-            </div>
-          </div>
-        </div>
-
-        <div class="col-sm-12 mt-4">
-          <div class="btn-group dropup">
-            <a href="#" class="btn-solid theme-secondary">Dropup split align end</a>
-            <button type="button" id="dropdown-page-subheader-button-3" class="btn-solid theme-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-              <span class="visually-hidden">Product actions</span>
-            </button>
-            <div class="dropdown-menu dropdown-menu-end">
-              <button class="dropdown-item" type="button">Action</button>
-              <button class="dropdown-item" type="button">Another action</button>
-              <button class="dropdown-item" type="button">Something else here with a long text</button>
-            </div>
-          </div>
-          <div class="btn-group dropup">
-            <button type="button" class="btn-solid theme-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Dropup align end</button>
-            <div class="dropdown-menu dropdown-menu-end">
-              <button class="dropdown-item" type="button">Action</button>
-              <button class="dropdown-item" type="button">Another action</button>
-              <button class="dropdown-item" type="button">Something else here with a long text</button>
-            </div>
-          </div>
-        </div>
-
-        <div class="col-sm-12 mt-4">
-          <div class="btn-group dropend">
-            <a href="#" class="btn-solid theme-secondary">Dropend split</a>
-            <button type="button" id="dropdown-page-subheader-button-4" class="btn-solid theme-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-              <span class="visually-hidden">Product actions</span>
-            </button>
-            <div class="dropdown-menu">
-              <button class="dropdown-item" type="button">Action</button>
-              <button class="dropdown-item" type="button">Another action</button>
-              <button class="dropdown-item" type="button">Something else here with a long text</button>
-            </div>
-          </div>
-          <div class="btn-group dropend">
-            <button class="btn-solid theme-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-              Dropend
-            </button>
-            <div class="dropdown-menu">
-              <button class="dropdown-item" type="button">Action</button>
-              <button class="dropdown-item" type="button">Another action</button>
-              <button class="dropdown-item" type="button">Something else here</button>
-            </div>
-          </div>
-          <!-- dropstart -->
-          <div class="btn-group dropstart">
-            <a href="#" class="btn-solid theme-secondary">Dropstart split</a>
-            <button type="button" id="dropdown-page-subheader-button-5" class="btn-solid theme-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-              <span class="visually-hidden">Product actions</span>
-            </button>
-            <div class="dropdown-menu">
-              <button class="dropdown-item" type="button">Action</button>
-              <button class="dropdown-item" type="button">Another action</button>
-              <button class="dropdown-item" type="button">Something else here with a long text</button>
-            </div>
-          </div>
-          <div class="btn-group dropstart">
-            <button class="btn-solid theme-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-              Dropstart
-            </button>
-            <div class="dropdown-menu">
-              <button class="dropdown-item" type="button">Action</button>
-              <button class="dropdown-item" type="button">Another action</button>
-              <button class="dropdown-item" type="button">Something else here</button>
-            </div>
-          </div>
-        </div>
-      </div>
-
-      <div class="row">
-        <div class="col-sm-3 mt-4">
-          <div class="btn-group dropdown">
-            <button type="button" class="btn-solid theme-secondary">Dropdown reference</button>
-            <button type="button" class="btn-solid theme-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" data-bs-reference="parent">
-              <span class="visually-hidden">Dropdown split</span>
-            </button>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-            </ul>
-          </div>
-        </div>
-        <div class="col-sm-3 mt-4">
-          <div class="dropdown">
-            <button class="btn-solid theme-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-display="static" aria-expanded="false">
-              Dropdown menu with static display
-            </button>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-            </ul>
-          </div>
-        </div>
-      </div>
-    </div>
-
-    <script src="../../../dist/js/bootstrap.bundle.js"></script>
-  </body>
-</html>
diff --git a/js/tests/visual/menu-submenu.html b/js/tests/visual/menu-submenu.html
new file mode 100644 (file)
index 0000000..2256af7
--- /dev/null
@@ -0,0 +1,478 @@
+<!doctype html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <link href="../../../dist/css/bootstrap.min.css" rel="stylesheet">
+    <title>Menu Submenus</title>
+    <style>
+      .test-section {
+        padding: 2rem 0;
+        border-bottom: 1px solid var(--border-color);
+      }
+      .test-section:last-child {
+        border-bottom: 0;
+      }
+      .demo-box {
+        min-height: 300px;
+        display: flex;
+        align-items: flex-start;
+        gap: 1rem;
+        flex-wrap: wrap;
+      }
+      .demo-box-center {
+        align-items: center;
+        justify-content: center;
+      }
+      .feature-list {
+        font-size: 0.875rem;
+        color: var(--fg-2);
+      }
+      .feature-list li {
+        margin-bottom: 0.25rem;
+      }
+      .keyboard-hint {
+        display: inline-block;
+        padding: 0.125rem 0.375rem;
+        font-size: 0.75rem;
+        font-family: ui-monospace, monospace;
+        background: var(--bg-2);
+        border-radius: var(--border-radius);
+        border: 1px solid var(--border-color);
+      }
+    </style>
+  </head>
+  <body>
+    <div class="container py-4">
+      <h1 class="mb-4">Menu Submenus <small class="text-body-secondary">Bootstrap Visual Test</small></h1>
+
+      <div class="alert theme-info">
+        <strong>Keyboard Navigation:</strong>
+        <span class="keyboard-hint">↓</span> <span class="keyboard-hint">↑</span> navigate items,
+        <span class="keyboard-hint">→</span> enter submenu,
+        <span class="keyboard-hint">←</span> exit submenu,
+        <span class="keyboard-hint">Enter</span> or <span class="keyboard-hint">Space</span> activate,
+        <span class="keyboard-hint">Esc</span> close,
+        <span class="keyboard-hint">Home</span> <span class="keyboard-hint">End</span> jump to first/last
+      </div>
+
+      <!-- Basic Submenu -->
+      <section class="test-section">
+        <h2>Basic Submenu</h2>
+        <p class="text-body-secondary">Single level submenu with hover and click activation.</p>
+
+        <div class="demo-box">
+          <div>
+            <button class="btn-solid theme-primary" type="button" data-bs-toggle="menu" aria-expanded="false">
+              Menu with Submenu
+            </button>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <hr class="menu-divider">
+              <div class="submenu">
+                <button class="menu-item" type="button">
+                  More options
+                </button>
+                <div class="menu">
+                  <a class="menu-item" href="#">Sub-action 1</a>
+                  <a class="menu-item" href="#">Sub-action 2</a>
+                  <a class="menu-item" href="#">Sub-action 3</a>
+                </div>
+              </div>
+              <a class="menu-item" href="#">Something else</a>
+            </div>
+          </div>
+        </div>
+      </section>
+
+      <!-- Nested Submenus -->
+      <section class="test-section">
+        <h2>Nested Submenus (Multi-level)</h2>
+        <p class="text-body-secondary">Three levels of nested submenus.</p>
+
+        <div class="demo-box">
+          <div>
+            <button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" aria-expanded="false">
+              Multi-level Menu
+            </button>
+            <div class="menu">
+              <a class="menu-item" href="#">Level 1 - Action</a>
+              <div class="submenu">
+                <button class="menu-item" type="button">
+                  Level 1 - Submenu
+                </button>
+                <div class="menu">
+                  <a class="menu-item" href="#">Level 2 - Action</a>
+                  <div class="submenu">
+                    <button class="menu-item" type="button">
+                      Level 2 - Submenu
+                    </button>
+                    <div class="menu">
+                      <a class="menu-item" href="#">Level 3 - Action A</a>
+                      <a class="menu-item" href="#">Level 3 - Action B</a>
+                      <a class="menu-item" href="#">Level 3 - Action C</a>
+                    </div>
+                  </div>
+                  <a class="menu-item" href="#">Level 2 - Another</a>
+                </div>
+              </div>
+              <a class="menu-item" href="#">Level 1 - Another</a>
+            </div>
+          </div>
+        </div>
+      </section>
+
+      <!-- Multiple Submenus -->
+      <section class="test-section">
+        <h2>Multiple Submenus at Same Level</h2>
+        <p class="text-body-secondary">Multiple submenu triggers in the same menu - opening one closes the other.</p>
+
+        <div class="demo-box">
+          <div>
+            <button class="btn-solid theme-info" type="button" data-bs-toggle="menu" aria-expanded="false">
+              Multiple Submenus
+            </button>
+            <div class="menu">
+              <div class="submenu">
+                <button class="menu-item" type="button">
+                  File operations
+                </button>
+                <div class="menu">
+                  <a class="menu-item" href="#">New</a>
+                  <a class="menu-item" href="#">Open</a>
+                  <a class="menu-item" href="#">Save</a>
+                  <a class="menu-item" href="#">Save As...</a>
+                </div>
+              </div>
+              <div class="submenu">
+                <button class="menu-item" type="button">
+                  Edit operations
+                </button>
+                <div class="menu">
+                  <a class="menu-item" href="#">Cut</a>
+                  <a class="menu-item" href="#">Copy</a>
+                  <a class="menu-item" href="#">Paste</a>
+                </div>
+              </div>
+              <div class="submenu">
+                <button class="menu-item" type="button">
+                  View options
+                </button>
+                <div class="menu">
+                  <a class="menu-item" href="#">Zoom In</a>
+                  <a class="menu-item" href="#">Zoom Out</a>
+                  <a class="menu-item" href="#">Fit to Window</a>
+                </div>
+              </div>
+              <hr class="menu-divider">
+              <a class="menu-item" href="#">Preferences</a>
+            </div>
+          </div>
+        </div>
+      </section>
+
+      <!-- Viewport Flipping Test -->
+      <section class="test-section">
+        <h2>Viewport Detection (Flipping)</h2>
+        <p class="text-body-secondary">Submenus flip to the opposite side when there's not enough space. Try the one on the right.</p>
+
+        <div class="demo-box" style="justify-content: space-between;">
+          <div>
+            <button class="btn-solid theme-success" type="button" data-bs-toggle="menu" aria-expanded="false">
+              Left Side (opens right)
+            </button>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <div class="submenu">
+                <button class="menu-item" type="button">
+                  Submenu
+                </button>
+                <div class="menu">
+                  <a class="menu-item" href="#">Sub-action 1</a>
+                  <a class="menu-item" href="#">Sub-action 2</a>
+                </div>
+              </div>
+            </div>
+          </div>
+
+          <div>
+            <button class="btn-solid theme-success" type="button" data-bs-toggle="menu" aria-expanded="false">
+              Right Side (flips left)
+            </button>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <div class="submenu">
+                <button class="menu-item" type="button">
+                  Submenu (should flip)
+                </button>
+                <div class="menu">
+                  <a class="menu-item" href="#">Sub-action 1</a>
+                  <a class="menu-item" href="#">Sub-action 2</a>
+                  <a class="menu-item" href="#">Sub-action 3</a>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </section>
+
+      <!-- Navbar Integration -->
+      <section class="test-section">
+        <h2>Navbar Integration</h2>
+        <p class="text-body-secondary">Submenus work within navbar menus.</p>
+
+        <nav class="navbar navbar-expand-lg bg-body-tertiary rounded">
+          <div class="container-fluid">
+            <a class="navbar-brand" href="#">Navbar</a>
+            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSubmenu" aria-controls="navbarSubmenu" aria-expanded="false" aria-label="Toggle navigation">
+              <span class="navbar-toggler-icon"></span>
+            </button>
+            <div class="collapse navbar-collapse" id="navbarSubmenu">
+              <ul class="navbar-nav me-auto mb-2 mb-lg-0">
+                <li class="nav-item">
+                  <a class="nav-link active" aria-current="page" href="#">Home</a>
+                </li>
+                <li class="nav-item">
+                  <a class="nav-link" href="#" role="button" data-bs-toggle="menu" aria-expanded="false">
+                    Products
+                  </a>
+                  <div class="menu">
+                    <div class="submenu">
+                      <button class="menu-item" type="button">
+                        Electronics
+                      </button>
+                      <div class="menu">
+                        <a class="menu-item" href="#">Phones</a>
+                        <a class="menu-item" href="#">Laptops</a>
+                        <a class="menu-item" href="#">Tablets</a>
+                      </div>
+                    </div>
+                    <div class="submenu">
+                      <button class="menu-item" type="button">
+                        Clothing
+                      </button>
+                      <div class="menu">
+                        <a class="menu-item" href="#">Men's</a>
+                        <a class="menu-item" href="#">Women's</a>
+                        <a class="menu-item" href="#">Kids</a>
+                      </div>
+                    </div>
+                    <hr class="menu-divider">
+                    <a class="menu-item" href="#">All Products</a>
+                  </div>
+                </li>
+                <li class="nav-item">
+                  <a class="nav-link" href="#">About</a>
+                </li>
+              </ul>
+            </div>
+          </div>
+        </nav>
+      </section>
+
+      <!-- Dropup with Submenus -->
+      <section class="test-section">
+        <h2>Dropup with Submenus</h2>
+        <p class="text-body-secondary">Submenus work with dropup direction.</p>
+
+        <div class="demo-box demo-box-center" style="min-height: 200px;">
+          <div class="btn-group dropup">
+            <button type="button" class="btn-solid theme-warning" data-bs-toggle="menu" aria-expanded="false">
+              Dropup Menu
+            </button>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <div class="submenu">
+                <button class="menu-item" type="button">
+                  More options
+                </button>
+                <div class="menu">
+                  <a class="menu-item" href="#">Sub-action 1</a>
+                  <a class="menu-item" href="#">Sub-action 2</a>
+                </div>
+              </div>
+              <a class="menu-item" href="#">Something else</a>
+            </div>
+          </div>
+        </div>
+      </section>
+
+      <!-- With Icons -->
+      <section class="test-section">
+        <h2>With Icons</h2>
+        <p class="text-body-secondary">Submenus with icons in menu items.</p>
+
+        <div class="demo-box">
+          <div>
+            <button class="btn-solid theme-dark" type="button" data-bs-toggle="menu" aria-expanded="false">
+              Menu with Icons
+            </button>
+            <div class="menu">
+              <a class="menu-item" href="#">
+                <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
+                  <path d="M8 3.5a.5.5 0 0 0-1 0V9a.5.5 0 0 0 .252.434l3.5 2a.5.5 0 0 0 .496-.868L8 8.71V3.5z"/>
+                  <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm7-8A7 7 0 1 1 1 8a7 7 0 0 1 14 0z"/>
+                </svg>
+                Recent
+              </a>
+              <div class="submenu">
+                <button class="menu-item" type="button">
+                  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
+                    <path d="M1 3.5A1.5 1.5 0 0 1 2.5 2h2.764c.958 0 1.76.56 2.311 1.184C7.985 3.648 8.48 4 9 4h4.5A1.5 1.5 0 0 1 15 5.5v.64c.57.265.94.876.856 1.546l-.64 5.124A2.5 2.5 0 0 1 12.733 15H3.266a2.5 2.5 0 0 1-2.481-2.19l-.64-5.124A1.5 1.5 0 0 1 1 6.14V3.5zM2 6h12v-.5a.5.5 0 0 0-.5-.5H9c-.964 0-1.71-.629-2.174-1.154C6.374 3.334 5.82 3 5.264 3H2.5a.5.5 0 0 0-.5.5V6zm-.367 1a.5.5 0 0 0-.496.562l.64 5.124A1.5 1.5 0 0 0 3.266 14h9.468a1.5 1.5 0 0 0 1.489-1.314l.64-5.124A.5.5 0 0 0 14.367 7H1.633z"/>
+                  </svg>
+                  Folders
+                </button>
+                <div class="menu">
+                  <a class="menu-item" href="#">Documents</a>
+                  <a class="menu-item" href="#">Downloads</a>
+                  <a class="menu-item" href="#">Pictures</a>
+                </div>
+              </div>
+              <hr class="menu-divider">
+              <a class="menu-item" href="#">
+                <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
+                  <path d="M8 4.754a3.246 3.246 0 1 0 0 6.492 3.246 3.246 0 0 0 0-6.492zM5.754 8a2.246 2.246 0 1 1 4.492 0 2.246 2.246 0 0 1-4.492 0z"/>
+                  <path d="M9.796 1.343c-.527-1.79-3.065-1.79-3.592 0l-.094.319a.873.873 0 0 1-1.255.52l-.292-.16c-1.64-.892-3.433.902-2.54 2.541l.159.292a.873.873 0 0 1-.52 1.255l-.319.094c-1.79.527-1.79 3.065 0 3.592l.319.094a.873.873 0 0 1 .52 1.255l-.16.292c-.892 1.64.901 3.434 2.541 2.54l.292-.159a.873.873 0 0 1 1.255.52l.094.319c.527 1.79 3.065 1.79 3.592 0l.094-.319a.873.873 0 0 1 1.255-.52l.292.16c1.64.893 3.434-.902 2.54-2.541l-.159-.292a.873.873 0 0 1 .52-1.255l.319-.094c1.79-.527 1.79-3.065 0-3.592l-.319-.094a.873.873 0 0 1-.52-1.255l.16-.292c.893-1.64-.902-3.433-2.541-2.54l-.292.159a.873.873 0 0 1-1.255-.52l-.094-.319zm-2.633.283c.246-.835 1.428-.835 1.674 0l.094.319a1.873 1.873 0 0 0 2.693 1.115l.291-.16c.764-.415 1.6.42 1.184 1.185l-.159.292a1.873 1.873 0 0 0 1.116 2.692l.318.094c.835.246.835 1.428 0 1.674l-.319.094a1.873 1.873 0 0 0-1.115 2.693l.16.291c.415.764-.42 1.6-1.185 1.184l-.291-.159a1.873 1.873 0 0 0-2.693 1.116l-.094.318c-.246.835-1.428.835-1.674 0l-.094-.319a1.873 1.873 0 0 0-2.692-1.115l-.292.16c-.764.415-1.6-.42-1.184-1.185l.159-.291A1.873 1.873 0 0 0 1.945 8.93l-.319-.094c-.835-.246-.835-1.428 0-1.674l.319-.094A1.873 1.873 0 0 0 3.06 4.377l-.16-.292c-.415-.764.42-1.6 1.185-1.184l.292.159a1.873 1.873 0 0 0 2.692-1.115l.094-.319z"/>
+                </svg>
+                Settings
+              </a>
+            </div>
+          </div>
+        </div>
+      </section>
+
+      <!-- Mobile Test -->
+      <section class="test-section">
+        <h2>Mobile Mode</h2>
+        <p class="text-body-secondary">
+          Resize your browser to &lt;768px width to see slide-over behavior.
+          On mobile, submenus slide in from the side with a back button.
+        </p>
+
+        <div class="demo-box">
+          <div>
+            <button class="btn-solid theme-danger" type="button" data-bs-toggle="menu" aria-expanded="false">
+              Test on Mobile
+            </button>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <div class="submenu">
+                <button class="menu-item" type="button">
+                  Navigate to submenu
+                </button>
+                <div class="menu">
+                  <a class="menu-item" href="#">Sub-action 1</a>
+                  <a class="menu-item" href="#">Sub-action 2</a>
+                  <div class="submenu">
+                    <button class="menu-item" type="button">
+                      Even deeper
+                    </button>
+                    <div class="menu">
+                      <a class="menu-item" href="#">Deep action 1</a>
+                      <a class="menu-item" href="#">Deep action 2</a>
+                    </div>
+                  </div>
+                </div>
+              </div>
+              <a class="menu-item" href="#">Something else</a>
+            </div>
+          </div>
+        </div>
+      </section>
+
+      <!-- Disabled Items -->
+      <section class="test-section">
+        <h2>With Disabled Items</h2>
+        <p class="text-body-secondary">Keyboard navigation skips disabled items.</p>
+
+        <div class="demo-box">
+          <div>
+            <button class="btn-solid theme-outline-primary" type="button" data-bs-toggle="menu" aria-expanded="false">
+              Menu with Disabled
+            </button>
+            <div class="menu">
+              <a class="menu-item" href="#">Enabled action</a>
+              <a class="menu-item disabled" href="#">Disabled action</a>
+              <div class="submenu">
+                <button class="menu-item" type="button">
+                  Submenu
+                </button>
+                <div class="menu">
+                  <a class="menu-item" href="#">Enabled</a>
+                  <a class="menu-item disabled" href="#">Disabled</a>
+                  <a class="menu-item" href="#">Enabled</a>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </section>
+
+      <!-- Feature Summary -->
+      <section class="test-section">
+        <h2>Feature Summary</h2>
+        <div class="row">
+          <div class="col-md-6">
+            <h5>Mouse Interaction</h5>
+            <ul class="feature-list">
+              <li>✅ Hover to open submenus</li>
+              <li>✅ Click to toggle submenus</li>
+              <li>✅ Safe triangle / hover intent (diagonal movement)</li>
+              <li>✅ Configurable close delay</li>
+              <li>✅ Sibling submenus auto-close</li>
+            </ul>
+          </div>
+          <div class="col-md-6">
+            <h5>Keyboard Navigation</h5>
+            <ul class="feature-list">
+              <li>✅ Arrow Up/Down - navigate items</li>
+              <li>✅ Arrow Right - enter submenu (Left in RTL)</li>
+              <li>✅ Arrow Left - exit submenu (Right in RTL)</li>
+              <li>✅ Enter/Space - activate item or open submenu</li>
+              <li>✅ Escape - close current submenu or menu</li>
+              <li>✅ Home/End - jump to first/last item</li>
+            </ul>
+          </div>
+          <div class="col-md-6">
+            <h5>Viewport Detection</h5>
+            <ul class="feature-list">
+              <li>✅ Default: opens to inline-end (right in LTR)</li>
+              <li>✅ Flips to inline-start when not enough space</li>
+              <li>✅ Shift to stay within viewport</li>
+              <li>✅ Auto-update on scroll/resize</li>
+            </ul>
+          </div>
+          <div class="col-md-6">
+            <h5>Mobile Mode</h5>
+            <ul class="feature-list">
+              <li>✅ Slide-over animation</li>
+              <li>✅ Back button navigation</li>
+              <li>✅ Full-screen submenu panels</li>
+              <li>✅ Configurable breakpoint</li>
+            </ul>
+          </div>
+          <div class="col-md-6">
+            <h5>Accessibility</h5>
+            <ul class="feature-list">
+              <li>✅ aria-haspopup on submenu triggers</li>
+              <li>✅ aria-expanded state management</li>
+              <li>✅ Focus management</li>
+              <li>✅ Focus returns to trigger on close</li>
+            </ul>
+          </div>
+          <div class="col-md-6">
+            <h5>Configuration Options</h5>
+            <ul class="feature-list">
+              <li>✅ submenuTrigger: 'click' | 'hover' | 'both'</li>
+              <li>✅ submenuDelay: close delay in ms</li>
+              <li>✅ mobileBreakpoint: px for mobile mode</li>
+            </ul>
+          </div>
+        </div>
+      </section>
+    </div>
+
+    <script src="../../../dist/js/bootstrap.bundle.js"></script>
+  </body>
+</html>
diff --git a/js/tests/visual/menu.html b/js/tests/visual/menu.html
new file mode 100644 (file)
index 0000000..8b66205
--- /dev/null
@@ -0,0 +1,204 @@
+<!doctype html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <link href="../../../dist/css/bootstrap.min.css" rel="stylesheet">
+    <title>Menu</title>
+  </head>
+  <body>
+    <div class="container">
+      <h1>Menu <small>Bootstrap Visual Test</small></h1>
+
+      <nav class="navbar navbar-expand-md bg-light">
+        <a class="navbar-brand" href="#">Navbar</a>
+        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
+          <span class="navbar-toggler-icon"></span>
+        </button>
+
+        <div class="collapse navbar-collapse" id="navbarResponsive">
+          <ul class="navbar-nav">
+            <li class="nav-item">
+              <a class="nav-link active" href="#" aria-current="page">Home</a>
+            </li>
+            <li class="nav-item">
+              <a class="nav-link" href="#">Link</a>
+            </li>
+            <li class="nav-item">
+              <a class="nav-link" href="#">Link</a>
+            </li>
+            <li class="nav-item">
+              <a class="nav-link" href="#" data-bs-toggle="menu" aria-expanded="false">Menu</a>
+              <div class="menu">
+                <a class="menu-item" href="#">Action</a>
+                <a class="menu-item" href="#">Another action</a>
+                <a class="menu-item" href="#">Something else here</a>
+              </div>
+            </li>
+          </ul>
+        </div>
+      </nav>
+
+      <ul class="nav nav-pills mt-3">
+        <li class="nav-item">
+          <a class="nav-link active" href="#">Active</a>
+        </li>
+        <li class="nav-item">
+          <a class="nav-link" href="#">Link</a>
+        </li>
+        <li class="nav-item">
+          <a class="nav-link" href="#">Link</a>
+        </li>
+        <li class="nav-item">
+          <a class="nav-link" href="#" data-bs-toggle="menu" aria-expanded="false">Menu</a>
+          <div class="menu">
+            <a class="menu-item" href="#">Action</a>
+            <a class="menu-item" href="#">Another action</a>
+            <a class="menu-item" href="#">Something else here</a>
+          </div>
+        </li>
+      </ul>
+
+      <div class="row">
+        <div class="col-sm-12 mt-4">
+          <div>
+            <button type="button" class="btn-solid theme-secondary" data-bs-toggle="menu" aria-expanded="false">Menu</button>
+            <div class="menu">
+              <input id="textField" type="text">
+            </div>
+          </div>
+          <div class="btn-group">
+            <button type="button" class="btn-solid theme-secondary">Menu (top) split</button>
+            <button type="button" class="btn-solid theme-secondary" data-bs-toggle="menu" data-bs-placement="top-start" aria-expanded="false">
+              <span class="visually-hidden">Menu (top) split</span>
+            </button>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+            </div>
+          </div>
+        </div>
+
+        <div class="col-sm-12 mt-4">
+          <div class="btn-group">
+            <button type="button" class="btn-solid theme-secondary" data-bs-toggle="menu" data-bs-placement="top-start" aria-expanded="false">Menu (top)</button>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+            </div>
+          </div>
+
+          <div class="btn-group">
+            <button type="button" class="btn-solid theme-secondary" data-bs-toggle="menu" data-bs-placement="bottom-end" aria-expanded="false">
+              This menu is end-aligned
+            </button>
+            <div class="menu">
+              <button class="menu-item" type="button">Action</button>
+              <button class="menu-item" type="button">Another action</button>
+              <button class="menu-item" type="button">Something else here</button>
+            </div>
+          </div>
+        </div>
+
+        <div class="col-sm-12 mt-4">
+          <div class="btn-group">
+            <a href="#" class="btn-solid theme-secondary">Menu (top) split align end</a>
+            <button type="button" id="menu-page-subheader-button-3" class="btn-solid theme-secondary menu-toggle-split" data-bs-toggle="menu" data-bs-placement="top-end" aria-expanded="false">
+              <span class="visually-hidden">Product actions</span>
+            </button>
+            <div class="menu">
+              <button class="menu-item" type="button">Action</button>
+              <button class="menu-item" type="button">Another action</button>
+              <button class="menu-item" type="button">Something else here with a long text</button>
+            </div>
+          </div>
+          <div class="btn-group">
+            <button type="button" class="btn-solid theme-secondary" data-bs-toggle="menu" data-bs-placement="top-end" aria-expanded="false">Menu (top) align end</button>
+            <div class="menu">
+              <button class="menu-item" type="button">Action</button>
+              <button class="menu-item" type="button">Another action</button>
+              <button class="menu-item" type="button">Something else here with a long text</button>
+            </div>
+          </div>
+        </div>
+
+        <div class="col-sm-12 mt-4">
+          <div class="btn-group">
+            <a href="#" class="btn-solid theme-secondary">Menu (end) split</a>
+            <button type="button" id="menu-page-subheader-button-4" class="btn-solid theme-secondary menu-toggle-split" data-bs-toggle="menu" data-bs-placement="right-start" aria-expanded="false">
+              <span class="visually-hidden">Product actions</span>
+            </button>
+            <div class="menu">
+              <button class="menu-item" type="button">Action</button>
+              <button class="menu-item" type="button">Another action</button>
+              <button class="menu-item" type="button">Something else here with a long text</button>
+            </div>
+          </div>
+          <div class="btn-group">
+            <button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" data-bs-placement="right-start" aria-expanded="false">
+              Menu (end)
+            </button>
+            <div class="menu">
+              <button class="menu-item" type="button">Action</button>
+              <button class="menu-item" type="button">Another action</button>
+              <button class="menu-item" type="button">Something else here</button>
+            </div>
+          </div>
+          <div class="btn-group">
+            <a href="#" class="btn-solid theme-secondary">Menu (start) split</a>
+            <button type="button" id="menu-page-subheader-button-5" class="btn-solid theme-secondary menu-toggle-split" data-bs-toggle="menu" data-bs-placement="left-start" aria-expanded="false">
+              <span class="visually-hidden">Product actions</span>
+            </button>
+            <div class="menu">
+              <button class="menu-item" type="button">Action</button>
+              <button class="menu-item" type="button">Another action</button>
+              <button class="menu-item" type="button">Something else here with a long text</button>
+            </div>
+          </div>
+          <div class="btn-group">
+            <button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" data-bs-placement="left-start" aria-expanded="false">
+              Menu (start)
+            </button>
+            <div class="menu">
+              <button class="menu-item" type="button">Action</button>
+              <button class="menu-item" type="button">Another action</button>
+              <button class="menu-item" type="button">Something else here</button>
+            </div>
+          </div>
+        </div>
+      </div>
+
+      <div class="row">
+        <div class="col-sm-3 mt-4">
+          <div class="btn-group">
+            <button type="button" class="btn-solid theme-secondary">Menu reference</button>
+            <button type="button" class="btn-solid theme-secondary" data-bs-toggle="menu" aria-expanded="false" data-bs-reference="parent">
+              <span class="visually-hidden">Menu split</span>
+            </button>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+            </div>
+          </div>
+        </div>
+        <div class="col-sm-3 mt-4">
+          <div>
+            <button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" data-bs-display="static" aria-expanded="false">
+              Menu with static display
+            </button>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <script src="../../../dist/js/bootstrap.bundle.js"></script>
+  </body>
+</html>
index 541028478d213ad086f363a758c76b190b1e4fa8..bb2e0a09fc3610ee479a9b06ecb6cc9979fe129b 100644 (file)
           <li class="nav-item">
             <a class="nav-link" href="#mdo">@mdo</a>
           </li>
-          <li class="nav-item dropdown">
-            <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#one">One</a></li>
-              <li><a class="dropdown-item" href="#two">Two</a></li>
-              <li><a class="dropdown-item" href="#three">Three</a></li>
-              <li><a class="dropdown-item" href="#présentation">Présentation</a></li>
-            </ul>
+          <li class="nav-item">
+            <a class="nav-link" href="#" data-bs-toggle="menu" aria-expanded="false">Menu</a>
+            <div class="menu">
+              <a class="menu-item" href="#one">One</a>
+              <a class="menu-item" href="#two">Two</a>
+              <a class="menu-item" href="#three">Three</a>
+              <a class="menu-item" href="#présentation">Présentation</a>
+            </div>
           </li>
           <li class="nav-item">
             <a class="nav-link" href="#final">Final</a>
index 4bf095a7c57949b73072088b794184ad14d3d86e..a2747509c694ca0bd9d09b3df755615c2a9b97e7 100644 (file)
@@ -126,6 +126,16 @@ $card-tokens: defaults(
     }
   }
 
+  .card-translucent {
+    background-color: color-mix(in oklch, var(--card-bg) 80%, transparent);
+    backdrop-filter: blur(5px) saturate(180%);
+
+    .card-header,
+    .card-footer {
+      background-color: color-mix(in oklch, var(--card-cap-bg) 60%, transparent);
+    }
+  }
+
   .card-subtle {
     border-color: var(--theme-border, var(--card-border-color));
 
index 8d47e6661d7db70fa72e95d0f107182a6a380f57..b1800c0e7e85961af6197560e523f3c4ae170a6a 100644 (file)
@@ -311,7 +311,7 @@ $dt-font-weight:              $font-weight-bold !default;
 // of components dependent on the z-axis and are designed to all work together.
 
 // scss-docs-start zindex-stack
-$zindex-dropdown:                   1000 !default;
+$zindex-menu:                       1000 !default;
 $zindex-sticky:                     1020 !default;
 $zindex-fixed:                      1030 !default;
 $zindex-offcanvas-backdrop:         1040 !default;
index e0cc2cc57f96eafadce0742d0fa3837117e53596..3f034dafd585d281c51716d5b0eb64dcfd875b12 100644 (file)
@@ -21,7 +21,7 @@ $datepicker-tokens: defaults(
     --datepicker-box-shadow: var(--box-shadow),
     --datepicker-font-size: var(--font-size-sm),
     --datepicker-min-width: 280px,
-    --datepicker-zindex: #{$zindex-dropdown},
+    --datepicker-zindex: #{$zindex-menu},
     --datepicker-header-font-weight: 600,
     --datepicker-weekday-color: var(--fg-3),
     --datepicker-day-hover-bg: var(--bg-1),
diff --git a/scss/_dropdown.scss b/scss/_dropdown.scss
deleted file mode 100644 (file)
index e7c8726..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-@use "config" as *;
-@use "functions" as *;
-@use "mixins/border-radius" as *;
-@use "mixins/box-shadow" as *;
-@use "mixins/gradients" as *;
-@use "mixins/tokens" as *;
-
-$dropdown-tokens: () !default;
-
-// scss-docs-start dropdown-tokens
-// stylelint-disable-next-line scss/dollar-variable-default
-$dropdown-tokens: defaults(
-  (
-    --dropdown-zindex: #{$zindex-dropdown},
-    --dropdown-gap: .125rem,
-    --dropdown-min-width: 10rem,
-    --dropdown-padding-x: .25rem,
-    --dropdown-padding-y: .25rem,
-    --dropdown-spacer: .125rem,
-    --dropdown-font-size: var(--font-size-sm),
-    --dropdown-color: var(--fg-body),
-    --dropdown-bg: var(--bg-body),
-    --dropdown-border-color: var(--border-color-translucent),
-    --dropdown-border-radius: var(--border-radius-lg),
-    --dropdown-border-width: var(--border-width),
-    --dropdown-inner-border-radius: calc(var(--dropdown-border-radius) - var(--dropdown-border-width)),
-    --dropdown-box-shadow: var(--box-shadow),
-    --dropdown-divider-bg: var(--border-color-translucent),
-    --dropdown-divider-margin-y: .125rem,
-    --dropdown-divider-margin-x: .25rem,
-    --dropdown-link-color: var(--fg-body),
-    --dropdown-link-hover-color: var(--fg-body),
-    --dropdown-link-hover-bg: var(--bg-1),
-    --dropdown-link-active-color: var(--primary-contrast),
-    --dropdown-link-active-bg: var(--primary-bg),
-    --dropdown-link-disabled-color: var(--fg-3),
-    --dropdown-item-gap: .5rem,
-    --dropdown-item-padding-x: .75rem,
-    --dropdown-item-padding-y: .25rem,
-    --dropdown-item-border-radius: var(--border-radius),
-    --dropdown-header-color: var(--fg-2),
-    --dropdown-header-padding-x: .75rem,
-    --dropdown-header-padding-y: .25rem,
-  ),
-  $dropdown-tokens
-);
-// scss-docs-end dropdown-tokens
-
-@layer components {
-  .dropdown {
-    position: relative;
-  }
-
-  .dropdown-menu {
-    @include tokens($dropdown-tokens);
-
-    position: absolute;
-    z-index: var(--dropdown-zindex);
-    display: none; // none by default, but flex on "open" of the menu
-    flex-direction: column;
-    gap: var(--dropdown-gap);
-    min-width: var(--dropdown-min-width);
-    padding: var(--dropdown-padding-y) var(--dropdown-padding-x);
-    margin: 0; // Override default margin of ul
-    font-size: var(--dropdown-font-size);
-    color: var(--dropdown-color);
-    text-align: start; // Ensures proper alignment if parent has it changed (e.g., modal footer)
-    list-style: none;
-    background-color: var(--dropdown-bg);
-    background-clip: padding-box;
-    border: var(--dropdown-border-width) solid var(--dropdown-border-color);
-    @include border-radius(var(--dropdown-border-radius));
-    @include box-shadow(var(--dropdown-box-shadow));
-  }
-
-  .dropdown-menu.show {
-    display: flex;
-  }
-
-  .dropdown-divider {
-    height: 0;
-    margin: var(--dropdown-divider-margin-y) var(--dropdown-divider-margin-x);
-    overflow: hidden;
-    border-block-start: 1px solid var(--dropdown-divider-bg);
-    opacity: 1;
-  }
-
-  // Links, buttons, and more within the dropdown menu
-  //
-  // `<button>`-specific styles are denoted with `// For <button>s`
-  .dropdown-item {
-    display: flex;
-    gap: var(--dropdown-item-gap);
-    align-items: center;
-    width: 100%; // For `<button>`s
-    padding: var(--dropdown-item-padding-y) var(--dropdown-item-padding-x);
-    font-weight: $font-weight-normal;
-    color: var(--theme-text, var(--dropdown-link-color));
-    text-align: inherit; // For `<button>`s
-    text-decoration: none;
-    white-space: nowrap; // prevent links from randomly breaking onto new lines
-    background-color: transparent; // For `<button>`s
-    border: 0; // For `<button>`s
-    @include border-radius(var(--dropdown-item-border-radius, 0));
-
-    &:hover,
-    &:focus {
-      color: var(--theme-text, var(--dropdown-link-hover-color));
-      @include gradient-bg(var(--theme-bg-subtle, var(--dropdown-link-hover-bg)));
-    }
-
-    &.active,
-    &:active {
-      color: var(--theme-contrast, var(--dropdown-link-active-color));
-      @include gradient-bg(var(--theme-bg, var(--dropdown-link-active-bg)));
-    }
-
-    &.disabled,
-    &:disabled {
-      color: var(--dropdown-link-disabled-color);
-      pointer-events: none;
-      background-color: transparent;
-      // Remove CSS gradients if they're enabled
-      // stylelint-disable-next-line scss/at-function-named-arguments
-      background-image: if(sass($enable-gradients): none; else: null);
-    }
-  }
-
-  .dropdown-header {
-    display: block;
-    padding: var(--dropdown-header-padding-y) var(--dropdown-header-padding-x);
-    margin-bottom: 0; // for use with heading elements
-    font-size: var(--font-size-sm);
-    color: var(--dropdown-header-color);
-    white-space: nowrap; // as with > li > a
-  }
-
-  .dropdown-item-text {
-    display: block;
-    padding: var(--dropdown-item-padding-y) var(--dropdown-item-padding-x);
-    color: var(--fg-2);
-  }
-
-  // scss-docs-start dropdown-submenu
-  // Submenus
-  //
-  // Nested dropdown menus with hover/click activation and keyboard support.
-
-  .dropdown-submenu {
-    position: relative;
-
-    > .dropdown-item {
-      display: flex;
-      align-items: center;
-      justify-content: space-between;
-    }
-
-    > .dropdown-item::after {
-      display: inline-block;
-      flex-shrink: 0;
-      width: .375em;
-      height: .375em;
-      margin-inline-start: auto;
-      content: "";
-      border-color: currentcolor;
-      border-style: solid;
-      border-width: 0 .125em .125em 0;
-      transform: rotate(-45deg);
-
-      // RTL: flip the chevron direction
-      [dir="rtl"] & {
-        transform: rotate(135deg);
-      }
-    }
-
-    // Submenu positioning (set by JS via Floating UI)
-    > .dropdown-menu {
-      top: 0;
-      // Offset to align with parent item
-      margin-top: calc(-1 * var(--dropdown-padding-y));
-    }
-
-    &:hover > .dropdown-item,
-    &:focus-within > .dropdown-item {
-      color: var(--dropdown-link-hover-color);
-      background-color: var(--dropdown-link-hover-bg);
-    }
-
-    &.show > .dropdown-item {
-      color: var(--dropdown-link-hover-color);
-      background-color: var(--dropdown-link-hover-bg);
-    }
-  }
-  // scss-docs-end dropdown-submenu
-}
diff --git a/scss/_menu.scss b/scss/_menu.scss
new file mode 100644 (file)
index 0000000..c2c9b78
--- /dev/null
@@ -0,0 +1,312 @@
+@use "config" as *;
+@use "functions" as *;
+@use "mixins/border-radius" as *;
+@use "mixins/box-shadow" as *;
+@use "mixins/gradients" as *;
+@use "mixins/tokens" as *;
+
+// stylelint-disable scss/dollar-variable-default, custom-property-no-missing-var-function
+$menu-tokens: () !default;
+
+// scss-docs-start menu-tokens
+$menu-tokens: defaults(
+  (
+    --menu-zindex: #{$zindex-menu},
+    --menu-gap: .125rem,
+    --menu-min-width: 10rem,
+    --menu-padding-x: .25rem,
+    --menu-padding-y: .25rem,
+    --menu-spacer: .125rem,
+    --menu-font-size: var(--font-size-sm),
+    --menu-color: var(--fg-body),
+    --menu-bg: var(--bg-body),
+    // --menu-border-color: var(--border-color-translucent),
+    // --menu-border-radius: var(--border-radius-lg),
+    // --menu-border-width: var(--border-width),
+    --menu-box-shadow: var(--box-shadow),
+    // --menu-max-height: none,
+    --menu-divider-bg: var(--border-color-translucent),
+    --menu-divider-margin-y: .125rem,
+    --menu-divider-margin-x: .25rem,
+    --menu-item-color: var(--menu-color, var(--fg-body)),
+    --menu-item-hover-color: var(--menu-color, var(--fg-body)),
+    --menu-item-hover-bg: var(--bg-1),
+    --menu-item-active-color: var(--primary-contrast),
+    --menu-item-active-bg: var(--primary-bg),
+    --menu-item-disabled-color: var(--fg-3),
+    --menu-item-gap: .5rem,
+    --menu-item-padding-x: .75rem,
+    --menu-item-padding-y: .25rem,
+    --menu-item-border-radius: var(--border-radius),
+    --menu-icon-size: 1rem,
+    --menu-image-size: 1.5rem,
+    --menu-description-font-size: var(--font-size-xs),
+    --menu-check-color: currentcolor,
+    --menu-header-color: var(--fg-3),
+    --menu-header-padding-x: .75rem,
+    --menu-header-padding-y: .25rem,
+  ),
+  $menu-tokens
+);
+// scss-docs-end menu-tokens
+
+// stylelint-enable custom-property-no-missing-var-function, scss/dollar-variable-default
+
+@layer components {
+  .menu {
+    @include tokens($menu-tokens);
+
+    position: absolute;
+    z-index: var(--menu-zindex);
+    display: none;
+    flex-direction: column;
+    gap: var(--menu-gap);
+    min-width: var(--menu-min-width);
+    max-height: var(--menu-max-height, none);
+    padding: var(--menu-padding-y) var(--menu-padding-x);
+    margin: 0;
+    overflow-y: var(--menu-overflow-y, initial);
+    overscroll-behavior: contain;
+    font-size: var(--menu-font-size);
+    color: var(--menu-color);
+    text-align: start;
+    list-style: none;
+    background-color: var(--menu-bg);
+    background-clip: padding-box;
+    border: var(--menu-border-width, var(--border-width)) solid var(--menu-border-color, var(--border-color-translucent));
+    @include border-radius(var(--menu-border-radius, var(--border-radius-lg)));
+    @include box-shadow(var(--menu-box-shadow));
+
+    &.show {
+      display: flex;
+    }
+  }
+
+  .menu-scrollable {
+    --menu-max-height: 80dvh;
+    --menu-overflow-y: auto;
+  }
+
+  .menu-translucent {
+    --menu-item-hover-bg-light: color-mix(in oklch, var(--bg-1) 90%, transparent);
+    --menu-item-hover-bg-dark: color-mix(in oklch, var(--bg-1) 80%, transparent);
+
+    --menu-item-active-bg-light: color-mix(in oklch, var(--primary-bg) 80%, transparent);
+    --menu-item-active-bg-dark: color-mix(in oklch, var(--primary-bg) 70%, transparent);
+
+    --menu-item-active-bg: light-dark(var(--menu-item-active-bg-light), var(--menu-item-active-bg-dark));
+    --menu-item-hover-bg: light-dark(var(--menu-item-hover-bg-light), var(--menu-item-hover-bg-dark));
+
+    background-color: color-mix(in oklch, var(--menu-bg) 80%, transparent);
+    backdrop-filter: blur(5px) saturate(180%);
+  }
+
+  .menu-divider {
+    height: 0;
+    margin: var(--menu-divider-margin-y) var(--menu-divider-margin-x);
+    overflow: hidden;
+    border-block-start: 1px solid var(--menu-divider-bg);
+    opacity: 1;
+  }
+
+  .menu-item {
+    display: flex;
+    gap: var(--menu-item-gap);
+    align-items: center;
+    width: 100%;
+    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);
+    font-weight: var(--menu-item-font-weight, var(--font-weight-normal));
+    color: var(--theme-text, var(--menu-item-color));
+    text-align: inherit;
+    text-decoration: none;
+    white-space: nowrap;
+    cursor: pointer;
+    background-color: transparent;
+    border: 0;
+    outline: 0;
+    @include border-radius(var(--menu-item-border-radius, 0));
+
+    &:hover,
+    &:focus {
+      color: var(--theme-text, var(--menu-item-hover-color));
+      @include gradient-bg(var(--theme-bg-subtle, var(--menu-item-hover-bg)));
+    }
+
+    &.active,
+    &:active {
+      color: var(--theme-contrast, var(--menu-item-active-color));
+      @include gradient-bg(var(--theme-bg, var(--menu-item-active-bg)));
+
+      .menu-item-icon {
+        color: inherit !important; // stylelint-disable-line declaration-no-important
+      }
+    }
+
+    &.selected {
+      font-weight: $font-weight-semibold;
+    }
+
+    &.disabled,
+    &:disabled {
+      color: var(--menu-item-disabled-color);
+      pointer-events: none;
+      background-color: transparent;
+      // stylelint-disable-next-line scss/at-function-named-arguments
+      background-image: if(sass($enable-gradients): none; else: null);
+    }
+  }
+
+  .menu-item-icon {
+    flex-shrink: 0;
+    align-self: flex-start;
+    width: var(--menu-icon-size);
+    height: auto;
+    margin-top: .125rem;
+  }
+
+  .menu-image {
+    width: var(--menu-image-size);
+    height: var(--menu-image-size);
+    object-fit: cover;
+    @include border-radius(var(--border-radius-sm));
+  }
+
+  .menu-item-content {
+    display: flex;
+    flex: 1;
+    flex-direction: column;
+    min-width: fit-content;
+  }
+
+  .menu-item-description {
+    font-size: var(--menu-description-font-size);
+    font-weight: var(--font-weight-normal);
+    color: color-mix(in oklch, currentcolor 65%, transparent);
+  }
+
+  .menu-item-check {
+    flex-shrink: 0;
+    align-self: flex-start;
+    margin-block-start: .125rem;
+    margin-inline-start: auto;
+    color: var(--menu-check-color);
+    visibility: hidden;
+
+    .selected > & {
+      visibility: visible;
+    }
+  }
+
+  .menu-header {
+    display: block;
+    padding: var(--menu-header-padding-y) var(--menu-header-padding-x);
+    margin-bottom: 0;
+    font-size: var(--font-size-sm);
+    color: var(--menu-header-color);
+    white-space: nowrap;
+  }
+
+  .menu-text {
+    display: block;
+    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);
+    color: var(--fg-2);
+  }
+
+  // scss-docs-start submenu
+  .submenu {
+    position: relative;
+
+    > .menu-item {
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+    }
+
+    > .menu-item::after {
+      display: inline-block;
+      flex-shrink: 0;
+      width: .375em;
+      height: .375em;
+      margin-inline-start: auto;
+      content: "";
+      border-color: currentcolor;
+      border-style: solid;
+      border-width: 0 .125em .125em 0;
+      transform: rotate(-45deg);
+
+      [dir="rtl"] & {
+        transform: rotate(135deg);
+      }
+    }
+
+    > .menu {
+      top: 0;
+      margin-top: calc(-1 * var(--menu-padding-y));
+    }
+
+    &:hover > .menu-item,
+    &:focus-within > .menu-item {
+      color: var(--menu-item-hover-color);
+      background-color: var(--menu-item-hover-bg);
+    }
+
+    &.show > .menu-item {
+      color: var(--menu-item-hover-color);
+      background-color: var(--menu-item-hover-bg);
+    }
+  }
+
+  // Mobile stacking: submenu covers the parent menu in-place
+  @media (max-width: 575.98px) {
+    .submenu:has(.submenu-stacked) {
+      position: static;
+    }
+
+    .submenu-stacked {
+      position: absolute;
+      inset: 0;
+      z-index: 1;
+      display: flex;
+      flex-direction: column;
+      gap: var(--menu-gap);
+      min-width: 0;
+      padding: var(--menu-padding-y) var(--menu-padding-x);
+      background-color: var(--menu-bg);
+      border: 0;
+      @include border-radius(0);
+      box-shadow: none;
+    }
+
+    .submenu-back {
+      display: flex;
+      gap: var(--menu-item-gap);
+      align-items: center;
+      padding: var(--menu-item-padding-y) var(--menu-item-padding-x);
+      font-weight: var(--font-weight-semibold, 600);
+      color: var(--menu-item-color);
+
+      &::before {
+        display: inline-block;
+        flex-shrink: 0;
+        width: .375em;
+        height: .375em;
+        content: "";
+        border-color: currentcolor;
+        border-style: solid;
+        border-width: .125em 0 0 .125em;
+        transform: rotate(-45deg);
+
+        [dir="rtl"] & {
+          border-width: 0 .125em .125em 0;
+        }
+      }
+    }
+
+    .submenu-dimmed {
+      pointer-events: none;
+      filter: blur(2px);
+      opacity: .3;
+    }
+  }
+  // scss-docs-end submenu
+}
index c423496388cadc896eec4e45092dd345a13df82f..28b34c5e0899e9898e86e08c312124a6c31a44f8 100644 (file)
@@ -1,7 +1,7 @@
 // Nav Overflow (Priority+ Pattern)
 //
 // A responsive navigation pattern that automatically moves items
-// to an overflow dropdown when space is limited.
+// to an overflow menu when space is limited.
 
 @layer components {
   .nav-overflow {
index eb014a9975abc825dacd1927dae32fd8cf005f27..64459ef480d32070cdd57a3e568fcdb04d3a8a87 100644 (file)
@@ -174,10 +174,8 @@ $nav-underline-tokens: defaults(
       border-bottom-color: var(--nav-tabs-link-active-bg);
     }
 
-    .dropdown-menu {
-      // Make dropdown border overlap tab border
+    .menu {
       margin-top: calc(-1 * var(--nav-tabs-border-width));
-      // Remove the top rounded corners here since there is a hard edge above the menu
       @include border-top-radius(0);
     }
   }
index 2296f124693aabaa3943ebe991c02f0fb9eef245..4f0005f351ba2ad01d0c8cba73e4f5321143890c 100644 (file)
@@ -257,6 +257,21 @@ $navbar-nav-tokens: defaults(
   }
   // scss-docs-end navbar-expand-loop
 
+  .navbar-translucent {
+    position: relative;
+    background-color: transparent;
+
+    &::before {
+      position: absolute;
+      inset: 0;
+      z-index: -1;
+      content: "";
+      background-color: color-mix(in oklch, var(--navbar-bg, var(--bg-body)) 80%, transparent);
+      background-image: none;
+      backdrop-filter: blur(5px) saturate(180%);
+    }
+  }
+
   .navbar[data-bs-theme="dark"] {
     @include tokens($navbar-dark-tokens);
   }
index 6a80b7ed43532beb3b681303f42e7a419df0e16b..fb0211f998a4ef81479a49c791db31ddbc325f17 100644 (file)
@@ -81,7 +81,7 @@ $offcanvas-backdrop-tokens: defaults(
         @include transition(var(--offcanvas-transition));
 
         // Placement: Start (left in LTR, right in RTL)
-        &.offcanvas-start {
+        &:where(.offcanvas-start) {
           inset-block: var(--offcanvas-inset);
           inset-inline-start: var(--offcanvas-inset);
           width: var(--offcanvas-width);
@@ -93,7 +93,7 @@ $offcanvas-backdrop-tokens: defaults(
         }
 
         // Placement: End (right in LTR, left in RTL)
-        &.offcanvas-end {
+        &:where(.offcanvas-end) {
           inset-block: var(--offcanvas-inset);
           inset-inline-end: var(--offcanvas-inset);
           width: var(--offcanvas-width);
@@ -105,21 +105,21 @@ $offcanvas-backdrop-tokens: defaults(
         }
 
         // Placement: Top
-        &.offcanvas-top {
+        &:where(.offcanvas-top) {
           inset: var(--offcanvas-inset) var(--offcanvas-inset) auto;
           height: var(--offcanvas-height);
           transform: translateY(-100%);
         }
 
         // Placement: Bottom
-        &.offcanvas-bottom {
+        &:where(.offcanvas-bottom) {
           inset: auto var(--offcanvas-inset) var(--offcanvas-inset);
           height: var(--offcanvas-height);
           transform: translateY(100%);
         }
 
         // Fullscreen variant - covers entire viewport
-        &.offcanvas-fullscreen {
+        &:where(.offcanvas-fullscreen) {
           inset: var(--offcanvas-inset);
           width: auto;
           max-width: none;
@@ -170,6 +170,11 @@ $offcanvas-backdrop-tokens: defaults(
     @include overlay-backdrop($zindex-offcanvas-backdrop, var(--offcanvas-backdrop-bg), var(--offcanvas-backdrop-opacity), var(--offcanvas-backdrop-blur));
   }
 
+  .offcanvas-translucent {
+    background-color: color-mix(in oklch, var(--offcanvas-bg) 80%, transparent);
+    backdrop-filter: blur(5px) saturate(180%);
+  }
+
   // Header with close button
   .offcanvas-header {
     display: flex;
@@ -212,4 +217,8 @@ $offcanvas-backdrop-tokens: defaults(
     padding: var(--offcanvas-padding-y) var(--offcanvas-padding-x);
     border-block-start: var(--offcanvas-border-width) solid var(--offcanvas-border-color);
   }
+
+  .offcanvas-fit-content {
+    inset-block-end: auto;
+  }
 }
index 69a300cec6b97220b7ec4c5d9c299a3671bed3eb..173a84bf8f62641852a16480845fe9c360213f51 100644 (file)
@@ -85,6 +85,10 @@ $toast-tokens: defaults(
     }
   }
 
+  .toast-translucent {
+    backdrop-filter: blur(5px) saturate(180%);
+  }
+
   .toast-body {
     padding: var(--toast-padding-x);
     word-wrap: break-word;
index 39211802d2540e31b085c5841b47ce4197cfefeb..3562eed064fde6cce233b2fda45e0903eb9c17e5 100644 (file)
@@ -435,12 +435,14 @@ $utilities: map.merge(
     ),
     "grid-column-counts": (
       responsive: true,
-      property: --columns,
+      // property: --columns,
+      property: grid-template-columns,
       class: grid-cols,
       values: (
-        3,
-        4,
-        6
+        "2": repeat(2, 1fr),
+        "3": repeat(3, 1fr),
+        "4": repeat(4, 1fr),
+        "6": repeat(6, 1fr),
       )
     ),
     "grid-columns": (
index aebbd7c8992b14da4431726e222d8d87dc35d618..fbbbfc11764e9dd4378b0ddfe12570e567dcf299 100644 (file)
@@ -23,7 +23,7 @@
 @forward "carousel";
 @forward "datepicker";
 @forward "dialog";
-@forward "dropdown";
+@forward "menu";
 @forward "list-group";
 @forward "nav";
 @forward "nav-overflow";
index 68d6634db49a601c0e9a7fc51194008116cf6e7c..285bc6114edf80605a3284cc5cacdd378f993943 100644 (file)
@@ -51,7 +51,7 @@
     }
 
     // Reset rounded corners
-    > [class*="btn-"]:not(:last-child):not(.dropdown-toggle),
+    > [class*="btn-"]:not(:last-child):not(:has(+ .menu)),
     > .btn-group:not(:last-child) > [class*="btn-"] {
       @include border-end-radius(0);
     }
     }
   }
 
-  //
-  // Split button dropdowns
-  //
-
-  .dropdown-toggle-split {
-    padding-inline: calc(var(--btn-padding-x) * .75);
-
-    &::after,
-    .dropup &::after,
-    .dropend &::after {
-      margin-inline-start: 0;
-    }
-
-    .dropstart &::before {
-      margin-inline-end: 0;
-    }
-  }
-
   //
   // Vertical button groups
   //
     }
 
     // Reset rounded corners
-    > [class*="btn-"]:not(:last-child):not(.dropdown-toggle),
+    > [class*="btn-"]:not(:last-child):not(:has(+ .menu)),
     > .btn-group:not(:last-child) > [class*="btn-"] {
       @include border-bottom-radius(0);
     }
diff --git a/scss/forms/_combobox.scss b/scss/forms/_combobox.scss
new file mode 100644 (file)
index 0000000..9b99994
--- /dev/null
@@ -0,0 +1,71 @@
+@use "../mixins/transition" as *;
+
+@layer components {
+  .combobox-toggle {
+    display: inline-flex;
+    gap: .5rem;
+    align-items: center;
+    justify-content: space-between;
+    width: 100%;
+    padding-inline-end: var(--control-padding-x);
+    text-align: start;
+    cursor: pointer;
+
+    &.show {
+      background-color: var(--bg-1);
+    }
+
+    &:disabled,
+    &.disabled {
+      cursor: not-allowed;
+      opacity: .65;
+    }
+  }
+
+  .combobox-value {
+    display: flex;
+    flex: 1;
+    gap: .5rem;
+    align-items: center;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+
+  .combobox-placeholder {
+    color: color-mix(in oklch, currentcolor 65%, transparent);
+  }
+
+  .combobox-caret {
+    flex-shrink: 0;
+    @include transition(transform .2s ease-in-out);
+
+    .show > & {
+      transform: rotate(180deg);
+    }
+  }
+
+  .combobox-toggle + .menu {
+    --menu-max-height: 300px;
+    --menu-overflow-y: auto;
+  }
+
+  .combobox-search {
+    position: sticky;
+    top: 0;
+    z-index: 1;
+    padding: var(--menu-padding-x, .25rem);
+    background-color: var(--menu-bg, var(--bg-body));
+  }
+
+  .combobox-search-input {
+    width: 100%;
+  }
+
+  .combobox-no-results {
+    padding: 1rem;
+    font-size: var(--font-size-sm);
+    color: var(--fg-3);
+    text-align: center;
+  }
+}
index bf21654e36b38fcb4c483e1635ad7be772aa8f23..4e0c201bf371a12aad205dd1c03777fbc0f4aaf5 100644 (file)
@@ -118,8 +118,8 @@ $input-group-sizes: defaults(
 
     $validation-messages: "";
     &:not(.has-validation) {
-      > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),
-      > .dropdown-toggle:nth-last-child(n + 3),
+      > :not(:last-child):not(.menu-toggle-split):not(.menu):not(.form-floating),
+      > .menu-toggle-split:nth-last-child(n + 3),
       > .form-floating:not(:last-child) > .form-control,
       > .form-floating:not(:last-child) > .form-select {
         @include border-end-radius(0);
@@ -127,15 +127,15 @@ $input-group-sizes: defaults(
     }
 
     &.has-validation {
-      > :nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),
-      > .dropdown-toggle:nth-last-child(n + 4),
+      > :nth-last-child(n + 3):not(.menu-toggle-split):not(.menu):not(.form-floating),
+      > .menu-toggle-split:nth-last-child(n + 4),
       > .form-floating:nth-last-child(n + 3) > .form-control,
       > .form-floating:nth-last-child(n + 3) > .form-select {
         @include border-end-radius(0);
       }
     }
 
-    > :not(:first-child):not(.dropdown-menu)#{$validation-messages} {
+    > :not(:first-child):not(.menu)#{$validation-messages} {
       margin-inline-start: calc(-1 * var(--border-width));
       @include border-start-radius(0);
     }
index 1b4c96116ddcca858a15da4c724c850d2bdd593a..b514fb2c599f6d35503dcf825788ce6755f23cca 100644 (file)
@@ -11,4 +11,5 @@
 @forward "otp-input";
 @forward "form-adorn";
 @forward "chip-input";
+@forward "combobox";
 @forward "validation";
index 40f1bb87f4c2aa9100916ab9c9b7a5ec07590a0d..45a8186780768a50d71369eae8a5befaf12a4e74 100644 (file)
     --brand-secondary: #9c27b0,
     --site-max-width: 1400px,
   ),
-  // Customize dropdown tokens
-  $dropdown-tokens: (
-    --dropdown-bg: var(--bg-2),
-    --dropdown-border-radius: var(--border-radius-xl),
-    --dropdown-padding-x: 1rem,
-    --dropdown-padding-y: 1rem,
+  // Customize menu tokens
+  $menu-tokens: (
+    --menu-bg: var(--bg-2),
+    --menu-item-border-radius: var(--border-radius-xl),
+    --menu-padding-x: 1rem,
+    --menu-padding-y: 1rem,
   )
 );
 
index ba8e1dc37feaf2cf4a13c0959826478d8c58c400..70d6e84ddbfb3b261b8f45d731cb261133fd103d 100644 (file)
@@ -49,8 +49,8 @@
       description: 'Common navigation patterns ideal for offcanvas or multi-column layouts.'
     - name: Footers
       description: 'Finish every page strong with an awesome footer, big or small.'
-    - name: Dropdowns
-      description: 'Enhance your dropdowns with filters, icons, custom styles, and more.'
+    # - name: Menus
+    #   description: 'Enhance your menus with filters, icons, custom styles, and more.'
     - name: List groups
       description: 'Extend list groups with utilities and custom styles for any content.'
     - name: Dialogs
index d4c56257df7cf75185f21b7cf0e94bcee4453b4c..191740aaf0c2a32c1391df346e5fdad7ef001bc8 100644 (file)
@@ -22,9 +22,9 @@
   description: Add flexible and responsive dialogs to your project.
   link: components/dialog/
 
-- name: Dropdown
+- name: Menu
   description: Create menus of links, actions, forms, and more.
-  link: components/dropdowns/
+  link: components/menus/
 
 - name: Offcanvas
   description: Build and toggle hidden sidebars into any page.
index 55a22c3596c2d230faf1a772d90af461f865562e..0a17e0f3618bdc75d9b81620a62750cf71ac6172 100644 (file)
     - group: Navigation
       pages:
         - title: Breadcrumb
-        - title: Dropdown
+        - title: Menu
         - title: Navs & tabs
         - title: Nav overflow
         - title: Navbar
index 086b4bc4f32efaaf17d50e48bc318cbabda59a22..e87bd5adbf7de0c1b5e544173958fc949489f919 100644 (file)
@@ -82,11 +82,8 @@ body {
 [id="buttons"] .bd-example .btn,
 [id="tooltips"] .bd-example .btn,
 [id="popovers"] .bd-example .btn,
-[id="dropdowns"] .bd-example .btn-group,
-[id="dropdowns"] .bd-example .dropdown,
-[id="dropdowns"] .bd-example .dropup,
-[id="dropdowns"] .bd-example .dropend,
-[id="dropdowns"] .bd-example .dropstart {
+[id="menus"] .bd-example .btn-group,
+[id="menus"] .bd-example .menu {
   margin: 0 1rem 1rem 0;
 }
 
index a36aeac9bb6eca97d1fef80dd5f7c704ac2d7cab..c4cc275804b9f779008fb6a4228c970f7cdc5052 100644 (file)
@@ -54,7 +54,7 @@ export const body_class = 'bg-body-tertiary'
           <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#card">Card</a></li>
           <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#carousel">Carousel</a></li>
           <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#dialog">Dialog</a></li>
-          <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#dropdowns">Dropdowns</a></li>
+          <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#menus">Menus</a></li>
           <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#list-group">List group</a></li>
           <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#navs">Navs</a></li>
           <li><a class="d-inline-flex align-items-center rounded text-decoration-none" href="#navbar">Navbar</a></li>
@@ -897,52 +897,52 @@ export const body_class = 'bg-body-tertiary'
         `} />
       </div>
     </article>
-    <article class="my-3" id="dropdowns">
+    <article class="my-3" id="menus">
       <div class="bd-heading sticky-xl-top align-self-start mt-5 mb-3 mt-xl-0 mb-xl-2">
-        <h3>Dropdowns</h3>
-        <a class="d-flex align-items-center" href={getVersionedDocsPath('components/dropdowns')}>Documentation</a>
+        <h3>Menus</h3>
+        <a class="d-flex align-items-center" href={getVersionedDocsPath('components/menus')}>Documentation</a>
       </div>
       <div>
         <Example showMarkup={false} code={`
         <div class="btn-group w-100 align-items-center justify-content-between flex-wrap me-0">
-          <div class="dropdown">
-            <button class="btn-solid theme-secondary btn-sm dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-              Dropdown button
+          <div>
+            <button class="btn-solid theme-secondary btn-sm" type="button" data-bs-toggle="menu" aria-expanded="false">
+              Menu
             </button>
-            <ul class="dropdown-menu">
-              <li><h6 class="dropdown-header">Dropdown header</h6></li>
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-              <li><hr class="dropdown-divider"></li>
-              <li><a class="dropdown-item" href="#">Separated link</a></li>
-            </ul>
+            <div class="menu">
+              <h6 class="menu-header">Menu header</h6>
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+              <hr class="menu-divider">
+              <a class="menu-item" href="#">Separated link</a>
+            </div>
           </div>
-          <div class="dropdown">
-            <button class="btn-solid theme-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-              Dropdown button
+          <div>
+            <button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" aria-expanded="false">
+              Menu
             </button>
-            <ul class="dropdown-menu">
-              <li><h6 class="dropdown-header">Dropdown header</h6></li>
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-              <li><hr class="dropdown-divider"></li>
-              <li><a class="dropdown-item" href="#">Separated link</a></li>
-            </ul>
+            <div class="menu">
+              <h6 class="menu-header">Menu header</h6>
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+              <hr class="menu-divider">
+              <a class="menu-item" href="#">Separated link</a>
+            </div>
           </div>
-          <div class="dropdown">
-            <button class="btn-solid theme-secondary btn-lg dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-              Dropdown button
+          <div>
+            <button class="btn-solid theme-secondary btn-lg" type="button" data-bs-toggle="menu" aria-expanded="false">
+              Menu
             </button>
-            <ul class="dropdown-menu">
-              <li><h6 class="dropdown-header">Dropdown header</h6></li>
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-              <li><hr class="dropdown-divider"></li>
-              <li><a class="dropdown-item" href="#">Separated link</a></li>
-            </ul>
+            <div class="menu">
+              <h6 class="menu-header">Menu header</h6>
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+              <hr class="menu-divider">
+              <a class="menu-item" href="#">Separated link</a>
+            </div>
           </div>
         </div>
         `} />
@@ -950,129 +950,129 @@ export const body_class = 'bg-body-tertiary'
         <Example showMarkup={false} code={`
           <div class="btn-group">
             <button type="button" class="btn-solid theme-primary">Primary</button>
-            <button type="button" class="btn-solid theme-primary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-              <span class="visually-hidden">Toggle Dropdown</span>
+            <button type="button" class="btn-solid theme-primary menu-toggle-split" data-bs-toggle="menu" aria-expanded="false">
+              <span class="visually-hidden">Toggle Menu</span>
             </button>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-            </ul>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+            </div>
           </div><!-- /btn-group -->
           <div class="btn-group">
             <button type="button" class="btn-solid theme-secondary">Secondary</button>
-            <button type="button" class="btn-solid theme-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-              <span class="visually-hidden">Toggle Dropdown</span>
+            <button type="button" class="btn-solid theme-secondary menu-toggle-split" data-bs-toggle="menu" aria-expanded="false">
+              <span class="visually-hidden">Toggle Menu</span>
             </button>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-            </ul>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+            </div>
           </div><!-- /btn-group -->
           <div class="btn-group">
             <button type="button" class="btn-solid theme-success">Success</button>
-            <button type="button" class="btn-solid theme-success dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-              <span class="visually-hidden">Toggle Dropdown</span>
+            <button type="button" class="btn-solid theme-success menu-toggle-split" data-bs-toggle="menu" aria-expanded="false">
+              <span class="visually-hidden">Toggle Menu</span>
             </button>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-            </ul>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+            </div>
           </div><!-- /btn-group -->
           <div class="btn-group">
             <button type="button" class="btn-solid theme-info">Info</button>
-            <button type="button" class="btn-solid theme-info dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-              <span class="visually-hidden">Toggle Dropdown</span>
+            <button type="button" class="btn-solid theme-info menu-toggle-split" data-bs-toggle="menu" aria-expanded="false">
+              <span class="visually-hidden">Toggle Menu</span>
             </button>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-            </ul>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+            </div>
           </div><!-- /btn-group -->
           <div class="btn-group">
             <button type="button" class="btn-solid theme-warning">Warning</button>
-            <button type="button" class="btn-solid theme-warning dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-              <span class="visually-hidden">Toggle Dropdown</span>
+            <button type="button" class="btn-solid theme-warning menu-toggle-split" data-bs-toggle="menu" aria-expanded="false">
+              <span class="visually-hidden">Toggle Menu</span>
             </button>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-            </ul>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+            </div>
           </div><!-- /btn-group -->
           <div class="btn-group">
             <button type="button" class="btn-solid theme-danger">Danger</button>
-            <button type="button" class="btn-solid theme-danger dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-              <span class="visually-hidden">Toggle Dropdown</span>
+            <button type="button" class="btn-solid theme-danger menu-toggle-split" data-bs-toggle="menu" aria-expanded="false">
+              <span class="visually-hidden">Toggle Menu</span>
             </button>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-            </ul>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+            </div>
           </div><!-- /btn-group -->
           `} />
 
         <Example showMarkup={false} code={`
           <div class="btn-group w-100 align-items-center justify-content-between flex-wrap me-0">
-            <div class="dropend">
-              <button class="btn-solid theme-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-                Dropend button
+            <div>
+              <button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" data-bs-placement="right-start" aria-expanded="false">
+                End menu
               </button>
-              <ul class="dropdown-menu">
-                <li><h6 class="dropdown-header">Dropdown header</h6></li>
-                <li><a class="dropdown-item" href="#">Action</a></li>
-                <li><a class="dropdown-item" href="#">Another action</a></li>
-                <li><a class="dropdown-item" href="#">Something else here</a></li>
-                <li><hr class="dropdown-divider"></li>
-                <li><a class="dropdown-item" href="#">Separated link</a></li>
-              </ul>
+              <div class="menu">
+                <h6 class="menu-header">Menu header</h6>
+                <a class="menu-item" href="#">Action</a>
+                <a class="menu-item" href="#">Another action</a>
+                <a class="menu-item" href="#">Something else here</a>
+                <hr class="menu-divider">
+                <a class="menu-item" href="#">Separated link</a>
+              </div>
             </div>
-            <div class="dropup">
-              <button class="btn-solid theme-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-                Dropup button
+            <div>
+              <button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" data-bs-placement="top-start" aria-expanded="false">
+                Up menu
               </button>
-              <ul class="dropdown-menu">
-                <li><h6 class="dropdown-header">Dropdown header</h6></li>
-                <li><a class="dropdown-item" href="#">Action</a></li>
-                <li><a class="dropdown-item" href="#">Another action</a></li>
-                <li><a class="dropdown-item" href="#">Something else here</a></li>
-                <li><hr class="dropdown-divider"></li>
-                <li><a class="dropdown-item" href="#">Separated link</a></li>
-              </ul>
+              <div class="menu">
+                <h6 class="menu-header">Menu header</h6>
+                <a class="menu-item" href="#">Action</a>
+                <a class="menu-item" href="#">Another action</a>
+                <a class="menu-item" href="#">Something else here</a>
+                <hr class="menu-divider">
+                <a class="menu-item" href="#">Separated link</a>
+              </div>
             </div>
-            <div class="dropstart">
-              <button class="btn-solid theme-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-                Dropstart button
+            <div>
+              <button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" data-bs-placement="left-start" aria-expanded="false">
+                Start menu
               </button>
-              <ul class="dropdown-menu">
-                <li><h6 class="dropdown-header">Dropdown header</h6></li>
-                <li><a class="dropdown-item" href="#">Action</a></li>
-                <li><a class="dropdown-item" href="#">Another action</a></li>
-                <li><a class="dropdown-item" href="#">Something else here</a></li>
-                <li><hr class="dropdown-divider"></li>
-                <li><a class="dropdown-item" href="#">Separated link</a></li>
-              </ul>
+              <div class="menu">
+                <h6 class="menu-header">Menu header</h6>
+                <a class="menu-item" href="#">Action</a>
+                <a class="menu-item" href="#">Another action</a>
+                <a class="menu-item" href="#">Something else here</a>
+                <hr class="menu-divider">
+                <a class="menu-item" href="#">Separated link</a>
+              </div>
             </div>
           </div>
           `} />
 
         <Example showMarkup={false} code={`
           <div class="btn-group">
-            <div class="dropdown">
-              <button class="btn-solid theme-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
+            <div>
+              <button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" data-bs-placement="bottom-end" aria-expanded="false">
                 End-aligned menu
               </button>
-              <ul class="dropdown-menu dropdown-menu-end">
-                <li><h6 class="dropdown-header">Dropdown header</h6></li>
-                <li><a class="dropdown-item" href="#">Action</a></li>
-                <li><a class="dropdown-item" href="#">Another action</a></li>
-                <li><hr class="dropdown-divider"></li>
-                <li><a class="dropdown-item" href="#">Separated link</a></li>
-              </ul>
+              <div class="menu">
+                <h6 class="menu-header">Menu header</h6>
+                <a class="menu-item" href="#">Action</a>
+                <a class="menu-item" href="#">Another action</a>
+                <hr class="menu-divider">
+                <a class="menu-item" href="#">Separated link</a>
+              </div>
             </div>
           </div>
           `} />
@@ -1193,16 +1193,16 @@ export const body_class = 'bg-body-tertiary'
                   <li class="nav-item">
                     <a class="nav-link" href="#">Link</a>
                   </li>
-                  <li class="nav-item dropdown">
-                    <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
-                      Dropdown
+                  <li class="nav-item">
+                    <a class="nav-link" href="#" role="button" data-bs-toggle="menu" aria-expanded="false">
+                      Menu
                     </a>
-                    <ul class="dropdown-menu">
-                      <li><a class="dropdown-item" href="#">Action</a></li>
-                      <li><a class="dropdown-item" href="#">Another action</a></li>
-                      <li><hr class="dropdown-divider"></li>
-                      <li><a class="dropdown-item" href="#">Something else here</a></li>
-                    </ul>
+                    <div class="menu">
+                      <a class="menu-item" href="#">Action</a>
+                      <a class="menu-item" href="#">Another action</a>
+                      <hr class="menu-divider">
+                      <a class="menu-item" href="#">Something else here</a>
+                    </div>
                   </li>
                   <li class="nav-item">
                     <a class="nav-link disabled" aria-disabled="true">Disabled</a>
@@ -1232,16 +1232,16 @@ export const body_class = 'bg-body-tertiary'
                   <li class="nav-item">
                     <a class="nav-link" href="#">Link</a>
                   </li>
-                  <li class="nav-item dropdown">
-                    <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
-                      Dropdown
+                  <li class="nav-item">
+                    <a class="nav-link" href="#" role="button" data-bs-toggle="menu" aria-expanded="false">
+                      Menu
                     </a>
-                    <ul class="dropdown-menu">
-                      <li><a class="dropdown-item" href="#">Action</a></li>
-                      <li><a class="dropdown-item" href="#">Another action</a></li>
-                      <li><hr class="dropdown-divider"></li>
-                      <li><a class="dropdown-item" href="#">Something else here</a></li>
-                    </ul>
+                    <div class="menu">
+                      <a class="menu-item" href="#">Action</a>
+                      <a class="menu-item" href="#">Another action</a>
+                      <hr class="menu-divider">
+                      <a class="menu-item" href="#">Something else here</a>
+                    </div>
                   </li>
                   <li class="nav-item">
                     <a class="nav-link disabled" aria-disabled="true">Disabled</a>
@@ -1396,14 +1396,14 @@ export const body_class = 'bg-body-tertiary'
             <li class="nav-item">
               <a class="nav-link" href="#scrollspyHeading2">Second</a>
             </li>
-            <li class="nav-item dropdown">
-              <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a>
-              <ul class="dropdown-menu">
-                <li><a class="dropdown-item" href="#scrollspyHeading3">Third</a></li>
-                <li><a class="dropdown-item" href="#scrollspyHeading4">Fourth</a></li>
-                <li><hr class="dropdown-divider"></li>
-                <li><a class="dropdown-item" href="#scrollspyHeading5">Fifth</a></li>
-              </ul>
+            <li class="nav-item">
+              <a class="nav-link" data-bs-toggle="menu" href="#" role="button" aria-expanded="false">Menu</a>
+              <div class="menu">
+                <a class="menu-item" href="#scrollspyHeading3">Third</a>
+                <a class="menu-item" href="#scrollspyHeading4">Fourth</a>
+                <hr class="menu-divider">
+                <a class="menu-item" href="#scrollspyHeading5">Fifth</a>
+              </div>
             </li>
           </ul>
         </nav>
index 331e02decfc01763148b1528fdafbaac0153c79a..6bbd4859da2b8ce8ef3e07904f6072310463fee0 100644 (file)
@@ -187,7 +187,7 @@ export const extra_js = [
             <button type="button" class="btn-outline theme-secondary btn-sm">Share</button>
             <button type="button" class="btn-outline theme-secondary btn-sm">Export</button>
           </div>
-          <button type="button" class="btn-outline theme-secondary btn-sm dropdown-toggle">
+          <button type="button" class="btn-outline theme-secondary btn-sm" data-bs-toggle="menu">
             <svg class="bi" aria-hidden="true"><use href="#calendar3"/></svg>
             This week
           </button>
index 7efa9cddfe4237529b218c3cf2c44779eddb83c1..511340b37728254a7c698c3e0433bccf9d4edf08 100644 (file)
@@ -10,6 +10,6 @@
   font-size: 85%;
 }
 
-.dropdown-toggle:not(:focus) {
+.menu-toggle:not(:focus) {
   outline: 0;
 }
index fc35fe9af0f4ccf331577a7e01ddd8e42bae3bc6..8dafbc56a205b1507fbafbba5d38adce9490f691 100644 (file)
@@ -135,17 +135,17 @@ export const extra_css = ['headers.css']
           <input type="search" class="form-control" placeholder="Search..." aria-label="Search">
         </form>
 
-        <div class="dropdown text-end">
-          <a href="#" class="d-block link-body-emphasis text-decoration-none dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
+        <div class="text-end">
+          <a href="#" class="d-block link-body-emphasis text-decoration-none" data-bs-toggle="menu" aria-expanded="false">
             <img src="https://github.com/mdo.png" alt="mdo" width="32" height="32" class="rounded-circle">
           </a>
-          <ul class="dropdown-menu text-small">
-            <li><a class="dropdown-item" href="#">New project...</a></li>
-            <li><a class="dropdown-item" href="#">Settings</a></li>
-            <li><a class="dropdown-item" href="#">Profile</a></li>
-            <li><hr class="dropdown-divider"></li>
-            <li><a class="dropdown-item" href="#">Sign out</a></li>
-          </ul>
+          <div class="menu text-small">
+            <a class="menu-item" href="#">New project...</a>
+            <a class="menu-item" href="#">Settings</a>
+            <a class="menu-item" href="#">Profile</a>
+            <hr class="menu-divider">
+            <a class="menu-item" href="#">Sign out</a>
+          </div>
         </div>
       </div>
     </div>
@@ -155,19 +155,19 @@ export const extra_css = ['headers.css']
 
   <header class="py-3 mb-3 border-bottom">
     <div class="container-fluid d-grid gap-3 align-items-center" style="grid-template-columns: 1fr 2fr;">
-      <div class="dropdown">
-        <a href="#" class="d-flex align-items-center col-lg-4 mb-2 mb-lg-0 link-body-emphasis text-decoration-none dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" aria-label="Bootstrap menu">
+      <div>
+        <a href="#" class="d-flex align-items-center col-lg-4 mb-2 mb-lg-0 link-body-emphasis text-decoration-none" data-bs-toggle="menu" aria-expanded="false" aria-label="Bootstrap menu">
           <svg class="bi me-2" width="40" height="32" aria-hidden="true"><use href="#bootstrap"/></svg>
         </a>
-        <ul class="dropdown-menu text-small shadow">
-          <li><a class="dropdown-item active" href="#" aria-current="page">Overview</a></li>
-          <li><a class="dropdown-item" href="#">Inventory</a></li>
-          <li><a class="dropdown-item" href="#">Customers</a></li>
-          <li><a class="dropdown-item" href="#">Products</a></li>
-          <li><hr class="dropdown-divider"></li>
-          <li><a class="dropdown-item" href="#">Reports</a></li>
-          <li><a class="dropdown-item" href="#">Analytics</a></li>
-        </ul>
+        <div class="menu text-small shadow">
+          <a class="menu-item active" href="#" aria-current="page">Overview</a>
+          <a class="menu-item" href="#">Inventory</a>
+          <a class="menu-item" href="#">Customers</a>
+          <a class="menu-item" href="#">Products</a>
+          <hr class="menu-divider">
+          <a class="menu-item" href="#">Reports</a>
+          <a class="menu-item" href="#">Analytics</a>
+        </div>
       </div>
 
       <div class="d-flex align-items-center">
@@ -175,17 +175,17 @@ export const extra_css = ['headers.css']
           <input type="search" class="form-control" placeholder="Search..." aria-label="Search">
         </form>
 
-        <div class="flex-shrink-0 dropdown">
-          <a href="#" class="d-block link-body-emphasis text-decoration-none dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
+        <div class="flex-shrink-0">
+          <a href="#" class="d-block link-body-emphasis text-decoration-none" data-bs-toggle="menu" aria-expanded="false">
             <img src="https://github.com/mdo.png" alt="mdo" width="32" height="32" class="rounded-circle">
           </a>
-          <ul class="dropdown-menu text-small shadow">
-            <li><a class="dropdown-item" href="#">New project...</a></li>
-            <li><a class="dropdown-item" href="#">Settings</a></li>
-            <li><a class="dropdown-item" href="#">Profile</a></li>
-            <li><hr class="dropdown-divider"></li>
-            <li><a class="dropdown-item" href="#">Sign out</a></li>
-          </ul>
+          <div class="menu text-small shadow">
+            <a class="menu-item" href="#">New project...</a>
+            <a class="menu-item" href="#">Settings</a>
+            <a class="menu-item" href="#">Profile</a>
+            <hr class="menu-divider">
+            <a class="menu-item" href="#">Sign out</a>
+          </div>
         </div>
       </div>
     </div>
similarity index 72%
rename from site/src/assets/examples/dropdowns/index.astro
rename to site/src/assets/examples/menus/index.astro
index a3e5ff42906465e8c110e51ef3631a07ad333f1e..bd5052aa340892525cd9cfb5e9a5483a00a682f2 100644 (file)
@@ -1,6 +1,6 @@
 ---
-export const title = 'Dropdowns'
-export const extra_css = ['dropdowns.css']
+export const title = 'Menus'
+export const extra_css = ['menus.css']
 ---
 
 <svg xmlns="http://www.w3.org/2000/svg" class="d-none">
@@ -47,161 +47,133 @@ export const extra_css = ['dropdowns.css']
 </svg>
 
 <div class="d-flex flex-column flex-md-row p-4 gap-4 py-md-5 align-items-center justify-content-center">
-  <ul class="dropdown-menu position-static d-grid gap-1 p-2 rounded-3 mx-0 shadow w-220px" data-bs-theme="light">
-    <li><a class="dropdown-item rounded-2 active" href="#">Action</a></li>
-    <li><a class="dropdown-item rounded-2" href="#">Another action</a></li>
-    <li><a class="dropdown-item rounded-2" href="#">Something else here</a></li>
-    <li><hr class="dropdown-divider"></li>
-    <li><a class="dropdown-item rounded-2" href="#">Separated link</a></li>
-  </ul>
-  <ul class="dropdown-menu position-static d-grid gap-1 p-2 rounded-3 mx-0 border-0 shadow w-220px" data-bs-theme="dark">
-    <li><a class="dropdown-item rounded-2 active" href="#">Action</a></li>
-    <li><a class="dropdown-item rounded-2" href="#">Another action</a></li>
-    <li><a class="dropdown-item rounded-2" href="#">Something else here</a></li>
-    <li><hr class="dropdown-divider"></li>
-    <li><a class="dropdown-item rounded-2" href="#">Separated link</a></li>
-  </ul>
+  <div class="menu position-static d-grid gap-1 p-2 rounded-3 mx-0 shadow w-220px" data-bs-theme="light">
+    <a class="menu-item rounded-2 active" href="#">Action</a>
+    <a class="menu-item rounded-2" href="#">Another action</a>
+    <a class="menu-item rounded-2" href="#">Something else here</a>
+    <hr class="menu-divider">
+    <a class="menu-item rounded-2" href="#">Separated link</a>
+  </div>
+  <div class="menu position-static d-grid gap-1 p-2 rounded-3 mx-0 border-0 shadow w-220px" data-bs-theme="dark">
+    <a class="menu-item rounded-2 active" href="#">Action</a>
+    <a class="menu-item rounded-2" href="#">Another action</a>
+    <a class="menu-item rounded-2" href="#">Something else here</a>
+    <hr class="menu-divider">
+    <a class="menu-item rounded-2" href="#">Separated link</a>
+  </div>
 </div>
 
 <div class="b-example-divider"></div>
 
 <div class="d-flex flex-column flex-md-row p-4 gap-4 py-md-5 align-items-center justify-content-center">
-  <div class="dropdown-menu d-block position-static pt-0 mx-0 rounded-3 shadow overflow-hidden w-280px" data-bs-theme="light">
+  <div class="menu d-block position-static pt-0 mx-0 rounded-3 shadow overflow-hidden w-280px" data-bs-theme="light">
     <form class="p-2 mb-2 bg-body-tertiary border-bottom">
       <input type="search" class="form-control" autocomplete="false" placeholder="Type to filter...">
     </form>
-    <ul class="list-unstyled mb-0">
-      <li><a class="dropdown-item d-flex align-items-center gap-2 py-2" href="#">
-        <span class="d-inline-block bg-success rounded-circle p-1"></span>
-        Action
-      </a></li>
-      <li><a class="dropdown-item d-flex align-items-center gap-2 py-2" href="#">
-        <span class="d-inline-block bg-primary rounded-circle p-1"></span>
-        Another action
-      </a></li>
-      <li><a class="dropdown-item d-flex align-items-center gap-2 py-2" href="#">
-        <span class="d-inline-block bg-danger rounded-circle p-1"></span>
-        Something else here
-      </a></li>
-      <li><a class="dropdown-item d-flex align-items-center gap-2 py-2" href="#">
-        <span class="d-inline-block bg-info rounded-circle p-1"></span>
-        Separated link
-      </a></li>
-    </ul>
+    <a class="menu-item d-flex align-items-center gap-2 py-2" href="#">
+      <span class="d-inline-block bg-success rounded-circle p-1"></span>
+      Action
+    </a>
+    <a class="menu-item d-flex align-items-center gap-2 py-2" href="#">
+      <span class="d-inline-block bg-primary rounded-circle p-1"></span>
+      Another action
+    </a>
+    <a class="menu-item d-flex align-items-center gap-2 py-2" href="#">
+      <span class="d-inline-block bg-danger rounded-circle p-1"></span>
+      Something else here
+    </a>
+    <a class="menu-item d-flex align-items-center gap-2 py-2" href="#">
+      <span class="d-inline-block bg-info rounded-circle p-1"></span>
+      Separated link
+    </a>
   </div>
 
-  <div class="dropdown-menu d-block position-static border-0 pt-0 mx-0 rounded-3 shadow overflow-hidden w-280px" data-bs-theme="dark">
+  <div class="menu d-block position-static border-0 pt-0 mx-0 rounded-3 shadow overflow-hidden w-280px" data-bs-theme="dark">
     <form class="p-2 mb-2 bg-dark border-bottom border-dark">
       <input type="search" class="form-control bg-dark" autocomplete="false" placeholder="Type to filter...">
     </form>
-    <ul class="list-unstyled mb-0">
-      <li><a class="dropdown-item d-flex align-items-center gap-2 py-2" href="#">
-        <span class="d-inline-block bg-success rounded-circle p-1"></span>
-        Action
-      </a></li>
-      <li><a class="dropdown-item d-flex align-items-center gap-2 py-2" href="#">
-        <span class="d-inline-block bg-primary rounded-circle p-1"></span>
-        Another action
-      </a></li>
-      <li><a class="dropdown-item d-flex align-items-center gap-2 py-2" href="#">
-        <span class="d-inline-block bg-danger rounded-circle p-1"></span>
-        Something else here
-      </a></li>
-      <li><a class="dropdown-item d-flex align-items-center gap-2 py-2" href="#">
-        <span class="d-inline-block bg-info rounded-circle p-1"></span>
-        Separated link
-      </a></li>
-    </ul>
+    <a class="menu-item d-flex align-items-center gap-2 py-2" href="#">
+      <span class="d-inline-block bg-success rounded-circle p-1"></span>
+      Action
+    </a>
+    <a class="menu-item d-flex align-items-center gap-2 py-2" href="#">
+      <span class="d-inline-block bg-primary rounded-circle p-1"></span>
+      Another action
+    </a>
+    <a class="menu-item d-flex align-items-center gap-2 py-2" href="#">
+      <span class="d-inline-block bg-danger rounded-circle p-1"></span>
+      Something else here
+    </a>
+    <a class="menu-item d-flex align-items-center gap-2 py-2" href="#">
+      <span class="d-inline-block bg-info rounded-circle p-1"></span>
+      Separated link
+    </a>
   </div>
 </div>
 
 <div class="b-example-divider"></div>
 
 <div class="d-flex flex-column flex-md-row p-4 gap-4 py-md-5 align-items-center justify-content-center">
-  <ul class="dropdown-menu d-block position-static mx-0 shadow w-220px" data-bs-theme="light">
-    <li>
-      <a class="dropdown-item d-flex gap-2 align-items-center" href="#">
-        <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#files"/></svg>
-        Documents
-      </a>
-    </li>
-    <li>
-      <a class="dropdown-item d-flex gap-2 align-items-center" href="#">
-        <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#image-fill"/></svg>
-        Photos
-      </a>
-    </li>
-    <li>
-      <a class="dropdown-item d-flex gap-2 align-items-center" href="#">
-        <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#film"/></svg>
-        Movies
-      </a>
-    </li>
-    <li>
-      <a class="dropdown-item d-flex gap-2 align-items-center" href="#">
-        <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#music-note-beamed"/></svg>
-        Music
-      </a>
-    </li>
-    <li>
-      <a class="dropdown-item d-flex gap-2 align-items-center" href="#">
-        <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#joystick"/></svg>
-        Games
-      </a>
-    </li>
-    <li><hr class="dropdown-divider"></li>
-    <li>
-      <a class="dropdown-item dropdown-item-danger d-flex gap-2 align-items-center" href="#">
-        <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#trash"/></svg>
-        Trash
-      </a>
-    </li>
-  </ul>
-  <ul class="dropdown-menu d-block position-static mx-0 border-0 shadow w-220px" data-bs-theme="dark">
-    <li>
-      <a class="dropdown-item d-flex gap-2 align-items-center" href="#">
-        <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#files"/></svg>
-        Documents
-      </a>
-    </li>
-    <li>
-      <a class="dropdown-item d-flex gap-2 align-items-center" href="#">
-        <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#image-fill"/></svg>
-        Photos
-      </a>
-    </li>
-    <li>
-      <a class="dropdown-item d-flex gap-2 align-items-center" href="#">
-        <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#film"/></svg>
-        Movies
-      </a>
-    </li>
-    <li>
-      <a class="dropdown-item d-flex gap-2 align-items-center" href="#">
-        <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#music-note-beamed"/></svg>
-        Music
-      </a>
-    </li>
-    <li>
-      <a class="dropdown-item d-flex gap-2 align-items-center" href="#">
-        <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#joystick"/></svg>
-        Games
-      </a>
-    </li>
-    <li><hr class="dropdown-divider"></li>
-    <li>
-      <a class="dropdown-item d-flex gap-2 align-items-center" href="#">
-        <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#trash"/></svg>
-        Trash
-      </a>
-    </li>
-  </ul>
+  <div class="menu d-block position-static mx-0 shadow w-220px" data-bs-theme="light">
+    <a class="menu-item d-flex gap-2 align-items-center" href="#">
+      <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#files"/></svg>
+      Documents
+    </a>
+    <a class="menu-item d-flex gap-2 align-items-center" href="#">
+      <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#image-fill"/></svg>
+      Photos
+    </a>
+    <a class="menu-item d-flex gap-2 align-items-center" href="#">
+      <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#film"/></svg>
+      Movies
+    </a>
+    <a class="menu-item d-flex gap-2 align-items-center" href="#">
+      <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#music-note-beamed"/></svg>
+      Music
+    </a>
+    <a class="menu-item d-flex gap-2 align-items-center" href="#">
+      <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#joystick"/></svg>
+      Games
+    </a>
+    <hr class="menu-divider">
+    <a class="menu-item menu-item-danger d-flex gap-2 align-items-center" href="#">
+      <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#trash"/></svg>
+      Trash
+    </a>
+  </div>
+  <div class="menu d-block position-static mx-0 border-0 shadow w-220px" data-bs-theme="dark">
+    <a class="menu-item d-flex gap-2 align-items-center" href="#">
+      <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#files"/></svg>
+      Documents
+    </a>
+    <a class="menu-item d-flex gap-2 align-items-center" href="#">
+      <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#image-fill"/></svg>
+      Photos
+    </a>
+    <a class="menu-item d-flex gap-2 align-items-center" href="#">
+      <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#film"/></svg>
+      Movies
+    </a>
+    <a class="menu-item d-flex gap-2 align-items-center" href="#">
+      <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#music-note-beamed"/></svg>
+      Music
+    </a>
+    <a class="menu-item d-flex gap-2 align-items-center" href="#">
+      <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#joystick"/></svg>
+      Games
+    </a>
+    <hr class="menu-divider">
+    <a class="menu-item d-flex gap-2 align-items-center" href="#">
+      <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#trash"/></svg>
+      Trash
+    </a>
+  </div>
 </div>
 
 <div class="b-example-divider"></div>
 
 <div class="d-flex flex-column flex-md-row p-4 gap-4 py-md-5 align-items-center justify-content-center">
-  <div class="dropdown-menu d-block position-static p-2 mx-0 shadow rounded-3 w-340px" data-bs-theme="light">
+  <div class="menu d-block position-static p-2 mx-0 shadow rounded-3 w-340px" data-bs-theme="light">
     <div class="d-grid gap-1">
       <div class="cal">
         <div class="cal-month">
@@ -280,7 +252,7 @@ export const extra_css = ['dropdowns.css']
     </div>
   </div>
 
-  <div class="dropdown-menu d-block position-static p-2 mx-0 shadow rounded-3 w-340px" data-bs-theme="dark">
+  <div class="menu d-block position-static p-2 mx-0 shadow rounded-3 w-340px" data-bs-theme="dark">
     <div class="d-grid gap-1">
       <div class="cal">
         <div class="cal-month">
@@ -363,7 +335,7 @@ export const extra_css = ['dropdowns.css']
 <div class="b-example-divider"></div>
 
 <div class="d-flex flex-column flex-md-row p-4 gap-4 py-md-5 align-items-center justify-content-center">
-  <div class="dropdown-menu position-static d-flex flex-column flex-lg-row align-items-stretch justify-content-start p-3 rounded-3 shadow-lg" data-bs-theme="light">
+  <div class="menu position-static d-flex flex-column flex-lg-row align-items-stretch justify-content-start p-3 rounded-3 shadow-lg" data-bs-theme="light">
     <nav class="col-lg-8">
       <ul class="list-unstyled d-flex flex-column gap-2">
         <li>
@@ -410,7 +382,7 @@ export const extra_css = ['dropdowns.css']
     </div>
   </div>
 
-  <div class="dropdown-menu position-static d-flex flex-column flex-lg-row align-items-stretch justify-content-start p-3 rounded-3 shadow-lg" data-bs-theme="dark">
+  <div class="menu position-static d-flex flex-column flex-lg-row align-items-stretch justify-content-start p-3 rounded-3 shadow-lg" data-bs-theme="dark">
     <nav class="col-lg-8">
       <ul class="list-unstyled d-flex flex-column gap-2">
         <li>
similarity index 90%
rename from site/src/assets/examples/dropdowns/dropdowns.css
rename to site/src/assets/examples/menus/menus.css
index be886998436326329738013aaf113eff39bff6a0..ac120b34433ff4f6006a497e4902ee09892bfb28 100644 (file)
@@ -1,12 +1,12 @@
-.dropdown-item-danger {
+.menu-item-danger {
   color: var(--bs-bs-bs-bs-bs-red);
 }
-.dropdown-item-danger:hover,
-.dropdown-item-danger:focus {
+.menu-item-danger:hover,
+.menu-item-danger:focus {
   color: #fff;
   background-color: var(--bs-bs-bs-bs-bs-red);
 }
-.dropdown-item-danger.active {
+.menu-item-danger.active {
   background-color: var(--bs-bs-bs-bs-bs-red);
 }
 
index a0d41dab7cbee2d7e0f50500c4ab247a05fd04c2..836a93428508db368d68ccddf519e138a635490d 100644 (file)
@@ -29,12 +29,12 @@ export const title = 'Bottom navbar example'
           <a class="nav-link disabled" aria-disabled="true">Disabled</a>
         </li>
         <li class="nav-item dropup">
-          <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropup</a>
-          <ul class="dropdown-menu">
-            <li><a class="dropdown-item" href="#">Action</a></li>
-            <li><a class="dropdown-item" href="#">Another action</a></li>
-            <li><a class="dropdown-item" href="#">Something else here</a></li>
-          </ul>
+          <a class="nav-link" href="#" data-bs-toggle="menu" aria-expanded="false">Dropup</a>
+          <div class="menu">
+            <a class="menu-item" href="#">Action</a>
+            <a class="menu-item" href="#">Another action</a>
+            <a class="menu-item" href="#">Something else here</a>
+          </div>
         </li>
       </ul>
     </div>
index 940de8a5ad33247756cd36cd875f6f554fc87ff6..91dee151f105fe9303ea7f34f1edbaa8aaa11ea4 100644 (file)
@@ -25,18 +25,16 @@ export const extra_css = ['navbars-offcanvas.css']
             <li class="nav-item">
               <a class="nav-link" href="#">Link</a>
             </li>
-            <li class="nav-item dropdown">
-              <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
-                Dropdown
+            <li class="nav-item">
+              <a class="nav-link" href="#" role="button" data-bs-toggle="menu" aria-expanded="false">
+                Menu
               </a>
-              <ul class="dropdown-menu">
-                <li><a class="dropdown-item" href="#">Action</a></li>
-                <li><a class="dropdown-item" href="#">Another action</a></li>
-                <li>
-                  <hr class="dropdown-divider">
-                </li>
-                <li><a class="dropdown-item" href="#">Something else here</a></li>
-              </ul>
+              <div class="menu">
+                <a class="menu-item" href="#">Action</a>
+                <a class="menu-item" href="#">Another action</a>
+                <hr class="menu-divider">
+                <a class="menu-item" href="#">Something else here</a>
+              </div>
             </li>
           </ul>
           <form class="d-flex mt-3" role="search">
@@ -67,18 +65,16 @@ export const extra_css = ['navbars-offcanvas.css']
             <li class="nav-item">
               <a class="nav-link" href="#">Link</a>
             </li>
-            <li class="nav-item dropdown">
-              <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
-                Dropdown
+            <li class="nav-item">
+              <a class="nav-link" href="#" role="button" data-bs-toggle="menu" aria-expanded="false">
+                Menu
               </a>
-              <ul class="dropdown-menu">
-                <li><a class="dropdown-item" href="#">Action</a></li>
-                <li><a class="dropdown-item" href="#">Another action</a></li>
-                <li>
-                  <hr class="dropdown-divider">
-                </li>
-                <li><a class="dropdown-item" href="#">Something else here</a></li>
-              </ul>
+              <div class="menu">
+                <a class="menu-item" href="#">Action</a>
+                <a class="menu-item" href="#">Another action</a>
+                <hr class="menu-divider">
+                <a class="menu-item" href="#">Something else here</a>
+              </div>
             </li>
           </ul>
           <form class="d-flex mt-3" role="search">
@@ -109,18 +105,16 @@ export const extra_css = ['navbars-offcanvas.css']
             <li class="nav-item">
               <a class="nav-link" href="#">Link</a>
             </li>
-            <li class="nav-item dropdown">
-              <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
-                Dropdown
+            <li class="nav-item">
+              <a class="nav-link" href="#" role="button" data-bs-toggle="menu" aria-expanded="false">
+                Menu
               </a>
-              <ul class="dropdown-menu">
-                <li><a class="dropdown-item" href="#">Action</a></li>
-                <li><a class="dropdown-item" href="#">Another action</a></li>
-                <li>
-                  <hr class="dropdown-divider">
-                </li>
-                <li><a class="dropdown-item" href="#">Something else here</a></li>
-              </ul>
+              <div class="menu">
+                <a class="menu-item" href="#">Action</a>
+                <a class="menu-item" href="#">Another action</a>
+                <hr class="menu-divider">
+                <a class="menu-item" href="#">Something else here</a>
+              </div>
             </li>
           </ul>
           <form class="d-flex mt-3 mt-lg-0" role="search">
index 06d8a0f95a7a52b72f177c53a066b422d40208e9..baf7e2019e6f577b677ab9914e152d997472e9c5 100644 (file)
@@ -24,13 +24,13 @@ export const extra_css = ['navbars.css']
           <li class="nav-item">
             <a class="nav-link disabled" aria-disabled="true">Disabled</a>
           </li>
-          <li class="nav-item dropdown">
-            <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-            </ul>
+          <li class="nav-item">
+            <a class="nav-link" href="#" data-bs-toggle="menu" aria-expanded="false">Menu</a>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+            </div>
           </li>
         </ul>
         <form role="search">
@@ -81,13 +81,13 @@ export const extra_css = ['navbars.css']
           <li class="nav-item">
             <a class="nav-link disabled" aria-disabled="true">Disabled</a>
           </li>
-          <li class="nav-item dropdown">
-            <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-            </ul>
+          <li class="nav-item">
+            <a class="nav-link" href="#" data-bs-toggle="menu" aria-expanded="false">Menu</a>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+            </div>
           </li>
         </ul>
         <form role="search">
@@ -115,13 +115,13 @@ export const extra_css = ['navbars.css']
           <li class="nav-item">
             <a class="nav-link disabled" aria-disabled="true">Disabled</a>
           </li>
-          <li class="nav-item dropdown">
-            <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-            </ul>
+          <li class="nav-item">
+            <a class="nav-link" href="#" data-bs-toggle="menu" aria-expanded="false">Menu</a>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+            </div>
           </li>
         </ul>
         <form role="search">
@@ -149,13 +149,13 @@ export const extra_css = ['navbars.css']
           <li class="nav-item">
             <a class="nav-link disabled" aria-disabled="true">Disabled</a>
           </li>
-          <li class="nav-item dropdown">
-            <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-            </ul>
+          <li class="nav-item">
+            <a class="nav-link" href="#" data-bs-toggle="menu" aria-expanded="false">Menu</a>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+            </div>
           </li>
         </ul>
         <form role="search">
@@ -183,13 +183,13 @@ export const extra_css = ['navbars.css']
           <li class="nav-item">
             <a class="nav-link disabled" aria-disabled="true">Disabled</a>
           </li>
-          <li class="nav-item dropdown">
-            <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-            </ul>
+          <li class="nav-item">
+            <a class="nav-link" href="#" data-bs-toggle="menu" aria-expanded="false">Menu</a>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+            </div>
           </li>
         </ul>
         <form role="search">
@@ -217,13 +217,13 @@ export const extra_css = ['navbars.css']
           <li class="nav-item">
             <a class="nav-link disabled" aria-disabled="true">Disabled</a>
           </li>
-          <li class="nav-item dropdown">
-            <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-            </ul>
+          <li class="nav-item">
+            <a class="nav-link" href="#" data-bs-toggle="menu" aria-expanded="false">Menu</a>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+            </div>
           </li>
         </ul>
         <form role="search">
@@ -251,13 +251,13 @@ export const extra_css = ['navbars.css']
           <li class="nav-item">
             <a class="nav-link disabled" aria-disabled="true">Disabled</a>
           </li>
-          <li class="nav-item dropdown">
-            <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-            </ul>
+          <li class="nav-item">
+            <a class="nav-link" href="#" data-bs-toggle="menu" aria-expanded="false">Menu</a>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+            </div>
           </li>
         </ul>
         <form role="search">
@@ -285,13 +285,13 @@ export const extra_css = ['navbars.css']
           <li class="nav-item">
             <a class="nav-link disabled" aria-disabled="true">Disabled</a>
           </li>
-          <li class="nav-item dropdown">
-            <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-            </ul>
+          <li class="nav-item">
+            <a class="nav-link" href="#" data-bs-toggle="menu" aria-expanded="false">Menu</a>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+            </div>
           </li>
         </ul>
         <form role="search">
@@ -322,13 +322,13 @@ export const extra_css = ['navbars.css']
           <li class="nav-item">
             <a class="nav-link disabled" aria-disabled="true">Disabled</a>
           </li>
-          <li class="nav-item dropdown">
-            <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-            </ul>
+          <li class="nav-item">
+            <a class="nav-link" href="#" data-bs-toggle="menu" aria-expanded="false">Menu</a>
+            <div class="menu">
+              <a class="menu-item" href="#">Action</a>
+              <a class="menu-item" href="#">Another action</a>
+              <a class="menu-item" href="#">Something else here</a>
+            </div>
           </li>
         </ul>
       </div>
@@ -354,13 +354,13 @@ export const extra_css = ['navbars.css']
             <li class="nav-item">
               <a class="nav-link disabled" aria-disabled="true">Disabled</a>
             </li>
-            <li class="nav-item dropdown">
-              <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a>
-              <ul class="dropdown-menu">
-                <li><a class="dropdown-item" href="#">Action</a></li>
-                <li><a class="dropdown-item" href="#">Another action</a></li>
-                <li><a class="dropdown-item" href="#">Something else here</a></li>
-              </ul>
+            <li class="nav-item">
+              <a class="nav-link" href="#" data-bs-toggle="menu" aria-expanded="false">Menu</a>
+              <div class="menu">
+                <a class="menu-item" href="#">Action</a>
+                <a class="menu-item" href="#">Another action</a>
+                <a class="menu-item" href="#">Something else here</a>
+              </div>
             </li>
           </ul>
           <form role="search">
@@ -387,13 +387,13 @@ export const extra_css = ['navbars.css']
             <li class="nav-item">
               <a class="nav-link disabled" aria-disabled="true">Disabled</a>
             </li>
-            <li class="nav-item dropdown">
-              <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a>
-              <ul class="dropdown-menu">
-                <li><a class="dropdown-item" href="#">Action</a></li>
-                <li><a class="dropdown-item" href="#">Another action</a></li>
-                <li><a class="dropdown-item" href="#">Something else here</a></li>
-              </ul>
+            <li class="nav-item">
+              <a class="nav-link" href="#" data-bs-toggle="menu" aria-expanded="false">Menu</a>
+              <div class="menu">
+                <a class="menu-item" href="#">Action</a>
+                <a class="menu-item" href="#">Another action</a>
+                <a class="menu-item" href="#">Something else here</a>
+              </div>
             </li>
           </ul>
         </div>
@@ -418,13 +418,13 @@ export const extra_css = ['navbars.css']
             <li class="nav-item">
               <a class="nav-link disabled" aria-disabled="true">Disabled</a>
             </li>
-            <li class="nav-item dropdown">
-              <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a>
-              <ul class="dropdown-menu">
-                <li><a class="dropdown-item" href="#">Action</a></li>
-                <li><a class="dropdown-item" href="#">Another action</a></li>
-                <li><a class="dropdown-item" href="#">Something else here</a></li>
-              </ul>
+            <li class="nav-item">
+              <a class="nav-link" href="#" data-bs-toggle="menu" aria-expanded="false">Menu</a>
+              <div class="menu">
+                <a class="menu-item" href="#">Action</a>
+                <a class="menu-item" href="#">Another action</a>
+                <a class="menu-item" href="#">Something else here</a>
+              </div>
             </li>
           </ul>
           <div class="d-lg-flex col-lg-3 justify-content-lg-end">
index da48ce4512c84f78f41acc80ce78e726084f16fd..9d198d46dc7cc2ca121a4f84727d2f28cdd0a194 100644 (file)
@@ -30,13 +30,13 @@ import Placeholder from "@shortcodes/Placeholder.astro"
         <li class="nav-item">
           <a class="nav-link" href="#">Switch account</a>
         </li>
-        <li class="nav-item dropdown">
-          <a class="nav-link dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-expanded="false">Settings</a>
-          <ul class="dropdown-menu">
-            <li><a class="dropdown-item" href="#">Action</a></li>
-            <li><a class="dropdown-item" href="#">Another action</a></li>
-            <li><a class="dropdown-item" href="#">Something else here</a></li>
-          </ul>
+        <li class="nav-item">
+          <a class="nav-link" href="#" data-bs-toggle="menu" aria-expanded="false">Settings</a>
+          <div class="menu">
+            <a class="menu-item" href="#">Action</a>
+            <a class="menu-item" href="#">Another action</a>
+            <a class="menu-item" href="#">Something else here</a>
+          </div>
         </li>
       </ul>
       <form class="d-flex" role="search">
index 1e493634aa11cc6f4063fdda674a5fe37eb94b2c..a8b632f7eeaeaf28d945cde6402732e3ca3d290e 100644 (file)
@@ -70,18 +70,18 @@ export const extra_js = [{src: 'sidebars.js'}]
       </li>
     </ul>
     <hr>
-    <div class="dropdown">
-      <a href="#" class="d-flex align-items-center text-white text-decoration-none dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
+    <div>
+      <a href="#" class="d-flex align-items-center text-white text-decoration-none" data-bs-toggle="menu" aria-expanded="false">
         <img src="https://github.com/mdo.png" alt="" width="32" height="32" class="rounded-circle me-2">
         <strong>mdo</strong>
       </a>
-      <ul class="dropdown-menu dropdown-menu-dark text-small shadow">
-        <li><a class="dropdown-item" href="#">New project...</a></li>
-        <li><a class="dropdown-item" href="#">Settings</a></li>
-        <li><a class="dropdown-item" href="#">Profile</a></li>
-        <li><hr class="dropdown-divider"></li>
-        <li><a class="dropdown-item" href="#">Sign out</a></li>
-      </ul>
+      <div class="menu text-small shadow">
+        <a class="menu-item" href="#">New project...</a>
+        <a class="menu-item" href="#">Settings</a>
+        <a class="menu-item" href="#">Profile</a>
+        <hr class="menu-divider">
+        <a class="menu-item" href="#">Sign out</a>
+      </div>
     </div>
   </div>
 
@@ -126,18 +126,18 @@ export const extra_js = [{src: 'sidebars.js'}]
       </li>
     </ul>
     <hr>
-    <div class="dropdown">
-      <a href="#" class="d-flex align-items-center link-body-emphasis text-decoration-none dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
+    <div>
+      <a href="#" class="d-flex align-items-center link-body-emphasis text-decoration-none" data-bs-toggle="menu" aria-expanded="false">
         <img src="https://github.com/mdo.png" alt="" width="32" height="32" class="rounded-circle me-2">
         <strong>mdo</strong>
       </a>
-      <ul class="dropdown-menu text-small shadow">
-        <li><a class="dropdown-item" href="#">New project...</a></li>
-        <li><a class="dropdown-item" href="#">Settings</a></li>
-        <li><a class="dropdown-item" href="#">Profile</a></li>
-        <li><hr class="dropdown-divider"></li>
-        <li><a class="dropdown-item" href="#">Sign out</a></li>
-      </ul>
+      <div class="menu text-small shadow">
+        <a class="menu-item" href="#">New project...</a>
+        <a class="menu-item" href="#">Settings</a>
+        <a class="menu-item" href="#">Profile</a>
+        <hr class="menu-divider">
+        <a class="menu-item" href="#">Sign out</a>
+      </div>
     </div>
   </div>
 
@@ -175,17 +175,17 @@ export const extra_js = [{src: 'sidebars.js'}]
         </a>
       </li>
     </ul>
-    <div class="dropdown border-top">
-      <a href="#" class="d-flex align-items-center justify-content-center p-3 link-body-emphasis text-decoration-none dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
+    <div class="border-top">
+      <a href="#" class="d-flex align-items-center justify-content-center p-3 link-body-emphasis text-decoration-none" data-bs-toggle="menu" aria-expanded="false">
         <img src="https://github.com/mdo.png" alt="mdo" width="24" height="24" class="rounded-circle">
       </a>
-      <ul class="dropdown-menu text-small shadow">
-        <li><a class="dropdown-item" href="#">New project...</a></li>
-        <li><a class="dropdown-item" href="#">Settings</a></li>
-        <li><a class="dropdown-item" href="#">Profile</a></li>
-        <li><hr class="dropdown-divider"></li>
-        <li><a class="dropdown-item" href="#">Sign out</a></li>
-      </ul>
+      <div class="menu text-small shadow">
+        <a class="menu-item" href="#">New project...</a>
+        <a class="menu-item" href="#">Settings</a>
+        <a class="menu-item" href="#">Profile</a>
+        <hr class="menu-divider">
+        <a class="menu-item" href="#">Sign out</a>
+      </div>
     </div>
   </div>
 
index 8875425b42674b341a3f1e0891cd676887855933..566fb0fb3e1cb878b9ac067501ed27434e6423d9 100644 (file)
@@ -15,7 +15,7 @@ main {
   overflow-y: hidden;
 }
 
-.dropdown-toggle { outline: 0; }
+.menu-toggle { outline: 0; }
 
 .btn-toggle {
   padding: .25rem .5rem;
index 05043060fe85f7cc9238cc50c0d087dee0459aa1..7091595cf0fd47925ed30317c73bd499b0323105 100644 (file)
@@ -22,7 +22,7 @@ interface Props {
 const { addedIn, layout, title } = Astro.props
 ---
 
-<header class="navbar navbar-expand-lg bg-body bd-navbar border-bottom sticky-top bd-sticky-navbar">
+<header class="navbar navbar-translucent navbar-expand-lg bd-navbar border-bottom sticky-top bd-sticky-navbar">
   <nav class="container-2xl bd-gutter flex-wrap flex-lg-nowrap" aria-label="Main navigation">
     {/* Docs sidebar toggle - only shown on docs pages */}
     {
@@ -64,7 +64,7 @@ const { addedIn, layout, title } = Astro.props
 
     {/* Main navigation - offcanvas on mobile, inline on desktop */}
     <div
-      class="offcanvas-lg offcanvas-end flex-grow-1"
+      class="offcanvas-lg offcanvas-end flex-grow-1 offcanvas-fit-content"
       tabindex="-1"
       id="bdNavbar"
       aria-labelledby="bdNavbarOffcanvasLabel"
@@ -75,7 +75,7 @@ const { addedIn, layout, title } = Astro.props
       </div>
 
       <div class="offcanvas-body p-4 pt-0 p-lg-0">
-        <hr class="d-lg-none text-white-50" />
+        <hr class="d-lg-none mb-0" />
         <ul class="nav navbar-nav flex-row flex-wrap bd-navbar-nav">
           <LinkItem active={layout === 'docs'} href={getVersionedDocsPath('getting-started/install/')} track>
             Docs
@@ -85,12 +85,12 @@ const { addedIn, layout, title } = Astro.props
           <LinkItem href={getConfig().blog} target="_blank" rel="noopener" track>Blog</LinkItem>
         </ul>
 
-        <hr class="d-lg-none text-white-50" />
+        <hr class="d-lg-none my-0" />
 
-        <ul class="nav navbar-nav flex-row flex-wrap ms-md-auto">
+        <ul class="nav navbar-nav ms-md-auto">
           <LinkItem class="nav-link py-2 px-0 px-lg-2" href={getConfig().github_org} target="_blank" rel="noopener">
             <GitHubIcon class="navbar-nav-svg" height={16} width={16} />
-            <small class="d-lg-none ms-2">GitHub</small>
+            <small class="d-lg-none">GitHub</small>
           </LinkItem>
           <LinkItem
             class="nav-link py-2 px-0 px-lg-2"
@@ -99,26 +99,16 @@ const { addedIn, layout, title } = Astro.props
             rel="noopener"
           >
             <XIcon class="navbar-nav-svg" height={16} width={16} />
-            <small class="d-lg-none ms-2">X</small>
+            <small class="d-lg-none">X</small>
           </LinkItem>
           <LinkItem class="nav-link py-2 px-0 px-lg-2" href={getConfig().opencollective} target="_blank" rel="noopener">
             <OpenCollectiveIcon class="navbar-nav-svg" height={16} width={16} />
-            <small class="d-lg-none ms-2">Open Collective</small>
+            <small class="d-lg-none">Open Collective</small>
           </LinkItem>
 
-          <li class="nav-item py-2 py-lg-1 col-12 col-lg-auto">
-            <div class="vr d-none d-lg-flex mx-lg-2 my-auto"></div>
-            <hr class="d-lg-none my-2" />
-          </li>
-
           <Versions layout={layout} addedIn={addedIn} />
 
-          <li class="nav-item py-2 py-lg-1 col-12 col-lg-auto">
-            <div class="vr d-none d-lg-flex mx-lg-2 my-auto"></div>
-            <hr class="d-lg-none my-2" />
-          </li>
-
-          <li class="nav-item dropdown">
+          <li class="nav-item">
             <ThemeToggler layout={layout} />
           </li>
         </ul>
index 46636bbd5cd6d13902cc6400748f69bffdc4b79e..4e3ef45f5d391a3fad66515a219df1edd0c797c8 100644 (file)
@@ -23,39 +23,39 @@ if (layout === 'docs' && version === getConfig().docs_version) {
 }
 ---
 
-<li class="nav-item dropdown">
+<li class="nav-item">
   <button
     type="button"
-    class="btn btn-link nav-link py-2 px-0 px-lg-2 dropdown-toggle"
-    data-bs-toggle="dropdown"
-    data-bs-target="#bd-versions-menu"
+    class="btn btn-link nav-link py-2 px-0 px-lg-2"
+    data-bs-toggle="menu"
     data-bs-placement="bottom-end"
     aria-expanded="false"
   >
-    <span class="d-lg-none" aria-hidden="true">Bootstrap</span><span class="visually-hidden">Bootstrap&nbsp;</span> v{
-      getConfig().docs_version
-    }
-    <span class="visually-hidden">(switch to other versions)</span>
+    <svg class="bi" aria-hidden="true"><use href="#stack"></use></svg>
+    <span class="d-lg-none" aria-hidden="true">
+      Bootstrap v{
+        getConfig().docs_version
+      }
+    </span>
+    <svg class="bi bi-sm ms-lg--1" aria-hidden="true"><use href="#chevron-expand"></use></svg>
   </button>
-  <ul class="dropdown-menu dropdown-menu-end" id="bd-versions-menu">
-    <li><h6 class="dropdown-header">v6 releases</h6></li>
-    <li>
-      <a
-        class="dropdown-item d-flex align-items-center justify-content-between active"
-        aria-current="true"
-        href={isHome ? '/' : `/docs/${getConfig().docs_version}/${versionsLink}`}
-      >
-        {getConfig().docs_version}.x <span class="fg-contrast-accent fg-50">(Alpha)</span>
-        <svg class="bi" aria-hidden="true"><use href="#check2"></use></svg>
-      </a>
-    </li>
-    <li><hr class="dropdown-divider" /></li>
-    <li><h6 class="dropdown-header">Previous releases</h6></li>
-    <li><a class="dropdown-item" href="https://getbootstrap.com/docs/5.3/">v5.3.x <span class="fg-secondary">(Latest)</span></a></li>
-    <li><a class="dropdown-item" href="https://getbootstrap.com/docs/4.6/">v4.6.x</a></li>
-    <li><a class="dropdown-item" href="https://getbootstrap.com/docs/3.4/">v3.4.1</a></li>
-    <li><a class="dropdown-item" href="https://getbootstrap.com/2.3.2/">v2.3.2</a></li>
-    <li><hr class="dropdown-divider" /></li>
-    <li><a class="dropdown-item" href="/docs/versions/">All versions</a></li>
-  </ul>
+  <div class="menu" id="bd-versions-menu">
+    <h6 class="menu-header">v6 releases</h6>
+    <a
+      class="menu-item active"
+      aria-current="true"
+      href={isHome ? '/' : `/docs/${getConfig().docs_version}/${versionsLink}`}
+    >
+      {getConfig().docs_version}.x <span class="fg-contrast-accent fg-50">(Alpha)</span>
+      <svg class="bi ms-auto" aria-hidden="true"><use href="#check2"></use></svg>
+    </a>
+    <hr class="menu-divider" />
+    <h6 class="menu-header">Previous releases</h6>
+    <a class="menu-item" href="https://getbootstrap.com/docs/5.3/">v5.3.x <span class="fg-3">(Latest)</span></a>
+    <a class="menu-item" href="https://getbootstrap.com/docs/4.6/">v4.6.x</a>
+    <a class="menu-item" href="https://getbootstrap.com/docs/3.4/">v3.4.1</a>
+    <a class="menu-item" href="https://getbootstrap.com/2.3.2/">v2.3.2</a>
+    <hr class="menu-divider" />
+    <a class="menu-item" href="/docs/versions/">All versions…</a>
+  </div>
 </li>
index 4734920d3406151ebf394da600c279f7ab7c351c..dde844337493c59c19e008448b3b814d74fceb15 100644 (file)
@@ -10,7 +10,7 @@ import ResponsiveImage from '@layouts/partials/ResponsiveImage.astro'
   <div class="container-2xl bd-gutter">
     <div class="col-md-8 mx-auto text-center">
       <a
-        class="d-flex flex-column flex-lg-row justify-content-center align-items-center mb-4 lh-sm text-decoration-none"
+        class="d-flex flex-column flex-lg-row justify-content-center align-items-center mb-4 lh-sm text-decoration-none fs-sm"
         href="https://www.herodevs.com/support/nes-bootstrap?utm_source=Bootstrap_site&utm_medium=Banner&utm_campaign=v3and4_eol"
         rel="noopener"
         target="_blank"
index 238cbbfa355916e4f579bc4ea7c050c1b4411e27..d9fc6da7fbd905a6dd475af773f85fec2475fa66 100644 (file)
@@ -32,27 +32,23 @@ const plugins = getData('plugins')
         first-class data API, allowing you to use JavaScript just by adding <code>data</code> attributes.
       </p>
       <div class="p-4 mb-3 border rounded-3">
-        <div class="dropdown">
-          <button class="btn-solid theme-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-            Dropdown
-          </button>
-          <ul class="dropdown-menu">
-            <li><button class="dropdown-item" type="button">Dropdown item</button></li>
-            <li><button class="dropdown-item" type="button">Dropdown item</button></li>
-            <li><button class="dropdown-item" type="button">Dropdown item</button></li>
-          </ul>
+        <button class="btn-solid theme-primary" type="button" data-bs-toggle="menu" aria-expanded="false">
+          Menu
+        </button>
+        <div class="menu">
+          <button class="menu-item" type="button">Menu item</button>
+          <button class="menu-item" type="button">Menu item</button>
+          <button class="menu-item" type="button">Menu item</button>
         </div>
       </div>
       <Code
-        code={`<div class="dropdown">
-  <button class="btn-solid theme-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-    Dropdown
-  </button>
-  <ul class="dropdown-menu">
-    <li><button class="dropdown-item" type="button">Dropdown item</button></li>
-    <li><button class="dropdown-item" type="button">Dropdown item</button></li>
-    <li><button class="dropdown-item" type="button">Dropdown item</button></li>
-  </ul>
+        code={`<button class="btn-solid theme-primary" type="button" data-bs-toggle="menu" aria-expanded="false">
+  Menu
+</button>
+<div class="menu">
+  <button class="menu-item" type="button">Menu item</button>
+  <button class="menu-item" type="button">Menu item</button>
+  <button class="menu-item" type="button">Menu item</button>
 </div>`}
         lang="html"
       />
index 9e813089705655b964f6e470fa820c4ca08b696f..e5d124ec369d6df21d9a94ae1de705686c17e57d 100644 (file)
   <symbol id="search" viewBox="0 0 16 16">
     <path d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001q.044.06.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1 1 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0"/>
   </symbol>
+  <symbol id="stack" viewBox="0 0 16 16">
+    <path d="m14.12 10.163 1.715.858c.22.11.22.424 0 .534L8.267 15.34a.6.6 0 0 1-.534 0L.165 11.555a.299.299 0 0 1 0-.534l1.716-.858 5.317 2.659c.505.252 1.1.252 1.604 0l5.317-2.66zM7.733.063a.6.6 0 0 1 .534 0l7.568 3.784a.3.3 0 0 1 0 .535L8.267 8.165a.6.6 0 0 1-.534 0L.165 4.382a.299.299 0 0 1 0-.535z"/>
+    <path d="m14.12 6.576 1.715.858c.22.11.22.424 0 .534l-7.568 3.784a.6.6 0 0 1-.534 0L.165 7.968a.299.299 0 0 1 0-.534l1.716-.858 5.317 2.659c.505.252 1.1.252 1.604 0z"/>
+  </symbol>
   <symbol id="sun-fill" viewBox="0 0 16 16">
     <path
       d="M8 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z"
index 103dda9de3997eb0bad6211fc6b1d4c37edf42a0..5aea458099826ecb44360d3c44218444e6dbf759 100644 (file)
@@ -29,12 +29,12 @@ const rounded = ['default', 'pill', 'square']
   <div class="d-flex flex-wrap gap-3">
     <div class="vstack gap-1">
       <label class="form-label fw-semibold mb-0">Color</label>
-      <div class="dropdown">
+      <div>
         <button
           type="button"
-          class="btn-outline theme-secondary btn-sm dropdown-toggle w-100 justify-content-between"
-          id="btn-color-dropdown"
-          data-bs-toggle="dropdown"
+          class="btn-outline theme-secondary btn-sm w-100 justify-content-between"
+          id="btn-color-menu"
+          data-bs-toggle="menu"
           aria-expanded="false"
           data-color="primary"
         >
@@ -43,20 +43,18 @@ const rounded = ['default', 'pill', 'square']
             <use href="#chevron-expand" />
           </svg>
         </button>
-        <ul class="dropdown-menu" aria-labelledby="btn-color-dropdown">
+        <div class="menu">
           {themeColors.map((themeColor) => (
-            <li>
-              <a
-                class:list={['dropdown-item', { 'active': themeColor.name === 'primary' }]}
-                href="#"
-                data-color={themeColor.name}
-                data-selected={themeColor.name === 'primary'}
-              >
-                {themeColor.title}
-              </a>
-            </li>
+            <a
+              class:list={['menu-item', { 'active': themeColor.name === 'primary' }]}
+              href="#"
+              data-color={themeColor.name}
+              data-selected={themeColor.name === 'primary'}
+            >
+              {themeColor.title}
+            </a>
           ))}
-        </ul>
+        </div>
       </div>
     </div>
 
@@ -80,12 +78,12 @@ const rounded = ['default', 'pill', 'square']
 
     <div class="vstack gap-1">
       <label class="form-label fw-semibold mb-0">Size</label>
-      <div class="dropdown">
+      <div>
         <button
           type="button"
-          class="btn-outline theme-secondary btn-sm dropdown-toggle w-100 justify-content-between"
-          id="btn-size-dropdown"
-          data-bs-toggle="dropdown"
+          class="btn-outline theme-secondary btn-sm w-100 justify-content-between"
+          id="btn-size-menu"
+          data-bs-toggle="menu"
           aria-expanded="false"
           data-size=""
         >
@@ -94,20 +92,18 @@ const rounded = ['default', 'pill', 'square']
             <use href="#chevron-expand" />
           </svg>
         </button>
-        <ul class="dropdown-menu" aria-labelledby="btn-size-dropdown">
+        <div class="menu">
           {sizes.map((size) => (
-            <li>
-              <a
-                class:list={['dropdown-item', { 'active': size.value === '' }]}
-                href="#"
-                data-size={size.value}
-                data-selected={size.value === ''}
-              >
-                {size.label}
-              </a>
-            </li>
+            <a
+              class:list={['menu-item', { 'active': size.value === '' }]}
+              href="#"
+              data-size={size.value}
+              data-selected={size.value === ''}
+            >
+              {size.label}
+            </a>
           ))}
-        </ul>
+        </div>
       </div>
     </div>
 
@@ -155,12 +151,12 @@ const rounded = ['default', 'pill', 'square']
 />
 
 <script>
-  import { Dropdown } from '../../../../dist/js/bootstrap.bundle.js'
+  import { Menu } from '../../../../dist/js/bootstrap.bundle.js'
 
-  const colorDropdownButton = document.querySelector('#btn-color-dropdown') as HTMLButtonElement
-  const colorDropdownItems = document.querySelectorAll('#btn-color-dropdown + .dropdown-menu .dropdown-item')
-  const sizeDropdownButton = document.querySelector('#btn-size-dropdown') as HTMLButtonElement
-  const sizeDropdownItems = document.querySelectorAll('#btn-size-dropdown + .dropdown-menu .dropdown-item')
+  const colorMenuButton = document.querySelector('#btn-color-menu') as HTMLButtonElement
+  const colorMenuItems = document.querySelectorAll('#btn-color-menu + .menu .menu-item')
+  const sizeMenuButton = document.querySelector('#btn-size-menu') as HTMLButtonElement
+  const sizeMenuItems = document.querySelectorAll('#btn-size-menu + .menu .menu-item')
   const styleInputs = document.querySelectorAll('input[name="btn-style"]')
   const roundedInputs = document.querySelectorAll('input[name="btn-rounded"]')
   const previewButtons = document.querySelectorAll('#button-preview button')
@@ -168,7 +164,7 @@ const rounded = ['default', 'pill', 'square']
   const codeSnippet = document.querySelector('#button-preview')?.closest('.bd-example-snippet')?.querySelector('.highlight code') as HTMLElement
 
   // Get all theme color names for removal
-  const themeColorNames = Array.from(colorDropdownItems).map(item => (item as HTMLElement).dataset.color || '')
+  const themeColorNames = Array.from(colorMenuItems).map(item => (item as HTMLElement).dataset.color || '')
 
   function generateHTML(button: HTMLElement): string {
     const classes = Array.from(button.classList).filter(cls =>
@@ -209,9 +205,9 @@ const rounded = ['default', 'pill', 'square']
   }
 
   function updateButtons() {
-    const selectedColor = colorDropdownButton?.dataset.color || 'primary'
+    const selectedColor = colorMenuButton?.dataset.color || 'primary'
     const selectedStyle = (document.querySelector('input[name="btn-style"]:checked') as HTMLInputElement)?.value || 'solid'
-    const selectedSize = sizeDropdownButton?.dataset.size || ''
+    const selectedSize = sizeMenuButton?.dataset.size || ''
     const selectedRounded = (document.querySelector('input[name="btn-rounded"]:checked') as HTMLInputElement)?.value || 'default'
 
     previewButtons.forEach((button) => {
@@ -254,66 +250,53 @@ const rounded = ['default', 'pill', 'square']
     updateCodeSnippet()
   }
 
-  // Initialize Bootstrap dropdowns
-  if (colorDropdownButton) {
-    const colorDropdown = Dropdown.getOrCreateInstance(colorDropdownButton)
+  if (colorMenuButton) {
+    const colorMenu = Menu.getOrCreateInstance(colorMenuButton)
 
-    // Handle dropdown item clicks
-    colorDropdownItems.forEach((item) => {
+    colorMenuItems.forEach((item) => {
       item.addEventListener('click', (e) => {
         e.preventDefault()
         const colorName = (item as HTMLElement).dataset.color || 'primary'
         const colorTitle = item.textContent?.trim() || 'Primary'
 
-        // Update button text and data attribute
-        const labelSpan = colorDropdownButton.querySelector('span')
+        const labelSpan = colorMenuButton.querySelector('span')
         if (labelSpan) labelSpan.textContent = colorTitle
-        colorDropdownButton.dataset.color = colorName
+        colorMenuButton.dataset.color = colorName
 
-        // Update selected state
-        colorDropdownItems.forEach((i) => {
+        colorMenuItems.forEach((i) => {
           i.classList.remove('active')
           i.setAttribute('data-selected', 'false')
         })
         item.classList.add('active')
         item.setAttribute('data-selected', 'true')
 
-        // Hide dropdown
-        colorDropdown.hide()
-
-        // Update buttons
+        colorMenu.hide()
         updateButtons()
       })
     })
   }
 
-  if (sizeDropdownButton) {
-    const sizeDropdown = Dropdown.getOrCreateInstance(sizeDropdownButton)
+  if (sizeMenuButton) {
+    const sizeMenu = Menu.getOrCreateInstance(sizeMenuButton)
 
-    // Handle dropdown item clicks
-    sizeDropdownItems.forEach((item) => {
+    sizeMenuItems.forEach((item) => {
       item.addEventListener('click', (e) => {
         e.preventDefault()
         const sizeValue = (item as HTMLElement).dataset.size || ''
         const sizeLabel = item.textContent?.trim() || 'Medium'
 
-        // Update button text and data attribute
-        const labelSpan = sizeDropdownButton.querySelector('span')
+        const labelSpan = sizeMenuButton.querySelector('span')
         if (labelSpan) labelSpan.textContent = sizeLabel
-        sizeDropdownButton.dataset.size = sizeValue
+        sizeMenuButton.dataset.size = sizeValue
 
-        // Update selected state
-        sizeDropdownItems.forEach((i) => {
+        sizeMenuItems.forEach((i) => {
           i.classList.remove('active')
           i.setAttribute('data-selected', 'false')
         })
         item.classList.add('active')
         item.setAttribute('data-selected', 'true')
 
-        // Hide dropdown
-        sizeDropdown.hide()
-
-        // Update buttons
+        sizeMenu.hide()
         updateButtons()
       })
     })
diff --git a/site/src/components/shortcodes/DropdownPlacementPlayground.astro b/site/src/components/shortcodes/DropdownPlacementPlayground.astro
deleted file mode 100644 (file)
index f8ef8ec..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
----
-import Example from '@components/shortcodes/Example.astro'
-
-// Physical placements
-const physicalPlacements = [
-  { value: 'top-start', label: 'top-start' },
-  { value: 'top', label: 'top' },
-  { value: 'top-end', label: 'top-end' },
-  { value: 'right-start', label: 'right-start' },
-  { value: 'right', label: 'right' },
-  { value: 'right-end', label: 'right-end' },
-  { value: 'bottom-start', label: 'bottom-start' },
-  { value: 'bottom', label: 'bottom' },
-  { value: 'bottom-end', label: 'bottom-end' },
-  { value: 'left-start', label: 'left-start' },
-  { value: 'left', label: 'left' },
-  { value: 'left-end', label: 'left-end' }
-]
-
-// Logical placements
-const logicalPlacements = [
-  { value: 'start-start', label: 'start-start' },
-  { value: 'start', label: 'start' },
-  { value: 'start-end', label: 'start-end' },
-  { value: 'end-start', label: 'end-start' },
-  { value: 'end', label: 'end' },
-  { value: 'end-end', label: 'end-end' }
-]
----
-
-<div class="bg-1 p-3 fs-sm rounded-3 mb-3">
-  <div class="d-flex flex-wrap gap-3 align-items-end">
-    <div class="vstack gap-1">
-      <label class="form-label fw-semibold mb-0">Placement type</label>
-      <div class="btn-group" role="group" aria-label="Placement type">
-        <label class="btn-check btn-outline theme-secondary">
-          <input
-            type="radio"
-            name="placement-type"
-            value="physical"
-            checked
-            data-placement-type="physical"
-          />
-          Physical
-        </label>
-        <label class="btn-check btn-outline theme-secondary">
-          <input
-            type="radio"
-            name="placement-type"
-            value="logical"
-            data-placement-type="logical"
-          />
-          Logical
-        </label>
-      </div>
-    </div>
-
-    <div class="vstack gap-1">
-      <label class="form-label fw-semibold mb-0">Placement</label>
-      <div class="dropdown">
-        <button
-          type="button"
-          class="btn-outline theme-secondary dropdown-toggle w-100 justify-content-between"
-          id="placement-dropdown"
-          data-bs-toggle="dropdown"
-          aria-expanded="false"
-          data-placement="bottom-start"
-          style="min-width: 160px;"
-        >
-          <span>bottom-start</span>
-          <svg class="bi ms-1" width="16" height="16" aria-hidden="true">
-            <use href="#chevron-expand" />
-          </svg>
-        </button>
-        <ul class="dropdown-menu" aria-labelledby="placement-dropdown">
-          {physicalPlacements.map((p) => (
-            <li data-placement-group="physical">
-              <a
-                class:list={['dropdown-item', { 'active': p.value === 'bottom-start' }]}
-                href="#"
-                data-placement={p.value}
-              >
-                {p.label}
-              </a>
-            </li>
-          ))}
-          {logicalPlacements.map((p) => (
-            <li data-placement-group="logical" class="d-none">
-              <a
-                class="dropdown-item"
-                href="#"
-                data-placement={p.value}
-              >
-                {p.label}
-              </a>
-            </li>
-          ))}
-        </ul>
-      </div>
-    </div>
-  </div>
-</div>
-
-<Example
-  class="d-flex justify-content-center align-items-center"
-  style="min-height: 200px;"
-  code={`<div class="dropdown">
-  <button class="btn-solid theme-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-placement="bottom-start" aria-expanded="false">
-    Toggle dropdown
-  </button>
-  <ul class="dropdown-menu">
-    <li><a class="dropdown-item" href="#">Action</a></li>
-    <li><a class="dropdown-item" href="#">Another action</a></li>
-    <li><a class="dropdown-item" href="#">Something else here</a></li>
-  </ul>
-</div>`}
-  id="placement-preview"
-/>
-
-<script>
-  import { Dropdown } from '../../../../dist/js/bootstrap.bundle.js'
-
-  const placementDropdownButton = document.querySelector('#placement-dropdown') as HTMLButtonElement
-  const placementDropdownItems = document.querySelectorAll('#placement-dropdown + .dropdown-menu .dropdown-item')
-  const placementTypeInputs = document.querySelectorAll('input[name="placement-type"]')
-  const previewDropdown = document.querySelector('#placement-preview .dropdown')
-  const previewToggle = previewDropdown?.querySelector('[data-bs-toggle="dropdown"]') as HTMLButtonElement
-  const codeSnippet = document.querySelector('#placement-preview')?.closest('.bd-example-snippet')?.querySelector('.highlight code') as HTMLElement
-
-  function updateDropdownItems() {
-    const selectedType = (document.querySelector('input[name="placement-type"]:checked') as HTMLInputElement)?.value || 'physical'
-
-    // Show/hide placement options based on type
-    document.querySelectorAll('[data-placement-group="physical"]').forEach(el => {
-      el.classList.toggle('d-none', selectedType !== 'physical')
-    })
-    document.querySelectorAll('[data-placement-group="logical"]').forEach(el => {
-      el.classList.toggle('d-none', selectedType !== 'logical')
-    })
-
-    // Select first visible option if current selection is hidden
-    const currentPlacement = placementDropdownButton?.dataset.placement || ''
-    const isPhysical = !currentPlacement.startsWith('start') && !currentPlacement.startsWith('end')
-    const needsReset = (selectedType === 'physical' && !isPhysical) || (selectedType === 'logical' && isPhysical)
-
-    if (needsReset) {
-      const defaultPlacement = selectedType === 'physical' ? 'bottom-start' : 'start-start'
-      updatePlacement(defaultPlacement)
-    }
-  }
-
-  function updatePlacement(placement: string) {
-    if (!placementDropdownButton || !previewToggle) return
-
-    // Update the placement selector button
-    const labelSpan = placementDropdownButton.querySelector('span')
-    if (labelSpan) labelSpan.textContent = placement
-    placementDropdownButton.dataset.placement = placement
-
-    // Update active state in dropdown
-    placementDropdownItems.forEach(item => {
-      const itemPlacement = (item as HTMLElement).dataset.placement
-      item.classList.toggle('active', itemPlacement === placement)
-    })
-
-    // Update the preview dropdown
-    previewToggle.setAttribute('data-bs-placement', placement)
-
-    // Dispose and recreate the dropdown instance to pick up new placement
-    const instance = Dropdown.getInstance(previewToggle)
-    if (instance) {
-      instance.dispose()
-    }
-    Dropdown.getOrCreateInstance(previewToggle)
-
-    // Update code snippet
-    updateCodeSnippet(placement)
-  }
-
-  function updateCodeSnippet(placement: string) {
-    if (!codeSnippet) return
-
-    const htmlCode = `<div class="dropdown">
-  <button class="btn-solid theme-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-placement="${placement}" aria-expanded="false">
-    Toggle dropdown
-  </button>
-  <ul class="dropdown-menu">
-    <li><a class="dropdown-item" href="#">Action</a></li>
-    <li><a class="dropdown-item" href="#">Another action</a></li>
-    <li><a class="dropdown-item" href="#">Something else here</a></li>
-  </ul>
-</div>`
-
-    codeSnippet.className = 'language-html'
-    codeSnippet.textContent = htmlCode
-  }
-
-  // Initialize placement dropdown
-  if (placementDropdownButton) {
-    const placementDropdown = Dropdown.getOrCreateInstance(placementDropdownButton)
-
-    placementDropdownItems.forEach(item => {
-      item.addEventListener('click', (e) => {
-        e.preventDefault()
-        const placement = (item as HTMLElement).dataset.placement || 'bottom-start'
-        updatePlacement(placement)
-        placementDropdown.hide()
-      })
-    })
-  }
-
-  // Handle placement type change
-  placementTypeInputs.forEach(input => {
-    input.addEventListener('change', updateDropdownItems)
-  })
-
-  // Initial setup
-  updateDropdownItems()
-</script>
diff --git a/site/src/components/shortcodes/MenuPlacementPlayground.astro b/site/src/components/shortcodes/MenuPlacementPlayground.astro
new file mode 100644 (file)
index 0000000..ce4ec5f
--- /dev/null
@@ -0,0 +1,203 @@
+---
+import Example from '@components/shortcodes/Example.astro'
+
+// Physical placements
+const physicalPlacements = [
+  { value: 'top-start', label: 'top-start' },
+  { value: 'top', label: 'top' },
+  { value: 'top-end', label: 'top-end' },
+  { value: 'right-start', label: 'right-start' },
+  { value: 'right', label: 'right' },
+  { value: 'right-end', label: 'right-end' },
+  { value: 'bottom-start', label: 'bottom-start' },
+  { value: 'bottom', label: 'bottom' },
+  { value: 'bottom-end', label: 'bottom-end' },
+  { value: 'left-start', label: 'left-start' },
+  { value: 'left', label: 'left' },
+  { value: 'left-end', label: 'left-end' }
+]
+
+// Logical placements
+const logicalPlacements = [
+  { value: 'start-start', label: 'start-start' },
+  { value: 'start', label: 'start' },
+  { value: 'start-end', label: 'start-end' },
+  { value: 'end-start', label: 'end-start' },
+  { value: 'end', label: 'end' },
+  { value: 'end-end', label: 'end-end' }
+]
+---
+
+<div class="bg-1 p-3 fs-sm rounded-3">
+  <div class="d-flex flex-wrap gap-3 align-items-end">
+    <div class="vstack gap-1 flex-grow-0">
+      <label class="form-label fw-semibold mb-0">Placement type</label>
+      <div class="btn-group btn-group-sm" role="group" aria-label="Placement type">
+        <label class="btn-check btn-outline theme-secondary">
+          <input
+            type="radio"
+            name="menu-placement-type"
+            value="physical"
+            checked
+            data-placement-type="physical"
+          />
+          Physical
+        </label>
+        <label class="btn-check btn-outline theme-secondary">
+          <input
+            type="radio"
+            name="menu-placement-type"
+            value="logical"
+            data-placement-type="logical"
+          />
+          Logical
+        </label>
+      </div>
+    </div>
+
+    <div class="vstack gap-1 flex-grow-0">
+      <label class="form-label fw-semibold mb-0">Placement</label>
+      <div>
+        <button
+          type="button"
+          class="btn-outline btn-sm theme-secondary w-100 justify-content-between"
+          id="menu-placement-selector"
+          data-bs-toggle="menu"
+          aria-expanded="false"
+          data-placement="bottom-start"
+          style="min-width: 160px;"
+        >
+          <span>bottom-start</span>
+          <svg class="bi ms-1" width="16" height="16" aria-hidden="true">
+            <use href="#chevron-expand" />
+          </svg>
+        </button>
+        <div class="menu" id="menu-placement-selector-menu">
+          {physicalPlacements.map((p) => (
+            <button
+              class:list={['menu-item', { 'active': p.value === 'bottom-start' }]}
+              type="button"
+              data-placement-group="physical"
+              data-placement={p.value}
+            >
+              {p.label}
+            </button>
+          ))}
+          {logicalPlacements.map((p) => (
+            <button
+              class="menu-item d-none"
+              type="button"
+              data-placement-group="logical"
+              data-placement={p.value}
+            >
+              {p.label}
+            </button>
+          ))}
+        </div>
+      </div>
+    </div>
+  </div>
+</div>
+
+<Example
+  class="d-flex justify-content-center align-items-center"
+  style="min-height: 200px;"
+  code={`<button class="btn-solid theme-primary" type="button" data-bs-toggle="menu" data-bs-placement="bottom-start" aria-expanded="false">
+  Toggle menu
+</button>
+<div class="menu">
+  <button class="menu-item" type="button">Action</button>
+  <button class="menu-item" type="button">Another action</button>
+  <button class="menu-item" type="button">Something else here</button>
+</div>`}
+  id="menu-placement-preview"
+/>
+
+<script>
+  import { Menu } from '../../../../dist/js/bootstrap.bundle.js'
+
+  const selectorButton = document.querySelector('#menu-placement-selector') as HTMLButtonElement
+  const selectorItems = document.querySelectorAll('#menu-placement-selector-menu .menu-item')
+  const placementTypeInputs = document.querySelectorAll('input[name="menu-placement-type"]')
+  const previewContainer = document.querySelector('#menu-placement-preview')
+  const previewToggle = previewContainer?.querySelector('[data-bs-toggle="menu"]') as HTMLButtonElement
+  const codeSnippet = previewContainer?.closest('.bd-example-snippet')?.querySelector('.highlight code') as HTMLElement
+
+  function updateSelectorItems() {
+    const selectedType = (document.querySelector('input[name="menu-placement-type"]:checked') as HTMLInputElement)?.value || 'physical'
+
+    document.querySelectorAll('#menu-placement-selector-menu [data-placement-group="physical"]').forEach(el => {
+      el.classList.toggle('d-none', selectedType !== 'physical')
+    })
+    document.querySelectorAll('#menu-placement-selector-menu [data-placement-group="logical"]').forEach(el => {
+      el.classList.toggle('d-none', selectedType !== 'logical')
+    })
+
+    const currentPlacement = selectorButton?.dataset.placement || ''
+    const isPhysical = !currentPlacement.startsWith('start') && !currentPlacement.startsWith('end')
+    const needsReset = (selectedType === 'physical' && !isPhysical) || (selectedType === 'logical' && isPhysical)
+
+    if (needsReset) {
+      const defaultPlacement = selectedType === 'physical' ? 'bottom-start' : 'start-start'
+      updatePlacement(defaultPlacement)
+    }
+  }
+
+  function updatePlacement(placement: string) {
+    if (!selectorButton || !previewToggle) return
+
+    const labelSpan = selectorButton.querySelector('span')
+    if (labelSpan) labelSpan.textContent = placement
+    selectorButton.dataset.placement = placement
+
+    selectorItems.forEach(item => {
+      const itemPlacement = (item as HTMLElement).dataset.placement
+      item.classList.toggle('active', itemPlacement === placement)
+    })
+
+    previewToggle.setAttribute('data-bs-placement', placement)
+
+    const instance = Menu.getInstance(previewToggle)
+    if (instance) {
+      instance.dispose()
+    }
+    Menu.getOrCreateInstance(previewToggle)
+
+    updateCodeSnippet(placement)
+  }
+
+  function updateCodeSnippet(placement: string) {
+    if (!codeSnippet) return
+
+    const htmlCode = `<button class="btn-solid theme-primary" type="button" data-bs-toggle="menu" data-bs-placement="${placement}" aria-expanded="false">
+  Toggle menu
+</button>
+<div class="menu">
+  <button class="menu-item" type="button">Action</button>
+  <button class="menu-item" type="button">Another action</button>
+  <button class="menu-item" type="button">Something else here</button>
+</div>`
+
+    codeSnippet.className = 'language-html'
+    codeSnippet.textContent = htmlCode
+  }
+
+  if (selectorButton) {
+    const selectorMenu = Menu.getOrCreateInstance(selectorButton)
+
+    selectorItems.forEach(item => {
+      item.addEventListener('click', (e) => {
+        e.preventDefault()
+        const placement = (item as HTMLElement).dataset.placement || 'bottom-start'
+        updatePlacement(placement)
+        selectorMenu.hide()
+      })
+    })
+  }
+
+  placementTypeInputs.forEach(input => {
+    input.addEventListener('change', updateSelectorItems)
+  })
+
+  updateSelectorItems()
+</script>
index 8c40ced3f6fa7e5fff413a623e8de31257446783..d0542cc05eb8af6cf73f79c0f34474cbd1a05868 100644 (file)
@@ -13,12 +13,12 @@ const placements = [
 <div class="bg-1 p-3 fs-sm rounded-3">
   <div class="vstack gap-1">
     <label class="form-label fw-semibold mb-0">Placement</label>
-    <div class="dropdown">
+    <div>
       <button
         type="button"
-        class="btn-outline theme-secondary dropdown-toggle"
-        id="navbar-placement-dropdown"
-        data-bs-toggle="dropdown"
+        class="btn-outline theme-secondary"
+        id="navbar-placement-menu"
+        data-bs-toggle="menu"
         aria-expanded="false"
         data-placement=""
       >
@@ -27,19 +27,17 @@ const placements = [
           <use href="#chevron-expand" />
         </svg>
       </button>
-      <ul class="dropdown-menu" aria-labelledby="navbar-placement-dropdown">
+      <div class="menu">
         {placements.map((p) => (
-          <li>
-            <a
-              class:list={['dropdown-item', { 'active': p.value === '' }]}
-              href="#"
-              data-placement={p.value}
-            >
-              {p.label}
-            </a>
-          </li>
+          <a
+            class:list={['menu-item', { 'active': p.value === '' }]}
+            href="#"
+            data-placement={p.value}
+          >
+            {p.label}
+          </a>
         ))}
-      </ul>
+      </div>
     </div>
   </div>
 </div>
@@ -54,10 +52,10 @@ const placements = [
 />
 
 <script>
-  import { Dropdown } from '../../../../dist/js/bootstrap.bundle.js'
+  import { Menu } from '../../../../dist/js/bootstrap.bundle.js'
 
-  const placementDropdownButton = document.querySelector('#navbar-placement-dropdown') as HTMLButtonElement
-  const placementDropdownItems = document.querySelectorAll('#navbar-placement-dropdown + .dropdown-menu .dropdown-item')
+  const placementMenuButton = document.querySelector('#navbar-placement-menu') as HTMLButtonElement
+  const placementMenuItems = document.querySelectorAll('#navbar-placement-menu + .menu .menu-item')
   const previewContainer = document.querySelector('#navbar-placement-preview') as HTMLElement
   const previewNavbar = previewContainer?.querySelector('.navbar') as HTMLElement
   const codeSnippet = previewContainer?.closest('.bd-example-snippet')?.querySelector('.highlight code') as HTMLElement
@@ -73,17 +71,15 @@ const placements = [
   }
 
   function updatePlacement(placement: string) {
-    if (!previewNavbar || !placementDropdownButton) return
+    if (!previewNavbar || !placementMenuButton) return
 
-    // Update dropdown button text
-    const labelSpan = placementDropdownButton.querySelector('span')
+    const labelSpan = placementMenuButton.querySelector('span')
     if (labelSpan) {
       labelSpan.textContent = placementLabels[placement] ? `${placementLabels[placement]}${placement ? '' : ' (static)'}` : 'Default (static)'
     }
-    placementDropdownButton.dataset.placement = placement
+    placementMenuButton.dataset.placement = placement
 
-    // Update active state in dropdown
-    placementDropdownItems.forEach(item => {
+    placementMenuItems.forEach(item => {
       const itemPlacement = (item as HTMLElement).dataset.placement
       item.classList.toggle('active', itemPlacement === placement)
     })
@@ -124,16 +120,15 @@ const placements = [
     codeSnippet.textContent = htmlCode
   }
 
-  // Initialize dropdown
-  if (placementDropdownButton) {
-    const placementDropdown = Dropdown.getOrCreateInstance(placementDropdownButton)
+  if (placementMenuButton) {
+    const placementMenu = Menu.getOrCreateInstance(placementMenuButton)
 
-    placementDropdownItems.forEach(item => {
+    placementMenuItems.forEach(item => {
       item.addEventListener('click', (e) => {
         e.preventDefault()
         const placement = (item as HTMLElement).dataset.placement || ''
         updatePlacement(placement)
-        placementDropdown.hide()
+        placementMenu.hide()
       })
     })
   }
index 5af58096764f22335be4a8fcf47d00ea088785bb..44cb18257b93b8c7aa0151d24259821523e65068 100644 (file)
@@ -158,26 +158,26 @@ Instead of applying button sizing classes to every button in a group, just add `
 
 ## Nesting
 
-Place a `.btn-group` within another `.btn-group` when you want dropdown menus mixed with a series of buttons.
+Place a `.btn-group` within another `.btn-group` when you want menus mixed with a series of buttons.
 
-<Example code={`<div class="btn-group" role="group" aria-label="Button group with nested dropdown">
+<Example code={`<div class="btn-group" role="group" aria-label="Button group with nested menu">
     <button type="button" class="btn-solid theme-primary">1</button>
     <button type="button" class="btn-solid theme-primary">2</button>
 
     <div class="btn-group" role="group">
-      <button type="button" class="btn-solid theme-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-        Dropdown
+      <button type="button" class="btn-solid theme-primary" data-bs-toggle="menu" aria-expanded="false">
+        Menu
       </button>
-      <ul class="dropdown-menu">
-        <li><a class="dropdown-item" href="#">Dropdown link</a></li>
-        <li><a class="dropdown-item" href="#">Dropdown link</a></li>
-      </ul>
+      <div class="menu">
+        <a class="menu-item" href="#">Menu link</a>
+        <a class="menu-item" href="#">Menu link</a>
+      </div>
     </div>
   </div>`} />
 
 ## Vertical variation
 
-Make a set of buttons appear vertically stacked rather than horizontally. **Split button dropdowns are not supported here.**
+Make a set of buttons appear vertically stacked rather than horizontally. **Split button menus are not supported here.**
 
 <Example code={`<div class="btn-group-vertical" role="group" aria-label="Vertical button group">
     <button type="button" class="btn-solid theme-primary">Button</button>
@@ -188,42 +188,42 @@ Make a set of buttons appear vertically stacked rather than horizontally. **Spli
 
 <Example code={`<div class="btn-group-vertical" role="group" aria-label="Vertical button group">
     <div class="btn-group" role="group">
-      <button type="button" class="btn-solid theme-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-        Dropdown
+      <button type="button" class="btn-solid theme-primary" data-bs-toggle="menu" aria-expanded="false">
+        Menu
       </button>
-      <ul class="dropdown-menu">
-        <li><a class="dropdown-item" href="#">Dropdown link</a></li>
-        <li><a class="dropdown-item" href="#">Dropdown link</a></li>
-      </ul>
+      <div class="menu">
+        <a class="menu-item" href="#">Menu link</a>
+        <a class="menu-item" href="#">Menu link</a>
+      </div>
     </div>
     <button type="button" class="btn-solid theme-primary">Button</button>
     <button type="button" class="btn-solid theme-primary">Button</button>
-    <div class="btn-group dropstart" role="group">
-      <button type="button" class="btn-solid theme-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-        Dropdown
+    <div class="btn-group" role="group">
+      <button type="button" class="btn-solid theme-primary" data-bs-toggle="menu" data-bs-placement="left-start" aria-expanded="false">
+        Menu
       </button>
-      <ul class="dropdown-menu">
-        <li><a class="dropdown-item" href="#">Dropdown link</a></li>
-        <li><a class="dropdown-item" href="#">Dropdown link</a></li>
-      </ul>
+      <div class="menu">
+        <a class="menu-item" href="#">Menu link</a>
+        <a class="menu-item" href="#">Menu link</a>
+      </div>
     </div>
-    <div class="btn-group dropend" role="group">
-      <button type="button" class="btn-solid theme-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-        Dropdown
+    <div class="btn-group" role="group">
+      <button type="button" class="btn-solid theme-primary" data-bs-toggle="menu" data-bs-placement="right-start" aria-expanded="false">
+        Menu
       </button>
-      <ul class="dropdown-menu">
-        <li><a class="dropdown-item" href="#">Dropdown link</a></li>
-        <li><a class="dropdown-item" href="#">Dropdown link</a></li>
-      </ul>
+      <div class="menu">
+        <a class="menu-item" href="#">Menu link</a>
+        <a class="menu-item" href="#">Menu link</a>
+      </div>
     </div>
-    <div class="btn-group dropup" role="group">
-      <button type="button" class="btn-solid theme-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-        Dropdown
+    <div class="btn-group" role="group">
+      <button type="button" class="btn-solid theme-primary" data-bs-toggle="menu" data-bs-placement="top-start" aria-expanded="false">
+        Menu
       </button>
-      <ul class="dropdown-menu">
-        <li><a class="dropdown-item" href="#">Dropdown link</a></li>
-        <li><a class="dropdown-item" href="#">Dropdown link</a></li>
-      </ul>
+      <div class="menu">
+        <a class="menu-item" href="#">Menu link</a>
+        <a class="menu-item" href="#">Menu link</a>
+      </div>
     </div>
   </div>`} />
 
index eb5f95e4f4c855fd7c59d5dc7e6712fa1675905b..424a7bfbbf0cd2046ae25d738486b2f75c3c96bd 100644 (file)
@@ -389,6 +389,32 @@ Customize cards by using our theme color utilities. By default, cards use `bg` f
     </div>
   </div>`)} customMarkup={getData('theme-colors').map((themeColor) => `<div class="card card-subtle theme-${themeColor.name}">…</div>`)} />
 
+## Translucent cards
+
+Add `.card-translucent` to blur and saturate the background of a card. Header and footer backgrounds are also adjusted for a consistent look.
+
+<Example class="bg-dark" code={`<div class="card card-translucent" style="width: 18rem;">
+    <div class="card-body">
+      <h4 class="card-title">Translucent card</h4>
+      <p class="card-text">This card has a translucent background with a backdrop blur effect.</p>
+      <a href="#" class="btn-solid theme-primary">Go somewhere</a>
+    </div>
+  </div>`} />
+
+<Example class="bg-dark" code={`<div class="card card-translucent" style="width: 18rem;">
+    <div class="card-header">
+      Featured
+    </div>
+    <div class="card-body">
+      <h4 class="card-title">Card with header</h4>
+      <p class="card-text">Headers and footers are also made translucent to maintain a consistent look.</p>
+      <a href="#" class="btn-solid theme-primary">Go somewhere</a>
+    </div>
+    <div class="card-footer text-body-secondary">
+      2 days ago
+    </div>
+  </div>`} />
+
 ## Card layout
 
 In addition to styling the content within cards, Bootstrap includes a few options for laying out series of cards. For the time being, **these layout options are not yet responsive**.
diff --git a/site/src/content/docs/components/dropdown.mdx b/site/src/content/docs/components/dropdown.mdx
deleted file mode 100644 (file)
index d7fa521..0000000
+++ /dev/null
@@ -1,645 +0,0 @@
----
-title: Dropdown
-description: Toggle contextual menus and custom overlays for lists of links, forms, and more with the Bootstrap dropdown plugin. Powered by [Floating UI](https://floating-ui.com/).
-toc: true
-aliases:
-  - /docs/[[config:docs_version]]/components/dropdowns/
----
-
-## Overview
-
-Toggle dropdown menus with buttons whenever possible. Here's an example using a Bootstrap button:
-
-<Example code={`<div class="dropdown">
-    <button class="btn-solid theme-secondary" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-      Toggle dropdown
-    </button>
-    <ul class="dropdown-menu">
-      <li><a class="dropdown-item" href="#">Dropdown item 1</a></li>
-      <li><a class="dropdown-item" href="#">Dropdown item 2</a></li>
-      <li><a class="dropdown-item" href="#">Dropdown item 3</a></li>
-    </ul>
-  </div>`} />
-
-Dropdowns are toggleable, contextual overlays for displaying lists of links and more. They’re made interactive with the included Bootstrap dropdown JavaScript plugin. They’re toggled by clicking, not by hovering; this is [an intentional design decision](https://markdotto.com/blog/bootstrap-explained-dropdowns/).
-
-Dropdowns are built on a third party library, [Floating UI](https://floating-ui.com/), which provides dynamic positioning and viewport detection. Use `bootstrap.bundle.min.js` / `bootstrap.bundle.js` which includes Floating UI, or include Floating UI separately via an [import map]([[docsref:/getting-started/javascript#using-bootstrap-as-a-module]]). Floating UI isn't used to position dropdowns in navbars though as dynamic positioning isn't required.
-
-## Examples
-
-Wrap the dropdown’s toggle (your button or link) and the dropdown menu within `.dropdown`, or another element that declares `position: relative;`. Ideally, you should use a `<button>` element as the dropdown trigger, but the plugin will work with `<a>` elements as well. The examples shown here use semantic `<ul>` elements where appropriate, but custom markup is supported.
-
-### Single button
-
-While `<button>` is the recommended control for a dropdown toggle, there might be situations where you have to use an `<a>` element. If you do, we recommend adding a `role="button"` attribute to appropriately convey control’s purpose to assistive technologies such as screen readers.
-
-<Example code={`<div class="dropdown">
-    <a class="btn-solid theme-secondary" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
-      Toggle dropdown
-    </a>
-
-    <ul class="dropdown-menu">
-      <li><a class="dropdown-item" href="#">Dropdown item 1</a></li>
-      <li><a class="dropdown-item" href="#">Dropdown item 2</a></li>
-      <li><a class="dropdown-item" href="#">Dropdown item 3</a></li>
-    </ul>
-  </div>`} />
-
-### Split button
-
-Similarly, create split button dropdowns with virtually the same markup as single button dropdowns, but with the addition of `.dropdown-toggle-split` for proper spacing around the dropdown caret.
-
-We use this extra class to reduce the horizontal `padding` on either side of the caret by 25% and remove the `margin-left` that’s added for regular button dropdowns. Those extra changes keep the caret centered in the split button and provide a more appropriately sized hit area next to the main button.
-
-<Example showMarkup={false} code={`<div class="btn-group">
-    <button type="button" class="btn-solid theme-primary">Primary</button>
-    <button type="button" class="btn-solid theme-primary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-      <span class="visually-hidden">Toggle Dropdown</span>
-    </button>
-    <ul class="dropdown-menu">
-      <li><a class="dropdown-item" href="#">Action</a></li>
-      <li><a class="dropdown-item" href="#">Another action</a></li>
-      <li><a class="dropdown-item" href="#">Something else here</a></li>
-      <li><hr class="dropdown-divider"></li>
-      <li><a class="dropdown-item" href="#">Separated link</a></li>
-    </ul>
-  </div>`} />
-
-```html
-<!-- Example split danger button -->
-<div class="btn-group">
-  <button type="button" class="btn-solid theme-danger">Danger</button>
-  <button type="button" class="btn-solid theme-danger dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-    <span class="visually-hidden">Toggle Dropdown</span>
-  </button>
-  <ul class="dropdown-menu">
-    <li><a class="dropdown-item" href="#">Action</a></li>
-    <li><a class="dropdown-item" href="#">Another action</a></li>
-    <li><a class="dropdown-item" href="#">Something else here</a></li>
-    <li><hr class="dropdown-divider"></li>
-    <li><a class="dropdown-item" href="#">Separated link</a></li>
-  </ul>
-</div>
-```
-
-## Dark dropdowns
-
-Opt into darker dropdowns to match a dark navbar or custom style by adding `data-bs-theme="dark"` onto an existing `.dropdown-menu`. No changes are required to the dropdown items.
-
-<Example code={`<div class="dropdown" data-bs-theme="dark">
-    <button class="btn-solid theme-secondary" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-      Dropdown button
-    </button>
-    <ul class="dropdown-menu dropdown-menu-dark">
-      <li><a class="dropdown-item active" href="#">Action</a></li>
-      <li><a class="dropdown-item" href="#">Another action</a></li>
-      <li><a class="dropdown-item" href="#">Something else here</a></li>
-      <li><hr class="dropdown-divider"></li>
-      <li><a class="dropdown-item" href="#">Separated link</a></li>
-    </ul>
-  </div>`} />
-
-And putting it to use in a navbar:
-
-<Example code={`<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
-    <div class="container-fluid">
-      <a class="navbar-brand" href="#">Navbar</a>
-      <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavDarkDropdown" aria-controls="navbarNavDarkDropdown" aria-expanded="false" aria-label="Toggle navigation">
-        <svg class="navbar-toggler-icon" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round"><path d="M1 3.5h14M1 8h14M1 12.5h14"/></svg>
-      </button>
-      <div class="collapse navbar-collapse" id="navbarNavDarkDropdown">
-        <ul class="navbar-nav">
-          <li class="nav-item dropdown" data-bs-theme="dark">
-            <button class="btn-solid theme-inverse dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
-              Dropdown
-            </button>
-            <ul class="dropdown-menu dropdown-menu-dark">
-              <li><a class="dropdown-item" href="#">Action</a></li>
-              <li><a class="dropdown-item" href="#">Another action</a></li>
-              <li><a class="dropdown-item" href="#">Something else here</a></li>
-            </ul>
-          </li>
-        </ul>
-      </div>
-    </div>
-  </nav>`} />
-
-## Placement
-
-Use `data-bs-placement` on the toggle element to control where the dropdown menu appears.
-
-**Physical placements:** `top`, `bottom`, `left`, `right` — fixed directions regardless of text direction.
-
-**Logical placements:** `start`, `end` — automatically flip based on RTL. In LTR mode, `start` becomes `left` and `end` becomes `right`. In RTL mode, they swap.
-
-All placements support `-start` and `-end` alignment modifiers (e.g., `bottom-start`, `end-end`).
-
-<DropdownPlacementPlayground />
-
-### Responsive
-
-Change placement at different breakpoints using responsive prefixes. The syntax is `breakpoint:placement`, where breakpoint is one of `sm`, `md`, `lg`, `xl`, or `2xl`. Multiple breakpoints can be combined in a single attribute, space-separated.
-
-For example, `data-bs-placement="bottom-start md:bottom-end lg:end-start"` will:
-
-- Show the menu at `bottom-start` on small screens (default)
-- Switch to `bottom-end` at the `md` breakpoint
-- Switch to `right-start` at the `lg` breakpoint
-
-<Example class="d-flex gap-2" code={`<div class="dropdown">
-    <button class="btn-solid theme-secondary" type="button" data-bs-toggle="dropdown" data-bs-placement="bottom-start md:bottom-end" aria-expanded="false">
-      Bottom start → md:bottom-end
-    </button>
-    <ul class="dropdown-menu">
-      <li><a class="dropdown-item" href="#">Action</a></li>
-      <li><a class="dropdown-item" href="#">Another action</a></li>
-    </ul>
-  </div>
-  <div class="dropdown">
-    <button class="btn-solid theme-secondary" type="button" data-bs-toggle="dropdown" data-bs-placement="bottom lg:right" aria-expanded="false">
-      Bottom → lg:right
-    </button>
-    <ul class="dropdown-menu">
-      <li><a class="dropdown-item" href="#">Action</a></li>
-      <li><a class="dropdown-item" href="#">Another action</a></li>
-    </ul>
-  </div>
-  <div class="dropdown">
-    <button class="btn-solid theme-secondary" type="button" data-bs-toggle="dropdown" data-bs-placement="top-end md:right-start xl:bottom-start" aria-expanded="false">
-      Multi-breakpoint
-    </button>
-    <ul class="dropdown-menu">
-      <li><a class="dropdown-item" href="#">Action</a></li>
-      <li><a class="dropdown-item" href="#">Another action</a></li>
-    </ul>
-  </div>`} />
-
-Resize your browser window to see the placement change at different breakpoints.
-
-## Menu items
-
-You can use `<a>` or `<button>` elements as dropdown items.
-
-<Callout>
-We use utility classes to display dropdown menus in our docs examples, but they're not required for your own use.
-</Callout>
-
-<Example code={`<ul class="dropdown-menu show position-static">
-    <li><button class="dropdown-item" type="button">Action</button></li>
-    <li><button class="dropdown-item" type="button">Another action</button></li>
-    <li><button class="dropdown-item" type="button">Something else here</button></li>
-  </ul>`} />
-
-You can also create non-interactive dropdown items with `.dropdown-item-text`. Feel free to style further with custom CSS or text utilities.
-
-<Example code={`<ul class="dropdown-menu show position-static">
-    <li><span class="dropdown-item-text">Dropdown item text</span></li>
-    <li><a class="dropdown-item" href="#">Action</a></li>
-    <li><a class="dropdown-item" href="#">Another action</a></li>
-    <li><a class="dropdown-item" href="#">Something else here</a></li>
-  </ul>`} />
-
-### Active
-
-Add `.active` to items in the dropdown to style them as the active selection. To convey the active state to assistive technologies, use the `aria-current` attribute — using the `page` value for the current page, or `true` for the current item in a set.
-
-<Example code={`<ul class="dropdown-menu show position-static">
-    <li><a class="dropdown-item" href="#">Regular link</a></li>
-    <li><a class="dropdown-item active" href="#" aria-current="true">Active link</a></li>
-    <li><a class="dropdown-item" href="#">Another link</a></li>
-  </ul>`} />
-
-### Disabled
-
-Add `.disabled` to items in the dropdown to style them as disabled.
-
-<Example code={`<ul class="dropdown-menu show position-static">
-    <li><a class="dropdown-item" href="#">Regular link</a></li>
-    <li><a class="dropdown-item disabled" aria-disabled="true">Disabled link</a></li>
-    <li><a class="dropdown-item" href="#">Another link</a></li>
-  </ul>`} />
-
-### Variants
-
-You can use the `theme-` prefix to apply a theme color to a dropdown item.
-
-<Example class="hstack gap-3" code={`<ul class="dropdown-menu show position-static">
-    <li><a class="dropdown-item theme-primary" href="#">Primary link</a></li>
-    <li><a class="dropdown-item theme-secondary" href="#">Secondary link</a></li>
-    <li><a class="dropdown-item theme-success" href="#">Success link</a></li>
-    <li><a class="dropdown-item theme-danger" href="#">Danger link</a></li>
-  </ul>
-  <ul class="dropdown-menu show position-static">
-    <li><a class="dropdown-item active theme-primary" href="#">Primary link</a></li>
-    <li><a class="dropdown-item active theme-secondary" href="#">Secondary link</a></li>
-    <li><a class="dropdown-item active theme-success" href="#">Success link</a></li>
-    <li><a class="dropdown-item active theme-danger" href="#">Danger link</a></li>
-  </ul>`} />
-
-## Menu content
-
-### Headers
-
-Add a header to label sections of actions in any dropdown menu.
-
-<Example code={`<ul class="dropdown-menu show position-static">
-    <li><a class="dropdown-item" href="#">Action</a></li>
-    <li><a class="dropdown-item" href="#">Action</a></li>
-    <li><h6 class="dropdown-header">Dropdown header</h6></li>
-    <li><a class="dropdown-item" href="#">Another action</a></li>
-  </ul>`} />
-
-### Dividers
-
-Separate groups of related menu items with a divider.
-
-<Example code={`<ul class="dropdown-menu show position-static">
-    <li><a class="dropdown-item" href="#">Action</a></li>
-    <li><a class="dropdown-item" href="#">Another action</a></li>
-    <li><a class="dropdown-item" href="#">Something else here</a></li>
-    <li><hr class="dropdown-divider"></li>
-    <li><a class="dropdown-item" href="#">Separated link</a></li>
-  </ul>`} />
-
-### Text
-
-Place any freeform text within a dropdown menu with text and use [margin]([[docsref:/utilities/margin]]) and [padding]([[docsref:/utilities/padding]]) utilities. Note that you’ll likely need additional sizing styles to constrain the menu width.
-
-<Example code={`<div class="dropdown-menu show position-static p-3 text-body-secondary"
-       style="--bs-dropdown-min-width: 240px;">
-    <p>
-      Some example text that’s free-flowing within the dropdown menu.
-    </p>
-    <p class="mb-0">
-      And this is more example text.
-    </p>
-  </div>`} />
-
-### Forms
-
-Put a form within a dropdown menu, or make it into a dropdown menu, and use [margin]([[docsref:/utilities/margin]]) and [padding]([[docsref:/utilities/padding]]) utilities to give it the negative space you require.
-
-<Example code={`<div class="dropdown-menu show position-static"
-       style="--bs-dropdown-min-width: 300px;">
-    <form class="d-flex flex-column gap-3 p-3">
-      <div>
-        <label for="exampleDropdownFormEmail1" class="form-label">Email address</label>
-        <input type="email" class="form-control" id="exampleDropdownFormEmail1" placeholder="email@example.com">
-      </div>
-      <div>
-        <label for="exampleDropdownFormPassword1" class="form-label">Password</label>
-        <input type="password" class="form-control" id="exampleDropdownFormPassword1" placeholder="Password">
-      </div>
-      <div class="checkgroup">
-        <div class="check">
-          <input type="checkbox" id="checkLabel" />
-          <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'>
-            <path class="checked" fill='none' stroke='currentcolor' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m4 8 3 3 5-5'/>
-            <path class="indeterminate" fill='none' stroke='currentcolor' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M5 8h6'/>
-          </svg>
-        </div>
-        <label for="checkLabel">Example new checkbox</label>
-      </div>
-      <div class="vstack gap-2">
-        <button type="submit" class="btn-solid theme-primary">Sign in</button>
-        <a class="btn-ghost theme-secondary" href="#">New around here? Sign up</a>
-        <a class="btn-ghost theme-secondary" href="#">Forgot password?</a>
-      </div>
-    </form>
-  </div>`} />
-
-## Submenus
-
-Create nested dropdown menus with the `.dropdown-submenu` wrapper class. Submenus support hover and click activation, keyboard navigation, viewport-aware positioning, and mobile slide-over behavior.
-
-Wrap a `.dropdown-item` trigger and a nested `.dropdown-menu` inside a `.dropdown-submenu` element.
-
-<Example code={`<div class="dropdown">
-    <button class="btn-solid theme-secondary" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-      Dropdown with submenu
-    </button>
-    <ul class="dropdown-menu">
-      <li><a class="dropdown-item" href="#">Action</a></li>
-      <li><a class="dropdown-item" href="#">Another action</a></li>
-      <li class="dropdown-divider"></li>
-      <li class="dropdown-submenu">
-        <button class="dropdown-item" type="button">More options</button>
-        <ul class="dropdown-menu">
-          <li><a class="dropdown-item" href="#">Sub-action 1</a></li>
-          <li><a class="dropdown-item" href="#">Sub-action 2</a></li>
-          <li><a class="dropdown-item" href="#">Sub-action 3</a></li>
-        </ul>
-      </li>
-      <li><a class="dropdown-item" href="#">Something else</a></li>
-    </ul>
-  </div>`} />
-
-### Nested submenus
-
-Submenus can be nested to multiple levels. Each level opens to the side and flips direction when there's not enough viewport space.
-
-<Example code={`<div class="dropdown">
-    <button class="btn-solid theme-secondary" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-      Multi-level menu
-    </button>
-    <ul class="dropdown-menu">
-      <li><a class="dropdown-item" href="#">Level 1 action</a></li>
-      <li class="dropdown-submenu">
-        <button class="dropdown-item" type="button">Level 1 submenu</button>
-        <ul class="dropdown-menu">
-          <li><a class="dropdown-item" href="#">Level 2 action</a></li>
-          <li class="dropdown-submenu">
-            <button class="dropdown-item" type="button">Level 2 submenu</button>
-            <ul class="dropdown-menu">
-              <li><a class="dropdown-item" href="#">Level 3 action A</a></li>
-              <li><a class="dropdown-item" href="#">Level 3 action B</a></li>
-            </ul>
-          </li>
-          <li><a class="dropdown-item" href="#">Another level 2</a></li>
-        </ul>
-      </li>
-      <li><a class="dropdown-item" href="#">Another level 1</a></li>
-    </ul>
-  </div>`} />
-
-### Multiple submenus
-
-When multiple submenu triggers exist at the same level, opening one automatically closes the others.
-
-<Example code={`<div class="dropdown">
-    <button class="btn-solid theme-secondary" type="button" data-bs-toggle="dropdown" aria-expanded="false">
-      Multiple submenus
-    </button>
-    <ul class="dropdown-menu">
-      <li class="dropdown-submenu">
-        <button class="dropdown-item" type="button">File</button>
-        <ul class="dropdown-menu">
-          <li><a class="dropdown-item" href="#">New</a></li>
-          <li><a class="dropdown-item" href="#">Open</a></li>
-          <li><a class="dropdown-item" href="#">Save</a></li>
-        </ul>
-      </li>
-      <li class="dropdown-submenu">
-        <button class="dropdown-item" type="button">Edit</button>
-        <ul class="dropdown-menu">
-          <li><a class="dropdown-item" href="#">Cut</a></li>
-          <li><a class="dropdown-item" href="#">Copy</a></li>
-          <li><a class="dropdown-item" href="#">Paste</a></li>
-        </ul>
-      </li>
-      <li class="dropdown-submenu">
-        <button class="dropdown-item" type="button">View</button>
-        <ul class="dropdown-menu">
-          <li><a class="dropdown-item" href="#">Zoom In</a></li>
-          <li><a class="dropdown-item" href="#">Zoom Out</a></li>
-        </ul>
-      </li>
-      <li class="dropdown-divider"></li>
-      <li><a class="dropdown-item" href="#">Preferences</a></li>
-    </ul>
-  </div>`} />
-
-## Dropdown options
-
-Use `data-bs-offset` or `data-bs-reference` to change the location of the dropdown.
-
-<Example code={`<div class="d-flex">
-    <div class="dropdown me-1">
-      <button type="button" class="btn-solid theme-secondary" data-bs-toggle="dropdown" aria-expanded="false" data-bs-offset="10,20">
-        Offset
-      </button>
-      <ul class="dropdown-menu">
-        <li><a class="dropdown-item" href="#">Action</a></li>
-        <li><a class="dropdown-item" href="#">Another action</a></li>
-        <li><a class="dropdown-item" href="#">Something else here</a></li>
-      </ul>
-    </div>
-    <div class="btn-group">
-      <button type="button" class="btn-solid theme-secondary">Reference</button>
-      <button type="button" class="btn-solid theme-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false" data-bs-reference="parent">
-        <span class="visually-hidden">Toggle Dropdown</span>
-      </button>
-      <ul class="dropdown-menu">
-        <li><a class="dropdown-item" href="#">Action</a></li>
-        <li><a class="dropdown-item" href="#">Another action</a></li>
-        <li><a class="dropdown-item" href="#">Something else here</a></li>
-        <li><hr class="dropdown-divider"></li>
-        <li><a class="dropdown-item" href="#">Separated link</a></li>
-      </ul>
-    </div>
-  </div>`} />
-
-### Auto close behavior
-
-By default, the dropdown menu is closed when clicking inside or outside the dropdown menu. You can use the `autoClose` option to change this behavior of the dropdown.
-
-<Example code={`<div class="btn-group">
-    <button class="btn-solid theme-secondary" type="button" data-bs-toggle="dropdown" data-bs-auto-close="true" aria-expanded="false">
-      Default dropdown
-    </button>
-    <ul class="dropdown-menu">
-      <li><a class="dropdown-item" href="#">Menu item</a></li>
-      <li><a class="dropdown-item" href="#">Menu item</a></li>
-      <li><a class="dropdown-item" href="#">Menu item</a></li>
-    </ul>
-  </div>
-
-  <div class="btn-group">
-    <button class="btn-solid theme-secondary" type="button" data-bs-toggle="dropdown" data-bs-auto-close="inside" aria-expanded="false">
-      Clickable inside
-    </button>
-    <ul class="dropdown-menu">
-      <li><a class="dropdown-item" href="#">Menu item</a></li>
-      <li><a class="dropdown-item" href="#">Menu item</a></li>
-      <li><a class="dropdown-item" href="#">Menu item</a></li>
-    </ul>
-  </div>
-
-  <div class="btn-group">
-    <button class="btn-solid theme-secondary" type="button" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
-      Clickable outside
-    </button>
-    <ul class="dropdown-menu">
-      <li><a class="dropdown-item" href="#">Menu item</a></li>
-      <li><a class="dropdown-item" href="#">Menu item</a></li>
-      <li><a class="dropdown-item" href="#">Menu item</a></li>
-    </ul>
-  </div>
-
-  <div class="btn-group">
-    <button class="btn-solid theme-secondary" type="button" data-bs-toggle="dropdown" data-bs-auto-close="false" aria-expanded="false">
-      Manual close
-    </button>
-    <ul class="dropdown-menu">
-      <li><a class="dropdown-item" href="#">Menu item</a></li>
-      <li><a class="dropdown-item" href="#">Menu item</a></li>
-      <li><a class="dropdown-item" href="#">Menu item</a></li>
-    </ul>
-  </div>`} />
-
-## Accessibility
-
-The [<abbr title="Web Accessibility Initiative">WAI</abbr> <abbr title="Accessible Rich Internet Applications">ARIA</abbr>](https://www.w3.org/TR/wai-aria/) standard defines an actual [`role="menu"` widget](https://www.w3.org/TR/wai-aria/#menu), but this is specific to application-like menus which trigger actions or functions. <abbr title="Accessible Rich Internet Applications">ARIA</abbr> menus can only contain menu items, checkbox menu items, radio button menu items, radio button groups, and sub-menus.
-
-Bootstrap's dropdowns, on the other hand, are designed to be generic and applicable to a variety of situations and markup structures. For instance, it is possible to create dropdowns that contain additional inputs and form controls, such as search fields or login forms. For this reason, Bootstrap does not expect (nor automatically add) any of the `role` and `aria-` attributes required for true <abbr title="Accessible Rich Internet Applications">ARIA</abbr> menus. Authors will have to include these more specific attributes themselves.
-
-### Keyboard navigation
-
-Dropdowns include built-in keyboard support for navigating menu items.
-
-<BsTable>
-| Key | Action |
-| --- | --- |
-| `↓` / `↑` | Navigate to next/previous menu item |
-| `→` | Enter submenu (or `←` in RTL) |
-| `←` | Exit submenu and return to parent (or `→` in RTL) |
-| `Enter` / `Space` | Activate focused item or open submenu |
-| `Esc` | Close the dropdown menu |
-| `Home` / `End` | Jump to first/last menu item |
-| `Tab` | Move focus and close the dropdown |
-</BsTable>
-
-## CSS
-
-### Variables
-
-<CSSVariables component="Dropdowns" className="dropdown-menu" />
-
-<ScssDocs name="dropdown-tokens" file="scss/_dropdown.scss" />
-
-<Callout>
-Dropdown items include at least one variable that is not set on `.dropdown`. This allows you to provide a new value while Bootstrap defaults to a fallback value.
-
-- `--bs-dropdown-item-border-radius`
-</Callout>
-
-### Sass variables
-
-Variables for the CSS-based carets that indicate a dropdown’s interactivity:
-
-<ScssDocs name="caret-variables" file="scss/mixins/_caret.scss" />
-
-### Sass mixins
-
-Mixins are used to generate the CSS-based carets and can be found in `scss/mixins/_caret.scss`.
-
-<ScssDocs name="caret-mixins" file="scss/mixins/_caret.scss" />
-
-## Usage
-
-Via data attributes or JavaScript, the dropdown plugin toggles hidden content (dropdown menus) by toggling the `.show` class on the parent `.dropdown-menu`. The `data-bs-toggle="dropdown"` attribute is relied on for closing dropdown menus at an application level, so it’s a good idea to always use it.
-
-<Callout>
-On touch-enabled devices, opening a dropdown adds empty `mouseover` handlers to the immediate children of the `<body>` element. This admittedly ugly hack is necessary to work around a [quirk in iOs’ event delegation](https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html), which would otherwise prevent a tap anywhere outside of the dropdown from triggering the code that closes the dropdown. Once the dropdown is closed, these additional empty `mouseover` handlers are removed.
-</Callout>
-
-### Via data attributes
-
-Add `data-bs-toggle="dropdown"` to a link or button to toggle a dropdown.
-
-```html
-<div class="dropdown">
-  <button type="button" data-bs-toggle="dropdown" aria-expanded="false">
-    Dropdown trigger
-  </button>
-  <ul class="dropdown-menu">
-    ...
-  </ul>
-</div>
-```
-
-### Via JavaScript
-
-<Callout type="warning">
-Dropdowns must have `data-bs-toggle="dropdown"` on their trigger element, regardless of whether you call your dropdown via JavaScript or use the data-api.
-</Callout>
-
-Call the dropdowns via JavaScript:
-
-```js
-const dropdownElementList = document.querySelectorAll('[data-bs-toggle="dropdown"]')
-const dropdownList = [...dropdownElementList].map(dropdownToggleEl => new bootstrap.Dropdown(dropdownToggleEl))
-```
-
-### Dependencies
-
-The dropdown plugin requires the following JavaScript files if you're building Bootstrap's JS from source:
-
-<BsTable>
-| File | Description |
-| --- | --- |
-| `js/src/dropdown.js` | Main dropdown component |
-| `js/src/base-component.js` | Base component class |
-| `js/src/dom/event-handler.js` | Event handling utilities |
-| `js/src/dom/manipulator.js` | Data attribute manipulation |
-| `js/src/dom/selector-engine.js` | DOM selector utilities |
-| `js/src/util/index.js` | Core utility functions |
-| `js/src/util/floating-ui.js` | Responsive placement utilities |
-| `@floating-ui/dom` | Third-party positioning library |
-</BsTable>
-
-### Options
-
-<JsDataAttributes />
-
-<BsTable>
-| Name | Type | Default | Description |
-| --- | --- | --- | --- |
-| `autoClose` | boolean, string | `true` | Configure the auto close behavior of the dropdown: <ul class="my-2"><li>`true` - the dropdown will be closed by clicking outside or inside the dropdown menu.</li><li>`false` - the dropdown will be closed by clicking the toggle button and manually calling `hide` or `toggle` method. (Also will not be closed by pressing <kbd>Esc</kbd> key)</li><li>`'inside'` - the dropdown will be closed (only) by clicking inside the dropdown menu.</li> <li>`'outside'` - the dropdown will be closed (only) by clicking outside the dropdown menu.</li></ul> Note: the dropdown can always be closed with the <kbd>Esc</kbd> key. |
-| `boundary` | string, element | `'clippingParents'` | Overflow constraint boundary of the dropdown menu (applies only to the shift middleware). By default it's `clippingParents` and can accept an HTMLElement reference (via JavaScript only). For more information refer to Floating UI's [shift docs](https://floating-ui.com/docs/shift). |
-| `container` | string, element, boolean | `false` | Appends the dropdown menu to a specific element when shown. Use `'body'` or `true` to append to the document body, which helps escape containers with `overflow: hidden`. The menu is moved back to its original position when hidden. |
-| `display` | string | `'dynamic'` | By default, we use Floating UI for dynamic positioning. Disable this with `static`. |
-| `offset` | array, string, function | `[0, 2]` | Offset of the dropdown relative to its target. You can pass a string in data attributes with comma separated values like: `data-bs-offset="10,20"`. When a function is used to determine the offset, it is called with an object containing the placement, the reference, and floating rects as its first argument. The triggering element DOM node is passed as the second argument. The function must return an array with two numbers: [skidding, distance]. For more information refer to Floating UI's [offset docs](https://floating-ui.com/docs/offset). |
-| `floatingConfig` | null, object, function | `null` | To change Bootstrap's default Floating UI config, see [Floating UI's configuration](https://floating-ui.com/docs/computePosition). When a function is used to create the Floating UI configuration, it's called with an object that contains the Bootstrap's default Floating UI configuration. It helps you use and merge the default with your own configuration. The function must return a configuration object for Floating UI. |
-| `placement` | string | `'bottom-start'` | Placement of the dropdown menu. Physical placements: `'top'`, `'bottom'`, `'left'`, `'right'`. Logical placements (RTL-aware): `'start'`, `'end'`. All support alignment modifiers: `-start`, `-end`. Supports responsive prefixes like `'bottom-start md:end'`. |
-| `reference` | string, element, object | `'toggle'` | Reference element of the dropdown menu. Accepts the values of `'toggle'`, `'parent'`, an HTMLElement reference or an object providing `getBoundingClientRect`. For more information refer to Floating UI's [virtual elements docs](https://floating-ui.com/docs/virtual-elements). |
-| `strategy` | string | `'absolute'` | Positioning strategy for the dropdown. Use `'absolute'` for default positioning, or `'fixed'` to escape containers with `overflow: hidden`. For more information refer to Floating UI's [strategy docs](https://floating-ui.com/docs/computePosition#strategy). |
-| `submenuTrigger` | string | `'both'` | How submenus are triggered. Use `'click'` for click only, `'hover'` for hover only, or `'both'` for both click and hover activation. |
-| `submenuDelay` | number | `100` | Delay in milliseconds before closing a submenu when the mouse leaves. Provides a grace period for diagonal mouse movement toward the submenu. |
-</BsTable>
-
-#### Using function with `floatingConfig`
-
-```js
-const dropdown = new bootstrap.Dropdown(element, {
-  floatingConfig(defaultBsFloatingConfig) {
-    // const newFloatingConfig = {...}
-    // use defaultBsFloatingConfig if needed...
-    // return newFloatingConfig
-  }
-})
-```
-
-### Methods
-
-<BsTable>
-| Method | Description |
-| --- | --- |
-| `dispose` | Destroys an element’s dropdown. (Removes stored data on the DOM element) |
-| `getInstance` | Static method which allows you to get the dropdown instance associated to a DOM element, you can use it like this: `bootstrap.Dropdown.getInstance(element)`. |
-| `getOrCreateInstance` | Static method which returns a dropdown instance associated to a DOM element or create a new one in case it wasn’t initialized. You can use it like this: `bootstrap.Dropdown.getOrCreateInstance(element)`. |
-| `hide` | Hides the dropdown menu of a given navbar or tabbed navigation. |
-| `show` | Shows the dropdown menu of a given navbar or tabbed navigation. |
-| `toggle` | Toggles the dropdown menu of a given navbar or tabbed navigation. |
-| `update` | Updates the position of an element’s dropdown. |
-</BsTable>
-
-### Events
-
-All dropdown events are fired at the toggling element and then bubbled up. So you can also add event listeners on the `.dropdown-menu`’s parent element. `hide.bs.dropdown` and `hidden.bs.dropdown` events have a `clickEvent` property (only when the original Event type is `click`) that contains an Event Object for the click event.
-
-<BsTable>
-| Event type | Description |
-| --- | --- |
-| `hide.bs.dropdown` | Fires immediately when the `hide` instance method has been called. |
-| `hidden.bs.dropdown` | Fired when the dropdown has finished being hidden from the user and CSS transitions have completed. |
-| `show.bs.dropdown` | Fires immediately when the `show` instance method is called. |
-| `shown.bs.dropdown` | Fired when the dropdown has been made visible to the user and CSS transitions have completed. |
-</BsTable>
-
-```js
-const myDropdown = document.getElementById('myDropdown')
-myDropdown.addEventListener('show.bs.dropdown', event => {
-  // do something...
-})
-```
diff --git a/site/src/content/docs/components/menu.mdx b/site/src/content/docs/components/menu.mdx
new file mode 100644 (file)
index 0000000..5045a91
--- /dev/null
@@ -0,0 +1,682 @@
+---
+title: Menu
+description: Toggle contextual menus and custom overlays for lists of links, forms, and more with the Bootstrap menu plugin. Powered by [Floating UI](https://floating-ui.com/).
+toc: true
+aliases:
+  - /docs/[[config:docs_version]]/components/menus/
+---
+
+## Overview
+
+Toggle menus with buttons whenever possible. Here's an example using a Bootstrap button:
+
+<Example code={`<button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" aria-expanded="false">
+    Toggle menu
+  </button>
+  <div class="menu">
+    <a class="menu-item" href="#">Menu item 1</a>
+    <a class="menu-item" href="#">Menu item 2</a>
+    <a class="menu-item" href="#">Menu item 3</a>
+  </div>`} />
+
+Menus are toggleable, contextual overlays for displaying lists of links and more. They're made interactive with the included Bootstrap menu JavaScript plugin. They're toggled by clicking, not by hovering; this is [an intentional design decision](https://markdotto.com/blog/bootstrap-explained-dropdowns/).
+
+Menus are built on a third party library, [Floating UI](https://floating-ui.com/), which provides dynamic positioning and viewport detection. Use `bootstrap.bundle.min.js` / `bootstrap.bundle.js` which includes Floating UI, or include Floating UI separately via an [import map]([[docsref:/getting-started/javascript#using-bootstrap-as-a-module]]). Floating UI isn't used to position menus in navbars though as dynamic positioning isn't required.
+
+## Examples
+
+While `<button>` is the recommended control for a menu toggle, there might be situations where you have to use an `<a>` element. If you do, we recommend adding a `role="button"` attribute to appropriately convey control's purpose to assistive technologies such as screen readers.
+
+Use [button groups]([[docsref:/components/button-group]]) to create split button menus where the menu is displayed when a secondary button is clicked.
+
+<Example code={`<a class="btn-solid theme-primary" href="#" role="button" data-bs-toggle="menu" aria-expanded="false">
+    Toggle menu
+  </a>
+  <div class="menu">
+    <a class="menu-item" href="#">Menu item 1</a>
+    <a class="menu-item" href="#">Menu item 2</a>
+    <a class="menu-item" href="#">Menu item 3</a>
+  </div>
+
+  <div class="btn-group">
+    <button type="button" class="btn-solid theme-secondary">Split</button>
+    <button type="button" class="btn-solid theme-secondary menu-toggle-split" data-bs-toggle="menu" aria-expanded="false">
+      <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#chevron-expand" /></svg>
+      <span class="visually-hidden">Toggle menu</span>
+    </button>
+    <div class="menu">
+      <a class="menu-item" href="#">Action</a>
+      <a class="menu-item" href="#">Another action</a>
+      <a class="menu-item" href="#">Something else here</a>
+      <hr class="menu-divider">
+      <a class="menu-item" href="#">Separated link</a>
+    </div>
+  </div>`} />
+
+### Dark menus
+
+Opt into darker menus to match a dark navbar or custom style by adding `data-bs-theme="dark"` onto the toggle element or a parent.
+
+<Example code={`<div data-bs-theme="dark">
+    <button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" aria-expanded="false">
+      Menu button
+    </button>
+    <div class="menu">
+      <a class="menu-item active" href="#">Action</a>
+      <a class="menu-item" href="#">Another action</a>
+      <a class="menu-item" href="#">Something else here</a>
+      <hr class="menu-divider">
+      <a class="menu-item" href="#">Separated link</a>
+    </div>
+  </div>`} />
+
+And putting it to use in a navbar:
+
+<Example code={`<nav class="navbar" data-bs-theme="dark">
+    <div class="container-fluid">
+      <a class="navbar-brand" href="#">Navbar</a>
+      <ul class="navbar-nav">
+        <li class="nav-item" data-bs-theme="dark">
+          <button class="btn-solid theme-secondary" data-bs-toggle="menu" aria-expanded="false">
+            Menu
+          </button>
+          <div class="menu">
+            <a class="menu-item" href="#">Action</a>
+            <a class="menu-item" href="#">Another action</a>
+            <a class="menu-item" href="#">Something else here</a>
+          </div>
+        </li>
+      </ul>
+    </div>
+  </nav>`} />
+
+### Translucent menus
+
+Blur and saturate the background of menus to create a translucent effect with `.menu-translucent`.
+
+<Example code={`<button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" aria-expanded="false">
+    Menu button
+  </button>
+  <div class="menu menu-translucent">
+    <a class="menu-item active" href="#">Active menu item</a>
+    <a class="menu-item" href="#">Menu item</a>
+    <a class="menu-item" href="#">Menu item</a>
+    <a class="menu-item" href="#">Menu item</a>
+    <a class="menu-item" href="#">Menu item</a>
+    <hr class="menu-divider">
+    <a class="menu-item theme-danger" href="#">Danger menu item</a>
+  </div>`} />
+
+## Placement
+
+Use `data-bs-placement` on the toggle element to control where the menu appears.
+
+- **Physical placements:** `top`, `bottom`, `left`, `right` — fixed directions regardless of text direction.
+- **Logical placements:** `start`, `end` — automatically flip based on RTL. In LTR mode, `start` becomes `left` and `end` becomes `right`. In RTL mode, they swap.
+
+All placements support `-start` and `-end` alignment modifiers (e.g., `bottom-start`, `end-end`).
+
+<MenuPlacementPlayground />
+
+### Responsive
+
+Change placement at different breakpoints using responsive prefixes. The syntax is `breakpoint:placement`, where breakpoint is one of `sm`, `md`, `lg`, `xl`, or `2xl`. Multiple breakpoints can be combined in a single attribute, space-separated.
+
+For example, `data-bs-placement="bottom-start md:bottom-end lg:end-start"` will:
+
+- Show the menu at `bottom-start` on small screens (default)
+- Switch to `bottom-end` at the `md` breakpoint
+- Switch to `right-start` at the `lg` breakpoint
+
+<Example class="d-flex gap-2" code={`<button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" data-bs-placement="bottom-start md:bottom-end" aria-expanded="false">
+    Bottom start → md:bottom-end
+  </button>
+  <div class="menu">
+    <a class="menu-item" href="#">Action</a>
+    <a class="menu-item" href="#">Another action</a>
+  </div>
+
+  <button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" data-bs-placement="bottom lg:right" aria-expanded="false">
+    Bottom → lg:right
+  </button>
+  <div class="menu">
+    <a class="menu-item" href="#">Action</a>
+    <a class="menu-item" href="#">Another action</a>
+  </div>
+
+  <button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" data-bs-placement="top-end md:right-start xl:bottom-start" aria-expanded="false">
+    Multi-breakpoint
+  </button>
+  <div class="menu">
+    <a class="menu-item" href="#">Action</a>
+    <a class="menu-item" href="#">Another action</a>
+  </div>`} />
+
+Resize your browser window to see the placement change at different breakpoints.
+
+## Menu items
+
+You can use `<a>` or `<button>` elements as menu items.
+
+<Callout>
+We use utility classes to display menus in our docs examples, but they're not required for your own use.
+</Callout>
+
+<Example code={`<div class="menu show position-static">
+    <button class="menu-item" type="button">Action</button>
+    <button class="menu-item" type="button">Another action</button>
+    <button class="menu-item" type="button">Something else here</button>
+  </div>`} />
+
+You can also create non-interactive menu items with `.menu-text`. Feel free to style further with custom CSS or text utilities.
+
+<Example code={`<div class="menu show position-static">
+    <span class="menu-text">Menu item text</span>
+    <a class="menu-item" href="#">Action</a>
+    <a class="menu-item" href="#">Another action</a>
+    <a class="menu-item" href="#">Something else here</a>
+  </div>`} />
+
+### Active
+
+Add `.active` to items in the menu to style them as the active selection. To convey the active state to assistive technologies, use the `aria-current` attribute — using the `page` value for the current page, or `true` for the current item in a set.
+
+<Example code={`<div class="menu show position-static">
+    <a class="menu-item" href="#">Regular link</a>
+    <a class="menu-item active" href="#" aria-current="true">Active link</a>
+    <a class="menu-item" href="#">Another link</a>
+  </div>`} />
+
+### Disabled
+
+Add `.disabled` to items in the menu to style them as disabled.
+
+<Example code={`<div class="menu show position-static">
+    <a class="menu-item" href="#">Regular link</a>
+    <a class="menu-item disabled" aria-disabled="true">Disabled link</a>
+    <a class="menu-item" href="#">Another link</a>
+  </div>`} />
+
+### Variants
+
+You can use the `theme-` prefix to apply a theme color to a menu item.
+
+<Example class="hstack gap-3" code={`<div class="menu show position-static">
+    <a class="menu-item theme-primary" href="#">Primary link</a>
+    <a class="menu-item theme-secondary" href="#">Secondary link</a>
+    <a class="menu-item theme-success" href="#">Success link</a>
+    <a class="menu-item theme-danger" href="#">Danger link</a>
+  </div>
+  <div class="menu show position-static">
+    <a class="menu-item active theme-primary" href="#">Primary link</a>
+    <a class="menu-item active theme-secondary" href="#">Secondary link</a>
+    <a class="menu-item active theme-success" href="#">Success link</a>
+    <a class="menu-item active theme-danger" href="#">Danger link</a>
+  </div>`} />
+
+### Icons
+
+Add `.menu-item-icon` directly to an `<svg>` to add an icon slot to menu items.
+
+<Example code={`<div class="menu show position-static">
+    <button class="menu-item" type="button">
+      <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="menu-item-icon fg-3" viewBox="0 0 16 16">
+        <path fill-rule="evenodd" d="M4 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2zm2-1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1zM2 5a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-1h1v1a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h1v1z"/>
+      </svg>
+      Copy
+    </button>
+    <button class="menu-item" type="button">
+      <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="menu-item-icon fg-3" viewBox="0 0 16 16">
+        <path d="M3.5 3.5c-.614-.884-.074-1.962.858-2.5L8 7.226 11.642 1c.932.538 1.472 1.616.858 2.5L8.81 8.61l1.556 2.661a2.5 2.5 0 1 1-.794.637L8 9.73l-1.572 2.177a2.5 2.5 0 1 1-.794-.637L7.19 8.61zm2.5 10a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0m7 0a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0"/>
+      </svg>
+      Cut
+    </button>
+    <hr class="menu-divider">
+    <button class="menu-item theme-danger" type="button">
+      <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="menu-item-icon" viewBox="0 0 16 16">
+        <path d="M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5M11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H1.5a.5.5 0 0 0 0 1h.538l.853 10.66A2 2 0 0 0 4.885 16h6.23a2 2 0 0 0 1.994-1.84l.853-10.66h.538a.5.5 0 0 0 0-1zm1.958 1-.846 10.58a1 1 0 0 1-.997.92h-6.23a1 1 0 0 1-.997-.92L3.042 3.5zm-7.487 1a.5.5 0 0 1 .528.47l.5 8.5a.5.5 0 0 1-.998.06L5 5.03a.5.5 0 0 1 .47-.53Zm5.058 0a.5.5 0 0 1 .47.53l-.5 8.5a.5.5 0 1 1-.998-.06l.5-8.5a.5.5 0 0 1 .528-.47M8 4.5a.5.5 0 0 1 .5.5v8.5a.5.5 0 0 1-1 0V5a.5.5 0 0 1 .5-.5"/>
+      </svg>
+      Delete
+    </button>
+  </div>`} />
+
+### Descriptions
+
+Use `.menu-item-content` for a flex column layout and `.menu-item-description` for secondary text below the main label.
+
+<Example code={`<div class="menu show position-static">
+    <button class="menu-item" type="button">
+      <span class="menu-item-content">
+        Publish now
+        <small class="menu-item-description">Make this page visible immediately</small>
+      </span>
+    </button>
+    <button class="menu-item" type="button">
+      <span class="menu-item-content">
+        Schedule
+        <small class="menu-item-description">Set a future publish date</small>
+      </span>
+    </button>
+  </div>`} />
+
+### Selected
+
+Add `.selected` to a `.menu-item` to indicate the current selection.
+
+<Example code={`<button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" aria-expanded="false">Select status</button>
+  <div class="menu">
+    <button class="menu-item selected" type="button">
+      <div class="menu-item-content">
+        Selected menu item
+        <small class="menu-item-description">Currently visible to users</small>
+      </div>
+      <svg class="menu-item-check" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 16 16"><path d="m2 7 4 5 8-8"/></svg>
+    </button>
+    <button class="menu-item" type="button">
+      <div class="menu-item-content">
+        Default menu item
+        <small class="menu-item-description">Not yet published</small>
+      </div>
+      <svg class="menu-item-check" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 16 16"><path d="m2 7 4 5 8-8"/></svg>
+    </button>
+  </div>
+
+  <button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" aria-expanded="false">Select status</button>
+  <div class="menu">
+    <button class="menu-item" type="button">
+      Default menu item
+      <svg class="menu-item-check" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 16 16"><path d="m2 7 4 5 8-8"/></svg>
+    </button>
+    <button class="menu-item selected" type="button">
+      Selected menu item
+      <svg class="menu-item-check" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 16 16"><path d="m2 7 4 5 8-8"/></svg>
+    </button>
+    <button class="menu-item" type="button">
+      Default menu item
+      <svg class="menu-item-check" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 16 16"><path d="m2 7 4 5 8-8"/></svg>
+    </button>
+  </div>`} />
+
+## Menu content
+
+### Headers
+
+Add a header to label sections of actions in any menu.
+
+<Example code={`<div class="menu show position-static">
+    <a class="menu-item" href="#">Action</a>
+    <a class="menu-item" href="#">Action</a>
+    <h6 class="menu-header">Menu header</h6>
+    <a class="menu-item" href="#">Another action</a>
+  </div>`} />
+
+### Dividers
+
+Separate groups of related menu items with a divider.
+
+<Example code={`<div class="menu show position-static">
+    <a class="menu-item" href="#">Action</a>
+    <a class="menu-item" href="#">Another action</a>
+    <a class="menu-item" href="#">Something else here</a>
+    <hr class="menu-divider">
+    <a class="menu-item" href="#">Separated link</a>
+  </div>`} />
+
+### Text
+
+Place any freeform text within a menu with text and use [margin]([[docsref:/utilities/margin]]) and [padding]([[docsref:/utilities/padding]]) utilities. Note that you'll likely need additional sizing styles to constrain the menu width.
+
+<Example code={`<div class="menu show position-static p-3 text-body-secondary"
+       style="--bs-menu-min-width: 240px;">
+    <p>
+      Some example text that's free-flowing within the menu.
+    </p>
+    <p class="mb-0">
+      And this is more example text.
+    </p>
+  </div>`} />
+
+### Forms
+
+Put a form within a menu, or make it into a menu, and use [margin]([[docsref:/utilities/margin]]) and [padding]([[docsref:/utilities/padding]]) utilities to give it the negative space you require.
+
+<Example code={`<div class="menu show position-static"
+       style="--bs-menu-min-width: 300px;">
+    <form class="d-flex flex-column gap-3 p-3">
+      <div>
+        <label for="exampleMenuFormEmail1" class="form-label">Email address</label>
+        <input type="email" class="form-control" id="exampleMenuFormEmail1" placeholder="email@example.com">
+      </div>
+      <div>
+        <label for="exampleMenuFormPassword1" class="form-label">Password</label>
+        <input type="password" class="form-control" id="exampleMenuFormPassword1" placeholder="Password">
+      </div>
+      <div class="checkgroup">
+        <div class="check">
+          <input type="checkbox" id="checkLabel" />
+          <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'>
+            <path class="checked" fill='none' stroke='currentcolor' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m4 8 3 3 5-5'/>
+            <path class="indeterminate" fill='none' stroke='currentcolor' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M5 8h6'/>
+          </svg>
+        </div>
+        <label for="checkLabel">Example new checkbox</label>
+      </div>
+      <div class="vstack gap-2">
+        <button type="submit" class="btn-solid theme-primary">Sign in</button>
+        <a class="btn-ghost theme-secondary" href="#">New around here? Sign up</a>
+        <a class="btn-ghost theme-secondary" href="#">Forgot password?</a>
+      </div>
+    </form>
+  </div>`} />
+
+## Scrollable menus
+
+Assign `--bs-menu-max-height` and `--bs-menu-overflow-y` custom properties to constrain the menu height and enable scrolling.
+
+<Example code={`<div class="menu show position-static" style="--bs-menu-max-height: 145px; --bs-menu-overflow-y: auto;">
+    <button class="menu-item" type="button">Item 1</button>
+    <button class="menu-item" type="button">Item 2</button>
+    <button class="menu-item" type="button">Item 3</button>
+    <button class="menu-item" type="button">Item 4</button>
+    <button class="menu-item" type="button">Item 5</button>
+    <button class="menu-item" type="button">Item 6</button>
+    <button class="menu-item" type="button">Item 7</button>
+    <button class="menu-item" type="button">Item 8</button>
+  </div>`} />
+
+You can also use the `.menu-scrollable` class to make the menu scrollable. This assumes a generally safe maximum height of `80dvh` and sets the overflow for you.
+
+## Submenus
+
+Create nested menus with the `.submenu` wrapper class. Submenus support hover and click activation, keyboard navigation, and viewport-aware positioning. On small screens (below `576px`), submenus stack over the parent menu with a back button instead of flying out to the side.
+
+Wrap a `.menu-item` trigger and a nested `.menu` inside a `.submenu` element.
+
+<Example code={`<button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" aria-expanded="false">
+    Submenus
+  </button>
+  <div class="menu">
+    <div class="submenu">
+      <button class="menu-item" type="button">File</button>
+      <div class="menu">
+        <a class="menu-item" href="#">New</a>
+        <a class="menu-item" href="#">Open</a>
+        <a class="menu-item" href="#">Save</a>
+      </div>
+    </div>
+    <div class="submenu">
+      <button class="menu-item" type="button">Edit</button>
+      <div class="menu">
+        <a class="menu-item" href="#">Cut</a>
+        <a class="menu-item" href="#">Copy</a>
+        <a class="menu-item" href="#">Paste</a>
+      </div>
+    </div>
+    <div class="submenu">
+      <button class="menu-item" type="button">View</button>
+      <div class="menu">
+        <a class="menu-item" href="#">Zoom In</a>
+        <a class="menu-item" href="#">Zoom Out</a>
+      </div>
+    </div>
+    <hr class="menu-divider">
+    <a class="menu-item" href="#">Preferences</a>
+  </div>`} />
+
+### Nested
+
+Submenus can be nested to multiple levels. Each level opens to the side and flips direction when there's not enough viewport space.
+
+<Example code={`<button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" aria-expanded="false">
+    Multi-level menu
+  </button>
+  <div class="menu">
+    <a class="menu-item" href="#">Level 1 action</a>
+    <div class="submenu">
+      <button class="menu-item" type="button">Level 1 submenu</button>
+      <div class="menu">
+        <a class="menu-item" href="#">Level 2 action</a>
+        <div class="submenu">
+          <button class="menu-item" type="button">Level 2 submenu</button>
+          <div class="menu">
+            <a class="menu-item" href="#">Level 3 action A</a>
+            <a class="menu-item" href="#">Level 3 action B</a>
+          </div>
+        </div>
+        <a class="menu-item" href="#">Another level 2</a>
+      </div>
+    </div>
+    <a class="menu-item" href="#">Another level 1</a>
+  </div>`} />
+
+## Menu options
+
+Use `data-bs-offset` or `data-bs-reference` to change the location of the menu. Offset is the distance from the trigger element in pixels. Reference is the element to reference the menu from.
+
+<Example code={`<div class="d-flex">
+    <div class="me-1">
+      <button type="button" class="btn-solid theme-secondary" data-bs-toggle="menu" aria-expanded="false" data-bs-offset="10,20">
+        Offset
+      </button>
+      <div class="menu">
+        <a class="menu-item" href="#">Action</a>
+        <a class="menu-item" href="#">Another action</a>
+        <a class="menu-item" href="#">Something else here</a>
+      </div>
+    </div>
+    <div class="btn-group">
+      <button type="button" class="btn-solid theme-secondary">Reference</button>
+      <button type="button" class="btn-solid theme-secondary menu-toggle-split" data-bs-toggle="menu" aria-expanded="false" data-bs-reference="parent">
+        <svg class="bi" width="16" height="16" aria-hidden="true"><use href="#chevron-expand" /></svg>
+        <span class="visually-hidden">Toggle Menu</span>
+      </button>
+      <div class="menu">
+        <a class="menu-item" href="#">Action</a>
+        <a class="menu-item" href="#">Another action</a>
+        <a class="menu-item" href="#">Something else here</a>
+        <hr class="menu-divider">
+        <a class="menu-item" href="#">Separated link</a>
+      </div>
+    </div>
+  </div>`} />
+
+### Auto close behavior
+
+By default, the menu is closed when clicking inside or outside the menu. You can use the `autoClose` option to change this behavior of the menu.
+
+<Example code={`<div class="btn-group">
+    <button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" data-bs-auto-close="true" aria-expanded="false">
+      Default menu
+    </button>
+    <div class="menu">
+      <a class="menu-item" href="#">Menu item</a>
+      <a class="menu-item" href="#">Menu item</a>
+      <a class="menu-item" href="#">Menu item</a>
+    </div>
+  </div>
+
+  <div class="btn-group">
+    <button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" data-bs-auto-close="inside" aria-expanded="false">
+      Clickable inside
+    </button>
+    <div class="menu">
+      <a class="menu-item" href="#">Menu item</a>
+      <a class="menu-item" href="#">Menu item</a>
+      <a class="menu-item" href="#">Menu item</a>
+    </div>
+  </div>
+
+  <div class="btn-group">
+    <button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" data-bs-auto-close="outside" aria-expanded="false">
+      Clickable outside
+    </button>
+    <div class="menu">
+      <a class="menu-item" href="#">Menu item</a>
+      <a class="menu-item" href="#">Menu item</a>
+      <a class="menu-item" href="#">Menu item</a>
+    </div>
+  </div>
+
+  <div class="btn-group">
+    <button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" data-bs-auto-close="false" aria-expanded="false">
+      Manual close
+    </button>
+    <div class="menu">
+      <a class="menu-item" href="#">Menu item</a>
+      <a class="menu-item" href="#">Menu item</a>
+      <a class="menu-item" href="#">Menu item</a>
+    </div>
+  </div>`} />
+
+## Accessibility
+
+The [<abbr title="Web Accessibility Initiative">WAI</abbr> <abbr title="Accessible Rich Internet Applications">ARIA</abbr>](https://www.w3.org/TR/wai-aria/) standard defines an actual [`role="menu"` widget](https://www.w3.org/TR/wai-aria/#menu), but this is specific to application-like menus which trigger actions or functions. <abbr title="Accessible Rich Internet Applications">ARIA</abbr> menus can only contain menu items, checkbox menu items, radio button menu items, radio button groups, and sub-menus.
+
+Bootstrap's menus, on the other hand, are designed to be generic and applicable to a variety of situations and markup structures. For instance, it is possible to create menus that contain additional inputs and form controls, such as search fields or login forms. For this reason, Bootstrap does not expect (nor automatically add) any of the `role` and `aria-` attributes required for true <abbr title="Accessible Rich Internet Applications">ARIA</abbr> menus. Authors will have to include these more specific attributes themselves.
+
+### Keyboard navigation
+
+Menus include built-in keyboard support for navigating menu items.
+
+<BsTable>
+| Key | Action |
+| --- | --- |
+| `↓` / `↑` | Navigate to next/previous menu item |
+| `→` | Enter submenu (or `←` in RTL) |
+| `←` | Exit submenu and return to parent (or `→` in RTL) |
+| `Enter` / `Space` | Activate focused item or open submenu |
+| `Esc` | Close the menu |
+| `Home` / `End` | Jump to first/last menu item |
+| `Tab` | Move focus and close the menu |
+</BsTable>
+
+## CSS
+
+### Variables
+
+<CSSVariables component="Menu" className="menu" />
+
+<ScssDocs name="menu-tokens" file="scss/_menu.scss" />
+
+<Callout>
+Menu items include at least one variable that is not set on `.menu`. This allows you to provide a new value while Bootstrap defaults to a fallback value.
+
+- `--bs-menu-item-border-radius`
+</Callout>
+
+## Usage
+
+Via data attributes or JavaScript, the menu plugin toggles hidden content (menus) by toggling the `.show` class on the `.menu`. The `data-bs-toggle="menu"` attribute is relied on for closing menus at an application level, so it's a good idea to always use it.
+
+<Callout>
+On touch-enabled devices, opening a menu adds empty `mouseover` handlers to the immediate children of the `<body>` element. This admittedly ugly hack is necessary to work around a [quirk in iOS' event delegation](https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html), which would otherwise prevent a tap anywhere outside of the menu from triggering the code that closes the menu. Once the menu is closed, these additional empty `mouseover` handlers are removed.
+</Callout>
+
+### Via data attributes
+
+Add `data-bs-toggle="menu"` to a link or button to toggle a menu.
+
+```html
+<button type="button" data-bs-toggle="menu" aria-expanded="false">
+  Menu trigger
+</button>
+<div class="menu">
+  ...
+</div>
+```
+
+### Via JavaScript
+
+<Callout type="warning">
+Menus must have `data-bs-toggle="menu"` on their trigger element, regardless of whether you call your menu via JavaScript or use the data-api.
+</Callout>
+
+Call the menus via JavaScript:
+
+```js
+const menuElementList = document.querySelectorAll('[data-bs-toggle="menu"]')
+const menuList = [...menuElementList].map(menuToggleEl => new bootstrap.Menu(menuToggleEl))
+```
+
+### Dependencies
+
+The menu plugin requires the following JavaScript files if you're building Bootstrap's JS from source:
+
+<BsTable>
+| File | Description |
+| --- | --- |
+| `js/src/menu.js` | Main menu component |
+| `js/src/base-component.js` | Base component class |
+| `js/src/dom/event-handler.js` | Event handling utilities |
+| `js/src/dom/manipulator.js` | Data attribute manipulation |
+| `js/src/dom/selector-engine.js` | DOM selector utilities |
+| `js/src/util/index.js` | Core utility functions |
+| `js/src/util/floating-ui.js` | Responsive placement utilities |
+| `@floating-ui/dom` | Third-party positioning library |
+</BsTable>
+
+### Options
+
+<JsDataAttributes />
+
+<BsTable>
+| Name | Type | Default | Description |
+| --- | --- | --- | --- |
+| `autoClose` | boolean, string | `true` | Configure the auto close behavior of the menu: <ul class="my-2"><li>`true` - the menu will be closed by clicking outside or inside the menu.</li><li>`false` - the menu will be closed by clicking the toggle button and manually calling `hide` or `toggle` method. (Also will not be closed by pressing <kbd>Esc</kbd> key)</li><li>`'inside'` - the menu will be closed (only) by clicking inside the menu.</li> <li>`'outside'` - the menu will be closed (only) by clicking outside the menu.</li></ul> Note: the menu can always be closed with the <kbd>Esc</kbd> key. |
+| `boundary` | string, element | `'clippingParents'` | Overflow constraint boundary of the menu (applies only to the shift middleware). By default it's `clippingParents` and can accept an HTMLElement reference (via JavaScript only). For more information refer to Floating UI's [shift docs](https://floating-ui.com/docs/shift). |
+| `container` | string, element, boolean | `false` | Appends the menu to a specific element when shown. Use `'body'` or `true` to append to the document body, which helps escape containers with `overflow: hidden`. The menu is moved back to its original position when hidden. |
+| `display` | string | `'dynamic'` | By default, we use Floating UI for dynamic positioning. Disable this with `static`. |
+| `offset` | array, string, function | `[0, 2]` | Offset of the menu relative to its target. You can pass a string in data attributes with comma separated values like: `data-bs-offset="10,20"`. When a function is used to determine the offset, it is called with an object containing the placement, the reference, and floating rects as its first argument. The triggering element DOM node is passed as the second argument. The function must return an array with two numbers: [skidding, distance]. For more information refer to Floating UI's [offset docs](https://floating-ui.com/docs/offset). |
+| `floatingConfig` | null, object, function | `null` | To change Bootstrap's default Floating UI config, see [Floating UI's configuration](https://floating-ui.com/docs/computePosition). When a function is used to create the Floating UI configuration, it's called with an object that contains the Bootstrap's default Floating UI configuration. It helps you use and merge the default with your own configuration. The function must return a configuration object for Floating UI. |
+| `placement` | string | `'bottom-start'` | Placement of the menu. Physical placements: `'top'`, `'bottom'`, `'left'`, `'right'`. Logical placements (RTL-aware): `'start'`, `'end'`. All support alignment modifiers: `-start`, `-end`. Supports responsive prefixes like `'bottom-start md:end'`. |
+| `reference` | string, element, object | `'toggle'` | Reference element of the menu. Accepts the values of `'toggle'`, `'parent'`, an HTMLElement reference or an object providing `getBoundingClientRect`. For more information refer to Floating UI's [virtual elements docs](https://floating-ui.com/docs/virtual-elements). |
+| `strategy` | string | `'absolute'` | Positioning strategy for the menu. Use `'absolute'` for default positioning, or `'fixed'` to escape containers with `overflow: hidden`. For more information refer to Floating UI's [strategy docs](https://floating-ui.com/docs/computePosition#strategy). |
+| `submenuTrigger` | string | `'both'` | How submenus are triggered. Use `'click'` for click only, `'hover'` for hover only, or `'both'` for both click and hover activation. |
+| `submenuDelay` | number | `100` | Delay in milliseconds before closing a submenu when the mouse leaves. Provides a grace period for diagonal mouse movement toward the submenu. |
+</BsTable>
+
+#### Using function with `floatingConfig`
+
+```js
+const menu = new bootstrap.Menu(element, {
+  floatingConfig(defaultBsFloatingConfig) {
+    // const newFloatingConfig = {...}
+    // use defaultBsFloatingConfig if needed...
+    // return newFloatingConfig
+  }
+})
+```
+
+### Methods
+
+<BsTable>
+| Method | Description |
+| --- | --- |
+| `dispose` | Destroys an element's menu. (Removes stored data on the DOM element) |
+| `getInstance` | Static method which allows you to get the menu instance associated to a DOM element, you can use it like this: `bootstrap.Menu.getInstance(element)`. |
+| `getOrCreateInstance` | Static method which returns a menu instance associated to a DOM element or create a new one in case it wasn't initialized. You can use it like this: `bootstrap.Menu.getOrCreateInstance(element)`. |
+| `hide` | Hides the menu of a given navbar or tabbed navigation. |
+| `show` | Shows the menu of a given navbar or tabbed navigation. |
+| `toggle` | Toggles the menu of a given navbar or tabbed navigation. |
+| `update` | Updates the position of an element's menu. |
+</BsTable>
+
+### Events
+
+All menu events are fired at the toggling element and then bubbled up. So you can also add event listeners on the `.menu`'s parent element. `hide.bs.menu` and `hidden.bs.menu` events have a `clickEvent` property (only when the original Event type is `click`) that contains an Event Object for the click event.
+
+<BsTable>
+| Event type | Description |
+| --- | --- |
+| `hide.bs.menu` | Fires immediately when the `hide` instance method has been called. |
+| `hidden.bs.menu` | Fired when the menu has finished being hidden from the user and CSS transitions have completed. |
+| `show.bs.menu` | Fires immediately when the `show` instance method is called. |
+| `shown.bs.menu` | Fired when the menu has been made visible to the user and CSS transitions have completed. |
+</BsTable>
+
+```js
+const myMenu = document.getElementById('myMenu')
+myMenu.addEventListener('show.bs.menu', event => {
+  // do something...
+})
+```
index 542e27efa146877ba5ba96971131893b585edde2..f3417dc10484bf4efdc59cbb46db4712de1d7eb5 100644 (file)
@@ -1,18 +1,18 @@
 ---
 title: Nav overflow
-description: Automatically collapse navigation items into a "More" dropdown when space is limited using the Priority+ pattern.
+description: Automatically collapse navigation items into a "More" menu when space is limited using the Priority+ pattern.
 toc: true
 ---
 
 ## How it works
 
-The nav overflow component (also known as the "Priority+" pattern) automatically detects when navigation items don't fit within their container and moves them into a dropdown menu. This provides a responsive navigation experience without requiring different markup for different screen sizes.
+The nav overflow component (also known as the "Priority+" pattern) automatically detects when navigation items don't fit within their container and moves them into a menu. This provides a responsive navigation experience without requiring different markup for different screen sizes.
 
 Here's what you need to know before getting started:
 
 - Add `data-bs-toggle="nav-overflow"` to any `.nav` element to enable automatic overflow detection.
 - **Responds to container size**, not viewport size. The component uses a ResizeObserver to monitor its own width, so it works perfectly in embedded contexts, documentation examples, and responsive containers.
-- Overflow items are cloned into a "More" dropdown menu while the originals are hidden.
+- Overflow items are cloned into a "More" menu while the originals are hidden.
 - Works with all nav styles: default, pills, tabs, and underline.
 - Active and disabled states are preserved in the overflow menu.
 
@@ -20,7 +20,7 @@ Here's what you need to know before getting started:
 
 ## Examples
 
-Add `data-bs-toggle="nav-overflow"` to your nav element. When items don't fit, they'll automatically move to a "More" dropdown. Drag the right edge of the container below to see how nav items automatically move to the "More" dropdown as space becomes limited.
+Add `data-bs-toggle="nav-overflow"` to your nav element. When items don't fit, they'll automatically move to a "More" menu. Drag the right edge of the container below to see how nav items automatically move to the "More" menu as space becomes limited.
 
 <ResizableExample code={`<ul class="nav nav-pills" data-bs-toggle="nav-overflow">
     <li class="nav-item">
index 40bad71b3790d69a16f21d12f72d1b0280c79bbf..92696310168266931626ad4b397e2ac26530c9b7 100644 (file)
@@ -31,16 +31,16 @@ Here's a navbar that includes most supported sub-components and a responsive rig
             <li class="nav-item">
               <a class="nav-link" href="#">Link</a>
             </li>
-            <li class="nav-item dropdown">
-              <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-container="body" aria-expanded="false">
-                Dropdown
+            <li class="nav-item">
+              <a class="nav-link" href="#" role="button" data-bs-toggle="menu" aria-expanded="false">
+                Menu
               </a>
-              <ul class="dropdown-menu">
-                <li><a class="dropdown-item" href="#">Action</a></li>
-                <li><a class="dropdown-item" href="#">Another action</a></li>
-                <li><hr class="dropdown-divider"></li>
-                <li><a class="dropdown-item" href="#">Something else here</a></li>
-              </ul>
+              <div class="menu">
+                <a class="menu-item" href="#">Action</a>
+                <a class="menu-item" href="#">Another action</a>
+                <hr class="menu-divider">
+                <a class="menu-item" href="#">Something else here</a>
+              </div>
             </li>
             <li class="nav-item">
               <a class="nav-link disabled" aria-disabled="true">Disabled</a>
@@ -75,7 +75,7 @@ Here's what you need to know before getting started with the navbar:
 Navbars come with built-in support for a handful of sub-components. Choose from the following as needed:
 
 - `.navbar-brand` for your company, product, or project name.
-- `.navbar-nav` for a full-height and lightweight navigation (including support for dropdowns).
+- `.navbar-nav` for a full-height and lightweight navigation (including support for menus).
 - `.navbar-toggler` for use with our offcanvas plugin and other [navigation toggling](#responsive-behaviors) behaviors.
 - Flex and spacing utilities for any form controls and actions.
 - `.navbar-text` for adding vertically centered strings of text.
@@ -191,17 +191,17 @@ And because we use classes for our navs, you can avoid the list-based approach e
     </div>
   </nav>`} />
 
-You can also use dropdowns in your navbar. Dropdown menus require a wrapping element for positioning, so be sure to use separate and nested elements for `.nav-item` and `.nav-link` as shown below.
+You can also use menus in your navbar. Menus require a wrapping element for positioning, so be sure to use separate and nested elements for `.nav-item` and `.nav-link` as shown below.
 
 <ResizableExample code={`<nav class="navbar navbar-expand-lg bg-1 fg-2">
     <div class="container-fluid">
       <a class="navbar-brand" href="#">Navbar</a>
-      <button class="btn-icon navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
+      <button class="btn-icon navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#navbarNavMenu" aria-controls="navbarNavMenu" aria-expanded="false" aria-label="Toggle navigation">
         <svg class="navbar-toggler-icon" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round"><path d="M1 3.5h14M1 8h14M1 12.5h14"/></svg>
       </button>
-      <div class="offcanvas offcanvas-end" tabindex="-1" id="navbarNavDropdown" aria-labelledby="navbarNavDropdownLabel">
+      <div class="offcanvas offcanvas-end" tabindex="-1" id="navbarNavMenu" aria-labelledby="navbarNavMenuLabel">
         <div class="offcanvas-header">
-          <h5 class="offcanvas-title" id="navbarNavDropdownLabel">Menu</h5>
+          <h5 class="offcanvas-title" id="navbarNavMenuLabel">Menu</h5>
           <CloseButton dismiss="offcanvas" />
         </div>
         <div class="offcanvas-body">
@@ -215,15 +215,15 @@ You can also use dropdowns in your navbar. Dropdown menus require a wrapping ele
             <li class="nav-item">
               <a class="nav-link" href="#">Pricing</a>
             </li>
-            <li class="nav-item dropdown">
-              <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-container="body" aria-expanded="false">
-                Dropdown link
+            <li class="nav-item">
+              <a class="nav-link" href="#" role="button" data-bs-toggle="menu" aria-expanded="false">
+                Menu link
               </a>
-              <ul class="dropdown-menu">
-                <li><a class="dropdown-item" href="#">Action</a></li>
-                <li><a class="dropdown-item" href="#">Another action</a></li>
-                <li><a class="dropdown-item" href="#">Something else here</a></li>
-              </ul>
+              <div class="menu">
+                <a class="menu-item" href="#">Action</a>
+                <a class="menu-item" href="#">Another action</a>
+                <a class="menu-item" href="#">Something else here</a>
+              </div>
             </li>
           </ul>
         </div>
@@ -346,16 +346,16 @@ To make a navbar dark, add `data-bs-theme="dark"` to the `.navbar` element.
             <li class="nav-item">
               <a class="nav-link" href="#">Link</a>
             </li>
-            <li class="nav-item dropdown">
-              <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-container="body" aria-expanded="false">
-                Dropdown
+            <li class="nav-item">
+              <a class="nav-link" href="#" role="button" data-bs-toggle="menu" aria-expanded="false">
+                Menu
               </a>
-              <ul class="dropdown-menu">
-                <li><a class="dropdown-item" href="#">Action</a></li>
-                <li><a class="dropdown-item" href="#">Another action</a></li>
-                <li><hr class="dropdown-divider"></li>
-                <li><a class="dropdown-item" href="#">Something else here</a></li>
-              </ul>
+              <div class="menu">
+                <a class="menu-item" href="#">Action</a>
+                <a class="menu-item" href="#">Another action</a>
+                <hr class="menu-divider">
+                <a class="menu-item" href="#">Something else here</a>
+              </div>
             </li>
             <li class="nav-item">
               <a class="nav-link disabled" aria-disabled="true">Disabled</a>
@@ -372,6 +372,27 @@ To make a navbar dark, add `data-bs-theme="dark"` to the `.navbar` element.
     </div>
   </nav>`} />
 
+## Translucent navbar
+
+Add `.navbar-translucent` to blur and saturate the background of a navbar. This works well for navbars positioned over content, such as fixed or sticky navbars.
+
+<Example code={`<nav class="navbar navbar-translucent navbar-expand-md" data-bs-theme="dark">
+    <div class="container-fluid">
+      <a class="navbar-brand" href="#">Navbar</a>
+      <ul class="navbar-nav">
+        <li class="nav-item">
+          <a class="nav-link active" aria-current="page" href="#">Home</a>
+        </li>
+        <li class="nav-item">
+          <a class="nav-link" href="#">Features</a>
+        </li>
+        <li class="nav-item">
+          <a class="nav-link" href="#">Pricing</a>
+        </li>
+      </ul>
+    </div>
+  </nav>`} />
+
 ## Color schemes
 
 Navbar themes are easier than ever thanks to Bootstrap's combination of Sass and CSS variables. The default is our "light navbar" for use with light background colors, but you can also apply `data-bs-theme="dark"` to the `.navbar` parent for dark background colors. Then, customize with `.bg-*` and additional utilities.
index 6bb6db15fda0401db671ca14f42e4ff6f5b7f7e1..f613d3e8afc4d72089bce3d65713ff5e8d61fa3a 100644 (file)
@@ -39,18 +39,18 @@ Classes are used throughout, so your markup can be super flexible. Use `<ul>`s l
     <a class="nav-link disabled" aria-disabled="true">Disabled</a>
   </nav>`} />
 
-Where appropriate, you can also use `<button>` elements instead of `<a>` elements for the nav links. You can even mix and match—for example, by using buttons for dropdowns.
+Where appropriate, you can also use `<button>` elements instead of `<a>` elements for the nav links. You can even mix and match—for example, by using buttons for menus.
 
 <Example code={`<nav class="nav">
     <a class="nav-link active" aria-current="page" href="#">Active</a>
     <a class="nav-link" href="#">Link</a>
-    <button class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</button>
-    <ul class="dropdown-menu">
-      <li><a class="dropdown-item" href="#">Action</a></li>
-      <li><a class="dropdown-item" href="#">Another action</a></li>
-      <li><hr class="dropdown-divider"></li>
-      <li><a class="dropdown-item" href="#">Something else here</a></li>
-    </ul>
+    <button class="nav-link" data-bs-toggle="menu" href="#" role="button" aria-expanded="false">Menu</button>
+    <div class="menu">
+      <a class="menu-item" href="#">Action</a>
+      <a class="menu-item" href="#">Another action</a>
+      <hr class="menu-divider">
+      <a class="menu-item" href="#">Something else here</a>
+    </div>
     <a class="nav-link disabled" aria-disabled="true">Disabled</a>
   </nav>`} />
 
@@ -254,25 +254,25 @@ If you’re using navs to provide a navigation bar, be sure to add a `role="navi
 
 Note that navigation bars, even if visually styled as tabs with the `.nav-tabs` class, should **not** be given `role="tablist"`, `role="tab"` or `role="tabpanel"` attributes. These are only appropriate for dynamic tabbed interfaces, as described in the [ARIA Authoring Practices Guide tabs pattern](https://www.w3.org/WAI/ARIA/apg/patterns/tabpanel/). See [JavaScript behavior](#javascript-behavior) for dynamic tabbed interfaces in this section for an example. The `aria-current` attribute is not necessary on dynamic tabbed interfaces since our JavaScript handles the selected state by adding `aria-selected="true"` on the active tab.
 
-## Using dropdowns
+## Using menus
 
-Add dropdown menus with a little extra HTML and the [dropdowns JavaScript plugin]([[docsref:/components/dropdowns#usage]]).
+Add menus with a little extra HTML and the [menus JavaScript plugin]([[docsref:/components/menus#usage]]).
 
-### Tabs with dropdowns
+### Tabs with menus
 
 <Example code={`<ul class="nav nav-tabs">
     <li class="nav-item">
       <a class="nav-link active" aria-current="page" href="#">Active</a>
     </li>
-    <li class="nav-item dropdown">
-      <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a>
-      <ul class="dropdown-menu">
-        <li><a class="dropdown-item" href="#">Action</a></li>
-        <li><a class="dropdown-item" href="#">Another action</a></li>
-        <li><a class="dropdown-item" href="#">Something else here</a></li>
-        <li><hr class="dropdown-divider"></li>
-        <li><a class="dropdown-item" href="#">Separated link</a></li>
-      </ul>
+    <li class="nav-item">
+      <a class="nav-link" data-bs-toggle="menu" href="#" role="button" aria-expanded="false">Menu</a>
+      <div class="menu">
+        <a class="menu-item" href="#">Action</a>
+        <a class="menu-item" href="#">Another action</a>
+        <a class="menu-item" href="#">Something else here</a>
+        <hr class="menu-divider">
+        <a class="menu-item" href="#">Separated link</a>
+      </div>
     </li>
     <li class="nav-item">
       <a class="nav-link" href="#">Link</a>
@@ -282,21 +282,21 @@ Add dropdown menus with a little extra HTML and the [dropdowns JavaScript plugin
     </li>
   </ul>`} />
 
-### Pills with dropdowns
+### Pills with menus
 
 <Example code={`<ul class="nav nav-pills">
     <li class="nav-item">
       <a class="nav-link active" aria-current="page" href="#">Active</a>
     </li>
-    <li class="nav-item dropdown">
-      <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a>
-      <ul class="dropdown-menu">
-        <li><a class="dropdown-item" href="#">Action</a></li>
-        <li><a class="dropdown-item" href="#">Another action</a></li>
-        <li><a class="dropdown-item" href="#">Something else here</a></li>
-        <li><hr class="dropdown-divider"></li>
-        <li><a class="dropdown-item" href="#">Separated link</a></li>
-      </ul>
+    <li class="nav-item">
+      <a class="nav-link" data-bs-toggle="menu" href="#" role="button" aria-expanded="false">Menu</a>
+      <div class="menu">
+        <a class="menu-item" href="#">Action</a>
+        <a class="menu-item" href="#">Another action</a>
+        <a class="menu-item" href="#">Something else here</a>
+        <hr class="menu-divider">
+        <a class="menu-item" href="#">Separated link</a>
+      </div>
     </li>
     <li class="nav-item">
       <a class="nav-link" href="#">Link</a>
@@ -547,7 +547,7 @@ In general, to facilitate keyboard navigation, it’s recommended to make the ta
 </Callout>
 
 <Callout type="danger">
-The tab JavaScript plugin **does not** support tabbed interfaces that contain dropdown menus, as these cause both usability and accessibility issues. From a usability perspective, the fact that the currently displayed tab’s trigger element is not immediately visible (as it’s inside the closed dropdown menu) can cause confusion. From an accessibility point of view, there is currently no sensible way to map this sort of construct to a standard WAI ARIA pattern, meaning that it cannot be easily made understandable to users of assistive technologies.
+The tab JavaScript plugin **does not** support tabbed interfaces that contain menus, as these cause both usability and accessibility issues. From a usability perspective, the fact that the currently displayed tab’s trigger element is not immediately visible (as it’s inside the closed menu) can cause confusion. From an accessibility point of view, there is currently no sensible way to map this sort of construct to a standard WAI ARIA pattern, meaning that it cannot be easily made understandable to users of assistive technologies.
 </Callout>
 
 ### Using data attributes
index 6022ef6edf18b4b73a5e1adb874ef88778130d1c..2625dc0704ce416023dde99ea9ad0977a87959cb 100644 (file)
@@ -57,15 +57,15 @@ You can use a link with the `href` attribute, or a button with the `data-bs-targ
       <div>
         Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc.
       </div>
-      <div class="dropdown mt-3">
-        <button class="btn-solid theme-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown">
-          Dropdown button
+      <div class="mt-3">
+        <button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu">
+          Menu
         </button>
-        <ul class="dropdown-menu">
-          <li><a class="dropdown-item" href="#">Action</a></li>
-          <li><a class="dropdown-item" href="#">Another action</a></li>
-          <li><a class="dropdown-item" href="#">Something else here</a></li>
-        </ul>
+        <div class="menu">
+          <a class="menu-item" href="#">Action</a>
+          <a class="menu-item" href="#">Another action</a>
+          <a class="menu-item" href="#">Something else here</a>
+        </div>
       </div>
     </div>
   </div>`} />
@@ -136,6 +136,24 @@ Change the appearance of offcanvases with utilities to better match them to diff
     </div>
   </div>`} />
 
+## Translucent offcanvas
+
+Add `.offcanvas-translucent` to the offcanvas panel to blur and saturate the background. This makes the panel semi-transparent so content behind it shows through.
+
+<Example code={`<button class="btn-solid theme-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasTranslucent" aria-controls="offcanvasTranslucent">
+    Toggle translucent offcanvas
+  </button>
+
+  <div class="offcanvas offcanvas-start offcanvas-translucent" tabindex="-1" id="offcanvasTranslucent" aria-labelledby="offcanvasTranslucentLabel">
+    <div class="offcanvas-header">
+      <h5 class="offcanvas-title" id="offcanvasTranslucentLabel">Translucent offcanvas</h5>
+      <CloseButton dismiss="offcanvas" />
+    </div>
+    <div class="offcanvas-body">
+      Content for the translucent offcanvas goes here. The background blurs and saturates whatever is behind it.
+    </div>
+  </div>`} />
+
 ## Responsive
 
 Responsive offcanvas classes hide content outside the viewport from a specified breakpoint and down. Above that breakpoint, the contents within will behave as usual. For example, `.offcanvas-lg` hides content in an offcanvas below the `lg` breakpoint, but shows the content above the `lg` breakpoint. Responsive offcanvas classes are available for each breakpoint.
index b7d5192c4fc938092bd8ef79883646bacf06379c..7f14327c0f0c582239c81565c8c735a8e786a12f 100644 (file)
@@ -20,7 +20,7 @@ Scrollspy toggles the `.active` class on anchor (`<a>`) elements when the elemen
 
 ### Navbar
 
-Scroll the area below the navbar and watch the active class change. Open the dropdown menu and watch the dropdown items be highlighted as well.
+Scroll the area below the navbar and watch the active class change. Open the menu and watch the menu items be highlighted as well.
 
 <Example showMarkup={false} code={`<nav id="navbar-example2" class="navbar bg-1 px-3 mb-3 rounded-2">
     <a class="navbar-brand" href="#">Navbar</a>
@@ -31,14 +31,14 @@ Scroll the area below the navbar and watch the active class change. Open the dro
       <li class="nav-item">
         <a class="nav-link" href="#scrollspyHeading2">Second</a>
       </li>
-      <li class="nav-item dropdown">
-        <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a>
-        <ul class="dropdown-menu">
-          <li><a class="dropdown-item" href="#scrollspyHeading3">Third</a></li>
-          <li><a class="dropdown-item" href="#scrollspyHeading4">Fourth</a></li>
-          <li><hr class="dropdown-divider"></li>
-          <li><a class="dropdown-item" href="#scrollspyHeading5">Fifth</a></li>
-        </ul>
+      <li class="nav-item">
+        <a class="nav-link" data-bs-toggle="menu" href="#" role="button" aria-expanded="false">Menu</a>
+        <div class="menu">
+          <a class="menu-item" href="#scrollspyHeading3">Third</a>
+          <a class="menu-item" href="#scrollspyHeading4">Fourth</a>
+          <hr class="menu-divider">
+          <a class="menu-item" href="#scrollspyHeading5">Fifth</a>
+        </div>
       </li>
     </ul>
   </nav>
@@ -65,14 +65,14 @@ Scroll the area below the navbar and watch the active class change. Open the dro
     <li class="nav-item">
       <a class="nav-link" href="#scrollspyHeading2">Second</a>
     </li>
-    <li class="nav-item dropdown">
-      <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a>
-      <ul class="dropdown-menu">
-        <li><a class="dropdown-item" href="#scrollspyHeading3">Third</a></li>
-        <li><a class="dropdown-item" href="#scrollspyHeading4">Fourth</a></li>
-        <li><hr class="dropdown-divider"></li>
-        <li><a class="dropdown-item" href="#scrollspyHeading5">Fifth</a></li>
-      </ul>
+    <li class="nav-item">
+      <a class="nav-link" data-bs-toggle="menu" href="#" role="button" aria-expanded="false">Menu</a>
+      <div class="menu">
+        <a class="menu-item" href="#scrollspyHeading3">Third</a>
+        <a class="menu-item" href="#scrollspyHeading4">Fourth</a>
+        <hr class="menu-divider">
+        <a class="menu-item" href="#scrollspyHeading5">Fifth</a>
+      </div>
     </li>
   </ul>
 </nav>
index d3a14a30275ef575fc1352da77e81f813c12893f..f029103d3084c870deaaf840c419013ce7618e3b 100644 (file)
@@ -99,6 +99,20 @@ Toasts are slightly translucent to blend in with what’s below them.
     </div>
   </div>`} />
 
+Add `.toast-translucent` to enhance the translucency with a backdrop blur and saturation filter.
+
+<Example class="bg-dark" code={`<div class="toast toast-translucent" role="alert" aria-live="assertive" aria-atomic="true">
+    <div class="toast-header">
+      <Placeholder width="20" height="20" background="#007aff" class="rounded me-2" text={false} title={false} />
+      <strong class="me-auto">Bootstrap</strong>
+      <small class="text-body-secondary">11 mins ago</small>
+      <CloseButton dismiss="toast" />
+    </div>
+    <div class="toast-body">
+      Hello, world! This is a translucent toast message.
+    </div>
+  </div>`} />
+
 ### Stacking
 
 You can stack toasts by wrapping them in a toast container, which will vertically add some spacing.
index 36a5846002bd2c2d0245caadb8bef22796241163..62c36ad44acec2683f679f92639c717a63ffc87b 100644 (file)
@@ -552,7 +552,7 @@ Responsive tables allow tables to be scrolled horizontally with ease. Make any t
 <Callout type="warning">
 ##### Vertical clipping/truncation
 
-Responsive tables make use of `overflow-y: hidden`, which clips off any content that goes beyond the bottom or top edges of the table. In particular, this can clip off dropdown menus and other third-party widgets.
+Responsive tables make use of `overflow-y: hidden`, which clips off any content that goes beyond the bottom or top edges of the table. In particular, this can clip off menus and other third-party widgets.
 </Callout>
 
 ### Always responsive
index bb76ac5d25be0056650a825cde1609e96591c328..9d4a54d10d680fba8107b3ab96abd27cac2c3f85 100644 (file)
@@ -18,34 +18,34 @@ Alternatively, you can also switch to a media query implementation thanks to our
 
 ## Example
 
-For example, to change the color mode of a dropdown menu, add `data-bs-theme="light"` or `data-bs-theme="dark"` to the parent `.dropdown`. Now, no matter the global color mode, these dropdowns will display with the specified theme value.
+For example, to change the color mode of a menu, add `data-bs-theme="light"` or `data-bs-theme="dark"` to the parent element. Now, no matter the global color mode, these menus will display with the specified theme value.
 
-<Example class="d-flex justify-content-between" code={`<div class="dropdown" data-bs-theme="light">
-    <button class="btn-solid theme-secondary dropdown-toggle" type="button" id="dropdownMenuButtonLight" data-bs-toggle="dropdown" aria-expanded="false">
-      Default dropdown
+<Example class="d-flex justify-content-between" code={`<div data-bs-theme="light">
+    <button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" aria-expanded="false">
+      Default menu
     </button>
-    <ul class="dropdown-menu" aria-labelledby="dropdownMenuButtonLight">
-      <li><a class="dropdown-item active" href="#">Action</a></li>
-      <li><a class="dropdown-item" href="#">Action</a></li>
-      <li><a class="dropdown-item" href="#">Another action</a></li>
-      <li><a class="dropdown-item" href="#">Something else here</a></li>
-      <li><hr class="dropdown-divider"></li>
-      <li><a class="dropdown-item" href="#">Separated link</a></li>
-    </ul>
+    <div class="menu">
+      <a class="menu-item active" href="#">Action</a>
+      <a class="menu-item" href="#">Action</a>
+      <a class="menu-item" href="#">Another action</a>
+      <a class="menu-item" href="#">Something else here</a>
+      <hr class="menu-divider">
+      <a class="menu-item" href="#">Separated link</a>
+    </div>
   </div>
 
-  <div class="dropdown" data-bs-theme="dark">
-    <button class="btn-solid theme-secondary dropdown-toggle" type="button" id="dropdownMenuButtonDark" data-bs-toggle="dropdown" aria-expanded="false">
-      Dark dropdown
+  <div data-bs-theme="dark">
+    <button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" aria-expanded="false">
+      Dark menu
     </button>
-    <ul class="dropdown-menu" aria-labelledby="dropdownMenuButtonDark">
-      <li><a class="dropdown-item active" href="#">Action</a></li>
-      <li><a class="dropdown-item" href="#">Action</a></li>
-      <li><a class="dropdown-item" href="#">Another action</a></li>
-      <li><a class="dropdown-item" href="#">Something else here</a></li>
-      <li><hr class="dropdown-divider"></li>
-      <li><a class="dropdown-item" href="#">Separated link</a></li>
-    </ul>
+    <div class="menu">
+      <a class="menu-item active" href="#">Action</a>
+      <a class="menu-item" href="#">Action</a>
+      <a class="menu-item" href="#">Another action</a>
+      <a class="menu-item" href="#">Something else here</a>
+      <hr class="menu-divider">
+      <a class="menu-item" href="#">Separated link</a>
+    </div>
   </div>`} />
 
 ## How it works
@@ -154,18 +154,18 @@ For example, you can create a “blue theme” with the selector `data-bs-theme=
 
       <hr class="my-4"/>
 
-      <div class="dropdown">
-        <button class="btn-solid theme-secondary dropdown-toggle" type="button" id="dropdownMenuButtonCustom" data-bs-toggle="dropdown" aria-expanded="false">
-          Dropdown button
+      <div>
+        <button class="btn-solid theme-secondary" type="button" data-bs-toggle="menu" aria-expanded="false">
+          Menu
         </button>
-        <ul class="dropdown-menu" aria-labelledby="dropdownMenuButtonCustom">
-          <li><a class="dropdown-item active" href="#">Action</a></li>
-          <li><a class="dropdown-item" href="#">Action</a></li>
-          <li><a class="dropdown-item" href="#">Another action</a></li>
-          <li><a class="dropdown-item" href="#">Something else here</a></li>
-          <li><hr class="dropdown-divider"></li>
-          <li><a class="dropdown-item" href="#">Separated link</a></li>
-        </ul>
+        <div class="menu">
+          <a class="menu-item active" href="#">Action</a>
+          <a class="menu-item" href="#">Action</a>
+          <a class="menu-item" href="#">Another action</a>
+          <a class="menu-item" href="#">Something else here</a>
+          <hr class="menu-divider">
+          <a class="menu-item" href="#">Separated link</a>
+        </div>
       </div>
     </div>
   </div>`} />
index 6e92ee0d6e9534f35fbcf4ffcd8776a9e8b61538..b473bc8c21c4deca1caf4dc77d4dedab11a90a36 100644 (file)
@@ -26,7 +26,7 @@ For instance, assuming you’re using your own JavaScript bundler like Webpack,
 // import 'bootstrap/js/dist/carousel';
 // import 'bootstrap/js/dist/collapse';
 import 'bootstrap/js/dist/dialog';
-// import 'bootstrap/js/dist/dropdown';
+// import 'bootstrap/js/dist/menu';
 // import 'bootstrap/js/dist/offcanvas';
 // import 'bootstrap/js/dist/popover';
 // import 'bootstrap/js/dist/scrollspy';
@@ -35,7 +35,7 @@ import 'bootstrap/js/dist/dialog';
 // import 'bootstrap/js/dist/tooltip';
 ```
 
-This way, you’re not including any JavaScript you don’t intend to use for components like buttons, carousels, and tooltips. If you’re importing dropdowns, tooltips or popovers, be sure to list the Floating UI dependency in your `package.json` file. If you’re using the datepicker, be sure to also list the Vanilla Calendar Pro dependency.
+This way, you’re not including any JavaScript you don’t intend to use for components like buttons, carousels, and tooltips. If you’re importing menus, tooltips or popovers, be sure to list the Floating UI dependency in your `package.json` file. If you’re using the datepicker, be sure to also list the Vanilla Calendar Pro dependency.
 
 <Callout>
 **Heads up!** Files in `bootstrap/js/dist` use the **default export**. To use them, do the following:
index e964543163de5603fd4a3ea2cce8d9048686f256..314d333d2287c490aef409d80fd5d3548f319497 100644 (file)
@@ -20,7 +20,7 @@ You can find and customize these variables for key global options in Bootstrap
 | `$enable-grid-classes`         | `true` (default) or `false`        | Enables the generation of CSS classes for the grid system (e.g. `.row`, `.col-md-1`, etc.). |
 | `$enable-cssgrid`              | `true` or `false` (default)        | Enables the experimental CSS Grid system (e.g. `.grid`, `.g-col-md-1`, etc.). |
 | `$enable-container-classes`    | `true` (default) or `false`        | Enables the generation of CSS classes for layout containers. (New in v5.2.0) |
-| `$enable-caret`                | `true` (default) or `false`        | Enables pseudo element caret on `.dropdown-toggle`. |
+| `$enable-caret`                | `true` (default) or `false`        | Enables pseudo element caret on `[data-bs-toggle="menu"]`. |
 | `$enable-button-pointers`      | `true` (default) or `false`        | Add “hand” cursor to non-disabled button elements. |
 | `$enable-validation-icons`     | `true` (default) or `false`        | Enables `background-image` icons within textual inputs and some custom forms for validation states. |
 | `$enable-negative-margins`     | `true` or `false` (default)        | Enables the generation of [negative margin utilities]([[docsref:/utilities/margin#negative-margin]]). |
index 3d75153cd953c108b90562ccd883fc701699ea93..e5ff4d7054143dd006b55442a9f4fa49bd2d28ff 100644 (file)
@@ -275,7 +275,7 @@ Use `with ()` to override specific component token values at compile time with S
 );
 ```
 
-This works for every component: `$card-tokens`, `$button-tokens`, `$dropdown-tokens`, `$nav-tokens`, and so on — any `$*-tokens` map supports partial overrides through the same merge pattern.
+This works for every component: `$card-tokens`, `$button-tokens`, `$menu-tokens`, `$nav-tokens`, and so on — any `$*-tokens` map supports partial overrides through the same merge pattern.
 
 ### Remove tokens with `null`
 
diff --git a/site/src/content/docs/forms/combobox.mdx b/site/src/content/docs/forms/combobox.mdx
new file mode 100644 (file)
index 0000000..435f6e8
--- /dev/null
@@ -0,0 +1,429 @@
+---
+title: Combobox
+description: A customizable select-like component built with markup-first HTML, powered by the Menu component for positioning and keyboard navigation.
+toc: true
+---
+
+## Overview
+
+The combobox component provides a styled select experience using standard HTML markup — a toggle button paired with a `.menu` overlay. Unlike traditional select enhancements, the combobox is markup-first: you write the toggle and menu items directly in HTML. The JavaScript handles show/hide, selection state, form submission via a hidden input, and keyboard navigation.
+
+- Full control over menu item content (icons, descriptions, badges, images — anything)
+- Live search/filtering
+- Check mark indicators for selected items
+- Single and multiple selection modes
+- Full keyboard navigation and accessibility
+- Form submission via auto-created hidden input
+
+## Example
+
+Add `data-bs-toggle="combobox"` to a `<button>` element, followed by a `.menu` with `.menu-item` buttons. Each selectable item needs a `data-bs-value` attribute.
+
+<Example code={`<button class="form-control combobox-toggle" type="button"
+        data-bs-toggle="combobox"
+        data-bs-name="option"
+        data-bs-placeholder="Select an item…">
+    <span class="combobox-value">Select an item…</span>
+    <svg class="combobox-caret" width="10" height="16" viewBox="0 0 10 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.46967 5.46967C0.762563 5.17678 1.23744 5.17678 1.53033 5.46967L5 8.93934L8.46967 5.46967C8.76256 5.17678 9.23744 5.17678 9.53033 5.46967C9.82322 5.76256 9.82322 6.23744 9.53033 6.53033L5.53033 10.5303C5.23744 10.8232 4.76256 10.8232 4.46967 10.5303L0.46967 6.53033C0.176777 6.23744 0.176777 5.76256 0.46967 5.46967Z" fill="currentcolor"/></svg>
+  </button>
+  <div class="menu">
+    <button class="menu-item" type="button" data-bs-value="1">Option one</button>
+    <button class="menu-item" type="button" data-bs-value="2">Option two</button>
+    <button class="menu-item" type="button" data-bs-value="3">Option three</button>
+  </div>`} />
+
+### Placeholders
+
+Set placeholder text with `data-bs-placeholder` on the toggle button. The `.combobox-value` element shows this text when nothing is selected, styled with `.combobox-placeholder`.
+
+<Example code={`<button class="form-control combobox-toggle" type="button"
+        data-bs-toggle="combobox"
+        data-bs-name="country"
+        data-bs-placeholder="Pick a country…">
+    <span class="combobox-value">Pick a country…</span>
+    <svg class="combobox-caret" width="10" height="16" viewBox="0 0 10 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.46967 5.46967C0.762563 5.17678 1.23744 5.17678 1.53033 5.46967L5 8.93934L8.46967 5.46967C8.76256 5.17678 9.23744 5.17678 9.53033 5.46967C9.82322 5.76256 9.82322 6.23744 9.53033 6.53033L5.53033 10.5303C5.23744 10.8232 4.76256 10.8232 4.46967 10.5303L0.46967 6.53033C0.176777 6.23744 0.176777 5.76256 0.46967 5.46967Z" fill="currentcolor"/></svg>
+  </button>
+  <div class="menu">
+    <button class="menu-item" type="button" data-bs-value="us">United States</button>
+    <button class="menu-item" type="button" data-bs-value="uk">United Kingdom</button>
+    <button class="menu-item" type="button" data-bs-value="ca">Canada</button>
+  </div>`} />
+
+### Pre-selected value
+
+Add the `.selected` class and `aria-selected="true"` to a menu item to pre-select it. The toggle text updates automatically on initialization.
+
+<Example code={`<button class="form-control combobox-toggle" type="button"
+        data-bs-toggle="combobox"
+        data-bs-name="role"
+        data-bs-placeholder="Choose a role…">
+    <span class="combobox-value">Choose a role…</span>
+    <svg class="combobox-caret" width="10" height="16" viewBox="0 0 10 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.46967 5.46967C0.762563 5.17678 1.23744 5.17678 1.53033 5.46967L5 8.93934L8.46967 5.46967C8.76256 5.17678 9.23744 5.17678 9.53033 5.46967C9.82322 5.76256 9.82322 6.23744 9.53033 6.53033L5.53033 10.5303C5.23744 10.8232 4.76256 10.8232 4.46967 10.5303L0.46967 6.53033C0.176777 6.23744 0.176777 5.76256 0.46967 5.46967Z" fill="currentcolor"/></svg>
+  </button>
+  <div class="menu">
+    <button class="menu-item" type="button" data-bs-value="admin">Admin</button>
+    <button class="menu-item selected" type="button" data-bs-value="editor" aria-selected="true">Editor</button>
+    <button class="menu-item" type="button" data-bs-value="viewer">Viewer</button>
+  </div>`} />
+
+## Custom content
+
+Since menu items are standard HTML, you can put anything inside them — SVG icons, images, description text, badges, or any other markup.
+
+### Icons
+
+Add `.menu-item-icon` directly to an `<svg>` element inside a menu item for a leading icon.
+
+<Example code={`<button class="form-control combobox-toggle" type="button"
+        data-bs-toggle="combobox"
+        data-bs-name="language"
+        data-bs-placeholder="Choose a language…">
+    <span class="combobox-value">Choose a language…</span>
+    <svg class="combobox-caret" width="10" height="16" viewBox="0 0 10 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.46967 5.46967C0.762563 5.17678 1.23744 5.17678 1.53033 5.46967L5 8.93934L8.46967 5.46967C8.76256 5.17678 9.23744 5.17678 9.53033 5.46967C9.82322 5.76256 9.82322 6.23744 9.53033 6.53033L5.53033 10.5303C5.23744 10.8232 4.76256 10.8232 4.46967 10.5303L0.46967 6.53033C0.176777 6.23744 0.176777 5.76256 0.46967 5.46967Z" fill="currentcolor"/></svg>
+  </button>
+  <div class="menu">
+    <button class="menu-item" type="button" data-bs-value="html">
+      <svg class="menu-item-icon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"><path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/></svg>
+      <span>HTML</span>
+    </button>
+    <button class="menu-item" type="button" data-bs-value="css">
+      <svg class="menu-item-icon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"><path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/></svg>
+      <span>CSS</span>
+    </button>
+    <button class="menu-item" type="button" data-bs-value="js">
+      <svg class="menu-item-icon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"><path d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5z"/></svg>
+      <span>JavaScript</span>
+    </button>
+  </div>`} />
+
+### Descriptions
+
+Use `.menu-item-content` for a flex column layout and `.menu-item-description` for secondary text.
+
+<Example code={`<button class="form-control combobox-toggle" type="button"
+        data-bs-toggle="combobox"
+        data-bs-name="role"
+        data-bs-placeholder="Select a role…">
+    <span class="combobox-value">Select a role…</span>
+    <svg class="combobox-caret" width="10" height="16" viewBox="0 0 10 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.46967 5.46967C0.762563 5.17678 1.23744 5.17678 1.53033 5.46967L5 8.93934L8.46967 5.46967C8.76256 5.17678 9.23744 5.17678 9.53033 5.46967C9.82322 5.76256 9.82322 6.23744 9.53033 6.53033L5.53033 10.5303C5.23744 10.8232 4.76256 10.8232 4.46967 10.5303L0.46967 6.53033C0.176777 6.23744 0.176777 5.76256 0.46967 5.46967Z" fill="currentcolor"/></svg>
+  </button>
+  <div class="menu">
+    <button class="menu-item" type="button" data-bs-value="admin">
+      <span class="menu-item-content">
+        <span>Admin</span>
+        <small class="menu-item-description">Full access to all resources</small>
+      </span>
+    </button>
+    <button class="menu-item" type="button" data-bs-value="editor">
+      <span class="menu-item-content">
+        <span>Editor</span>
+        <small class="menu-item-description">Can edit and publish content</small>
+      </span>
+    </button>
+    <button class="menu-item" type="button" data-bs-value="viewer">
+      <span class="menu-item-content">
+        <span>Viewer</span>
+        <small class="menu-item-description">Read-only access</small>
+      </span>
+    </button>
+  </div>`} />
+
+### Checked icon
+
+Add `.menu-item-check` directly on an `<svg>` inside each menu item to show a check mark indicator. It is hidden by default and becomes visible when the item has the `.selected` class.
+
+<Example code={`<button class="form-control combobox-toggle" type="button"
+        data-bs-toggle="combobox"
+        data-bs-name="status"
+        data-bs-placeholder="Choose a status…">
+    <span class="combobox-value">Choose a status…</span>
+    <svg class="combobox-caret" width="10" height="16" viewBox="0 0 10 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.46967 5.46967C0.762563 5.17678 1.23744 5.17678 1.53033 5.46967L5 8.93934L8.46967 5.46967C8.76256 5.17678 9.23744 5.17678 9.53033 5.46967C9.82322 5.76256 9.82322 6.23744 9.53033 6.53033L5.53033 10.5303C5.23744 10.8232 4.76256 10.8232 4.46967 10.5303L0.46967 6.53033C0.176777 6.23744 0.176777 5.76256 0.46967 5.46967Z" fill="currentcolor"/></svg>
+  </button>
+  <div class="menu">
+    <button class="menu-item selected" type="button" data-bs-value="active" aria-selected="true">
+      <span class="menu-item-content">
+        <span>Active</span>
+        <small class="menu-item-description">Visible to users</small>
+      </span>
+      <svg class="menu-item-check" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 16 16"><path d="m2 7 4 5 8-8"/></svg>
+    </button>
+    <button class="menu-item" type="button" data-bs-value="draft">
+      <span class="menu-item-content">
+        <span>Draft</span>
+        <small class="menu-item-description">Not yet published</small>
+      </span>
+      <svg class="menu-item-check" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 16 16"><path d="m2 7 4 5 8-8"/></svg>
+    </button>
+    <hr class="menu-divider">
+    <button class="menu-item" type="button" data-bs-value="archived">
+      <span>Archived</span>
+      <svg class="menu-item-check" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 16 16"><path d="m2 7 4 5 8-8"/></svg>
+    </button>
+  </div>`} />
+
+### All together
+
+Combine all three for a rich menu item layout.
+
+<Example code={`<button class="form-control combobox-toggle" type="button"
+        data-bs-toggle="combobox"
+        data-bs-name="priority"
+        data-bs-placeholder="Set priority…">
+    <span class="combobox-value">Set priority…</span>
+    <svg class="combobox-caret" width="10" height="16" viewBox="0 0 10 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.46967 5.46967C0.762563 5.17678 1.23744 5.17678 1.53033 5.46967L5 8.93934L8.46967 5.46967C8.76256 5.17678 9.23744 5.17678 9.53033 5.46967C9.82322 5.76256 9.82322 6.23744 9.53033 6.53033L5.53033 10.5303C5.23744 10.8232 4.76256 10.8232 4.46967 10.5303L0.46967 6.53033C0.176777 6.23744 0.176777 5.76256 0.46967 5.46967Z" fill="currentcolor"/></svg>
+  </button>
+  <div class="menu">
+    <button class="menu-item" type="button" data-bs-value="low">
+      <svg class="menu-item-icon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/></svg>
+      <span class="menu-item-content">
+        <span>Low</span>
+        <small class="menu-item-description">No rush</small>
+      </span>
+      <svg class="menu-item-check" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 16 16"><path d="m2 7 4 5 8-8"/></svg>
+    </button>
+    <button class="menu-item" type="button" data-bs-value="medium">
+      <svg class="menu-item-icon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M6.79 5.093A.5.5 0 0 0 6 5.5v5a.5.5 0 0 0 .79.407l3.5-2.5a.5.5 0 0 0 0-.814z"/></svg>
+      <span class="menu-item-content">
+        <span>Medium</span>
+        <small class="menu-item-description">Normal priority</small>
+      </span>
+      <svg class="menu-item-check" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 16 16"><path d="m2 7 4 5 8-8"/></svg>
+    </button>
+    <button class="menu-item" type="button" data-bs-value="high">
+      <svg class="menu-item-icon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"><path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M8 4a.905.905 0 0 0-.9.995l.35 3.507a.552.552 0 0 0 1.1 0l.35-3.507A.905.905 0 0 0 8 4m.002 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2"/></svg>
+      <span class="menu-item-content">
+        <span>High</span>
+        <small class="menu-item-description">Needs attention</small>
+      </span>
+      <svg class="menu-item-check" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 16 16"><path d="m2 7 4 5 8-8"/></svg>
+    </button>
+  </div>`} />
+
+## Search menu items
+
+Enable filtering with `data-bs-search="true"` on the toggle. Add a search input and optional no-results message inside the `.menu`, before the items. Items are filtered by matching their `textContent` against the query.
+
+<Example code={`<button class="form-control combobox-toggle" type="button"
+        data-bs-toggle="combobox"
+        data-bs-name="country"
+        data-bs-placeholder="Select a country…"
+        data-bs-search="true">
+    <span class="combobox-value">Select a country…</span>
+    <svg class="combobox-caret" width="10" height="16" viewBox="0 0 10 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.46967 5.46967C0.762563 5.17678 1.23744 5.17678 1.53033 5.46967L5 8.93934L8.46967 5.46967C8.76256 5.17678 9.23744 5.17678 9.53033 5.46967C9.82322 5.76256 9.82322 6.23744 9.53033 6.53033L5.53033 10.5303C5.23744 10.8232 4.76256 10.8232 4.46967 10.5303L0.46967 6.53033C0.176777 6.23744 0.176777 5.76256 0.46967 5.46967Z" fill="currentcolor"/></svg>
+  </button>
+  <div class="menu">
+    <div class="combobox-search">
+      <input type="text" class="form-control combobox-search-input" placeholder="Search…" autocomplete="off" aria-label="Search…">
+    </div>
+    <button class="menu-item" type="button" data-bs-value="us">United States</button>
+    <button class="menu-item" type="button" data-bs-value="uk">United Kingdom</button>
+    <button class="menu-item" type="button" data-bs-value="ca">Canada</button>
+    <button class="menu-item" type="button" data-bs-value="au">Australia</button>
+    <button class="menu-item" type="button" data-bs-value="de">Germany</button>
+    <button class="menu-item" type="button" data-bs-value="fr">France</button>
+    <button class="menu-item" type="button" data-bs-value="jp">Japan</button>
+    <button class="menu-item" type="button" data-bs-value="br">Brazil</button>
+    <button class="menu-item" type="button" data-bs-value="in">India</button>
+    <button class="menu-item" type="button" data-bs-value="mx">Mexico</button>
+    <div class="combobox-no-results d-none">No results found</div>
+  </div>`} />
+
+## Groups
+
+Use `.menu-header` elements to create labeled groups within the menu.
+
+<Example code={`<button class="form-control combobox-toggle" type="button"
+        data-bs-toggle="combobox"
+        data-bs-name="language"
+        data-bs-placeholder="Select a language…">
+    <span class="combobox-value">Select a language…</span>
+    <svg class="combobox-caret" width="10" height="16" viewBox="0 0 10 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.46967 5.46967C0.762563 5.17678 1.23744 5.17678 1.53033 5.46967L5 8.93934L8.46967 5.46967C8.76256 5.17678 9.23744 5.17678 9.53033 5.46967C9.82322 5.76256 9.82322 6.23744 9.53033 6.53033L5.53033 10.5303C5.23744 10.8232 4.76256 10.8232 4.46967 10.5303L0.46967 6.53033C0.176777 6.23744 0.176777 5.76256 0.46967 5.46967Z" fill="currentcolor"/></svg>
+  </button>
+  <div class="menu">
+    <div class="menu-header">Frontend</div>
+    <button class="menu-item" type="button" data-bs-value="html">HTML</button>
+    <button class="menu-item" type="button" data-bs-value="css">CSS</button>
+    <button class="menu-item" type="button" data-bs-value="js">JavaScript</button>
+    <div class="menu-header">Backend</div>
+    <button class="menu-item" type="button" data-bs-value="python">Python</button>
+    <button class="menu-item" type="button" data-bs-value="ruby">Ruby</button>
+    <button class="menu-item" type="button" data-bs-value="go">Go</button>
+  </div>`} />
+
+## Multiple select
+
+Add `data-bs-multiple="true"` to the toggle for multi-select behavior. Selected items are toggled on click and the menu stays open. The toggle displays the count when more than one item is selected.
+
+<Example code={`<button class="form-control combobox-toggle" type="button"
+        data-bs-toggle="combobox"
+        data-bs-name="skills"
+        data-bs-placeholder="Select skills…"
+        data-bs-multiple="true">
+    <span class="combobox-value">Select skills…</span>
+    <svg class="combobox-caret" width="10" height="16" viewBox="0 0 10 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.46967 5.46967C0.762563 5.17678 1.23744 5.17678 1.53033 5.46967L5 8.93934L8.46967 5.46967C8.76256 5.17678 9.23744 5.17678 9.53033 5.46967C9.82322 5.76256 9.82322 6.23744 9.53033 6.53033L5.53033 10.5303C5.23744 10.8232 4.76256 10.8232 4.46967 10.5303L0.46967 6.53033C0.176777 6.23744 0.176777 5.76256 0.46967 5.46967Z" fill="currentcolor"/></svg>
+  </button>
+  <div class="menu">
+    <button class="menu-item" type="button" data-bs-value="html">
+      HTML
+      <svg class="menu-item-check" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 16 16"><path d="m2 7 4 5 8-8"/></svg>
+    </button>
+    <button class="menu-item" type="button" data-bs-value="css">
+      CSS
+      <svg class="menu-item-check" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 16 16"><path d="m2 7 4 5 8-8"/></svg>
+    </button>
+    <button class="menu-item" type="button" data-bs-value="js">
+      JavaScript
+      <svg class="menu-item-check" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 16 16"><path d="m2 7 4 5 8-8"/></svg>
+    </button>
+    <button class="menu-item" type="button" data-bs-value="python">
+      Python
+      <svg class="menu-item-check" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 16 16"><path d="m2 7 4 5 8-8"/></svg>
+    </button>
+    <button class="menu-item" type="button" data-bs-value="ruby">
+      Ruby
+      <svg class="menu-item-check" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 16 16"><path d="m2 7 4 5 8-8"/></svg>
+    </button>
+  </div>`} />
+
+## Sizing
+
+Use `.form-control-sm` or `.form-control-lg` on the toggle button to change size.
+
+<Example code={`<button class="form-control form-control-sm combobox-toggle" type="button"
+        data-bs-toggle="combobox"
+        data-bs-placeholder="Small select…">
+    <span class="combobox-value">Small select…</span>
+    <svg class="combobox-caret" width="10" height="16" viewBox="0 0 10 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.46967 5.46967C0.762563 5.17678 1.23744 5.17678 1.53033 5.46967L5 8.93934L8.46967 5.46967C8.76256 5.17678 9.23744 5.17678 9.53033 5.46967C9.82322 5.76256 9.82322 6.23744 9.53033 6.53033L5.53033 10.5303C5.23744 10.8232 4.76256 10.8232 4.46967 10.5303L0.46967 6.53033C0.176777 6.23744 0.176777 5.76256 0.46967 5.46967Z" fill="currentcolor"/></svg>
+  </button>
+  <div class="menu">
+    <button class="menu-item" type="button" data-bs-value="1">Option one</button>
+    <button class="menu-item" type="button" data-bs-value="2">Option two</button>
+  </div>
+
+  <button class="form-control combobox-toggle" type="button"
+        data-bs-toggle="combobox"
+        data-bs-placeholder="Default select…">
+    <span class="combobox-value">Default select…</span>
+    <svg class="combobox-caret" width="10" height="16" viewBox="0 0 10 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.46967 5.46967C0.762563 5.17678 1.23744 5.17678 1.53033 5.46967L5 8.93934L8.46967 5.46967C8.76256 5.17678 9.23744 5.17678 9.53033 5.46967C9.82322 5.76256 9.82322 6.23744 9.53033 6.53033L5.53033 10.5303C5.23744 10.8232 4.76256 10.8232 4.46967 10.5303L0.46967 6.53033C0.176777 6.23744 0.176777 5.76256 0.46967 5.46967Z" fill="currentcolor"/></svg>
+  </button>
+  <div class="menu">
+    <button class="menu-item" type="button" data-bs-value="1">Option one</button>
+    <button class="menu-item" type="button" data-bs-value="2">Option two</button>
+  </div>
+
+  <button class="form-control form-control-lg combobox-toggle" type="button"
+        data-bs-toggle="combobox"
+        data-bs-placeholder="Large select…">
+    <span class="combobox-value">Large select…</span>
+    <svg class="combobox-caret" width="10" height="16" viewBox="0 0 10 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.46967 5.46967C0.762563 5.17678 1.23744 5.17678 1.53033 5.46967L5 8.93934L8.46967 5.46967C8.76256 5.17678 9.23744 5.17678 9.53033 5.46967C9.82322 5.76256 9.82322 6.23744 9.53033 6.53033L5.53033 10.5303C5.23744 10.8232 4.76256 10.8232 4.46967 10.5303L0.46967 6.53033C0.176777 6.23744 0.176777 5.76256 0.46967 5.46967Z" fill="currentcolor"/></svg>
+  </button>
+  <div class="menu">
+    <button class="menu-item" type="button" data-bs-value="1">Option one</button>
+    <button class="menu-item" type="button" data-bs-value="2">Option two</button>
+  </div>`} />
+
+## Disabled
+
+Add `disabled` to the toggle button or individual menu items.
+
+<Example code={`<button class="form-control combobox-toggle" type="button"
+        data-bs-toggle="combobox"
+        data-bs-placeholder="Cannot interact…"
+        disabled>
+    <span class="combobox-value">Cannot interact…</span>
+    <svg class="combobox-caret" width="10" height="16" viewBox="0 0 10 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.46967 5.46967C0.762563 5.17678 1.23744 5.17678 1.53033 5.46967L5 8.93934L8.46967 5.46967C8.76256 5.17678 9.23744 5.17678 9.53033 5.46967C9.82322 5.76256 9.82322 6.23744 9.53033 6.53033L5.53033 10.5303C5.23744 10.8232 4.76256 10.8232 4.46967 10.5303L0.46967 6.53033C0.176777 6.23744 0.176777 5.76256 0.46967 5.46967Z" fill="currentcolor"/></svg>
+  </button>
+  <div class="menu">
+    <button class="menu-item" type="button" data-bs-value="1">Option one</button>
+    <button class="menu-item" type="button" data-bs-value="2">Option two</button>
+  </div>
+
+  <button class="form-control combobox-toggle mt-3" type="button"
+        data-bs-toggle="combobox"
+        data-bs-placeholder="Select an option…">
+    <span class="combobox-value">Select an option…</span>
+    <svg class="combobox-caret" width="10" height="16" viewBox="0 0 10 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0.46967 5.46967C0.762563 5.17678 1.23744 5.17678 1.53033 5.46967L5 8.93934L8.46967 5.46967C8.76256 5.17678 9.23744 5.17678 9.53033 5.46967C9.82322 5.76256 9.82322 6.23744 9.53033 6.53033L5.53033 10.5303C5.23744 10.8232 4.76256 10.8232 4.46967 10.5303L0.46967 6.53033C0.176777 6.23744 0.176777 5.76256 0.46967 5.46967Z" fill="currentcolor"/></svg>
+  </button>
+  <div class="menu">
+    <button class="menu-item" type="button" data-bs-value="1">Available</button>
+    <button class="menu-item" type="button" data-bs-value="2" disabled>Unavailable</button>
+    <button class="menu-item" type="button" data-bs-value="3">Available</button>
+  </div>`} />
+
+## Form submission
+
+The combobox creates a hidden `<input>` for form submission when `data-bs-name` is set on the toggle. The hidden input's `name` matches the attribute value and its `value` updates whenever the selection changes.
+
+```html
+<!-- What you write -->
+<button class="form-control combobox-toggle" type="button"
+        data-bs-toggle="combobox"
+        data-bs-name="country">
+  ...
+</button>
+<div class="menu">...</div>
+
+<!-- What the JS creates (inserted before the toggle) -->
+<input type="hidden" name="country" value="us">
+```
+
+For multiple selection, the hidden input value is a comma-separated list of selected values.
+
+## JavaScript
+
+### Options
+
+Options can be passed via data attributes on the toggle button (e.g., `data-bs-search="true"`) or as a config object when initializing via JavaScript.
+
+<BsTable>
+| Name | Type | Default | Description |
+| --- | --- | --- | --- |
+| `multiple` | boolean | `false` | Enable multi-select mode. Selections toggle and the menu stays open. |
+| `name` | string \| null | `null` | Name for the auto-created hidden input. Also settable via `data-bs-name`. |
+| `placeholder` | string | `''` | Placeholder text for the toggle. Also settable via `data-bs-placeholder`. |
+| `search` | boolean | `false` | Enable search input in the menu. Also settable via `data-bs-search`. |
+| `searchNormalize` | boolean | `false` | Normalize accented characters for search matching. |
+| `placement` | string | `'bottom-start'` | Menu placement (uses Floating UI). |
+| `offset` | array | `[0, 2]` | Offset from the toggle `[skidding, distance]`. |
+| `boundary` | string \| element | `'clippingParents'` | Overflow boundary for the menu. |
+</BsTable>
+
+### Methods
+
+<BsTable>
+| Method | Description |
+| --- | --- |
+| `toggle` | Toggles the menu. |
+| `show` | Shows the menu. |
+| `hide` | Hides the menu. |
+| `dispose` | Destroys the combobox instance and removes the hidden input. |
+| `getInstance` | Static method to get the combobox instance from a DOM element. |
+| `getOrCreateInstance` | Static method to get or create a combobox instance. |
+</BsTable>
+
+### Events
+
+Events are fired on the toggle button element.
+
+<BsTable>
+| Event | Description |
+| --- | --- |
+| `show.bs.combobox` | Fires immediately when the `show` method is called. |
+| `shown.bs.combobox` | Fires when the menu has been made visible. |
+| `hide.bs.combobox` | Fires immediately when the `hide` method is called. |
+| `hidden.bs.combobox` | Fires when the menu has been hidden. |
+| `change.bs.combobox` | Fires when a selection is made. The event detail includes `value` and `item`. |
+</BsTable>
+
+## Accessibility
+
+The combobox component follows WAI-ARIA combobox patterns:
+
+- The toggle button has `aria-haspopup="listbox"` and `aria-expanded`.
+- Each selectable item should have `role="option"` and `aria-selected`.
+- Full keyboard navigation: Arrow keys, Home, End, Enter, Space, Escape, and Tab.
+- Disabled items have the `disabled` attribute and `aria-disabled="true"`.
+
+## CSS custom properties
+
+The combobox uses CSS custom properties prefixed with `--combobox-*` for the toggle, and inherits `--menu-*` properties from the Menu component for the menu overlay. See the [source SCSS](https://github.com/twbs/bootstrap/blob/v6-dev/scss/forms/_combobox.scss) for the full list of available tokens.
index 43a8d40389102bc937ac21dff6cf3b9b98a010a5..cab7eb676e67fd9290510aa4de633a37d28dc7ae 100644 (file)
@@ -157,82 +157,82 @@ Multiple add-ons are supported and can be mixed with checkbox and radio input ve
     <button class="btn-outline theme-secondary input-group-btn" type="button">Button</button>
   </div>`} />
 
-## Buttons with dropdowns
+## Buttons with menus
 
 <Example class="vstack gap-3" code={`<div class="input-group">
-    <button class="btn-outline theme-secondary input-group-btn dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>
-    <ul class="dropdown-menu">
-      <li><a class="dropdown-item" href="#">Action</a></li>
-      <li><a class="dropdown-item" href="#">Another action</a></li>
-      <li><a class="dropdown-item" href="#">Something else here</a></li>
-      <li><hr class="dropdown-divider"></li>
-      <li><a class="dropdown-item" href="#">Separated link</a></li>
-    </ul>
-    <input type="text" class="form-control" aria-label="Text input with dropdown button">
+    <button class="btn-outline theme-secondary input-group-btn" type="button" data-bs-toggle="menu" aria-expanded="false">Menu</button>
+    <div class="menu">
+      <a class="menu-item" href="#">Action</a>
+      <a class="menu-item" href="#">Another action</a>
+      <a class="menu-item" href="#">Something else here</a>
+      <hr class="menu-divider">
+      <a class="menu-item" href="#">Separated link</a>
+    </div>
+    <input type="text" class="form-control" aria-label="Text input with menu button">
   </div>
 
   <div class="input-group">
-    <input type="text" class="form-control" aria-label="Text input with dropdown button">
-    <button class="btn-outline theme-secondary input-group-btn dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>
-    <ul class="dropdown-menu dropdown-menu-end">
-      <li><a class="dropdown-item" href="#">Action</a></li>
-      <li><a class="dropdown-item" href="#">Another action</a></li>
-      <li><a class="dropdown-item" href="#">Something else here</a></li>
-      <li><hr class="dropdown-divider"></li>
-      <li><a class="dropdown-item" href="#">Separated link</a></li>
-    </ul>
+    <input type="text" class="form-control" aria-label="Text input with menu button">
+    <button class="btn-outline theme-secondary input-group-btn" type="button" data-bs-toggle="menu" data-bs-placement="bottom-end" aria-expanded="false">Menu</button>
+    <div class="menu">
+      <a class="menu-item" href="#">Action</a>
+      <a class="menu-item" href="#">Another action</a>
+      <a class="menu-item" href="#">Something else here</a>
+      <hr class="menu-divider">
+      <a class="menu-item" href="#">Separated link</a>
+    </div>
   </div>
 
   <div class="input-group">
-    <button class="btn-outline theme-secondary input-group-btn dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>
-    <ul class="dropdown-menu">
-      <li><a class="dropdown-item" href="#">Action before</a></li>
-      <li><a class="dropdown-item" href="#">Another action before</a></li>
-      <li><a class="dropdown-item" href="#">Something else here</a></li>
-      <li><hr class="dropdown-divider"></li>
-      <li><a class="dropdown-item" href="#">Separated link</a></li>
-    </ul>
-    <input type="text" class="form-control" aria-label="Text input with 2 dropdown buttons">
-    <button class="btn-outline theme-secondary input-group-btn dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</button>
-    <ul class="dropdown-menu dropdown-menu-end">
-      <li><a class="dropdown-item" href="#">Action</a></li>
-      <li><a class="dropdown-item" href="#">Another action</a></li>
-      <li><a class="dropdown-item" href="#">Something else here</a></li>
-      <li><hr class="dropdown-divider"></li>
-      <li><a class="dropdown-item" href="#">Separated link</a></li>
-    </ul>
+    <button class="btn-outline theme-secondary input-group-btn" type="button" data-bs-toggle="menu" aria-expanded="false">Menu</button>
+    <div class="menu">
+      <a class="menu-item" href="#">Action before</a>
+      <a class="menu-item" href="#">Another action before</a>
+      <a class="menu-item" href="#">Something else here</a>
+      <hr class="menu-divider">
+      <a class="menu-item" href="#">Separated link</a>
+    </div>
+    <input type="text" class="form-control" aria-label="Text input with 2 menu buttons">
+    <button class="btn-outline theme-secondary input-group-btn" type="button" data-bs-toggle="menu" data-bs-placement="bottom-end" aria-expanded="false">Menu</button>
+    <div class="menu">
+      <a class="menu-item" href="#">Action</a>
+      <a class="menu-item" href="#">Another action</a>
+      <a class="menu-item" href="#">Something else here</a>
+      <hr class="menu-divider">
+      <a class="menu-item" href="#">Separated link</a>
+    </div>
   </div>`} />
 
 ## Segmented buttons
 
 <Example code={`<div class="input-group mb-3">
     <button type="button" class="btn-outline theme-secondary input-group-btn">Action</button>
-    <button type="button" class="btn-outline theme-secondary input-group-btn dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-      <span class="visually-hidden">Toggle Dropdown</span>
+    <button type="button" class="btn-outline theme-secondary input-group-btn menu-toggle-split" data-bs-toggle="menu" aria-expanded="false">
+      <span class="visually-hidden">Toggle Menu</span>
     </button>
-    <ul class="dropdown-menu">
-      <li><a class="dropdown-item" href="#">Action</a></li>
-      <li><a class="dropdown-item" href="#">Another action</a></li>
-      <li><a class="dropdown-item" href="#">Something else here</a></li>
-      <li><hr class="dropdown-divider"></li>
-      <li><a class="dropdown-item" href="#">Separated link</a></li>
-    </ul>
-    <input type="text" class="form-control" aria-label="Text input with segmented dropdown button">
+    <div class="menu">
+      <a class="menu-item" href="#">Action</a>
+      <a class="menu-item" href="#">Another action</a>
+      <a class="menu-item" href="#">Something else here</a>
+      <hr class="menu-divider">
+      <a class="menu-item" href="#">Separated link</a>
+    </div>
+    <input type="text" class="form-control" aria-label="Text input with segmented menu button">
   </div>
 
   <div class="input-group">
-    <input type="text" class="form-control" aria-label="Text input with segmented dropdown button">
+    <input type="text" class="form-control" aria-label="Text input with segmented menu button">
     <button type="button" class="btn-outline theme-secondary input-group-btn">Action</button>
-    <button type="button" class="btn-outline theme-secondary input-group-btn dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
-      <span class="visually-hidden">Toggle Dropdown</span>
+    <button type="button" class="btn-outline theme-secondary input-group-btn menu-toggle-split" data-bs-toggle="menu" data-bs-placement="bottom-end" aria-expanded="false">
+      <span class="visually-hidden">Toggle Menu</span>
     </button>
-    <ul class="dropdown-menu dropdown-menu-end">
-      <li><a class="dropdown-item" href="#">Action</a></li>
-      <li><a class="dropdown-item" href="#">Another action</a></li>
-      <li><a class="dropdown-item" href="#">Something else here</a></li>
-      <li><hr class="dropdown-divider"></li>
-      <li><a class="dropdown-item" href="#">Separated link</a></li>
-    </ul>
+    <div class="menu">
+      <a class="menu-item" href="#">Action</a>
+      <a class="menu-item" href="#">Another action</a>
+      <a class="menu-item" href="#">Something else here</a>
+      <hr class="menu-divider">
+      <a class="menu-item" href="#">Separated link</a>
+    </div>
   </div>`} />
 
 ## Custom forms
index 7e2096d3d6636e0bd4a414ec84453d017019d2eb..ae7d3960b96e1f19b017e66fd5759ef13bb0c5df 100644 (file)
@@ -16,7 +16,7 @@ Bootstrap’s styling and layout can be applied to a wide range of markup struct
 
 ### Interactive components
 
-Bootstrap’s interactive components—such as modal dialogs, dropdown menus, and custom tooltips—are designed to work for touch, mouse, and keyboard users. Through the use of relevant [<abbr title="Web Accessibility Initiative">WAI</abbr>-<abbr title="Accessible Rich Internet Applications">ARIA</abbr>](https://www.w3.org/WAI/standards-guidelines/aria/) roles and attributes, these components should also be understandable and operable using assistive technologies (such as screen readers).
+Bootstrap’s interactive components—such as modal dialogs, menus, and custom tooltips—are designed to work for touch, mouse, and keyboard users. Through the use of relevant [<abbr title="Web Accessibility Initiative">WAI</abbr>-<abbr title="Accessible Rich Internet Applications">ARIA</abbr>](https://www.w3.org/WAI/standards-guidelines/aria/) roles and attributes, these components should also be understandable and operable using assistive technologies (such as screen readers).
 
 Because Bootstrap’s components are purposely designed to be fairly generic, authors may need to include further <abbr title="Accessible Rich Internet Applications">ARIA</abbr> roles and attributes, as well as JavaScript behavior, to more accurately convey the precise nature and functionality of their component. This is usually noted in the documentation.
 
index 0e3589302fb3df5e2e3b173addf6aee461e1d9e0..8b0a38d274aac3d6be4c24f77740eb4259ce7a8e 100644 (file)
@@ -14,7 +14,7 @@ Curious which components explicitly require our JavaScript and Floating UI or Va
 - Carousel for all slide behaviors, controls, and indicators
 - Collapse for toggling visibility of content
 - Datepicker for date selection (also requires [Vanilla Calendar Pro](https://vanilla-calendar.pro/))
-- Dropdowns for displaying and positioning (also requires [Floating UI](https://floating-ui.com/))
+- Menus for displaying and positioning (also requires [Floating UI](https://floating-ui.com/))
 - Modals for displaying, positioning, and scroll behavior
 - Navbar for extending our Collapse and Offcanvas plugins to implement responsive behaviors
 - Navs with the Tab plugin for toggling content panes
@@ -35,7 +35,7 @@ import { Toast, Tooltip } from 'bootstrap'
 
 ## Usage with JavaScript frameworks
 
-While the Bootstrap CSS can be used with any framework, **the Bootstrap JavaScript is not fully compatible with JavaScript frameworks like React, Vue, and Angular** which assume full knowledge of the DOM. Both Bootstrap and the framework may attempt to mutate the same DOM element, resulting in bugs like dropdowns that are stuck in the "open" position.
+While the Bootstrap CSS can be used with any framework, **the Bootstrap JavaScript is not fully compatible with JavaScript frameworks like React, Vue, and Angular** which assume full knowledge of the DOM. Both Bootstrap and the framework may attempt to mutate the same DOM element, resulting in bugs like menus that are stuck in the "open" position.
 
 A better alternative for those using this type of frameworks is to use a framework-specific package **instead of** the Bootstrap JavaScript. Here are some of the most popular options:
 
@@ -112,7 +112,7 @@ Components that don't depend on Floating UI (like Toast, Alert, Collapse, etc.)
 
 Some plugins and CSS components depend on other plugins. If you include plugins individually, make sure to check for these dependencies in the docs.
 
-Our dropdowns, popovers, and tooltips also depend on [Floating UI](https://floating-ui.com/). Our datepicker also depends on [Vanilla Calendar Pro](https://vanilla-calendar.pro/).
+Our menus, popovers, and tooltips also depend on [Floating UI](https://floating-ui.com/). Our datepicker also depends on [Vanilla Calendar Pro](https://vanilla-calendar.pro/).
 
 ## Data attributes
 
@@ -172,7 +172,7 @@ In addition to the `getInstance` and `getOrCreateInstance` methods, all plugin c
 
 ```js
 const dialog = new bootstrap.Dialog('#myDialog')
-const dropdown = new bootstrap.Dropdown('[data-bs-toggle="dropdown"]')
+const menu = new bootstrap.Menu('[data-bs-toggle="menu"]')
 const offcanvas = bootstrap.Offcanvas.getInstance('#myOffcanvas')
 const alert = bootstrap.Alert.getOrCreateInstance('#myAlert')
 ```
index ed93f62f9cc660bc39f470e2775261cca565f1ab..e9edabcc238bc2738daffc0127c7ab03e8a71678 100644 (file)
@@ -26,7 +26,7 @@ We’re building a npm project with Bootstrap from scratch, so there are some pr
    npm init -y
    ```
 
-2. **Install Bootstrap.** Now we can install Bootstrap. We’ll also install Floating UI and Vanilla Calendar Pro since some of our components depend on them. If you don’t plan on using dropdowns, popovers, or tooltips, you can omit Floating UI. If you don’t plan on using the datepicker, you can omit Vanilla Calendar Pro.
+2. **Install Bootstrap.** Now we can install Bootstrap. We’ll also install Floating UI and Vanilla Calendar Pro since some of our components depend on them. If you don’t plan on using menus, popovers, or tooltips, you can omit Floating UI. If you don’t plan on using the datepicker, you can omit Vanilla Calendar Pro.
 
    ```sh
    npm i --save bootstrap @floating-ui/dom vanilla-calendar-pro
index 3b20cc8f21bb93ed1d1d016a7b0a2f937ebb89be..fccac754691d5cf10b47992c368dd27bb8fd7ea4 100644 (file)
@@ -32,7 +32,7 @@ We’re building a Parcel project with Bootstrap from scratch, so there are some
    npm i --save-dev parcel
    ```
 
-3. **Install Bootstrap.** Now we can install Bootstrap. We'll also install Floating UI and Vanilla Calendar Pro since some of our components depend on them. If you don’t plan on using dropdowns, popovers, or tooltips, you can omit Floating UI. If you don’t plan on using the datepicker, you can omit Vanilla Calendar Pro.
+3. **Install Bootstrap.** Now we can install Bootstrap. We'll also install Floating UI and Vanilla Calendar Pro since some of our components depend on them. If you don’t plan on using menus, popovers, or tooltips, you can omit Floating UI. If you don’t plan on using the datepicker, you can omit Vanilla Calendar Pro.
 
    ```sh
    npm i --save bootstrap @floating-ui/dom vanilla-calendar-pro
index 9591f61332aeb498f9fe959d08c8f06282cfafce..7236241302aae00cf22f54e26fce7c619c670455 100644 (file)
@@ -25,7 +25,7 @@ Get started using Bootstrap in seconds by including our production-ready CSS and
    </html>
    ```
 
-2. **Include Bootstrap’s CSS and JS.** Place the `<link>` tag in the `<head>` for our CSS, and the `<script>` tag for our JavaScript bundle (including Floating UI for positioning dropdowns, popovers, and tooltips, and Vanilla Calendar Pro for the datepicker) before the closing `</body>`. Learn more about [our CDN links]([[docsref:/getting-started/install#cdn]]).
+2. **Include Bootstrap’s CSS and JS.** Place the `<link>` tag in the `<head>` for our CSS, and the `<script>` tag for our JavaScript bundle (including Floating UI for positioning menus, popovers, and tooltips, and Vanilla Calendar Pro for the datepicker) before the closing `</body>`. Learn more about [our CDN links]([[docsref:/getting-started/install#cdn]]).
 
    ```html
    <!doctype html>
@@ -43,7 +43,7 @@ Get started using Bootstrap in seconds by including our production-ready CSS and
    </html>
    ```
 
-   You can also include [Floating UI](https://floating-ui.com/) and [Vanilla Calendar Pro](https://vanilla-calendar.pro/) and our JS separately via an import map. If you don't plan to use dropdowns, popovers, or tooltips, save some kilobytes by not including Floating UI. If you don't plan to use the datepicker, you can omit Vanilla Calendar Pro.
+   You can also include [Floating UI](https://floating-ui.com/) and [Vanilla Calendar Pro](https://vanilla-calendar.pro/) and our JS separately via an import map. If you don't plan to use menus, popovers, or tooltips, save some kilobytes by not including Floating UI. If you don't plan to use the datepicker, you can omit Vanilla Calendar Pro.
 
    ```html
    <script type="importmap">
index 2cf4e2e1081c59f80ec14c9b2b2849403f0ba6b0..548d8a6a82effba651a1fb15e3241b27a5647c9c 100644 (file)
@@ -32,7 +32,7 @@ We’re building a Vite project with Bootstrap from scratch, so there are some p
    npm i --save-dev vite
    ```
 
-3. **Install Bootstrap.** Now we can install Bootstrap. We'll also install Floating UI and Vanilla Calendar Pro since some of our components depend on them. If you don’t plan on using dropdowns, popovers, or tooltips, you can omit Floating UI. If you don’t plan on using the datepicker, you can omit Vanilla Calendar Pro.
+3. **Install Bootstrap.** Now we can install Bootstrap. We'll also install Floating UI and Vanilla Calendar Pro since some of our components depend on them. If you don’t plan on using menus, popovers, or tooltips, you can omit Floating UI. If you don’t plan on using the datepicker, you can omit Vanilla Calendar Pro.
 
    ```sh
    npm i --save bootstrap @floating-ui/dom vanilla-calendar-pro
index 89395206db9e1994bb4a9700c7896ae82c83081b..d462297d8f4dfde83d3e948802bd164bed166bb1 100644 (file)
@@ -32,7 +32,7 @@ We’re building a Webpack project with Bootstrap from scratch, so there are som
    npm i --save-dev webpack webpack-cli webpack-dev-server html-webpack-plugin
    ```
 
-3. **Install Bootstrap.** Now we can install Bootstrap. We'll also install Floating UI and Vanilla Calendar Pro since some of our components depend on them. If you don’t plan on using dropdowns, popovers, or tooltips, you can omit Floating UI. If you don’t plan on using the datepicker, you can omit Vanilla Calendar Pro.
+3. **Install Bootstrap.** Now we can install Bootstrap. We'll also install Floating UI and Vanilla Calendar Pro since some of our components depend on them. If you don’t plan on using menus, popovers, or tooltips, you can omit Floating UI. If you don’t plan on using the datepicker, you can omit Vanilla Calendar Pro.
 
    ```sh
    npm i --save bootstrap @floating-ui/dom vanilla-calendar-pro
index 459ef868cade0d074ff33f063267802d44af95f2..7cfd2b78a7b1802727a687f89b81b4c1e10a40e4 100644 (file)
@@ -5,7 +5,7 @@ description: While not a part of Bootstrap’s grid system, z-indexes play an im
 
 Several Bootstrap components utilize `z-index`, the CSS property that helps control layout by providing a third axis to arrange content. We utilize a default z-index scale in Bootstrap that’s been designed to properly layer navigation, tooltips and popovers, modals, and more.
 
-These higher values start at an arbitrary number, high and specific enough to ideally avoid conflicts. We need a standard set of these across our layered components—tooltips, popovers, navbars, dropdowns, modals—so we can be reasonably consistent in the behaviors. There’s no reason we couldn’t have used `100`+ or `500`+.
+These higher values start at an arbitrary number, high and specific enough to ideally avoid conflicts. We need a standard set of these across our layered components—tooltips, popovers, navbars, menus, modals—so we can be reasonably consistent in the behaviors. There’s no reason we couldn’t have used `100`+ or `500`+.
 
 We don’t encourage customization of these individual values; should you change one, you likely need to change them all.
 
index 0d70f4d5a633d375def8182e77003306c25319f2..ccf6ab82500dadd6b862a01fd4ec0e8d7bc72bb6 100644 (file)
@@ -78,6 +78,7 @@ Bootstrap 6 is a major release with many breaking changes to modernize our codeb
   - Removed `$border-radius-xxl`, use `$border-radius-2xl`.
   - Removed `$text-muted` for secondary color.
   - Removed `$hr-bg-color` for `$hr-border-color` and `$hr-height` for `$hr-border-width`.
+  - Renamed `$zindex-dropdown` to `$zindex-menu`.
   - Removed unused `$dropdown-header-padding` for the `-x`/`-y` split variables.
   - Removed unused `$accordion-button-focus-border-color`.
   - Removed unused `$tooltip-arrow-color`.
@@ -109,7 +110,17 @@ Bootstrap 6 is a major release with many breaking changes to modernize our codeb
 - Removed the separate `bootstrap.esm.js` and `bootstrap.esm.min.js` files — `bootstrap.js` is now the ESM entry point.
 - Removed `js/index.umd.js` entry point.
 - Removed jQuery support and the `js-test-jquery` test target.
-- Replaced Popper.js (`@popperjs/core`) with [Floating UI](https://floating-ui.com/) (`@floating-ui/dom`) for dropdown, tooltip, and popover positioning.
+- **Replaced the Dropdown component with Menu.** All `.dropdown-*` classes are now `.menu-*` classes, and `data-bs-toggle="dropdown"` is now `data-bs-toggle="menu"`. See the [Menu docs]([[docsref:/components/menus]]) for full details.
+  - Renamed CSS classes: `.dropdown-menu` to `.menu`, `.dropdown-item` to `.menu-item`, `.dropdown-divider` to `.menu-divider`, `.dropdown-header` to `.menu-header`, `.dropdown-submenu` to `.submenu`.
+  - Removed the `.dropdown-toggle` class — menu toggles no longer require a toggle class.
+  - Removed the `.dropdown` wrapper — no wrapper element is required. The toggle and `.menu` are direct siblings.
+  - Simplified markup from `<ul><li><a class="dropdown-item">` to a flat `<div class="menu"><a class="menu-item">` structure.
+  - Removed `.dropdown-toggle-split` — button group border radius for split menus is now handled automatically via `:has(+ .menu)`.
+  - Renamed the JavaScript export from `Dropdown` to `Menu` — update imports to `import { Menu } from 'bootstrap'`.
+  - Renamed events: `show.bs.dropdown` to `show.bs.menu`, `shown.bs.dropdown` to `shown.bs.menu`, `hide.bs.dropdown` to `hide.bs.menu`, `hidden.bs.dropdown` to `hidden.bs.menu`.
+  - Renamed the data key from `bs.dropdown` to `bs.menu` (affects `Menu.getInstance()` and `Menu.getOrCreateInstance()`).
+- **Added new Combobox component.** A searchable select built on top of Menu, with single and multi-select support. See the [Combobox docs]([[docsref:/forms/combobox]]).
+- Replaced Popper.js (`@popperjs/core`) with [Floating UI](https://floating-ui.com/) (`@floating-ui/dom`) for menu, tooltip, and popover positioning.
 - Added [Vanilla Calendar Pro](https://vanilla-calendar.pro/) (`vanilla-calendar-pro`) as a peer dependency for the new Datepicker component.
 - Removed the `jspm` configuration from `package.json`.
 - Added `"sideEffects"` metadata to `package.json` to enable tree shaking in bundlers while preserving the Data API event listeners that Bootstrap's plugins register at the top level.
@@ -133,6 +144,7 @@ Bootstrap 6 is a major release with many breaking changes to modernize our codeb
   - Removed `.form-select`—use `.form-control` on `<select>` elements now. Too much abstraction and duplication at the same time.
   - Adds new CSS variables on `.form-control` for easier customization without Sass compilation.
   - `.form-control` now has a `min-height` at all times as opposed to just on `<textarea>` elements. This reduces some CSS for us.
+- **Added new Combobox form component.** A searchable, filterable select with single and multi-select modes, built on top of the Menu component. See the [Combobox docs]([[docsref:/forms/combobox]]).
 
 ### Helpers
 
index 62d0869eb43d3531a014140c74df9df3ead0401c..c221f7c1a878f2ffaabbe587046ce95f5d2017d6 100644 (file)
@@ -22,7 +22,7 @@ We call these “low-level” `z-index` utilities because of their default value
 
 ## Overlays
 
-Bootstrap overlay components—dropdown, dialog, offcanvas, popover, toast, and tooltip—all have their own `z-index` values to ensure a usable experience with competing “layers” of an interface.
+Bootstrap overlay components—menu, dialog, offcanvas, popover, toast, and tooltip—all have their own `z-index` values to ensure a usable experience with competing “layers” of an interface.
 
 Read about them in the [`z-index` layout page]([[docsref:/layout/z-index]]).
 
index 3225be615efd8a49acbbcf52c7d6457a72b0f27c..1b1c1eb4f4e1d875f40521006471079394c062b9 100644 (file)
@@ -98,7 +98,7 @@ const htmlProps: HTMLAttributes<'html'> = direction === 'rtl' ? { lang: 'ar', di
         height: 1em;
       }
 
-      .bd-mode-toggle .dropdown-menu .active .bi {
+      .bd-mode-toggle .menu .active .bi {
         display: block !important;
       }
     </style>
@@ -108,7 +108,7 @@ const htmlProps: HTMLAttributes<'html'> = direction === 'rtl' ? { lang: 'ar', di
   <body class:list={body_class}>
     <Icons />
 
-    <div class="dropdown position-fixed bottom-0 end-0 mb-3 me-3 bd-mode-toggle">
+    <div class="position-fixed bottom-0 end-0 mb-3 me-3 bd-mode-toggle">
       <ThemeToggler layout="examples" />
     </div>
 
index b5bef11adce2485f25198cb7f4586b32cefee115..24b7a89c86b3997b62d4ef4c4ebe2cbe6c702c22 100644 (file)
@@ -9,53 +9,47 @@ const { layout } = Astro.props
 ---
 
 <button
-  class=`btn ${layout === 'examples' ? 'btn-solid theme-accent' : 'btn-link nav-link px-0 px-lg-2'} py-2 dropdown-toggle d-flex align-items-center`
+  class=`btn ${layout === 'examples' ? 'btn-solid theme-accent' : 'btn-link nav-link px-0 px-lg-2'} py-2`
   id="bd-theme"
   type="button"
   aria-expanded="false"
-  data-bs-toggle="dropdown"
-  data-bs-target="#bd-theme-menu"
+  data-bs-toggle="menu"
   data-bs-placement="bottom-end"
   aria-label="Toggle theme (auto)"
 >
-  <svg class="bi my-1 theme-icon-active" aria-hidden="true"><use href="#circle-half"></use></svg>
-  <span class=`${layout === 'examples' ? 'visually-hidden' : 'd-lg-none ms-2'}` id="bd-theme-text">Toggle theme</span>
+  <svg class="bi theme-icon-active" aria-hidden="true"><use href="#circle-half"></use></svg>
+  <span class=`${layout === 'examples' ? 'visually-hidden' : 'd-lg-none'}` id="bd-theme-text">Toggle theme</span>
+  <svg class="bi bi-sm ms-lg--1" aria-hidden="true"><use href="#chevron-expand"></use></svg>
 </button>
-<ul class="dropdown-menu" id="bd-theme-menu" aria-labelledby="bd-theme-text" style="--bs-dropdown-min-width: 8rem;">
-  <li>
-    <button
-      type="button"
-      class="dropdown-item"
-      data-bs-theme-value="light"
-      aria-pressed="false"
-    >
-      <svg class="bi opacity-50" aria-hidden="true"><use href="#sun-fill"></use></svg>
-      Light
-      <svg class="bi ms-auto d-none" aria-hidden="true"><use href="#check2"></use></svg>
-    </button>
-  </li>
-  <li>
-    <button
-      type="button"
-      class="dropdown-item"
-      data-bs-theme-value="dark"
-      aria-pressed="false"
-    >
-      <svg class="bi opacity-50" aria-hidden="true"><use href="#moon-stars-fill"></use></svg>
-      Dark
-      <svg class="bi ms-auto d-none" aria-hidden="true"><use href="#check2"></use></svg>
-    </button>
-  </li>
-  <li>
-    <button
-      type="button"
-      class="dropdown-item active"
-      data-bs-theme-value="auto"
-      aria-pressed="true"
-    >
-      <svg class="bi opacity-50" aria-hidden="true"><use href="#circle-half"></use></svg>
-      Auto
-      <svg class="bi ms-auto d-none" aria-hidden="true"><use href="#check2"></use></svg>
-    </button>
-  </li>
-</ul>
+<div class="menu" id="bd-theme-menu" aria-labelledby="bd-theme-text" style="--bs-menu-min-width: 8rem;">
+  <button
+    type="button"
+    class="menu-item"
+    data-bs-theme-value="light"
+    aria-pressed="false"
+  >
+    <svg class="bi opacity-50" aria-hidden="true"><use href="#sun-fill"></use></svg>
+    Light
+    <svg class="bi ms-auto d-none" aria-hidden="true"><use href="#check2"></use></svg>
+  </button>
+  <button
+    type="button"
+    class="menu-item"
+    data-bs-theme-value="dark"
+    aria-pressed="false"
+  >
+    <svg class="bi opacity-50" aria-hidden="true"><use href="#moon-stars-fill"></use></svg>
+    Dark
+    <svg class="bi ms-auto d-none" aria-hidden="true"><use href="#check2"></use></svg>
+  </button>
+  <button
+    type="button"
+    class="menu-item active"
+    data-bs-theme-value="auto"
+    aria-pressed="true"
+  >
+    <svg class="bi opacity-50" aria-hidden="true"><use href="#circle-half"></use></svg>
+    Auto
+    <svg class="bi ms-auto d-none" aria-hidden="true"><use href="#check2"></use></svg>
+  </button>
+</div>
index ff09512a0b235491f9f5c88e8a513ea63dc2f58d..5759d6a4a01d41c20a3bbda40fdb4eb51bad9dc9 100644 (file)
@@ -88,8 +88,8 @@
     //   margin-top: $spacer;
     // }
 
-    > .dropdown-menu {
-      max-width: 12rem;
+    > .menu.position-static {
+      max-width: fit-content;
     }
 
     > :last-child,
index 49eaf28eeecee2e099a8ff059a6e32efda5ca18d..89c0fde3aa92c942afcd5e5ae01e59566af9086a 100644 (file)
     }
   }
 
-  .bi {
-    width: 1em;
-    height: 1em;
-    vertical-align: -.125em;
+  :where(.bi) {
+    display: inline-block;
+    width: 1rem;
+    height: 1rem;
+    // vertical-align: -.125em;
     fill: currentcolor;
   }
 
+  :where(.bi-sm) {
+    width: .75rem;
+    height: .75rem;
+  }
+
   .border-lg-start {
     @include media-breakpoint-up(lg) {
       border-inline-start: var(--bs-border-width) solid var(--bs-border-color);
     --bg-body: var(--blue);
     --bg-3: var(--blue-600);
 
-    .dropdown-menu {
-      --dropdown-bg: color-mix(in lab, var(--blue-500), var(--blue-600));
-      --dropdown-link-active-bg: var(--blue-700);
+    .menu {
+      --menu-bg: color-mix(in lab, var(--blue-500), var(--blue-600));
+      --menu-item-active-bg: var(--blue-700);
     }
 
     .btn-secondary {
index d48e3abf14f569df9890c2f2162eb80041e7e247..e11bc142409751714227a71935e69e5e3085feb0 100644 (file)
@@ -1,4 +1,3 @@
-@use "../../../scss/colors" as *;
 @use "../../../scss/mixins" as *;
 @use "../../../scss/layout/breakpoints" as *;
 
@@ -9,7 +8,7 @@
 
 @layer custom {
   .bd-sticky-navbar.is-stuck {
-    box-shadow: 0 .125rem .5rem rgba($black, .05);
+    box-shadow: 0 .125rem .5rem rgb(0 0 0 / .05);
   }
 
   .bd-navbar {
@@ -45,7 +44,6 @@
     }
 
     .navbar-brand {
-      // color: $white;
       @include transition(transform .2s ease-in-out);
 
       &:hover {
       --bs-nav-link-active-bg: transparent;
     }
 
-    .navbar-toggler,
     .nav-link {
       font-size: var(--font-size-sm);
-      // padding-inline: $spacer * .25;
-      // color: rgba($white, .85);
-
-      // &:hover,
-      // &:focus {
-      //   color: $white;
-      // }
 
       &.active {
         font-weight: 600;
-        // color: $white;
-      }
-    }
-
-    .navbar-nav-svg {
-      display: inline-block;
-      vertical-align: -.125rem;
-    }
-
-    .offcanvas-lg {
-      border-inline-start: 0;
-
-      @include media-breakpoint-down(lg) {
-        box-shadow: var(--box-shadow-lg);
       }
     }
 
-    .dropdown-toggle {
+    [data-bs-toggle="menu"] {
       &:focus:not(:focus-visible) {
         outline: 0;
       }
     }
 
-    .dropdown-menu {
-      --bs-dropdown-min-width: 12rem;
-      --bs-dropdown-padding-x: .25rem;
-      --bs-dropdown-padding-y: .25rem;
-      --bs-dropdown-link-hover-bg: color-mix(in srgb, var(--bd-violet), transparent 90%);
-      --bs-dropdown-link-active-bg: var(--bd-violet);
-      // @include rfs(.875rem, --bs-dropdown-font-size);
-      // @include font-size(.875rem);
-      // @include border-radius(.5rem);
-      box-shadow: var(--dropdown-box-shadow);
-
-      li + li {
-        margin-top: .125rem;
-      }
-
-      .dropdown-item {
-        @include border-radius(.25rem);
+    .menu {
+      --menu-min-width: 12rem;
+      --menu-padding-x: .25rem;
+      --menu-padding-y: .25rem;
+      --menu-item-hover-color: var(--bs-accent-text-emphasis);
+      --menu-item-hover-bg: var(--bs-accent-bg-subtle);
+      --menu-item-active-bg: var(--bs-accent-bg);
 
+      .menu-item {
         &:active {
           .bi {
             color: inherit !important; // stylelint-disable-line declaration-no-important
         }
       }
     }
-
-    .dropdown-menu-end {
-      --bs-dropdown-min-width: 8rem;
-    }
-  }
-
-  @include color-mode(dark) {
-    .bd-navbar {
-      box-shadow: 0 .5rem 1rem rgba($black, .15), inset 0 -1px 0 rgba($white, .15);
-    }
   }
 }
index e7590635e3d5a53b78fe3d4ef1108d7ad9bea7ab..6f5723611e1002b380bd838b8066f7416eae1a3d 100644 (file)
     display: flex;
     flex-direction: column;
     width: 100%;
+
+    .line:empty {
+      min-height: 1lh;
+    }
   }
 
 }
index 75fb0dc4f727bd752d6d1dbbd24da9657fb72685..a076d135ef231243c23bc0ad75c33dff415ed7d8 100644 (file)
@@ -16,10 +16,10 @@ export declare global {
   export const CodeCopy: typeof import('@shortcodes/CodeCopy.astro').default
   export const DeprecatedIn: typeof import('@shortcodes/DeprecatedIn.astro').default
   export const Details: typeof import('@shortcodes/Details.astro').default
-  export const DropdownPlacementPlayground: typeof import('@shortcodes/DropdownPlacementPlayground.astro').default
   export const Example: typeof import('@shortcodes/Example.astro').default
   export const JsDismiss: typeof import('@shortcodes/JsDismiss.astro').default
   export const JsDocs: typeof import('@shortcodes/JsDocs.astro').default
+  export const MenuPlacementPlayground: typeof import('@shortcodes/MenuPlacementPlayground.astro').default
   export const NavbarPlacementPlayground: typeof import('@shortcodes/NavbarPlacementPlayground.astro').default
   export const Placeholder: typeof import('@shortcodes/Placeholder.astro').default
   export const ResizableExample: typeof import('@shortcodes/ResizableExample.astro').default